Convert-Binary-C-0.85/0000755000175000001440000000000014677003525013214 5ustar mhxusersConvert-Binary-C-0.85/tests/0000755000175000001440000000000014677003524014355 5ustar mhxusersConvert-Binary-C-0.85/tests/237_parser.t0000644000175000001440000000347114677003452016436 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 18 } my $c = eval { Convert::Binary::C->new }; ok($@,'',"failed to create Convert::Binary::C object"); $c->PointerSize(4)->IntSize(2)->CharSize(1); @test = ( [ 'const volatile' => $c->IntSize ], [ 'volatile [3]' => 3 * $c->IntSize ], [ 'restrict *' => $c->PointerSize ], ); for my $t (@test) { eval { $c->clean->parse("typedef char array[sizeof($t->[0])];") }; ok($@, ''); ok($c->sizeof('array'), $t->[1]); } # bitfield size tests @test = ( [ 'int :-1' => qr/negative width for bit-field/ ], [ 'int :0' => '' ], [ 'int :1' => '' ], [ 'int bf:-1' => qr/negative width for bit-field 'bf'/ ], [ 'int bf:0' => qr/zero width for bit-field 'bf'/ ], [ 'int bf:1' => '' ], ); for my $t (@test) { eval { $c->clean->parse("struct bitfield { $t->[0]; };") }; ok($@, $t->[1]); } # short-circuiting test # XXX: this doesn't mean we're really short-circuiting, only # that we're cheating good enough ;-) @test = ( [ '1 || (1 / 0) ? 2 : 3' => 2 ], [ '0 && (1 / 0) ? 2 : 3' => 3 ], ); for my $t (@test) { eval { $c->clean->parse("typedef char array[$t->[0]];") }; ok($@, ''); ok($c->sizeof('array'), $t->[1]); } # TODO: operator precedence tests # TODO: array size tests # test typedef behaviour eval { $c->clean->parse(< 9031; use Convert::Binary::C @ARGV; use strict; $^W = 1; my $BIN = $] < 5.006 ? '%x' : '%08b'; my @compiler = ( { 'name' => 'MSWin32/cl_pack01', 'config' => { 'Define' => [ 'PACK_PAREN=1' ], 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 1, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'Bitfields' => { 'Engine' => 'Microsoft' }, 'CompoundAlignment' => 1 } }, { 'name' => 'MSWin32/cl_pack02', 'config' => { 'Define' => [ 'PACK_PAREN=1' ], 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 2, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'Bitfields' => { 'Engine' => 'Microsoft' }, 'CompoundAlignment' => 1 } }, { 'name' => 'MSWin32/cl_pack04', 'config' => { 'Define' => [ 'PACK_PAREN=1' ], 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 4, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'Bitfields' => { 'Engine' => 'Microsoft' }, 'CompoundAlignment' => 1 } }, { 'name' => 'MSWin32/cl_plain', 'config' => { 'Define' => [ 'PACK_PAREN=1' ], 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'Bitfields' => { 'Engine' => 'Microsoft' }, 'CompoundAlignment' => 1 } } ); my @c = eval { map { Convert::Binary::C->new(Bitfields => {Engine => 'Generic'}, EnumType => 'String', %{$_->{config}}) } @compiler }; is($@, '', "failed to create Convert::Binary::C objects"); sub debug { $ENV{CBC_TEST_DEBUG} and diag(@_); } sub showbits { join ' ', map { sprintf $BIN, $_ } unpack "C*", shift; } sub get_data { my $want = shift || 'list'; my $term = shift || '[-=]'; local $_; my @lines; while () { if (/^($term)$/) { $term = $1; last; } push @lines, $_ } if ($want eq 'list') { chomp @lines; return $term, @lines; } return $term, join('', @lines); } sub reccmp { my($ref, $val) = @_; unless (defined $ref and defined $val) { return defined($ref) == defined($val); } ref $ref or return $ref eq $val; if (ref $ref eq 'ARRAY') { @$ref == @$val or return 0; for (0..$#$ref) { reccmp($ref->[$_], $val->[$_]) or return 0; } } elsif (ref $ref eq 'HASH') { @{[keys %$ref]} == @{[keys %$val]} or return 0; for (keys %$ref) { reccmp($ref->{$_}, $val->{$_}) or return 0; } } else { return 0 } return 1; } while (1) { my(undef, $code) = get_data('block'); last if $code !~ /\S/; debug("Code:\n$code"); eval { $_->clean->parse($code) for @c }; is($@, '', 'parse code') or diag($code); is(scalar $c[0]->compound_names, 1, join(', ', $c[0]->compound_names)); my($type) = $c[0]->compound_names; while (1) { my($term, $init, @packed) = get_data; debug("Init: $init"); my $data = eval $init; my $succ = 0; for (@packed) { $_ = pack "H*", $_ } for my $i (0 .. $#packed) { debug("Compiler: [$i] $compiler[$i]{name}"); $c[$i]->sizeof($type) == length($packed[$i]) and $succ++; my $p = $c[$i]->pack($type, $data); if ($p eq $packed[$i]) { $succ++; } else { diag("[$i] $compiler[$i]{name}\n", $code, "data = $init\n", "expected: ", showbits($packed[$i]), "\n", " got: ", showbits($p), "\n"); } my $u = $c[$i]->unpack($type, $packed[$i]); if (reccmp($data, $u)) { $succ++; } else { diag("[$i] $compiler[$i]{name}\n", $code, "data = $init\n"); eval { require Data::Dumper; diag(Data::Dumper->Dump([$data, $u], [qw(*expected *got)])); }; } } is($succ, 3*@packed, "$type ($init)"); last if $term eq '='; } } __DATA__ struct basic { unsigned int a:9; }; - {a=>509} fd010000 fd010000 fd010000 fd010000 - {a=>352} 60010000 60010000 60010000 60010000 - {a=>349} 5d010000 5d010000 5d010000 5d010000 - {a=>398} 8e010000 8e010000 8e010000 8e010000 - {a=>453} c5010000 c5010000 c5010000 c5010000 = struct basic { unsigned int a:9; unsigned int b:2; }; - {a=>228,b=>3} e4060000 e4060000 e4060000 e4060000 - {a=>163,b=>0} a3000000 a3000000 a3000000 a3000000 - {a=>333,b=>3} 4d070000 4d070000 4d070000 4d070000 - {a=>495,b=>3} ef070000 ef070000 ef070000 ef070000 - {a=>193,b=>3} c1060000 c1060000 c1060000 c1060000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; }; - {a=>115,b=>1} 73020000 73020000 73020000 73020000 - {a=>283,b=>0} 1b010000 1b010000 1b010000 1b010000 - {a=>12,b=>1} 0c020000 0c020000 0c020000 0c020000 - {a=>417,b=>3} a1070000 a1070000 a1070000 a1070000 - {a=>129,b=>2} 81040000 81040000 81040000 81040000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; unsigned int c:2; }; - {c=>1,a=>473,b=>1} d9430000 d9430000 d9430000 d9430000 - {c=>2,a=>149,b=>2} 95840000 95840000 95840000 95840000 - {c=>3,a=>227,b=>2} e3c40000 e3c40000 e3c40000 e3c40000 - {c=>0,a=>114,b=>0} 72000000 72000000 72000000 72000000 - {c=>2,a=>83,b=>3} 53860000 53860000 53860000 53860000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; unsigned int c:2; unsigned int d; }; - {c=>0,a=>134,b=>3,d=>231} 86060000e7000000 86060000e7000000 86060000e7000000 86060000e7000000 - {c=>0,a=>60,b=>0,d=>10} 3c0000000a000000 3c0000000a000000 3c0000000a000000 3c0000000a000000 - {c=>2,a=>170,b=>2,d=>252} aa840000fc000000 aa840000fc000000 aa840000fc000000 aa840000fc000000 - {c=>3,a=>53,b=>1,d=>248} 35c20000f8000000 35c20000f8000000 35c20000f8000000 35c20000f8000000 - {c=>3,a=>74,b=>3,d=>85} 4ac6000055000000 4ac6000055000000 4ac6000055000000 4ac6000055000000 = struct basic { char a; unsigned int b:9; }; - {a=>95,b=>334} 5f4e010000 5f004e010000 5f0000004e010000 5f0000004e010000 - {a=>43,b=>139} 2b8b000000 2b008b000000 2b0000008b000000 2b0000008b000000 - {a=>103,b=>500} 67f4010000 6700f4010000 67000000f4010000 67000000f4010000 - {a=>-82,b=>491} aeeb010000 ae00eb010000 ae000000eb010000 ae000000eb010000 - {a=>-81,b=>456} afc8010000 af00c8010000 af000000c8010000 af000000c8010000 = struct basic { char a; unsigned int b:9; unsigned int c:2; }; - {c=>1,a=>62,b=>455} 3ec7030000 3e00c7030000 3e000000c7030000 3e000000c7030000 - {c=>0,a=>-46,b=>32} d220000000 d20020000000 d200000020000000 d200000020000000 - {c=>0,a=>55,b=>501} 37f5010000 3700f5010000 37000000f5010000 37000000f5010000 - {c=>3,a=>72,b=>97} 4861060000 480061060000 4800000061060000 4800000061060000 - {c=>3,a=>91,b=>180} 5bb4060000 5b00b4060000 5b000000b4060000 5b000000b4060000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-64,b=>1} c001020000 c00001020000 c000000001020000 c000000001020000 - {c=>3,a=>43,b=>409} 2b99070000 2b0099070000 2b00000099070000 2b00000099070000 - {c=>1,a=>-30,b=>413} e29d030000 e2009d030000 e20000009d030000 e20000009d030000 - {c=>3,a=>107,b=>399} 6b8f070000 6b008f070000 6b0000008f070000 6b0000008f070000 - {c=>2,a=>-59,b=>474} c5da050000 c500da050000 c5000000da050000 c5000000da050000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>0,a=>-60,b=>352,d=>2} c460810000 c40060810000 c400000060810000 c400000060810000 - {c=>1,a=>89,b=>103,d=>2} 5967820000 590067820000 5900000067820000 5900000067820000 - {c=>0,a=>31,b=>136,d=>2} 1f88800000 1f0088800000 1f00000088800000 1f00000088800000 - {c=>0,a=>-103,b=>343,d=>0} 9957010000 990057010000 9900000057010000 9900000057010000 - {c=>2,a=>-102,b=>358,d=>0} 9a66050000 9a0066050000 9a00000066050000 9a00000066050000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>205,c=>0,a=>57,b=>85,d=>3} 3955c00000cd000000 390055c00000cd000000 3900000055c00000cd000000 3900000055c00000cd000000 - {e=>218,c=>2,a=>-89,b=>129,d=>1} a781440000da000000 a70081440000da000000 a700000081440000da000000 a700000081440000da000000 - {e=>90,c=>3,a=>105,b=>77,d=>1} 694d4600005a000000 69004d4600005a000000 690000004d4600005a000000 690000004d4600005a000000 - {e=>82,c=>3,a=>89,b=>507,d=>0} 59fb07000052000000 5900fb07000052000000 59000000fb07000052000000 59000000fb07000052000000 - {e=>10,c=>1,a=>-7,b=>126,d=>0} f97e0200000a000000 f9007e0200000a000000 f90000007e0200000a000000 f90000007e0200000a000000 = struct basic { short a; unsigned int b:9; }; - {a=>44,b=>211} 2c00d3000000 2c00d3000000 2c000000d3000000 2c000000d3000000 - {a=>106,b=>55} 6a0037000000 6a0037000000 6a00000037000000 6a00000037000000 - {a=>-99,b=>100} 9dff64000000 9dff64000000 9dff000064000000 9dff000064000000 - {a=>-25,b=>17} e7ff11000000 e7ff11000000 e7ff000011000000 e7ff000011000000 - {a=>-60,b=>31} c4ff1f000000 c4ff1f000000 c4ff00001f000000 c4ff00001f000000 = struct basic { short a; unsigned int b:9; unsigned int c:2; }; - {c=>0,a=>-3,b=>65} fdff41000000 fdff41000000 fdff000041000000 fdff000041000000 - {c=>3,a=>127,b=>141} 7f008d060000 7f008d060000 7f0000008d060000 7f0000008d060000 - {c=>1,a=>-53,b=>123} cbff7b020000 cbff7b020000 cbff00007b020000 cbff00007b020000 - {c=>3,a=>-110,b=>69} 92ff45060000 92ff45060000 92ff000045060000 92ff000045060000 - {c=>1,a=>-63,b=>183} c1ffb7020000 c1ffb7020000 c1ff0000b7020000 c1ff0000b7020000 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-32,b=>280} e0ff18030000 e0ff18030000 e0ff000018030000 e0ff000018030000 - {c=>0,a=>-76,b=>473} b4ffd9010000 b4ffd9010000 b4ff0000d9010000 b4ff0000d9010000 - {c=>2,a=>-60,b=>271} c4ff0f050000 c4ff0f050000 c4ff00000f050000 c4ff00000f050000 - {c=>1,a=>72,b=>50} 480032020000 480032020000 4800000032020000 4800000032020000 - {c=>1,a=>-97,b=>440} 9fffb8030000 9fffb8030000 9fff0000b8030000 9fff0000b8030000 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>3,a=>-78,b=>286,d=>1} b2ff1e470000 b2ff1e470000 b2ff00001e470000 b2ff00001e470000 - {c=>2,a=>-105,b=>330,d=>3} 97ff4ac50000 97ff4ac50000 97ff00004ac50000 97ff00004ac50000 - {c=>0,a=>73,b=>33,d=>1} 490021400000 490021400000 4900000021400000 4900000021400000 - {c=>0,a=>-67,b=>463,d=>2} bdffcf810000 bdffcf810000 bdff0000cf810000 bdff0000cf810000 - {c=>0,a=>87,b=>452,d=>2} 5700c4810000 5700c4810000 57000000c4810000 57000000c4810000 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>78,c=>2,a=>-39,b=>178,d=>3} d9ffb2c400004e000000 d9ffb2c400004e000000 d9ff0000b2c400004e000000 d9ff0000b2c400004e000000 - {e=>4,c=>2,a=>51,b=>65,d=>2} 33004184000004000000 33004184000004000000 330000004184000004000000 330000004184000004000000 - {e=>225,c=>1,a=>-16,b=>99,d=>1} f0ff63420000e1000000 f0ff63420000e1000000 f0ff000063420000e1000000 f0ff000063420000e1000000 - {e=>23,c=>0,a=>-1,b=>254,d=>0} fffffe00000017000000 fffffe00000017000000 ffff0000fe00000017000000 ffff0000fe00000017000000 - {e=>75,c=>0,a=>7,b=>128,d=>1} 0700804000004b000000 0700804000004b000000 07000000804000004b000000 07000000804000004b000000 = struct basic { int a; unsigned int b:9; }; - {a=>26,b=>294} 1a00000026010000 1a00000026010000 1a00000026010000 1a00000026010000 - {a=>120,b=>54} 7800000036000000 7800000036000000 7800000036000000 7800000036000000 - {a=>-16,b=>377} f0ffffff79010000 f0ffffff79010000 f0ffffff79010000 f0ffffff79010000 - {a=>38,b=>179} 26000000b3000000 26000000b3000000 26000000b3000000 26000000b3000000 - {a=>116,b=>289} 7400000021010000 7400000021010000 7400000021010000 7400000021010000 = struct basic { int a; unsigned int b:9; unsigned int c:2; }; - {c=>1,a=>49,b=>430} 31000000ae030000 31000000ae030000 31000000ae030000 31000000ae030000 - {c=>3,a=>118,b=>459} 76000000cb070000 76000000cb070000 76000000cb070000 76000000cb070000 - {c=>0,a=>1,b=>148} 0100000094000000 0100000094000000 0100000094000000 0100000094000000 - {c=>0,a=>-80,b=>164} b0ffffffa4000000 b0ffffffa4000000 b0ffffffa4000000 b0ffffffa4000000 - {c=>3,a=>-5,b=>38} fbffffff26060000 fbffffff26060000 fbffffff26060000 fbffffff26060000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>0,a=>73,b=>253} 49000000fd000000 49000000fd000000 49000000fd000000 49000000fd000000 - {c=>3,a=>91,b=>302} 5b0000002e070000 5b0000002e070000 5b0000002e070000 5b0000002e070000 - {c=>3,a=>30,b=>58} 1e0000003a060000 1e0000003a060000 1e0000003a060000 1e0000003a060000 - {c=>0,a=>-109,b=>436} 93ffffffb4010000 93ffffffb4010000 93ffffffb4010000 93ffffffb4010000 - {c=>3,a=>-89,b=>300} a7ffffff2c070000 a7ffffff2c070000 a7ffffff2c070000 a7ffffff2c070000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>2,a=>-81,b=>332,d=>0} afffffff4c050000 afffffff4c050000 afffffff4c050000 afffffff4c050000 - {c=>0,a=>-118,b=>311,d=>3} 8affffff37c10000 8affffff37c10000 8affffff37c10000 8affffff37c10000 - {c=>2,a=>93,b=>362,d=>1} 5d0000006a450000 5d0000006a450000 5d0000006a450000 5d0000006a450000 - {c=>0,a=>122,b=>370,d=>0} 7a00000072010000 7a00000072010000 7a00000072010000 7a00000072010000 - {c=>2,a=>87,b=>107,d=>2} 570000006b840000 570000006b840000 570000006b840000 570000006b840000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>246,c=>1,a=>109,b=>275,d=>1} 6d00000013430000f6000000 6d00000013430000f6000000 6d00000013430000f6000000 6d00000013430000f6000000 - {e=>120,c=>3,a=>80,b=>215,d=>2} 50000000d786000078000000 50000000d786000078000000 50000000d786000078000000 50000000d786000078000000 - {e=>236,c=>0,a=>88,b=>484,d=>2} 58000000e4810000ec000000 58000000e4810000ec000000 58000000e4810000ec000000 58000000e4810000ec000000 - {e=>9,c=>1,a=>-20,b=>117,d=>2} ecffffff7582000009000000 ecffffff7582000009000000 ecffffff7582000009000000 ecffffff7582000009000000 - {e=>135,c=>3,a=>126,b=>333,d=>1} 7e0000004d47000087000000 7e0000004d47000087000000 7e0000004d47000087000000 7e0000004d47000087000000 = struct basic { long a; unsigned int b:9; }; - {a=>-90,b=>99} a6ffffff63000000 a6ffffff63000000 a6ffffff63000000 a6ffffff63000000 - {a=>18,b=>50} 1200000032000000 1200000032000000 1200000032000000 1200000032000000 - {a=>-120,b=>264} 88ffffff08010000 88ffffff08010000 88ffffff08010000 88ffffff08010000 - {a=>23,b=>32} 1700000020000000 1700000020000000 1700000020000000 1700000020000000 - {a=>42,b=>321} 2a00000041010000 2a00000041010000 2a00000041010000 2a00000041010000 = struct basic { long a; unsigned int b:9; unsigned int c:2; }; - {c=>3,a=>37,b=>303} 250000002f070000 250000002f070000 250000002f070000 250000002f070000 - {c=>3,a=>-87,b=>458} a9ffffffca070000 a9ffffffca070000 a9ffffffca070000 a9ffffffca070000 - {c=>3,a=>-86,b=>453} aaffffffc5070000 aaffffffc5070000 aaffffffc5070000 aaffffffc5070000 - {c=>0,a=>96,b=>71} 6000000047000000 6000000047000000 6000000047000000 6000000047000000 - {c=>0,a=>-46,b=>254} d2fffffffe000000 d2fffffffe000000 d2fffffffe000000 d2fffffffe000000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-123,b=>56} 85ffffff38020000 85ffffff38020000 85ffffff38020000 85ffffff38020000 - {c=>1,a=>-36,b=>276} dcffffff14030000 dcffffff14030000 dcffffff14030000 dcffffff14030000 - {c=>2,a=>26,b=>453} 1a000000c5050000 1a000000c5050000 1a000000c5050000 1a000000c5050000 - {c=>0,a=>95,b=>479} 5f000000df010000 5f000000df010000 5f000000df010000 5f000000df010000 - {c=>1,a=>28,b=>16} 1c00000010020000 1c00000010020000 1c00000010020000 1c00000010020000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>3,a=>-75,b=>292,d=>0} b5ffffff24070000 b5ffffff24070000 b5ffffff24070000 b5ffffff24070000 - {c=>0,a=>24,b=>330,d=>0} 180000004a010000 180000004a010000 180000004a010000 180000004a010000 - {c=>3,a=>2,b=>332,d=>1} 020000004c470000 020000004c470000 020000004c470000 020000004c470000 - {c=>2,a=>74,b=>257,d=>1} 4a00000001450000 4a00000001450000 4a00000001450000 4a00000001450000 - {c=>2,a=>106,b=>208,d=>3} 6a000000d0c40000 6a000000d0c40000 6a000000d0c40000 6a000000d0c40000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>118,c=>0,a=>26,b=>490,d=>2} 1a000000ea81000076000000 1a000000ea81000076000000 1a000000ea81000076000000 1a000000ea81000076000000 - {e=>200,c=>0,a=>6,b=>418,d=>1} 06000000a2410000c8000000 06000000a2410000c8000000 06000000a2410000c8000000 06000000a2410000c8000000 - {e=>40,c=>1,a=>41,b=>444,d=>2} 29000000bc83000028000000 29000000bc83000028000000 29000000bc83000028000000 29000000bc83000028000000 - {e=>154,c=>0,a=>0,b=>88,d=>3} 0000000058c000009a000000 0000000058c000009a000000 0000000058c000009a000000 0000000058c000009a000000 - {e=>163,c=>3,a=>-5,b=>393,d=>0} fbffffff89070000a3000000 fbffffff89070000a3000000 fbffffff89070000a3000000 fbffffff89070000a3000000 = struct uchar { unsigned char a:1; }; - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 = struct uchar { unsigned char a:1; unsigned char b:1; }; - {a=>1,b=>0} 01 01 01 01 - {a=>1,b=>1} 03 03 03 03 - {a=>0,b=>0} 00 00 00 00 - {a=>1,b=>1} 03 03 03 03 - {a=>0,b=>1} 02 02 02 02 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>1,b=>1} 07 07 07 07 - {c=>1,a=>0,b=>0} 04 04 04 04 - {c=>0,a=>0,b=>0} 00 00 00 00 - {c=>1,a=>1,b=>1} 07 07 07 07 - {c=>1,a=>1,b=>0} 05 05 05 05 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>0,b=>1,d=>1} 0e 0e 0e 0e - {c=>0,a=>1,b=>0,d=>0} 01 01 01 01 - {c=>0,a=>0,b=>1,d=>1} 0a 0a 0a 0a - {c=>1,a=>0,b=>0,d=>1} 0c 0c 0c 0c - {c=>0,a=>1,b=>0,d=>0} 01 01 01 01 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned int e; }; - {e=>111,c=>1,a=>1,b=>1,d=>1} 0f6f000000 0f006f000000 0f0000006f000000 0f0000006f000000 - {e=>24,c=>0,a=>0,b=>1,d=>0} 0218000000 020018000000 0200000018000000 0200000018000000 - {e=>185,c=>0,a=>0,b=>1,d=>0} 02b9000000 0200b9000000 02000000b9000000 02000000b9000000 - {e=>229,c=>1,a=>0,b=>1,d=>1} 0ee5000000 0e00e5000000 0e000000e5000000 0e000000e5000000 - {e=>255,c=>0,a=>1,b=>0,d=>1} 09ff000000 0900ff000000 09000000ff000000 09000000ff000000 = struct uchar { char a; unsigned char b:1; }; - {a=>-120,b=>1} 8801 8801 8801 8801 - {a=>70,b=>0} 4600 4600 4600 4600 - {a=>81,b=>0} 5100 5100 5100 5100 - {a=>56,b=>1} 3801 3801 3801 3801 - {a=>126,b=>0} 7e00 7e00 7e00 7e00 = struct uchar { char a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>16,b=>1} 1003 1003 1003 1003 - {c=>0,a=>90,b=>1} 5a01 5a01 5a01 5a01 - {c=>0,a=>-85,b=>0} ab00 ab00 ab00 ab00 - {c=>0,a=>74,b=>1} 4a01 4a01 4a01 4a01 - {c=>0,a=>-127,b=>0} 8100 8100 8100 8100 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>-84,b=>0,d=>1} ac06 ac06 ac06 ac06 - {c=>1,a=>-93,b=>1,d=>0} a303 a303 a303 a303 - {c=>1,a=>-94,b=>1,d=>1} a207 a207 a207 a207 - {c=>1,a=>116,b=>0,d=>0} 7402 7402 7402 7402 - {c=>1,a=>92,b=>0,d=>1} 5c06 5c06 5c06 5c06 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>1,c=>0,a=>-104,b=>1,d=>0} 9809 9809 9809 9809 - {e=>0,c=>1,a=>-94,b=>0,d=>0} a202 a202 a202 a202 - {e=>0,c=>0,a=>113,b=>1,d=>0} 7101 7101 7101 7101 - {e=>1,c=>0,a=>25,b=>1,d=>1} 190d 190d 190d 190d - {e=>0,c=>0,a=>-21,b=>1,d=>1} eb05 eb05 eb05 eb05 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>1,c=>1,a=>58,b=>1,d=>0,f=>7} 3a0b07000000 3a0b07000000 3a0b000007000000 3a0b000007000000 - {e=>0,c=>0,a=>9,b=>0,d=>1,f=>220} 0904dc000000 0904dc000000 09040000dc000000 09040000dc000000 - {e=>0,c=>1,a=>123,b=>1,d=>0,f=>59} 7b033b000000 7b033b000000 7b0300003b000000 7b0300003b000000 - {e=>0,c=>1,a=>-113,b=>1,d=>1,f=>172} 8f07ac000000 8f07ac000000 8f070000ac000000 8f070000ac000000 - {e=>0,c=>1,a=>75,b=>0,d=>1,f=>175} 4b06af000000 4b06af000000 4b060000af000000 4b060000af000000 = struct uchar { short a; unsigned char b:1; }; - {a=>-46,b=>1} d2ff01 d2ff0100 d2ff0100 d2ff0100 - {a=>32,b=>1} 200001 20000100 20000100 20000100 - {a=>-26,b=>0} e6ff00 e6ff0000 e6ff0000 e6ff0000 - {a=>122,b=>0} 7a0000 7a000000 7a000000 7a000000 - {a=>-51,b=>0} cdff00 cdff0000 cdff0000 cdff0000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>14,b=>0} 0e0002 0e000200 0e000200 0e000200 - {c=>1,a=>-41,b=>0} d7ff02 d7ff0200 d7ff0200 d7ff0200 - {c=>1,a=>-93,b=>1} a3ff03 a3ff0300 a3ff0300 a3ff0300 - {c=>0,a=>-76,b=>1} b4ff01 b4ff0100 b4ff0100 b4ff0100 - {c=>0,a=>-111,b=>0} 91ff00 91ff0000 91ff0000 91ff0000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>0,a=>7,b=>1,d=>0} 070001 07000100 07000100 07000100 - {c=>0,a=>64,b=>0,d=>0} 400000 40000000 40000000 40000000 - {c=>1,a=>7,b=>0,d=>0} 070002 07000200 07000200 07000200 - {c=>1,a=>-72,b=>1,d=>1} b8ff07 b8ff0700 b8ff0700 b8ff0700 - {c=>1,a=>62,b=>0,d=>1} 3e0006 3e000600 3e000600 3e000600 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>1,a=>-108,b=>1,d=>0} 94ff03 94ff0300 94ff0300 94ff0300 - {e=>1,c=>0,a=>-125,b=>1,d=>0} 83ff09 83ff0900 83ff0900 83ff0900 - {e=>0,c=>1,a=>52,b=>1,d=>0} 340003 34000300 34000300 34000300 - {e=>0,c=>0,a=>-93,b=>0,d=>0} a3ff00 a3ff0000 a3ff0000 a3ff0000 - {e=>1,c=>0,a=>-128,b=>0,d=>1} 80ff0c 80ff0c00 80ff0c00 80ff0c00 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>0,a=>72,b=>1,d=>1,f=>111} 4800056f000000 480005006f000000 480005006f000000 480005006f000000 - {e=>0,c=>1,a=>-44,b=>0,d=>0,f=>40} d4ff0228000000 d4ff020028000000 d4ff020028000000 d4ff020028000000 - {e=>1,c=>1,a=>121,b=>1,d=>0,f=>41} 79000b29000000 79000b0029000000 79000b0029000000 79000b0029000000 - {e=>0,c=>1,a=>-68,b=>1,d=>0,f=>136} bcff0388000000 bcff030088000000 bcff030088000000 bcff030088000000 - {e=>0,c=>0,a=>-73,b=>1,d=>0,f=>25} b7ff0119000000 b7ff010019000000 b7ff010019000000 b7ff010019000000 = struct uchar { int a; unsigned char b:1; }; - {a=>-57,b=>0} c7ffffff00 c7ffffff0000 c7ffffff00000000 c7ffffff00000000 - {a=>-29,b=>0} e3ffffff00 e3ffffff0000 e3ffffff00000000 e3ffffff00000000 - {a=>-23,b=>0} e9ffffff00 e9ffffff0000 e9ffffff00000000 e9ffffff00000000 - {a=>-128,b=>1} 80ffffff01 80ffffff0100 80ffffff01000000 80ffffff01000000 - {a=>-58,b=>0} c6ffffff00 c6ffffff0000 c6ffffff00000000 c6ffffff00000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-78,b=>1} b2ffffff03 b2ffffff0300 b2ffffff03000000 b2ffffff03000000 - {c=>0,a=>-100,b=>1} 9cffffff01 9cffffff0100 9cffffff01000000 9cffffff01000000 - {c=>0,a=>-27,b=>0} e5ffffff00 e5ffffff0000 e5ffffff00000000 e5ffffff00000000 - {c=>1,a=>-123,b=>1} 85ffffff03 85ffffff0300 85ffffff03000000 85ffffff03000000 - {c=>0,a=>-84,b=>0} acffffff00 acffffff0000 acffffff00000000 acffffff00000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>82,b=>0,d=>0} 5200000002 520000000200 5200000002000000 5200000002000000 - {c=>0,a=>20,b=>0,d=>1} 1400000004 140000000400 1400000004000000 1400000004000000 - {c=>1,a=>95,b=>0,d=>0} 5f00000002 5f0000000200 5f00000002000000 5f00000002000000 - {c=>0,a=>71,b=>0,d=>0} 4700000000 470000000000 4700000000000000 4700000000000000 - {c=>1,a=>-38,b=>0,d=>0} daffffff02 daffffff0200 daffffff02000000 daffffff02000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>0,a=>-32,b=>1,d=>1} e0ffffff05 e0ffffff0500 e0ffffff05000000 e0ffffff05000000 - {e=>0,c=>1,a=>-34,b=>1,d=>1} deffffff07 deffffff0700 deffffff07000000 deffffff07000000 - {e=>1,c=>1,a=>70,b=>1,d=>1} 460000000f 460000000f00 460000000f000000 460000000f000000 - {e=>0,c=>1,a=>127,b=>1,d=>1} 7f00000007 7f0000000700 7f00000007000000 7f00000007000000 - {e=>1,c=>0,a=>54,b=>1,d=>1} 360000000d 360000000d00 360000000d000000 360000000d000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>0,a=>-63,b=>1,d=>1,f=>112} c1ffffff0570000000 c1ffffff050070000000 c1ffffff0500000070000000 c1ffffff0500000070000000 - {e=>0,c=>1,a=>-107,b=>0,d=>0,f=>190} 95ffffff02be000000 95ffffff0200be000000 95ffffff02000000be000000 95ffffff02000000be000000 - {e=>0,c=>0,a=>-47,b=>1,d=>1,f=>78} d1ffffff054e000000 d1ffffff05004e000000 d1ffffff050000004e000000 d1ffffff050000004e000000 - {e=>1,c=>0,a=>65,b=>1,d=>1,f=>14} 410000000d0e000000 410000000d000e000000 410000000d0000000e000000 410000000d0000000e000000 - {e=>1,c=>0,a=>52,b=>0,d=>1,f=>169} 340000000ca9000000 340000000c00a9000000 340000000c000000a9000000 340000000c000000a9000000 = struct uchar { long a; unsigned char b:1; }; - {a=>118,b=>0} 7600000000 760000000000 7600000000000000 7600000000000000 - {a=>-95,b=>1} a1ffffff01 a1ffffff0100 a1ffffff01000000 a1ffffff01000000 - {a=>38,b=>0} 2600000000 260000000000 2600000000000000 2600000000000000 - {a=>50,b=>0} 3200000000 320000000000 3200000000000000 3200000000000000 - {a=>81,b=>0} 5100000000 510000000000 5100000000000000 5100000000000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>97,b=>0} 6100000000 610000000000 6100000000000000 6100000000000000 - {c=>0,a=>-20,b=>0} ecffffff00 ecffffff0000 ecffffff00000000 ecffffff00000000 - {c=>0,a=>-81,b=>0} afffffff00 afffffff0000 afffffff00000000 afffffff00000000 - {c=>0,a=>75,b=>0} 4b00000000 4b0000000000 4b00000000000000 4b00000000000000 - {c=>0,a=>-108,b=>1} 94ffffff01 94ffffff0100 94ffffff01000000 94ffffff01000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>101,b=>1,d=>0} 6500000003 650000000300 6500000003000000 6500000003000000 - {c=>0,a=>-71,b=>0,d=>1} b9ffffff04 b9ffffff0400 b9ffffff04000000 b9ffffff04000000 - {c=>1,a=>-61,b=>0,d=>1} c3ffffff06 c3ffffff0600 c3ffffff06000000 c3ffffff06000000 - {c=>1,a=>-98,b=>0,d=>1} 9effffff06 9effffff0600 9effffff06000000 9effffff06000000 - {c=>0,a=>86,b=>0,d=>0} 5600000000 560000000000 5600000000000000 5600000000000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>1,a=>-117,b=>1,d=>1} 8bffffff07 8bffffff0700 8bffffff07000000 8bffffff07000000 - {e=>1,c=>0,a=>47,b=>1,d=>1} 2f0000000d 2f0000000d00 2f0000000d000000 2f0000000d000000 - {e=>1,c=>1,a=>-116,b=>0,d=>0} 8cffffff0a 8cffffff0a00 8cffffff0a000000 8cffffff0a000000 - {e=>1,c=>1,a=>-118,b=>0,d=>1} 8affffff0e 8affffff0e00 8affffff0e000000 8affffff0e000000 - {e=>1,c=>1,a=>-38,b=>0,d=>1} daffffff0e daffffff0e00 daffffff0e000000 daffffff0e000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>1,a=>-47,b=>0,d=>1,f=>41} d1ffffff0629000000 d1ffffff060029000000 d1ffffff0600000029000000 d1ffffff0600000029000000 - {e=>0,c=>1,a=>-89,b=>1,d=>0,f=>152} a7ffffff0398000000 a7ffffff030098000000 a7ffffff0300000098000000 a7ffffff0300000098000000 - {e=>1,c=>1,a=>114,b=>1,d=>1,f=>37} 720000000f25000000 720000000f0025000000 720000000f00000025000000 720000000f00000025000000 - {e=>1,c=>1,a=>127,b=>1,d=>1,f=>22} 7f0000000f16000000 7f0000000f0016000000 7f0000000f00000016000000 7f0000000f00000016000000 - {e=>0,c=>0,a=>-95,b=>1,d=>0,f=>125} a1ffffff017d000000 a1ffffff01007d000000 a1ffffff010000007d000000 a1ffffff010000007d000000 = struct ushort { unsigned short a:1; }; - {a=>1} 0100 0100 0100 0100 - {a=>1} 0100 0100 0100 0100 - {a=>0} 0000 0000 0000 0000 - {a=>0} 0000 0000 0000 0000 - {a=>0} 0000 0000 0000 0000 = struct ushort { unsigned short a:1; unsigned short b:1; }; - {a=>1,b=>1} 0300 0300 0300 0300 - {a=>0,b=>0} 0000 0000 0000 0000 - {a=>1,b=>0} 0100 0100 0100 0100 - {a=>0,b=>0} 0000 0000 0000 0000 - {a=>0,b=>1} 0200 0200 0200 0200 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; }; - {c=>1,a=>0,b=>1} 0600 0600 0600 0600 - {c=>0,a=>1,b=>1} 0300 0300 0300 0300 - {c=>1,a=>0,b=>1} 0600 0600 0600 0600 - {c=>0,a=>0,b=>1} 0200 0200 0200 0200 - {c=>1,a=>0,b=>1} 0600 0600 0600 0600 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>0,b=>0,d=>1} 0800 0800 0800 0800 - {c=>1,a=>1,b=>1,d=>0} 0700 0700 0700 0700 - {c=>1,a=>1,b=>1,d=>1} 0f00 0f00 0f00 0f00 - {c=>1,a=>1,b=>0,d=>0} 0500 0500 0500 0500 - {c=>1,a=>0,b=>0,d=>0} 0400 0400 0400 0400 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned int e; }; - {e=>78,c=>1,a=>0,b=>0,d=>1} 0c004e000000 0c004e000000 0c0000004e000000 0c0000004e000000 - {e=>118,c=>1,a=>1,b=>0,d=>0} 050076000000 050076000000 0500000076000000 0500000076000000 - {e=>65,c=>0,a=>0,b=>1,d=>1} 0a0041000000 0a0041000000 0a00000041000000 0a00000041000000 - {e=>216,c=>0,a=>0,b=>1,d=>1} 0a00d8000000 0a00d8000000 0a000000d8000000 0a000000d8000000 - {e=>98,c=>0,a=>0,b=>1,d=>1} 0a0062000000 0a0062000000 0a00000062000000 0a00000062000000 = struct ushort { char a; unsigned short b:1; }; - {a=>22,b=>1} 160100 16000100 16000100 16000100 - {a=>-76,b=>0} b40000 b4000000 b4000000 b4000000 - {a=>101,b=>1} 650100 65000100 65000100 65000100 - {a=>110,b=>0} 6e0000 6e000000 6e000000 6e000000 - {a=>19,b=>1} 130100 13000100 13000100 13000100 = struct ushort { char a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>103,b=>1} 670100 67000100 67000100 67000100 - {c=>1,a=>-109,b=>1} 930300 93000300 93000300 93000300 - {c=>1,a=>-16,b=>0} f00200 f0000200 f0000200 f0000200 - {c=>1,a=>124,b=>1} 7c0300 7c000300 7c000300 7c000300 - {c=>1,a=>109,b=>0} 6d0200 6d000200 6d000200 6d000200 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>-25,b=>1,d=>0} e70100 e7000100 e7000100 e7000100 - {c=>1,a=>-79,b=>0,d=>0} b10200 b1000200 b1000200 b1000200 - {c=>1,a=>102,b=>0,d=>1} 660600 66000600 66000600 66000600 - {c=>0,a=>125,b=>1,d=>1} 7d0500 7d000500 7d000500 7d000500 - {c=>0,a=>5,b=>1,d=>1} 050500 05000500 05000500 05000500 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>1,c=>0,a=>9,b=>1,d=>0} 090900 09000900 09000900 09000900 - {e=>1,c=>0,a=>44,b=>1,d=>1} 2c0d00 2c000d00 2c000d00 2c000d00 - {e=>0,c=>0,a=>44,b=>0,d=>0} 2c0000 2c000000 2c000000 2c000000 - {e=>1,c=>1,a=>-13,b=>0,d=>1} f30e00 f3000e00 f3000e00 f3000e00 - {e=>0,c=>1,a=>-2,b=>0,d=>0} fe0200 fe000200 fe000200 fe000200 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>1,c=>1,a=>107,b=>1,d=>0,f=>112} 6b0b0070000000 6b000b0070000000 6b000b0070000000 6b000b0070000000 - {e=>0,c=>1,a=>-68,b=>1,d=>1,f=>129} bc070081000000 bc00070081000000 bc00070081000000 bc00070081000000 - {e=>0,c=>0,a=>72,b=>1,d=>1,f=>226} 480500e2000000 48000500e2000000 48000500e2000000 48000500e2000000 - {e=>0,c=>0,a=>-102,b=>0,d=>1,f=>147} 9a040093000000 9a00040093000000 9a00040093000000 9a00040093000000 - {e=>1,c=>1,a=>-25,b=>1,d=>1,f=>7} e70f0007000000 e7000f0007000000 e7000f0007000000 e7000f0007000000 = struct ushort { short a; unsigned short b:1; }; - {a=>89,b=>1} 59000100 59000100 59000100 59000100 - {a=>-24,b=>0} e8ff0000 e8ff0000 e8ff0000 e8ff0000 - {a=>53,b=>1} 35000100 35000100 35000100 35000100 - {a=>60,b=>1} 3c000100 3c000100 3c000100 3c000100 - {a=>-33,b=>1} dfff0100 dfff0100 dfff0100 dfff0100 = struct ushort { short a; unsigned short b:1; unsigned short c:1; }; - {c=>1,a=>-21,b=>0} ebff0200 ebff0200 ebff0200 ebff0200 - {c=>0,a=>65,b=>0} 41000000 41000000 41000000 41000000 - {c=>0,a=>-82,b=>0} aeff0000 aeff0000 aeff0000 aeff0000 - {c=>1,a=>-45,b=>0} d3ff0200 d3ff0200 d3ff0200 d3ff0200 - {c=>1,a=>-105,b=>0} 97ff0200 97ff0200 97ff0200 97ff0200 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>5,b=>1,d=>1} 05000500 05000500 05000500 05000500 - {c=>1,a=>-68,b=>1,d=>0} bcff0300 bcff0300 bcff0300 bcff0300 - {c=>1,a=>-4,b=>0,d=>0} fcff0200 fcff0200 fcff0200 fcff0200 - {c=>1,a=>122,b=>1,d=>1} 7a000700 7a000700 7a000700 7a000700 - {c=>1,a=>-64,b=>1,d=>0} c0ff0300 c0ff0300 c0ff0300 c0ff0300 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>1,c=>1,a=>96,b=>1,d=>1} 60000f00 60000f00 60000f00 60000f00 - {e=>0,c=>0,a=>-110,b=>1,d=>0} 92ff0100 92ff0100 92ff0100 92ff0100 - {e=>1,c=>1,a=>-47,b=>1,d=>0} d1ff0b00 d1ff0b00 d1ff0b00 d1ff0b00 - {e=>0,c=>1,a=>71,b=>1,d=>0} 47000300 47000300 47000300 47000300 - {e=>1,c=>1,a=>-110,b=>1,d=>1} 92ff0f00 92ff0f00 92ff0f00 92ff0f00 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>-77,b=>1,d=>0,f=>56} b3ff030038000000 b3ff030038000000 b3ff030038000000 b3ff030038000000 - {e=>0,c=>0,a=>108,b=>1,d=>1,f=>82} 6c00050052000000 6c00050052000000 6c00050052000000 6c00050052000000 - {e=>0,c=>0,a=>4,b=>1,d=>1,f=>96} 0400050060000000 0400050060000000 0400050060000000 0400050060000000 - {e=>0,c=>0,a=>93,b=>1,d=>1,f=>28} 5d0005001c000000 5d0005001c000000 5d0005001c000000 5d0005001c000000 - {e=>1,c=>0,a=>40,b=>1,d=>1,f=>174} 28000d00ae000000 28000d00ae000000 28000d00ae000000 28000d00ae000000 = struct ushort { int a; unsigned short b:1; }; - {a=>88,b=>1} 580000000100 580000000100 5800000001000000 5800000001000000 - {a=>-118,b=>1} 8affffff0100 8affffff0100 8affffff01000000 8affffff01000000 - {a=>122,b=>1} 7a0000000100 7a0000000100 7a00000001000000 7a00000001000000 - {a=>-125,b=>0} 83ffffff0000 83ffffff0000 83ffffff00000000 83ffffff00000000 - {a=>-83,b=>0} adffffff0000 adffffff0000 adffffff00000000 adffffff00000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>-73,b=>1} b7ffffff0100 b7ffffff0100 b7ffffff01000000 b7ffffff01000000 - {c=>1,a=>41,b=>0} 290000000200 290000000200 2900000002000000 2900000002000000 - {c=>0,a=>-10,b=>0} f6ffffff0000 f6ffffff0000 f6ffffff00000000 f6ffffff00000000 - {c=>1,a=>46,b=>1} 2e0000000300 2e0000000300 2e00000003000000 2e00000003000000 - {c=>0,a=>91,b=>1} 5b0000000100 5b0000000100 5b00000001000000 5b00000001000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>62,b=>1,d=>1} 3e0000000500 3e0000000500 3e00000005000000 3e00000005000000 - {c=>1,a=>-98,b=>1,d=>1} 9effffff0700 9effffff0700 9effffff07000000 9effffff07000000 - {c=>0,a=>-94,b=>0,d=>0} a2ffffff0000 a2ffffff0000 a2ffffff00000000 a2ffffff00000000 - {c=>0,a=>36,b=>1,d=>0} 240000000100 240000000100 2400000001000000 2400000001000000 - {c=>1,a=>-4,b=>0,d=>1} fcffffff0600 fcffffff0600 fcffffff06000000 fcffffff06000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>0,c=>0,a=>96,b=>0,d=>0} 600000000000 600000000000 6000000000000000 6000000000000000 - {e=>1,c=>0,a=>127,b=>1,d=>0} 7f0000000900 7f0000000900 7f00000009000000 7f00000009000000 - {e=>1,c=>0,a=>40,b=>0,d=>0} 280000000800 280000000800 2800000008000000 2800000008000000 - {e=>1,c=>0,a=>96,b=>0,d=>1} 600000000c00 600000000c00 600000000c000000 600000000c000000 - {e=>0,c=>0,a=>-42,b=>0,d=>1} d6ffffff0400 d6ffffff0400 d6ffffff04000000 d6ffffff04000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>15,b=>0,d=>0,f=>0} 0f000000020000000000 0f000000020000000000 0f0000000200000000000000 0f0000000200000000000000 - {e=>1,c=>0,a=>-90,b=>1,d=>1,f=>104} a6ffffff0d0068000000 a6ffffff0d0068000000 a6ffffff0d00000068000000 a6ffffff0d00000068000000 - {e=>1,c=>0,a=>-53,b=>1,d=>0,f=>14} cbffffff09000e000000 cbffffff09000e000000 cbffffff090000000e000000 cbffffff090000000e000000 - {e=>0,c=>1,a=>41,b=>0,d=>1,f=>247} 290000000600f7000000 290000000600f7000000 2900000006000000f7000000 2900000006000000f7000000 - {e=>1,c=>1,a=>-21,b=>0,d=>0,f=>111} ebffffff0a006f000000 ebffffff0a006f000000 ebffffff0a0000006f000000 ebffffff0a0000006f000000 = struct ushort { long a; unsigned short b:1; }; - {a=>-109,b=>0} 93ffffff0000 93ffffff0000 93ffffff00000000 93ffffff00000000 - {a=>68,b=>1} 440000000100 440000000100 4400000001000000 4400000001000000 - {a=>-127,b=>0} 81ffffff0000 81ffffff0000 81ffffff00000000 81ffffff00000000 - {a=>-101,b=>1} 9bffffff0100 9bffffff0100 9bffffff01000000 9bffffff01000000 - {a=>65,b=>1} 410000000100 410000000100 4100000001000000 4100000001000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>-118,b=>0} 8affffff0000 8affffff0000 8affffff00000000 8affffff00000000 - {c=>0,a=>98,b=>1} 620000000100 620000000100 6200000001000000 6200000001000000 - {c=>0,a=>20,b=>0} 140000000000 140000000000 1400000000000000 1400000000000000 - {c=>0,a=>-71,b=>0} b9ffffff0000 b9ffffff0000 b9ffffff00000000 b9ffffff00000000 - {c=>0,a=>-104,b=>1} 98ffffff0100 98ffffff0100 98ffffff01000000 98ffffff01000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>31,b=>1,d=>1} 1f0000000500 1f0000000500 1f00000005000000 1f00000005000000 - {c=>1,a=>105,b=>0,d=>1} 690000000600 690000000600 6900000006000000 6900000006000000 - {c=>1,a=>-124,b=>1,d=>0} 84ffffff0300 84ffffff0300 84ffffff03000000 84ffffff03000000 - {c=>1,a=>11,b=>1,d=>1} 0b0000000700 0b0000000700 0b00000007000000 0b00000007000000 - {c=>1,a=>21,b=>0,d=>1} 150000000600 150000000600 1500000006000000 1500000006000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>0,c=>0,a=>51,b=>0,d=>0} 330000000000 330000000000 3300000000000000 3300000000000000 - {e=>1,c=>1,a=>16,b=>1,d=>1} 100000000f00 100000000f00 100000000f000000 100000000f000000 - {e=>1,c=>1,a=>-30,b=>1,d=>1} e2ffffff0f00 e2ffffff0f00 e2ffffff0f000000 e2ffffff0f000000 - {e=>1,c=>0,a=>-27,b=>1,d=>0} e5ffffff0900 e5ffffff0900 e5ffffff09000000 e5ffffff09000000 - {e=>0,c=>0,a=>44,b=>1,d=>1} 2c0000000500 2c0000000500 2c00000005000000 2c00000005000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>-43,b=>1,d=>0,f=>98} d5ffffff030062000000 d5ffffff030062000000 d5ffffff0300000062000000 d5ffffff0300000062000000 - {e=>1,c=>0,a=>-40,b=>1,d=>1,f=>138} d8ffffff0d008a000000 d8ffffff0d008a000000 d8ffffff0d0000008a000000 d8ffffff0d0000008a000000 - {e=>1,c=>0,a=>14,b=>1,d=>1,f=>44} 0e0000000d002c000000 0e0000000d002c000000 0e0000000d0000002c000000 0e0000000d0000002c000000 - {e=>1,c=>1,a=>-30,b=>1,d=>0,f=>32} e2ffffff0b0020000000 e2ffffff0b0020000000 e2ffffff0b00000020000000 e2ffffff0b00000020000000 - {e=>0,c=>1,a=>87,b=>0,d=>1,f=>216} 570000000600d8000000 570000000600d8000000 5700000006000000d8000000 5700000006000000d8000000 = struct uint { unsigned int a:1; }; - {a=>0} 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 01000000 = struct uint { unsigned int a:1; unsigned int b:1; }; - {a=>0,b=>1} 02000000 02000000 02000000 02000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>0,b=>1} 02000000 02000000 02000000 02000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>0,b=>1} 02000000 02000000 02000000 02000000 - {c=>1,a=>1,b=>0} 05000000 05000000 05000000 05000000 - {c=>0,a=>1,b=>1} 03000000 03000000 03000000 03000000 - {c=>1,a=>0,b=>0} 04000000 04000000 04000000 04000000 - {c=>0,a=>0,b=>1} 02000000 02000000 02000000 02000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>1,b=>1,d=>0} 03000000 03000000 03000000 03000000 - {c=>0,a=>0,b=>0,d=>0} 00000000 00000000 00000000 00000000 - {c=>1,a=>0,b=>0,d=>1} 0c000000 0c000000 0c000000 0c000000 - {c=>0,a=>0,b=>1,d=>0} 02000000 02000000 02000000 02000000 - {c=>1,a=>0,b=>1,d=>0} 06000000 06000000 06000000 06000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned char e; }; - {e=>191,c=>1,a=>1,b=>1,d=>1} 0f000000bf 0f000000bf00 0f000000bf000000 0f000000bf000000 - {e=>169,c=>0,a=>1,b=>0,d=>0} 01000000a9 01000000a900 01000000a9000000 01000000a9000000 - {e=>146,c=>0,a=>1,b=>1,d=>0} 0300000092 030000009200 0300000092000000 0300000092000000 - {e=>101,c=>1,a=>1,b=>0,d=>0} 0500000065 050000006500 0500000065000000 0500000065000000 - {e=>214,c=>0,a=>0,b=>1,d=>0} 02000000d6 02000000d600 02000000d6000000 02000000d6000000 = struct uint { char a; unsigned int b:1; }; - {a=>75,b=>1} 4b01000000 4b0001000000 4b00000001000000 4b00000001000000 - {a=>-108,b=>1} 9401000000 940001000000 9400000001000000 9400000001000000 - {a=>-66,b=>0} be00000000 be0000000000 be00000000000000 be00000000000000 - {a=>70,b=>0} 4600000000 460000000000 4600000000000000 4600000000000000 - {a=>42,b=>0} 2a00000000 2a0000000000 2a00000000000000 2a00000000000000 = struct uint { char a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-100,b=>1} 9c03000000 9c0003000000 9c00000003000000 9c00000003000000 - {c=>1,a=>93,b=>0} 5d02000000 5d0002000000 5d00000002000000 5d00000002000000 - {c=>1,a=>40,b=>0} 2802000000 280002000000 2800000002000000 2800000002000000 - {c=>1,a=>-20,b=>1} ec03000000 ec0003000000 ec00000003000000 ec00000003000000 - {c=>1,a=>5,b=>0} 0502000000 050002000000 0500000002000000 0500000002000000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>-26,b=>0,d=>0} e600000000 e60000000000 e600000000000000 e600000000000000 - {c=>0,a=>-121,b=>0,d=>0} 8700000000 870000000000 8700000000000000 8700000000000000 - {c=>1,a=>2,b=>0,d=>1} 0206000000 020006000000 0200000006000000 0200000006000000 - {c=>1,a=>-54,b=>1,d=>0} ca03000000 ca0003000000 ca00000003000000 ca00000003000000 - {c=>1,a=>79,b=>0,d=>0} 4f02000000 4f0002000000 4f00000002000000 4f00000002000000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>0,c=>1,a=>123,b=>0,d=>1} 7b06000000 7b0006000000 7b00000006000000 7b00000006000000 - {e=>0,c=>0,a=>-85,b=>1,d=>0} ab01000000 ab0001000000 ab00000001000000 ab00000001000000 - {e=>0,c=>1,a=>108,b=>1,d=>0} 6c03000000 6c0003000000 6c00000003000000 6c00000003000000 - {e=>0,c=>0,a=>5,b=>1,d=>0} 0501000000 050001000000 0500000001000000 0500000001000000 - {e=>1,c=>0,a=>37,b=>0,d=>0} 2508000000 250008000000 2500000008000000 2500000008000000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>1,c=>1,a=>-3,b=>0,d=>0,f=>33} fd0a00000021 fd000a0000002100 fd0000000a00000021000000 fd0000000a00000021000000 - {e=>1,c=>0,a=>-54,b=>1,d=>1,f=>25} ca0d00000019 ca000d0000001900 ca0000000d00000019000000 ca0000000d00000019000000 - {e=>1,c=>1,a=>99,b=>0,d=>0,f=>1} 630a00000001 63000a0000000100 630000000a00000001000000 630000000a00000001000000 - {e=>0,c=>0,a=>36,b=>0,d=>1,f=>171} 2404000000ab 240004000000ab00 2400000004000000ab000000 2400000004000000ab000000 - {e=>0,c=>0,a=>-112,b=>0,d=>1,f=>44} 90040000002c 9000040000002c00 90000000040000002c000000 90000000040000002c000000 = struct uint { short a; unsigned int b:1; }; - {a=>17,b=>1} 110001000000 110001000000 1100000001000000 1100000001000000 - {a=>-109,b=>0} 93ff00000000 93ff00000000 93ff000000000000 93ff000000000000 - {a=>66,b=>1} 420001000000 420001000000 4200000001000000 4200000001000000 - {a=>15,b=>0} 0f0000000000 0f0000000000 0f00000000000000 0f00000000000000 - {a=>67,b=>1} 430001000000 430001000000 4300000001000000 4300000001000000 = struct uint { short a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-17,b=>0} efff02000000 efff02000000 efff000002000000 efff000002000000 - {c=>0,a=>-96,b=>0} a0ff00000000 a0ff00000000 a0ff000000000000 a0ff000000000000 - {c=>0,a=>19,b=>0} 130000000000 130000000000 1300000000000000 1300000000000000 - {c=>1,a=>-75,b=>1} b5ff03000000 b5ff03000000 b5ff000003000000 b5ff000003000000 - {c=>0,a=>-26,b=>1} e6ff01000000 e6ff01000000 e6ff000001000000 e6ff000001000000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>-128,b=>0,d=>1} 80ff04000000 80ff04000000 80ff000004000000 80ff000004000000 - {c=>0,a=>6,b=>0,d=>1} 060004000000 060004000000 0600000004000000 0600000004000000 - {c=>1,a=>-76,b=>1,d=>0} b4ff03000000 b4ff03000000 b4ff000003000000 b4ff000003000000 - {c=>0,a=>-60,b=>1,d=>0} c4ff01000000 c4ff01000000 c4ff000001000000 c4ff000001000000 - {c=>1,a=>-102,b=>1,d=>1} 9aff07000000 9aff07000000 9aff000007000000 9aff000007000000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>0,c=>0,a=>-11,b=>0,d=>1} f5ff04000000 f5ff04000000 f5ff000004000000 f5ff000004000000 - {e=>1,c=>0,a=>-23,b=>1,d=>1} e9ff0d000000 e9ff0d000000 e9ff00000d000000 e9ff00000d000000 - {e=>1,c=>1,a=>81,b=>0,d=>0} 51000a000000 51000a000000 510000000a000000 510000000a000000 - {e=>0,c=>0,a=>16,b=>0,d=>0} 100000000000 100000000000 1000000000000000 1000000000000000 - {e=>1,c=>1,a=>90,b=>1,d=>0} 5a000b000000 5a000b000000 5a0000000b000000 5a0000000b000000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>0,c=>1,a=>108,b=>0,d=>1,f=>91} 6c00060000005b 6c00060000005b00 6c000000060000005b000000 6c000000060000005b000000 - {e=>0,c=>0,a=>113,b=>1,d=>0,f=>123} 7100010000007b 7100010000007b00 71000000010000007b000000 71000000010000007b000000 - {e=>0,c=>0,a=>-118,b=>1,d=>1,f=>27} 8aff050000001b 8aff050000001b00 8aff0000050000001b000000 8aff0000050000001b000000 - {e=>0,c=>0,a=>105,b=>1,d=>1,f=>227} 690005000000e3 690005000000e300 6900000005000000e3000000 6900000005000000e3000000 - {e=>0,c=>1,a=>58,b=>0,d=>0,f=>37} 3a000200000025 3a00020000002500 3a0000000200000025000000 3a0000000200000025000000 = struct uint { int a; unsigned int b:1; }; - {a=>123,b=>0} 7b00000000000000 7b00000000000000 7b00000000000000 7b00000000000000 - {a=>-82,b=>1} aeffffff01000000 aeffffff01000000 aeffffff01000000 aeffffff01000000 - {a=>-71,b=>0} b9ffffff00000000 b9ffffff00000000 b9ffffff00000000 b9ffffff00000000 - {a=>-16,b=>0} f0ffffff00000000 f0ffffff00000000 f0ffffff00000000 f0ffffff00000000 - {a=>82,b=>0} 5200000000000000 5200000000000000 5200000000000000 5200000000000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>-82,b=>1} aeffffff01000000 aeffffff01000000 aeffffff01000000 aeffffff01000000 - {c=>1,a=>76,b=>1} 4c00000003000000 4c00000003000000 4c00000003000000 4c00000003000000 - {c=>0,a=>90,b=>1} 5a00000001000000 5a00000001000000 5a00000001000000 5a00000001000000 - {c=>0,a=>-87,b=>1} a9ffffff01000000 a9ffffff01000000 a9ffffff01000000 a9ffffff01000000 - {c=>1,a=>-70,b=>0} baffffff02000000 baffffff02000000 baffffff02000000 baffffff02000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>103,b=>1,d=>1} 6700000005000000 6700000005000000 6700000005000000 6700000005000000 - {c=>0,a=>-102,b=>1,d=>0} 9affffff01000000 9affffff01000000 9affffff01000000 9affffff01000000 - {c=>1,a=>8,b=>1,d=>1} 0800000007000000 0800000007000000 0800000007000000 0800000007000000 - {c=>1,a=>24,b=>0,d=>1} 1800000006000000 1800000006000000 1800000006000000 1800000006000000 - {c=>0,a=>-37,b=>1,d=>1} dbffffff05000000 dbffffff05000000 dbffffff05000000 dbffffff05000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>73,b=>0,d=>0} 490000000a000000 490000000a000000 490000000a000000 490000000a000000 - {e=>0,c=>0,a=>-47,b=>1,d=>1} d1ffffff05000000 d1ffffff05000000 d1ffffff05000000 d1ffffff05000000 - {e=>1,c=>1,a=>105,b=>0,d=>1} 690000000e000000 690000000e000000 690000000e000000 690000000e000000 - {e=>1,c=>0,a=>39,b=>1,d=>1} 270000000d000000 270000000d000000 270000000d000000 270000000d000000 - {e=>0,c=>1,a=>-19,b=>0,d=>0} edffffff02000000 edffffff02000000 edffffff02000000 edffffff02000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>0,c=>1,a=>-13,b=>0,d=>0,f=>179} f3ffffff02000000b3 f3ffffff02000000b300 f3ffffff02000000b3000000 f3ffffff02000000b3000000 - {e=>0,c=>1,a=>-50,b=>0,d=>1,f=>86} ceffffff0600000056 ceffffff060000005600 ceffffff0600000056000000 ceffffff0600000056000000 - {e=>1,c=>1,a=>127,b=>0,d=>1,f=>197} 7f0000000e000000c5 7f0000000e000000c500 7f0000000e000000c5000000 7f0000000e000000c5000000 - {e=>0,c=>1,a=>22,b=>0,d=>1,f=>205} 1600000006000000cd 1600000006000000cd00 1600000006000000cd000000 1600000006000000cd000000 - {e=>1,c=>1,a=>-24,b=>1,d=>0,f=>208} e8ffffff0b000000d0 e8ffffff0b000000d000 e8ffffff0b000000d0000000 e8ffffff0b000000d0000000 = struct uint { long a; unsigned int b:1; }; - {a=>125,b=>0} 7d00000000000000 7d00000000000000 7d00000000000000 7d00000000000000 - {a=>76,b=>0} 4c00000000000000 4c00000000000000 4c00000000000000 4c00000000000000 - {a=>118,b=>1} 7600000001000000 7600000001000000 7600000001000000 7600000001000000 - {a=>39,b=>1} 2700000001000000 2700000001000000 2700000001000000 2700000001000000 - {a=>117,b=>0} 7500000000000000 7500000000000000 7500000000000000 7500000000000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>96,b=>1} 6000000001000000 6000000001000000 6000000001000000 6000000001000000 - {c=>0,a=>85,b=>0} 5500000000000000 5500000000000000 5500000000000000 5500000000000000 - {c=>0,a=>-120,b=>1} 88ffffff01000000 88ffffff01000000 88ffffff01000000 88ffffff01000000 - {c=>1,a=>46,b=>1} 2e00000003000000 2e00000003000000 2e00000003000000 2e00000003000000 - {c=>1,a=>-15,b=>1} f1ffffff03000000 f1ffffff03000000 f1ffffff03000000 f1ffffff03000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>1,a=>86,b=>0,d=>0} 5600000002000000 5600000002000000 5600000002000000 5600000002000000 - {c=>0,a=>-29,b=>1,d=>1} e3ffffff05000000 e3ffffff05000000 e3ffffff05000000 e3ffffff05000000 - {c=>0,a=>97,b=>1,d=>0} 6100000001000000 6100000001000000 6100000001000000 6100000001000000 - {c=>1,a=>92,b=>1,d=>0} 5c00000003000000 5c00000003000000 5c00000003000000 5c00000003000000 - {c=>1,a=>-52,b=>0,d=>1} ccffffff06000000 ccffffff06000000 ccffffff06000000 ccffffff06000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>46,b=>1,d=>0} 2e0000000b000000 2e0000000b000000 2e0000000b000000 2e0000000b000000 - {e=>0,c=>1,a=>6,b=>0,d=>1} 0600000006000000 0600000006000000 0600000006000000 0600000006000000 - {e=>0,c=>1,a=>-88,b=>1,d=>0} a8ffffff03000000 a8ffffff03000000 a8ffffff03000000 a8ffffff03000000 - {e=>1,c=>1,a=>61,b=>0,d=>0} 3d0000000a000000 3d0000000a000000 3d0000000a000000 3d0000000a000000 - {e=>1,c=>1,a=>-91,b=>0,d=>1} a5ffffff0e000000 a5ffffff0e000000 a5ffffff0e000000 a5ffffff0e000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>1,c=>0,a=>0,b=>0,d=>0,f=>3} 000000000800000003 00000000080000000300 000000000800000003000000 000000000800000003000000 - {e=>1,c=>0,a=>-78,b=>1,d=>0,f=>176} b2ffffff09000000b0 b2ffffff09000000b000 b2ffffff09000000b0000000 b2ffffff09000000b0000000 - {e=>0,c=>1,a=>-121,b=>1,d=>1,f=>153} 87ffffff0700000099 87ffffff070000009900 87ffffff0700000099000000 87ffffff0700000099000000 - {e=>0,c=>1,a=>-50,b=>1,d=>0,f=>143} ceffffff030000008f ceffffff030000008f00 ceffffff030000008f000000 ceffffff030000008f000000 - {e=>0,c=>1,a=>-106,b=>0,d=>0,f=>229} 96ffffff02000000e5 96ffffff02000000e500 96ffffff02000000e5000000 96ffffff02000000e5000000 = struct ulong { unsigned long a:1; }; - {a=>0} 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>0} 00000000 00000000 00000000 00000000 = struct ulong { unsigned long a:1; unsigned long b:1; }; - {a=>0,b=>0} 00000000 00000000 00000000 00000000 - {a=>1,b=>1} 03000000 03000000 03000000 03000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>1,b=>1} 03000000 03000000 03000000 03000000 - {a=>0,b=>1} 02000000 02000000 02000000 02000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; }; - {c=>0,a=>0,b=>0} 00000000 00000000 00000000 00000000 - {c=>0,a=>1,b=>1} 03000000 03000000 03000000 03000000 - {c=>0,a=>0,b=>1} 02000000 02000000 02000000 02000000 - {c=>1,a=>0,b=>1} 06000000 06000000 06000000 06000000 - {c=>1,a=>0,b=>0} 04000000 04000000 04000000 04000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>1,a=>1,b=>1,d=>0} 07000000 07000000 07000000 07000000 - {c=>1,a=>0,b=>0,d=>0} 04000000 04000000 04000000 04000000 - {c=>0,a=>1,b=>1,d=>1} 0b000000 0b000000 0b000000 0b000000 - {c=>0,a=>1,b=>0,d=>0} 01000000 01000000 01000000 01000000 - {c=>1,a=>0,b=>1,d=>0} 06000000 06000000 06000000 06000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned char e; }; - {e=>171,c=>0,a=>1,b=>0,d=>0} 01000000ab 01000000ab00 01000000ab000000 01000000ab000000 - {e=>112,c=>0,a=>0,b=>0,d=>0} 0000000070 000000007000 0000000070000000 0000000070000000 - {e=>62,c=>0,a=>0,b=>0,d=>1} 080000003e 080000003e00 080000003e000000 080000003e000000 - {e=>210,c=>0,a=>0,b=>1,d=>1} 0a000000d2 0a000000d200 0a000000d2000000 0a000000d2000000 - {e=>159,c=>1,a=>0,b=>1,d=>1} 0e0000009f 0e0000009f00 0e0000009f000000 0e0000009f000000 = struct ulong { char a; unsigned long b:1; }; - {a=>-121,b=>1} 8701000000 870001000000 8700000001000000 8700000001000000 - {a=>50,b=>1} 3201000000 320001000000 3200000001000000 3200000001000000 - {a=>-89,b=>1} a701000000 a70001000000 a700000001000000 a700000001000000 - {a=>92,b=>0} 5c00000000 5c0000000000 5c00000000000000 5c00000000000000 - {a=>-41,b=>0} d700000000 d70000000000 d700000000000000 d700000000000000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>-46,b=>1} d203000000 d20003000000 d200000003000000 d200000003000000 - {c=>0,a=>-85,b=>0} ab00000000 ab0000000000 ab00000000000000 ab00000000000000 - {c=>0,a=>78,b=>0} 4e00000000 4e0000000000 4e00000000000000 4e00000000000000 - {c=>0,a=>-50,b=>0} ce00000000 ce0000000000 ce00000000000000 ce00000000000000 - {c=>1,a=>-57,b=>1} c703000000 c70003000000 c700000003000000 c700000003000000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-7,b=>0,d=>1} f904000000 f90004000000 f900000004000000 f900000004000000 - {c=>0,a=>69,b=>0,d=>0} 4500000000 450000000000 4500000000000000 4500000000000000 - {c=>1,a=>78,b=>1,d=>1} 4e07000000 4e0007000000 4e00000007000000 4e00000007000000 - {c=>1,a=>19,b=>0,d=>0} 1302000000 130002000000 1300000002000000 1300000002000000 - {c=>1,a=>-18,b=>1,d=>0} ee03000000 ee0003000000 ee00000003000000 ee00000003000000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>0,a=>-82,b=>1,d=>1} ae0d000000 ae000d000000 ae0000000d000000 ae0000000d000000 - {e=>1,c=>1,a=>125,b=>0,d=>1} 7d0e000000 7d000e000000 7d0000000e000000 7d0000000e000000 - {e=>1,c=>1,a=>-119,b=>0,d=>1} 890e000000 89000e000000 890000000e000000 890000000e000000 - {e=>1,c=>1,a=>39,b=>0,d=>1} 270e000000 27000e000000 270000000e000000 270000000e000000 - {e=>0,c=>1,a=>14,b=>0,d=>0} 0e02000000 0e0002000000 0e00000002000000 0e00000002000000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>-3,b=>1,d=>0,f=>197} fd09000000c5 fd0009000000c500 fd00000009000000c5000000 fd00000009000000c5000000 - {e=>0,c=>1,a=>87,b=>0,d=>0,f=>225} 5702000000e1 570002000000e100 5700000002000000e1000000 5700000002000000e1000000 - {e=>0,c=>1,a=>-120,b=>1,d=>1,f=>123} 88070000007b 8800070000007b00 88000000070000007b000000 88000000070000007b000000 - {e=>1,c=>0,a=>-101,b=>0,d=>0,f=>120} 9b0800000078 9b00080000007800 9b0000000800000078000000 9b0000000800000078000000 - {e=>1,c=>1,a=>13,b=>0,d=>1,f=>245} 0d0e000000f5 0d000e000000f500 0d0000000e000000f5000000 0d0000000e000000f5000000 = struct ulong { short a; unsigned long b:1; }; - {a=>-34,b=>1} deff01000000 deff01000000 deff000001000000 deff000001000000 - {a=>-97,b=>1} 9fff01000000 9fff01000000 9fff000001000000 9fff000001000000 - {a=>125,b=>0} 7d0000000000 7d0000000000 7d00000000000000 7d00000000000000 - {a=>-4,b=>1} fcff01000000 fcff01000000 fcff000001000000 fcff000001000000 - {a=>-46,b=>0} d2ff00000000 d2ff00000000 d2ff000000000000 d2ff000000000000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; }; - {c=>0,a=>54,b=>1} 360001000000 360001000000 3600000001000000 3600000001000000 - {c=>1,a=>25,b=>1} 190003000000 190003000000 1900000003000000 1900000003000000 - {c=>1,a=>-112,b=>1} 90ff03000000 90ff03000000 90ff000003000000 90ff000003000000 - {c=>0,a=>53,b=>1} 350001000000 350001000000 3500000001000000 3500000001000000 - {c=>0,a=>-72,b=>0} b8ff00000000 b8ff00000000 b8ff000000000000 b8ff000000000000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-37,b=>0,d=>1} dbff04000000 dbff04000000 dbff000004000000 dbff000004000000 - {c=>1,a=>59,b=>0,d=>1} 3b0006000000 3b0006000000 3b00000006000000 3b00000006000000 - {c=>1,a=>-10,b=>1,d=>1} f6ff07000000 f6ff07000000 f6ff000007000000 f6ff000007000000 - {c=>0,a=>-39,b=>1,d=>0} d9ff01000000 d9ff01000000 d9ff000001000000 d9ff000001000000 - {c=>0,a=>26,b=>0,d=>1} 1a0004000000 1a0004000000 1a00000004000000 1a00000004000000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>77,b=>1,d=>0} 4d000b000000 4d000b000000 4d0000000b000000 4d0000000b000000 - {e=>0,c=>0,a=>71,b=>1,d=>1} 470005000000 470005000000 4700000005000000 4700000005000000 - {e=>1,c=>0,a=>12,b=>1,d=>0} 0c0009000000 0c0009000000 0c00000009000000 0c00000009000000 - {e=>1,c=>1,a=>-120,b=>1,d=>1} 88ff0f000000 88ff0f000000 88ff00000f000000 88ff00000f000000 - {e=>0,c=>0,a=>-106,b=>0,d=>1} 96ff04000000 96ff04000000 96ff000004000000 96ff000004000000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>93,b=>1,d=>0,f=>203} 5d000b000000cb 5d000b000000cb00 5d0000000b000000cb000000 5d0000000b000000cb000000 - {e=>1,c=>1,a=>-61,b=>1,d=>0,f=>222} c3ff0b000000de c3ff0b000000de00 c3ff00000b000000de000000 c3ff00000b000000de000000 - {e=>0,c=>1,a=>-4,b=>0,d=>0,f=>177} fcff02000000b1 fcff02000000b100 fcff000002000000b1000000 fcff000002000000b1000000 - {e=>0,c=>1,a=>-34,b=>1,d=>1,f=>92} deff070000005c deff070000005c00 deff0000070000005c000000 deff0000070000005c000000 - {e=>0,c=>1,a=>6,b=>0,d=>1,f=>117} 06000600000075 0600060000007500 060000000600000075000000 060000000600000075000000 = struct ulong { int a; unsigned long b:1; }; - {a=>20,b=>1} 1400000001000000 1400000001000000 1400000001000000 1400000001000000 - {a=>-70,b=>1} baffffff01000000 baffffff01000000 baffffff01000000 baffffff01000000 - {a=>-124,b=>0} 84ffffff00000000 84ffffff00000000 84ffffff00000000 84ffffff00000000 - {a=>-106,b=>0} 96ffffff00000000 96ffffff00000000 96ffffff00000000 96ffffff00000000 - {a=>25,b=>1} 1900000001000000 1900000001000000 1900000001000000 1900000001000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>42,b=>0} 2a00000002000000 2a00000002000000 2a00000002000000 2a00000002000000 - {c=>1,a=>-120,b=>1} 88ffffff03000000 88ffffff03000000 88ffffff03000000 88ffffff03000000 - {c=>1,a=>-122,b=>1} 86ffffff03000000 86ffffff03000000 86ffffff03000000 86ffffff03000000 - {c=>0,a=>-34,b=>0} deffffff00000000 deffffff00000000 deffffff00000000 deffffff00000000 - {c=>0,a=>-40,b=>0} d8ffffff00000000 d8ffffff00000000 d8ffffff00000000 d8ffffff00000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>44,b=>1,d=>0} 2c00000001000000 2c00000001000000 2c00000001000000 2c00000001000000 - {c=>1,a=>119,b=>1,d=>0} 7700000003000000 7700000003000000 7700000003000000 7700000003000000 - {c=>1,a=>30,b=>1,d=>0} 1e00000003000000 1e00000003000000 1e00000003000000 1e00000003000000 - {c=>0,a=>-76,b=>0,d=>0} b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 - {c=>1,a=>71,b=>0,d=>1} 4700000006000000 4700000006000000 4700000006000000 4700000006000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>0,c=>0,a=>-96,b=>1,d=>0} a0ffffff01000000 a0ffffff01000000 a0ffffff01000000 a0ffffff01000000 - {e=>0,c=>0,a=>112,b=>1,d=>0} 7000000001000000 7000000001000000 7000000001000000 7000000001000000 - {e=>1,c=>0,a=>-48,b=>1,d=>0} d0ffffff09000000 d0ffffff09000000 d0ffffff09000000 d0ffffff09000000 - {e=>0,c=>0,a=>101,b=>0,d=>0} 6500000000000000 6500000000000000 6500000000000000 6500000000000000 - {e=>0,c=>0,a=>113,b=>1,d=>1} 7100000005000000 7100000005000000 7100000005000000 7100000005000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>53,b=>0,d=>1,f=>237} 350000000e000000ed 350000000e000000ed00 350000000e000000ed000000 350000000e000000ed000000 - {e=>1,c=>0,a=>-64,b=>1,d=>0,f=>197} c0ffffff09000000c5 c0ffffff09000000c500 c0ffffff09000000c5000000 c0ffffff09000000c5000000 - {e=>0,c=>1,a=>-88,b=>1,d=>0,f=>178} a8ffffff03000000b2 a8ffffff03000000b200 a8ffffff03000000b2000000 a8ffffff03000000b2000000 - {e=>1,c=>1,a=>-104,b=>0,d=>1,f=>185} 98ffffff0e000000b9 98ffffff0e000000b900 98ffffff0e000000b9000000 98ffffff0e000000b9000000 - {e=>1,c=>1,a=>121,b=>0,d=>1,f=>176} 790000000e000000b0 790000000e000000b000 790000000e000000b0000000 790000000e000000b0000000 = struct ulong { long a; unsigned long b:1; }; - {a=>123,b=>0} 7b00000000000000 7b00000000000000 7b00000000000000 7b00000000000000 - {a=>-51,b=>1} cdffffff01000000 cdffffff01000000 cdffffff01000000 cdffffff01000000 - {a=>123,b=>0} 7b00000000000000 7b00000000000000 7b00000000000000 7b00000000000000 - {a=>-16,b=>1} f0ffffff01000000 f0ffffff01000000 f0ffffff01000000 f0ffffff01000000 - {a=>-33,b=>1} dfffffff01000000 dfffffff01000000 dfffffff01000000 dfffffff01000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>65,b=>1} 4100000003000000 4100000003000000 4100000003000000 4100000003000000 - {c=>1,a=>108,b=>0} 6c00000002000000 6c00000002000000 6c00000002000000 6c00000002000000 - {c=>1,a=>-3,b=>1} fdffffff03000000 fdffffff03000000 fdffffff03000000 fdffffff03000000 - {c=>0,a=>48,b=>1} 3000000001000000 3000000001000000 3000000001000000 3000000001000000 - {c=>0,a=>39,b=>0} 2700000000000000 2700000000000000 2700000000000000 2700000000000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-118,b=>0,d=>1} 8affffff04000000 8affffff04000000 8affffff04000000 8affffff04000000 - {c=>1,a=>-68,b=>1,d=>1} bcffffff07000000 bcffffff07000000 bcffffff07000000 bcffffff07000000 - {c=>0,a=>-88,b=>1,d=>1} a8ffffff05000000 a8ffffff05000000 a8ffffff05000000 a8ffffff05000000 - {c=>0,a=>-79,b=>0,d=>1} b1ffffff04000000 b1ffffff04000000 b1ffffff04000000 b1ffffff04000000 - {c=>1,a=>-62,b=>0,d=>0} c2ffffff02000000 c2ffffff02000000 c2ffffff02000000 c2ffffff02000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-102,b=>1,d=>0} 9affffff0b000000 9affffff0b000000 9affffff0b000000 9affffff0b000000 - {e=>1,c=>0,a=>-99,b=>1,d=>0} 9dffffff09000000 9dffffff09000000 9dffffff09000000 9dffffff09000000 - {e=>0,c=>0,a=>3,b=>0,d=>0} 0300000000000000 0300000000000000 0300000000000000 0300000000000000 - {e=>1,c=>0,a=>6,b=>1,d=>0} 0600000009000000 0600000009000000 0600000009000000 0600000009000000 - {e=>0,c=>1,a=>105,b=>0,d=>0} 6900000002000000 6900000002000000 6900000002000000 6900000002000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>73,b=>1,d=>1,f=>147} 490000000d00000093 490000000d0000009300 490000000d00000093000000 490000000d00000093000000 - {e=>0,c=>1,a=>9,b=>0,d=>0,f=>160} 0900000002000000a0 0900000002000000a000 0900000002000000a0000000 0900000002000000a0000000 - {e=>0,c=>1,a=>78,b=>1,d=>1,f=>51} 4e0000000700000033 4e000000070000003300 4e0000000700000033000000 4e0000000700000033000000 - {e=>1,c=>0,a=>96,b=>1,d=>1,f=>245} 600000000d000000f5 600000000d000000f500 600000000d000000f5000000 600000000d000000f5000000 - {e=>0,c=>0,a=>101,b=>1,d=>1,f=>35} 650000000500000023 65000000050000002300 650000000500000023000000 650000000500000023000000 = struct umixed { unsigned char a:1; }; - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 = struct umixed { unsigned char a:1; unsigned short b:1; }; - {a=>0,b=>0} 000000 00000000 00000000 00000000 - {a=>0,b=>1} 000100 00000100 00000100 00000100 - {a=>0,b=>0} 000000 00000000 00000000 00000000 - {a=>0,b=>1} 000100 00000100 00000100 00000100 - {a=>1,b=>0} 010000 01000000 01000000 01000000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; }; - {c=>0,a=>1,b=>1} 01010000000000 0100010000000000 0100010000000000 0100010000000000 - {c=>1,a=>0,b=>0} 00000001000000 0000000001000000 0000000001000000 0000000001000000 - {c=>1,a=>0,b=>1} 00010001000000 0000010001000000 0000010001000000 0000010001000000 - {c=>0,a=>1,b=>1} 01010000000000 0100010000000000 0100010000000000 0100010000000000 - {c=>0,a=>0,b=>0} 00000000000000 0000000000000000 0000000000000000 0000000000000000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; unsigned long d:1; }; - {c=>1,a=>1,b=>0,d=>1} 01000003000000 0100000003000000 0100000003000000 0100000003000000 - {c=>0,a=>0,b=>0,d=>1} 00000002000000 0000000002000000 0000000002000000 0000000002000000 - {c=>1,a=>1,b=>0,d=>1} 01000003000000 0100000003000000 0100000003000000 0100000003000000 - {c=>0,a=>0,b=>1,d=>0} 00010000000000 0000010000000000 0000010000000000 0000010000000000 - {c=>0,a=>0,b=>1,d=>1} 00010002000000 0000010002000000 0000010002000000 0000010002000000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; unsigned long d:1; unsigned char e; }; - {e=>216,c=>0,a=>1,b=>0,d=>1} 01000002000000d8 0100000002000000d800 0100000002000000d8000000 0100000002000000d8000000 - {e=>111,c=>0,a=>0,b=>1,d=>0} 000100000000006f 00000100000000006f00 00000100000000006f000000 00000100000000006f000000 - {e=>156,c=>1,a=>0,b=>0,d=>0} 000000010000009c 00000000010000009c00 00000000010000009c000000 00000000010000009c000000 - {e=>93,c=>0,a=>0,b=>1,d=>0} 000100000000005d 00000100000000005d00 00000100000000005d000000 00000100000000005d000000 - {e=>187,c=>0,a=>0,b=>1,d=>0} 00010000000000bb 0000010000000000bb00 0000010000000000bb000000 0000010000000000bb000000 = struct umixed { char a; unsigned char b:1; }; - {a=>122,b=>0} 7a00 7a00 7a00 7a00 - {a=>102,b=>0} 6600 6600 6600 6600 - {a=>105,b=>0} 6900 6900 6900 6900 - {a=>6,b=>1} 0601 0601 0601 0601 - {a=>110,b=>0} 6e00 6e00 6e00 6e00 = struct umixed { char a; unsigned char b:1; unsigned short c:1; }; - {c=>0,a=>-64,b=>0} c0000000 c0000000 c0000000 c0000000 - {c=>0,a=>92,b=>1} 5c010000 5c010000 5c010000 5c010000 - {c=>1,a=>-60,b=>1} c4010100 c4010100 c4010100 c4010100 - {c=>0,a=>0,b=>0} 00000000 00000000 00000000 00000000 - {c=>0,a=>-90,b=>1} a6010000 a6010000 a6010000 a6010000 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>43,b=>0,d=>1} 2b00010001000000 2b00010001000000 2b00010001000000 2b00010001000000 - {c=>0,a=>65,b=>1,d=>1} 4101000001000000 4101000001000000 4101000001000000 4101000001000000 - {c=>1,a=>-28,b=>0,d=>1} e400010001000000 e400010001000000 e400010001000000 e400010001000000 - {c=>1,a=>-67,b=>1,d=>0} bd01010000000000 bd01010000000000 bd01010000000000 bd01010000000000 - {c=>1,a=>-56,b=>0,d=>1} c800010001000000 c800010001000000 c800010001000000 c800010001000000 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-36,b=>0,d=>0} dc00010002000000 dc00010002000000 dc00010002000000 dc00010002000000 - {e=>1,c=>1,a=>-40,b=>1,d=>1} d801010003000000 d801010003000000 d801010003000000 d801010003000000 - {e=>0,c=>1,a=>56,b=>0,d=>1} 3800010001000000 3800010001000000 3800010001000000 3800010001000000 - {e=>0,c=>1,a=>18,b=>1,d=>0} 1201010000000000 1201010000000000 1201010000000000 1201010000000000 - {e=>1,c=>0,a=>-68,b=>1,d=>0} bc01000002000000 bc01000002000000 bc01000002000000 bc01000002000000 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>77,b=>0,d=>0,f=>112} 4d0001000200000070 4d000100020000007000 4d0001000200000070000000 4d0001000200000070000000 - {e=>1,c=>0,a=>115,b=>0,d=>1,f=>9} 730000000300000009 73000000030000000900 730000000300000009000000 730000000300000009000000 - {e=>0,c=>0,a=>-25,b=>0,d=>0,f=>91} e7000000000000005b e7000000000000005b00 e7000000000000005b000000 e7000000000000005b000000 - {e=>0,c=>0,a=>-68,b=>1,d=>0,f=>5} bc0100000000000005 bc010000000000000500 bc0100000000000005000000 bc0100000000000005000000 - {e=>0,c=>1,a=>86,b=>0,d=>0,f=>30} 56000100000000001e 56000100000000001e00 56000100000000001e000000 56000100000000001e000000 = struct umixed { short a; unsigned char b:1; }; - {a=>49,b=>0} 310000 31000000 31000000 31000000 - {a=>84,b=>1} 540001 54000100 54000100 54000100 - {a=>-73,b=>0} b7ff00 b7ff0000 b7ff0000 b7ff0000 - {a=>92,b=>0} 5c0000 5c000000 5c000000 5c000000 - {a=>76,b=>0} 4c0000 4c000000 4c000000 4c000000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; }; - {c=>1,a=>-69,b=>0} bbff000100 bbff00000100 bbff00000100 bbff00000100 - {c=>1,a=>103,b=>0} 6700000100 670000000100 670000000100 670000000100 - {c=>0,a=>-68,b=>0} bcff000000 bcff00000000 bcff00000000 bcff00000000 - {c=>0,a=>-31,b=>0} e1ff000000 e1ff00000000 e1ff00000000 e1ff00000000 - {c=>0,a=>87,b=>1} 5700010000 570001000000 570001000000 570001000000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>0,a=>-26,b=>1,d=>0} e6ff01000000000000 e6ff0100000000000000 e6ff01000000000000000000 e6ff01000000000000000000 - {c=>1,a=>41,b=>0,d=>1} 290000010001000000 29000000010001000000 290000000100000001000000 290000000100000001000000 - {c=>0,a=>47,b=>1,d=>1} 2f0001000001000000 2f000100000001000000 2f0001000000000001000000 2f0001000000000001000000 - {c=>0,a=>-115,b=>0,d=>0} 8dff00000000000000 8dff0000000000000000 8dff00000000000000000000 8dff00000000000000000000 - {c=>1,a=>16,b=>1,d=>0} 100001010000000000 10000100010000000000 100001000100000000000000 100001000100000000000000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-24,b=>0,d=>0} e8ff00010002000000 e8ff0000010002000000 e8ff00000100000002000000 e8ff00000100000002000000 - {e=>1,c=>1,a=>-4,b=>1,d=>0} fcff01010002000000 fcff0100010002000000 fcff01000100000002000000 fcff01000100000002000000 - {e=>0,c=>0,a=>-80,b=>1,d=>0} b0ff01000000000000 b0ff0100000000000000 b0ff01000000000000000000 b0ff01000000000000000000 - {e=>0,c=>0,a=>18,b=>1,d=>0} 120001000000000000 12000100000000000000 120001000000000000000000 120001000000000000000000 - {e=>0,c=>0,a=>-46,b=>1,d=>0} d2ff01000000000000 d2ff0100000000000000 d2ff01000000000000000000 d2ff01000000000000000000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>5,b=>0,d=>0,f=>113} 05000001000200000071 050000000100020000007100 05000000010000000200000071000000 05000000010000000200000071000000 - {e=>0,c=>0,a=>67,b=>1,d=>1,f=>126} 4300010000010000007e 430001000000010000007e00 4300010000000000010000007e000000 4300010000000000010000007e000000 - {e=>0,c=>0,a=>49,b=>0,d=>1,f=>165} 310000000001000000a5 31000000000001000000a500 310000000000000001000000a5000000 310000000000000001000000a5000000 - {e=>1,c=>0,a=>0,b=>0,d=>1,f=>40} 00000000000300000028 000000000000030000002800 00000000000000000300000028000000 00000000000000000300000028000000 - {e=>0,c=>1,a=>66,b=>0,d=>1,f=>177} 420000010001000000b1 42000000010001000000b100 420000000100000001000000b1000000 420000000100000001000000b1000000 = struct umixed { int a; unsigned char b:1; }; - {a=>-94,b=>0} a2ffffff00 a2ffffff0000 a2ffffff00000000 a2ffffff00000000 - {a=>-14,b=>0} f2ffffff00 f2ffffff0000 f2ffffff00000000 f2ffffff00000000 - {a=>-40,b=>0} d8ffffff00 d8ffffff0000 d8ffffff00000000 d8ffffff00000000 - {a=>89,b=>0} 5900000000 590000000000 5900000000000000 5900000000000000 - {a=>-2,b=>1} feffffff01 feffffff0100 feffffff01000000 feffffff01000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; }; - {c=>0,a=>114,b=>1} 72000000010000 7200000001000000 7200000001000000 7200000001000000 - {c=>1,a=>-68,b=>1} bcffffff010100 bcffffff01000100 bcffffff01000100 bcffffff01000100 - {c=>0,a=>60,b=>1} 3c000000010000 3c00000001000000 3c00000001000000 3c00000001000000 - {c=>0,a=>-105,b=>1} 97ffffff010000 97ffffff01000000 97ffffff01000000 97ffffff01000000 - {c=>1,a=>-90,b=>0} a6ffffff000100 a6ffffff00000100 a6ffffff00000100 a6ffffff00000100 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>44,b=>0,d=>1} 2c00000000010001000000 2c0000000000010001000000 2c0000000000010001000000 2c0000000000010001000000 - {c=>1,a=>-90,b=>0,d=>0} a6ffffff00010000000000 a6ffffff0000010000000000 a6ffffff0000010000000000 a6ffffff0000010000000000 - {c=>1,a=>-11,b=>0,d=>0} f5ffffff00010000000000 f5ffffff0000010000000000 f5ffffff0000010000000000 f5ffffff0000010000000000 - {c=>1,a=>18,b=>1,d=>1} 1200000001010001000000 120000000100010001000000 120000000100010001000000 120000000100010001000000 - {c=>0,a=>-25,b=>0,d=>0} e7ffffff00000000000000 e7ffffff0000000000000000 e7ffffff0000000000000000 e7ffffff0000000000000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>0,c=>0,a=>-47,b=>1,d=>0} d1ffffff01000000000000 d1ffffff0100000000000000 d1ffffff0100000000000000 d1ffffff0100000000000000 - {e=>0,c=>1,a=>-12,b=>0,d=>1} f4ffffff00010001000000 f4ffffff0000010001000000 f4ffffff0000010001000000 f4ffffff0000010001000000 - {e=>1,c=>1,a=>-74,b=>1,d=>0} b6ffffff01010002000000 b6ffffff0100010002000000 b6ffffff0100010002000000 b6ffffff0100010002000000 - {e=>1,c=>1,a=>-49,b=>1,d=>0} cfffffff01010002000000 cfffffff0100010002000000 cfffffff0100010002000000 cfffffff0100010002000000 - {e=>1,c=>1,a=>61,b=>1,d=>0} 3d00000001010002000000 3d0000000100010002000000 3d0000000100010002000000 3d0000000100010002000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>-19,b=>0,d=>0,f=>112} edffffff0001000200000070 edffffff00000100020000007000 edffffff000001000200000070000000 edffffff000001000200000070000000 - {e=>1,c=>0,a=>-74,b=>1,d=>0,f=>149} b6ffffff0100000200000095 b6ffffff01000000020000009500 b6ffffff010000000200000095000000 b6ffffff010000000200000095000000 - {e=>0,c=>1,a=>-124,b=>1,d=>1,f=>78} 84ffffff010100010000004e 84ffffff01000100010000004e00 84ffffff01000100010000004e000000 84ffffff01000100010000004e000000 - {e=>1,c=>0,a=>-25,b=>0,d=>0,f=>222} e7ffffff00000002000000de e7ffffff0000000002000000de00 e7ffffff0000000002000000de000000 e7ffffff0000000002000000de000000 - {e=>0,c=>0,a=>127,b=>1,d=>0,f=>81} 7f0000000100000000000051 7f00000001000000000000005100 7f000000010000000000000051000000 7f000000010000000000000051000000 = struct umixed { long a; unsigned char b:1; }; - {a=>127,b=>0} 7f00000000 7f0000000000 7f00000000000000 7f00000000000000 - {a=>66,b=>1} 4200000001 420000000100 4200000001000000 4200000001000000 - {a=>13,b=>1} 0d00000001 0d0000000100 0d00000001000000 0d00000001000000 - {a=>114,b=>0} 7200000000 720000000000 7200000000000000 7200000000000000 - {a=>-73,b=>1} b7ffffff01 b7ffffff0100 b7ffffff01000000 b7ffffff01000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; }; - {c=>1,a=>105,b=>0} 69000000000100 6900000000000100 6900000000000100 6900000000000100 - {c=>1,a=>-8,b=>0} f8ffffff000100 f8ffffff00000100 f8ffffff00000100 f8ffffff00000100 - {c=>0,a=>5,b=>0} 05000000000000 0500000000000000 0500000000000000 0500000000000000 - {c=>1,a=>-123,b=>0} 85ffffff000100 85ffffff00000100 85ffffff00000100 85ffffff00000100 - {c=>1,a=>103,b=>1} 67000000010100 6700000001000100 6700000001000100 6700000001000100 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>-17,b=>1,d=>0} efffffff01010000000000 efffffff0100010000000000 efffffff0100010000000000 efffffff0100010000000000 - {c=>1,a=>-127,b=>1,d=>0} 81ffffff01010000000000 81ffffff0100010000000000 81ffffff0100010000000000 81ffffff0100010000000000 - {c=>1,a=>102,b=>1,d=>1} 6600000001010001000000 660000000100010001000000 660000000100010001000000 660000000100010001000000 - {c=>1,a=>-88,b=>1,d=>1} a8ffffff01010001000000 a8ffffff0100010001000000 a8ffffff0100010001000000 a8ffffff0100010001000000 - {c=>1,a=>15,b=>1,d=>1} 0f00000001010001000000 0f0000000100010001000000 0f0000000100010001000000 0f0000000100010001000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>118,b=>1,d=>1} 7600000001010003000000 760000000100010003000000 760000000100010003000000 760000000100010003000000 - {e=>1,c=>0,a=>-90,b=>0,d=>1} a6ffffff00000003000000 a6ffffff0000000003000000 a6ffffff0000000003000000 a6ffffff0000000003000000 - {e=>0,c=>0,a=>103,b=>0,d=>0} 6700000000000000000000 670000000000000000000000 670000000000000000000000 670000000000000000000000 - {e=>0,c=>1,a=>-84,b=>0,d=>1} acffffff00010001000000 acffffff0000010001000000 acffffff0000010001000000 acffffff0000010001000000 - {e=>1,c=>1,a=>92,b=>0,d=>0} 5c00000000010002000000 5c0000000000010002000000 5c0000000000010002000000 5c0000000000010002000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>51,b=>0,d=>0,f=>187} 3300000000000002000000bb 330000000000000002000000bb00 330000000000000002000000bb000000 330000000000000002000000bb000000 - {e=>0,c=>1,a=>-115,b=>1,d=>1,f=>46} 8dffffff010100010000002e 8dffffff01000100010000002e00 8dffffff01000100010000002e000000 8dffffff01000100010000002e000000 - {e=>1,c=>0,a=>105,b=>0,d=>0,f=>59} 69000000000000020000003b 6900000000000000020000003b00 6900000000000000020000003b000000 6900000000000000020000003b000000 - {e=>1,c=>1,a=>-128,b=>0,d=>1,f=>86} 80ffffff0001000300000056 80ffffff00000100030000005600 80ffffff000001000300000056000000 80ffffff000001000300000056000000 - {e=>1,c=>1,a=>24,b=>1,d=>1,f=>117} 180000000101000300000075 1800000001000100030000007500 18000000010001000300000075000000 18000000010001000300000075000000 = struct smixed { signed char a:1; }; - {a=>-1} 01 01 01 01 - {a=>-1} 01 01 01 01 - {a=>-1} 01 01 01 01 - {a=>-1} 01 01 01 01 - {a=>-1} 01 01 01 01 = struct smixed { signed char a:1; signed short b:1; }; - {a=>0,b=>0} 000000 00000000 00000000 00000000 - {a=>-1,b=>0} 010000 01000000 01000000 01000000 - {a=>0,b=>-1} 000100 00000100 00000100 00000100 - {a=>0,b=>-1} 000100 00000100 00000100 00000100 - {a=>0,b=>-1} 000100 00000100 00000100 00000100 = struct smixed { signed char a:1; signed short b:1; signed int c:1; }; - {c=>0,a=>0,b=>-1} 00010000000000 0000010000000000 0000010000000000 0000010000000000 - {c=>-1,a=>-1,b=>0} 01000001000000 0100000001000000 0100000001000000 0100000001000000 - {c=>0,a=>0,b=>-1} 00010000000000 0000010000000000 0000010000000000 0000010000000000 - {c=>-1,a=>0,b=>0} 00000001000000 0000000001000000 0000000001000000 0000000001000000 - {c=>0,a=>0,b=>0} 00000000000000 0000000000000000 0000000000000000 0000000000000000 = struct smixed { signed char a:1; signed short b:1; signed int c:1; signed long d:1; }; - {c=>-1,a=>-1,b=>-1,d=>-1} 01010003000000 0100010003000000 0100010003000000 0100010003000000 - {c=>0,a=>-1,b=>0,d=>0} 01000000000000 0100000000000000 0100000000000000 0100000000000000 - {c=>-1,a=>0,b=>-1,d=>-1} 00010003000000 0000010003000000 0000010003000000 0000010003000000 - {c=>-1,a=>-1,b=>0,d=>0} 01000001000000 0100000001000000 0100000001000000 0100000001000000 - {c=>0,a=>-1,b=>0,d=>-1} 01000002000000 0100000002000000 0100000002000000 0100000002000000 = struct smixed { signed char a:1; signed short b:1; signed int c:1; signed long d:1; signed int e; }; - {e=>-8,c=>0,a=>-1,b=>0,d=>-1} 01000002000000f8ffffff 0100000002000000f8ffffff 0100000002000000f8ffffff 0100000002000000f8ffffff - {e=>93,c=>-1,a=>0,b=>-1,d=>0} 000100010000005d000000 00000100010000005d000000 00000100010000005d000000 00000100010000005d000000 - {e=>98,c=>-1,a=>-1,b=>-1,d=>-1} 0101000300000062000000 010001000300000062000000 010001000300000062000000 010001000300000062000000 - {e=>-79,c=>0,a=>0,b=>-1,d=>-1} 00010002000000b1ffffff 0000010002000000b1ffffff 0000010002000000b1ffffff 0000010002000000b1ffffff - {e=>-60,c=>-1,a=>0,b=>0,d=>-1} 00000003000000c4ffffff 0000000003000000c4ffffff 0000000003000000c4ffffff 0000000003000000c4ffffff = struct smixed { char a; signed char b:1; }; - {a=>28,b=>0} 1c00 1c00 1c00 1c00 - {a=>-89,b=>-1} a701 a701 a701 a701 - {a=>52,b=>-1} 3401 3401 3401 3401 - {a=>91,b=>0} 5b00 5b00 5b00 5b00 - {a=>-106,b=>0} 9600 9600 9600 9600 = struct smixed { char a; signed char b:1; signed short c:1; }; - {c=>-1,a=>-38,b=>0} da000100 da000100 da000100 da000100 - {c=>0,a=>-57,b=>-1} c7010000 c7010000 c7010000 c7010000 - {c=>-1,a=>-94,b=>-1} a2010100 a2010100 a2010100 a2010100 - {c=>-1,a=>107,b=>-1} 6b010100 6b010100 6b010100 6b010100 - {c=>0,a=>-95,b=>0} a1000000 a1000000 a1000000 a1000000 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>35,b=>-1,d=>0} 2301000000000000 2301000000000000 2301000000000000 2301000000000000 - {c=>-1,a=>-97,b=>-1,d=>0} 9f01010000000000 9f01010000000000 9f01010000000000 9f01010000000000 - {c=>0,a=>79,b=>-1,d=>-1} 4f01000001000000 4f01000001000000 4f01000001000000 4f01000001000000 - {c=>0,a=>-2,b=>0,d=>-1} fe00000001000000 fe00000001000000 fe00000001000000 fe00000001000000 - {c=>-1,a=>52,b=>-1,d=>0} 3401010000000000 3401010000000000 3401010000000000 3401010000000000 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>0,c=>0,a=>63,b=>-1,d=>-1} 3f01000001000000 3f01000001000000 3f01000001000000 3f01000001000000 - {e=>-1,c=>0,a=>105,b=>0,d=>-1} 6900000003000000 6900000003000000 6900000003000000 6900000003000000 - {e=>0,c=>-1,a=>84,b=>0,d=>-1} 5400010001000000 5400010001000000 5400010001000000 5400010001000000 - {e=>-1,c=>0,a=>40,b=>-1,d=>-1} 2801000003000000 2801000003000000 2801000003000000 2801000003000000 - {e=>0,c=>0,a=>114,b=>-1,d=>0} 7201000000000000 7201000000000000 7201000000000000 7201000000000000 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>-50,b=>-1,d=>-1,f=>37} ce0101000300000025000000 ce0101000300000025000000 ce0101000300000025000000 ce0101000300000025000000 - {e=>-1,c=>-1,a=>-111,b=>-1,d=>-1,f=>-13} 9101010003000000f3ffffff 9101010003000000f3ffffff 9101010003000000f3ffffff 9101010003000000f3ffffff - {e=>0,c=>0,a=>-7,b=>0,d=>-1,f=>-107} f90000000100000095ffffff f90000000100000095ffffff f90000000100000095ffffff f90000000100000095ffffff - {e=>0,c=>-1,a=>8,b=>0,d=>-1,f=>-10} 0800010001000000f6ffffff 0800010001000000f6ffffff 0800010001000000f6ffffff 0800010001000000f6ffffff - {e=>-1,c=>-1,a=>-89,b=>0,d=>-1,f=>127} a7000100030000007f000000 a7000100030000007f000000 a7000100030000007f000000 a7000100030000007f000000 = struct smixed { short a; signed char b:1; }; - {a=>-94,b=>-1} a2ff01 a2ff0100 a2ff0100 a2ff0100 - {a=>19,b=>-1} 130001 13000100 13000100 13000100 - {a=>-68,b=>-1} bcff01 bcff0100 bcff0100 bcff0100 - {a=>-102,b=>-1} 9aff01 9aff0100 9aff0100 9aff0100 - {a=>-111,b=>-1} 91ff01 91ff0100 91ff0100 91ff0100 = struct smixed { short a; signed char b:1; signed short c:1; }; - {c=>-1,a=>41,b=>0} 2900000100 290000000100 290000000100 290000000100 - {c=>-1,a=>99,b=>0} 6300000100 630000000100 630000000100 630000000100 - {c=>-1,a=>-58,b=>0} c6ff000100 c6ff00000100 c6ff00000100 c6ff00000100 - {c=>-1,a=>28,b=>0} 1c00000100 1c0000000100 1c0000000100 1c0000000100 - {c=>-1,a=>-117,b=>0} 8bff000100 8bff00000100 8bff00000100 8bff00000100 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>-1,a=>114,b=>-1,d=>-1} 720001010001000000 72000100010001000000 720001000100000001000000 720001000100000001000000 - {c=>0,a=>-58,b=>-1,d=>-1} c6ff01000001000000 c6ff0100000001000000 c6ff01000000000001000000 c6ff01000000000001000000 - {c=>-1,a=>15,b=>-1,d=>0} 0f0001010000000000 0f000100010000000000 0f0001000100000000000000 0f0001000100000000000000 - {c=>0,a=>-98,b=>0,d=>0} 9eff00000000000000 9eff0000000000000000 9eff00000000000000000000 9eff00000000000000000000 - {c=>-1,a=>26,b=>0,d=>0} 1a0000010000000000 1a000000010000000000 1a0000000100000000000000 1a0000000100000000000000 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>-1,c=>0,a=>-4,b=>0,d=>0} fcff00000002000000 fcff0000000002000000 fcff00000000000002000000 fcff00000000000002000000 - {e=>-1,c=>0,a=>6,b=>0,d=>-1} 060000000003000000 06000000000003000000 060000000000000003000000 060000000000000003000000 - {e=>0,c=>-1,a=>40,b=>-1,d=>-1} 280001010001000000 28000100010001000000 280001000100000001000000 280001000100000001000000 - {e=>-1,c=>0,a=>32,b=>-1,d=>0} 200001000002000000 20000100000002000000 200001000000000002000000 200001000000000002000000 - {e=>0,c=>-1,a=>-119,b=>0,d=>-1} 89ff00010001000000 89ff0000010001000000 89ff00000100000001000000 89ff00000100000001000000 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>0,c=>0,a=>-8,b=>-1,d=>-1,f=>-2} f8ff01000001000000feffffff f8ff0100000001000000feffffff f8ff01000000000001000000feffffff f8ff01000000000001000000feffffff - {e=>-1,c=>0,a=>-61,b=>-1,d=>0,f=>-61} c3ff01000002000000c3ffffff c3ff0100000002000000c3ffffff c3ff01000000000002000000c3ffffff c3ff01000000000002000000c3ffffff - {e=>0,c=>0,a=>63,b=>-1,d=>-1,f=>-95} 3f0001000001000000a1ffffff 3f000100000001000000a1ffffff 3f0001000000000001000000a1ffffff 3f0001000000000001000000a1ffffff - {e=>0,c=>0,a=>60,b=>0,d=>0,f=>92} 3c00000000000000005c000000 3c0000000000000000005c000000 3c00000000000000000000005c000000 3c00000000000000000000005c000000 - {e=>0,c=>-1,a=>-67,b=>0,d=>-1,f=>19} bdff0001000100000013000000 bdff000001000100000013000000 bdff0000010000000100000013000000 bdff0000010000000100000013000000 = struct smixed { int a; signed char b:1; }; - {a=>95,b=>-1} 5f00000001 5f0000000100 5f00000001000000 5f00000001000000 - {a=>50,b=>0} 3200000000 320000000000 3200000000000000 3200000000000000 - {a=>-64,b=>-1} c0ffffff01 c0ffffff0100 c0ffffff01000000 c0ffffff01000000 - {a=>-33,b=>-1} dfffffff01 dfffffff0100 dfffffff01000000 dfffffff01000000 - {a=>-44,b=>-1} d4ffffff01 d4ffffff0100 d4ffffff01000000 d4ffffff01000000 = struct smixed { int a; signed char b:1; signed short c:1; }; - {c=>0,a=>-115,b=>0} 8dffffff000000 8dffffff00000000 8dffffff00000000 8dffffff00000000 - {c=>-1,a=>-6,b=>0} faffffff000100 faffffff00000100 faffffff00000100 faffffff00000100 - {c=>0,a=>40,b=>-1} 28000000010000 2800000001000000 2800000001000000 2800000001000000 - {c=>-1,a=>-100,b=>-1} 9cffffff010100 9cffffff01000100 9cffffff01000100 9cffffff01000100 - {c=>-1,a=>-26,b=>-1} e6ffffff010100 e6ffffff01000100 e6ffffff01000100 e6ffffff01000100 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>111,b=>-1,d=>0} 6f00000001000000000000 6f0000000100000000000000 6f0000000100000000000000 6f0000000100000000000000 - {c=>-1,a=>-15,b=>-1,d=>0} f1ffffff01010000000000 f1ffffff0100010000000000 f1ffffff0100010000000000 f1ffffff0100010000000000 - {c=>-1,a=>27,b=>-1,d=>0} 1b00000001010000000000 1b0000000100010000000000 1b0000000100010000000000 1b0000000100010000000000 - {c=>0,a=>95,b=>-1,d=>0} 5f00000001000000000000 5f0000000100000000000000 5f0000000100000000000000 5f0000000100000000000000 - {c=>0,a=>40,b=>0,d=>0} 2800000000000000000000 280000000000000000000000 280000000000000000000000 280000000000000000000000 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>0,c=>0,a=>106,b=>0,d=>-1} 6a00000000000001000000 6a0000000000000001000000 6a0000000000000001000000 6a0000000000000001000000 - {e=>0,c=>0,a=>-60,b=>-1,d=>-1} c4ffffff01000001000000 c4ffffff0100000001000000 c4ffffff0100000001000000 c4ffffff0100000001000000 - {e=>-1,c=>-1,a=>21,b=>0,d=>-1} 1500000000010003000000 150000000000010003000000 150000000000010003000000 150000000000010003000000 - {e=>-1,c=>-1,a=>12,b=>0,d=>0} 0c00000000010002000000 0c0000000000010002000000 0c0000000000010002000000 0c0000000000010002000000 - {e=>0,c=>-1,a=>-11,b=>-1,d=>-1} f5ffffff01010001000000 f5ffffff0100010001000000 f5ffffff0100010001000000 f5ffffff0100010001000000 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>1,b=>-1,d=>-1,f=>-92} 0100000001010003000000a4ffffff 010000000100010003000000a4ffffff 010000000100010003000000a4ffffff 010000000100010003000000a4ffffff - {e=>-1,c=>-1,a=>-79,b=>0,d=>0,f=>47} b1ffffff000100020000002f000000 b1ffffff00000100020000002f000000 b1ffffff00000100020000002f000000 b1ffffff00000100020000002f000000 - {e=>-1,c=>-1,a=>81,b=>-1,d=>0,f=>-106} 510000000101000200000096ffffff 51000000010001000200000096ffffff 51000000010001000200000096ffffff 51000000010001000200000096ffffff - {e=>0,c=>0,a=>15,b=>0,d=>-1,f=>2} 0f0000000000000100000002000000 0f000000000000000100000002000000 0f000000000000000100000002000000 0f000000000000000100000002000000 - {e=>0,c=>0,a=>91,b=>-1,d=>0,f=>98} 5b0000000100000000000062000000 5b000000010000000000000062000000 5b000000010000000000000062000000 5b000000010000000000000062000000 = struct smixed { long a; signed char b:1; }; - {a=>60,b=>-1} 3c00000001 3c0000000100 3c00000001000000 3c00000001000000 - {a=>125,b=>-1} 7d00000001 7d0000000100 7d00000001000000 7d00000001000000 - {a=>-23,b=>-1} e9ffffff01 e9ffffff0100 e9ffffff01000000 e9ffffff01000000 - {a=>-14,b=>-1} f2ffffff01 f2ffffff0100 f2ffffff01000000 f2ffffff01000000 - {a=>51,b=>0} 3300000000 330000000000 3300000000000000 3300000000000000 = struct smixed { long a; signed char b:1; signed short c:1; }; - {c=>-1,a=>-105,b=>-1} 97ffffff010100 97ffffff01000100 97ffffff01000100 97ffffff01000100 - {c=>0,a=>31,b=>0} 1f000000000000 1f00000000000000 1f00000000000000 1f00000000000000 - {c=>0,a=>43,b=>0} 2b000000000000 2b00000000000000 2b00000000000000 2b00000000000000 - {c=>0,a=>-128,b=>0} 80ffffff000000 80ffffff00000000 80ffffff00000000 80ffffff00000000 - {c=>-1,a=>101,b=>0} 65000000000100 6500000000000100 6500000000000100 6500000000000100 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>18,b=>0,d=>-1} 1200000000000001000000 120000000000000001000000 120000000000000001000000 120000000000000001000000 - {c=>-1,a=>-93,b=>-1,d=>0} a3ffffff01010000000000 a3ffffff0100010000000000 a3ffffff0100010000000000 a3ffffff0100010000000000 - {c=>-1,a=>-110,b=>-1,d=>-1} 92ffffff01010001000000 92ffffff0100010001000000 92ffffff0100010001000000 92ffffff0100010001000000 - {c=>-1,a=>-52,b=>0,d=>-1} ccffffff00010001000000 ccffffff0000010001000000 ccffffff0000010001000000 ccffffff0000010001000000 - {c=>0,a=>120,b=>-1,d=>-1} 7800000001000001000000 780000000100000001000000 780000000100000001000000 780000000100000001000000 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>-1,c=>-1,a=>-121,b=>0,d=>-1} 87ffffff00010003000000 87ffffff0000010003000000 87ffffff0000010003000000 87ffffff0000010003000000 - {e=>0,c=>0,a=>-86,b=>0,d=>-1} aaffffff00000001000000 aaffffff0000000001000000 aaffffff0000000001000000 aaffffff0000000001000000 - {e=>-1,c=>0,a=>115,b=>-1,d=>0} 7300000001000002000000 730000000100000002000000 730000000100000002000000 730000000100000002000000 - {e=>-1,c=>-1,a=>26,b=>-1,d=>-1} 1a00000001010003000000 1a0000000100010003000000 1a0000000100010003000000 1a0000000100010003000000 - {e=>-1,c=>-1,a=>-108,b=>-1,d=>-1} 94ffffff01010003000000 94ffffff0100010003000000 94ffffff0100010003000000 94ffffff0100010003000000 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>26,b=>0,d=>-1,f=>-117} 1a000000000100030000008bffffff 1a00000000000100030000008bffffff 1a00000000000100030000008bffffff 1a00000000000100030000008bffffff - {e=>-1,c=>0,a=>-97,b=>0,d=>-1,f=>99} 9fffffff0000000300000063000000 9fffffff000000000300000063000000 9fffffff000000000300000063000000 9fffffff000000000300000063000000 - {e=>0,c=>-1,a=>-23,b=>-1,d=>0,f=>63} e9ffffff010100000000003f000000 e9ffffff01000100000000003f000000 e9ffffff01000100000000003f000000 e9ffffff01000100000000003f000000 - {e=>0,c=>-1,a=>95,b=>0,d=>-1,f=>108} 5f000000000100010000006c000000 5f00000000000100010000006c000000 5f00000000000100010000006c000000 5f00000000000100010000006c000000 - {e=>-1,c=>0,a=>-97,b=>0,d=>0,f=>86} 9fffffff0000000200000056000000 9fffffff000000000200000056000000 9fffffff000000000200000056000000 9fffffff000000000200000056000000 = struct mixed { unsigned char a:1; }; - {a=>1} 01 01 01 01 - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>1} 01 01 01 01 - {a=>0} 00 00 00 00 = struct mixed { unsigned char a:1; signed char b:1; }; - {a=>0,b=>-1} 02 02 02 02 - {a=>1,b=>0} 01 01 01 01 - {a=>0,b=>0} 00 00 00 00 - {a=>1,b=>0} 01 01 01 01 - {a=>1,b=>0} 01 01 01 01 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; }; - {c=>1,a=>0,b=>0} 000100 00000100 00000100 00000100 - {c=>1,a=>1,b=>-1} 030100 03000100 03000100 03000100 - {c=>1,a=>0,b=>0} 000100 00000100 00000100 00000100 - {c=>1,a=>1,b=>-1} 030100 03000100 03000100 03000100 - {c=>1,a=>0,b=>-1} 020100 02000100 02000100 02000100 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; }; - {c=>0,a=>1,b=>0,d=>-1} 010200 01000200 01000200 01000200 - {c=>0,a=>1,b=>0,d=>-1} 010200 01000200 01000200 01000200 - {c=>0,a=>1,b=>-1,d=>0} 030000 03000000 03000000 03000000 - {c=>1,a=>1,b=>-1,d=>0} 030100 03000100 03000100 03000100 - {c=>1,a=>0,b=>-1,d=>-1} 020300 02000300 02000300 02000300 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>0,b=>-1,d=>-1} 02030001000000 0200030001000000 0200030001000000 0200030001000000 - {e=>0,c=>1,a=>1,b=>-1,d=>-1} 03030000000000 0300030000000000 0300030000000000 0300030000000000 - {e=>1,c=>1,a=>0,b=>0,d=>0} 00010001000000 0000010001000000 0000010001000000 0000010001000000 - {e=>0,c=>1,a=>1,b=>0,d=>-1} 01030000000000 0100030000000000 0100030000000000 0100030000000000 - {e=>0,c=>0,a=>1,b=>0,d=>-1} 01020000000000 0100020000000000 0100020000000000 0100020000000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; }; - {e=>0,c=>0,a=>0,b=>0,d=>-1,f=>-1} 00020002000000 0000020002000000 0000020002000000 0000020002000000 - {e=>0,c=>0,a=>1,b=>0,d=>-1,f=>-1} 01020002000000 0100020002000000 0100020002000000 0100020002000000 - {e=>0,c=>1,a=>0,b=>-1,d=>-1,f=>-1} 02030002000000 0200030002000000 0200030002000000 0200030002000000 - {e=>1,c=>0,a=>0,b=>-1,d=>-1,f=>0} 02020001000000 0200020001000000 0200020001000000 0200020001000000 - {e=>0,c=>0,a=>0,b=>0,d=>0,f=>-1} 00000002000000 0000000002000000 0000000002000000 0000000002000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; }; - {e=>0,c=>0,a=>0,g=>0,b=>-1,d=>0,f=>0} 02000000000000 0200000000000000 0200000000000000 0200000000000000 - {e=>1,c=>0,a=>1,g=>0,b=>0,d=>-1,f=>-1} 01020003000000 0100020003000000 0100020003000000 0100020003000000 - {e=>1,c=>0,a=>1,g=>1,b=>0,d=>0,f=>0} 01000005000000 0100000005000000 0100000005000000 0100000005000000 - {e=>0,c=>0,a=>1,g=>0,b=>-1,d=>-1,f=>0} 03020000000000 0300020000000000 0300020000000000 0300020000000000 - {e=>0,c=>1,a=>0,g=>1,b=>-1,d=>0,f=>0} 02010004000000 0200010004000000 0200010004000000 0200010004000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; signed long h:1; }; - {e=>1,a=>1,d=>-1,c=>1,h=>0,b=>-1,g=>1,f=>-1} 03030007000000 0300030007000000 0300030007000000 0300030007000000 - {e=>0,a=>0,d=>-1,c=>1,h=>0,b=>0,g=>0,f=>0} 00030000000000 0000030000000000 0000030000000000 0000030000000000 - {e=>1,a=>0,d=>-1,c=>0,h=>-1,b=>0,g=>1,f=>0} 0002000d000000 000002000d000000 000002000d000000 000002000d000000 - {e=>1,a=>0,d=>-1,c=>0,h=>-1,b=>0,g=>0,f=>0} 00020009000000 0000020009000000 0000020009000000 0000020009000000 - {e=>1,a=>1,d=>0,c=>1,h=>0,b=>-1,g=>0,f=>0} 03010001000000 0300010001000000 0300010001000000 0300010001000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; signed long h:1; unsigned char i; }; - {e=>1,a=>0,d=>-1,c=>1,h=>-1,b=>-1,g=>0,f=>-1,i=>162} 0203000b000000a2 020003000b000000a200 020003000b000000a2000000 020003000b000000a2000000 - {e=>1,a=>1,d=>0,c=>0,h=>0,b=>-1,g=>0,f=>0,i=>113} 0300000100000071 03000000010000007100 030000000100000071000000 030000000100000071000000 - {e=>0,a=>1,d=>0,c=>1,h=>0,b=>0,g=>1,f=>-1,i=>177} 01010006000000b1 0100010006000000b100 0100010006000000b1000000 0100010006000000b1000000 - {e=>0,a=>1,d=>-1,c=>1,h=>0,b=>0,g=>1,f=>-1,i=>254} 01030006000000fe 0100030006000000fe00 0100030006000000fe000000 0100030006000000fe000000 - {e=>1,a=>0,d=>-1,c=>0,h=>0,b=>0,g=>0,f=>-1,i=>196} 00020003000000c4 0000020003000000c400 0000020003000000c4000000 0000020003000000c4000000 = struct mixed { char a; unsigned char b:1; }; - {a=>59,b=>1} 3b01 3b01 3b01 3b01 - {a=>126,b=>1} 7e01 7e01 7e01 7e01 - {a=>58,b=>1} 3a01 3a01 3a01 3a01 - {a=>84,b=>0} 5400 5400 5400 5400 - {a=>-59,b=>1} c501 c501 c501 c501 = struct mixed { char a; unsigned char b:1; signed char c:1; }; - {c=>0,a=>-8,b=>1} f801 f801 f801 f801 - {c=>-1,a=>-61,b=>1} c303 c303 c303 c303 - {c=>0,a=>38,b=>0} 2600 2600 2600 2600 - {c=>0,a=>103,b=>1} 6701 6701 6701 6701 - {c=>0,a=>-74,b=>0} b600 b600 b600 b600 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>-1,a=>-94,b=>0,d=>0} a2020000 a2020000 a2020000 a2020000 - {c=>0,a=>18,b=>1,d=>0} 12010000 12010000 12010000 12010000 - {c=>0,a=>83,b=>1,d=>1} 53010100 53010100 53010100 53010100 - {c=>-1,a=>41,b=>1,d=>1} 29030100 29030100 29030100 29030100 - {c=>-1,a=>28,b=>0,d=>1} 1c020100 1c020100 1c020100 1c020100 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>-1,a=>112,b=>1,d=>0} 70030000 70030000 70030000 70030000 - {e=>-1,c=>0,a=>72,b=>1,d=>1} 48010300 48010300 48010300 48010300 - {e=>-1,c=>0,a=>33,b=>0,d=>1} 21000300 21000300 21000300 21000300 - {e=>-1,c=>-1,a=>57,b=>1,d=>0} 39030200 39030200 39030200 39030200 - {e=>0,c=>0,a=>99,b=>1,d=>1} 63010100 63010100 63010100 63010100 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>0,a=>-16,b=>0,d=>0,f=>1} f000000001000000 f000000001000000 f000000001000000 f000000001000000 - {e=>0,c=>0,a=>35,b=>0,d=>1,f=>1} 2300010001000000 2300010001000000 2300010001000000 2300010001000000 - {e=>0,c=>-1,a=>24,b=>1,d=>0,f=>1} 1803000001000000 1803000001000000 1803000001000000 1803000001000000 - {e=>-1,c=>0,a=>-56,b=>0,d=>1,f=>1} c800030001000000 c800030001000000 c800030001000000 c800030001000000 - {e=>0,c=>0,a=>-67,b=>1,d=>0,f=>0} bd01000000000000 bd01000000000000 bd01000000000000 bd01000000000000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>0,a=>-105,g=>0,b=>0,d=>0,f=>0} 9700020000000000 9700020000000000 9700020000000000 9700020000000000 - {e=>0,c=>-1,a=>101,g=>-1,b=>0,d=>0,f=>0} 6502000002000000 6502000002000000 6502000002000000 6502000002000000 - {e=>0,c=>0,a=>-86,g=>-1,b=>0,d=>1,f=>0} aa00010002000000 aa00010002000000 aa00010002000000 aa00010002000000 - {e=>0,c=>-1,a=>-47,g=>-1,b=>0,d=>0,f=>0} d102000002000000 d102000002000000 d102000002000000 d102000002000000 - {e=>0,c=>0,a=>117,g=>-1,b=>1,d=>0,f=>0} 7501000002000000 7501000002000000 7501000002000000 7501000002000000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>77,d=>0,c=>0,h=>0,b=>1,g=>0,f=>1} 4d01020001000000 4d01020001000000 4d01020001000000 4d01020001000000 - {e=>-1,a=>-38,d=>1,c=>-1,h=>1,b=>0,g=>0,f=>0} da02030004000000 da02030004000000 da02030004000000 da02030004000000 - {e=>-1,a=>-89,d=>0,c=>0,h=>1,b=>1,g=>-1,f=>1} a701020007000000 a701020007000000 a701020007000000 a701020007000000 - {e=>0,a=>-55,d=>1,c=>-1,h=>1,b=>1,g=>-1,f=>1} c903010007000000 c903010007000000 c903010007000000 c903010007000000 - {e=>0,a=>76,d=>0,c=>-1,h=>0,b=>0,g=>-1,f=>1} 4c02000003000000 4c02000003000000 4c02000003000000 4c02000003000000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>0,a=>51,d=>1,c=>0,h=>1,b=>1,g=>-1,f=>0,i=>-1} 330101000e000000 330101000e000000 330101000e000000 330101000e000000 - {e=>0,a=>101,d=>0,c=>-1,h=>1,b=>0,g=>-1,f=>0,i=>-1} 650200000e000000 650200000e000000 650200000e000000 650200000e000000 - {e=>0,a=>-74,d=>1,c=>-1,h=>0,b=>0,g=>0,f=>0,i=>0} b602010000000000 b602010000000000 b602010000000000 b602010000000000 - {e=>0,a=>124,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 7c03010009000000 7c03010009000000 7c03010009000000 7c03010009000000 - {e=>-1,a=>24,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} 1803020001000000 1803020001000000 1803020001000000 1803020001000000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-115,d=>0,j=>73,c=>-1,h=>1,b=>0,g=>0,f=>0,i=>-1} 8d0202000c00000049 8d0202000c0000004900 8d0202000c00000049000000 8d0202000c00000049000000 - {e=>0,a=>112,d=>0,j=>186,c=>0,h=>1,b=>0,g=>0,f=>1,i=>0} 7000000005000000ba 7000000005000000ba00 7000000005000000ba000000 7000000005000000ba000000 - {e=>0,a=>27,d=>0,j=>247,c=>-1,h=>1,b=>1,g=>0,f=>1,i=>0} 1b03000005000000f7 1b03000005000000f700 1b03000005000000f7000000 1b03000005000000f7000000 - {e=>-1,a=>0,d=>1,j=>68,c=>-1,h=>1,b=>0,g=>0,f=>0,i=>0} 000203000400000044 00020300040000004400 000203000400000044000000 000203000400000044000000 - {e=>-1,a=>116,d=>0,j=>30,c=>-1,h=>1,b=>0,g=>-1,f=>1,i=>0} 74020200070000001e 74020200070000001e00 74020200070000001e000000 74020200070000001e000000 = struct mixed { short a; unsigned char b:1; }; - {a=>43,b=>0} 2b0000 2b000000 2b000000 2b000000 - {a=>-77,b=>0} b3ff00 b3ff0000 b3ff0000 b3ff0000 - {a=>-127,b=>0} 81ff00 81ff0000 81ff0000 81ff0000 - {a=>-70,b=>0} baff00 baff0000 baff0000 baff0000 - {a=>-21,b=>0} ebff00 ebff0000 ebff0000 ebff0000 = struct mixed { short a; unsigned char b:1; signed char c:1; }; - {c=>0,a=>1,b=>1} 010001 01000100 01000100 01000100 - {c=>-1,a=>-65,b=>0} bfff02 bfff0200 bfff0200 bfff0200 - {c=>0,a=>-122,b=>0} 86ff00 86ff0000 86ff0000 86ff0000 - {c=>-1,a=>-8,b=>1} f8ff03 f8ff0300 f8ff0300 f8ff0300 - {c=>-1,a=>50,b=>1} 320003 32000300 32000300 32000300 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>0,a=>24,b=>1,d=>1} 1800010100 180001000100 180001000100 180001000100 - {c=>0,a=>-41,b=>0,d=>1} d7ff000100 d7ff00000100 d7ff00000100 d7ff00000100 - {c=>-1,a=>-82,b=>0,d=>0} aeff020000 aeff02000000 aeff02000000 aeff02000000 - {c=>0,a=>124,b=>1,d=>0} 7c00010000 7c0001000000 7c0001000000 7c0001000000 - {c=>0,a=>-85,b=>0,d=>1} abff000100 abff00000100 abff00000100 abff00000100 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>-1,c=>0,a=>92,b=>1,d=>0} 5c00010200 5c0001000200 5c0001000200 5c0001000200 - {e=>0,c=>0,a=>104,b=>1,d=>0} 6800010000 680001000000 680001000000 680001000000 - {e=>-1,c=>-1,a=>-96,b=>1,d=>0} a0ff030200 a0ff03000200 a0ff03000200 a0ff03000200 - {e=>0,c=>0,a=>-66,b=>0,d=>1} beff000100 beff00000100 beff00000100 beff00000100 - {e=>0,c=>0,a=>126,b=>0,d=>0} 7e00000000 7e0000000000 7e0000000000 7e0000000000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>0,a=>-15,b=>1,d=>1,f=>1} f1ff01010001000000 f1ff0100010001000000 f1ff01000100000001000000 f1ff01000100000001000000 - {e=>-1,c=>-1,a=>15,b=>0,d=>0,f=>1} 0f0002020001000000 0f000200020001000000 0f0002000200000001000000 0f0002000200000001000000 - {e=>-1,c=>-1,a=>75,b=>1,d=>1,f=>1} 4b0003030001000000 4b000300030001000000 4b0003000300000001000000 4b0003000300000001000000 - {e=>0,c=>0,a=>127,b=>0,d=>0,f=>1} 7f0000000001000000 7f000000000001000000 7f0000000000000001000000 7f0000000000000001000000 - {e=>-1,c=>-1,a=>0,b=>0,d=>0,f=>0} 000002020000000000 00000200020000000000 000002000200000000000000 000002000200000000000000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>0,a=>-96,g=>0,b=>0,d=>1,f=>0} a0ff00030000000000 a0ff0000030000000000 a0ff00000300000000000000 a0ff00000300000000000000 - {e=>-1,c=>-1,a=>-116,g=>-1,b=>0,d=>1,f=>1} 8cff02030003000000 8cff0200030003000000 8cff02000300000003000000 8cff02000300000003000000 - {e=>0,c=>0,a=>16,g=>0,b=>1,d=>0,f=>1} 100001000001000000 10000100000001000000 100001000000000001000000 100001000000000001000000 - {e=>-1,c=>0,a=>108,g=>-1,b=>1,d=>0,f=>1} 6c0001020003000000 6c000100020003000000 6c0001000200000003000000 6c0001000200000003000000 - {e=>-1,c=>0,a=>89,g=>0,b=>1,d=>1,f=>0} 590001030000000000 59000100030000000000 590001000300000000000000 590001000300000000000000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>0,a=>-94,d=>1,c=>0,h=>1,b=>0,g=>0,f=>0} a2ff00010004000000 a2ff0000010004000000 a2ff00000100000004000000 a2ff00000100000004000000 - {e=>-1,a=>-38,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>1} daff01030003000000 daff0100030003000000 daff01000300000003000000 daff01000300000003000000 - {e=>0,a=>-42,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>0} d6ff00000002000000 d6ff0000000002000000 d6ff00000000000002000000 d6ff00000000000002000000 - {e=>0,a=>-80,d=>0,c=>0,h=>1,b=>0,g=>0,f=>0} b0ff00000004000000 b0ff0000000004000000 b0ff00000000000004000000 b0ff00000000000004000000 - {e=>0,a=>-7,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1} f9ff01000005000000 f9ff0100000005000000 f9ff01000000000005000000 f9ff01000000000005000000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>-1,a=>106,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} 6a0003030001000000 6a000300030001000000 6a0003000300000001000000 6a0003000300000001000000 - {e=>0,a=>10,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>-1} 0a000000000e000000 0a00000000000e000000 0a000000000000000e000000 0a000000000000000e000000 - {e=>-1,a=>93,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0,i=>0} 5d0000030000000000 5d000000030000000000 5d0000000300000000000000 5d0000000300000000000000 - {e=>-1,a=>-24,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1,i=>0} e8ff01020005000000 e8ff0100020005000000 e8ff01000200000005000000 e8ff01000200000005000000 - {e=>0,a=>-98,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>1,i=>-1} 9eff0000000f000000 9eff000000000f000000 9eff0000000000000f000000 9eff0000000000000f000000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-30,d=>0,j=>167,c=>0,h=>1,b=>1,g=>0,f=>0,i=>0} e2ff01020004000000a7 e2ff0100020004000000a700 e2ff01000200000004000000a7000000 e2ff01000200000004000000a7000000 - {e=>0,a=>34,d=>1,j=>13,c=>0,h=>1,b=>1,g=>0,f=>0,i=>-1} 22000101000c0000000d 2200010001000c0000000d00 22000100010000000c0000000d000000 22000100010000000c0000000d000000 - {e=>-1,a=>-125,d=>0,j=>209,c=>0,h=>0,b=>0,g=>0,f=>0,i=>0} 83ff00020000000000d1 83ff0000020000000000d100 83ff00000200000000000000d1000000 83ff00000200000000000000d1000000 - {e=>0,a=>57,d=>0,j=>197,c=>0,h=>0,b=>0,g=>-1,f=>1,i=>-1} 39000000000b000000c5 3900000000000b000000c500 39000000000000000b000000c5000000 39000000000000000b000000c5000000 - {e=>-1,a=>101,d=>1,j=>141,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 6500030300090000008d 650003000300090000008d00 6500030003000000090000008d000000 6500030003000000090000008d000000 = struct mixed { int a; unsigned char b:1; }; - {a=>59,b=>1} 3b00000001 3b0000000100 3b00000001000000 3b00000001000000 - {a=>25,b=>0} 1900000000 190000000000 1900000000000000 1900000000000000 - {a=>-69,b=>1} bbffffff01 bbffffff0100 bbffffff01000000 bbffffff01000000 - {a=>106,b=>0} 6a00000000 6a0000000000 6a00000000000000 6a00000000000000 - {a=>112,b=>1} 7000000001 700000000100 7000000001000000 7000000001000000 = struct mixed { int a; unsigned char b:1; signed char c:1; }; - {c=>-1,a=>17,b=>0} 1100000002 110000000200 1100000002000000 1100000002000000 - {c=>-1,a=>-75,b=>1} b5ffffff03 b5ffffff0300 b5ffffff03000000 b5ffffff03000000 - {c=>-1,a=>86,b=>0} 5600000002 560000000200 5600000002000000 5600000002000000 - {c=>0,a=>-126,b=>1} 82ffffff01 82ffffff0100 82ffffff01000000 82ffffff01000000 - {c=>-1,a=>49,b=>1} 3100000003 310000000300 3100000003000000 3100000003000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>-1,a=>-126,b=>0,d=>0} 82ffffff020000 82ffffff02000000 82ffffff02000000 82ffffff02000000 - {c=>0,a=>-97,b=>0,d=>1} 9fffffff000100 9fffffff00000100 9fffffff00000100 9fffffff00000100 - {c=>0,a=>25,b=>0,d=>0} 19000000000000 1900000000000000 1900000000000000 1900000000000000 - {c=>0,a=>-28,b=>1,d=>1} e4ffffff010100 e4ffffff01000100 e4ffffff01000100 e4ffffff01000100 - {c=>-1,a=>112,b=>1,d=>0} 70000000030000 7000000003000000 7000000003000000 7000000003000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>-1,a=>122,b=>0,d=>1} 7a000000020100 7a00000002000100 7a00000002000100 7a00000002000100 - {e=>-1,c=>-1,a=>-41,b=>1,d=>0} d7ffffff030200 d7ffffff03000200 d7ffffff03000200 d7ffffff03000200 - {e=>-1,c=>-1,a=>67,b=>0,d=>0} 43000000020200 4300000002000200 4300000002000200 4300000002000200 - {e=>0,c=>0,a=>-109,b=>0,d=>1} 93ffffff000100 93ffffff00000100 93ffffff00000100 93ffffff00000100 - {e=>0,c=>0,a=>-80,b=>1,d=>0} b0ffffff010000 b0ffffff01000000 b0ffffff01000000 b0ffffff01000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>-1,a=>-35,b=>1,d=>0,f=>0} ddffffff03000000000000 ddffffff0300000000000000 ddffffff0300000000000000 ddffffff0300000000000000 - {e=>-1,c=>-1,a=>-61,b=>0,d=>0,f=>0} c3ffffff02020000000000 c3ffffff0200020000000000 c3ffffff0200020000000000 c3ffffff0200020000000000 - {e=>0,c=>0,a=>94,b=>0,d=>0,f=>1} 5e00000000000001000000 5e0000000000000001000000 5e0000000000000001000000 5e0000000000000001000000 - {e=>0,c=>-1,a=>-17,b=>0,d=>0,f=>0} efffffff02000000000000 efffffff0200000000000000 efffffff0200000000000000 efffffff0200000000000000 - {e=>-1,c=>-1,a=>-4,b=>0,d=>1,f=>0} fcffffff02030000000000 fcffffff0200030000000000 fcffffff0200030000000000 fcffffff0200030000000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>-1,a=>66,g=>0,b=>0,d=>0,f=>1} 4200000002020001000000 420000000200020001000000 420000000200020001000000 420000000200020001000000 - {e=>0,c=>-1,a=>88,g=>-1,b=>0,d=>1,f=>1} 5800000002010003000000 580000000200010003000000 580000000200010003000000 580000000200010003000000 - {e=>-1,c=>0,a=>22,g=>0,b=>0,d=>0,f=>0} 1600000000020000000000 160000000000020000000000 160000000000020000000000 160000000000020000000000 - {e=>0,c=>-1,a=>54,g=>-1,b=>0,d=>0,f=>1} 3600000002000003000000 360000000200000003000000 360000000200000003000000 360000000200000003000000 - {e=>-1,c=>-1,a=>98,g=>-1,b=>0,d=>0,f=>0} 6200000002020002000000 620000000200020002000000 620000000200020002000000 620000000200020002000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>-102,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>0} 9affffff01030002000000 9affffff0100030002000000 9affffff0100030002000000 9affffff0100030002000000 - {e=>-1,a=>84,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0} 5400000000030000000000 540000000000030000000000 540000000000030000000000 540000000000030000000000 - {e=>-1,a=>-63,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>0} c1ffffff03030000000000 c1ffffff0300030000000000 c1ffffff0300030000000000 c1ffffff0300030000000000 - {e=>0,a=>-36,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>1} dcffffff01000003000000 dcffffff0100000003000000 dcffffff0100000003000000 dcffffff0100000003000000 - {e=>0,a=>17,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>0} 1100000001000002000000 110000000100000002000000 110000000100000002000000 110000000100000002000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>0,a=>98,d=>1,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>-1} 620000000001000e000000 62000000000001000e000000 62000000000001000e000000 62000000000001000e000000 - {e=>0,a=>-97,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 9fffffff03000009000000 9fffffff0300000009000000 9fffffff0300000009000000 9fffffff0300000009000000 - {e=>-1,a=>15,d=>1,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>0} 0f00000002030001000000 0f0000000200030001000000 0f0000000200030001000000 0f0000000200030001000000 - {e=>-1,a=>-3,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} fdffffff03020001000000 fdffffff0300020001000000 fdffffff0300020001000000 fdffffff0300020001000000 - {e=>0,a=>101,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>1,i=>-1} 650000000001000b000000 65000000000001000b000000 65000000000001000b000000 65000000000001000b000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-121,d=>1,j=>162,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>0} 87ffffff00030006000000a2 87ffffff0000030006000000a200 87ffffff0000030006000000a2000000 87ffffff0000030006000000a2000000 - {e=>0,a=>-14,d=>1,j=>104,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>-1} f2ffffff0201000900000068 f2ffffff02000100090000006800 f2ffffff020001000900000068000000 f2ffffff020001000900000068000000 - {e=>-1,a=>4,d=>0,j=>93,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>0} 04000000020200010000005d 0400000002000200010000005d00 0400000002000200010000005d000000 0400000002000200010000005d000000 - {e=>-1,a=>17,d=>0,j=>133,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} 110000000102000000000085 1100000001000200000000008500 11000000010002000000000085000000 11000000010002000000000085000000 - {e=>0,a=>56,d=>0,j=>65,c=>-1,h=>0,b=>0,g=>-1,f=>0,i=>-1} 380000000200000a00000041 38000000020000000a0000004100 38000000020000000a00000041000000 38000000020000000a00000041000000 = struct mixed { long a; unsigned char b:1; }; - {a=>99,b=>1} 6300000001 630000000100 6300000001000000 6300000001000000 - {a=>8,b=>0} 0800000000 080000000000 0800000000000000 0800000000000000 - {a=>-122,b=>0} 86ffffff00 86ffffff0000 86ffffff00000000 86ffffff00000000 - {a=>-2,b=>1} feffffff01 feffffff0100 feffffff01000000 feffffff01000000 - {a=>102,b=>0} 6600000000 660000000000 6600000000000000 6600000000000000 = struct mixed { long a; unsigned char b:1; signed char c:1; }; - {c=>-1,a=>96,b=>0} 6000000002 600000000200 6000000002000000 6000000002000000 - {c=>-1,a=>59,b=>0} 3b00000002 3b0000000200 3b00000002000000 3b00000002000000 - {c=>-1,a=>120,b=>1} 7800000003 780000000300 7800000003000000 7800000003000000 - {c=>0,a=>-13,b=>1} f3ffffff01 f3ffffff0100 f3ffffff01000000 f3ffffff01000000 - {c=>0,a=>-28,b=>0} e4ffffff00 e4ffffff0000 e4ffffff00000000 e4ffffff00000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>0,a=>109,b=>1,d=>0} 6d000000010000 6d00000001000000 6d00000001000000 6d00000001000000 - {c=>0,a=>107,b=>0,d=>0} 6b000000000000 6b00000000000000 6b00000000000000 6b00000000000000 - {c=>0,a=>28,b=>1,d=>1} 1c000000010100 1c00000001000100 1c00000001000100 1c00000001000100 - {c=>0,a=>72,b=>0,d=>1} 48000000000100 4800000000000100 4800000000000100 4800000000000100 - {c=>0,a=>-52,b=>0,d=>1} ccffffff000100 ccffffff00000100 ccffffff00000100 ccffffff00000100 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>0,a=>25,b=>0,d=>1} 19000000000100 1900000000000100 1900000000000100 1900000000000100 - {e=>-1,c=>-1,a=>59,b=>1,d=>1} 3b000000030300 3b00000003000300 3b00000003000300 3b00000003000300 - {e=>-1,c=>0,a=>124,b=>0,d=>1} 7c000000000300 7c00000000000300 7c00000000000300 7c00000000000300 - {e=>-1,c=>0,a=>74,b=>0,d=>0} 4a000000000200 4a00000000000200 4a00000000000200 4a00000000000200 - {e=>-1,c=>0,a=>-39,b=>0,d=>1} d9ffffff000300 d9ffffff00000300 d9ffffff00000300 d9ffffff00000300 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>-1,c=>-1,a=>-33,b=>0,d=>0,f=>0} dfffffff02020000000000 dfffffff0200020000000000 dfffffff0200020000000000 dfffffff0200020000000000 - {e=>0,c=>0,a=>-57,b=>1,d=>0,f=>0} c7ffffff01000000000000 c7ffffff0100000000000000 c7ffffff0100000000000000 c7ffffff0100000000000000 - {e=>0,c=>-1,a=>-10,b=>0,d=>1,f=>0} f6ffffff02010000000000 f6ffffff0200010000000000 f6ffffff0200010000000000 f6ffffff0200010000000000 - {e=>0,c=>-1,a=>52,b=>0,d=>0,f=>1} 3400000002000001000000 340000000200000001000000 340000000200000001000000 340000000200000001000000 - {e=>-1,c=>0,a=>127,b=>0,d=>0,f=>0} 7f00000000020000000000 7f0000000000020000000000 7f0000000000020000000000 7f0000000000020000000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>0,c=>-1,a=>-7,g=>0,b=>0,d=>0,f=>1} f9ffffff02000001000000 f9ffffff0200000001000000 f9ffffff0200000001000000 f9ffffff0200000001000000 - {e=>0,c=>0,a=>18,g=>-1,b=>1,d=>0,f=>1} 1200000001000003000000 120000000100000003000000 120000000100000003000000 120000000100000003000000 - {e=>-1,c=>-1,a=>84,g=>0,b=>0,d=>1,f=>1} 5400000002030001000000 540000000200030001000000 540000000200030001000000 540000000200030001000000 - {e=>0,c=>-1,a=>21,g=>0,b=>0,d=>1,f=>0} 1500000002010000000000 150000000200010000000000 150000000200010000000000 150000000200010000000000 - {e=>-1,c=>-1,a=>-2,g=>-1,b=>1,d=>0,f=>1} feffffff03020003000000 feffffff0300020003000000 feffffff0300020003000000 feffffff0300020003000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>11,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1} 0b00000001020005000000 0b0000000100020005000000 0b0000000100020005000000 0b0000000100020005000000 - {e=>0,a=>-17,d=>0,c=>0,h=>1,b=>0,g=>0,f=>0} efffffff00000004000000 efffffff0000000004000000 efffffff0000000004000000 efffffff0000000004000000 - {e=>-1,a=>2,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>0} 0200000003030000000000 020000000300030000000000 020000000300030000000000 020000000300030000000000 - {e=>0,a=>6,d=>1,c=>-1,h=>0,b=>1,g=>-1,f=>1} 0600000003010003000000 060000000300010003000000 060000000300010003000000 060000000300010003000000 - {e=>0,a=>103,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>0} 6700000001000002000000 670000000100000002000000 670000000100000002000000 670000000100000002000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>-1,a=>-66,d=>0,c=>0,h=>0,b=>1,g=>0,f=>1,i=>-1} beffffff01020009000000 beffffff0100020009000000 beffffff0100020009000000 beffffff0100020009000000 - {e=>0,a=>-106,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>0} 96ffffff00000006000000 96ffffff0000000006000000 96ffffff0000000006000000 96ffffff0000000006000000 - {e=>-1,a=>-86,d=>0,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} aaffffff01020000000000 aaffffff0100020000000000 aaffffff0100020000000000 aaffffff0100020000000000 - {e=>-1,a=>-98,d=>0,c=>0,h=>0,b=>0,g=>0,f=>1,i=>0} 9effffff00020001000000 9effffff0000020001000000 9effffff0000020001000000 9effffff0000020001000000 - {e=>0,a=>40,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1,i=>0} 2800000001000005000000 280000000100000005000000 280000000100000005000000 280000000100000005000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-49,d=>1,j=>205,c=>0,h=>0,b=>1,g=>0,f=>1,i=>-1} cfffffff01030009000000cd cfffffff0100030009000000cd00 cfffffff0100030009000000cd000000 cfffffff0100030009000000cd000000 - {e=>-1,a=>126,d=>0,j=>0,c=>-1,h=>1,b=>1,g=>-1,f=>0,i=>0} 7e0000000302000600000000 7e00000003000200060000000000 7e000000030002000600000000000000 7e000000030002000600000000000000 - {e=>0,a=>-31,d=>0,j=>105,c=>-1,h=>0,b=>1,g=>0,f=>0,i=>-1} e1ffffff0300000800000069 e1ffffff03000000080000006900 e1ffffff030000000800000069000000 e1ffffff030000000800000069000000 - {e=>-1,a=>-1,d=>1,j=>21,c=>-1,h=>0,b=>1,g=>-1,f=>0,i=>0} ffffffff0303000200000015 ffffffff03000300020000001500 ffffffff030003000200000015000000 ffffffff030003000200000015000000 - {e=>-1,a=>99,d=>0,j=>132,c=>0,h=>0,b=>0,g=>0,f=>1,i=>0} 630000000002000100000084 6300000000000200010000008400 63000000000002000100000084000000 63000000000002000100000084000000 = struct force_align1 { unsigned char a:1; }; - {a=>0} 00 00 00 00 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 = struct force_align1 { unsigned char a:1; unsigned char b:1; }; - {a=>1,b=>1} 03 03 03 03 - {a=>1,b=>1} 03 03 03 03 - {a=>0,b=>1} 02 02 02 02 - {a=>0,b=>1} 02 02 02 02 - {a=>1,b=>1} 03 03 03 03 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; }; - {a=>0,b=>0} 00 00 00 00 - {a=>0,b=>1} 02 02 02 02 - {a=>0,b=>0} 00 00 00 00 - {a=>1,b=>1} 03 03 03 03 - {a=>1,b=>0} 01 01 01 01 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; unsigned char c:1; }; - {c=>1,a=>1,b=>0} 0101 0101 0101 0101 - {c=>1,a=>1,b=>1} 0301 0301 0301 0301 - {c=>0,a=>1,b=>1} 0300 0300 0300 0300 - {c=>0,a=>0,b=>0} 0000 0000 0000 0000 - {c=>0,a=>1,b=>0} 0100 0100 0100 0100 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; unsigned char c:1; unsigned int d; }; - {c=>0,a=>0,b=>1,d=>114} 020072000000 020072000000 0200000072000000 0200000072000000 - {c=>0,a=>1,b=>0,d=>177} 0100b1000000 0100b1000000 01000000b1000000 01000000b1000000 - {c=>1,a=>1,b=>1,d=>163} 0301a3000000 0301a3000000 03010000a3000000 03010000a3000000 - {c=>0,a=>0,b=>1,d=>180} 0200b4000000 0200b4000000 02000000b4000000 02000000b4000000 - {c=>0,a=>1,b=>0,d=>131} 010083000000 010083000000 0100000083000000 0100000083000000 = struct force_align1 { char a; unsigned char b:1; }; - {a=>105,b=>1} 6901 6901 6901 6901 - {a=>-17,b=>1} ef01 ef01 ef01 ef01 - {a=>-128,b=>1} 8001 8001 8001 8001 - {a=>35,b=>0} 2300 2300 2300 2300 - {a=>-120,b=>0} 8800 8800 8800 8800 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>87,b=>0} 5700 5700 5700 5700 - {c=>0,a=>12,b=>1} 0c01 0c01 0c01 0c01 - {c=>0,a=>107,b=>0} 6b00 6b00 6b00 6b00 - {c=>1,a=>-100,b=>0} 9c02 9c02 9c02 9c02 - {c=>1,a=>-61,b=>0} c302 c302 c302 c302 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>0,a=>-59,b=>0} c500 c500 c500 c500 - {c=>0,a=>-128,b=>0} 8000 8000 8000 8000 - {c=>0,a=>-43,b=>1} d501 d501 d501 d501 - {c=>0,a=>55,b=>0} 3700 3700 3700 3700 - {c=>0,a=>-27,b=>1} e501 e501 e501 e501 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>-22,b=>1,d=>0} ea0300 ea0300 ea0300 ea0300 - {c=>1,a=>115,b=>1,d=>0} 730300 730300 730300 730300 - {c=>1,a=>-2,b=>0,d=>0} fe0200 fe0200 fe0200 fe0200 - {c=>0,a=>-40,b=>1,d=>0} d80100 d80100 d80100 d80100 - {c=>1,a=>52,b=>0,d=>0} 340200 340200 340200 340200 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>84,c=>0,a=>-2,b=>1,d=>1} fe010154000000 fe01010054000000 fe01010054000000 fe01010054000000 - {e=>26,c=>1,a=>-22,b=>0,d=>1} ea02011a000000 ea0201001a000000 ea0201001a000000 ea0201001a000000 - {e=>229,c=>0,a=>-4,b=>1,d=>0} fc0100e5000000 fc010000e5000000 fc010000e5000000 fc010000e5000000 - {e=>140,c=>0,a=>-121,b=>0,d=>1} 8700018c000000 870001008c000000 870001008c000000 870001008c000000 - {e=>135,c=>0,a=>23,b=>0,d=>0} 17000087000000 1700000087000000 1700000087000000 1700000087000000 = struct force_align1 { short a; unsigned char b:1; }; - {a=>108,b=>1} 6c0001 6c000100 6c000100 6c000100 - {a=>-114,b=>0} 8eff00 8eff0000 8eff0000 8eff0000 - {a=>64,b=>1} 400001 40000100 40000100 40000100 - {a=>19,b=>1} 130001 13000100 13000100 13000100 - {a=>-123,b=>0} 85ff00 85ff0000 85ff0000 85ff0000 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>-11,b=>1} f5ff01 f5ff0100 f5ff0100 f5ff0100 - {c=>1,a=>90,b=>0} 5a0002 5a000200 5a000200 5a000200 - {c=>0,a=>107,b=>0} 6b0000 6b000000 6b000000 6b000000 - {c=>0,a=>-75,b=>1} b5ff01 b5ff0100 b5ff0100 b5ff0100 - {c=>1,a=>-80,b=>0} b0ff02 b0ff0200 b0ff0200 b0ff0200 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>1,a=>105,b=>1} 690003 69000300 69000300 69000300 - {c=>0,a=>49,b=>1} 310001 31000100 31000100 31000100 - {c=>1,a=>37,b=>0} 250002 25000200 25000200 25000200 - {c=>0,a=>-82,b=>0} aeff00 aeff0000 aeff0000 aeff0000 - {c=>1,a=>-88,b=>1} a8ff03 a8ff0300 a8ff0300 a8ff0300 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>0,a=>-121,b=>1,d=>0} 87ff0100 87ff0100 87ff0100 87ff0100 - {c=>1,a=>80,b=>0,d=>1} 50000201 50000201 50000201 50000201 - {c=>0,a=>-79,b=>1,d=>1} b1ff0101 b1ff0101 b1ff0101 b1ff0101 - {c=>0,a=>106,b=>1,d=>0} 6a000100 6a000100 6a000100 6a000100 - {c=>1,a=>113,b=>0,d=>1} 71000201 71000201 71000201 71000201 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>56,c=>0,a=>80,b=>0,d=>0} 5000000038000000 5000000038000000 5000000038000000 5000000038000000 - {e=>189,c=>1,a=>6,b=>1,d=>1} 06000301bd000000 06000301bd000000 06000301bd000000 06000301bd000000 - {e=>198,c=>1,a=>-106,b=>0,d=>0} 96ff0200c6000000 96ff0200c6000000 96ff0200c6000000 96ff0200c6000000 - {e=>167,c=>1,a=>-17,b=>1,d=>0} efff0300a7000000 efff0300a7000000 efff0300a7000000 efff0300a7000000 - {e=>89,c=>0,a=>-78,b=>1,d=>0} b2ff010059000000 b2ff010059000000 b2ff010059000000 b2ff010059000000 = struct force_align1 { int a; unsigned char b:1; }; - {a=>19,b=>1} 1300000001 130000000100 1300000001000000 1300000001000000 - {a=>79,b=>0} 4f00000000 4f0000000000 4f00000000000000 4f00000000000000 - {a=>-101,b=>1} 9bffffff01 9bffffff0100 9bffffff01000000 9bffffff01000000 - {a=>11,b=>1} 0b00000001 0b0000000100 0b00000001000000 0b00000001000000 - {a=>79,b=>0} 4f00000000 4f0000000000 4f00000000000000 4f00000000000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-25,b=>0} e7ffffff02 e7ffffff0200 e7ffffff02000000 e7ffffff02000000 - {c=>1,a=>-98,b=>0} 9effffff02 9effffff0200 9effffff02000000 9effffff02000000 - {c=>0,a=>-118,b=>0} 8affffff00 8affffff0000 8affffff00000000 8affffff00000000 - {c=>1,a=>-46,b=>1} d2ffffff03 d2ffffff0300 d2ffffff03000000 d2ffffff03000000 - {c=>0,a=>92,b=>0} 5c00000000 5c0000000000 5c00000000000000 5c00000000000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>0,a=>27,b=>1} 1b00000001 1b0000000100 1b00000001000000 1b00000001000000 - {c=>1,a=>71,b=>1} 4700000003 470000000300 4700000003000000 4700000003000000 - {c=>0,a=>53,b=>0} 3500000000 350000000000 3500000000000000 3500000000000000 - {c=>0,a=>-126,b=>1} 82ffffff01 82ffffff0100 82ffffff01000000 82ffffff01000000 - {c=>0,a=>-59,b=>1} c5ffffff01 c5ffffff0100 c5ffffff01000000 c5ffffff01000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>49,b=>1,d=>0} 310000000300 310000000300 3100000003000000 3100000003000000 - {c=>1,a=>-97,b=>0,d=>0} 9fffffff0200 9fffffff0200 9fffffff02000000 9fffffff02000000 - {c=>1,a=>114,b=>1,d=>1} 720000000301 720000000301 7200000003010000 7200000003010000 - {c=>0,a=>-38,b=>1,d=>0} daffffff0100 daffffff0100 daffffff01000000 daffffff01000000 - {c=>0,a=>-74,b=>0,d=>0} b6ffffff0000 b6ffffff0000 b6ffffff00000000 b6ffffff00000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>174,c=>0,a=>102,b=>0,d=>1} 660000000001ae000000 660000000001ae000000 6600000000010000ae000000 6600000000010000ae000000 - {e=>77,c=>1,a=>85,b=>0,d=>0} 5500000002004d000000 5500000002004d000000 55000000020000004d000000 55000000020000004d000000 - {e=>97,c=>1,a=>-95,b=>0,d=>1} a1ffffff020161000000 a1ffffff020161000000 a1ffffff0201000061000000 a1ffffff0201000061000000 - {e=>21,c=>1,a=>-30,b=>0,d=>1} e2ffffff020115000000 e2ffffff020115000000 e2ffffff0201000015000000 e2ffffff0201000015000000 - {e=>169,c=>0,a=>-9,b=>1,d=>0} f7ffffff0100a9000000 f7ffffff0100a9000000 f7ffffff01000000a9000000 f7ffffff01000000a9000000 = struct force_align1 { long a; unsigned char b:1; }; - {a=>67,b=>0} 4300000000 430000000000 4300000000000000 4300000000000000 - {a=>122,b=>0} 7a00000000 7a0000000000 7a00000000000000 7a00000000000000 - {a=>104,b=>0} 6800000000 680000000000 6800000000000000 6800000000000000 - {a=>-99,b=>0} 9dffffff00 9dffffff0000 9dffffff00000000 9dffffff00000000 - {a=>-11,b=>1} f5ffffff01 f5ffffff0100 f5ffffff01000000 f5ffffff01000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-95,b=>0} a1ffffff02 a1ffffff0200 a1ffffff02000000 a1ffffff02000000 - {c=>0,a=>74,b=>1} 4a00000001 4a0000000100 4a00000001000000 4a00000001000000 - {c=>0,a=>31,b=>1} 1f00000001 1f0000000100 1f00000001000000 1f00000001000000 - {c=>0,a=>-31,b=>1} e1ffffff01 e1ffffff0100 e1ffffff01000000 e1ffffff01000000 - {c=>0,a=>47,b=>1} 2f00000001 2f0000000100 2f00000001000000 2f00000001000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>1,a=>-52,b=>0} ccffffff02 ccffffff0200 ccffffff02000000 ccffffff02000000 - {c=>1,a=>9,b=>0} 0900000002 090000000200 0900000002000000 0900000002000000 - {c=>1,a=>9,b=>1} 0900000003 090000000300 0900000003000000 0900000003000000 - {c=>1,a=>32,b=>1} 2000000003 200000000300 2000000003000000 2000000003000000 - {c=>1,a=>-30,b=>0} e2ffffff02 e2ffffff0200 e2ffffff02000000 e2ffffff02000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>-45,b=>1,d=>0} d3ffffff0300 d3ffffff0300 d3ffffff03000000 d3ffffff03000000 - {c=>0,a=>44,b=>0,d=>0} 2c0000000000 2c0000000000 2c00000000000000 2c00000000000000 - {c=>1,a=>88,b=>1,d=>1} 580000000301 580000000301 5800000003010000 5800000003010000 - {c=>1,a=>99,b=>0,d=>0} 630000000200 630000000200 6300000002000000 6300000002000000 - {c=>1,a=>94,b=>1,d=>0} 5e0000000300 5e0000000300 5e00000003000000 5e00000003000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>84,c=>1,a=>-57,b=>0,d=>1} c7ffffff020154000000 c7ffffff020154000000 c7ffffff0201000054000000 c7ffffff0201000054000000 - {e=>202,c=>0,a=>-67,b=>0,d=>1} bdffffff0001ca000000 bdffffff0001ca000000 bdffffff00010000ca000000 bdffffff00010000ca000000 - {e=>108,c=>0,a=>108,b=>1,d=>0} 6c00000001006c000000 6c00000001006c000000 6c000000010000006c000000 6c000000010000006c000000 - {e=>5,c=>0,a=>51,b=>1,d=>0} 33000000010005000000 33000000010005000000 330000000100000005000000 330000000100000005000000 - {e=>228,c=>0,a=>-15,b=>0,d=>0} f1ffffff0000e4000000 f1ffffff0000e4000000 f1ffffff00000000e4000000 f1ffffff00000000e4000000 = struct force_align2 { unsigned char a:2; }; - {a=>2} 02 02 02 02 - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>3} 03 03 03 03 - {a=>3} 03 03 03 03 = struct force_align2 { unsigned char a:2; unsigned char b:2; }; - {a=>0,b=>3} 0c 0c 0c 0c - {a=>0,b=>1} 04 04 04 04 - {a=>2,b=>3} 0e 0e 0e 0e - {a=>2,b=>1} 06 06 06 06 - {a=>3,b=>3} 0f 0f 0f 0f = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; }; - {a=>0,b=>0} 00 00 00 00 - {a=>0,b=>1} 04 04 04 04 - {a=>1,b=>3} 0d 0d 0d 0d - {a=>2,b=>0} 02 02 02 02 - {a=>0,b=>2} 08 08 08 08 = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; unsigned char c:2; }; - {c=>1,a=>1,b=>3} 0d01 0d01 0d01 0d01 - {c=>2,a=>2,b=>1} 0602 0602 0602 0602 - {c=>1,a=>2,b=>0} 0201 0201 0201 0201 - {c=>2,a=>3,b=>3} 0f02 0f02 0f02 0f02 - {c=>0,a=>1,b=>3} 0d00 0d00 0d00 0d00 = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; unsigned char c:2; unsigned short d; }; - {c=>0,a=>1,b=>0,d=>112} 01007000 01007000 01007000 01007000 - {c=>0,a=>3,b=>3,d=>128} 0f008000 0f008000 0f008000 0f008000 - {c=>1,a=>2,b=>0,d=>190} 0201be00 0201be00 0201be00 0201be00 - {c=>0,a=>3,b=>2,d=>63} 0b003f00 0b003f00 0b003f00 0b003f00 - {c=>2,a=>2,b=>2,d=>241} 0a02f100 0a02f100 0a02f100 0a02f100 = struct force_align2 { char a; unsigned char b:2; }; - {a=>74,b=>1} 4a01 4a01 4a01 4a01 - {a=>-7,b=>1} f901 f901 f901 f901 - {a=>102,b=>1} 6601 6601 6601 6601 - {a=>10,b=>3} 0a03 0a03 0a03 0a03 - {a=>-7,b=>2} f902 f902 f902 f902 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; }; - {c=>3,a=>7,b=>1} 070d 070d 070d 070d - {c=>3,a=>50,b=>0} 320c 320c 320c 320c - {c=>2,a=>-125,b=>0} 8308 8308 8308 8308 - {c=>2,a=>-32,b=>0} e008 e008 e008 e008 - {c=>1,a=>68,b=>0} 4404 4404 4404 4404 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>2,a=>-127,b=>0} 8108 8108 8108 8108 - {c=>1,a=>-27,b=>0} e504 e504 e504 e504 - {c=>2,a=>30,b=>1} 1e09 1e09 1e09 1e09 - {c=>0,a=>-25,b=>1} e701 e701 e701 e701 - {c=>2,a=>-15,b=>1} f109 f109 f109 f109 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>1,a=>75,b=>1,d=>2} 4b0502 4b0502 4b0502 4b0502 - {c=>1,a=>18,b=>1,d=>3} 120503 120503 120503 120503 - {c=>2,a=>-39,b=>2,d=>0} d90a00 d90a00 d90a00 d90a00 - {c=>3,a=>-91,b=>2,d=>0} a50e00 a50e00 a50e00 a50e00 - {c=>1,a=>60,b=>1,d=>0} 3c0500 3c0500 3c0500 3c0500 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>11,c=>2,a=>39,b=>0,d=>2} 2708020b00 270802000b00 270802000b00 270802000b00 - {e=>219,c=>0,a=>42,b=>3,d=>1} 2a0301db00 2a030100db00 2a030100db00 2a030100db00 - {e=>154,c=>0,a=>-14,b=>1,d=>1} f201019a00 f20101009a00 f20101009a00 f20101009a00 - {e=>86,c=>1,a=>20,b=>3,d=>1} 1407015600 140701005600 140701005600 140701005600 - {e=>7,c=>0,a=>-109,b=>1,d=>1} 9301010700 930101000700 930101000700 930101000700 = struct force_align2 { short a; unsigned char b:2; }; - {a=>-77,b=>0} b3ff00 b3ff0000 b3ff0000 b3ff0000 - {a=>32,b=>1} 200001 20000100 20000100 20000100 - {a=>-116,b=>3} 8cff03 8cff0300 8cff0300 8cff0300 - {a=>127,b=>2} 7f0002 7f000200 7f000200 7f000200 - {a=>47,b=>2} 2f0002 2f000200 2f000200 2f000200 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; }; - {c=>1,a=>-56,b=>2} c8ff06 c8ff0600 c8ff0600 c8ff0600 - {c=>1,a=>96,b=>0} 600004 60000400 60000400 60000400 - {c=>1,a=>-89,b=>1} a7ff05 a7ff0500 a7ff0500 a7ff0500 - {c=>1,a=>-121,b=>1} 87ff05 87ff0500 87ff0500 87ff0500 - {c=>2,a=>80,b=>3} 50000b 50000b00 50000b00 50000b00 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>0,a=>-50,b=>1} ceff01 ceff0100 ceff0100 ceff0100 - {c=>3,a=>26,b=>0} 1a000c 1a000c00 1a000c00 1a000c00 - {c=>2,a=>-116,b=>2} 8cff0a 8cff0a00 8cff0a00 8cff0a00 - {c=>3,a=>-72,b=>2} b8ff0e b8ff0e00 b8ff0e00 b8ff0e00 - {c=>1,a=>87,b=>2} 570006 57000600 57000600 57000600 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>0,a=>-94,b=>1,d=>3} a2ff0103 a2ff0103 a2ff0103 a2ff0103 - {c=>0,a=>-117,b=>0,d=>1} 8bff0001 8bff0001 8bff0001 8bff0001 - {c=>2,a=>18,b=>2,d=>2} 12000a02 12000a02 12000a02 12000a02 - {c=>3,a=>-15,b=>0,d=>0} f1ff0c00 f1ff0c00 f1ff0c00 f1ff0c00 - {c=>0,a=>-39,b=>2,d=>3} d9ff0203 d9ff0203 d9ff0203 d9ff0203 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>213,c=>2,a=>98,b=>3,d=>0} 62000b00d500 62000b00d500 62000b00d500 62000b00d500 - {e=>183,c=>3,a=>104,b=>2,d=>0} 68000e00b700 68000e00b700 68000e00b700 68000e00b700 - {e=>152,c=>3,a=>68,b=>3,d=>1} 44000f019800 44000f019800 44000f019800 44000f019800 - {e=>117,c=>0,a=>83,b=>2,d=>1} 530002017500 530002017500 530002017500 530002017500 - {e=>183,c=>0,a=>-82,b=>3,d=>3} aeff0303b700 aeff0303b700 aeff0303b700 aeff0303b700 = struct force_align2 { int a; unsigned char b:2; }; - {a=>-20,b=>3} ecffffff03 ecffffff0300 ecffffff03000000 ecffffff03000000 - {a=>123,b=>1} 7b00000001 7b0000000100 7b00000001000000 7b00000001000000 - {a=>-106,b=>0} 96ffffff00 96ffffff0000 96ffffff00000000 96ffffff00000000 - {a=>6,b=>3} 0600000003 060000000300 0600000003000000 0600000003000000 - {a=>60,b=>0} 3c00000000 3c0000000000 3c00000000000000 3c00000000000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; }; - {c=>2,a=>55,b=>0} 3700000008 370000000800 3700000008000000 3700000008000000 - {c=>2,a=>-128,b=>3} 80ffffff0b 80ffffff0b00 80ffffff0b000000 80ffffff0b000000 - {c=>3,a=>-119,b=>3} 89ffffff0f 89ffffff0f00 89ffffff0f000000 89ffffff0f000000 - {c=>2,a=>46,b=>0} 2e00000008 2e0000000800 2e00000008000000 2e00000008000000 - {c=>2,a=>-13,b=>2} f3ffffff0a f3ffffff0a00 f3ffffff0a000000 f3ffffff0a000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>3,a=>-72,b=>3} b8ffffff0f b8ffffff0f00 b8ffffff0f000000 b8ffffff0f000000 - {c=>3,a=>31,b=>0} 1f0000000c 1f0000000c00 1f0000000c000000 1f0000000c000000 - {c=>0,a=>105,b=>1} 6900000001 690000000100 6900000001000000 6900000001000000 - {c=>2,a=>74,b=>1} 4a00000009 4a0000000900 4a00000009000000 4a00000009000000 - {c=>0,a=>12,b=>1} 0c00000001 0c0000000100 0c00000001000000 0c00000001000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>2,a=>-93,b=>0,d=>3} a3ffffff0803 a3ffffff0803 a3ffffff08030000 a3ffffff08030000 - {c=>0,a=>-88,b=>2,d=>0} a8ffffff0200 a8ffffff0200 a8ffffff02000000 a8ffffff02000000 - {c=>0,a=>89,b=>3,d=>0} 590000000300 590000000300 5900000003000000 5900000003000000 - {c=>1,a=>-61,b=>2,d=>1} c3ffffff0601 c3ffffff0601 c3ffffff06010000 c3ffffff06010000 - {c=>0,a=>-21,b=>0,d=>1} ebffffff0001 ebffffff0001 ebffffff00010000 ebffffff00010000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>23,c=>0,a=>-79,b=>1,d=>3} b1ffffff01031700 b1ffffff01031700 b1ffffff01031700 b1ffffff01031700 - {e=>106,c=>2,a=>-36,b=>0,d=>0} dcffffff08006a00 dcffffff08006a00 dcffffff08006a00 dcffffff08006a00 - {e=>139,c=>3,a=>114,b=>3,d=>3} 720000000f038b00 720000000f038b00 720000000f038b00 720000000f038b00 - {e=>151,c=>2,a=>-110,b=>0,d=>3} 92ffffff08039700 92ffffff08039700 92ffffff08039700 92ffffff08039700 - {e=>15,c=>1,a=>-72,b=>0,d=>3} b8ffffff04030f00 b8ffffff04030f00 b8ffffff04030f00 b8ffffff04030f00 = struct force_align2 { long a; unsigned char b:2; }; - {a=>-86,b=>1} aaffffff01 aaffffff0100 aaffffff01000000 aaffffff01000000 - {a=>-16,b=>0} f0ffffff00 f0ffffff0000 f0ffffff00000000 f0ffffff00000000 - {a=>-65,b=>2} bfffffff02 bfffffff0200 bfffffff02000000 bfffffff02000000 - {a=>2,b=>2} 0200000002 020000000200 0200000002000000 0200000002000000 - {a=>-85,b=>2} abffffff02 abffffff0200 abffffff02000000 abffffff02000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; }; - {c=>3,a=>-105,b=>2} 97ffffff0e 97ffffff0e00 97ffffff0e000000 97ffffff0e000000 - {c=>1,a=>14,b=>1} 0e00000005 0e0000000500 0e00000005000000 0e00000005000000 - {c=>1,a=>-120,b=>2} 88ffffff06 88ffffff0600 88ffffff06000000 88ffffff06000000 - {c=>2,a=>67,b=>3} 430000000b 430000000b00 430000000b000000 430000000b000000 - {c=>1,a=>85,b=>0} 5500000004 550000000400 5500000004000000 5500000004000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>1,a=>113,b=>1} 7100000005 710000000500 7100000005000000 7100000005000000 - {c=>0,a=>-59,b=>2} c5ffffff02 c5ffffff0200 c5ffffff02000000 c5ffffff02000000 - {c=>2,a=>115,b=>1} 7300000009 730000000900 7300000009000000 7300000009000000 - {c=>1,a=>-97,b=>3} 9fffffff07 9fffffff0700 9fffffff07000000 9fffffff07000000 - {c=>2,a=>38,b=>2} 260000000a 260000000a00 260000000a000000 260000000a000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>2,a=>14,b=>0,d=>0} 0e0000000800 0e0000000800 0e00000008000000 0e00000008000000 - {c=>3,a=>-56,b=>0,d=>3} c8ffffff0c03 c8ffffff0c03 c8ffffff0c030000 c8ffffff0c030000 - {c=>1,a=>84,b=>0,d=>2} 540000000402 540000000402 5400000004020000 5400000004020000 - {c=>1,a=>-54,b=>2,d=>0} caffffff0600 caffffff0600 caffffff06000000 caffffff06000000 - {c=>0,a=>61,b=>2,d=>0} 3d0000000200 3d0000000200 3d00000002000000 3d00000002000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>109,c=>0,a=>66,b=>0,d=>1} 4200000000016d00 4200000000016d00 4200000000016d00 4200000000016d00 - {e=>167,c=>2,a=>-15,b=>2,d=>0} f1ffffff0a00a700 f1ffffff0a00a700 f1ffffff0a00a700 f1ffffff0a00a700 - {e=>39,c=>1,a=>92,b=>1,d=>3} 5c00000005032700 5c00000005032700 5c00000005032700 5c00000005032700 - {e=>135,c=>3,a=>-67,b=>0,d=>2} bdffffff0c028700 bdffffff0c028700 bdffffff0c028700 bdffffff0c028700 - {e=>180,c=>1,a=>38,b=>0,d=>0} 260000000400b400 260000000400b400 260000000400b400 260000000400b400 = struct mixed1 { unsigned int a:1; }; - {a=>0} 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>0} 00000000 00000000 00000000 00000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; }; - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>1,b=>1} 03000000 03000000 03000000 03000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; }; - {a=>0,b=>1} 02000000 02000000 02000000 02000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>0,b=>1} 02000000 02000000 02000000 02000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 - {a=>1,b=>1} 03000000 03000000 03000000 03000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; }; - {c=>1,a=>0,b=>0} 0000000001000000 0000000001000000 0000000001000000 0000000001000000 - {c=>1,a=>1,b=>1} 0300000001000000 0300000001000000 0300000001000000 0300000001000000 - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 0100000000000000 - {c=>0,a=>0,b=>1} 0200000000000000 0200000000000000 0200000000000000 0200000000000000 - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 0100000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; }; - {c=>0,a=>1,b=>1,d=>0} 0300000000000000 0300000000000000 0300000000000000 0300000000000000 - {c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 0300000002000000 - {c=>1,a=>0,b=>0,d=>0} 0000000001000000 0000000001000000 0000000001000000 0000000001000000 - {c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 0300000002000000 - {c=>0,a=>1,b=>0,d=>0} 0100000000000000 0100000000000000 0100000000000000 0100000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; }; - {e=>0,c=>0,a=>0,b=>1,d=>0} 0200000000000000 0200000000000000 0200000000000000 0200000000000000 - {e=>-1,c=>0,a=>0,b=>1,d=>-1} 0200000006000000 0200000006000000 0200000006000000 0200000006000000 - {e=>0,c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 0300000002000000 - {e=>-1,c=>1,a=>1,b=>0,d=>-1} 0100000007000000 0100000007000000 0100000007000000 0100000007000000 - {e=>0,c=>0,a=>0,b=>0,d=>0} 0000000000000000 0000000000000000 0000000000000000 0000000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; }; - {e=>-1,c=>0,a=>1,b=>0,d=>-1} 0100000006000000 0100000006000000 0100000006000000 0100000006000000 - {e=>0,c=>1,a=>1,b=>0,d=>0} 0100000001000000 0100000001000000 0100000001000000 0100000001000000 - {e=>-1,c=>0,a=>1,b=>0,d=>0} 0100000004000000 0100000004000000 0100000004000000 0100000004000000 - {e=>0,c=>1,a=>0,b=>1,d=>-1} 0200000003000000 0200000003000000 0200000003000000 0200000003000000 - {e=>-1,c=>1,a=>1,b=>1,d=>-1} 0300000007000000 0300000007000000 0300000007000000 0300000007000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; }; - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 020000000700000001000000 - {e=>-1,c=>0,a=>0,b=>1,d=>0,f=>-1} 020000000400000001000000 020000000400000001000000 020000000400000001000000 020000000400000001000000 - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 020000000700000001000000 - {e=>0,c=>1,a=>0,b=>0,d=>0,f=>-1} 000000000100000001000000 000000000100000001000000 000000000100000001000000 000000000100000001000000 - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 020000000700000001000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; }; - {e=>0,c=>1,a=>1,g=>-1,b=>1,d=>-1,f=>-1} 030000000300000003000000 030000000300000003000000 030000000300000003000000 030000000300000003000000 - {e=>0,c=>0,a=>1,g=>-1,b=>1,d=>0,f=>-1} 030000000000000003000000 030000000000000003000000 030000000000000003000000 030000000000000003000000 - {e=>0,c=>0,a=>0,g=>-1,b=>0,d=>0,f=>-1} 000000000000000003000000 000000000000000003000000 000000000000000003000000 000000000000000003000000 - {e=>0,c=>1,a=>1,g=>0,b=>1,d=>0,f=>0} 030000000100000000000000 030000000100000000000000 030000000100000000000000 030000000100000000000000 - {e=>0,c=>1,a=>0,g=>-1,b=>1,d=>0,f=>0} 020000000100000002000000 020000000100000002000000 020000000100000002000000 020000000100000002000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; }; - {e=>0,a=>1,d=>-1,c=>0,h=>0,b=>1,g=>-1,f=>-1} 030000000200000003000000 030000000200000003000000 030000000200000003000000 030000000200000003000000 - {e=>0,a=>0,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1} 020000000000000007000000 020000000000000007000000 020000000000000007000000 020000000000000007000000 - {e=>0,a=>0,d=>-1,c=>1,h=>0,b=>1,g=>-1,f=>0} 020000000300000002000000 020000000300000002000000 020000000300000002000000 020000000300000002000000 - {e=>0,a=>0,d=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0} 000000000300000006000000 000000000300000006000000 000000000300000006000000 000000000300000006000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>1,g=>0,f=>-1} 030000000200000005000000 030000000200000005000000 030000000200000005000000 030000000200000005000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; }; - {e=>0,a=>1,d=>0,c=>0,h=>-1,b=>0,g=>0,f=>-1} 010000000000000005000000 010000000000000005000000 010000000000000005000000 010000000000000005000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>0,g=>0,f=>-1} 010000000200000005000000 010000000200000005000000 010000000200000005000000 010000000200000005000000 - {e=>-1,a=>0,d=>0,c=>0,h=>0,b=>1,g=>0,f=>-1} 020000000400000001000000 020000000400000001000000 020000000400000001000000 020000000400000001000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>1,g=>0,f=>-1} 030000000200000005000000 030000000200000005000000 030000000200000005000000 030000000200000005000000 - {e=>-1,a=>1,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>-1} 010000000400000003000000 010000000400000003000000 010000000400000003000000 010000000400000003000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; int i:1; }; - {e=>-1,a=>1,d=>0,c=>1,h=>-1,b=>0,g=>-1,f=>-1,i=>0} 01000000050000000700000000000000 01000000050000000700000000000000 01000000050000000700000000000000 01000000050000000700000000000000 - {e=>0,a=>1,d=>0,c=>0,h=>-1,b=>0,g=>0,f=>-1,i=>0} 01000000000000000500000000000000 01000000000000000500000000000000 01000000000000000500000000000000 01000000000000000500000000000000 - {e=>0,a=>1,d=>-1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} 01000000030000000500000000000000 01000000030000000500000000000000 01000000030000000500000000000000 01000000030000000500000000000000 - {e=>0,a=>1,d=>-1,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 03000000030000000500000000000000 03000000030000000500000000000000 03000000030000000500000000000000 03000000030000000500000000000000 - {e=>-1,a=>1,d=>-1,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 01000000060000000600000001000000 01000000060000000600000001000000 01000000060000000600000001000000 01000000060000000600000001000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; int i:1; long j; }; - {e=>-1,a=>0,d=>-1,j=>95,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 000000000600000006000000010000005f000000 000000000600000006000000010000005f000000 000000000600000006000000010000005f000000 000000000600000006000000010000005f000000 - {e=>-1,a=>0,d=>0,j=>6,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 0200000005000000050000000000000006000000 0200000005000000050000000000000006000000 0200000005000000050000000000000006000000 0200000005000000050000000000000006000000 - {e=>0,a=>1,d=>-1,j=>2,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>-1} 0300000003000000010000000100000002000000 0300000003000000010000000100000002000000 0300000003000000010000000100000002000000 0300000003000000010000000100000002000000 - {e=>0,a=>1,d=>0,j=>29,c=>0,h=>0,b=>1,g=>0,f=>0,i=>-1} 030000000000000000000000010000001d000000 030000000000000000000000010000001d000000 030000000000000000000000010000001d000000 030000000000000000000000010000001d000000 - {e=>0,a=>0,d=>-1,j=>-28,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 02000000020000000700000000000000e4ffffff 02000000020000000700000000000000e4ffffff 02000000020000000700000000000000e4ffffff 02000000020000000700000000000000e4ffffff = struct mixed1 { char a; unsigned int b:1; }; - {a=>110,b=>1} 6e01000000 6e0001000000 6e00000001000000 6e00000001000000 - {a=>-117,b=>1} 8b01000000 8b0001000000 8b00000001000000 8b00000001000000 - {a=>-103,b=>0} 9900000000 990000000000 9900000000000000 9900000000000000 - {a=>-42,b=>0} d600000000 d60000000000 d600000000000000 d600000000000000 - {a=>71,b=>1} 4701000000 470001000000 4700000001000000 4700000001000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>53,b=>0} 3500000000 350000000000 3500000000000000 3500000000000000 - {c=>1,a=>5,b=>1} 0503000000 050003000000 0500000003000000 0500000003000000 - {c=>0,a=>-80,b=>0} b000000000 b00000000000 b000000000000000 b000000000000000 - {c=>1,a=>100,b=>0} 6402000000 640002000000 6400000002000000 6400000002000000 - {c=>1,a=>-94,b=>1} a203000000 a20003000000 a200000003000000 a200000003000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>-121,b=>1} 8701000000 870001000000 8700000001000000 8700000001000000 - {c=>0,a=>-57,b=>1} c701000000 c70001000000 c700000001000000 c700000001000000 - {c=>0,a=>37,b=>1} 2501000000 250001000000 2500000001000000 2500000001000000 - {c=>1,a=>37,b=>1} 2503000000 250003000000 2500000003000000 2500000003000000 - {c=>0,a=>-110,b=>0} 9200000000 920000000000 9200000000000000 9200000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>43,b=>0,d=>0} 2b0000000000000000 2b000000000000000000 2b0000000000000000000000 2b0000000000000000000000 - {c=>1,a=>72,b=>1,d=>0} 480300000000000000 48000300000000000000 480000000300000000000000 480000000300000000000000 - {c=>1,a=>70,b=>0,d=>0} 460200000000000000 46000200000000000000 460000000200000000000000 460000000200000000000000 - {c=>1,a=>50,b=>1,d=>0} 320300000000000000 32000300000000000000 320000000300000000000000 320000000300000000000000 - {c=>0,a=>104,b=>0,d=>0} 680000000000000000 68000000000000000000 680000000000000000000000 680000000000000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>0,c=>0,a=>48,b=>1,d=>1} 300100000001000000 30000100000001000000 300000000100000001000000 300000000100000001000000 - {e=>-1,c=>0,a=>-115,b=>1,d=>0} 8d0100000002000000 8d000100000002000000 8d0000000100000002000000 8d0000000100000002000000 - {e=>-1,c=>1,a=>-71,b=>0,d=>1} b90200000003000000 b9000200000003000000 b90000000200000003000000 b90000000200000003000000 - {e=>-1,c=>0,a=>38,b=>0,d=>0} 260000000002000000 26000000000002000000 260000000000000002000000 260000000000000002000000 - {e=>-1,c=>1,a=>110,b=>0,d=>0} 6e0200000002000000 6e000200000002000000 6e0000000200000002000000 6e0000000200000002000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>0,c=>0,a=>-12,b=>0,d=>1,f=>0} f40000000001000000 f4000000000001000000 f40000000000000001000000 f40000000000000001000000 - {e=>0,c=>0,a=>5,b=>0,d=>1,f=>0} 050000000001000000 05000000000001000000 050000000000000001000000 050000000000000001000000 - {e=>-1,c=>1,a=>47,b=>0,d=>0,f=>0} 2f0200000002000000 2f000200000002000000 2f0000000200000002000000 2f0000000200000002000000 - {e=>-1,c=>1,a=>87,b=>0,d=>0,f=>-1} 570200000006000000 57000200000006000000 570000000200000006000000 570000000200000006000000 - {e=>0,c=>0,a=>-26,b=>1,d=>1,f=>0} e60100000001000000 e6000100000001000000 e60000000100000001000000 e60000000100000001000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-46,b=>1,d=>1,f=>0} d20100000001000000 d2000100000001000000 d20000000100000001000000 d20000000100000001000000 - {e=>-1,c=>0,a=>-8,b=>1,d=>1,f=>0} f80100000003000000 f8000100000003000000 f80000000100000003000000 f80000000100000003000000 - {e=>-1,c=>1,a=>-104,b=>1,d=>0,f=>-1} 980300000006000000 98000300000006000000 980000000300000006000000 980000000300000006000000 - {e=>0,c=>1,a=>111,b=>1,d=>1,f=>0} 6f0300000001000000 6f000300000001000000 6f0000000300000001000000 6f0000000300000001000000 - {e=>-1,c=>1,a=>66,b=>1,d=>0,f=>-1} 420300000006000000 42000300000006000000 420000000300000006000000 420000000300000006000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>0,a=>33,g=>0,b=>1,d=>1,f=>-1} 21010000000500000000000000 2100010000000500000000000000 21000000010000000500000000000000 21000000010000000500000000000000 - {e=>0,c=>1,a=>-26,g=>0,b=>1,d=>1,f=>-1} e6030000000500000000000000 e600030000000500000000000000 e6000000030000000500000000000000 e6000000030000000500000000000000 - {e=>-1,c=>1,a=>-58,g=>0,b=>0,d=>1,f=>-1} c6020000000700000000000000 c600020000000700000000000000 c6000000020000000700000000000000 c6000000020000000700000000000000 - {e=>0,c=>1,a=>-27,g=>-1,b=>0,d=>0,f=>-1} e5020000000400000001000000 e500020000000400000001000000 e5000000020000000400000001000000 e5000000020000000400000001000000 - {e=>-1,c=>1,a=>-33,g=>0,b=>0,d=>1,f=>0} df020000000300000000000000 df00020000000300000000000000 df000000020000000300000000000000 df000000020000000300000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>40,d=>0,c=>1,h=>0,b=>1,g=>0,f=>0} 28030000000200000000000000 2800030000000200000000000000 28000000030000000200000000000000 28000000030000000200000000000000 - {e=>-1,a=>123,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>-1} 7b010000000600000001000000 7b00010000000600000001000000 7b000000010000000600000001000000 7b000000010000000600000001000000 - {e=>-1,a=>102,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1} 66020000000600000001000000 6600020000000600000001000000 66000000020000000600000001000000 66000000020000000600000001000000 - {e=>0,a=>-10,d=>1,c=>1,h=>-1,b=>1,g=>0,f=>-1} f6030000000500000002000000 f600030000000500000002000000 f6000000030000000500000002000000 f6000000030000000500000002000000 - {e=>0,a=>49,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1} 31000000000500000001000000 3100000000000500000001000000 31000000000000000500000001000000 31000000000000000500000001000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>-11,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>-1} f5030000000300000007000000 f500030000000300000007000000 f5000000030000000300000007000000 f5000000030000000300000007000000 - {e=>0,a=>-102,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>-1,i=>0} 9a000000000400000001000000 9a00000000000400000001000000 9a000000000000000400000001000000 9a000000000000000400000001000000 - {e=>0,a=>-33,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>0,i=>0} df000000000100000002000000 df00000000000100000002000000 df000000000000000100000002000000 df000000000000000100000002000000 - {e=>-1,a=>-96,d=>1,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} a0010000000300000000000000 a000010000000300000000000000 a0000000010000000300000000000000 a0000000010000000300000000000000 - {e=>-1,a=>125,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>-1} 7d020000000700000006000000 7d00020000000700000006000000 7d000000020000000700000006000000 7d000000020000000700000006000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>-1,a=>-41,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} d7010000000600000007000000 d700010000000600000007000000 d7000000010000000600000007000000 d7000000010000000600000007000000 - {e=>-1,a=>51,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 33010000000700000003000000 3300010000000700000003000000 33000000010000000700000003000000 33000000010000000700000003000000 - {e=>0,a=>43,d=>0,c=>0,h=>0,b=>1,g=>0,f=>-1,i=>-1} 2b010000000400000004000000 2b00010000000400000004000000 2b000000010000000400000004000000 2b000000010000000400000004000000 - {e=>0,a=>33,d=>0,c=>1,h=>-1,b=>0,g=>0,f=>0,i=>-1} 21020000000000000006000000 2100020000000000000006000000 21000000020000000000000006000000 21000000020000000000000006000000 - {e=>-1,a=>-111,d=>1,c=>1,h=>0,b=>0,g=>0,f=>-1,i=>0} 91020000000700000000000000 9100020000000700000000000000 91000000020000000700000000000000 91000000020000000700000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>-1,a=>-32,d=>0,j=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>0} e002000000020000000300000001000000 e00002000000020000000300000001000000 e000000002000000020000000300000001000000 e000000002000000020000000300000001000000 - {e=>0,a=>-11,d=>0,j=>0,c=>1,h=>0,b=>1,g=>-1,f=>-1,i=>-1} f503000000040000000500000000000000 f50003000000040000000500000000000000 f500000003000000040000000500000000000000 f500000003000000040000000500000000000000 - {e=>0,a=>-110,d=>1,j=>-1,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>-1} 9203000000010000000700000001000000 920003000000010000000700000001000000 9200000003000000010000000700000001000000 9200000003000000010000000700000001000000 - {e=>-1,a=>-1,d=>0,j=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>-1} ff02000000020000000700000001000000 ff0002000000020000000700000001000000 ff00000002000000020000000700000001000000 ff00000002000000020000000700000001000000 - {e=>0,a=>-47,d=>0,j=>-1,c=>1,h=>0,b=>1,g=>0,f=>0,i=>-1} d103000000000000000400000001000000 d10003000000000000000400000001000000 d100000003000000000000000400000001000000 d100000003000000000000000400000001000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>0,a=>-103,d=>1,j=>0,c=>1,k=>81,h=>0,b=>1,g=>0,f=>0,i=>0} 990300000001000000000000000000000051000000 99000300000001000000000000000000000051000000 990000000300000001000000000000000000000051000000 990000000300000001000000000000000000000051000000 - {e=>0,a=>5,d=>0,j=>0,c=>1,k=>-43,h=>0,b=>0,g=>0,f=>-1,i=>-1} 0502000000040000000400000000000000d5ffffff 050002000000040000000400000000000000d5ffffff 0500000002000000040000000400000000000000d5ffffff 0500000002000000040000000400000000000000d5ffffff - {e=>0,a=>48,d=>0,j=>0,c=>1,k=>-96,h=>0,b=>0,g=>0,f=>-1,i=>0} 3002000000040000000000000000000000a0ffffff 300002000000040000000000000000000000a0ffffff 3000000002000000040000000000000000000000a0ffffff 3000000002000000040000000000000000000000a0ffffff - {e=>-1,a=>113,d=>0,j=>-1,c=>1,k=>-112,h=>-1,b=>1,g=>0,f=>-1,i=>0} 710300000006000000020000000100000090ffffff 71000300000006000000020000000100000090ffffff 710000000300000006000000020000000100000090ffffff 710000000300000006000000020000000100000090ffffff - {e=>0,a=>124,d=>1,j=>-1,c=>1,k=>62,h=>0,b=>0,g=>0,f=>-1,i=>0} 7c020000000500000000000000010000003e000000 7c00020000000500000000000000010000003e000000 7c000000020000000500000000000000010000003e000000 7c000000020000000500000000000000010000003e000000 = struct mixed1 { short a; unsigned int b:1; }; - {a=>110,b=>1} 6e0001000000 6e0001000000 6e00000001000000 6e00000001000000 - {a=>-33,b=>1} dfff01000000 dfff01000000 dfff000001000000 dfff000001000000 - {a=>-68,b=>0} bcff00000000 bcff00000000 bcff000000000000 bcff000000000000 - {a=>-44,b=>1} d4ff01000000 d4ff01000000 d4ff000001000000 d4ff000001000000 - {a=>94,b=>0} 5e0000000000 5e0000000000 5e00000000000000 5e00000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-20,b=>1} ecff03000000 ecff03000000 ecff000003000000 ecff000003000000 - {c=>1,a=>-53,b=>1} cbff03000000 cbff03000000 cbff000003000000 cbff000003000000 - {c=>1,a=>123,b=>0} 7b0002000000 7b0002000000 7b00000002000000 7b00000002000000 - {c=>1,a=>-52,b=>0} ccff02000000 ccff02000000 ccff000002000000 ccff000002000000 - {c=>1,a=>93,b=>0} 5d0002000000 5d0002000000 5d00000002000000 5d00000002000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>1,a=>110,b=>0} 6e0002000000 6e0002000000 6e00000002000000 6e00000002000000 - {c=>0,a=>51,b=>0} 330000000000 330000000000 3300000000000000 3300000000000000 - {c=>0,a=>118,b=>0} 760000000000 760000000000 7600000000000000 7600000000000000 - {c=>1,a=>27,b=>1} 1b0003000000 1b0003000000 1b00000003000000 1b00000003000000 - {c=>0,a=>-97,b=>1} 9fff01000000 9fff01000000 9fff000001000000 9fff000001000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>1,a=>102,b=>1,d=>0} 66000300000000000000 66000300000000000000 660000000300000000000000 660000000300000000000000 - {c=>0,a=>-89,b=>1,d=>0} a7ff0100000000000000 a7ff0100000000000000 a7ff00000100000000000000 a7ff00000100000000000000 - {c=>1,a=>37,b=>0,d=>0} 25000200000000000000 25000200000000000000 250000000200000000000000 250000000200000000000000 - {c=>1,a=>111,b=>1,d=>0} 6f000300000000000000 6f000300000000000000 6f0000000300000000000000 6f0000000300000000000000 - {c=>0,a=>33,b=>0,d=>0} 21000000000000000000 21000000000000000000 210000000000000000000000 210000000000000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>0,c=>1,a=>-77,b=>0,d=>0} b3ff0200000000000000 b3ff0200000000000000 b3ff00000200000000000000 b3ff00000200000000000000 - {e=>-1,c=>0,a=>73,b=>1,d=>1} 49000100000003000000 49000100000003000000 490000000100000003000000 490000000100000003000000 - {e=>-1,c=>0,a=>50,b=>1,d=>0} 32000100000002000000 32000100000002000000 320000000100000002000000 320000000100000002000000 - {e=>0,c=>1,a=>-125,b=>0,d=>1} 83ff0200000001000000 83ff0200000001000000 83ff00000200000001000000 83ff00000200000001000000 - {e=>0,c=>0,a=>55,b=>1,d=>0} 37000100000000000000 37000100000000000000 370000000100000000000000 370000000100000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>0,c=>1,a=>-25,b=>1,d=>1,f=>-1} e7ff0300000005000000 e7ff0300000005000000 e7ff00000300000005000000 e7ff00000300000005000000 - {e=>0,c=>0,a=>110,b=>0,d=>0,f=>-1} 6e000000000004000000 6e000000000004000000 6e0000000000000004000000 6e0000000000000004000000 - {e=>0,c=>0,a=>-28,b=>1,d=>0,f=>0} e4ff0100000000000000 e4ff0100000000000000 e4ff00000100000000000000 e4ff00000100000000000000 - {e=>0,c=>1,a=>38,b=>1,d=>1,f=>0} 26000300000001000000 26000300000001000000 260000000300000001000000 260000000300000001000000 - {e=>-1,c=>0,a=>38,b=>0,d=>1,f=>-1} 26000000000007000000 26000000000007000000 260000000000000007000000 260000000000000007000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-35,b=>1,d=>1,f=>-1} ddff0100000005000000 ddff0100000005000000 ddff00000100000005000000 ddff00000100000005000000 - {e=>0,c=>0,a=>-82,b=>0,d=>0,f=>0} aeff0000000000000000 aeff0000000000000000 aeff00000000000000000000 aeff00000000000000000000 - {e=>0,c=>0,a=>-124,b=>1,d=>0,f=>0} 84ff0100000000000000 84ff0100000000000000 84ff00000100000000000000 84ff00000100000000000000 - {e=>0,c=>0,a=>-50,b=>0,d=>1,f=>0} ceff0000000001000000 ceff0000000001000000 ceff00000000000001000000 ceff00000000000001000000 - {e=>-1,c=>1,a=>-121,b=>0,d=>0,f=>-1} 87ff0200000006000000 87ff0200000006000000 87ff00000200000006000000 87ff00000200000006000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>-1,c=>1,a=>39,g=>0,b=>1,d=>1,f=>0} 2700030000000300000000000000 2700030000000300000000000000 27000000030000000300000000000000 27000000030000000300000000000000 - {e=>-1,c=>0,a=>-21,g=>0,b=>0,d=>0,f=>0} ebff000000000200000000000000 ebff000000000200000000000000 ebff0000000000000200000000000000 ebff0000000000000200000000000000 - {e=>-1,c=>1,a=>-9,g=>-1,b=>1,d=>0,f=>0} f7ff030000000200000001000000 f7ff030000000200000001000000 f7ff0000030000000200000001000000 f7ff0000030000000200000001000000 - {e=>0,c=>0,a=>39,g=>-1,b=>0,d=>1,f=>0} 2700000000000100000001000000 2700000000000100000001000000 27000000000000000100000001000000 27000000000000000100000001000000 - {e=>0,c=>0,a=>-23,g=>0,b=>1,d=>1,f=>0} e9ff010000000100000000000000 e9ff010000000100000000000000 e9ff0000010000000100000000000000 e9ff0000010000000100000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>-109,d=>1,c=>1,h=>0,b=>0,g=>0,f=>-1} 93ff020000000700000000000000 93ff020000000700000000000000 93ff0000020000000700000000000000 93ff0000020000000700000000000000 - {e=>0,a=>113,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>-1} 7100000000000500000002000000 7100000000000500000002000000 71000000000000000500000002000000 71000000000000000500000002000000 - {e=>-1,a=>115,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>0} 7300010000000300000003000000 7300010000000300000003000000 73000000010000000300000003000000 73000000010000000300000003000000 - {e=>0,a=>86,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0} 5600000000000100000000000000 5600000000000100000000000000 56000000000000000100000000000000 56000000000000000100000000000000 - {e=>-1,a=>-14,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>0} f2ff030000000300000003000000 f2ff030000000300000003000000 f2ff0000030000000300000003000000 f2ff0000030000000300000003000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>97,d=>1,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>0} 6100000000000300000003000000 6100000000000300000003000000 61000000000000000300000003000000 61000000000000000300000003000000 - {e=>0,a=>-1,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>0} ffff010000000000000002000000 ffff010000000000000002000000 ffff0000010000000000000002000000 ffff0000010000000000000002000000 - {e=>-1,a=>62,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>0,i=>-1} 3e00000000000300000005000000 3e00000000000300000005000000 3e000000000000000300000005000000 3e000000000000000300000005000000 - {e=>0,a=>-110,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>-1} 92ff010000000000000006000000 92ff010000000000000006000000 92ff0000010000000000000006000000 92ff0000010000000000000006000000 - {e=>0,a=>-40,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>-1,i=>0} d8ff000000000500000002000000 d8ff000000000500000002000000 d8ff0000000000000500000002000000 d8ff0000000000000500000002000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>-1,a=>-48,d=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>0} d0ff020000000200000000000000 d0ff020000000200000000000000 d0ff0000020000000200000000000000 d0ff0000020000000200000000000000 - {e=>0,a=>27,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 1b00000000000500000005000000 1b00000000000500000005000000 1b000000000000000500000005000000 1b000000000000000500000005000000 - {e=>0,a=>47,d=>1,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>-1} 2f00010000000100000006000000 2f00010000000100000006000000 2f000000010000000100000006000000 2f000000010000000100000006000000 - {e=>-1,a=>24,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 1800030000000600000007000000 1800030000000600000007000000 18000000030000000600000007000000 18000000030000000600000007000000 - {e=>0,a=>-105,d=>1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>0} 97ff020000000100000003000000 97ff020000000100000003000000 97ff0000020000000100000003000000 97ff0000020000000100000003000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>-1,a=>-24,d=>0,j=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>0} e8ff02000000020000000000000000000000 e8ff02000000020000000000000000000000 e8ff000002000000020000000000000000000000 e8ff000002000000020000000000000000000000 - {e=>-1,a=>-22,d=>0,j=>0,c=>1,h=>0,b=>0,g=>-1,f=>0,i=>0} eaff02000000020000000100000000000000 eaff02000000020000000100000000000000 eaff000002000000020000000100000000000000 eaff000002000000020000000100000000000000 - {e=>0,a=>-38,d=>0,j=>-1,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} daff01000000040000000300000001000000 daff01000000040000000300000001000000 daff000001000000040000000300000001000000 daff000001000000040000000300000001000000 - {e=>0,a=>72,d=>1,j=>0,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 480003000000050000000200000000000000 480003000000050000000200000000000000 4800000003000000050000000200000000000000 4800000003000000050000000200000000000000 - {e=>0,a=>-62,d=>0,j=>0,c=>0,h=>0,b=>1,g=>-1,f=>-1,i=>0} c2ff01000000040000000100000000000000 c2ff01000000040000000100000000000000 c2ff000001000000040000000100000000000000 c2ff000001000000040000000100000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>-1,a=>29,d=>0,j=>-1,c=>1,k=>-52,h=>-1,b=>1,g=>0,f=>0,i=>0} 1d0003000000020000000200000001000000ccffffff 1d0003000000020000000200000001000000ccffffff 1d00000003000000020000000200000001000000ccffffff 1d00000003000000020000000200000001000000ccffffff - {e=>0,a=>71,d=>0,j=>-1,c=>0,k=>11,h=>0,b=>0,g=>0,f=>0,i=>-1} 4700000000000000000004000000010000000b000000 4700000000000000000004000000010000000b000000 47000000000000000000000004000000010000000b000000 47000000000000000000000004000000010000000b000000 - {e=>-1,a=>7,d=>0,j=>0,c=>0,k=>101,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 07000000000002000000070000000000000065000000 07000000000002000000070000000000000065000000 070000000000000002000000070000000000000065000000 070000000000000002000000070000000000000065000000 - {e=>-1,a=>-19,d=>1,j=>0,c=>0,k=>8,h=>-1,b=>1,g=>0,f=>0,i=>-1} edff0100000003000000060000000000000008000000 edff0100000003000000060000000000000008000000 edff00000100000003000000060000000000000008000000 edff00000100000003000000060000000000000008000000 - {e=>-1,a=>71,d=>1,j=>0,c=>0,k=>-64,h=>0,b=>1,g=>-1,f=>-1,i=>-1} 470001000000070000000500000000000000c0ffffff 470001000000070000000500000000000000c0ffffff 4700000001000000070000000500000000000000c0ffffff 4700000001000000070000000500000000000000c0ffffff = struct mixed1 { int a; unsigned int b:1; }; - {a=>-120,b=>0} 88ffffff00000000 88ffffff00000000 88ffffff00000000 88ffffff00000000 - {a=>-74,b=>1} b6ffffff01000000 b6ffffff01000000 b6ffffff01000000 b6ffffff01000000 - {a=>-4,b=>1} fcffffff01000000 fcffffff01000000 fcffffff01000000 fcffffff01000000 - {a=>-89,b=>0} a7ffffff00000000 a7ffffff00000000 a7ffffff00000000 a7ffffff00000000 - {a=>95,b=>0} 5f00000000000000 5f00000000000000 5f00000000000000 5f00000000000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>124,b=>1} 7c00000001000000 7c00000001000000 7c00000001000000 7c00000001000000 - {c=>0,a=>97,b=>1} 6100000001000000 6100000001000000 6100000001000000 6100000001000000 - {c=>0,a=>-1,b=>0} ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 - {c=>0,a=>-59,b=>0} c5ffffff00000000 c5ffffff00000000 c5ffffff00000000 c5ffffff00000000 - {c=>1,a=>23,b=>1} 1700000003000000 1700000003000000 1700000003000000 1700000003000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 0100000000000000 - {c=>0,a=>-43,b=>1} d5ffffff01000000 d5ffffff01000000 d5ffffff01000000 d5ffffff01000000 - {c=>0,a=>-32,b=>1} e0ffffff01000000 e0ffffff01000000 e0ffffff01000000 e0ffffff01000000 - {c=>0,a=>-65,b=>1} bfffffff01000000 bfffffff01000000 bfffffff01000000 bfffffff01000000 - {c=>0,a=>-14,b=>0} f2ffffff00000000 f2ffffff00000000 f2ffffff00000000 f2ffffff00000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>89,b=>0,d=>0} 590000000000000000000000 590000000000000000000000 590000000000000000000000 590000000000000000000000 - {c=>0,a=>-30,b=>0,d=>1} e2ffffff0000000001000000 e2ffffff0000000001000000 e2ffffff0000000001000000 e2ffffff0000000001000000 - {c=>1,a=>-6,b=>0,d=>0} faffffff0200000000000000 faffffff0200000000000000 faffffff0200000000000000 faffffff0200000000000000 - {c=>1,a=>-16,b=>1,d=>0} f0ffffff0300000000000000 f0ffffff0300000000000000 f0ffffff0300000000000000 f0ffffff0300000000000000 - {c=>0,a=>94,b=>1,d=>1} 5e0000000100000001000000 5e0000000100000001000000 5e0000000100000001000000 5e0000000100000001000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>-1,c=>0,a=>-26,b=>1,d=>1} e6ffffff0100000003000000 e6ffffff0100000003000000 e6ffffff0100000003000000 e6ffffff0100000003000000 - {e=>0,c=>0,a=>-38,b=>1,d=>0} daffffff0100000000000000 daffffff0100000000000000 daffffff0100000000000000 daffffff0100000000000000 - {e=>-1,c=>1,a=>82,b=>1,d=>1} 520000000300000003000000 520000000300000003000000 520000000300000003000000 520000000300000003000000 - {e=>-1,c=>1,a=>-3,b=>1,d=>0} fdffffff0300000002000000 fdffffff0300000002000000 fdffffff0300000002000000 fdffffff0300000002000000 - {e=>-1,c=>1,a=>104,b=>0,d=>1} 680000000200000003000000 680000000200000003000000 680000000200000003000000 680000000200000003000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>-1,c=>0,a=>-49,b=>0,d=>1,f=>0} cfffffff0000000003000000 cfffffff0000000003000000 cfffffff0000000003000000 cfffffff0000000003000000 - {e=>-1,c=>1,a=>-85,b=>0,d=>1,f=>-1} abffffff0200000007000000 abffffff0200000007000000 abffffff0200000007000000 abffffff0200000007000000 - {e=>0,c=>1,a=>-109,b=>0,d=>0,f=>0} 93ffffff0200000000000000 93ffffff0200000000000000 93ffffff0200000000000000 93ffffff0200000000000000 - {e=>0,c=>0,a=>109,b=>0,d=>0,f=>0} 6d0000000000000000000000 6d0000000000000000000000 6d0000000000000000000000 6d0000000000000000000000 - {e=>0,c=>1,a=>-3,b=>0,d=>0,f=>0} fdffffff0200000000000000 fdffffff0200000000000000 fdffffff0200000000000000 fdffffff0200000000000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-89,b=>0,d=>0,f=>-1} a7ffffff0000000004000000 a7ffffff0000000004000000 a7ffffff0000000004000000 a7ffffff0000000004000000 - {e=>-1,c=>0,a=>-6,b=>1,d=>1,f=>0} faffffff0100000003000000 faffffff0100000003000000 faffffff0100000003000000 faffffff0100000003000000 - {e=>0,c=>0,a=>-60,b=>0,d=>1,f=>0} c4ffffff0000000001000000 c4ffffff0000000001000000 c4ffffff0000000001000000 c4ffffff0000000001000000 - {e=>-1,c=>1,a=>-65,b=>0,d=>1,f=>0} bfffffff0200000003000000 bfffffff0200000003000000 bfffffff0200000003000000 bfffffff0200000003000000 - {e=>0,c=>0,a=>-92,b=>0,d=>0,f=>-1} a4ffffff0000000004000000 a4ffffff0000000004000000 a4ffffff0000000004000000 a4ffffff0000000004000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>1,a=>23,g=>0,b=>0,d=>0,f=>0} 17000000020000000000000000000000 17000000020000000000000000000000 17000000020000000000000000000000 17000000020000000000000000000000 - {e=>0,c=>0,a=>-110,g=>-1,b=>1,d=>1,f=>0} 92ffffff010000000100000001000000 92ffffff010000000100000001000000 92ffffff010000000100000001000000 92ffffff010000000100000001000000 - {e=>0,c=>1,a=>6,g=>0,b=>0,d=>1,f=>-1} 06000000020000000500000000000000 06000000020000000500000000000000 06000000020000000500000000000000 06000000020000000500000000000000 - {e=>-1,c=>0,a=>-15,g=>-1,b=>0,d=>1,f=>0} f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 - {e=>-1,c=>1,a=>-105,g=>-1,b=>1,d=>1,f=>-1} 97ffffff030000000700000001000000 97ffffff030000000700000001000000 97ffffff030000000700000001000000 97ffffff030000000700000001000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>-67,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1} bdffffff030000000600000003000000 bdffffff030000000600000003000000 bdffffff030000000600000003000000 bdffffff030000000600000003000000 - {e=>0,a=>16,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1} 10000000020000000400000001000000 10000000020000000400000001000000 10000000020000000400000001000000 10000000020000000400000001000000 - {e=>0,a=>75,d=>0,c=>0,h=>0,b=>0,g=>0,f=>-1} 4b000000000000000400000000000000 4b000000000000000400000000000000 4b000000000000000400000000000000 4b000000000000000400000000000000 - {e=>-1,a=>-78,d=>0,c=>1,h=>0,b=>1,g=>-1,f=>0} b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 - {e=>0,a=>50,d=>1,c=>1,h=>0,b=>1,g=>0,f=>0} 32000000030000000100000000000000 32000000030000000100000000000000 32000000030000000100000000000000 32000000030000000100000000000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>0,a=>45,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 2d000000020000000400000005000000 2d000000020000000400000005000000 2d000000020000000400000005000000 2d000000020000000400000005000000 - {e=>0,a=>-65,d=>1,c=>1,h=>-1,b=>0,g=>-1,f=>-1,i=>0} bfffffff020000000500000003000000 bfffffff020000000500000003000000 bfffffff020000000500000003000000 bfffffff020000000500000003000000 - {e=>-1,a=>5,d=>0,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>0} 05000000030000000600000000000000 05000000030000000600000000000000 05000000030000000600000000000000 05000000030000000600000000000000 - {e=>-1,a=>53,d=>1,c=>0,h=>-1,b=>1,g=>0,f=>-1,i=>-1} 35000000010000000700000006000000 35000000010000000700000006000000 35000000010000000700000006000000 35000000010000000700000006000000 - {e=>-1,a=>-98,d=>0,c=>1,h=>-1,b=>1,g=>0,f=>0,i=>-1} 9effffff030000000200000006000000 9effffff030000000200000006000000 9effffff030000000200000006000000 9effffff030000000200000006000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>0,a=>79,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} 4f000000010000000000000003000000 4f000000010000000000000003000000 4f000000010000000000000003000000 4f000000010000000000000003000000 - {e=>0,a=>-115,d=>1,c=>0,h=>0,b=>1,g=>0,f=>-1,i=>-1} 8dffffff010000000500000004000000 8dffffff010000000500000004000000 8dffffff010000000500000004000000 8dffffff010000000500000004000000 - {e=>-1,a=>-69,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>0} bbffffff030000000200000003000000 bbffffff030000000200000003000000 bbffffff030000000200000003000000 bbffffff030000000200000003000000 - {e=>-1,a=>0,d=>0,c=>1,h=>0,b=>1,g=>-1,f=>0,i=>-1} 00000000030000000200000005000000 00000000030000000200000005000000 00000000030000000200000005000000 00000000030000000200000005000000 - {e=>-1,a=>34,d=>1,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>-1} 22000000030000000700000004000000 22000000030000000700000004000000 22000000030000000700000004000000 22000000030000000700000004000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>0,a=>67,d=>0,j=>0,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>0} 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 - {e=>0,a=>23,d=>0,j=>-1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 - {e=>0,a=>89,d=>0,j=>0,c=>0,h=>-1,b=>0,g=>-1,f=>-1,i=>0} 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 - {e=>0,a=>-97,d=>0,j=>0,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 - {e=>0,a=>-76,d=>1,j=>-1,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>0,a=>-74,d=>1,j=>0,c=>1,k=>96,h=>0,b=>1,g=>-1,f=>0,i=>0} b6ffffff0300000001000000010000000000000060000000 b6ffffff0300000001000000010000000000000060000000 b6ffffff0300000001000000010000000000000060000000 b6ffffff0300000001000000010000000000000060000000 - {e=>0,a=>89,d=>1,j=>0,c=>0,k=>-51,h=>0,b=>0,g=>-1,f=>0,i=>-1} 5900000000000000010000000500000000000000cdffffff 5900000000000000010000000500000000000000cdffffff 5900000000000000010000000500000000000000cdffffff 5900000000000000010000000500000000000000cdffffff - {e=>-1,a=>48,d=>0,j=>0,c=>0,k=>116,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 300000000000000002000000070000000000000074000000 300000000000000002000000070000000000000074000000 300000000000000002000000070000000000000074000000 300000000000000002000000070000000000000074000000 - {e=>0,a=>-74,d=>0,j=>0,c=>1,k=>59,h=>0,b=>1,g=>0,f=>-1,i=>0} b6ffffff030000000400000000000000000000003b000000 b6ffffff030000000400000000000000000000003b000000 b6ffffff030000000400000000000000000000003b000000 b6ffffff030000000400000000000000000000003b000000 - {e=>-1,a=>63,d=>1,j=>-1,c=>0,k=>49,h=>0,b=>0,g=>-1,f=>0,i=>0} 3f0000000000000003000000010000000100000031000000 3f0000000000000003000000010000000100000031000000 3f0000000000000003000000010000000100000031000000 3f0000000000000003000000010000000100000031000000 = struct mixed1 { long a; unsigned int b:1; }; - {a=>-77,b=>1} b3ffffff01000000 b3ffffff01000000 b3ffffff01000000 b3ffffff01000000 - {a=>-4,b=>0} fcffffff00000000 fcffffff00000000 fcffffff00000000 fcffffff00000000 - {a=>106,b=>1} 6a00000001000000 6a00000001000000 6a00000001000000 6a00000001000000 - {a=>-44,b=>1} d4ffffff01000000 d4ffffff01000000 d4ffffff01000000 d4ffffff01000000 - {a=>-88,b=>1} a8ffffff01000000 a8ffffff01000000 a8ffffff01000000 a8ffffff01000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>-69,b=>1} bbffffff01000000 bbffffff01000000 bbffffff01000000 bbffffff01000000 - {c=>0,a=>-85,b=>1} abffffff01000000 abffffff01000000 abffffff01000000 abffffff01000000 - {c=>0,a=>33,b=>1} 2100000001000000 2100000001000000 2100000001000000 2100000001000000 - {c=>1,a=>40,b=>1} 2800000003000000 2800000003000000 2800000003000000 2800000003000000 - {c=>0,a=>-14,b=>1} f2ffffff01000000 f2ffffff01000000 f2ffffff01000000 f2ffffff01000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>-30,b=>0} e2ffffff00000000 e2ffffff00000000 e2ffffff00000000 e2ffffff00000000 - {c=>0,a=>-60,b=>0} c4ffffff00000000 c4ffffff00000000 c4ffffff00000000 c4ffffff00000000 - {c=>1,a=>57,b=>0} 3900000002000000 3900000002000000 3900000002000000 3900000002000000 - {c=>1,a=>11,b=>0} 0b00000002000000 0b00000002000000 0b00000002000000 0b00000002000000 - {c=>1,a=>-73,b=>1} b7ffffff03000000 b7ffffff03000000 b7ffffff03000000 b7ffffff03000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>-46,b=>0,d=>1} d2ffffff0000000001000000 d2ffffff0000000001000000 d2ffffff0000000001000000 d2ffffff0000000001000000 - {c=>0,a=>27,b=>0,d=>0} 1b0000000000000000000000 1b0000000000000000000000 1b0000000000000000000000 1b0000000000000000000000 - {c=>1,a=>1,b=>1,d=>0} 010000000300000000000000 010000000300000000000000 010000000300000000000000 010000000300000000000000 - {c=>1,a=>71,b=>0,d=>0} 470000000200000000000000 470000000200000000000000 470000000200000000000000 470000000200000000000000 - {c=>0,a=>-14,b=>1,d=>1} f2ffffff0100000001000000 f2ffffff0100000001000000 f2ffffff0100000001000000 f2ffffff0100000001000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>-1,c=>1,a=>19,b=>0,d=>0} 130000000200000002000000 130000000200000002000000 130000000200000002000000 130000000200000002000000 - {e=>-1,c=>1,a=>70,b=>0,d=>1} 460000000200000003000000 460000000200000003000000 460000000200000003000000 460000000200000003000000 - {e=>-1,c=>1,a=>-112,b=>1,d=>0} 90ffffff0300000002000000 90ffffff0300000002000000 90ffffff0300000002000000 90ffffff0300000002000000 - {e=>0,c=>0,a=>90,b=>0,d=>1} 5a0000000000000001000000 5a0000000000000001000000 5a0000000000000001000000 5a0000000000000001000000 - {e=>-1,c=>1,a=>-16,b=>1,d=>0} f0ffffff0300000002000000 f0ffffff0300000002000000 f0ffffff0300000002000000 f0ffffff0300000002000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>-1,c=>1,a=>92,b=>0,d=>0,f=>-1} 5c0000000200000006000000 5c0000000200000006000000 5c0000000200000006000000 5c0000000200000006000000 - {e=>0,c=>1,a=>-112,b=>1,d=>0,f=>0} 90ffffff0300000000000000 90ffffff0300000000000000 90ffffff0300000000000000 90ffffff0300000000000000 - {e=>-1,c=>0,a=>-75,b=>1,d=>1,f=>0} b5ffffff0100000003000000 b5ffffff0100000003000000 b5ffffff0100000003000000 b5ffffff0100000003000000 - {e=>0,c=>0,a=>-54,b=>1,d=>1,f=>-1} caffffff0100000005000000 caffffff0100000005000000 caffffff0100000005000000 caffffff0100000005000000 - {e=>0,c=>0,a=>-3,b=>0,d=>0,f=>-1} fdffffff0000000004000000 fdffffff0000000004000000 fdffffff0000000004000000 fdffffff0000000004000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>1,a=>99,b=>1,d=>0,f=>0} 630000000300000000000000 630000000300000000000000 630000000300000000000000 630000000300000000000000 - {e=>0,c=>1,a=>121,b=>1,d=>1,f=>0} 790000000300000001000000 790000000300000001000000 790000000300000001000000 790000000300000001000000 - {e=>0,c=>1,a=>101,b=>0,d=>0,f=>-1} 650000000200000004000000 650000000200000004000000 650000000200000004000000 650000000200000004000000 - {e=>0,c=>1,a=>-100,b=>0,d=>0,f=>0} 9cffffff0200000000000000 9cffffff0200000000000000 9cffffff0200000000000000 9cffffff0200000000000000 - {e=>0,c=>1,a=>-59,b=>0,d=>1,f=>0} c5ffffff0200000001000000 c5ffffff0200000001000000 c5ffffff0200000001000000 c5ffffff0200000001000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>0,a=>73,g=>-1,b=>1,d=>1,f=>-1} 49000000010000000500000001000000 49000000010000000500000001000000 49000000010000000500000001000000 49000000010000000500000001000000 - {e=>0,c=>0,a=>11,g=>0,b=>1,d=>0,f=>0} 0b000000010000000000000000000000 0b000000010000000000000000000000 0b000000010000000000000000000000 0b000000010000000000000000000000 - {e=>-1,c=>0,a=>-31,g=>-1,b=>1,d=>1,f=>0} e1ffffff010000000300000001000000 e1ffffff010000000300000001000000 e1ffffff010000000300000001000000 e1ffffff010000000300000001000000 - {e=>-1,c=>0,a=>-124,g=>-1,b=>1,d=>1,f=>-1} 84ffffff010000000700000001000000 84ffffff010000000700000001000000 84ffffff010000000700000001000000 84ffffff010000000700000001000000 - {e=>-1,c=>0,a=>-42,g=>0,b=>1,d=>0,f=>-1} d6ffffff010000000600000000000000 d6ffffff010000000600000000000000 d6ffffff010000000600000000000000 d6ffffff010000000600000000000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>86,d=>0,c=>0,h=>0,b=>0,g=>0,f=>-1} 56000000000000000600000000000000 56000000000000000600000000000000 56000000000000000600000000000000 56000000000000000600000000000000 - {e=>-1,a=>-97,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1} 9fffffff000000000700000001000000 9fffffff000000000700000001000000 9fffffff000000000700000001000000 9fffffff000000000700000001000000 - {e=>0,a=>18,d=>0,c=>1,h=>-1,b=>0,g=>0,f=>0} 12000000020000000000000002000000 12000000020000000000000002000000 12000000020000000000000002000000 12000000020000000000000002000000 - {e=>0,a=>-102,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>0} 9affffff010000000000000003000000 9affffff010000000000000003000000 9affffff010000000000000003000000 9affffff010000000000000003000000 - {e=>0,a=>-36,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0} dcffffff010000000000000002000000 dcffffff010000000000000002000000 dcffffff010000000000000002000000 dcffffff010000000000000002000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>83,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 53000000030000000700000003000000 53000000030000000700000003000000 53000000030000000700000003000000 53000000030000000700000003000000 - {e=>0,a=>35,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>0,i=>0} 23000000010000000100000001000000 23000000010000000100000001000000 23000000010000000100000001000000 23000000010000000100000001000000 - {e=>-1,a=>-48,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} d0ffffff020000000700000002000000 d0ffffff020000000700000002000000 d0ffffff020000000700000002000000 d0ffffff020000000700000002000000 - {e=>-1,a=>47,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>0,i=>0} 2f000000020000000300000002000000 2f000000020000000300000002000000 2f000000020000000300000002000000 2f000000020000000300000002000000 - {e=>-1,a=>-92,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} a4ffffff010000000300000003000000 a4ffffff010000000300000003000000 a4ffffff010000000300000003000000 a4ffffff010000000300000003000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>0,a=>-32,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} e0ffffff010000000400000003000000 e0ffffff010000000400000003000000 e0ffffff010000000400000003000000 e0ffffff010000000400000003000000 - {e=>0,a=>-105,d=>1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 97ffffff020000000500000005000000 97ffffff020000000500000005000000 97ffffff020000000500000005000000 97ffffff020000000500000005000000 - {e=>0,a=>95,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 5f000000030000000500000007000000 5f000000030000000500000007000000 5f000000030000000500000007000000 5f000000030000000500000007000000 - {e=>-1,a=>-81,d=>0,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} afffffff010000000200000000000000 afffffff010000000200000000000000 afffffff010000000200000000000000 afffffff010000000200000000000000 - {e=>-1,a=>54,d=>0,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 36000000000000000200000007000000 36000000000000000200000007000000 36000000000000000200000007000000 36000000000000000200000007000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>0,a=>-112,d=>0,j=>0,c=>1,h=>0,b=>1,g=>-1,f=>0,i=>-1} 90ffffff03000000000000000500000000000000 90ffffff03000000000000000500000000000000 90ffffff03000000000000000500000000000000 90ffffff03000000000000000500000000000000 - {e=>0,a=>39,d=>0,j=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 2700000003000000040000000300000000000000 2700000003000000040000000300000000000000 2700000003000000040000000300000000000000 2700000003000000040000000300000000000000 - {e=>-1,a=>113,d=>1,j=>-1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} 7100000002000000070000000200000001000000 7100000002000000070000000200000001000000 7100000002000000070000000200000001000000 7100000002000000070000000200000001000000 - {e=>0,a=>118,d=>1,j=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>-1} 7600000002000000010000000400000000000000 7600000002000000010000000400000000000000 7600000002000000010000000400000000000000 7600000002000000010000000400000000000000 - {e=>-1,a=>80,d=>0,j=>-1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>0} 5000000002000000060000000100000001000000 5000000002000000060000000100000001000000 5000000002000000060000000100000001000000 5000000002000000060000000100000001000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>-1,a=>2,d=>0,j=>0,c=>1,k=>-79,h=>0,b=>1,g=>0,f=>0,i=>0} 0200000003000000020000000000000000000000b1ffffff 0200000003000000020000000000000000000000b1ffffff 0200000003000000020000000000000000000000b1ffffff 0200000003000000020000000000000000000000b1ffffff - {e=>0,a=>-88,d=>1,j=>0,c=>1,k=>-90,h=>0,b=>0,g=>-1,f=>0,i=>0} a8ffffff02000000010000000100000000000000a6ffffff a8ffffff02000000010000000100000000000000a6ffffff a8ffffff02000000010000000100000000000000a6ffffff a8ffffff02000000010000000100000000000000a6ffffff - {e=>0,a=>-63,d=>0,j=>-1,c=>1,k=>22,h=>-1,b=>0,g=>0,f=>-1,i=>0} c1ffffff0200000004000000020000000100000016000000 c1ffffff0200000004000000020000000100000016000000 c1ffffff0200000004000000020000000100000016000000 c1ffffff0200000004000000020000000100000016000000 - {e=>0,a=>23,d=>1,j=>0,c=>1,k=>21,h=>0,b=>1,g=>-1,f=>-1,i=>0} 170000000300000005000000010000000000000015000000 170000000300000005000000010000000000000015000000 170000000300000005000000010000000000000015000000 170000000300000005000000010000000000000015000000 - {e=>-1,a=>84,d=>1,j=>-1,c=>1,k=>47,h=>0,b=>1,g=>-1,f=>0,i=>-1} 54000000030000000300000005000000010000002f000000 54000000030000000300000005000000010000002f000000 54000000030000000300000005000000010000002f000000 54000000030000000300000005000000010000002f000000 = struct mixed2 { unsigned int a:2; }; - {a=>1} 01000000 01000000 01000000 01000000 - {a=>2} 02000000 02000000 02000000 02000000 - {a=>2} 02000000 02000000 02000000 02000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; }; - {a=>0,b=>0} 00000000 00000000 00000000 00000000 - {a=>0,b=>2} 08000000 08000000 08000000 08000000 - {a=>3,b=>3} 0f000000 0f000000 0f000000 0f000000 - {a=>2,b=>1} 06000000 06000000 06000000 06000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; }; - {a=>2,b=>1} 06000000 06000000 06000000 06000000 - {a=>0,b=>3} 0c000000 0c000000 0c000000 0c000000 - {a=>2,b=>2} 0a000000 0a000000 0a000000 0a000000 - {a=>3,b=>0} 03000000 03000000 03000000 03000000 - {a=>3,b=>1} 07000000 07000000 07000000 07000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; }; - {c=>0,a=>3,b=>2} 0b00000000000000 0b00000000000000 0b00000000000000 0b00000000000000 - {c=>2,a=>2,b=>3} 0e00000002000000 0e00000002000000 0e00000002000000 0e00000002000000 - {c=>3,a=>2,b=>2} 0a00000003000000 0a00000003000000 0a00000003000000 0a00000003000000 - {c=>1,a=>2,b=>3} 0e00000001000000 0e00000001000000 0e00000001000000 0e00000001000000 - {c=>1,a=>0,b=>1} 0400000001000000 0400000001000000 0400000001000000 0400000001000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; }; - {c=>0,a=>2,b=>2,d=>-1} 0a0000000c000000 0a0000000c000000 0a0000000c000000 0a0000000c000000 - {c=>1,a=>0,b=>1,d=>0} 0400000001000000 0400000001000000 0400000001000000 0400000001000000 - {c=>2,a=>2,b=>1,d=>0} 0600000002000000 0600000002000000 0600000002000000 0600000002000000 - {c=>2,a=>0,b=>2,d=>0} 0800000002000000 0800000002000000 0800000002000000 0800000002000000 - {c=>1,a=>1,b=>3,d=>0} 0d00000001000000 0d00000001000000 0d00000001000000 0d00000001000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; }; - {e=>1,c=>0,a=>1,b=>2,d=>-2} 0900000018000000 0900000018000000 0900000018000000 0900000018000000 - {e=>0,c=>1,a=>0,b=>2,d=>-1} 080000000d000000 080000000d000000 080000000d000000 080000000d000000 - {e=>-2,c=>3,a=>3,b=>1,d=>1} 0700000027000000 0700000027000000 0700000027000000 0700000027000000 - {e=>1,c=>3,a=>0,b=>1,d=>-1} 040000001f000000 040000001f000000 040000001f000000 040000001f000000 - {e=>-2,c=>0,a=>0,b=>3,d=>-2} 0c00000028000000 0c00000028000000 0c00000028000000 0c00000028000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; }; - {e=>-1,c=>3,a=>2,b=>1,d=>1} 0600000037000000 0600000037000000 0600000037000000 0600000037000000 - {e=>-2,c=>0,a=>1,b=>2,d=>-2} 0900000028000000 0900000028000000 0900000028000000 0900000028000000 - {e=>0,c=>3,a=>2,b=>2,d=>0} 0a00000003000000 0a00000003000000 0a00000003000000 0a00000003000000 - {e=>1,c=>2,a=>1,b=>2,d=>-2} 090000001a000000 090000001a000000 090000001a000000 090000001a000000 - {e=>1,c=>2,a=>2,b=>3,d=>0} 0e00000012000000 0e00000012000000 0e00000012000000 0e00000012000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; }; - {e=>0,c=>1,a=>2,b=>3,d=>0,f=>-1} 0e0000000100000003000000 0e0000000100000003000000 0e0000000100000003000000 0e0000000100000003000000 - {e=>0,c=>0,a=>0,b=>2,d=>-1,f=>1} 080000000c00000001000000 080000000c00000001000000 080000000c00000001000000 080000000c00000001000000 - {e=>0,c=>2,a=>0,b=>0,d=>0,f=>-2} 000000000200000002000000 000000000200000002000000 000000000200000002000000 000000000200000002000000 - {e=>-2,c=>3,a=>2,b=>1,d=>-2,f=>-2} 060000002b00000002000000 060000002b00000002000000 060000002b00000002000000 060000002b00000002000000 - {e=>-2,c=>2,a=>0,b=>3,d=>-2,f=>-1} 0c0000002a00000003000000 0c0000002a00000003000000 0c0000002a00000003000000 0c0000002a00000003000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; }; - {e=>0,c=>2,a=>1,g=>-1,b=>3,d=>1,f=>-1} 0d000000060000000f000000 0d000000060000000f000000 0d000000060000000f000000 0d000000060000000f000000 - {e=>1,c=>2,a=>2,g=>1,b=>2,d=>1,f=>1} 0a0000001600000005000000 0a0000001600000005000000 0a0000001600000005000000 0a0000001600000005000000 - {e=>0,c=>2,a=>2,g=>-1,b=>2,d=>-2,f=>-1} 0a0000000a0000000f000000 0a0000000a0000000f000000 0a0000000a0000000f000000 0a0000000a0000000f000000 - {e=>-2,c=>0,a=>2,g=>-2,b=>1,d=>-1,f=>1} 060000002c00000009000000 060000002c00000009000000 060000002c00000009000000 060000002c00000009000000 - {e=>-1,c=>3,a=>1,g=>-1,b=>0,d=>0,f=>0} 01000000330000000c000000 01000000330000000c000000 01000000330000000c000000 01000000330000000c000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; }; - {e=>-2,a=>0,d=>1,c=>2,h=>-1,b=>1,g=>-2,f=>-2} 04000000260000003a000000 04000000260000003a000000 04000000260000003a000000 04000000260000003a000000 - {e=>-2,a=>0,d=>1,c=>0,h=>0,b=>0,g=>1,f=>0} 000000002400000004000000 000000002400000004000000 000000002400000004000000 000000002400000004000000 - {e=>1,a=>1,d=>1,c=>1,h=>0,b=>0,g=>-1,f=>-2} 01000000150000000e000000 01000000150000000e000000 01000000150000000e000000 01000000150000000e000000 - {e=>0,a=>3,d=>0,c=>0,h=>1,b=>2,g=>0,f=>1} 0b0000000000000011000000 0b0000000000000011000000 0b0000000000000011000000 0b0000000000000011000000 - {e=>-1,a=>1,d=>0,c=>1,h=>0,b=>0,g=>0,f=>0} 010000003100000000000000 010000003100000000000000 010000003100000000000000 010000003100000000000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; }; - {e=>-2,a=>0,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>-2} 040000002000000032000000 040000002000000032000000 040000002000000032000000 040000002000000032000000 - {e=>0,a=>3,d=>-2,c=>2,h=>-1,b=>3,g=>-1,f=>-2} 0f0000000a0000003e000000 0f0000000a0000003e000000 0f0000000a0000003e000000 0f0000000a0000003e000000 - {e=>-1,a=>0,d=>0,c=>1,h=>-1,b=>0,g=>-1,f=>0} 00000000310000003c000000 00000000310000003c000000 00000000310000003c000000 00000000310000003c000000 - {e=>0,a=>3,d=>-2,c=>0,h=>1,b=>2,g=>-2,f=>1} 0b0000000800000019000000 0b0000000800000019000000 0b0000000800000019000000 0b0000000800000019000000 - {e=>-1,a=>2,d=>0,c=>1,h=>1,b=>0,g=>0,f=>1} 020000003100000011000000 020000003100000011000000 020000003100000011000000 020000003100000011000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; int i:2; }; - {e=>0,a=>0,d=>0,c=>2,h=>-1,b=>2,g=>1,f=>0,i=>1} 08000000020000003400000001000000 08000000020000003400000001000000 08000000020000003400000001000000 08000000020000003400000001000000 - {e=>0,a=>0,d=>-2,c=>0,h=>-1,b=>0,g=>-2,f=>1,i=>1} 00000000080000003900000001000000 00000000080000003900000001000000 00000000080000003900000001000000 00000000080000003900000001000000 - {e=>-1,a=>2,d=>0,c=>0,h=>0,b=>1,g=>-2,f=>0,i=>-1} 06000000300000000800000003000000 06000000300000000800000003000000 06000000300000000800000003000000 06000000300000000800000003000000 - {e=>1,a=>0,d=>0,c=>2,h=>0,b=>2,g=>1,f=>0,i=>1} 08000000120000000400000001000000 08000000120000000400000001000000 08000000120000000400000001000000 08000000120000000400000001000000 - {e=>0,a=>3,d=>-1,c=>0,h=>-1,b=>2,g=>-2,f=>0,i=>-2} 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; int i:2; int j; }; - {e=>-2,a=>1,d=>0,j=>11,c=>0,h=>-2,b=>1,g=>1,f=>-1,i=>-1} 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 - {e=>1,a=>2,d=>-2,j=>76,c=>3,h=>-1,b=>1,g=>0,f=>-1,i=>1} 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 - {e=>1,a=>3,d=>0,j=>-66,c=>0,h=>-2,b=>3,g=>-2,f=>-1,i=>-2} 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff - {e=>-1,a=>0,d=>0,j=>-99,c=>1,h=>0,b=>1,g=>-2,f=>0,i=>1} 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff - {e=>-1,a=>2,d=>1,j=>94,c=>3,h=>-2,b=>3,g=>1,f=>-2,i=>-2} 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 = struct mixed2 { char a; unsigned int b:2; }; - {a=>-56,b=>3} c803000000 c80003000000 c800000003000000 c800000003000000 - {a=>127,b=>0} 7f00000000 7f0000000000 7f00000000000000 7f00000000000000 - {a=>43,b=>2} 2b02000000 2b0002000000 2b00000002000000 2b00000002000000 - {a=>-28,b=>1} e401000000 e40001000000 e400000001000000 e400000001000000 - {a=>38,b=>0} 2600000000 260000000000 2600000000000000 2600000000000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; }; - {c=>0,a=>35,b=>1} 2301000000 230001000000 2300000001000000 2300000001000000 - {c=>0,a=>53,b=>3} 3503000000 350003000000 3500000003000000 3500000003000000 - {c=>3,a=>120,b=>0} 780c000000 78000c000000 780000000c000000 780000000c000000 - {c=>3,a=>-123,b=>1} 850d000000 85000d000000 850000000d000000 850000000d000000 - {c=>1,a=>29,b=>3} 1d07000000 1d0007000000 1d00000007000000 1d00000007000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>2,a=>79,b=>2} 4f0a000000 4f000a000000 4f0000000a000000 4f0000000a000000 - {c=>1,a=>-102,b=>2} 9a06000000 9a0006000000 9a00000006000000 9a00000006000000 - {c=>0,a=>-112,b=>1} 9001000000 900001000000 9000000001000000 9000000001000000 - {c=>0,a=>86,b=>0} 5600000000 560000000000 5600000000000000 5600000000000000 - {c=>2,a=>-112,b=>2} 900a000000 90000a000000 900000000a000000 900000000a000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>1,a=>9,b=>1,d=>2} 090500000002000000 09000500000002000000 090000000500000002000000 090000000500000002000000 - {c=>2,a=>-42,b=>0,d=>3} d60800000003000000 d6000800000003000000 d60000000800000003000000 d60000000800000003000000 - {c=>2,a=>65,b=>2,d=>2} 410a00000002000000 41000a00000002000000 410000000a00000002000000 410000000a00000002000000 - {c=>1,a=>-14,b=>2,d=>0} f20600000000000000 f2000600000000000000 f20000000600000000000000 f20000000600000000000000 - {c=>3,a=>-69,b=>1,d=>1} bb0d00000001000000 bb000d00000001000000 bb0000000d00000001000000 bb0000000d00000001000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>0,c=>1,a=>-38,b=>2,d=>1} da0600000001000000 da000600000001000000 da0000000600000001000000 da0000000600000001000000 - {e=>0,c=>0,a=>66,b=>2,d=>1} 420200000001000000 42000200000001000000 420000000200000001000000 420000000200000001000000 - {e=>1,c=>2,a=>-56,b=>1,d=>2} c80900000006000000 c8000900000006000000 c80000000900000006000000 c80000000900000006000000 - {e=>-1,c=>1,a=>120,b=>1,d=>2} 78050000000e000000 7800050000000e000000 78000000050000000e000000 78000000050000000e000000 - {e=>0,c=>2,a=>62,b=>0,d=>3} 3e0800000003000000 3e000800000003000000 3e0000000800000003000000 3e0000000800000003000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>1,c=>3,a=>-41,b=>1,d=>2,f=>0} d70d00000006000000 d7000d00000006000000 d70000000d00000006000000 d70000000d00000006000000 - {e=>-2,c=>2,a=>100,b=>2,d=>1,f=>1} 640a00000019000000 64000a00000019000000 640000000a00000019000000 640000000a00000019000000 - {e=>1,c=>0,a=>86,b=>0,d=>3,f=>1} 560000000017000000 56000000000017000000 560000000000000017000000 560000000000000017000000 - {e=>1,c=>3,a=>-89,b=>3,d=>2,f=>-2} a70f00000026000000 a7000f00000026000000 a70000000f00000026000000 a70000000f00000026000000 - {e=>-1,c=>3,a=>-109,b=>3,d=>0,f=>1} 930f0000001c000000 93000f0000001c000000 930000000f0000001c000000 930000000f0000001c000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>-2,c=>0,a=>-11,b=>1,d=>3,f=>1} f5010000001b000000 f500010000001b000000 f5000000010000001b000000 f5000000010000001b000000 - {e=>-2,c=>0,a=>11,b=>0,d=>0,f=>1} 0b0000000018000000 0b000000000018000000 0b0000000000000018000000 0b0000000000000018000000 - {e=>0,c=>3,a=>100,b=>1,d=>3,f=>0} 640d00000003000000 64000d00000003000000 640000000d00000003000000 640000000d00000003000000 - {e=>0,c=>3,a=>-21,b=>2,d=>0,f=>-2} eb0e00000020000000 eb000e00000020000000 eb0000000e00000020000000 eb0000000e00000020000000 - {e=>1,c=>0,a=>-82,b=>1,d=>1,f=>-1} ae0100000035000000 ae000100000035000000 ae0000000100000035000000 ae0000000100000035000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>1,c=>1,a=>-87,g=>-2,b=>0,d=>0,f=>0} a9040000000400000002000000 a900040000000400000002000000 a9000000040000000400000002000000 a9000000040000000400000002000000 - {e=>-2,c=>1,a=>1,g=>-2,b=>0,d=>0,f=>-2} 01040000002800000002000000 0100040000002800000002000000 01000000040000002800000002000000 01000000040000002800000002000000 - {e=>-1,c=>2,a=>107,g=>-2,b=>3,d=>3,f=>-1} 6b0b0000003f00000002000000 6b000b0000003f00000002000000 6b0000000b0000003f00000002000000 6b0000000b0000003f00000002000000 - {e=>-1,c=>1,a=>-44,g=>0,b=>0,d=>0,f=>-1} d4040000003c00000000000000 d400040000003c00000000000000 d4000000040000003c00000000000000 d4000000040000003c00000000000000 - {e=>-1,c=>2,a=>-40,g=>-1,b=>0,d=>3,f=>0} d8080000000f00000003000000 d800080000000f00000003000000 d8000000080000000f00000003000000 d8000000080000000f00000003000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>-2,a=>30,d=>2,c=>0,h=>-1,b=>1,g=>-2,f=>-1} 1e010000003a0000000e000000 1e00010000003a0000000e000000 1e000000010000003a0000000e000000 1e000000010000003a0000000e000000 - {e=>1,a=>52,d=>3,c=>0,h=>-2,b=>2,g=>0,f=>0} 34020000000700000008000000 3400020000000700000008000000 34000000020000000700000008000000 34000000020000000700000008000000 - {e=>1,a=>-125,d=>2,c=>2,h=>1,b=>0,g=>1,f=>-1} 83080000003600000005000000 8300080000003600000005000000 83000000080000003600000005000000 83000000080000003600000005000000 - {e=>-1,a=>70,d=>0,c=>3,h=>-1,b=>3,g=>1,f=>-1} 460f0000003c0000000d000000 46000f0000003c0000000d000000 460000000f0000003c0000000d000000 460000000f0000003c0000000d000000 - {e=>0,a=>-57,d=>2,c=>3,h=>1,b=>0,g=>-1,f=>-1} c70c0000003200000007000000 c7000c0000003200000007000000 c70000000c0000003200000007000000 c70000000c0000003200000007000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-2,a=>122,d=>0,c=>1,h=>0,b=>1,g=>0,f=>0,i=>-2} 7a050000000800000020000000 7a00050000000800000020000000 7a000000050000000800000020000000 7a000000050000000800000020000000 - {e=>-2,a=>76,d=>3,c=>3,h=>-1,b=>2,g=>0,f=>-1,i=>-1} 4c0e0000003b0000003c000000 4c000e0000003b0000003c000000 4c0000000e0000003b0000003c000000 4c0000000e0000003b0000003c000000 - {e=>1,a=>56,d=>3,c=>2,h=>-1,b=>3,g=>-1,f=>1,i=>0} 380b000000170000000f000000 38000b000000170000000f000000 380000000b000000170000000f000000 380000000b000000170000000f000000 - {e=>-2,a=>79,d=>0,c=>1,h=>1,b=>2,g=>-2,f=>0,i=>1} 4f060000000800000016000000 4f00060000000800000016000000 4f000000060000000800000016000000 4f000000060000000800000016000000 - {e=>1,a=>-87,d=>2,c=>1,h=>-1,b=>1,g=>0,f=>0,i=>0} a905000000060000000c000000 a90005000000060000000c000000 a900000005000000060000000c000000 a900000005000000060000000c000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>-1,a=>-90,d=>0,c=>2,h=>1,b=>2,g=>0,f=>-2,i=>-2} a60a0000002c00000024000000 a6000a0000002c00000024000000 a60000000a0000002c00000024000000 a60000000a0000002c00000024000000 - {e=>-2,a=>-119,d=>1,c=>0,h=>0,b=>2,g=>-2,f=>-1,i=>1} 89020000003900000012000000 8900020000003900000012000000 89000000020000003900000012000000 89000000020000003900000012000000 - {e=>1,a=>108,d=>3,c=>3,h=>0,b=>3,g=>-1,f=>-1,i=>1} 6c0f0000003700000013000000 6c000f0000003700000013000000 6c0000000f0000003700000013000000 6c0000000f0000003700000013000000 - {e=>0,a=>-126,d=>0,c=>3,h=>1,b=>2,g=>-2,f=>0,i=>-1} 820e0000000000000036000000 82000e0000000000000036000000 820000000e0000000000000036000000 820000000e0000000000000036000000 - {e=>1,a=>-120,d=>2,c=>2,h=>0,b=>1,g=>-2,f=>0,i=>-1} 88090000000600000032000000 8800090000000600000032000000 88000000090000000600000032000000 88000000090000000600000032000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>1,a=>-105,d=>3,j=>1,c=>3,h=>0,b=>1,g=>-2,f=>-2,i=>0} 970d000000270000000200000001000000 97000d000000270000000200000001000000 970000000d000000270000000200000001000000 970000000d000000270000000200000001000000 - {e=>0,a=>32,d=>0,j=>0,c=>2,h=>1,b=>2,g=>1,f=>-1,i=>-1} 200a000000300000003500000000000000 20000a000000300000003500000000000000 200000000a000000300000003500000000000000 200000000a000000300000003500000000000000 - {e=>1,a=>57,d=>1,j=>-2,c=>2,h=>-1,b=>1,g=>-2,f=>-2,i=>1} 3909000000250000001e00000002000000 390009000000250000001e00000002000000 3900000009000000250000001e00000002000000 3900000009000000250000001e00000002000000 - {e=>0,a=>59,d=>3,j=>-1,c=>0,h=>-2,b=>1,g=>0,f=>1,i=>-2} 3b01000000130000002800000003000000 3b0001000000130000002800000003000000 3b00000001000000130000002800000003000000 3b00000001000000130000002800000003000000 - {e=>-2,a=>68,d=>0,j=>1,c=>0,h=>1,b=>3,g=>0,f=>-2,i=>0} 4403000000280000000400000001000000 440003000000280000000400000001000000 4400000003000000280000000400000001000000 4400000003000000280000000400000001000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>1,a=>-55,d=>1,j=>-2,c=>3,k=>111,h=>-1,b=>1,g=>-1,f=>0,i=>-1} c90d000000050000003f000000020000006f000000 c9000d000000050000003f000000020000006f000000 c90000000d000000050000003f000000020000006f000000 c90000000d000000050000003f000000020000006f000000 - {e=>-2,a=>-69,d=>3,j=>0,c=>0,k=>-83,h=>0,b=>3,g=>0,f=>-1,i=>1} bb030000003b0000001000000000000000adffffff bb00030000003b0000001000000000000000adffffff bb000000030000003b0000001000000000000000adffffff bb000000030000003b0000001000000000000000adffffff - {e=>0,a=>110,d=>0,j=>0,c=>3,k=>116,h=>-1,b=>3,g=>-2,f=>1,i=>-1} 6e0f000000100000003e0000000000000074000000 6e000f000000100000003e0000000000000074000000 6e0000000f000000100000003e0000000000000074000000 6e0000000f000000100000003e0000000000000074000000 - {e=>0,a=>-42,d=>1,j=>-1,c=>0,k=>92,h=>-1,b=>2,g=>1,f=>-2,i=>-2} d602000000210000002d000000030000005c000000 d60002000000210000002d000000030000005c000000 d600000002000000210000002d000000030000005c000000 d600000002000000210000002d000000030000005c000000 - {e=>-1,a=>-34,d=>0,j=>-2,c=>3,k=>22,h=>-2,b=>2,g=>-1,f=>0,i=>0} de0e0000000c0000000b0000000200000016000000 de000e0000000c0000000b0000000200000016000000 de0000000e0000000c0000000b0000000200000016000000 de0000000e0000000c0000000b0000000200000016000000 = struct mixed2 { short a; unsigned int b:2; }; - {a=>-36,b=>3} dcff03000000 dcff03000000 dcff000003000000 dcff000003000000 - {a=>77,b=>0} 4d0000000000 4d0000000000 4d00000000000000 4d00000000000000 - {a=>-125,b=>0} 83ff00000000 83ff00000000 83ff000000000000 83ff000000000000 - {a=>33,b=>0} 210000000000 210000000000 2100000000000000 2100000000000000 - {a=>18,b=>3} 120003000000 120003000000 1200000003000000 1200000003000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>39,b=>2} 27000a000000 27000a000000 270000000a000000 270000000a000000 - {c=>2,a=>-73,b=>3} b7ff0b000000 b7ff0b000000 b7ff00000b000000 b7ff00000b000000 - {c=>2,a=>12,b=>1} 0c0009000000 0c0009000000 0c00000009000000 0c00000009000000 - {c=>1,a=>107,b=>2} 6b0006000000 6b0006000000 6b00000006000000 6b00000006000000 - {c=>0,a=>-10,b=>2} f6ff02000000 f6ff02000000 f6ff000002000000 f6ff000002000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>0,a=>-15,b=>0} f1ff00000000 f1ff00000000 f1ff000000000000 f1ff000000000000 - {c=>2,a=>-103,b=>1} 99ff09000000 99ff09000000 99ff000009000000 99ff000009000000 - {c=>0,a=>106,b=>3} 6a0003000000 6a0003000000 6a00000003000000 6a00000003000000 - {c=>0,a=>77,b=>3} 4d0003000000 4d0003000000 4d00000003000000 4d00000003000000 - {c=>0,a=>-60,b=>2} c4ff02000000 c4ff02000000 c4ff000002000000 c4ff000002000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>3,a=>-90,b=>2,d=>1} a6ff0e00000001000000 a6ff0e00000001000000 a6ff00000e00000001000000 a6ff00000e00000001000000 - {c=>1,a=>-112,b=>3,d=>1} 90ff0700000001000000 90ff0700000001000000 90ff00000700000001000000 90ff00000700000001000000 - {c=>3,a=>-67,b=>0,d=>1} bdff0c00000001000000 bdff0c00000001000000 bdff00000c00000001000000 bdff00000c00000001000000 - {c=>1,a=>-2,b=>0,d=>3} feff0400000003000000 feff0400000003000000 feff00000400000003000000 feff00000400000003000000 - {c=>0,a=>-45,b=>1,d=>1} d3ff0100000001000000 d3ff0100000001000000 d3ff00000100000001000000 d3ff00000100000001000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>-1,c=>2,a=>-104,b=>2,d=>0} 98ff0a0000000c000000 98ff0a0000000c000000 98ff00000a0000000c000000 98ff00000a0000000c000000 - {e=>-2,c=>1,a=>-128,b=>3,d=>2} 80ff070000000a000000 80ff070000000a000000 80ff0000070000000a000000 80ff0000070000000a000000 - {e=>1,c=>3,a=>-119,b=>2,d=>1} 89ff0e00000005000000 89ff0e00000005000000 89ff00000e00000005000000 89ff00000e00000005000000 - {e=>-1,c=>3,a=>31,b=>1,d=>0} 1f000d0000000c000000 1f000d0000000c000000 1f0000000d0000000c000000 1f0000000d0000000c000000 - {e=>-1,c=>0,a=>-28,b=>1,d=>0} e4ff010000000c000000 e4ff010000000c000000 e4ff0000010000000c000000 e4ff0000010000000c000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>-1,c=>0,a=>15,b=>3,d=>0,f=>-2} 0f00030000002c000000 0f00030000002c000000 0f000000030000002c000000 0f000000030000002c000000 - {e=>-1,c=>2,a=>-51,b=>3,d=>1,f=>0} cdff0b0000000d000000 cdff0b0000000d000000 cdff00000b0000000d000000 cdff00000b0000000d000000 - {e=>-1,c=>2,a=>-69,b=>1,d=>3,f=>1} bbff090000001f000000 bbff090000001f000000 bbff0000090000001f000000 bbff0000090000001f000000 - {e=>1,c=>3,a=>121,b=>2,d=>1,f=>0} 79000e00000005000000 79000e00000005000000 790000000e00000005000000 790000000e00000005000000 - {e=>0,c=>2,a=>17,b=>3,d=>3,f=>-1} 11000b00000033000000 11000b00000033000000 110000000b00000033000000 110000000b00000033000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>0,c=>1,a=>-102,b=>2,d=>2,f=>-1} 9aff0600000032000000 9aff0600000032000000 9aff00000600000032000000 9aff00000600000032000000 - {e=>-2,c=>2,a=>-45,b=>2,d=>2,f=>-2} d3ff0a0000002a000000 d3ff0a0000002a000000 d3ff00000a0000002a000000 d3ff00000a0000002a000000 - {e=>-2,c=>3,a=>1,b=>0,d=>1,f=>-1} 01000c00000039000000 01000c00000039000000 010000000c00000039000000 010000000c00000039000000 - {e=>1,c=>1,a=>-70,b=>0,d=>1,f=>0} baff0400000005000000 baff0400000005000000 baff00000400000005000000 baff00000400000005000000 - {e=>0,c=>3,a=>-67,b=>3,d=>2,f=>-2} bdff0f00000022000000 bdff0f00000022000000 bdff00000f00000022000000 bdff00000f00000022000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>-1,c=>1,a=>-14,g=>-2,b=>2,d=>3,f=>0} f2ff060000000f00000002000000 f2ff060000000f00000002000000 f2ff0000060000000f00000002000000 f2ff0000060000000f00000002000000 - {e=>0,c=>2,a=>-82,g=>-2,b=>2,d=>0,f=>0} aeff0a0000000000000002000000 aeff0a0000000000000002000000 aeff00000a0000000000000002000000 aeff00000a0000000000000002000000 - {e=>1,c=>1,a=>-117,g=>-1,b=>0,d=>3,f=>0} 8bff040000000700000003000000 8bff040000000700000003000000 8bff0000040000000700000003000000 8bff0000040000000700000003000000 - {e=>1,c=>3,a=>-88,g=>1,b=>3,d=>0,f=>0} a8ff0f0000000400000001000000 a8ff0f0000000400000001000000 a8ff00000f0000000400000001000000 a8ff00000f0000000400000001000000 - {e=>0,c=>3,a=>38,g=>0,b=>3,d=>1,f=>-1} 26000f0000003100000000000000 26000f0000003100000000000000 260000000f0000003100000000000000 260000000f0000003100000000000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>0,a=>14,d=>3,c=>1,h=>-2,b=>2,g=>-2,f=>-2} 0e0006000000230000000a000000 0e0006000000230000000a000000 0e00000006000000230000000a000000 0e00000006000000230000000a000000 - {e=>1,a=>73,d=>0,c=>0,h=>-1,b=>3,g=>0,f=>0} 490003000000040000000c000000 490003000000040000000c000000 4900000003000000040000000c000000 4900000003000000040000000c000000 - {e=>-2,a=>5,d=>2,c=>1,h=>-1,b=>2,g=>1,f=>-2} 0500060000002a0000000d000000 0500060000002a0000000d000000 05000000060000002a0000000d000000 05000000060000002a0000000d000000 - {e=>0,a=>-57,d=>2,c=>0,h=>-1,b=>0,g=>0,f=>1} c7ff00000000120000000c000000 c7ff00000000120000000c000000 c7ff000000000000120000000c000000 c7ff000000000000120000000c000000 - {e=>-1,a=>-21,d=>0,c=>3,h=>-1,b=>0,g=>-1,f=>1} ebff0c0000001c0000000f000000 ebff0c0000001c0000000f000000 ebff00000c0000001c0000000f000000 ebff00000c0000001c0000000f000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-2,a=>64,d=>3,c=>1,h=>1,b=>0,g=>1,f=>0,i=>-2} 4000040000000b00000025000000 4000040000000b00000025000000 40000000040000000b00000025000000 40000000040000000b00000025000000 - {e=>-1,a=>-28,d=>2,c=>0,h=>-2,b=>3,g=>-1,f=>-1,i=>-1} e4ff030000003e0000003b000000 e4ff030000003e0000003b000000 e4ff0000030000003e0000003b000000 e4ff0000030000003e0000003b000000 - {e=>-1,a=>16,d=>0,c=>1,h=>0,b=>2,g=>-1,f=>1,i=>-1} 1000060000001c00000033000000 1000060000001c00000033000000 10000000060000001c00000033000000 10000000060000001c00000033000000 - {e=>1,a=>-116,d=>0,c=>2,h=>-1,b=>3,g=>0,f=>-2,i=>0} 8cff0b000000240000000c000000 8cff0b000000240000000c000000 8cff00000b000000240000000c000000 8cff00000b000000240000000c000000 - {e=>0,a=>-24,d=>0,c=>0,h=>-1,b=>1,g=>1,f=>-2,i=>0} e8ff01000000200000000d000000 e8ff01000000200000000d000000 e8ff000001000000200000000d000000 e8ff000001000000200000000d000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-98,d=>3,c=>1,h=>-2,b=>3,g=>-2,f=>1,i=>-1} 9eff07000000130000003a000000 9eff07000000130000003a000000 9eff000007000000130000003a000000 9eff000007000000130000003a000000 - {e=>1,a=>87,d=>3,c=>2,h=>-1,b=>2,g=>-1,f=>-2,i=>-1} 57000a000000270000003f000000 57000a000000270000003f000000 570000000a000000270000003f000000 570000000a000000270000003f000000 - {e=>1,a=>-69,d=>2,c=>1,h=>0,b=>3,g=>0,f=>-2,i=>-1} bbff070000002600000030000000 bbff070000002600000030000000 bbff0000070000002600000030000000 bbff0000070000002600000030000000 - {e=>-1,a=>-28,d=>3,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>-2} e4ff010000000f0000002f000000 e4ff010000000f0000002f000000 e4ff0000010000000f0000002f000000 e4ff0000010000000f0000002f000000 - {e=>0,a=>58,d=>3,c=>3,h=>0,b=>3,g=>-2,f=>-1,i=>0} 3a000f0000003300000002000000 3a000f0000003300000002000000 3a0000000f0000003300000002000000 3a0000000f0000003300000002000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>0,a=>-102,d=>3,j=>-2,c=>1,h=>0,b=>2,g=>0,f=>0,i=>-1} 9aff06000000030000003000000002000000 9aff06000000030000003000000002000000 9aff000006000000030000003000000002000000 9aff000006000000030000003000000002000000 - {e=>-1,a=>-12,d=>1,j=>1,c=>1,h=>-2,b=>0,g=>-2,f=>1,i=>-2} f4ff040000001d0000002a00000001000000 f4ff040000001d0000002a00000001000000 f4ff0000040000001d0000002a00000001000000 f4ff0000040000001d0000002a00000001000000 - {e=>-2,a=>98,d=>3,j=>1,c=>0,h=>0,b=>0,g=>-1,f=>-2,i=>-2} 6200000000002b0000002300000001000000 6200000000002b0000002300000001000000 62000000000000002b0000002300000001000000 62000000000000002b0000002300000001000000 - {e=>-1,a=>-38,d=>3,j=>-1,c=>1,h=>-1,b=>1,g=>-2,f=>0,i=>1} daff050000000f0000001e00000003000000 daff050000000f0000001e00000003000000 daff0000050000000f0000001e00000003000000 daff0000050000000f0000001e00000003000000 - {e=>1,a=>0,d=>2,j=>-2,c=>1,h=>0,b=>2,g=>1,f=>-2,i=>0} 000006000000260000000100000002000000 000006000000260000000100000002000000 0000000006000000260000000100000002000000 0000000006000000260000000100000002000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>-1,a=>-67,d=>0,j=>-2,c=>2,k=>-19,h=>1,b=>0,g=>0,f=>-1,i=>1} bdff080000003c0000001400000002000000edffffff bdff080000003c0000001400000002000000edffffff bdff0000080000003c0000001400000002000000edffffff bdff0000080000003c0000001400000002000000edffffff - {e=>0,a=>-109,d=>2,j=>0,c=>1,k=>116,h=>0,b=>0,g=>1,f=>1,i=>-1} 93ff0400000012000000310000000000000074000000 93ff0400000012000000310000000000000074000000 93ff00000400000012000000310000000000000074000000 93ff00000400000012000000310000000000000074000000 - {e=>0,a=>102,d=>0,j=>1,c=>3,k=>116,h=>1,b=>2,g=>0,f=>1,i=>1} 66000e00000010000000140000000100000074000000 66000e00000010000000140000000100000074000000 660000000e00000010000000140000000100000074000000 660000000e00000010000000140000000100000074000000 - {e=>0,a=>27,d=>1,j=>-1,c=>0,k=>-116,h=>-2,b=>2,g=>1,f=>-1,i=>-1} 1b00020000003100000039000000030000008cffffff 1b00020000003100000039000000030000008cffffff 1b000000020000003100000039000000030000008cffffff 1b000000020000003100000039000000030000008cffffff - {e=>1,a=>-68,d=>0,j=>-1,c=>3,k=>-47,h=>-1,b=>1,g=>0,f=>0,i=>-2} bcff0d000000040000002c00000003000000d1ffffff bcff0d000000040000002c00000003000000d1ffffff bcff00000d000000040000002c00000003000000d1ffffff bcff00000d000000040000002c00000003000000d1ffffff = struct mixed2 { int a; unsigned int b:2; }; - {a=>-99,b=>3} 9dffffff03000000 9dffffff03000000 9dffffff03000000 9dffffff03000000 - {a=>-83,b=>3} adffffff03000000 adffffff03000000 adffffff03000000 adffffff03000000 - {a=>15,b=>2} 0f00000002000000 0f00000002000000 0f00000002000000 0f00000002000000 - {a=>60,b=>1} 3c00000001000000 3c00000001000000 3c00000001000000 3c00000001000000 - {a=>15,b=>2} 0f00000002000000 0f00000002000000 0f00000002000000 0f00000002000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>64,b=>2} 400000000a000000 400000000a000000 400000000a000000 400000000a000000 - {c=>3,a=>21,b=>3} 150000000f000000 150000000f000000 150000000f000000 150000000f000000 - {c=>1,a=>88,b=>1} 5800000005000000 5800000005000000 5800000005000000 5800000005000000 - {c=>2,a=>-84,b=>2} acffffff0a000000 acffffff0a000000 acffffff0a000000 acffffff0a000000 - {c=>3,a=>127,b=>2} 7f0000000e000000 7f0000000e000000 7f0000000e000000 7f0000000e000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>0,a=>-11,b=>2} f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 - {c=>1,a=>-114,b=>1} 8effffff05000000 8effffff05000000 8effffff05000000 8effffff05000000 - {c=>3,a=>-66,b=>1} beffffff0d000000 beffffff0d000000 beffffff0d000000 beffffff0d000000 - {c=>2,a=>-101,b=>1} 9bffffff09000000 9bffffff09000000 9bffffff09000000 9bffffff09000000 - {c=>2,a=>51,b=>3} 330000000b000000 330000000b000000 330000000b000000 330000000b000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>3,a=>71,b=>3,d=>2} 470000000f00000002000000 470000000f00000002000000 470000000f00000002000000 470000000f00000002000000 - {c=>0,a=>-59,b=>3,d=>2} c5ffffff0300000002000000 c5ffffff0300000002000000 c5ffffff0300000002000000 c5ffffff0300000002000000 - {c=>1,a=>-34,b=>1,d=>2} deffffff0500000002000000 deffffff0500000002000000 deffffff0500000002000000 deffffff0500000002000000 - {c=>1,a=>-50,b=>0,d=>2} ceffffff0400000002000000 ceffffff0400000002000000 ceffffff0400000002000000 ceffffff0400000002000000 - {c=>2,a=>98,b=>3,d=>1} 620000000b00000001000000 620000000b00000001000000 620000000b00000001000000 620000000b00000001000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>0,c=>2,a=>-115,b=>0,d=>3} 8dffffff0800000003000000 8dffffff0800000003000000 8dffffff0800000003000000 8dffffff0800000003000000 - {e=>0,c=>2,a=>120,b=>0,d=>1} 780000000800000001000000 780000000800000001000000 780000000800000001000000 780000000800000001000000 - {e=>-1,c=>3,a=>-67,b=>0,d=>1} bdffffff0c0000000d000000 bdffffff0c0000000d000000 bdffffff0c0000000d000000 bdffffff0c0000000d000000 - {e=>-2,c=>2,a=>52,b=>2,d=>0} 340000000a00000008000000 340000000a00000008000000 340000000a00000008000000 340000000a00000008000000 - {e=>-1,c=>2,a=>94,b=>3,d=>2} 5e0000000b0000000e000000 5e0000000b0000000e000000 5e0000000b0000000e000000 5e0000000b0000000e000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>0,c=>3,a=>-74,b=>1,d=>1,f=>1} b6ffffff0d00000011000000 b6ffffff0d00000011000000 b6ffffff0d00000011000000 b6ffffff0d00000011000000 - {e=>-1,c=>3,a=>117,b=>2,d=>1,f=>1} 750000000e0000001d000000 750000000e0000001d000000 750000000e0000001d000000 750000000e0000001d000000 - {e=>1,c=>1,a=>-117,b=>0,d=>2,f=>-2} 8bffffff0400000026000000 8bffffff0400000026000000 8bffffff0400000026000000 8bffffff0400000026000000 - {e=>-2,c=>1,a=>-90,b=>1,d=>0,f=>-2} a6ffffff0500000028000000 a6ffffff0500000028000000 a6ffffff0500000028000000 a6ffffff0500000028000000 - {e=>-1,c=>2,a=>41,b=>0,d=>3,f=>0} 29000000080000000f000000 29000000080000000f000000 29000000080000000f000000 29000000080000000f000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>0,c=>3,a=>-75,b=>1,d=>1,f=>0} b5ffffff0d00000001000000 b5ffffff0d00000001000000 b5ffffff0d00000001000000 b5ffffff0d00000001000000 - {e=>1,c=>3,a=>-74,b=>1,d=>1,f=>0} b6ffffff0d00000005000000 b6ffffff0d00000005000000 b6ffffff0d00000005000000 b6ffffff0d00000005000000 - {e=>-2,c=>0,a=>7,b=>2,d=>2,f=>0} 07000000020000000a000000 07000000020000000a000000 07000000020000000a000000 07000000020000000a000000 - {e=>-1,c=>0,a=>-14,b=>3,d=>2,f=>-1} f2ffffff030000003e000000 f2ffffff030000003e000000 f2ffffff030000003e000000 f2ffffff030000003e000000 - {e=>0,c=>2,a=>-68,b=>1,d=>3,f=>-2} bcffffff0900000023000000 bcffffff0900000023000000 bcffffff0900000023000000 bcffffff0900000023000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>-1,c=>0,a=>-121,g=>-2,b=>1,d=>0,f=>-2} 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 - {e=>-2,c=>2,a=>125,g=>-2,b=>3,d=>3,f=>-2} 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 - {e=>-2,c=>0,a=>23,g=>-2,b=>0,d=>0,f=>1} 17000000000000001800000002000000 17000000000000001800000002000000 17000000000000001800000002000000 17000000000000001800000002000000 - {e=>-2,c=>0,a=>-89,g=>1,b=>2,d=>2,f=>-1} a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 - {e=>-1,c=>3,a=>46,g=>1,b=>1,d=>1,f=>0} 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>-2,a=>-37,d=>1,c=>1,h=>0,b=>0,g=>1,f=>-1} dbffffff040000003900000001000000 dbffffff040000003900000001000000 dbffffff040000003900000001000000 dbffffff040000003900000001000000 - {e=>0,a=>-96,d=>3,c=>3,h=>1,b=>0,g=>-2,f=>1} a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 - {e=>-1,a=>-27,d=>1,c=>3,h=>-1,b=>1,g=>1,f=>-1} e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 - {e=>-2,a=>-117,d=>3,c=>2,h=>-2,b=>1,g=>-1,f=>-2} 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 - {e=>1,a=>-10,d=>0,c=>0,h=>-2,b=>0,g=>1,f=>1} f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>1,a=>-4,d=>3,c=>3,h=>-2,b=>0,g=>1,f=>-1,i=>-1} fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 - {e=>0,a=>98,d=>2,c=>2,h=>0,b=>2,g=>0,f=>1,i=>-2} 620000000a0000001200000020000000 620000000a0000001200000020000000 620000000a0000001200000020000000 620000000a0000001200000020000000 - {e=>1,a=>40,d=>3,c=>2,h=>1,b=>3,g=>0,f=>-1,i=>1} 280000000b0000003700000014000000 280000000b0000003700000014000000 280000000b0000003700000014000000 280000000b0000003700000014000000 - {e=>0,a=>-91,d=>0,c=>3,h=>0,b=>2,g=>-1,f=>-1,i=>-1} a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 - {e=>0,a=>111,d=>2,c=>1,h=>-1,b=>0,g=>-2,f=>-2,i=>-1} 6f00000004000000220000003e000000 6f00000004000000220000003e000000 6f00000004000000220000003e000000 6f00000004000000220000003e000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-110,d=>2,c=>3,h=>-1,b=>1,g=>0,f=>-2,i=>0} 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 - {e=>-2,a=>-48,d=>1,c=>0,h=>-2,b=>3,g=>1,f=>0,i=>1} d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 - {e=>-1,a=>107,d=>3,c=>3,h=>0,b=>3,g=>1,f=>1,i=>0} 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 - {e=>-1,a=>23,d=>3,c=>0,h=>-2,b=>0,g=>0,f=>0,i=>1} 17000000000000000f00000018000000 17000000000000000f00000018000000 17000000000000000f00000018000000 17000000000000000f00000018000000 - {e=>-2,a=>-85,d=>3,c=>2,h=>0,b=>1,g=>0,f=>-1,i=>1} abffffff090000003b00000010000000 abffffff090000003b00000010000000 abffffff090000003b00000010000000 abffffff090000003b00000010000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>0,a=>-100,d=>3,j=>-1,c=>2,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 - {e=>1,a=>18,d=>0,j=>1,c=>2,h=>-2,b=>2,g=>1,f=>-2,i=>0} 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 - {e=>-2,a=>-36,d=>1,j=>0,c=>0,h=>-2,b=>2,g=>-1,f=>0,i=>-1} dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 - {e=>1,a=>-45,d=>0,j=>0,c=>0,h=>0,b=>0,g=>1,f=>0,i=>-1} d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 - {e=>-2,a=>103,d=>3,j=>-2,c=>0,h=>1,b=>0,g=>1,f=>0,i=>1} 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>-2,a=>108,d=>3,j=>-2,c=>0,k=>-117,h=>1,b=>0,g=>1,f=>-1,i=>-1} 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff - {e=>-1,a=>43,d=>1,j=>-1,c=>1,k=>16,h=>-2,b=>2,g=>-2,f=>-2,i=>1} 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 - {e=>1,a=>-38,d=>0,j=>0,c=>3,k=>-25,h=>-1,b=>0,g=>-1,f=>0,i=>1} daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff - {e=>0,a=>-93,d=>3,j=>0,c=>1,k=>23,h=>-2,b=>1,g=>-1,f=>0,i=>0} a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 - {e=>0,a=>108,d=>2,j=>-1,c=>1,k=>90,h=>-2,b=>0,g=>-2,f=>0,i=>1} 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 = struct mixed2 { long a; unsigned int b:2; }; - {a=>25,b=>0} 1900000000000000 1900000000000000 1900000000000000 1900000000000000 - {a=>-13,b=>2} f3ffffff02000000 f3ffffff02000000 f3ffffff02000000 f3ffffff02000000 - {a=>-45,b=>3} d3ffffff03000000 d3ffffff03000000 d3ffffff03000000 d3ffffff03000000 - {a=>-4,b=>0} fcffffff00000000 fcffffff00000000 fcffffff00000000 fcffffff00000000 - {a=>121,b=>3} 7900000003000000 7900000003000000 7900000003000000 7900000003000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>-103,b=>2} 99ffffff0a000000 99ffffff0a000000 99ffffff0a000000 99ffffff0a000000 - {c=>1,a=>15,b=>2} 0f00000006000000 0f00000006000000 0f00000006000000 0f00000006000000 - {c=>2,a=>30,b=>1} 1e00000009000000 1e00000009000000 1e00000009000000 1e00000009000000 - {c=>0,a=>77,b=>1} 4d00000001000000 4d00000001000000 4d00000001000000 4d00000001000000 - {c=>0,a=>35,b=>3} 2300000003000000 2300000003000000 2300000003000000 2300000003000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>3,a=>24,b=>2} 180000000e000000 180000000e000000 180000000e000000 180000000e000000 - {c=>1,a=>20,b=>0} 1400000004000000 1400000004000000 1400000004000000 1400000004000000 - {c=>3,a=>-15,b=>2} f1ffffff0e000000 f1ffffff0e000000 f1ffffff0e000000 f1ffffff0e000000 - {c=>1,a=>8,b=>1} 0800000005000000 0800000005000000 0800000005000000 0800000005000000 - {c=>3,a=>79,b=>3} 4f0000000f000000 4f0000000f000000 4f0000000f000000 4f0000000f000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>1,a=>-41,b=>3,d=>0} d7ffffff0700000000000000 d7ffffff0700000000000000 d7ffffff0700000000000000 d7ffffff0700000000000000 - {c=>0,a=>89,b=>3,d=>2} 590000000300000002000000 590000000300000002000000 590000000300000002000000 590000000300000002000000 - {c=>1,a=>72,b=>2,d=>1} 480000000600000001000000 480000000600000001000000 480000000600000001000000 480000000600000001000000 - {c=>3,a=>-32,b=>1,d=>2} e0ffffff0d00000002000000 e0ffffff0d00000002000000 e0ffffff0d00000002000000 e0ffffff0d00000002000000 - {c=>1,a=>96,b=>0,d=>0} 600000000400000000000000 600000000400000000000000 600000000400000000000000 600000000400000000000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>-2,c=>1,a=>52,b=>3,d=>1} 340000000700000009000000 340000000700000009000000 340000000700000009000000 340000000700000009000000 - {e=>-1,c=>2,a=>-124,b=>2,d=>3} 84ffffff0a0000000f000000 84ffffff0a0000000f000000 84ffffff0a0000000f000000 84ffffff0a0000000f000000 - {e=>-1,c=>1,a=>-79,b=>2,d=>1} b1ffffff060000000d000000 b1ffffff060000000d000000 b1ffffff060000000d000000 b1ffffff060000000d000000 - {e=>0,c=>0,a=>-70,b=>2,d=>2} baffffff0200000002000000 baffffff0200000002000000 baffffff0200000002000000 baffffff0200000002000000 - {e=>-1,c=>0,a=>-18,b=>2,d=>1} eeffffff020000000d000000 eeffffff020000000d000000 eeffffff020000000d000000 eeffffff020000000d000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>-1,c=>2,a=>-31,b=>0,d=>2,f=>1} e1ffffff080000001e000000 e1ffffff080000001e000000 e1ffffff080000001e000000 e1ffffff080000001e000000 - {e=>0,c=>2,a=>-103,b=>2,d=>1,f=>0} 99ffffff0a00000001000000 99ffffff0a00000001000000 99ffffff0a00000001000000 99ffffff0a00000001000000 - {e=>-1,c=>2,a=>51,b=>3,d=>1,f=>-1} 330000000b0000003d000000 330000000b0000003d000000 330000000b0000003d000000 330000000b0000003d000000 - {e=>1,c=>3,a=>-94,b=>0,d=>0,f=>-1} a2ffffff0c00000034000000 a2ffffff0c00000034000000 a2ffffff0c00000034000000 a2ffffff0c00000034000000 - {e=>-1,c=>3,a=>-14,b=>0,d=>2,f=>-2} f2ffffff0c0000002e000000 f2ffffff0c0000002e000000 f2ffffff0c0000002e000000 f2ffffff0c0000002e000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>-2,c=>0,a=>80,b=>1,d=>0,f=>0} 500000000100000008000000 500000000100000008000000 500000000100000008000000 500000000100000008000000 - {e=>1,c=>2,a=>12,b=>1,d=>1,f=>-2} 0c0000000900000025000000 0c0000000900000025000000 0c0000000900000025000000 0c0000000900000025000000 - {e=>-2,c=>0,a=>-50,b=>2,d=>3,f=>-1} ceffffff020000003b000000 ceffffff020000003b000000 ceffffff020000003b000000 ceffffff020000003b000000 - {e=>-1,c=>1,a=>95,b=>3,d=>2,f=>-1} 5f000000070000003e000000 5f000000070000003e000000 5f000000070000003e000000 5f000000070000003e000000 - {e=>1,c=>2,a=>99,b=>0,d=>3,f=>0} 630000000800000007000000 630000000800000007000000 630000000800000007000000 630000000800000007000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>1,c=>2,a=>-83,g=>-2,b=>3,d=>2,f=>1} adffffff0b0000001600000002000000 adffffff0b0000001600000002000000 adffffff0b0000001600000002000000 adffffff0b0000001600000002000000 - {e=>1,c=>2,a=>21,g=>-2,b=>3,d=>1,f=>1} 150000000b0000001500000002000000 150000000b0000001500000002000000 150000000b0000001500000002000000 150000000b0000001500000002000000 - {e=>0,c=>2,a=>90,g=>0,b=>0,d=>2,f=>1} 5a000000080000001200000000000000 5a000000080000001200000000000000 5a000000080000001200000000000000 5a000000080000001200000000000000 - {e=>-2,c=>3,a=>-13,g=>-2,b=>2,d=>2,f=>-2} f3ffffff0e0000002a00000002000000 f3ffffff0e0000002a00000002000000 f3ffffff0e0000002a00000002000000 f3ffffff0e0000002a00000002000000 - {e=>-2,c=>0,a=>125,g=>-1,b=>1,d=>1,f=>-2} 7d000000010000002900000003000000 7d000000010000002900000003000000 7d000000010000002900000003000000 7d000000010000002900000003000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>1,a=>-118,d=>0,c=>1,h=>0,b=>2,g=>0,f=>1} 8affffff060000001400000000000000 8affffff060000001400000000000000 8affffff060000001400000000000000 8affffff060000001400000000000000 - {e=>-1,a=>-22,d=>2,c=>1,h=>-2,b=>0,g=>-2,f=>-1} eaffffff040000003e0000000a000000 eaffffff040000003e0000000a000000 eaffffff040000003e0000000a000000 eaffffff040000003e0000000a000000 - {e=>0,a=>35,d=>2,c=>2,h=>1,b=>0,g=>-1,f=>0} 23000000080000000200000007000000 23000000080000000200000007000000 23000000080000000200000007000000 23000000080000000200000007000000 - {e=>1,a=>109,d=>0,c=>0,h=>0,b=>0,g=>1,f=>0} 6d000000000000000400000001000000 6d000000000000000400000001000000 6d000000000000000400000001000000 6d000000000000000400000001000000 - {e=>1,a=>67,d=>1,c=>1,h=>0,b=>0,g=>-2,f=>0} 43000000040000000500000002000000 43000000040000000500000002000000 43000000040000000500000002000000 43000000040000000500000002000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-1,a=>-88,d=>2,c=>3,h=>-1,b=>3,g=>-2,f=>0,i=>-1} a8ffffff0f0000000e0000003e000000 a8ffffff0f0000000e0000003e000000 a8ffffff0f0000000e0000003e000000 a8ffffff0f0000000e0000003e000000 - {e=>-1,a=>117,d=>0,c=>2,h=>-1,b=>2,g=>-1,f=>0,i=>0} 750000000a0000000c0000000f000000 750000000a0000000c0000000f000000 750000000a0000000c0000000f000000 750000000a0000000c0000000f000000 - {e=>-1,a=>119,d=>1,c=>0,h=>-1,b=>2,g=>1,f=>-2,i=>1} 77000000020000002d0000001d000000 77000000020000002d0000001d000000 77000000020000002d0000001d000000 77000000020000002d0000001d000000 - {e=>0,a=>-126,d=>1,c=>2,h=>1,b=>2,g=>0,f=>0,i=>-2} 82ffffff0a0000000100000024000000 82ffffff0a0000000100000024000000 82ffffff0a0000000100000024000000 82ffffff0a0000000100000024000000 - {e=>-1,a=>-78,d=>3,c=>2,h=>-2,b=>2,g=>-2,f=>-1,i=>1} b2ffffff0a0000003f0000001a000000 b2ffffff0a0000003f0000001a000000 b2ffffff0a0000003f0000001a000000 b2ffffff0a0000003f0000001a000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-53,d=>0,c=>3,h=>-1,b=>1,g=>1,f=>1,i=>0} cbffffff0d000000100000000d000000 cbffffff0d000000100000000d000000 cbffffff0d000000100000000d000000 cbffffff0d000000100000000d000000 - {e=>-2,a=>-108,d=>2,c=>0,h=>-1,b=>2,g=>-1,f=>0,i=>-2} 94ffffff020000000a0000002f000000 94ffffff020000000a0000002f000000 94ffffff020000000a0000002f000000 94ffffff020000000a0000002f000000 - {e=>1,a=>-117,d=>1,c=>1,h=>0,b=>1,g=>-2,f=>0,i=>-1} 8bffffff050000000500000032000000 8bffffff050000000500000032000000 8bffffff050000000500000032000000 8bffffff050000000500000032000000 - {e=>1,a=>121,d=>1,c=>1,h=>-2,b=>0,g=>1,f=>0,i=>1} 79000000040000000500000019000000 79000000040000000500000019000000 79000000040000000500000019000000 79000000040000000500000019000000 - {e=>-2,a=>-2,d=>1,c=>3,h=>-2,b=>0,g=>-1,f=>-2,i=>-2} feffffff0c000000290000002b000000 feffffff0c000000290000002b000000 feffffff0c000000290000002b000000 feffffff0c000000290000002b000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>-1,a=>65,d=>2,j=>-1,c=>3,h=>0,b=>0,g=>1,f=>0,i=>0} 410000000c0000000e0000000100000003000000 410000000c0000000e0000000100000003000000 410000000c0000000e0000000100000003000000 410000000c0000000e0000000100000003000000 - {e=>-1,a=>68,d=>0,j=>1,c=>0,h=>-2,b=>2,g=>-1,f=>-2,i=>-1} 44000000020000002c0000003b00000001000000 44000000020000002c0000003b00000001000000 44000000020000002c0000003b00000001000000 44000000020000002c0000003b00000001000000 - {e=>1,a=>15,d=>3,j=>0,c=>0,h=>-1,b=>3,g=>1,f=>-2,i=>-1} 0f00000003000000270000003d00000000000000 0f00000003000000270000003d00000000000000 0f00000003000000270000003d00000000000000 0f00000003000000270000003d00000000000000 - {e=>-1,a=>-76,d=>3,j=>-2,c=>3,h=>1,b=>2,g=>1,f=>-2,i=>1} b4ffffff0e0000002f0000001500000002000000 b4ffffff0e0000002f0000001500000002000000 b4ffffff0e0000002f0000001500000002000000 b4ffffff0e0000002f0000001500000002000000 - {e=>-1,a=>65,d=>3,j=>1,c=>1,h=>0,b=>2,g=>0,f=>0,i=>0} 41000000060000000f0000000000000001000000 41000000060000000f0000000000000001000000 41000000060000000f0000000000000001000000 41000000060000000f0000000000000001000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>1,a=>-49,d=>0,j=>-2,c=>3,k=>-42,h=>1,b=>0,g=>-2,f=>1,i=>-2} cfffffff0c000000140000002600000002000000d6ffffff cfffffff0c000000140000002600000002000000d6ffffff cfffffff0c000000140000002600000002000000d6ffffff cfffffff0c000000140000002600000002000000d6ffffff - {e=>0,a=>91,d=>3,j=>-2,c=>2,k=>-107,h=>0,b=>3,g=>-2,f=>-2,i=>0} 5b0000000b00000023000000020000000200000095ffffff 5b0000000b00000023000000020000000200000095ffffff 5b0000000b00000023000000020000000200000095ffffff 5b0000000b00000023000000020000000200000095ffffff - {e=>-1,a=>119,d=>0,j=>-1,c=>2,k=>-75,h=>0,b=>0,g=>0,f=>0,i=>1} 77000000080000000c0000001000000003000000b5ffffff 77000000080000000c0000001000000003000000b5ffffff 77000000080000000c0000001000000003000000b5ffffff 77000000080000000c0000001000000003000000b5ffffff - {e=>1,a=>56,d=>2,j=>-2,c=>1,k=>-42,h=>-2,b=>2,g=>0,f=>-1,i=>0} 3800000006000000360000000800000002000000d6ffffff 3800000006000000360000000800000002000000d6ffffff 3800000006000000360000000800000002000000d6ffffff 3800000006000000360000000800000002000000d6ffffff - {e=>0,a=>47,d=>2,j=>1,c=>3,k=>-15,h=>-1,b=>0,g=>-1,f=>0,i=>1} 2f0000000c000000020000001f00000001000000f1ffffff 2f0000000c000000020000001f00000001000000f1ffffff 2f0000000c000000020000001f00000001000000f1ffffff 2f0000000c000000020000001f00000001000000f1ffffff = struct uch_wrap { unsigned char a:3; }; - {a=>1} 01 01 01 01 - {a=>4} 04 04 04 04 - {a=>3} 03 03 03 03 - {a=>1} 01 01 01 01 - {a=>7} 07 07 07 07 = struct uch_wrap { unsigned char a:3; unsigned char b:3; }; - {a=>1,b=>3} 19 19 19 19 - {a=>0,b=>4} 20 20 20 20 - {a=>1,b=>6} 31 31 31 31 - {a=>5,b=>4} 25 25 25 25 - {a=>0,b=>4} 20 20 20 20 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>7,b=>7} 3f04 3f04 3f04 3f04 - {c=>7,a=>3,b=>3} 1b07 1b07 1b07 1b07 - {c=>0,a=>6,b=>5} 2e00 2e00 2e00 2e00 - {c=>3,a=>5,b=>3} 1d03 1d03 1d03 1d03 - {c=>5,a=>6,b=>1} 0e05 0e05 0e05 0e05 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>2,a=>2,b=>6,d=>2} 3212 3212 3212 3212 - {c=>3,a=>2,b=>5,d=>7} 2a3b 2a3b 2a3b 2a3b - {c=>2,a=>6,b=>7,d=>2} 3e12 3e12 3e12 3e12 - {c=>7,a=>6,b=>6,d=>4} 3627 3627 3627 3627 - {c=>7,a=>2,b=>2,d=>7} 123f 123f 123f 123f = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>6,c=>0,a=>7,b=>2,d=>5} 172806 172806 172806 172806 - {e=>0,c=>7,a=>1,b=>5,d=>5} 292f00 292f00 292f00 292f00 - {e=>7,c=>4,a=>7,b=>7,d=>7} 3f3c07 3f3c07 3f3c07 3f3c07 - {e=>2,c=>2,a=>2,b=>6,d=>6} 323202 323202 323202 323202 - {e=>0,c=>5,a=>6,b=>6,d=>5} 362d00 362d00 362d00 362d00 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>2,c=>2,a=>0,b=>7,d=>5,f=>4} 382a22 382a22 382a22 382a22 - {e=>1,c=>5,a=>1,b=>5,d=>5,f=>5} 292d29 292d29 292d29 292d29 - {e=>5,c=>7,a=>1,b=>7,d=>6,f=>4} 393725 393725 393725 393725 - {e=>5,c=>6,a=>6,b=>1,d=>4,f=>1} 0e260d 0e260d 0e260d 0e260d - {e=>6,c=>2,a=>7,b=>1,d=>6,f=>3} 0f321e 0f321e 0f321e 0f321e = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>7,c=>4,a=>5,g=>0,b=>1,d=>1,f=>1} 0d0c0f00 0d0c0f00 0d0c0f00 0d0c0f00 - {e=>3,c=>4,a=>6,g=>2,b=>4,d=>2,f=>0} 26140302 26140302 26140302 26140302 - {e=>2,c=>4,a=>7,g=>6,b=>6,d=>4,f=>6} 37243206 37243206 37243206 37243206 - {e=>0,c=>6,a=>3,g=>0,b=>1,d=>6,f=>1} 0b360800 0b360800 0b360800 0b360800 - {e=>3,c=>7,a=>0,g=>4,b=>4,d=>1,f=>4} 200f2304 200f2304 200f2304 200f2304 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>1,a=>1,d=>4,c=>6,h=>5,b=>3,g=>5,f=>5} 1926292d 1926292d 1926292d 1926292d - {e=>7,a=>4,d=>6,c=>1,h=>0,b=>0,g=>0,f=>3} 04311f00 04311f00 04311f00 04311f00 - {e=>2,a=>6,d=>4,c=>1,h=>5,b=>4,g=>6,f=>3} 26211a2e 26211a2e 26211a2e 26211a2e - {e=>1,a=>2,d=>6,c=>2,h=>6,b=>4,g=>3,f=>0} 22320133 22320133 22320133 22320133 - {e=>0,a=>1,d=>0,c=>3,h=>5,b=>3,g=>4,f=>5} 1903282c 1903282c 1903282c 1903282c = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>6,d=>7,c=>0,h=>5,b=>3,g=>6,f=>2,i=>5} 1e38142e05 1e38142e05 1e38142e05 1e38142e05 - {e=>7,a=>3,d=>1,c=>0,h=>0,b=>2,g=>5,f=>6,i=>6} 1308370506 1308370506 1308370506 1308370506 - {e=>3,a=>2,d=>4,c=>3,h=>6,b=>2,g=>7,f=>7,i=>6} 12233b3706 12233b3706 12233b3706 12233b3706 - {e=>0,a=>3,d=>7,c=>1,h=>7,b=>7,g=>0,f=>4,i=>0} 3b39203800 3b39203800 3b39203800 3b39203800 - {e=>5,a=>7,d=>0,c=>1,h=>3,b=>7,g=>3,f=>6,i=>1} 3f01351b01 3f01351b01 3f01351b01 3f01351b01 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>3,a=>6,d=>1,j=>4,c=>0,h=>4,b=>1,g=>5,f=>4,i=>1} 0e08232521 0e08232521 0e08232521 0e08232521 - {e=>6,a=>1,d=>1,j=>1,c=>2,h=>3,b=>4,g=>0,f=>5,i=>1} 210a2e1809 210a2e1809 210a2e1809 210a2e1809 - {e=>5,a=>2,d=>6,j=>3,c=>7,h=>0,b=>7,g=>1,f=>7,i=>3} 3a373d011b 3a373d011b 3a373d011b 3a373d011b - {e=>6,a=>1,d=>3,j=>3,c=>5,h=>6,b=>1,g=>5,f=>3,i=>7} 091d1e351f 091d1e351f 091d1e351f 091d1e351f - {e=>4,a=>0,d=>5,j=>4,c=>5,h=>2,b=>1,g=>1,f=>1,i=>2} 082d0c1122 082d0c1122 082d0c1122 082d0c1122 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>0,a=>4,d=>4,j=>1,c=>3,k=>2,h=>3,b=>4,g=>2,f=>6,i=>2} 2423301a0a02 2423301a0a02 2423301a0a02 2423301a0a02 - {e=>1,a=>6,d=>5,j=>4,c=>0,k=>1,h=>7,b=>1,g=>4,f=>7,i=>2} 0e28393c2201 0e28393c2201 0e28393c2201 0e28393c2201 - {e=>6,a=>3,d=>6,j=>5,c=>4,k=>1,h=>2,b=>1,g=>2,f=>2,i=>7} 0b3416122f01 0b3416122f01 0b3416122f01 0b3416122f01 - {e=>4,a=>2,d=>5,j=>1,c=>2,k=>7,h=>0,b=>0,g=>1,f=>0,i=>4} 022a04010c07 022a04010c07 022a04010c07 022a04010c07 - {e=>5,a=>0,d=>0,j=>4,c=>6,k=>4,h=>1,b=>3,g=>4,f=>2,i=>2} 1806150c2204 1806150c2204 1806150c2204 1806150c2204 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>1,a=>4,d=>2,j=>3,l=>2,c=>1,k=>0,h=>2,b=>4,g=>2,f=>4,i=>7} 241121121f10 241121121f10 241121121f10 241121121f10 - {e=>3,a=>2,d=>1,j=>0,l=>7,c=>0,k=>0,h=>5,b=>2,g=>6,f=>1,i=>0} 12080b2e0038 12080b2e0038 12080b2e0038 12080b2e0038 - {e=>7,a=>6,d=>5,j=>3,l=>2,c=>7,k=>0,h=>4,b=>0,g=>7,f=>1,i=>5} 062f0f271d10 062f0f271d10 062f0f271d10 062f0f271d10 - {e=>0,a=>3,d=>3,j=>3,l=>1,c=>5,k=>4,h=>3,b=>4,g=>3,f=>5,i=>7} 231d281b1f0c 231d281b1f0c 231d281b1f0c 231d281b1f0c - {e=>2,a=>2,d=>6,j=>1,l=>1,c=>6,k=>7,h=>3,b=>7,g=>5,f=>4,i=>0} 3a36221d080f 3a36221d080f 3a36221d080f 3a36221d080f = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>3,a=>6,m=>7,d=>3,j=>4,l=>4,c=>2,k=>2,h=>5,b=>7,g=>6,f=>2,i=>3} 3e1a132e232207 3e1a132e232207 3e1a132e232207 3e1a132e232207 - {e=>2,a=>3,m=>0,d=>7,j=>7,l=>0,c=>2,k=>3,h=>1,b=>2,g=>1,f=>7,i=>7} 133a3a093f0300 133a3a093f0300 133a3a093f0300 133a3a093f0300 - {e=>3,a=>7,m=>0,d=>4,j=>6,l=>5,c=>1,k=>6,h=>2,b=>5,g=>7,f=>5,i=>1} 2f212b17312e00 2f212b17312e00 2f212b17312e00 2f212b17312e00 - {e=>6,a=>5,m=>3,d=>0,j=>1,l=>5,c=>1,k=>3,h=>0,b=>6,g=>4,f=>4,i=>2} 350126040a2b03 350126040a2b03 350126040a2b03 350126040a2b03 - {e=>3,a=>3,m=>1,d=>1,j=>3,l=>4,c=>1,k=>6,h=>6,b=>1,g=>4,f=>1,i=>4} 0b090b341c2601 0b090b341c2601 0b090b341c2601 0b090b341c2601 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; short n; }; - {e=>1,n=>106,a=>2,m=>4,d=>4,j=>1,l=>4,c=>1,k=>6,h=>1,b=>0,g=>4,f=>7,i=>1} 0221390c0926046a00 0221390c092604006a00 0221390c092604006a00 0221390c092604006a00 - {e=>4,n=>74,a=>5,m=>5,d=>7,j=>0,l=>4,c=>0,k=>0,h=>4,b=>7,g=>2,f=>7,i=>5} 3d383c220520054a00 3d383c22052005004a00 3d383c22052005004a00 3d383c22052005004a00 - {e=>7,n=>-6,a=>5,m=>1,d=>2,j=>6,l=>5,c=>2,k=>2,h=>7,b=>2,g=>0,f=>0,i=>7} 15120738372a01faff 15120738372a0100faff 15120738372a0100faff 15120738372a0100faff - {e=>7,n=>-54,a=>2,m=>1,d=>4,j=>7,l=>3,c=>1,k=>2,h=>1,b=>2,g=>0,f=>5,i=>3} 12212f083b1a01caff 12212f083b1a0100caff 12212f083b1a0100caff 12212f083b1a0100caff - {e=>6,n=>118,a=>5,m=>6,d=>0,j=>7,l=>4,c=>2,k=>6,h=>3,b=>6,g=>4,f=>7,i=>0} 35023e1c3826067600 35023e1c382606007600 35023e1c382606007600 35023e1c382606007600 = struct uch_wrap { char a; unsigned char b:3; }; - {a=>-70,b=>6} ba06 ba06 ba06 ba06 - {a=>-97,b=>5} 9f05 9f05 9f05 9f05 - {a=>-15,b=>0} f100 f100 f100 f100 - {a=>-44,b=>0} d400 d400 d400 d400 - {a=>102,b=>7} 6607 6607 6607 6607 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>32,b=>5} 2035 2035 2035 2035 - {c=>5,a=>-69,b=>3} bb2b bb2b bb2b bb2b - {c=>3,a=>90,b=>2} 5a1a 5a1a 5a1a 5a1a - {c=>5,a=>80,b=>6} 502e 502e 502e 502e - {c=>6,a=>117,b=>3} 7533 7533 7533 7533 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>1,a=>4,b=>6,d=>2} 040e02 040e02 040e02 040e02 - {c=>7,a=>-20,b=>1,d=>3} ec3903 ec3903 ec3903 ec3903 - {c=>2,a=>127,b=>1,d=>3} 7f1103 7f1103 7f1103 7f1103 - {c=>6,a=>-48,b=>4,d=>4} d03404 d03404 d03404 d03404 - {c=>4,a=>-78,b=>2,d=>5} b22205 b22205 b22205 b22205 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>3,c=>0,a=>120,b=>7,d=>7} 78071f 78071f 78071f 78071f - {e=>6,c=>6,a=>-75,b=>2,d=>3} b53233 b53233 b53233 b53233 - {e=>3,c=>2,a=>-61,b=>6,d=>7} c3161f c3161f c3161f c3161f - {e=>1,c=>0,a=>59,b=>7,d=>2} 3b070a 3b070a 3b070a 3b070a - {e=>2,c=>4,a=>61,b=>4,d=>6} 3d2416 3d2416 3d2416 3d2416 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>1,c=>4,a=>48,b=>5,d=>6,f=>3} 30250e03 30250e03 30250e03 30250e03 - {e=>6,c=>0,a=>-47,b=>4,d=>5,f=>3} d1043503 d1043503 d1043503 d1043503 - {e=>5,c=>1,a=>-5,b=>4,d=>1,f=>0} fb0c2900 fb0c2900 fb0c2900 fb0c2900 - {e=>6,c=>2,a=>106,b=>7,d=>3,f=>4} 6a173304 6a173304 6a173304 6a173304 - {e=>5,c=>5,a=>-105,b=>3,d=>6,f=>3} 972b2e03 972b2e03 972b2e03 972b2e03 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>4,c=>1,a=>71,g=>5,b=>0,d=>7,f=>0} 47082728 47082728 47082728 47082728 - {e=>6,c=>7,a=>36,g=>5,b=>1,d=>5,f=>4} 2439352c 2439352c 2439352c 2439352c - {e=>3,c=>5,a=>-22,g=>5,b=>5,d=>4,f=>1} ea2d1c29 ea2d1c29 ea2d1c29 ea2d1c29 - {e=>6,c=>2,a=>43,g=>6,b=>0,d=>2,f=>0} 2b103230 2b103230 2b103230 2b103230 - {e=>0,c=>1,a=>-119,g=>0,b=>4,d=>4,f=>1} 890c0401 890c0401 890c0401 890c0401 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>6,a=>88,d=>3,c=>5,h=>1,b=>3,g=>7,f=>2} 582b333a01 582b333a01 582b333a01 582b333a01 - {e=>3,a=>-69,d=>7,c=>6,h=>7,b=>3,g=>7,f=>4} bb331f3c07 bb331f3c07 bb331f3c07 bb331f3c07 - {e=>7,a=>-30,d=>6,c=>4,h=>5,b=>0,g=>7,f=>3} e2203e3b05 e2203e3b05 e2203e3b05 e2203e3b05 - {e=>6,a=>-16,d=>6,c=>7,h=>5,b=>2,g=>1,f=>6} f03a360e05 f03a360e05 f03a360e05 f03a360e05 - {e=>1,a=>72,d=>2,c=>1,h=>1,b=>5,g=>1,f=>6} 480d0a0e01 480d0a0e01 480d0a0e01 480d0a0e01 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>2,a=>-92,d=>4,c=>2,h=>6,b=>6,g=>0,f=>3,i=>7} a41614033e a41614033e a41614033e a41614033e - {e=>1,a=>50,d=>4,c=>7,h=>0,b=>5,g=>6,f=>2,i=>0} 323d0c3200 323d0c3200 323d0c3200 323d0c3200 - {e=>7,a=>-126,d=>7,c=>3,h=>5,b=>2,g=>0,f=>0,i=>4} 821a3f0025 821a3f0025 821a3f0025 821a3f0025 - {e=>6,a=>123,d=>7,c=>4,h=>6,b=>0,g=>3,f=>6,i=>4} 7b20371e26 7b20371e26 7b20371e26 7b20371e26 - {e=>5,a=>21,d=>0,c=>7,h=>1,b=>3,g=>0,f=>7,i=>5} 153b280729 153b280729 153b280729 153b280729 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>1,a=>79,d=>6,j=>1,c=>6,h=>0,b=>1,g=>1,f=>5,i=>4} 4f310e0d2001 4f310e0d2001 4f310e0d2001 4f310e0d2001 - {e=>5,a=>70,d=>7,j=>4,c=>1,h=>1,b=>4,g=>2,f=>5,i=>2} 460c2f151104 460c2f151104 460c2f151104 460c2f151104 - {e=>2,a=>90,d=>2,j=>3,c=>7,h=>2,b=>6,g=>4,f=>7,i=>4} 5a3e12272203 5a3e12272203 5a3e12272203 5a3e12272203 - {e=>6,a=>48,d=>0,j=>3,c=>5,h=>3,b=>5,g=>6,f=>5,i=>3} 302d30351b03 302d30351b03 302d30351b03 302d30351b03 - {e=>6,a=>-79,d=>1,j=>4,c=>1,h=>6,b=>7,g=>6,f=>4,i=>5} b10f31342e04 b10f31342e04 b10f31342e04 b10f31342e04 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>3,a=>33,d=>5,j=>0,c=>5,k=>3,h=>3,b=>4,g=>0,f=>2,i=>4} 212c1d022318 212c1d022318 212c1d022318 212c1d022318 - {e=>1,a=>64,d=>0,j=>2,c=>1,k=>7,h=>7,b=>1,g=>3,f=>0,i=>6} 40090818373a 40090818373a 40090818373a 40090818373a - {e=>0,a=>121,d=>0,j=>2,c=>3,k=>3,h=>1,b=>5,g=>0,f=>4,i=>5} 791d0004291a 791d0004291a 791d0004291a 791d0004291a - {e=>7,a=>-117,d=>1,j=>1,c=>6,k=>5,h=>1,b=>3,g=>1,f=>5,i=>4} 8b33390d2129 8b33390d2129 8b33390d2129 8b33390d2129 - {e=>5,a=>105,d=>3,j=>2,c=>3,k=>7,h=>6,b=>3,g=>5,f=>1,i=>1} 691b2b290e3a 691b2b290e3a 691b2b290e3a 691b2b290e3a = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>1,a=>-36,d=>3,j=>4,l=>1,c=>5,k=>1,h=>3,b=>7,g=>3,f=>0,i=>2} dc2f0b18130c01 dc2f0b18130c01 dc2f0b18130c01 dc2f0b18130c01 - {e=>5,a=>-81,d=>1,j=>6,l=>1,c=>3,k=>7,h=>3,b=>5,g=>3,f=>5,i=>1} af1d291d0b3e01 af1d291d0b3e01 af1d291d0b3e01 af1d291d0b3e01 - {e=>0,a=>-44,d=>7,j=>3,l=>5,c=>3,k=>2,h=>2,b=>2,g=>3,f=>0,i=>6} d41a0718321305 d41a0718321305 d41a0718321305 d41a0718321305 - {e=>1,a=>-34,d=>1,j=>6,l=>7,c=>6,k=>0,h=>6,b=>6,g=>5,f=>2,i=>5} de36092a2e0607 de36092a2e0607 de36092a2e0607 de36092a2e0607 - {e=>0,a=>57,d=>4,j=>0,l=>4,c=>6,k=>1,h=>2,b=>2,g=>7,f=>6,i=>2} 3932043e120804 3932043e120804 3932043e120804 3932043e120804 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>7,a=>-101,m=>1,d=>6,j=>3,l=>6,c=>4,k=>6,h=>5,b=>1,g=>1,f=>6,i=>0} 9b213e0e05330e 9b213e0e05330e 9b213e0e05330e 9b213e0e05330e - {e=>3,a=>-11,m=>4,d=>2,j=>6,l=>7,c=>6,k=>4,h=>7,b=>2,g=>1,f=>4,i=>3} f5321a0c1f2627 f5321a0c1f2627 f5321a0c1f2627 f5321a0c1f2627 - {e=>0,a=>47,m=>2,d=>7,j=>5,l=>2,c=>2,k=>3,h=>4,b=>5,g=>5,f=>1,i=>7} 2f1507293c1d12 2f1507293c1d12 2f1507293c1d12 2f1507293c1d12 - {e=>1,a=>-113,m=>7,d=>2,j=>1,l=>6,c=>7,k=>4,h=>7,b=>5,g=>0,f=>6,i=>7} 8f3d0a063f213e 8f3d0a063f213e 8f3d0a063f213e 8f3d0a063f213e - {e=>2,a=>19,m=>6,d=>7,j=>5,l=>4,c=>3,k=>7,h=>4,b=>1,g=>4,f=>0,i=>3} 131917201c3d34 131917201c3d34 131917201c3d34 131917201c3d34 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>6,n=>5,a=>-111,m=>0,d=>3,j=>5,l=>6,c=>7,k=>5,h=>6,b=>0,g=>4,f=>0,i=>6} 91383320362d0605 91383320362d0605 91383320362d0605 91383320362d0605 - {e=>7,n=>4,a=>-30,m=>6,d=>4,j=>3,l=>0,c=>4,k=>4,h=>1,b=>7,g=>7,f=>5,i=>0} e2273c3d01233004 e2273c3d01233004 e2273c3d01233004 e2273c3d01233004 - {e=>0,n=>1,a=>22,m=>5,d=>7,j=>5,l=>0,c=>0,k=>1,h=>5,b=>3,g=>2,f=>7,i=>3} 160307171d0d2801 160307171d0d2801 160307171d0d2801 160307171d0d2801 - {e=>4,n=>5,a=>4,m=>0,d=>1,j=>2,l=>4,c=>1,k=>3,h=>0,b=>0,g=>0,f=>7,i=>6} 04082107301a0405 04082107301a0405 04082107301a0405 04082107301a0405 - {e=>2,n=>3,a=>-83,m=>6,d=>6,j=>6,l=>6,c=>0,k=>1,h=>2,b=>6,g=>0,f=>6,i=>5} ad0616062a0e3603 ad0616062a0e3603 ad0616062a0e3603 ad0616062a0e3603 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>0,n=>2,a=>-105,m=>1,d=>3,j=>0,l=>1,c=>6,k=>1,h=>1,b=>2,g=>7,f=>2,o=>-102,i=>2} 9732033a110809029aff 9732033a110809029aff 9732033a110809029aff 9732033a110809029aff - {e=>1,n=>2,a=>-82,m=>2,d=>4,j=>2,l=>6,c=>0,k=>3,h=>1,b=>6,g=>6,f=>3,o=>29,i=>2} ae060c33111a16021d00 ae060c33111a16021d00 ae060c33111a16021d00 ae060c33111a16021d00 - {e=>5,n=>7,a=>-14,m=>4,d=>0,j=>7,l=>1,c=>2,k=>7,h=>7,b=>4,g=>1,f=>5,o=>-24,i=>2} f214280d173f2107e8ff f214280d173f2107e8ff f214280d173f2107e8ff f214280d173f2107e8ff - {e=>0,n=>6,a=>96,m=>7,d=>3,j=>0,l=>3,c=>3,k=>1,h=>3,b=>6,g=>6,f=>7,o=>81,i=>2} 601e033713083b065100 601e033713083b065100 601e033713083b065100 601e033713083b065100 - {e=>6,n=>2,a=>-36,m=>0,d=>2,j=>6,l=>5,c=>4,k=>0,h=>3,b=>6,g=>6,f=>5,o=>-17,i=>5} dc2632352b060502efff dc2632352b060502efff dc2632352b060502efff dc2632352b060502efff = struct uch_wrap { short a; unsigned char b:3; }; - {a=>102,b=>2} 660002 66000200 66000200 66000200 - {a=>39,b=>4} 270004 27000400 27000400 27000400 - {a=>-119,b=>5} 89ff05 89ff0500 89ff0500 89ff0500 - {a=>69,b=>7} 450007 45000700 45000700 45000700 - {a=>46,b=>7} 2e0007 2e000700 2e000700 2e000700 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; }; - {c=>2,a=>-97,b=>2} 9fff12 9fff1200 9fff1200 9fff1200 - {c=>5,a=>-16,b=>5} f0ff2d f0ff2d00 f0ff2d00 f0ff2d00 - {c=>5,a=>100,b=>5} 64002d 64002d00 64002d00 64002d00 - {c=>1,a=>117,b=>2} 75000a 75000a00 75000a00 75000a00 - {c=>1,a=>-105,b=>4} 97ff0c 97ff0c00 97ff0c00 97ff0c00 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>2,a=>7,b=>5,d=>3} 07001503 07001503 07001503 07001503 - {c=>7,a=>-90,b=>4,d=>1} a6ff3c01 a6ff3c01 a6ff3c01 a6ff3c01 - {c=>1,a=>61,b=>0,d=>2} 3d000802 3d000802 3d000802 3d000802 - {c=>1,a=>36,b=>7,d=>2} 24000f02 24000f02 24000f02 24000f02 - {c=>4,a=>-76,b=>5,d=>0} b4ff2500 b4ff2500 b4ff2500 b4ff2500 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>4,c=>2,a=>-103,b=>0,d=>3} 99ff1023 99ff1023 99ff1023 99ff1023 - {e=>2,c=>0,a=>17,b=>5,d=>5} 11000515 11000515 11000515 11000515 - {e=>5,c=>5,a=>27,b=>2,d=>1} 1b002a29 1b002a29 1b002a29 1b002a29 - {e=>1,c=>5,a=>-77,b=>3,d=>5} b3ff2b0d b3ff2b0d b3ff2b0d b3ff2b0d - {e=>2,c=>0,a=>-112,b=>4,d=>1} 90ff0411 90ff0411 90ff0411 90ff0411 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>3,c=>1,a=>61,b=>4,d=>2,f=>2} 3d000c1a02 3d000c1a0200 3d000c1a0200 3d000c1a0200 - {e=>1,c=>7,a=>-8,b=>0,d=>6,f=>0} f8ff380e00 f8ff380e0000 f8ff380e0000 f8ff380e0000 - {e=>2,c=>6,a=>-96,b=>0,d=>5,f=>7} a0ff301507 a0ff30150700 a0ff30150700 a0ff30150700 - {e=>3,c=>2,a=>122,b=>5,d=>0,f=>0} 7a00151800 7a0015180000 7a0015180000 7a0015180000 - {e=>3,c=>6,a=>-122,b=>0,d=>1,f=>2} 86ff301902 86ff30190200 86ff30190200 86ff30190200 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>1,c=>5,a=>-86,g=>7,b=>7,d=>7,f=>6} aaff2f0f3e aaff2f0f3e00 aaff2f0f3e00 aaff2f0f3e00 - {e=>5,c=>7,a=>78,g=>2,b=>1,d=>6,f=>1} 4e00392e11 4e00392e1100 4e00392e1100 4e00392e1100 - {e=>4,c=>0,a=>-57,g=>4,b=>2,d=>4,f=>1} c7ff022421 c7ff02242100 c7ff02242100 c7ff02242100 - {e=>6,c=>6,a=>36,g=>3,b=>1,d=>5,f=>3} 240031351b 240031351b00 240031351b00 240031351b00 - {e=>5,c=>6,a=>-105,g=>2,b=>7,d=>7,f=>0} 97ff372f10 97ff372f1000 97ff372f1000 97ff372f1000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>2,a=>103,d=>5,c=>5,h=>6,b=>3,g=>2,f=>1} 67002b151106 67002b151106 67002b151106 67002b151106 - {e=>1,a=>-88,d=>4,c=>6,h=>1,b=>5,g=>2,f=>3} a8ff350c1301 a8ff350c1301 a8ff350c1301 a8ff350c1301 - {e=>0,a=>-80,d=>3,c=>7,h=>5,b=>3,g=>5,f=>6} b0ff3b032e05 b0ff3b032e05 b0ff3b032e05 b0ff3b032e05 - {e=>5,a=>-89,d=>6,c=>6,h=>1,b=>0,g=>4,f=>1} a7ff302e2101 a7ff302e2101 a7ff302e2101 a7ff302e2101 - {e=>4,a=>-32,d=>5,c=>2,h=>0,b=>4,g=>7,f=>7} e0ff14253f00 e0ff14253f00 e0ff14253f00 e0ff14253f00 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>6,a=>-1,d=>6,c=>3,h=>1,b=>6,g=>2,f=>7,i=>5} ffff1e361729 ffff1e361729 ffff1e361729 ffff1e361729 - {e=>1,a=>21,d=>3,c=>7,h=>0,b=>3,g=>5,f=>0,i=>1} 15003b0b2808 15003b0b2808 15003b0b2808 15003b0b2808 - {e=>4,a=>124,d=>0,c=>3,h=>5,b=>6,g=>1,f=>0,i=>7} 7c001e20083d 7c001e20083d 7c001e20083d 7c001e20083d - {e=>6,a=>53,d=>6,c=>4,h=>3,b=>7,g=>3,f=>0,i=>0} 350027361803 350027361803 350027361803 350027361803 - {e=>5,a=>14,d=>0,c=>5,h=>0,b=>0,g=>0,f=>4,i=>1} 0e0028280408 0e0028280408 0e0028280408 0e0028280408 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>4,a=>-128,d=>5,j=>4,c=>0,h=>4,b=>2,g=>7,f=>5,i=>5} 80ff02253d2c04 80ff02253d2c0400 80ff02253d2c0400 80ff02253d2c0400 - {e=>5,a=>-33,d=>3,j=>4,c=>5,h=>7,b=>7,g=>1,f=>6,i=>5} dfff2f2b0e2f04 dfff2f2b0e2f0400 dfff2f2b0e2f0400 dfff2f2b0e2f0400 - {e=>3,a=>-96,d=>1,j=>1,c=>4,h=>2,b=>3,g=>7,f=>6,i=>6} a0ff23193e3201 a0ff23193e320100 a0ff23193e320100 a0ff23193e320100 - {e=>7,a=>-9,d=>6,j=>4,c=>3,h=>1,b=>3,g=>3,f=>1,i=>0} f7ff1b3e190104 f7ff1b3e19010400 f7ff1b3e19010400 f7ff1b3e19010400 - {e=>2,a=>63,d=>4,j=>2,c=>4,h=>0,b=>4,g=>3,f=>5,i=>0} 3f0024141d0002 3f0024141d000200 3f0024141d000200 3f0024141d000200 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>4,a=>57,d=>7,j=>7,c=>4,k=>0,h=>5,b=>3,g=>3,f=>4,i=>6} 390023271c3507 390023271c350700 390023271c350700 390023271c350700 - {e=>7,a=>-11,d=>1,j=>4,c=>0,k=>5,h=>1,b=>5,g=>5,f=>7,i=>5} f5ff05392f292c f5ff05392f292c00 f5ff05392f292c00 f5ff05392f292c00 - {e=>7,a=>-117,d=>2,j=>6,c=>7,k=>6,h=>1,b=>2,g=>0,f=>1,i=>1} 8bff3a3a010936 8bff3a3a01093600 8bff3a3a01093600 8bff3a3a01093600 - {e=>7,a=>-118,d=>6,j=>3,c=>7,k=>4,h=>2,b=>4,g=>3,f=>6,i=>0} 8aff3c3e1e0223 8aff3c3e1e022300 8aff3c3e1e022300 8aff3c3e1e022300 - {e=>4,a=>-15,d=>1,j=>1,c=>7,k=>6,h=>5,b=>4,g=>7,f=>3,i=>7} f1ff3c213b3d31 f1ff3c213b3d3100 f1ff3c213b3d3100 f1ff3c213b3d3100 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>5,a=>24,d=>4,j=>2,l=>6,c=>3,k=>2,h=>1,b=>5,g=>4,f=>5,i=>2} 18001d2c25111206 18001d2c25111206 18001d2c25111206 18001d2c25111206 - {e=>7,a=>-76,d=>2,j=>2,l=>5,c=>2,k=>2,h=>3,b=>5,g=>4,f=>7,i=>5} b4ff153a272b1205 b4ff153a272b1205 b4ff153a272b1205 b4ff153a272b1205 - {e=>4,a=>69,d=>4,j=>6,l=>1,c=>1,k=>0,h=>0,b=>6,g=>7,f=>1,i=>3} 45000e2439180601 45000e2439180601 45000e2439180601 45000e2439180601 - {e=>6,a=>-5,d=>4,j=>4,l=>7,c=>6,k=>6,h=>2,b=>3,g=>6,f=>5,i=>6} fbff333435323407 fbff333435323407 fbff333435323407 fbff333435323407 - {e=>1,a=>84,d=>1,j=>5,l=>6,c=>3,k=>4,h=>7,b=>2,g=>6,f=>4,i=>3} 54001a09341f2506 54001a09341f2506 54001a09341f2506 54001a09341f2506 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>0,a=>-34,m=>7,d=>7,j=>0,l=>2,c=>3,k=>5,h=>5,b=>1,g=>0,f=>6,i=>6} deff19070635283a deff19070635283a deff19070635283a deff19070635283a - {e=>1,a=>-67,m=>0,d=>2,j=>7,l=>0,c=>2,k=>4,h=>2,b=>7,g=>3,f=>7,i=>4} bdff170a1f222700 bdff170a1f222700 bdff170a1f222700 bdff170a1f222700 - {e=>5,a=>61,m=>7,d=>1,j=>3,l=>5,c=>6,k=>5,h=>3,b=>4,g=>7,f=>3,i=>7} 3d0034293b3b2b3d 3d0034293b3b2b3d 3d0034293b3b2b3d 3d0034293b3b2b3d - {e=>5,a=>96,m=>6,d=>5,j=>4,l=>5,c=>1,k=>3,h=>1,b=>6,g=>2,f=>2,i=>3} 60000e2d12191c35 60000e2d12191c35 60000e2d12191c35 60000e2d12191c35 - {e=>3,a=>-6,m=>6,d=>3,j=>6,l=>6,c=>5,k=>2,h=>5,b=>6,g=>3,f=>5,i=>0} faff2e1b1d051636 faff2e1b1d051636 faff2e1b1d051636 faff2e1b1d051636 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>7,n=>7,a=>-88,m=>4,d=>0,j=>4,l=>6,c=>3,k=>5,h=>2,b=>1,g=>6,f=>5,i=>7} a8ff1938353a2c2607 a8ff1938353a2c260700 a8ff1938353a2c260700 a8ff1938353a2c260700 - {e=>0,n=>1,a=>-51,m=>3,d=>3,j=>2,l=>4,c=>1,k=>1,h=>6,b=>6,g=>5,f=>7,i=>2} cdff0e032f160a1c01 cdff0e032f160a1c0100 cdff0e032f160a1c0100 cdff0e032f160a1c0100 - {e=>2,n=>6,a=>20,m=>5,d=>3,j=>4,l=>6,c=>1,k=>3,h=>6,b=>5,g=>4,f=>2,i=>5} 14000d13222e1c2e06 14000d13222e1c2e0600 14000d13222e1c2e0600 14000d13222e1c2e0600 - {e=>4,n=>1,a=>-110,m=>2,d=>6,j=>4,l=>5,c=>4,k=>5,h=>0,b=>1,g=>7,f=>4,i=>6} 92ff21263c302c1501 92ff21263c302c150100 92ff21263c302c150100 92ff21263c302c150100 - {e=>0,n=>0,a=>-45,m=>2,d=>5,j=>7,l=>4,c=>5,k=>6,h=>1,b=>2,g=>6,f=>4,i=>0} d3ff2a053401371400 d3ff2a05340137140000 d3ff2a05340137140000 d3ff2a05340137140000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>0,n=>2,a=>-65,m=>5,d=>5,j=>4,l=>2,c=>5,k=>0,h=>7,b=>2,g=>6,f=>3,o=>-15,i=>2} bfff2a053317042a02f1ff bfff2a053317042a0200f1ff bfff2a053317042a0200f1ff bfff2a053317042a0200f1ff - {e=>3,n=>6,a=>15,m=>2,d=>7,j=>7,l=>4,c=>5,k=>4,h=>2,b=>0,g=>3,f=>3,o=>30,i=>1} 0f00281f1b0a2714061e00 0f00281f1b0a271406001e00 0f00281f1b0a271406001e00 0f00281f1b0a271406001e00 - {e=>5,n=>7,a=>74,m=>6,d=>0,j=>7,l=>5,c=>3,k=>4,h=>4,b=>3,g=>6,f=>2,o=>69,i=>5} 4a001b28322c2735074500 4a001b28322c273507004500 4a001b28322c273507004500 4a001b28322c273507004500 - {e=>1,n=>2,a=>84,m=>2,d=>3,j=>5,l=>4,c=>3,k=>6,h=>6,b=>1,g=>6,f=>7,o=>98,i=>6} 5400190b37363514026200 5400190b3736351402006200 5400190b3736351402006200 5400190b3736351402006200 - {e=>3,n=>6,a=>57,m=>7,d=>6,j=>0,l=>4,c=>4,k=>1,h=>1,b=>2,g=>2,f=>7,o=>-43,i=>0} 3900221e1701083c06d5ff 3900221e1701083c0600d5ff 3900221e1701083c0600d5ff 3900221e1701083c0600d5ff = struct uch_wrap { int a; unsigned char b:3; }; - {a=>-6,b=>4} faffffff04 faffffff0400 faffffff04000000 faffffff04000000 - {a=>48,b=>4} 3000000004 300000000400 3000000004000000 3000000004000000 - {a=>24,b=>4} 1800000004 180000000400 1800000004000000 1800000004000000 - {a=>-13,b=>5} f3ffffff05 f3ffffff0500 f3ffffff05000000 f3ffffff05000000 - {a=>-58,b=>1} c6ffffff01 c6ffffff0100 c6ffffff01000000 c6ffffff01000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>52,b=>2} 340000001a 340000001a00 340000001a000000 340000001a000000 - {c=>6,a=>-113,b=>2} 8fffffff32 8fffffff3200 8fffffff32000000 8fffffff32000000 - {c=>7,a=>-72,b=>6} b8ffffff3e b8ffffff3e00 b8ffffff3e000000 b8ffffff3e000000 - {c=>4,a=>93,b=>7} 5d00000027 5d0000002700 5d00000027000000 5d00000027000000 - {c=>5,a=>34,b=>5} 220000002d 220000002d00 220000002d000000 220000002d000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>4,a=>1,b=>6,d=>5} 010000002605 010000002605 0100000026050000 0100000026050000 - {c=>1,a=>35,b=>0,d=>6} 230000000806 230000000806 2300000008060000 2300000008060000 - {c=>3,a=>81,b=>1,d=>7} 510000001907 510000001907 5100000019070000 5100000019070000 - {c=>5,a=>19,b=>3,d=>2} 130000002b02 130000002b02 130000002b020000 130000002b020000 - {c=>7,a=>-108,b=>5,d=>3} 94ffffff3d03 94ffffff3d03 94ffffff3d030000 94ffffff3d030000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>0,c=>0,a=>58,b=>1,d=>6} 3a0000000106 3a0000000106 3a00000001060000 3a00000001060000 - {e=>4,c=>2,a=>67,b=>4,d=>2} 430000001422 430000001422 4300000014220000 4300000014220000 - {e=>0,c=>2,a=>20,b=>7,d=>4} 140000001704 140000001704 1400000017040000 1400000017040000 - {e=>7,c=>4,a=>-17,b=>5,d=>7} efffffff253f efffffff253f efffffff253f0000 efffffff253f0000 - {e=>7,c=>1,a=>-49,b=>4,d=>7} cfffffff0c3f cfffffff0c3f cfffffff0c3f0000 cfffffff0c3f0000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>7,c=>0,a=>-9,b=>1,d=>3,f=>6} f7ffffff013b06 f7ffffff013b0600 f7ffffff013b0600 f7ffffff013b0600 - {e=>2,c=>2,a=>72,b=>4,d=>6,f=>1} 48000000141601 4800000014160100 4800000014160100 4800000014160100 - {e=>7,c=>0,a=>-66,b=>1,d=>4,f=>5} beffffff013c05 beffffff013c0500 beffffff013c0500 beffffff013c0500 - {e=>6,c=>1,a=>121,b=>7,d=>2,f=>2} 790000000f3202 790000000f320200 790000000f320200 790000000f320200 - {e=>1,c=>6,a=>-56,b=>7,d=>4,f=>3} c8ffffff370c03 c8ffffff370c0300 c8ffffff370c0300 c8ffffff370c0300 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>6,c=>3,a=>76,g=>4,b=>6,d=>4,f=>4} 4c0000001e3424 4c0000001e342400 4c0000001e342400 4c0000001e342400 - {e=>0,c=>4,a=>-114,g=>7,b=>4,d=>6,f=>5} 8effffff24063d 8effffff24063d00 8effffff24063d00 8effffff24063d00 - {e=>4,c=>5,a=>8,g=>7,b=>4,d=>0,f=>4} 080000002c203c 080000002c203c00 080000002c203c00 080000002c203c00 - {e=>5,c=>3,a=>-73,g=>2,b=>6,d=>6,f=>4} b7ffffff1e2e14 b7ffffff1e2e1400 b7ffffff1e2e1400 b7ffffff1e2e1400 - {e=>7,c=>6,a=>69,g=>5,b=>2,d=>5,f=>2} 45000000323d2a 45000000323d2a00 45000000323d2a00 45000000323d2a00 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>0,a=>21,d=>5,c=>3,h=>0,b=>7,g=>4,f=>4} 150000001f052400 150000001f052400 150000001f052400 150000001f052400 - {e=>5,a=>124,d=>3,c=>5,h=>6,b=>1,g=>3,f=>6} 7c000000292b1e06 7c000000292b1e06 7c000000292b1e06 7c000000292b1e06 - {e=>6,a=>1,d=>4,c=>7,h=>1,b=>2,g=>4,f=>7} 010000003a342701 010000003a342701 010000003a342701 010000003a342701 - {e=>7,a=>36,d=>6,c=>0,h=>7,b=>1,g=>5,f=>2} 24000000013e2a07 24000000013e2a07 24000000013e2a07 24000000013e2a07 - {e=>1,a=>121,d=>4,c=>4,h=>0,b=>0,g=>6,f=>5} 79000000200c3500 79000000200c3500 79000000200c3500 79000000200c3500 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>-75,d=>3,c=>1,h=>2,b=>0,g=>4,f=>3,i=>4} b5ffffff08232322 b5ffffff08232322 b5ffffff08232322 b5ffffff08232322 - {e=>4,a=>-82,d=>3,c=>2,h=>4,b=>5,g=>0,f=>2,i=>2} aeffffff15230214 aeffffff15230214 aeffffff15230214 aeffffff15230214 - {e=>0,a=>46,d=>7,c=>3,h=>6,b=>6,g=>7,f=>6,i=>5} 2e0000001e073e2e 2e0000001e073e2e 2e0000001e073e2e 2e0000001e073e2e - {e=>0,a=>4,d=>0,c=>6,h=>3,b=>5,g=>3,f=>0,i=>3} 040000003500181b 040000003500181b 040000003500181b 040000003500181b - {e=>0,a=>-54,d=>1,c=>7,h=>7,b=>1,g=>7,f=>6,i=>6} caffffff39013e37 caffffff39013e37 caffffff39013e37 caffffff39013e37 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>4,a=>101,d=>4,j=>0,c=>1,h=>6,b=>4,g=>7,f=>6,i=>5} 650000000c243e2e00 650000000c243e2e0000 650000000c243e2e00000000 650000000c243e2e00000000 - {e=>0,a=>33,d=>6,j=>1,c=>0,h=>2,b=>3,g=>0,f=>1,i=>4} 210000000306012201 21000000030601220100 210000000306012201000000 210000000306012201000000 - {e=>0,a=>31,d=>4,j=>4,c=>3,h=>2,b=>7,g=>3,f=>7,i=>4} 1f0000001f041f2204 1f0000001f041f220400 1f0000001f041f2204000000 1f0000001f041f2204000000 - {e=>0,a=>-102,d=>5,j=>2,c=>1,h=>3,b=>1,g=>4,f=>5,i=>4} 9affffff0905252302 9affffff090525230200 9affffff0905252302000000 9affffff0905252302000000 - {e=>3,a=>117,d=>6,j=>5,c=>1,h=>3,b=>4,g=>4,f=>7,i=>4} 750000000c1e272305 750000000c1e27230500 750000000c1e272305000000 750000000c1e272305000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>7,a=>7,d=>0,j=>2,c=>5,k=>6,h=>2,b=>2,g=>6,f=>1,i=>1} 070000002a38310a32 070000002a38310a3200 070000002a38310a32000000 070000002a38310a32000000 - {e=>0,a=>73,d=>0,j=>0,c=>6,k=>0,h=>7,b=>2,g=>4,f=>2,i=>6} 490000003200223700 49000000320022370000 490000003200223700000000 490000003200223700000000 - {e=>5,a=>-16,d=>1,j=>5,c=>2,k=>0,h=>5,b=>3,g=>5,f=>2,i=>0} f0ffffff13292a0505 f0ffffff13292a050500 f0ffffff13292a0505000000 f0ffffff13292a0505000000 - {e=>2,a=>85,d=>1,j=>7,c=>7,k=>5,h=>0,b=>2,g=>7,f=>4,i=>6} 550000003a113c302f 550000003a113c302f00 550000003a113c302f000000 550000003a113c302f000000 - {e=>1,a=>-111,d=>4,j=>1,c=>4,k=>4,h=>0,b=>1,g=>3,f=>1,i=>4} 91ffffff210c192021 91ffffff210c19202100 91ffffff210c192021000000 91ffffff210c192021000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>4,a=>-94,d=>1,j=>5,l=>1,c=>6,k=>5,h=>7,b=>6,g=>1,f=>1,i=>7} a2ffffff3621093f2d01 a2ffffff3621093f2d01 a2ffffff3621093f2d010000 a2ffffff3621093f2d010000 - {e=>2,a=>-111,d=>5,j=>6,l=>5,c=>3,k=>0,h=>6,b=>2,g=>0,f=>1,i=>6} 91ffffff1a1501360605 91ffffff1a1501360605 91ffffff1a15013606050000 91ffffff1a15013606050000 - {e=>6,a=>-48,d=>0,j=>4,l=>6,c=>7,k=>6,h=>2,b=>0,g=>6,f=>2,i=>3} d0ffffff3830321a3406 d0ffffff3830321a3406 d0ffffff3830321a34060000 d0ffffff3830321a34060000 - {e=>4,a=>25,d=>5,j=>1,l=>4,c=>1,k=>1,h=>4,b=>3,g=>6,f=>7,i=>7} 190000000b25373c0904 190000000b25373c0904 190000000b25373c09040000 190000000b25373c09040000 - {e=>5,a=>-90,d=>1,j=>4,l=>1,c=>4,k=>6,h=>6,b=>6,g=>4,f=>7,i=>6} a6ffffff262927363401 a6ffffff262927363401 a6ffffff2629273634010000 a6ffffff2629273634010000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>0,a=>27,m=>0,d=>1,j=>1,l=>0,c=>1,k=>4,h=>7,b=>3,g=>3,f=>1,i=>7} 1b0000000b01193f2100 1b0000000b01193f2100 1b0000000b01193f21000000 1b0000000b01193f21000000 - {e=>4,a=>-76,m=>6,d=>7,j=>1,l=>5,c=>4,k=>7,h=>1,b=>3,g=>1,f=>4,i=>1} b4ffffff23270c093935 b4ffffff23270c093935 b4ffffff23270c0939350000 b4ffffff23270c0939350000 - {e=>2,a=>-46,m=>4,d=>7,j=>1,l=>1,c=>3,k=>7,h=>2,b=>4,g=>5,f=>0,i=>2} d2ffffff1c1728123921 d2ffffff1c1728123921 d2ffffff1c17281239210000 d2ffffff1c17281239210000 - {e=>2,a=>81,m=>0,d=>2,j=>0,l=>7,c=>1,k=>0,h=>1,b=>4,g=>7,f=>2,i=>6} 510000000c123a310007 510000000c123a310007 510000000c123a3100070000 510000000c123a3100070000 - {e=>4,a=>-102,m=>6,d=>6,j=>4,l=>0,c=>7,k=>3,h=>1,b=>2,g=>3,f=>4,i=>6} 9affffff3a261c311c30 9affffff3a261c311c30 9affffff3a261c311c300000 9affffff3a261c311c300000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>0,n=>2,a=>71,m=>2,d=>1,j=>7,l=>0,c=>5,k=>5,h=>3,b=>5,g=>5,f=>0,i=>7} 470000002d01283b2f1002 470000002d01283b2f100200 470000002d01283b2f100200 470000002d01283b2f100200 - {e=>1,n=>0,a=>26,m=>3,d=>0,j=>5,l=>7,c=>2,k=>0,h=>0,b=>7,g=>1,f=>6,i=>4} 1a00000017080e20051f00 1a00000017080e20051f0000 1a00000017080e20051f0000 1a00000017080e20051f0000 - {e=>2,n=>4,a=>60,m=>5,d=>5,j=>6,l=>6,c=>6,k=>2,h=>3,b=>0,g=>2,f=>4,i=>3} 3c0000003015141b162e04 3c0000003015141b162e0400 3c0000003015141b162e0400 3c0000003015141b162e0400 - {e=>7,n=>3,a=>95,m=>4,d=>7,j=>4,l=>5,c=>2,k=>6,h=>4,b=>0,g=>3,f=>0,i=>3} 5f000000103f181c342503 5f000000103f181c34250300 5f000000103f181c34250300 5f000000103f181c34250300 - {e=>6,n=>2,a=>-72,m=>1,d=>7,j=>3,l=>3,c=>4,k=>4,h=>2,b=>2,g=>7,f=>7,i=>3} b8ffffff22373f1a230b02 b8ffffff22373f1a230b0200 b8ffffff22373f1a230b0200 b8ffffff22373f1a230b0200 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>3,n=>5,a=>-18,m=>0,d=>5,j=>5,l=>2,c=>0,k=>7,h=>6,b=>1,g=>3,f=>2,o=>-124,i=>5} eeffffff011d1a2e3d020584ff eeffffff011d1a2e3d02050084ff eeffffff011d1a2e3d02050084ff0000 eeffffff011d1a2e3d02050084ff0000 - {e=>7,n=>6,a=>-18,m=>7,d=>6,j=>5,l=>7,c=>5,k=>6,h=>4,b=>5,g=>7,f=>5,o=>-74,i=>7} eeffffff2d3e3d3c353f06b6ff eeffffff2d3e3d3c353f0600b6ff eeffffff2d3e3d3c353f0600b6ff0000 eeffffff2d3e3d3c353f0600b6ff0000 - {e=>1,n=>5,a=>121,m=>1,d=>3,j=>4,l=>5,c=>3,k=>7,h=>1,b=>0,g=>5,f=>1,o=>-94,i=>1} 79000000180b29093c0d05a2ff 79000000180b29093c0d0500a2ff 79000000180b29093c0d0500a2ff0000 79000000180b29093c0d0500a2ff0000 - {e=>2,n=>1,a=>-41,m=>4,d=>5,j=>7,l=>2,c=>6,k=>0,h=>4,b=>3,g=>7,f=>6,o=>-66,i=>7} d7ffffff33153e3c072201beff d7ffffff33153e3c07220100beff d7ffffff33153e3c07220100beff0000 d7ffffff33153e3c07220100beff0000 - {e=>7,n=>2,a=>39,m=>7,d=>4,j=>7,l=>6,c=>7,k=>2,h=>0,b=>7,g=>1,f=>2,o=>-125,i=>1} 270000003f3c0a08173e0283ff 270000003f3c0a08173e020083ff 270000003f3c0a08173e020083ff0000 270000003f3c0a08173e020083ff0000 = struct uch_wrap { long a; unsigned char b:3; }; - {a=>-40,b=>5} d8ffffff05 d8ffffff0500 d8ffffff05000000 d8ffffff05000000 - {a=>-42,b=>6} d6ffffff06 d6ffffff0600 d6ffffff06000000 d6ffffff06000000 - {a=>-83,b=>0} adffffff00 adffffff0000 adffffff00000000 adffffff00000000 - {a=>6,b=>4} 0600000004 060000000400 0600000004000000 0600000004000000 - {a=>-27,b=>4} e5ffffff04 e5ffffff0400 e5ffffff04000000 e5ffffff04000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>56,b=>5} 3800000025 380000002500 3800000025000000 3800000025000000 - {c=>4,a=>-12,b=>5} f4ffffff25 f4ffffff2500 f4ffffff25000000 f4ffffff25000000 - {c=>0,a=>-103,b=>3} 99ffffff03 99ffffff0300 99ffffff03000000 99ffffff03000000 - {c=>3,a=>104,b=>6} 680000001e 680000001e00 680000001e000000 680000001e000000 - {c=>6,a=>-64,b=>6} c0ffffff36 c0ffffff3600 c0ffffff36000000 c0ffffff36000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>6,a=>-23,b=>3,d=>2} e9ffffff3302 e9ffffff3302 e9ffffff33020000 e9ffffff33020000 - {c=>7,a=>-55,b=>6,d=>0} c9ffffff3e00 c9ffffff3e00 c9ffffff3e000000 c9ffffff3e000000 - {c=>0,a=>84,b=>5,d=>3} 540000000503 540000000503 5400000005030000 5400000005030000 - {c=>7,a=>-40,b=>0,d=>5} d8ffffff3805 d8ffffff3805 d8ffffff38050000 d8ffffff38050000 - {c=>6,a=>-97,b=>1,d=>1} 9fffffff3101 9fffffff3101 9fffffff31010000 9fffffff31010000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>5,c=>5,a=>-118,b=>4,d=>3} 8affffff2c2b 8affffff2c2b 8affffff2c2b0000 8affffff2c2b0000 - {e=>7,c=>6,a=>-96,b=>3,d=>4} a0ffffff333c a0ffffff333c a0ffffff333c0000 a0ffffff333c0000 - {e=>0,c=>5,a=>93,b=>2,d=>3} 5d0000002a03 5d0000002a03 5d0000002a030000 5d0000002a030000 - {e=>4,c=>6,a=>60,b=>0,d=>0} 3c0000003020 3c0000003020 3c00000030200000 3c00000030200000 - {e=>7,c=>0,a=>-10,b=>2,d=>6} f6ffffff023e f6ffffff023e f6ffffff023e0000 f6ffffff023e0000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>0,c=>2,a=>-92,b=>1,d=>1,f=>0} a4ffffff110100 a4ffffff11010000 a4ffffff11010000 a4ffffff11010000 - {e=>3,c=>4,a=>-86,b=>4,d=>0,f=>7} aaffffff241807 aaffffff24180700 aaffffff24180700 aaffffff24180700 - {e=>0,c=>5,a=>117,b=>0,d=>1,f=>3} 75000000280103 7500000028010300 7500000028010300 7500000028010300 - {e=>4,c=>6,a=>103,b=>2,d=>4,f=>0} 67000000322400 6700000032240000 6700000032240000 6700000032240000 - {e=>2,c=>4,a=>42,b=>3,d=>2,f=>5} 2a000000231205 2a00000023120500 2a00000023120500 2a00000023120500 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>2,c=>0,a=>-3,g=>2,b=>5,d=>4,f=>5} fdffffff051415 fdffffff05141500 fdffffff05141500 fdffffff05141500 - {e=>5,c=>6,a=>-39,g=>0,b=>0,d=>0,f=>1} d9ffffff302801 d9ffffff30280100 d9ffffff30280100 d9ffffff30280100 - {e=>4,c=>0,a=>79,g=>3,b=>3,d=>7,f=>1} 4f000000032719 4f00000003271900 4f00000003271900 4f00000003271900 - {e=>1,c=>2,a=>-123,g=>2,b=>1,d=>0,f=>4} 85ffffff110814 85ffffff11081400 85ffffff11081400 85ffffff11081400 - {e=>4,c=>7,a=>100,g=>2,b=>3,d=>3,f=>6} 640000003b2316 640000003b231600 640000003b231600 640000003b231600 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>6,a=>-8,d=>6,c=>1,h=>6,b=>3,g=>1,f=>2} f8ffffff0b360a06 f8ffffff0b360a06 f8ffffff0b360a06 f8ffffff0b360a06 - {e=>4,a=>-75,d=>7,c=>3,h=>7,b=>3,g=>5,f=>3} b5ffffff1b272b07 b5ffffff1b272b07 b5ffffff1b272b07 b5ffffff1b272b07 - {e=>7,a=>-105,d=>6,c=>4,h=>5,b=>3,g=>2,f=>0} 97ffffff233e1005 97ffffff233e1005 97ffffff233e1005 97ffffff233e1005 - {e=>4,a=>115,d=>1,c=>7,h=>4,b=>6,g=>0,f=>0} 730000003e210004 730000003e210004 730000003e210004 730000003e210004 - {e=>4,a=>-9,d=>7,c=>1,h=>7,b=>7,g=>5,f=>3} f7ffffff0f272b07 f7ffffff0f272b07 f7ffffff0f272b07 f7ffffff0f272b07 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>-19,d=>4,c=>4,h=>6,b=>5,g=>6,f=>5,i=>7} edffffff2524353e edffffff2524353e edffffff2524353e edffffff2524353e - {e=>6,a=>-94,d=>4,c=>3,h=>2,b=>4,g=>7,f=>3,i=>1} a2ffffff1c343b0a a2ffffff1c343b0a a2ffffff1c343b0a a2ffffff1c343b0a - {e=>5,a=>117,d=>2,c=>3,h=>2,b=>6,g=>0,f=>7,i=>3} 750000001e2a071a 750000001e2a071a 750000001e2a071a 750000001e2a071a - {e=>7,a=>-27,d=>5,c=>4,h=>4,b=>1,g=>0,f=>5,i=>6} e5ffffff213d0534 e5ffffff213d0534 e5ffffff213d0534 e5ffffff213d0534 - {e=>4,a=>-18,d=>4,c=>3,h=>2,b=>0,g=>4,f=>1,i=>0} eeffffff18242102 eeffffff18242102 eeffffff18242102 eeffffff18242102 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>6,a=>-43,d=>7,j=>2,c=>3,h=>5,b=>4,g=>2,f=>2,i=>3} d5ffffff1c37121d02 d5ffffff1c37121d0200 d5ffffff1c37121d02000000 d5ffffff1c37121d02000000 - {e=>1,a=>41,d=>0,j=>6,c=>4,h=>7,b=>5,g=>5,f=>6,i=>0} 2900000025082e0706 2900000025082e070600 2900000025082e0706000000 2900000025082e0706000000 - {e=>0,a=>-53,d=>2,j=>3,c=>6,h=>4,b=>2,g=>2,f=>1,i=>3} cbffffff3202111c03 cbffffff3202111c0300 cbffffff3202111c03000000 cbffffff3202111c03000000 - {e=>7,a=>6,d=>6,j=>3,c=>7,h=>3,b=>3,g=>4,f=>6,i=>0} 060000003b3e260303 060000003b3e26030300 060000003b3e260303000000 060000003b3e260303000000 - {e=>7,a=>8,d=>4,j=>4,c=>4,h=>1,b=>2,g=>7,f=>1,i=>5} 08000000223c392904 08000000223c39290400 08000000223c392904000000 08000000223c392904000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>2,a=>-120,d=>3,j=>3,c=>1,k=>7,h=>5,b=>6,g=>1,f=>2,i=>6} 88ffffff0e130a353b 88ffffff0e130a353b00 88ffffff0e130a353b000000 88ffffff0e130a353b000000 - {e=>0,a=>116,d=>7,j=>1,c=>4,k=>0,h=>3,b=>1,g=>4,f=>3,i=>1} 740000002107230b01 740000002107230b0100 740000002107230b01000000 740000002107230b01000000 - {e=>4,a=>108,d=>2,j=>7,c=>4,k=>6,h=>2,b=>1,g=>0,f=>5,i=>0} 6c0000002122050237 6c000000212205023700 6c0000002122050237000000 6c0000002122050237000000 - {e=>3,a=>-126,d=>7,j=>0,c=>5,k=>6,h=>1,b=>0,g=>1,f=>7,i=>3} 82ffffff281f0f1930 82ffffff281f0f193000 82ffffff281f0f1930000000 82ffffff281f0f1930000000 - {e=>2,a=>-78,d=>3,j=>3,c=>7,k=>4,h=>1,b=>7,g=>2,f=>1,i=>2} b2ffffff3f13111123 b2ffffff3f1311112300 b2ffffff3f13111123000000 b2ffffff3f13111123000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>7,a=>14,d=>4,j=>1,l=>0,c=>6,k=>4,h=>3,b=>1,g=>2,f=>7,i=>1} 0e000000313c170b2100 0e000000313c170b2100 0e000000313c170b21000000 0e000000313c170b21000000 - {e=>0,a=>121,d=>5,j=>2,l=>2,c=>3,k=>1,h=>2,b=>0,g=>4,f=>2,i=>0} 79000000180522020a02 79000000180522020a02 79000000180522020a020000 79000000180522020a020000 - {e=>5,a=>-2,d=>5,j=>7,l=>4,c=>3,k=>0,h=>2,b=>2,g=>6,f=>3,i=>0} feffffff1a2d33020704 feffffff1a2d33020704 feffffff1a2d330207040000 feffffff1a2d330207040000 - {e=>4,a=>8,d=>2,j=>4,l=>3,c=>7,k=>2,h=>6,b=>4,g=>0,f=>5,i=>2} 080000003c2205161403 080000003c2205161403 080000003c22051614030000 080000003c22051614030000 - {e=>1,a=>-123,d=>4,j=>6,l=>2,c=>4,k=>3,h=>5,b=>7,g=>1,f=>5,i=>6} 85ffffff270c0d351e02 85ffffff270c0d351e02 85ffffff270c0d351e020000 85ffffff270c0d351e020000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>5,a=>-111,m=>3,d=>7,j=>6,l=>5,c=>6,k=>6,h=>6,b=>0,g=>4,f=>1,i=>2} 91ffffff302f2116361d 91ffffff302f2116361d 91ffffff302f2116361d0000 91ffffff302f2116361d0000 - {e=>4,a=>-44,m=>0,d=>4,j=>5,l=>1,c=>5,k=>0,h=>2,b=>2,g=>4,f=>7,i=>6} d4ffffff2a2427320501 d4ffffff2a2427320501 d4ffffff2a24273205010000 d4ffffff2a24273205010000 - {e=>7,a=>-24,m=>0,d=>0,j=>3,l=>1,c=>5,k=>5,h=>1,b=>2,g=>3,f=>5,i=>4} e8ffffff2a381d212b01 e8ffffff2a381d212b01 e8ffffff2a381d212b010000 e8ffffff2a381d212b010000 - {e=>4,a=>96,m=>2,d=>0,j=>1,l=>2,c=>2,k=>4,h=>4,b=>4,g=>3,f=>7,i=>2} 6000000014201f142112 6000000014201f142112 6000000014201f1421120000 6000000014201f1421120000 - {e=>2,a=>-3,m=>4,d=>0,j=>4,l=>5,c=>7,k=>3,h=>7,b=>5,g=>0,f=>1,i=>6} fdffffff3d1001371c25 fdffffff3d1001371c25 fdffffff3d1001371c250000 fdffffff3d1001371c250000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>5,n=>3,a=>-107,m=>1,d=>3,j=>7,l=>5,c=>0,k=>2,h=>0,b=>6,g=>2,f=>2,i=>7} 95ffffff062b1238170d03 95ffffff062b1238170d0300 95ffffff062b1238170d0300 95ffffff062b1238170d0300 - {e=>7,n=>1,a=>9,m=>6,d=>1,j=>2,l=>4,c=>7,k=>6,h=>7,b=>5,g=>4,f=>4,i=>6} 090000003d392437323401 090000003d39243732340100 090000003d39243732340100 090000003d39243732340100 - {e=>2,n=>1,a=>-50,m=>7,d=>3,j=>1,l=>6,c=>0,k=>2,h=>7,b=>2,g=>1,f=>5,i=>6} ceffffff02130d37113e01 ceffffff02130d37113e0100 ceffffff02130d37113e0100 ceffffff02130d37113e0100 - {e=>7,n=>4,a=>123,m=>1,d=>1,j=>2,l=>4,c=>4,k=>7,h=>0,b=>4,g=>6,f=>0,i=>6} 7b000000243930303a0c04 7b000000243930303a0c0400 7b000000243930303a0c0400 7b000000243930303a0c0400 - {e=>2,n=>4,a=>-2,m=>5,d=>3,j=>4,l=>4,c=>3,k=>2,h=>7,b=>4,g=>7,f=>3,i=>4} feffffff1c133b27142c04 feffffff1c133b27142c0400 feffffff1c133b27142c0400 feffffff1c133b27142c0400 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>2,n=>2,a=>66,m=>1,d=>2,j=>2,l=>3,c=>0,k=>3,h=>7,b=>2,g=>5,f=>1,o=>-57,i=>2} 42000000021229171a0b02c7ff 42000000021229171a0b0200c7ff 42000000021229171a0b0200c7ff0000 42000000021229171a0b0200c7ff0000 - {e=>5,n=>3,a=>-74,m=>0,d=>7,j=>6,l=>1,c=>4,k=>7,h=>6,b=>7,g=>3,f=>5,o=>39,i=>2} b6ffffff272f1d163e01032700 b6ffffff272f1d163e0103002700 b6ffffff272f1d163e01030027000000 b6ffffff272f1d163e01030027000000 - {e=>0,n=>4,a=>-119,m=>6,d=>5,j=>3,l=>4,c=>5,k=>2,h=>2,b=>3,g=>4,f=>1,o=>-9,i=>4} 89ffffff2b052122133404f7ff 89ffffff2b05212213340400f7ff 89ffffff2b05212213340400f7ff0000 89ffffff2b05212213340400f7ff0000 - {e=>3,n=>6,a=>-85,m=>7,d=>1,j=>6,l=>3,c=>7,k=>4,h=>4,b=>2,g=>5,f=>0,o=>120,i=>0} abffffff3a192804263b067800 abffffff3a192804263b06007800 abffffff3a192804263b060078000000 abffffff3a192804263b060078000000 - {e=>1,n=>6,a=>5,m=>5,d=>5,j=>2,l=>1,c=>4,k=>2,h=>0,b=>7,g=>0,f=>2,o=>-21,i=>6} 05000000270d0230122906ebff 05000000270d023012290600ebff 05000000270d023012290600ebff0000 05000000270d023012290600ebff0000 = struct int_wrap { int a:3; }; - {a=>3} 03000000 03000000 03000000 03000000 - {a=>-2} 06000000 06000000 06000000 06000000 - {a=>-2} 06000000 06000000 06000000 06000000 - {a=>2} 02000000 02000000 02000000 02000000 - {a=>1} 01000000 01000000 01000000 01000000 = struct int_wrap { int a:3; int b:3; }; - {a=>-4,b=>-1} 3c000000 3c000000 3c000000 3c000000 - {a=>-1,b=>-1} 3f000000 3f000000 3f000000 3f000000 - {a=>2,b=>3} 1a000000 1a000000 1a000000 1a000000 - {a=>-2,b=>-4} 26000000 26000000 26000000 26000000 - {a=>-2,b=>1} 0e000000 0e000000 0e000000 0e000000 = struct int_wrap { int a:3; int b:3; int c:3; }; - {c=>-2,a=>-3,b=>2} 95010000 95010000 95010000 95010000 - {c=>-3,a=>-4,b=>3} 5c010000 5c010000 5c010000 5c010000 - {c=>2,a=>1,b=>3} 99000000 99000000 99000000 99000000 - {c=>-4,a=>-4,b=>-1} 3c010000 3c010000 3c010000 3c010000 - {c=>-1,a=>-3,b=>-4} e5010000 e5010000 e5010000 e5010000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; }; - {c=>-1,a=>0,b=>-1,d=>0} f8010000 f8010000 f8010000 f8010000 - {c=>-2,a=>-2,b=>1,d=>2} 8e050000 8e050000 8e050000 8e050000 - {c=>-2,a=>0,b=>-4,d=>2} a0050000 a0050000 a0050000 a0050000 - {c=>-3,a=>1,b=>-4,d=>3} 61070000 61070000 61070000 61070000 - {c=>1,a=>-2,b=>2,d=>0} 56000000 56000000 56000000 56000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; }; - {e=>-3,c=>-3,a=>1,b=>-4,d=>-4} 61590000 61590000 61590000 61590000 - {e=>-3,c=>2,a=>0,b=>1,d=>0} 88500000 88500000 88500000 88500000 - {e=>-3,c=>3,a=>2,b=>-1,d=>0} fa500000 fa500000 fa500000 fa500000 - {e=>1,c=>-2,a=>-2,b=>-2,d=>3} b6170000 b6170000 b6170000 b6170000 - {e=>3,c=>1,a=>-1,b=>2,d=>-2} 573c0000 573c0000 573c0000 573c0000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-1,c=>-2,a=>-2,b=>2,d=>1,f=>3} 96f30100 96f30100 96f30100 96f30100 - {e=>-3,c=>-4,a=>3,b=>2,d=>1,f=>-3} 13d30200 13d30200 13d30200 13d30200 - {e=>-4,c=>0,a=>-1,b=>-4,d=>-1,f=>-2} 274e0300 274e0300 274e0300 274e0300 - {e=>-1,c=>-4,a=>-1,b=>1,d=>0,f=>-3} 0ff10200 0ff10200 0ff10200 0ff10200 - {e=>-4,c=>-2,a=>1,b=>3,d=>2,f=>-3} 99c50200 99c50200 99c50200 99c50200 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-4,c=>1,a=>-4,g=>0,b=>-2,d=>0,f=>-3} 74c00200 74c00200 74c00200 74c00200 - {e=>-2,c=>0,a=>-4,g=>3,b=>-4,d=>0,f=>-3} 24e00e00 24e00e00 24e00e00 24e00e00 - {e=>0,c=>1,a=>3,g=>2,b=>-3,d=>0,f=>0} 6b000800 6b000800 6b000800 6b000800 - {e=>-4,c=>-2,a=>-1,g=>3,b=>1,d=>1,f=>0} 8f430c00 8f430c00 8f430c00 8f430c00 - {e=>2,c=>-2,a=>-3,g=>0,b=>-3,d=>1,f=>-2} ad230300 ad230300 ad230300 ad230300 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>-2,a=>3,d=>-1,c=>-4,h=>-2,b=>-1,g=>0,f=>-4} 3b6fc200 3b6fc200 3b6fc200 3b6fc200 - {e=>3,a=>-4,d=>1,c=>1,h=>0,b=>2,g=>-3,f=>2} 54321500 54321500 54321500 54321500 - {e=>2,a=>-2,d=>2,c=>3,h=>-3,b=>3,g=>3,f=>-4} de24ae00 de24ae00 de24ae00 de24ae00 - {e=>2,a=>-1,d=>-1,c=>1,h=>-3,b=>-4,g=>2,f=>-4} 672eaa00 672eaa00 672eaa00 672eaa00 - {e=>0,a=>0,d=>0,c=>-4,h=>2,b=>3,g=>3,f=>0} 18014c00 18014c00 18014c00 18014c00 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>-4,a=>2,d=>-2,c=>-2,h=>3,b=>-3,g=>-2,f=>-3,i=>0} aacd7a00 aacd7a00 aacd7a00 aacd7a00 - {e=>-4,a=>-1,d=>2,c=>3,h=>1,b=>-1,g=>0,f=>-1,i=>0} ffc42300 ffc42300 ffc42300 ffc42300 - {e=>2,a=>0,d=>-1,c=>2,h=>2,b=>1,g=>3,f=>-1,i=>0} 88ae4f00 88ae4f00 88ae4f00 88ae4f00 - {e=>-3,a=>-4,d=>2,c=>-1,h=>-3,b=>2,g=>1,f=>-3,i=>-3} d4d5a605 d4d5a605 d4d5a605 d4d5a605 - {e=>1,a=>-1,d=>-1,c=>-1,h=>0,b=>-1,g=>-3,f=>-3,i=>2} ff9f1602 ff9f1602 ff9f1602 ff9f1602 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-3,a=>0,d=>-3,j=>-4,c=>3,h=>-1,b=>-3,g=>1,f=>1,i=>-4} e8dae424 e8dae424 e8dae424 e8dae424 - {e=>1,a=>3,d=>-3,j=>2,c=>-3,h=>3,b=>-1,g=>1,f=>-1,i=>-4} 7b9b6714 7b9b6714 7b9b6714 7b9b6714 - {e=>-3,a=>-3,d=>1,j=>-4,c=>-4,h=>3,b=>-1,g=>-1,f=>-2,i=>0} 3d537f20 3d537f20 3d537f20 3d537f20 - {e=>2,a=>0,d=>-4,j=>1,c=>3,h=>1,b=>-2,g=>1,f=>-2,i=>2} f028270a f028270a f028270a f028270a - {e=>-2,a=>1,d=>-1,j=>3,c=>-4,h=>2,b=>1,g=>0,f=>2,i=>3} 096f411b 096f411b 096f411b 096f411b = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-4,a=>2,d=>-4,j=>2,c=>-3,k=>-1,h=>-1,b=>2,g=>-3,f=>-3,i=>-4} 52c9f61407000000 52c9f61407000000 52c9f61407000000 52c9f61407000000 - {e=>3,a=>2,d=>-3,j=>-3,c=>-1,k=>-3,h=>-3,b=>0,g=>-4,f=>-3,i=>0} c2bbb22805000000 c2bbb22805000000 c2bbb22805000000 c2bbb22805000000 - {e=>-2,a=>1,d=>3,j=>-4,c=>-1,k=>3,h=>3,b=>1,g=>1,f=>2,i=>-3} c967652503000000 c967652503000000 c967652503000000 c967652503000000 - {e=>2,a=>3,d=>-4,j=>-4,c=>0,k=>-4,h=>-4,b=>3,g=>3,f=>-3,i=>-2} 1ba88e2604000000 1ba88e2604000000 1ba88e2604000000 1ba88e2604000000 - {e=>-1,a=>0,d=>-1,j=>-3,c=>-1,k=>2,h=>2,b=>-4,g=>-4,f=>-4,i=>-1} e07f522f02000000 e07f522f02000000 e07f522f02000000 e07f522f02000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>3,d=>-2,j=>-3,l=>0,c=>-3,k=>3,h=>-3,b=>-1,g=>1,f=>-3,i=>1} 7bdda62903000000 7bdda62903000000 7bdda62903000000 7bdda62903000000 - {e=>-2,a=>-1,d=>1,j=>3,l=>-3,c=>-2,k=>-1,h=>1,b=>3,g=>2,f=>-4,i=>2} 9f632a1a2f000000 9f632a1a2f000000 9f632a1a2f000000 9f632a1a2f000000 - {e=>-3,a=>3,d=>3,j=>3,l=>3,c=>2,k=>2,h=>-2,b=>0,g=>1,f=>-3,i=>-1} 83d6c61f1a000000 83d6c61f1a000000 83d6c61f1a000000 83d6c61f1a000000 - {e=>1,a=>2,d=>-3,j=>-4,l=>-4,c=>-4,k=>-3,h=>0,b=>-4,g=>1,f=>2,i=>3} 221b052325000000 221b052325000000 221b052325000000 221b052325000000 - {e=>0,a=>-4,d=>3,j=>-1,l=>0,c=>-1,k=>-3,h=>-2,b=>-3,g=>0,f=>-3,i=>-1} ec87c23f05000000 ec87c23f05000000 ec87c23f05000000 ec87c23f05000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>2,a=>3,m=>-2,d=>0,j=>-1,l=>0,c=>-3,k=>-4,h=>0,b=>1,g=>1,f=>0,i=>-1} 4b21043f84010000 4b21043f84010000 4b21043f84010000 4b21043f84010000 - {e=>1,a=>-1,m=>0,d=>3,j=>2,l=>-2,c=>1,k=>1,h=>-3,b=>0,g=>3,f=>0,i=>-1} 4716ac1731000000 4716ac1731000000 4716ac1731000000 4716ac1731000000 - {e=>3,a=>0,m=>-3,d=>2,j=>-4,l=>-3,c=>-4,k=>-1,h=>2,b=>2,g=>2,f=>-3,i=>-2} 10b54a266f010000 10b54a266f010000 10b54a266f010000 10b54a266f010000 - {e=>3,a=>1,m=>0,d=>3,j=>0,l=>3,c=>-4,k=>-1,h=>-3,b=>-3,g=>-3,f=>1,i=>1} 29b7b4011f000000 29b7b4011f000000 29b7b4011f000000 29b7b4011f000000 - {e=>-4,a=>-3,m=>1,d=>1,j=>-4,l=>0,c=>0,k=>0,h=>-1,b=>3,g=>1,f=>2,i=>3} 1d42e52340000000 1d42e52340000000 1d42e52340000000 1d42e52340000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n; }; - {e=>-4,n=>-50,a=>0,m=>-1,d=>-4,j=>-4,l=>3,c=>-4,k=>2,h=>2,b=>0,g=>1,f=>-1,i=>-3} 00c94725da010000ceffffff 00c94725da010000ceffffff 00c94725da010000ceffffff 00c94725da010000ceffffff - {e=>2,n=>59,a=>1,m=>2,d=>-1,j=>2,l=>0,c=>-3,k=>0,h=>-2,b=>-3,g=>-3,f=>0,i=>0} 692fd410800000003b000000 692fd410800000003b000000 692fd410800000003b000000 692fd410800000003b000000 - {e=>3,n=>94,a=>2,m=>2,d=>-4,j=>-2,l=>-2,c=>-3,k=>-1,h=>-3,b=>-1,g=>-2,f=>2,i=>2} 7a39b932b70000005e000000 7a39b932b70000005e000000 7a39b932b70000005e000000 7a39b932b70000005e000000 - {e=>0,n=>126,a=>3,m=>1,d=>0,j=>0,l=>2,c=>-2,k=>-1,h=>-4,b=>2,g=>-3,f=>0,i=>0} 93019400570000007e000000 93019400570000007e000000 93019400570000007e000000 93019400570000007e000000 - {e=>3,n=>50,a=>-3,m=>2,d=>2,j=>-2,l=>-3,c=>-2,k=>3,h=>-1,b=>-2,g=>2,f=>-3,i=>-1} b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 = struct int_wrap { char a; int b:3; }; - {a=>-96,b=>2} a002000000 a00002000000 a000000002000000 a000000002000000 - {a=>-46,b=>2} d202000000 d20002000000 d200000002000000 d200000002000000 - {a=>-68,b=>3} bc03000000 bc0003000000 bc00000003000000 bc00000003000000 - {a=>0,b=>3} 0003000000 000003000000 0000000003000000 0000000003000000 - {a=>-26,b=>-2} e606000000 e60006000000 e600000006000000 e600000006000000 = struct int_wrap { char a; int b:3; int c:3; }; - {c=>1,a=>123,b=>0} 7b08000000 7b0008000000 7b00000008000000 7b00000008000000 - {c=>-1,a=>-98,b=>2} 9e3a000000 9e003a000000 9e0000003a000000 9e0000003a000000 - {c=>-3,a=>75,b=>-4} 4b2c000000 4b002c000000 4b0000002c000000 4b0000002c000000 - {c=>-4,a=>-4,b=>-4} fc24000000 fc0024000000 fc00000024000000 fc00000024000000 - {c=>-1,a=>17,b=>1} 1139000000 110039000000 1100000039000000 1100000039000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; }; - {c=>-4,a=>17,b=>-2,d=>1} 1166000000 110066000000 1100000066000000 1100000066000000 - {c=>0,a=>75,b=>0,d=>3} 4bc0000000 4b00c0000000 4b000000c0000000 4b000000c0000000 - {c=>3,a=>-89,b=>1,d=>1} a759000000 a70059000000 a700000059000000 a700000059000000 - {c=>2,a=>86,b=>2,d=>3} 56d2000000 5600d2000000 56000000d2000000 56000000d2000000 - {c=>-4,a=>53,b=>-1,d=>0} 3527000000 350027000000 3500000027000000 3500000027000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; }; - {e=>-4,c=>-3,a=>-104,b=>-2,d=>0} 982e080000 98002e080000 980000002e080000 980000002e080000 - {e=>0,c=>2,a=>8,b=>2,d=>-3} 0852010000 080052010000 0800000052010000 0800000052010000 - {e=>0,c=>-2,a=>-41,b=>-2,d=>0} d736000000 d70036000000 d700000036000000 d700000036000000 - {e=>-4,c=>-4,a=>56,b=>2,d=>-4} 3822090000 380022090000 3800000022090000 3800000022090000 - {e=>-3,c=>3,a=>-43,b=>-2,d=>-3} d55e0b0000 d5005e0b0000 d50000005e0b0000 d50000005e0b0000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-4,c=>1,a=>119,b=>1,d=>1,f=>1} 7749180000 770049180000 7700000049180000 7700000049180000 - {e=>-1,c=>-3,a=>-91,b=>-2,d=>2,f=>-4} a5ae4e0000 a500ae4e0000 a5000000ae4e0000 a5000000ae4e0000 - {e=>0,c=>-4,a=>-43,b=>2,d=>0,f=>-1} d522700000 d50022700000 d500000022700000 d500000022700000 - {e=>1,c=>-3,a=>121,b=>2,d=>1,f=>-3} 796a520000 79006a520000 790000006a520000 790000006a520000 - {e=>1,c=>3,a=>12,b=>0,d=>1,f=>-2} 0c58620000 0c0058620000 0c00000058620000 0c00000058620000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>1,c=>3,a=>92,g=>2,b=>0,d=>-4,f=>-1} 5c18730100 5c0018730100 5c00000018730100 5c00000018730100 - {e=>-3,c=>3,a=>70,g=>-1,b=>1,d=>2,f=>1} 46999a0300 4600999a0300 46000000999a0300 46000000999a0300 - {e=>0,c=>2,a=>61,g=>-4,b=>-3,d=>-3,f=>0} 3d55010200 3d0055010200 3d00000055010200 3d00000055010200 - {e=>1,c=>1,a=>-72,g=>-3,b=>2,d=>0,f=>0} b80a820200 b8000a820200 b80000000a820200 b80000000a820200 - {e=>3,c=>2,a=>36,g=>-3,b=>-1,d=>1,f=>-1} 2457f60200 240057f60200 2400000057f60200 2400000057f60200 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>1,a=>2,d=>2,c=>-4,h=>1,b=>1,g=>3,f=>3} 02a1b20500 0200a1b20500 02000000a1b20500 02000000a1b20500 - {e=>-4,a=>-16,d=>-2,c=>2,h=>-3,b=>0,g=>-4,f=>-3} f090591600 f00090591600 f000000090591600 f000000090591600 - {e=>-3,a=>86,d=>2,c=>3,h=>-3,b=>0,g=>1,f=>-3} 5698da1400 560098da1400 5600000098da1400 5600000098da1400 - {e=>-2,a=>-5,d=>-2,c=>1,h=>2,b=>-1,g=>-4,f=>2} fb8f2d0a00 fb008f2d0a00 fb0000008f2d0a00 fb0000008f2d0a00 - {e=>3,a=>-13,d=>-3,c=>-2,h=>1,b=>-3,g=>2,f=>-2} f375670500 f30075670500 f300000075670500 f300000075670500 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>0,a=>87,d=>-1,c=>-2,h=>-2,b=>-2,g=>1,f=>-3,i=>-3} 57f6d1b800 5700f6d1b800 57000000f6d1b800 57000000f6d1b800 - {e=>0,a=>28,d=>-3,c=>-3,h=>1,b=>0,g=>-1,f=>2,i=>1} 1c68a12700 1c0068a12700 1c00000068a12700 1c00000068a12700 - {e=>3,a=>63,d=>3,c=>2,h=>-3,b=>-4,g=>-2,f=>-2,i=>2} 3fd4665700 3f00d4665700 3f000000d4665700 3f000000d4665700 - {e=>-4,a=>70,d=>3,c=>-4,h=>2,b=>-1,g=>-2,f=>3,i=>-3} 46e738ab00 4600e738ab00 46000000e738ab00 46000000e738ab00 - {e=>-1,a=>16,d=>-4,c=>0,h=>-1,b=>-2,g=>-2,f=>2,i=>0} 10062f1f00 1000062f1f00 10000000062f1f00 10000000062f1f00 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>3,a=>-82,d=>-3,j=>-4,c=>-2,h=>0,b=>-3,g=>2,f=>3,i=>0} ae75370104 ae0075370104 ae00000075370104 ae00000075370104 - {e=>-2,a=>-73,d=>0,j=>-3,c=>-2,h=>2,b=>-4,g=>0,f=>0,i=>0} b7340c0805 b700340c0805 b7000000340c0805 b7000000340c0805 - {e=>2,a=>-108,d=>3,j=>2,c=>2,h=>3,b=>1,g=>-1,f=>-2,i=>3} 94d1e46f02 9400d1e46f02 94000000d1e46f02 94000000d1e46f02 - {e=>-1,a=>-101,d=>1,j=>2,c=>-4,h=>0,b=>2,g=>-1,f=>-3,i=>2} 9b62de4302 9b0062de4302 9b00000062de4302 9b00000062de4302 - {e=>2,a=>67,d=>-1,j=>-1,c=>-4,h=>-4,b=>1,g=>-4,f=>-1,i=>-3} 43e175b207 4300e175b207 43000000e175b207 43000000e175b207 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-3,a=>-38,d=>-4,j=>0,c=>1,k=>3,h=>-1,b=>3,g=>-2,f=>2,i=>0} da0b2b1f18 da000b2b1f18 da0000000b2b1f18 da0000000b2b1f18 - {e=>2,a=>-104,d=>-4,j=>-2,c=>2,k=>1,h=>0,b=>3,g=>1,f=>1,i=>-2} 981395c00e 98001395c00e 980000001395c00e 980000001395c00e - {e=>-1,a=>-37,d=>-1,j=>-3,c=>-4,k=>-4,h=>-1,b=>1,g=>-3,f=>-4,i=>0} dbe1cf1e25 db00e1cf1e25 db000000e1cf1e25 db000000e1cf1e25 - {e=>1,a=>93,d=>3,j=>0,c=>0,k=>0,h=>-2,b=>1,g=>3,f=>2,i=>1} 5dc1a23900 5d00c1a23900 5d000000c1a23900 5d000000c1a23900 - {e=>3,a=>41,d=>2,j=>-2,c=>3,k=>-1,h=>-3,b=>0,g=>-1,f=>0,i=>3} 299886773e 29009886773e 290000009886773e 290000009886773e = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-1,a=>104,d=>3,j=>-3,l=>1,c=>-3,k=>3,h=>-2,b=>3,g=>-4,f=>-2,i=>-1} 68eb6efa1d01000000 6800eb6efa1d01000000 68000000eb6efa1d01000000 68000000eb6efa1d01000000 - {e=>-1,a=>-32,d=>2,j=>-3,l=>3,c=>0,k=>0,h=>-2,b=>-2,g=>1,f=>0,i=>0} e0868e180503000000 e000868e180503000000 e0000000868e180503000000 e0000000868e180503000000 - {e=>0,a=>-7,d=>2,j=>3,l=>3,c=>2,k=>1,h=>-4,b=>1,g=>-3,f=>-3,i=>-2} f991d0d20b03000000 f90091d0d20b03000000 f900000091d0d20b03000000 f900000091d0d20b03000000 - {e=>-1,a=>78,d=>0,j=>1,l=>-2,c=>-2,k=>3,h=>1,b=>-2,g=>1,f=>1,i=>0} 4e369e041906000000 4e00369e041906000000 4e000000369e041906000000 4e000000369e041906000000 - {e=>2,a=>-39,d=>-4,j=>-4,l=>2,c=>3,k=>-1,h=>1,b=>2,g=>-3,f=>-2,i=>0} d91ae5063c02000000 d9001ae5063c02000000 d90000001ae5063c02000000 d90000001ae5063c02000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>-4,a=>4,m=>-2,d=>-4,j=>2,l=>-2,c=>0,k=>1,h=>1,b=>2,g=>-3,f=>2,i=>1} 0402a9260a36000000 040002a9260a36000000 0400000002a9260a36000000 0400000002a9260a36000000 - {e=>-1,a=>-76,m=>-1,d=>1,j=>0,l=>-1,c=>-4,k=>3,h=>-1,b=>-1,g=>2,f=>0,i=>-3} b4670ebd183f000000 b400670ebd183f000000 b4000000670ebd183f000000 b4000000670ebd183f000000 - {e=>3,a=>64,m=>-2,d=>-2,j=>-1,l=>1,c=>2,k=>2,h=>2,b=>1,g=>-2,f=>3,i=>-2} 409137cb1731000000 40009137cb1731000000 400000009137cb1731000000 400000009137cb1731000000 - {e=>0,a=>13,m=>1,d=>-3,j=>0,l=>-3,c=>-4,k=>0,h=>-3,b=>0,g=>2,f=>3,i=>-1} 0d6031f5000d000000 0d006031f5000d000000 0d0000006031f5000d000000 0d0000006031f5000d000000 - {e=>-3,a=>-31,m=>3,d=>3,j=>-3,l=>-3,c=>-3,k=>1,h=>-3,b=>-1,g=>3,f=>0,i=>-2} e1ef8ad50d1d000000 e100ef8ad50d1d000000 e1000000ef8ad50d1d000000 e1000000ef8ad50d1d000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>3,n=>0,a=>68,m=>2,d=>2,j=>-1,l=>0,c=>-1,k=>0,h=>-4,b=>-3,g=>2,f=>-2,i=>2} 44bd66510710000000 4400bd66510710000000 44000000bd66510710000000 44000000bd66510710000000 - {e=>-3,n=>-2,a=>83,m=>3,d=>-3,j=>0,l=>-4,c=>-3,k=>-3,h=>0,b=>2,g=>-4,f=>-1,i=>2} 536a7b42289c010000 53006a7b42289c010000 530000006a7b42289c010000 530000006a7b42289c010000 - {e=>-4,n=>-1,a=>-51,m=>3,d=>-2,j=>-3,l=>-4,c=>3,k=>0,h=>2,b=>0,g=>0,f=>-3,i=>-3} cd9859a805dc010000 cd009859a805dc010000 cd0000009859a805dc010000 cd0000009859a805dc010000 - {e=>-4,n=>-2,a=>53,m=>2,d=>0,j=>-4,l=>-1,c=>2,k=>-4,h=>-2,b=>0,g=>-1,f=>2,i=>1} 3510a83b2497010000 350010a83b2497010000 3500000010a83b2497010000 3500000010a83b2497010000 - {e=>-4,n=>-4,a=>-114,m=>-1,d=>-1,j=>0,l=>3,c=>-1,k=>3,h=>1,b=>0,g=>1,f=>-4,i=>0} 8ef8c904183b010000 8e00f8c904183b010000 8e000000f8c904183b010000 8e000000f8c904183b010000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>2,n=>2,a=>81,m=>3,d=>2,j=>0,l=>1,c=>-2,k=>-1,h=>3,b=>-2,g=>-1,f=>3,o=>64,i=>2} 51b6b44f389900000040000000 5100b6b44f389900000040000000 51000000b6b44f389900000040000000 51000000b6b44f389900000040000000 - {e=>-3,n=>0,a=>114,m=>0,d=>1,j=>-1,l=>-4,c=>1,k=>0,h=>-3,b=>3,g=>-4,f=>-3,o=>31,i=>2} 724b5a5607040000001f000000 72004b5a5607040000001f000000 720000004b5a5607040000001f000000 720000004b5a5607040000001f000000 - {e=>-2,n=>2,a=>-90,m=>-1,d=>-2,j=>1,l=>2,c=>-1,k=>-2,h=>-2,b=>-3,g=>2,f=>3,o=>11,i=>-2} a6bd3dd931ba0000000b000000 a600bd3dd931ba0000000b000000 a6000000bd3dd931ba0000000b000000 a6000000bd3dd931ba0000000b000000 - {e=>-4,n=>1,a=>-83,m=>2,d=>0,j=>-3,l=>3,c=>-3,k=>0,h=>0,b=>0,g=>-3,f=>-3,o=>-60,i=>-1} ad28d8e20553000000c4ffffff ad0028d8e20553000000c4ffffff ad00000028d8e20553000000c4ffffff ad00000028d8e20553000000c4ffffff - {e=>3,n=>0,a=>-38,m=>-4,d=>2,j=>-3,l=>-4,c=>-2,k=>-4,h=>-3,b=>0,g=>-4,f=>-4,o=>-32,i=>-4} dab046962524000000e0ffffff da00b046962524000000e0ffffff da000000b046962524000000e0ffffff da000000b046962524000000e0ffffff = struct int_wrap { short a; int b:3; }; - {a=>69,b=>-1} 450007000000 450007000000 4500000007000000 4500000007000000 - {a=>50,b=>1} 320001000000 320001000000 3200000001000000 3200000001000000 - {a=>40,b=>0} 280000000000 280000000000 2800000000000000 2800000000000000 - {a=>-10,b=>-4} f6ff04000000 f6ff04000000 f6ff000004000000 f6ff000004000000 - {a=>-64,b=>-1} c0ff07000000 c0ff07000000 c0ff000007000000 c0ff000007000000 = struct int_wrap { short a; int b:3; int c:3; }; - {c=>0,a=>106,b=>-1} 6a0007000000 6a0007000000 6a00000007000000 6a00000007000000 - {c=>-3,a=>112,b=>0} 700028000000 700028000000 7000000028000000 7000000028000000 - {c=>-1,a=>75,b=>-4} 4b003c000000 4b003c000000 4b0000003c000000 4b0000003c000000 - {c=>1,a=>-46,b=>1} d2ff09000000 d2ff09000000 d2ff000009000000 d2ff000009000000 - {c=>-4,a=>22,b=>-4} 160024000000 160024000000 1600000024000000 1600000024000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; }; - {c=>0,a=>-84,b=>-2,d=>-1} acffc6010000 acffc6010000 acff0000c6010000 acff0000c6010000 - {c=>0,a=>-79,b=>2,d=>-1} b1ffc2010000 b1ffc2010000 b1ff0000c2010000 b1ff0000c2010000 - {c=>-2,a=>102,b=>2,d=>0} 660032000000 660032000000 6600000032000000 6600000032000000 - {c=>-4,a=>117,b=>-3,d=>-2} 7500a5010000 7500a5010000 75000000a5010000 75000000a5010000 - {c=>-1,a=>-97,b=>-1,d=>-2} 9fffbf010000 9fffbf010000 9fff0000bf010000 9fff0000bf010000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; }; - {e=>-1,c=>-2,a=>63,b=>0,d=>-4} 3f00300f0000 3f00300f0000 3f000000300f0000 3f000000300f0000 - {e=>2,c=>-1,a=>-22,b=>-2,d=>2} eaffbe040000 eaffbe040000 eaff0000be040000 eaff0000be040000 - {e=>0,c=>1,a=>-97,b=>0,d=>3} 9fffc8000000 9fffc8000000 9fff0000c8000000 9fff0000c8000000 - {e=>0,c=>-3,a=>-3,b=>-3,d=>3} fdffed000000 fdffed000000 fdff0000ed000000 fdff0000ed000000 - {e=>-2,c=>0,a=>-35,b=>-1,d=>-1} ddffc70d0000 ddffc70d0000 ddff0000c70d0000 ddff0000c70d0000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-3,c=>0,a=>-77,b=>-2,d=>3,f=>3} b3ffc63a0000 b3ffc63a0000 b3ff0000c63a0000 b3ff0000c63a0000 - {e=>-2,c=>1,a=>108,b=>2,d=>1,f=>2} 6c004a2c0000 6c004a2c0000 6c0000004a2c0000 6c0000004a2c0000 - {e=>-3,c=>3,a=>-37,b=>-2,d=>-3,f=>2} dbff5e2b0000 dbff5e2b0000 dbff00005e2b0000 dbff00005e2b0000 - {e=>-2,c=>3,a=>-8,b=>-3,d=>-1,f=>-1} f8ffdd7d0000 f8ffdd7d0000 f8ff0000dd7d0000 f8ff0000dd7d0000 - {e=>3,c=>-1,a=>-111,b=>-4,d=>-2,f=>-2} 91ffbc670000 91ffbc670000 91ff0000bc670000 91ff0000bc670000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-2,c=>1,a=>81,g=>-3,b=>2,d=>-3,f=>3} 51004abd0200 51004abd0200 510000004abd0200 510000004abd0200 - {e=>1,c=>-2,a=>75,g=>-3,b=>-4,d=>-3,f=>-1} 4b0074f30200 4b0074f30200 4b00000074f30200 4b00000074f30200 - {e=>1,c=>-4,a=>54,g=>-4,b=>-1,d=>-4,f=>-4} 360027430200 360027430200 3600000027430200 3600000027430200 - {e=>-1,c=>-2,a=>82,g=>3,b=>1,d=>-4,f=>-3} 520031df0100 520031df0100 5200000031df0100 5200000031df0100 - {e=>0,c=>-2,a=>-94,g=>3,b=>-1,d=>-4,f=>3} a2ff37b10100 a2ff37b10100 a2ff000037b10100 a2ff000037b10100 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>-2,a=>-123,d=>2,c=>3,h=>0,b=>2,g=>2,f=>-2} 85ff9a6c0100 85ff9a6c0100 85ff00009a6c0100 85ff00009a6c0100 - {e=>-4,a=>-75,d=>-2,c=>2,h=>-3,b=>0,g=>-4,f=>0} b5ff90091600 b5ff90091600 b5ff000090091600 b5ff000090091600 - {e=>-1,a=>-85,d=>0,c=>-4,h=>-4,b=>1,g=>-2,f=>-4} abff214e1300 abff214e1300 abff0000214e1300 abff0000214e1300 - {e=>-4,a=>94,d=>-1,c=>-4,h=>2,b=>-2,g=>-2,f=>3} 5e00e6390b00 5e00e6390b00 5e000000e6390b00 5e000000e6390b00 - {e=>1,a=>26,d=>-3,c=>-3,h=>-3,b=>2,g=>-4,f=>2} 1a006a231600 1a006a231600 1a0000006a231600 1a0000006a231600 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>-4,a=>-127,d=>1,c=>0,h=>3,b=>1,g=>-1,f=>3,i=>3} 81ff41b86f00 81ff41b86f00 81ff000041b86f00 81ff000041b86f00 - {e=>-2,a=>-73,d=>-3,c=>1,h=>-3,b=>-1,g=>3,f=>-3,i=>-4} b7ff4fdd9500 b7ff4fdd9500 b7ff00004fdd9500 b7ff00004fdd9500 - {e=>-4,a=>-22,d=>2,c=>-4,h=>3,b=>2,g=>0,f=>3,i=>-2} eaffa238cc00 eaffa238cc00 eaff0000a238cc00 eaff0000a238cc00 - {e=>3,a=>-124,d=>3,c=>2,h=>3,b=>0,g=>0,f=>2,i=>2} 84ffd0264c00 84ffd0264c00 84ff0000d0264c00 84ff0000d0264c00 - {e=>2,a=>115,d=>3,c=>1,h=>-3,b=>2,g=>3,f=>-1,i=>0} 7300caf41500 7300caf41500 73000000caf41500 73000000caf41500 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-4,a=>-21,d=>-2,j=>-2,c=>-1,h=>-1,b=>-2,g=>-2,f=>-3,i=>1} ebffbe593f06 ebffbe593f06 ebff0000be593f06 ebff0000be593f06 - {e=>-3,a=>71,d=>1,j=>-1,c=>2,h=>0,b=>-4,g=>1,f=>-4,i=>-4} 470054ca8007 470054ca8007 4700000054ca8007 4700000054ca8007 - {e=>-2,a=>-5,d=>-3,j=>3,c=>-3,h=>1,b=>-3,g=>3,f=>2,i=>-1} fbff6dade503 fbff6dade503 fbff00006dade503 fbff00006dade503 - {e=>1,a=>-46,d=>3,j=>-2,c=>3,h=>-4,b=>-4,g=>-3,f=>-2,i=>0} d2ffdce21206 d2ffdce21206 d2ff0000dce21206 d2ff0000dce21206 - {e=>2,a=>-69,d=>-4,j=>0,c=>3,h=>3,b=>1,g=>2,f=>-2,i=>2} bbff19654d00 bbff19654d00 bbff000019654d00 bbff000019654d00 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>3,a=>-20,d=>2,j=>-2,c=>-4,k=>3,h=>-1,b=>-1,g=>-2,f=>-4,i=>-3} ecffa746bf1e ecffa746bf1e ecff0000a746bf1e ecff0000a746bf1e - {e=>-1,a=>-104,d=>2,j=>-4,c=>1,k=>-2,h=>-1,b=>1,g=>-3,f=>-4,i=>1} 98ff89ce3e34 98ff89ce3e34 98ff000089ce3e34 98ff000089ce3e34 - {e=>3,a=>11,d=>3,j=>0,c=>2,k=>-3,h=>-3,b=>-2,g=>0,f=>-1,i=>-4} 0b00d6769428 0b00d6769428 0b000000d6769428 0b000000d6769428 - {e=>-1,a=>102,d=>2,j=>-2,c=>-4,k=>-4,h=>-1,b=>0,g=>-4,f=>-2,i=>2} 6600a06e5e26 6600a06e5e26 66000000a06e5e26 66000000a06e5e26 - {e=>0,a=>-79,d=>-3,j=>-1,c=>0,k=>-2,h=>0,b=>3,g=>1,f=>-3,i=>-3} b1ff43d1a037 b1ff43d1a037 b1ff000043d1a037 b1ff000043d1a037 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>-109,d=>-4,j=>-3,l=>-4,c=>-4,k=>-4,h=>-1,b=>1,g=>-1,f=>-4,i=>1} 93ff21cb3f2504000000 93ff21cb3f2504000000 93ff000021cb3f2504000000 93ff000021cb3f2504000000 - {e=>1,a=>-37,d=>-3,j=>-2,l=>-3,c=>2,k=>-3,h=>-4,b=>3,g=>-1,f=>-4,i=>-2} dbff53c3d32e05000000 dbff53c3d32e05000000 dbff000053c3d32e05000000 dbff000053c3d32e05000000 - {e=>-3,a=>-27,d=>-3,j=>-2,l=>-3,c=>1,k=>1,h=>-2,b=>-4,g=>1,f=>3,i=>-4} e5ff4cbb980e05000000 e5ff4cbb980e05000000 e5ff00004cbb980e05000000 e5ff00004cbb980e05000000 - {e=>3,a=>-69,d=>-3,j=>-3,l=>-1,c=>-3,k=>1,h=>2,b=>3,g=>2,f=>0,i=>3} bbff6b07690d07000000 bbff6b07690d07000000 bbff00006b07690d07000000 bbff00006b07690d07000000 - {e=>0,a=>-52,d=>1,j=>2,l=>1,c=>-3,k=>-4,h=>0,b=>-3,g=>3,f=>-3,i=>0} ccff6dd0012201000000 ccff6dd0012201000000 ccff00006dd0012201000000 ccff00006dd0012201000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>1,a=>-21,m=>-3,d=>-4,j=>-2,l=>2,c=>-4,k=>-2,h=>-4,b=>-4,g=>2,f=>-1,i=>2} ebff247351362a000000 ebff247351362a000000 ebff0000247351362a000000 ebff0000247351362a000000 - {e=>-1,a=>-68,m=>-2,d=>-2,j=>0,l=>1,c=>3,k=>2,h=>-3,b=>0,g=>3,f=>-3,i=>0} bcff98df151031000000 bcff98df151031000000 bcff000098df151031000000 bcff000098df151031000000 - {e=>-1,a=>-32,m=>-3,d=>0,j=>1,l=>2,c=>2,k=>-2,h=>0,b=>0,g=>-2,f=>-2,i=>-3} e0ff106ea3312a000000 e0ff106ea3312a000000 e0ff0000106ea3312a000000 e0ff0000106ea3312a000000 - {e=>1,a=>-68,m=>0,d=>1,j=>-3,l=>3,c=>-4,k=>2,h=>-4,b=>0,g=>3,f=>-1,i=>2} bcff60f2511503000000 bcff60f2511503000000 bcff000060f2511503000000 bcff000060f2511503000000 - {e=>-4,a=>-109,m=>-4,d=>2,j=>2,l=>-1,c=>-2,k=>2,h=>-1,b=>-4,g=>-1,f=>0,i=>-2} 93ffb488df1227000000 93ffb488df1227000000 93ff0000b488df1227000000 93ff0000b488df1227000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>-2,n=>-4,a=>79,m=>-3,d=>3,j=>-2,l=>2,c=>-4,k=>-1,h=>0,b=>-1,g=>-4,f=>-4,i=>-4} 4f00e74c823e2a010000 4f00e74c823e2a010000 4f000000e74c823e2a010000 4f000000e74c823e2a010000 - {e=>3,n=>0,a=>-114,m=>-3,d=>-1,j=>2,l=>-1,c=>0,k=>1,h=>0,b=>-1,g=>-1,f=>3,i=>0} 8effc7b7030a2f000000 8effc7b7030a2f000000 8eff0000c7b7030a2f000000 8eff0000c7b7030a2f000000 - {e=>1,n=>0,a=>-17,m=>-1,d=>1,j=>2,l=>-2,c=>-4,k=>3,h=>-4,b=>-3,g=>-3,f=>0,i=>0} efff6582121a3e000000 efff6582121a3e000000 efff00006582121a3e000000 efff00006582121a3e000000 - {e=>2,n=>2,a=>-31,m=>0,d=>-4,j=>2,l=>-1,c=>0,k=>-2,h=>-1,b=>-3,g=>-4,f=>-2,i=>-1} e1ff0565fe3287000000 e1ff0565fe3287000000 e1ff00000565fe3287000000 e1ff00000565fe3287000000 - {e=>-4,n=>3,a=>-41,m=>1,d=>-1,j=>0,l=>-2,c=>1,k=>-1,h=>-2,b=>1,g=>0,f=>0,i=>0} d7ffc9091838ce000000 d7ffc9091838ce000000 d7ff0000c9091838ce000000 d7ff0000c9091838ce000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>1,n=>0,a=>69,m=>-1,d=>-4,j=>1,l=>1,c=>-1,k=>-2,h=>-1,b=>-1,g=>-2,f=>-3,o=>1,i=>-1} 45003f53ff313900000001000000 45003f53ff313900000001000000 450000003f53ff313900000001000000 450000003f53ff313900000001000000 - {e=>2,n=>0,a=>-113,m=>3,d=>1,j=>1,l=>-1,c=>0,k=>3,h=>2,b=>-1,g=>-1,f=>-4,o=>-65,i=>-3} 8fff47c4ab191f000000bfffffff 8fff47c4ab191f000000bfffffff 8fff000047c4ab191f000000bfffffff 8fff000047c4ab191f000000bfffffff - {e=>1,n=>-3,a=>-34,m=>0,d=>-1,j=>3,l=>0,c=>1,k=>3,h=>-1,b=>-1,g=>-1,f=>2,o=>-8,i=>0} deffcfa31f1b40010000f8ffffff deffcfa31f1b40010000f8ffffff deff0000cfa31f1b40010000f8ffffff deff0000cfa31f1b40010000f8ffffff - {e=>3,n=>1,a=>84,m=>-2,d=>1,j=>1,l=>1,c=>2,k=>3,h=>3,b=>3,g=>-4,f=>3,o=>115,i=>-3} 54005336ae197100000073000000 54005336ae197100000073000000 540000005336ae197100000073000000 540000005336ae197100000073000000 - {e=>3,n=>0,a=>-51,m=>-3,d=>-3,j=>2,l=>0,c=>3,k=>2,h=>0,b=>1,g=>1,f=>3,o=>-72,i=>-3} cdff59b7a01228000000b8ffffff cdff59b7a01228000000b8ffffff cdff000059b7a01228000000b8ffffff cdff000059b7a01228000000b8ffffff = struct int_wrap { int a; int b:3; }; - {a=>-84,b=>-2} acffffff06000000 acffffff06000000 acffffff06000000 acffffff06000000 - {a=>71,b=>2} 4700000002000000 4700000002000000 4700000002000000 4700000002000000 - {a=>-81,b=>0} afffffff00000000 afffffff00000000 afffffff00000000 afffffff00000000 - {a=>-113,b=>-3} 8fffffff05000000 8fffffff05000000 8fffffff05000000 8fffffff05000000 - {a=>16,b=>-1} 1000000007000000 1000000007000000 1000000007000000 1000000007000000 = struct int_wrap { int a; int b:3; int c:3; }; - {c=>-3,a=>53,b=>-4} 350000002c000000 350000002c000000 350000002c000000 350000002c000000 - {c=>-3,a=>67,b=>-4} 430000002c000000 430000002c000000 430000002c000000 430000002c000000 - {c=>1,a=>102,b=>2} 660000000a000000 660000000a000000 660000000a000000 660000000a000000 - {c=>0,a=>-10,b=>1} f6ffffff01000000 f6ffffff01000000 f6ffffff01000000 f6ffffff01000000 - {c=>0,a=>-76,b=>0} b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; }; - {c=>-1,a=>-33,b=>-1,d=>-1} dfffffffff010000 dfffffffff010000 dfffffffff010000 dfffffffff010000 - {c=>-4,a=>-87,b=>2,d=>-1} a9ffffffe2010000 a9ffffffe2010000 a9ffffffe2010000 a9ffffffe2010000 - {c=>3,a=>19,b=>0,d=>3} 13000000d8000000 13000000d8000000 13000000d8000000 13000000d8000000 - {c=>-4,a=>39,b=>0,d=>-1} 27000000e0010000 27000000e0010000 27000000e0010000 27000000e0010000 - {c=>0,a=>-2,b=>3,d=>-4} feffffff03010000 feffffff03010000 feffffff03010000 feffffff03010000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; }; - {e=>1,c=>2,a=>-32,b=>1,d=>-2} e0ffffff91030000 e0ffffff91030000 e0ffffff91030000 e0ffffff91030000 - {e=>-4,c=>0,a=>12,b=>0,d=>2} 0c00000080080000 0c00000080080000 0c00000080080000 0c00000080080000 - {e=>-2,c=>1,a=>74,b=>0,d=>0} 4a000000080c0000 4a000000080c0000 4a000000080c0000 4a000000080c0000 - {e=>-3,c=>3,a=>-43,b=>-1,d=>-1} d5ffffffdf0b0000 d5ffffffdf0b0000 d5ffffffdf0b0000 d5ffffffdf0b0000 - {e=>3,c=>3,a=>67,b=>1,d=>-1} 43000000d9070000 43000000d9070000 43000000d9070000 43000000d9070000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>0,c=>3,a=>-63,b=>2,d=>0,f=>1} c1ffffff1a100000 c1ffffff1a100000 c1ffffff1a100000 c1ffffff1a100000 - {e=>3,c=>3,a=>-76,b=>-1,d=>-4,f=>3} b4ffffff1f370000 b4ffffff1f370000 b4ffffff1f370000 b4ffffff1f370000 - {e=>-1,c=>0,a=>45,b=>3,d=>3,f=>0} 2d000000c30e0000 2d000000c30e0000 2d000000c30e0000 2d000000c30e0000 - {e=>1,c=>2,a=>117,b=>-1,d=>-3,f=>-2} 7500000057630000 7500000057630000 7500000057630000 7500000057630000 - {e=>-3,c=>-1,a=>75,b=>-4,d=>3,f=>3} 4b000000fc3a0000 4b000000fc3a0000 4b000000fc3a0000 4b000000fc3a0000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>2,c=>0,a=>94,g=>-4,b=>2,d=>2,f=>2} 5e00000082240200 5e00000082240200 5e00000082240200 5e00000082240200 - {e=>-4,c=>-3,a=>-22,g=>-3,b=>3,d=>3,f=>3} eaffffffebb80200 eaffffffebb80200 eaffffffebb80200 eaffffffebb80200 - {e=>3,c=>1,a=>14,g=>0,b=>1,d=>1,f=>1} 0e00000049160000 0e00000049160000 0e00000049160000 0e00000049160000 - {e=>-3,c=>3,a=>-61,g=>-1,b=>-3,d=>-2,f=>-4} c3ffffff9dcb0300 c3ffffff9dcb0300 c3ffffff9dcb0300 c3ffffff9dcb0300 - {e=>-1,c=>-2,a=>28,g=>2,b=>1,d=>0,f=>-3} 1c000000315e0100 1c000000315e0100 1c000000315e0100 1c000000315e0100 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>1,a=>115,d=>2,c=>1,h=>0,b=>1,g=>1,f=>3} 7300000089b20000 7300000089b20000 7300000089b20000 7300000089b20000 - {e=>1,a=>19,d=>-2,c=>-3,h=>2,b=>-1,g=>-1,f=>-1} 13000000aff30b00 13000000aff30b00 13000000aff30b00 13000000aff30b00 - {e=>2,a=>-115,d=>2,c=>-4,h=>0,b=>-2,g=>-3,f=>-3} 8dffffffa6d40200 8dffffffa6d40200 8dffffffa6d40200 8dffffffa6d40200 - {e=>-1,a=>126,d=>2,c=>-3,h=>2,b=>-4,g=>2,f=>2} 7e000000ac2e0900 7e000000ac2e0900 7e000000ac2e0900 7e000000ac2e0900 - {e=>3,a=>123,d=>3,c=>0,h=>-4,b=>-2,g=>1,f=>-4} 7b000000c6c61000 7b000000c6c61000 7b000000c6c61000 7b000000c6c61000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>0,a=>-116,d=>-4,c=>0,h=>-3,b=>0,g=>-4,f=>3,i=>-1} 8cffffff0031f600 8cffffff0031f600 8cffffff0031f600 8cffffff0031f600 - {e=>-1,a=>-120,d=>0,c=>0,h=>-2,b=>2,g=>-1,f=>1,i=>-4} 88ffffff029e9b00 88ffffff029e9b00 88ffffff029e9b00 88ffffff029e9b00 - {e=>0,a=>89,d=>0,c=>-3,h=>3,b=>-2,g=>0,f=>-1,i=>-4} 590000002e708c00 590000002e708c00 590000002e708c00 590000002e708c00 - {e=>2,a=>107,d=>-1,c=>0,h=>-4,b=>0,g=>-2,f=>1,i=>2} 6b000000c0155300 6b000000c0155300 6b000000c0155300 6b000000c0155300 - {e=>1,a=>126,d=>-2,c=>-1,h=>-3,b=>1,g=>3,f=>-4,i=>-2} 7e000000b9c3d500 7e000000b9c3d500 7e000000b9c3d500 7e000000b9c3d500 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-1,a=>-65,d=>2,j=>-4,c=>-2,h=>-4,b=>0,g=>-1,f=>-3,i=>1} bfffffffb0de3304 bfffffffb0de3304 bfffffffb0de3304 bfffffffb0de3304 - {e=>-4,a=>-87,d=>-1,j=>1,c=>-2,h=>1,b=>3,g=>-2,f=>0,i=>2} a9fffffff3094701 a9fffffff3094701 a9fffffff3094701 a9fffffff3094701 - {e=>0,a=>19,d=>0,j=>0,c=>1,h=>1,b=>2,g=>-3,f=>3,i=>3} 130000000ab06600 130000000ab06600 130000000ab06600 130000000ab06600 - {e=>1,a=>-111,d=>-2,j=>1,c=>3,h=>0,b=>-4,g=>-4,f=>1,i=>0} 91ffffff9c130201 91ffffff9c130201 91ffffff9c130201 91ffffff9c130201 - {e=>-1,a=>-103,d=>1,j=>0,c=>-1,h=>-4,b=>2,g=>1,f=>-3,i=>3} 99ffffff7ade7000 99ffffff7ade7000 99ffffff7ade7000 99ffffff7ade7000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-3,a=>38,d=>-2,j=>2,c=>-2,k=>1,h=>1,b=>0,g=>0,f=>2,i=>0} 26000000b02b040a 26000000b02b040a 26000000b02b040a 26000000b02b040a - {e=>2,a=>41,d=>0,j=>-3,c=>1,k=>-2,h=>-3,b=>0,g=>0,f=>0,i=>0} 2900000008041435 2900000008041435 2900000008041435 2900000008041435 - {e=>3,a=>107,d=>-3,j=>-1,c=>2,k=>-2,h=>1,b=>0,g=>-1,f=>3,i=>1} 6b00000050b72737 6b00000050b72737 6b00000050b72737 6b00000050b72737 - {e=>3,a=>18,d=>-4,j=>2,c=>-4,k=>-1,h=>-3,b=>-1,g=>-3,f=>-3,i=>-3} 1200000027d7b63a 1200000027d7b63a 1200000027d7b63a 1200000027d7b63a - {e=>3,a=>-10,d=>-4,j=>2,c=>1,k=>0,h=>-1,b=>-4,g=>0,f=>1,i=>2} f6ffffff0c175c02 f6ffffff0c175c02 f6ffffff0c175c02 f6ffffff0c175c02 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>1,a=>-91,d=>3,j=>-3,l=>2,c=>2,k=>-1,h=>1,b=>-1,g=>-4,f=>-2,i=>-3} a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 - {e=>-1,a=>-28,d=>0,j=>-4,l=>-3,c=>-2,k=>2,h=>-4,b=>-2,g=>-2,f=>-1,i=>0} e4ffffff367e131405000000 e4ffffff367e131405000000 e4ffffff367e131405000000 e4ffffff367e131405000000 - {e=>1,a=>78,d=>-3,j=>-3,l=>-2,c=>1,k=>2,h=>0,b=>-2,g=>0,f=>-2,i=>-3} 4e0000004e63a01506000000 4e0000004e63a01506000000 4e0000004e63a01506000000 4e0000004e63a01506000000 - {e=>-2,a=>71,d=>2,j=>-4,l=>-1,c=>-4,k=>2,h=>3,b=>1,g=>0,f=>-1,i=>1} 47000000a17c2c1407000000 47000000a17c2c1407000000 47000000a17c2c1407000000 47000000a17c2c1407000000 - {e=>-2,a=>-99,d=>-4,j=>-2,l=>-4,c=>-2,k=>3,h=>-1,b=>1,g=>-4,f=>-1,i=>-1} 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>1,a=>11,m=>3,d=>0,j=>-1,l=>2,c=>2,k=>-2,h=>0,b=>2,g=>-1,f=>-4,i=>-3} 0b00000012c2a3371a000000 0b00000012c2a3371a000000 0b00000012c2a3371a000000 0b00000012c2a3371a000000 - {e=>3,a=>-31,m=>-1,d=>1,j=>3,l=>1,c=>-3,k=>-4,h=>-3,b=>-3,g=>3,f=>-2,i=>0} e1ffffff6de6152339000000 e1ffffff6de6152339000000 e1ffffff6de6152339000000 e1ffffff6de6152339000000 - {e=>-1,a=>-107,m=>-1,d=>-4,j=>3,l=>-4,c=>3,k=>-3,h=>3,b=>0,g=>3,f=>-1,i=>2} 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 - {e=>-3,a=>-123,m=>-3,d=>3,j=>-1,l=>3,c=>2,k=>-2,h=>1,b=>2,g=>-4,f=>-2,i=>-2} 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 - {e=>-3,a=>-105,m=>-4,d=>-1,j=>-2,l=>-2,c=>-1,k=>3,h=>-4,b=>3,g=>-1,f=>3,i=>1} 97fffffffbbb331e26000000 97fffffffbbb331e26000000 97fffffffbbb331e26000000 97fffffffbbb331e26000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>1,n=>2,a=>-70,m=>2,d=>-1,j=>-2,l=>-2,c=>-4,k=>0,h=>-3,b=>-3,g=>-4,f=>0,i=>-2} baffffffe503d60696000000 baffffffe503d60696000000 baffffffe503d60696000000 baffffffe503d60696000000 - {e=>-2,n=>-3,a=>99,m=>1,d=>-4,j=>0,l=>2,c=>-3,k=>2,h=>-4,b=>3,g=>1,f=>3,i=>1} 630000002bbd30104a010000 630000002bbd30104a010000 630000002bbd30104a010000 630000002bbd30104a010000 - {e=>0,n=>-4,a=>-106,m=>2,d=>-4,j=>-1,l=>-3,c=>-1,k=>3,h=>2,b=>-4,g=>2,f=>-1,i=>2} 96ffffff3c71491f15010000 96ffffff3c71491f15010000 96ffffff3c71491f15010000 96ffffff3c71491f15010000 - {e=>0,n=>1,a=>-37,m=>1,d=>1,j=>-3,l=>-4,c=>0,k=>-2,h=>0,b=>3,g=>-4,f=>-2,i=>-1} dbffffff4360e2354c000000 dbffffff4360e2354c000000 dbffffff4360e2354c000000 dbffffff4360e2354c000000 - {e=>-2,n=>-1,a=>21,m=>1,d=>-4,j=>-2,l=>0,c=>1,k=>-4,h=>-3,b=>1,g=>3,f=>-2,i=>-3} 1500000009edb526c8010000 1500000009edb526c8010000 1500000009edb526c8010000 1500000009edb526c8010000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>-2,n=>-3,a=>77,m=>1,d=>0,j=>3,l=>-4,c=>1,k=>3,h=>-2,b=>-3,g=>0,f=>3,o=>-17,i=>2} 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff - {e=>-1,n=>3,a=>113,m=>3,d=>3,j=>-1,l=>3,c=>3,k=>-3,h=>-4,b=>-4,g=>2,f=>-3,o=>72,i=>2} 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 - {e=>-4,n=>2,a=>0,m=>2,d=>1,j=>2,l=>-2,c=>2,k=>-1,h=>-1,b=>-2,g=>-3,f=>-4,o=>60,i=>2} 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 - {e=>-1,n=>-3,a=>65,m=>2,d=>-2,j=>3,l=>2,c=>3,k=>0,h=>3,b=>-4,g=>0,f=>1,o=>-92,i=>0} 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff - {e=>1,n=>2,a=>64,m=>0,d=>-2,j=>2,l=>1,c=>-3,k=>0,h=>-1,b=>3,g=>2,f=>1,o=>-43,i=>-2} 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff = struct int_wrap { long a; int b:3; }; - {a=>33,b=>-4} 2100000004000000 2100000004000000 2100000004000000 2100000004000000 - {a=>122,b=>-4} 7a00000004000000 7a00000004000000 7a00000004000000 7a00000004000000 - {a=>107,b=>-3} 6b00000005000000 6b00000005000000 6b00000005000000 6b00000005000000 - {a=>17,b=>1} 1100000001000000 1100000001000000 1100000001000000 1100000001000000 - {a=>-47,b=>2} d1ffffff02000000 d1ffffff02000000 d1ffffff02000000 d1ffffff02000000 = struct int_wrap { long a; int b:3; int c:3; }; - {c=>-2,a=>-37,b=>1} dbffffff31000000 dbffffff31000000 dbffffff31000000 dbffffff31000000 - {c=>-2,a=>-7,b=>1} f9ffffff31000000 f9ffffff31000000 f9ffffff31000000 f9ffffff31000000 - {c=>3,a=>124,b=>0} 7c00000018000000 7c00000018000000 7c00000018000000 7c00000018000000 - {c=>0,a=>-128,b=>-4} 80ffffff04000000 80ffffff04000000 80ffffff04000000 80ffffff04000000 - {c=>3,a=>5,b=>2} 050000001a000000 050000001a000000 050000001a000000 050000001a000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; }; - {c=>3,a=>-33,b=>0,d=>-2} dfffffff98010000 dfffffff98010000 dfffffff98010000 dfffffff98010000 - {c=>1,a=>87,b=>1,d=>-3} 5700000049010000 5700000049010000 5700000049010000 5700000049010000 - {c=>2,a=>-12,b=>0,d=>0} f4ffffff10000000 f4ffffff10000000 f4ffffff10000000 f4ffffff10000000 - {c=>3,a=>-30,b=>-2,d=>3} e2ffffffde000000 e2ffffffde000000 e2ffffffde000000 e2ffffffde000000 - {c=>1,a=>81,b=>3,d=>2} 510000008b000000 510000008b000000 510000008b000000 510000008b000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; }; - {e=>2,c=>-1,a=>-61,b=>3,d=>2} c3ffffffbb040000 c3ffffffbb040000 c3ffffffbb040000 c3ffffffbb040000 - {e=>-2,c=>-3,a=>86,b=>2,d=>-1} 56000000ea0d0000 56000000ea0d0000 56000000ea0d0000 56000000ea0d0000 - {e=>-2,c=>0,a=>126,b=>3,d=>-2} 7e000000830d0000 7e000000830d0000 7e000000830d0000 7e000000830d0000 - {e=>-4,c=>2,a=>-98,b=>-3,d=>-2} 9effffff95090000 9effffff95090000 9effffff95090000 9effffff95090000 - {e=>3,c=>3,a=>-97,b=>0,d=>3} 9fffffffd8060000 9fffffffd8060000 9fffffffd8060000 9fffffffd8060000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-4,c=>-1,a=>-9,b=>-1,d=>1,f=>-2} f7ffffff7f680000 f7ffffff7f680000 f7ffffff7f680000 f7ffffff7f680000 - {e=>1,c=>-4,a=>112,b=>-4,d=>1,f=>-3} 7000000064520000 7000000064520000 7000000064520000 7000000064520000 - {e=>3,c=>-1,a=>-116,b=>2,d=>2,f=>-4} 8cffffffba460000 8cffffffba460000 8cffffffba460000 8cffffffba460000 - {e=>-4,c=>-3,a=>-4,b=>-4,d=>2,f=>1} fcffffffac180000 fcffffffac180000 fcffffffac180000 fcffffffac180000 - {e=>-2,c=>-3,a=>-52,b=>3,d=>3,f=>0} ccffffffeb0c0000 ccffffffeb0c0000 ccffffffeb0c0000 ccffffffeb0c0000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-2,c=>0,a=>92,g=>-1,b=>-2,d=>-2,f=>-2} 5c00000086ed0300 5c00000086ed0300 5c00000086ed0300 5c00000086ed0300 - {e=>1,c=>-1,a=>-32,g=>-4,b=>3,d=>0,f=>-1} e0ffffff3b720200 e0ffffff3b720200 e0ffffff3b720200 e0ffffff3b720200 - {e=>-4,c=>3,a=>17,g=>-4,b=>1,d=>-4,f=>2} 1100000019290200 1100000019290200 1100000019290200 1100000019290200 - {e=>1,c=>-4,a=>-113,g=>-1,b=>1,d=>-4,f=>-4} 8fffffff21c30300 8fffffff21c30300 8fffffff21c30300 8fffffff21c30300 - {e=>0,c=>1,a=>23,g=>2,b=>3,d=>-3,f=>-3} 170000004b510100 170000004b510100 170000004b510100 170000004b510100 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>0,a=>76,d=>2,c=>-1,h=>-3,b=>3,g=>-3,f=>0} 4c000000bb801600 4c000000bb801600 4c000000bb801600 4c000000bb801600 - {e=>3,a=>39,d=>-4,c=>-3,h=>1,b=>-2,g=>-2,f=>1} 270000002e170700 270000002e170700 270000002e170700 270000002e170700 - {e=>2,a=>108,d=>2,c=>1,h=>3,b=>1,g=>2,f=>-2} 6c00000089640d00 6c00000089640d00 6c00000089640d00 6c00000089640d00 - {e=>-2,a=>52,d=>-2,c=>-3,h=>-2,b=>1,g=>-4,f=>-2} 34000000a96d1a00 34000000a96d1a00 34000000a96d1a00 34000000a96d1a00 - {e=>-3,a=>-110,d=>-4,c=>-4,h=>2,b=>-1,g=>1,f=>2} 92ffffff27ab0800 92ffffff27ab0800 92ffffff27ab0800 92ffffff27ab0800 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>2,a=>-27,d=>0,c=>0,h=>-3,b=>2,g=>-3,f=>-4,i=>-4} e5ffffff02c49600 e5ffffff02c49600 e5ffffff02c49600 e5ffffff02c49600 - {e=>-1,a=>109,d=>2,c=>1,h=>-2,b=>1,g=>0,f=>-3,i=>-3} 6d000000895eb800 6d000000895eb800 6d000000895eb800 6d000000895eb800 - {e=>-3,a=>-65,d=>3,c=>2,h=>3,b=>0,g=>2,f=>-4,i=>-2} bfffffffd04acd00 bfffffffd04acd00 bfffffffd04acd00 bfffffffd04acd00 - {e=>3,a=>-118,d=>-1,c=>1,h=>-1,b=>0,g=>3,f=>2,i=>-4} 8affffffc8a79d00 8affffffc8a79d00 8affffffc8a79d00 8affffffc8a79d00 - {e=>-4,a=>77,d=>-3,c=>3,h=>-1,b=>-2,g=>-1,f=>-3,i=>-3} 4d0000005ed9bf00 4d0000005ed9bf00 4d0000005ed9bf00 4d0000005ed9bf00 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-3,a=>60,d=>2,j=>2,c=>2,h=>-3,b=>3,g=>-1,f=>-2,i=>-1} 3c00000093eaf702 3c00000093eaf702 3c00000093eaf702 3c00000093eaf702 - {e=>-3,a=>-119,d=>0,j=>-2,c=>3,h=>-3,b=>3,g=>-3,f=>-3,i=>-3} 89ffffff1bdab606 89ffffff1bdab606 89ffffff1bdab606 89ffffff1bdab606 - {e=>-4,a=>94,d=>2,j=>2,c=>1,h=>3,b=>1,g=>1,f=>3,i=>3} 5e00000089b86c02 5e00000089b86c02 5e00000089b86c02 5e00000089b86c02 - {e=>3,a=>116,d=>1,j=>2,c=>-4,h=>-3,b=>0,g=>3,f=>2,i=>-4} 7400000060a69502 7400000060a69502 7400000060a69502 7400000060a69502 - {e=>1,a=>42,d=>-4,j=>-4,c=>-2,h=>-2,b=>2,g=>-3,f=>-2,i=>-3} 2a00000032e3ba04 2a00000032e3ba04 2a00000032e3ba04 2a00000032e3ba04 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>0,a=>15,d=>3,j=>2,c=>0,k=>3,h=>-4,b=>3,g=>-1,f=>-4,i=>-4} 0f000000c3c0931a 0f000000c3c0931a 0f000000c3c0931a 0f000000c3c0931a - {e=>-2,a=>-58,d=>-3,j=>-1,c=>-1,k=>-2,h=>1,b=>-2,g=>3,f=>-4,i=>-3} c6ffffff7ecda537 c6ffffff7ecda537 c6ffffff7ecda537 c6ffffff7ecda537 - {e=>0,a=>3,d=>-4,j=>-4,c=>2,k=>1,h=>3,b=>0,g=>-4,f=>3,i=>-4} 0300000010318e0c 0300000010318e0c 0300000010318e0c 0300000010318e0c - {e=>-2,a=>9,d=>3,j=>3,c=>-3,k=>-2,h=>-1,b=>-1,g=>1,f=>-4,i=>3} 09000000efcc7c33 09000000efcc7c33 09000000efcc7c33 09000000efcc7c33 - {e=>-2,a=>41,d=>2,j=>-1,c=>-3,k=>-2,h=>-4,b=>-2,g=>-1,f=>2,i=>3} 29000000aeac7337 29000000aeac7337 29000000aeac7337 29000000aeac7337 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>-21,d=>3,j=>0,l=>-3,c=>-3,k=>3,h=>0,b=>2,g=>-4,f=>-3,i=>-3} ebffffffea5aa21805000000 ebffffffea5aa21805000000 ebffffffea5aa21805000000 ebffffffea5aa21805000000 - {e=>0,a=>26,d=>3,j=>3,l=>-4,c=>0,k=>2,h=>-1,b=>-1,g=>-2,f=>0,i=>-4} 1a000000c7009f1304000000 1a000000c7009f1304000000 1a000000c7009f1304000000 1a000000c7009f1304000000 - {e=>-3,a=>-32,d=>-2,j=>0,l=>-4,c=>-3,k=>-2,h=>2,b=>-1,g=>1,f=>2,i=>-3} e0ffffffafaba83004000000 e0ffffffafaba83004000000 e0ffffffafaba83004000000 e0ffffffafaba83004000000 - {e=>2,a=>-37,d=>-2,j=>-3,l=>-4,c=>1,k=>1,h=>-2,b=>2,g=>3,f=>0,i=>3} dbffffff8a85790d04000000 dbffffff8a85790d04000000 dbffffff8a85790d04000000 dbffffff8a85790d04000000 - {e=>1,a=>-116,d=>-2,j=>0,l=>2,c=>1,k=>-4,h=>0,b=>2,g=>-3,f=>-1,i=>-4} 8cffffff8af3822002000000 8cffffff8af3822002000000 8cffffff8af3822002000000 8cffffff8af3822002000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>-1,a=>-6,m=>-3,d=>0,j=>3,l=>1,c=>-4,k=>1,h=>-4,b=>1,g=>2,f=>1,i=>2} faffffff211e510b29000000 faffffff211e510b29000000 faffffff211e510b29000000 faffffff211e510b29000000 - {e=>2,a=>-118,m=>-4,d=>-1,j=>-2,l=>2,c=>3,k=>-3,h=>3,b=>0,g=>-3,f=>-4,i=>3} 8affffffd8c56e2e22000000 8affffffd8c56e2e22000000 8affffffd8c56e2e22000000 8affffffd8c56e2e22000000 - {e=>3,a=>-56,m=>1,d=>3,j=>0,l=>3,c=>2,k=>-2,h=>1,b=>2,g=>0,f=>-3,i=>-2} c8ffffffd256c4300b000000 c8ffffffd256c4300b000000 c8ffffffd256c4300b000000 c8ffffffd256c4300b000000 - {e=>1,a=>-55,m=>-4,d=>0,j=>-1,l=>3,c=>-3,k=>-4,h=>3,b=>-4,g=>2,f=>-2,i=>-4} c9ffffff2c628d2723000000 c9ffffff2c628d2723000000 c9ffffff2c628d2723000000 c9ffffff2c628d2723000000 - {e=>-3,a=>-107,m=>0,d=>-1,j=>2,l=>-3,c=>-2,k=>-2,h=>-2,b=>-4,g=>2,f=>1,i=>-3} 95fffffff41bb93205000000 95fffffff41bb93205000000 95fffffff41bb93205000000 95fffffff41bb93205000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>-1,n=>-1,a=>-103,m=>-3,d=>-3,j=>2,l=>-4,c=>-3,k=>3,h=>2,b=>3,g=>-4,f=>1,i=>1} 99ffffff6b1f2a1aec010000 99ffffff6b1f2a1aec010000 99ffffff6b1f2a1aec010000 99ffffff6b1f2a1aec010000 - {e=>1,n=>-1,a=>-117,m=>3,d=>-3,j=>3,l=>2,c=>-4,k=>2,h=>-1,b=>-3,g=>-1,f=>0,i=>-1} 8bffffff6583ff13da010000 8bffffff6583ff13da010000 8bffffff6583ff13da010000 8bffffff6583ff13da010000 - {e=>1,n=>-3,a=>28,m=>-1,d=>-4,j=>2,l=>-4,c=>3,k=>-4,h=>-2,b=>0,g=>2,f=>-4,i=>1} 1c000000184339227c010000 1c000000184339227c010000 1c000000184339227c010000 1c000000184339227c010000 - {e=>-4,n=>3,a=>29,m=>-4,d=>2,j=>-2,l=>-4,c=>-2,k=>-2,h=>2,b=>-2,g=>-2,f=>-2,i=>-2} 1d000000b668cb36e4000000 1d000000b668cb36e4000000 1d000000b668cb36e4000000 1d000000b668cb36e4000000 - {e=>3,n=>-1,a=>-93,m=>-1,d=>3,j=>3,l=>-2,c=>2,k=>2,h=>-2,b=>1,g=>0,f=>3,i=>2} a3ffffffd1365813fe010000 a3ffffffd1365813fe010000 a3ffffffd1365813fe010000 a3ffffffd1365813fe010000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>-3,n=>1,a=>-24,m=>2,d=>-2,j=>-2,l=>-4,c=>-1,k=>0,h=>-4,b=>-1,g=>-4,f=>0,o=>10,i=>1} e8ffffffbf0b3206540000000a000000 e8ffffffbf0b3206540000000a000000 e8ffffffbf0b3206540000000a000000 e8ffffffbf0b3206540000000a000000 - {e=>0,n=>3,a=>91,m=>3,d=>1,j=>-2,l=>-1,c=>-3,k=>0,h=>1,b=>3,g=>3,f=>0,o=>0,i=>0} 5b0000006b800506df00000000000000 5b0000006b800506df00000000000000 5b0000006b800506df00000000000000 5b0000006b800506df00000000000000 - {e=>-4,n=>-4,a=>-91,m=>0,d=>1,j=>0,l=>3,c=>1,k=>-4,h=>0,b=>3,g=>1,f=>-2,o=>81,i=>-3} a5ffffff4be8a0200301000051000000 a5ffffff4be8a0200301000051000000 a5ffffff4be8a0200301000051000000 a5ffffff4be8a0200301000051000000 - {e=>0,n=>-3,a=>-22,m=>-1,d=>-4,j=>-1,l=>0,c=>3,k=>-2,h=>3,b=>-3,g=>-1,f=>-3,o=>40,i=>2} eaffffff1dd14f377801000028000000 eaffffff1dd14f377801000028000000 eaffffff1dd14f377801000028000000 eaffffff1dd14f377801000028000000 - {e=>-2,n=>1,a=>-71,m=>2,d=>2,j=>-3,l=>-4,c=>0,k=>-3,h=>2,b=>-2,g=>2,f=>0,o=>-119,i=>-2} b9ffffff860cc92d5400000089ffffff b9ffffff860cc92d5400000089ffffff b9ffffff860cc92d5400000089ffffff b9ffffff860cc92d5400000089ffffff = struct umixed3 { unsigned char a:3; }; - {a=>7} 07 07 07 07 - {a=>4} 04 04 04 04 - {a=>1} 01 01 01 01 - {a=>2} 02 02 02 02 - {a=>5} 05 05 05 05 = struct umixed3 { unsigned char a:3; unsigned char b:3; }; - {a=>6,b=>0} 06 06 06 06 - {a=>0,b=>4} 20 20 20 20 - {a=>2,b=>1} 0a 0a 0a 0a - {a=>7,b=>3} 1f 1f 1f 1f - {a=>2,b=>3} 1a 1a 1a 1a = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; }; - {c=>0,a=>7,b=>5} 2f00000000 2f0000000000 2f00000000000000 2f00000000000000 - {c=>2,a=>6,b=>7} 3e02000000 3e0002000000 3e00000002000000 3e00000002000000 - {c=>2,a=>7,b=>2} 1702000000 170002000000 1700000002000000 1700000002000000 - {c=>7,a=>1,b=>3} 1907000000 190007000000 1900000007000000 1900000007000000 - {c=>5,a=>3,b=>4} 2305000000 230005000000 2300000005000000 2300000005000000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; }; - {c=>6,a=>2,b=>1,d=>2} 0a0600000002 0a00060000000200 0a0000000600000002000000 0a0000000600000002000000 - {c=>5,a=>6,b=>1,d=>3} 0e0500000003 0e00050000000300 0e0000000500000003000000 0e0000000500000003000000 - {c=>4,a=>6,b=>1,d=>0} 0e0400000000 0e00040000000000 0e0000000400000000000000 0e0000000400000000000000 - {c=>0,a=>1,b=>5,d=>6} 290000000006 2900000000000600 290000000000000006000000 290000000000000006000000 - {c=>7,a=>6,b=>2,d=>2} 160700000002 1600070000000200 160000000700000002000000 160000000700000002000000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; }; - {e=>3,c=>6,a=>3,b=>0,d=>1} 0306000000010300 03000600000001000300 030000000600000001000300 030000000600000001000300 - {e=>6,c=>0,a=>3,b=>1,d=>5} 0b00000000050600 0b000000000005000600 0b0000000000000005000600 0b0000000000000005000600 - {e=>7,c=>2,a=>2,b=>6,d=>5} 3202000000050700 32000200000005000700 320000000200000005000700 320000000200000005000700 - {e=>6,c=>0,a=>3,b=>3,d=>3} 1b00000000030600 1b000000000003000600 1b0000000000000003000600 1b0000000000000003000600 - {e=>6,c=>7,a=>0,b=>3,d=>3} 1807000000030600 18000700000003000600 180000000700000003000600 180000000700000003000600 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; unsigned char f:3; }; - {e=>3,c=>4,a=>4,b=>7,d=>6,f=>2} 3c0400000006030002 3c0004000000060003000200 3c000000040000000600030002000000 3c000000040000000600030002000000 - {e=>5,c=>4,a=>2,b=>7,d=>0,f=>6} 3a0400000000050006 3a0004000000000005000600 3a000000040000000000050006000000 3a000000040000000000050006000000 - {e=>7,c=>6,a=>0,b=>4,d=>1,f=>6} 200600000001070006 200006000000010007000600 20000000060000000100070006000000 20000000060000000100070006000000 - {e=>4,c=>6,a=>1,b=>0,d=>1,f=>3} 010600000001040003 010006000000010004000300 01000000060000000100040003000000 01000000060000000100040003000000 - {e=>6,c=>4,a=>6,b=>6,d=>6,f=>0} 360400000006060000 360004000000060006000000 36000000040000000600060000000000 36000000040000000600060000000000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; unsigned char f:3; unsigned long g; }; - {e=>4,c=>5,a=>4,g=>216,b=>7,d=>5,f=>4} 3c0500000005040004d8000000 3c0005000000050004000400d8000000 3c000000050000000500040004000000d8000000 3c000000050000000500040004000000d8000000 - {e=>0,c=>0,a=>7,g=>119,b=>7,d=>3,f=>5} 3f000000000300000577000000 3f000000000003000000050077000000 3f00000000000000030000000500000077000000 3f00000000000000030000000500000077000000 - {e=>4,c=>0,a=>7,g=>69,b=>6,d=>3,f=>3} 37000000000304000345000000 37000000000003000400030045000000 3700000000000000030004000300000045000000 3700000000000000030004000300000045000000 - {e=>1,c=>0,a=>5,g=>247,b=>4,d=>1,f=>7} 250000000001010007f7000000 250000000000010001000700f7000000 25000000000000000100010007000000f7000000 25000000000000000100010007000000f7000000 - {e=>4,c=>5,a=>4,g=>112,b=>1,d=>3,f=>4} 0c050000000304000470000000 0c000500000003000400040070000000 0c00000005000000030004000400000070000000 0c00000005000000030004000400000070000000 = struct umixed3 { char a; unsigned char b:3; }; - {a=>-63,b=>6} c106 c106 c106 c106 - {a=>-85,b=>7} ab07 ab07 ab07 ab07 - {a=>52,b=>0} 3400 3400 3400 3400 - {a=>-89,b=>2} a702 a702 a702 a702 - {a=>-62,b=>7} c207 c207 c207 c207 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>77,b=>0} 4d08 4d08 4d08 4d08 - {c=>7,a=>73,b=>2} 493a 493a 493a 493a - {c=>5,a=>116,b=>5} 742d 742d 742d 742d - {c=>7,a=>-44,b=>1} d439 d439 d439 d439 - {c=>7,a=>-66,b=>7} be3f be3f be3f be3f = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>0,a=>-16,b=>5,d=>5} f00505000000 f00505000000 f005000005000000 f005000005000000 - {c=>0,a=>-4,b=>7,d=>6} fc0706000000 fc0706000000 fc07000006000000 fc07000006000000 - {c=>5,a=>-11,b=>0,d=>2} f52802000000 f52802000000 f528000002000000 f528000002000000 - {c=>6,a=>-39,b=>1,d=>0} d93100000000 d93100000000 d931000000000000 d931000000000000 - {c=>7,a=>78,b=>1,d=>0} 4e3900000000 4e3900000000 4e39000000000000 4e39000000000000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>2,c=>6,a=>28,b=>6,d=>7} 1c360700000002 1c36070000000200 1c3600000700000002000000 1c3600000700000002000000 - {e=>0,c=>6,a=>-11,b=>2,d=>3} f5320300000000 f532030000000000 f53200000300000000000000 f53200000300000000000000 - {e=>5,c=>7,a=>27,b=>0,d=>1} 1b380100000005 1b38010000000500 1b3800000100000005000000 1b3800000100000005000000 - {e=>2,c=>5,a=>1,b=>0,d=>7} 01280700000002 0128070000000200 012800000700000002000000 012800000700000002000000 - {e=>7,c=>1,a=>79,b=>3,d=>7} 4f0b0700000007 4f0b070000000700 4f0b00000700000007000000 4f0b00000700000007000000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>1,c=>7,a=>43,b=>0,d=>7,f=>3} 2b3807000000010300 2b380700000001000300 2b3800000700000001000300 2b3800000700000001000300 - {e=>3,c=>7,a=>-115,b=>7,d=>5,f=>4} 8d3f05000000030400 8d3f0500000003000400 8d3f00000500000003000400 8d3f00000500000003000400 - {e=>4,c=>7,a=>86,b=>7,d=>6,f=>6} 563f06000000040600 563f0600000004000600 563f00000600000004000600 563f00000600000004000600 - {e=>1,c=>0,a=>-25,b=>3,d=>2,f=>1} e70302000000010100 e7030200000001000100 e70300000200000001000100 e70300000200000001000100 - {e=>7,c=>7,a=>19,b=>4,d=>7,f=>0} 133c07000000070000 133c0700000007000000 133c00000700000007000000 133c00000700000007000000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>7,c=>3,a=>-86,g=>1,b=>7,d=>6,f=>1} aa1f0600000007010001 aa1f06000000070001000100 aa1f0000060000000700010001000000 aa1f0000060000000700010001000000 - {e=>1,c=>6,a=>18,g=>4,b=>6,d=>5,f=>5} 12360500000001050004 123605000000010005000400 12360000050000000100050004000000 12360000050000000100050004000000 - {e=>0,c=>5,a=>6,g=>2,b=>6,d=>1,f=>0} 062e0100000000000002 062e01000000000000000200 062e0000010000000000000002000000 062e0000010000000000000002000000 - {e=>0,c=>2,a=>2,g=>1,b=>5,d=>3,f=>4} 02150300000000040001 021503000000000004000100 02150000030000000000040001000000 02150000030000000000040001000000 - {e=>4,c=>6,a=>110,g=>5,b=>6,d=>3,f=>1} 6e360300000004010005 6e3603000000040001000500 6e360000030000000400010005000000 6e360000030000000400010005000000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>-103,d=>2,c=>7,h=>28,b=>4,g=>0,f=>0} 993c02000000070000001c000000 993c020000000700000000001c000000 993c00000200000007000000000000001c000000 993c00000200000007000000000000001c000000 - {e=>1,a=>-118,d=>7,c=>2,h=>87,b=>6,g=>2,f=>7} 8a16070000000107000257000000 8a160700000001000700020057000000 8a16000007000000010007000200000057000000 8a16000007000000010007000200000057000000 - {e=>0,a=>93,d=>0,c=>4,h=>190,b=>4,g=>2,f=>4} 5d240000000000040002be000000 5d2400000000000004000200be000000 5d240000000000000000040002000000be000000 5d240000000000000000040002000000be000000 - {e=>4,a=>119,d=>3,c=>2,h=>230,b=>0,g=>6,f=>3} 77100300000004030006e6000000 771003000000040003000600e6000000 77100000030000000400030006000000e6000000 77100000030000000400030006000000e6000000 - {e=>5,a=>-101,d=>5,c=>7,h=>52,b=>3,g=>7,f=>4} 9b3b050000000504000734000000 9b3b0500000005000400070034000000 9b3b000005000000050004000700000034000000 9b3b000005000000050004000700000034000000 = struct umixed3 { short a; unsigned char b:3; }; - {a=>117,b=>6} 750006 75000600 75000600 75000600 - {a=>27,b=>7} 1b0007 1b000700 1b000700 1b000700 - {a=>-51,b=>0} cdff00 cdff0000 cdff0000 cdff0000 - {a=>-8,b=>4} f8ff04 f8ff0400 f8ff0400 f8ff0400 - {a=>72,b=>7} 480007 48000700 48000700 48000700 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>-49,b=>3} cfff03 cfff0300 cfff0300 cfff0300 - {c=>4,a=>28,b=>7} 1c0027 1c002700 1c002700 1c002700 - {c=>2,a=>97,b=>5} 610015 61001500 61001500 61001500 - {c=>3,a=>-123,b=>0} 85ff18 85ff1800 85ff1800 85ff1800 - {c=>3,a=>71,b=>7} 47001f 47001f00 47001f00 47001f00 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>6,a=>-55,b=>7,d=>2} c9ff3702000000 c9ff370002000000 c9ff370002000000 c9ff370002000000 - {c=>4,a=>118,b=>0,d=>7} 76002007000000 7600200007000000 7600200007000000 7600200007000000 - {c=>4,a=>-56,b=>7,d=>0} c8ff2700000000 c8ff270000000000 c8ff270000000000 c8ff270000000000 - {c=>1,a=>111,b=>5,d=>1} 6f000d01000000 6f000d0001000000 6f000d0001000000 6f000d0001000000 - {c=>4,a=>-108,b=>3,d=>3} 94ff2303000000 94ff230003000000 94ff230003000000 94ff230003000000 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>2,c=>5,a=>2,b=>4,d=>4} 02002c0400000002 02002c00040000000200 02002c000400000002000000 02002c000400000002000000 - {e=>7,c=>2,a=>57,b=>2,d=>1} 3900120100000007 39001200010000000700 390012000100000007000000 390012000100000007000000 - {e=>1,c=>6,a=>92,b=>1,d=>3} 5c00310300000001 5c003100030000000100 5c0031000300000001000000 5c0031000300000001000000 - {e=>0,c=>1,a=>-36,b=>0,d=>2} dcff080200000000 dcff0800020000000000 dcff08000200000000000000 dcff08000200000000000000 - {e=>1,c=>4,a=>-88,b=>1,d=>0} a8ff210000000001 a8ff2100000000000100 a8ff21000000000001000000 a8ff21000000000001000000 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>0,c=>1,a=>-52,b=>6,d=>1,f=>6} ccff0e01000000000600 ccff0e000100000000000600 ccff0e000100000000000600 ccff0e000100000000000600 - {e=>3,c=>5,a=>-41,b=>2,d=>6,f=>0} d7ff2a06000000030000 d7ff2a000600000003000000 d7ff2a000600000003000000 d7ff2a000600000003000000 - {e=>2,c=>3,a=>-90,b=>5,d=>7,f=>3} a6ff1d07000000020300 a6ff1d000700000002000300 a6ff1d000700000002000300 a6ff1d000700000002000300 - {e=>1,c=>4,a=>6,b=>2,d=>4,f=>7} 06002204000000010700 060022000400000001000700 060022000400000001000700 060022000400000001000700 - {e=>2,c=>4,a=>24,b=>4,d=>4,f=>7} 18002404000000020700 180024000400000002000700 180024000400000002000700 180024000400000002000700 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>4,c=>2,a=>-91,g=>7,b=>6,d=>2,f=>3} a5ff160200000004030007 a5ff160002000000040003000700 a5ff1600020000000400030007000000 a5ff1600020000000400030007000000 - {e=>3,c=>0,a=>116,g=>7,b=>3,d=>7,f=>4} 7400030700000003040007 7400030007000000030004000700 74000300070000000300040007000000 74000300070000000300040007000000 - {e=>2,c=>7,a=>93,g=>4,b=>6,d=>6,f=>7} 5d003e0600000002070004 5d003e0006000000020007000400 5d003e00060000000200070004000000 5d003e00060000000200070004000000 - {e=>2,c=>5,a=>108,g=>5,b=>4,d=>4,f=>2} 6c002c0400000002020005 6c002c0004000000020002000500 6c002c00040000000200020005000000 6c002c00040000000200020005000000 - {e=>4,c=>2,a=>-28,g=>3,b=>4,d=>2,f=>6} e4ff140200000004060003 e4ff140002000000040006000300 e4ff1400020000000400060003000000 e4ff1400020000000400060003000000 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>4,a=>-83,d=>2,c=>5,h=>218,b=>0,g=>2,f=>5} adff280200000004050002da000000 adff280002000000040005000200da000000 adff2800020000000400050002000000da000000 adff2800020000000400050002000000da000000 - {e=>2,a=>12,d=>1,c=>2,h=>88,b=>2,g=>6,f=>2} 0c0012010000000202000658000000 0c0012000100000002000200060058000000 0c00120001000000020002000600000058000000 0c00120001000000020002000600000058000000 - {e=>1,a=>-57,d=>1,c=>1,h=>75,b=>1,g=>4,f=>3} c7ff0901000000010300044b000000 c7ff0900010000000100030004004b000000 c7ff09000100000001000300040000004b000000 c7ff09000100000001000300040000004b000000 - {e=>7,a=>17,d=>6,c=>0,h=>143,b=>5,g=>4,f=>1} 11000506000000070100048f000000 11000500060000000700010004008f000000 110005000600000007000100040000008f000000 110005000600000007000100040000008f000000 - {e=>1,a=>10,d=>6,c=>1,h=>73,b=>1,g=>0,f=>6} 0a0009060000000106000049000000 0a0009000600000001000600000049000000 0a00090006000000010006000000000049000000 0a00090006000000010006000000000049000000 = struct umixed3 { int a; unsigned char b:3; }; - {a=>-62,b=>6} c2ffffff06 c2ffffff0600 c2ffffff06000000 c2ffffff06000000 - {a=>-53,b=>2} cbffffff02 cbffffff0200 cbffffff02000000 cbffffff02000000 - {a=>118,b=>0} 7600000000 760000000000 7600000000000000 7600000000000000 - {a=>59,b=>0} 3b00000000 3b0000000000 3b00000000000000 3b00000000000000 - {a=>-20,b=>1} ecffffff01 ecffffff0100 ecffffff01000000 ecffffff01000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-62,b=>7} c2ffffff2f c2ffffff2f00 c2ffffff2f000000 c2ffffff2f000000 - {c=>6,a=>-14,b=>1} f2ffffff31 f2ffffff3100 f2ffffff31000000 f2ffffff31000000 - {c=>6,a=>63,b=>7} 3f00000037 3f0000003700 3f00000037000000 3f00000037000000 - {c=>3,a=>41,b=>2} 290000001a 290000001a00 290000001a000000 290000001a000000 - {c=>7,a=>18,b=>2} 120000003a 120000003a00 120000003a000000 120000003a000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>5,a=>75,b=>4,d=>6} 4b0000002c06000000 4b0000002c0006000000 4b0000002c00000006000000 4b0000002c00000006000000 - {c=>0,a=>117,b=>6,d=>0} 750000000600000000 75000000060000000000 750000000600000000000000 750000000600000000000000 - {c=>2,a=>-47,b=>1,d=>6} d1ffffff1106000000 d1ffffff110006000000 d1ffffff1100000006000000 d1ffffff1100000006000000 - {c=>4,a=>-11,b=>0,d=>3} f5ffffff2003000000 f5ffffff200003000000 f5ffffff2000000003000000 f5ffffff2000000003000000 - {c=>1,a=>64,b=>7,d=>5} 400000000f05000000 400000000f0005000000 400000000f00000005000000 400000000f00000005000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>1,c=>3,a=>-106,b=>7,d=>0} 96ffffff1f0000000001 96ffffff1f00000000000100 96ffffff1f0000000000000001000000 96ffffff1f0000000000000001000000 - {e=>5,c=>5,a=>-62,b=>1,d=>2} c2ffffff290200000005 c2ffffff2900020000000500 c2ffffff290000000200000005000000 c2ffffff290000000200000005000000 - {e=>6,c=>2,a=>-4,b=>4,d=>4} fcffffff140400000006 fcffffff1400040000000600 fcffffff140000000400000006000000 fcffffff140000000400000006000000 - {e=>5,c=>7,a=>-93,b=>4,d=>2} a3ffffff3c0200000005 a3ffffff3c00020000000500 a3ffffff3c0000000200000005000000 a3ffffff3c0000000200000005000000 - {e=>7,c=>3,a=>67,b=>3,d=>2} 430000001b0200000007 430000001b00020000000700 430000001b0000000200000007000000 430000001b0000000200000007000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>2,c=>6,a=>83,b=>3,d=>5,f=>4} 530000003305000000020400 5300000033000500000002000400 53000000330000000500000002000400 53000000330000000500000002000400 - {e=>0,c=>5,a=>121,b=>1,d=>7,f=>3} 790000002907000000000300 7900000029000700000000000300 79000000290000000700000000000300 79000000290000000700000000000300 - {e=>7,c=>2,a=>-79,b=>3,d=>7,f=>1} b1ffffff1307000000070100 b1ffffff13000700000007000100 b1ffffff130000000700000007000100 b1ffffff130000000700000007000100 - {e=>4,c=>0,a=>-82,b=>1,d=>3,f=>3} aeffffff0103000000040300 aeffffff01000300000004000300 aeffffff010000000300000004000300 aeffffff010000000300000004000300 - {e=>3,c=>4,a=>32,b=>4,d=>6,f=>0} 200000002406000000030000 2000000024000600000003000000 20000000240000000600000003000000 20000000240000000600000003000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>7,c=>4,a=>-119,g=>7,b=>6,d=>2,f=>5} 89ffffff260200000007050007 89ffffff260002000000070005000700 89ffffff26000000020000000700050007000000 89ffffff26000000020000000700050007000000 - {e=>4,c=>7,a=>75,g=>5,b=>7,d=>2,f=>3} 4b0000003f0200000004030005 4b0000003f0002000000040003000500 4b0000003f000000020000000400030005000000 4b0000003f000000020000000400030005000000 - {e=>1,c=>0,a=>-122,g=>5,b=>5,d=>2,f=>1} 86ffffff050200000001010005 86ffffff050002000000010001000500 86ffffff05000000020000000100010005000000 86ffffff05000000020000000100010005000000 - {e=>7,c=>6,a=>-118,g=>7,b=>5,d=>1,f=>3} 8affffff350100000007030007 8affffff350001000000070003000700 8affffff35000000010000000700030007000000 8affffff35000000010000000700030007000000 - {e=>6,c=>5,a=>-69,g=>0,b=>7,d=>1,f=>1} bbffffff2f0100000006010000 bbffffff2f0001000000060001000000 bbffffff2f000000010000000600010000000000 bbffffff2f000000010000000600010000000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>22,d=>3,c=>6,h=>27,b=>7,g=>2,f=>4} 160000003703000000070400021b000000 160000003700030000000700040002001b000000 16000000370000000300000007000400020000001b000000 16000000370000000300000007000400020000001b000000 - {e=>0,a=>-54,d=>1,c=>7,h=>112,b=>1,g=>4,f=>2} caffffff39010000000002000470000000 caffffff39000100000000000200040070000000 caffffff3900000001000000000002000400000070000000 caffffff3900000001000000000002000400000070000000 - {e=>7,a=>1,d=>5,c=>7,h=>4,b=>5,g=>5,f=>4} 010000003d050000000704000504000000 010000003d000500000007000400050004000000 010000003d00000005000000070004000500000004000000 010000003d00000005000000070004000500000004000000 - {e=>2,a=>10,d=>0,c=>1,h=>37,b=>2,g=>4,f=>7} 0a0000000a000000000207000425000000 0a0000000a000000000002000700040025000000 0a0000000a00000000000000020007000400000025000000 0a0000000a00000000000000020007000400000025000000 - {e=>4,a=>-17,d=>3,c=>0,h=>76,b=>4,g=>0,f=>6} efffffff0403000000040600004c000000 efffffff0400030000000400060000004c000000 efffffff040000000300000004000600000000004c000000 efffffff040000000300000004000600000000004c000000 = struct umixed3 { long a; unsigned char b:3; }; - {a=>83,b=>2} 5300000002 530000000200 5300000002000000 5300000002000000 - {a=>21,b=>7} 1500000007 150000000700 1500000007000000 1500000007000000 - {a=>-112,b=>2} 90ffffff02 90ffffff0200 90ffffff02000000 90ffffff02000000 - {a=>56,b=>1} 3800000001 380000000100 3800000001000000 3800000001000000 - {a=>-36,b=>0} dcffffff00 dcffffff0000 dcffffff00000000 dcffffff00000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-25,b=>4} e7ffffff2c e7ffffff2c00 e7ffffff2c000000 e7ffffff2c000000 - {c=>4,a=>-122,b=>2} 86ffffff22 86ffffff2200 86ffffff22000000 86ffffff22000000 - {c=>1,a=>-102,b=>1} 9affffff09 9affffff0900 9affffff09000000 9affffff09000000 - {c=>4,a=>2,b=>3} 0200000023 020000002300 0200000023000000 0200000023000000 - {c=>4,a=>120,b=>2} 7800000022 780000002200 7800000022000000 7800000022000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>5,a=>-39,b=>2,d=>0} d9ffffff2a00000000 d9ffffff2a0000000000 d9ffffff2a00000000000000 d9ffffff2a00000000000000 - {c=>3,a=>-53,b=>0,d=>4} cbffffff1804000000 cbffffff180004000000 cbffffff1800000004000000 cbffffff1800000004000000 - {c=>5,a=>-104,b=>4,d=>7} 98ffffff2c07000000 98ffffff2c0007000000 98ffffff2c00000007000000 98ffffff2c00000007000000 - {c=>6,a=>-123,b=>4,d=>2} 85ffffff3402000000 85ffffff340002000000 85ffffff3400000002000000 85ffffff3400000002000000 - {c=>3,a=>-127,b=>3,d=>6} 81ffffff1b06000000 81ffffff1b0006000000 81ffffff1b00000006000000 81ffffff1b00000006000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>6,c=>5,a=>61,b=>1,d=>1} 3d000000290100000006 3d0000002900010000000600 3d000000290000000100000006000000 3d000000290000000100000006000000 - {e=>7,c=>2,a=>72,b=>7,d=>7} 48000000170700000007 480000001700070000000700 48000000170000000700000007000000 48000000170000000700000007000000 - {e=>6,c=>1,a=>33,b=>1,d=>5} 21000000090500000006 210000000900050000000600 21000000090000000500000006000000 21000000090000000500000006000000 - {e=>1,c=>5,a=>59,b=>3,d=>6} 3b0000002b0600000001 3b0000002b00060000000100 3b0000002b0000000600000001000000 3b0000002b0000000600000001000000 - {e=>5,c=>7,a=>-74,b=>4,d=>1} b6ffffff3c0100000005 b6ffffff3c00010000000500 b6ffffff3c0000000100000005000000 b6ffffff3c0000000100000005000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>2,c=>0,a=>72,b=>0,d=>6,f=>6} 480000000006000000020600 4800000000000600000002000600 48000000000000000600000002000600 48000000000000000600000002000600 - {e=>1,c=>6,a=>-5,b=>3,d=>2,f=>4} fbffffff3302000000010400 fbffffff33000200000001000400 fbffffff330000000200000001000400 fbffffff330000000200000001000400 - {e=>3,c=>4,a=>-25,b=>7,d=>2,f=>1} e7ffffff2702000000030100 e7ffffff27000200000003000100 e7ffffff270000000200000003000100 e7ffffff270000000200000003000100 - {e=>6,c=>2,a=>127,b=>5,d=>2,f=>0} 7f0000001502000000060000 7f00000015000200000006000000 7f000000150000000200000006000000 7f000000150000000200000006000000 - {e=>1,c=>2,a=>-28,b=>2,d=>6,f=>6} e4ffffff1206000000010600 e4ffffff12000600000001000600 e4ffffff120000000600000001000600 e4ffffff120000000600000001000600 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>5,c=>0,a=>-20,g=>4,b=>1,d=>6,f=>7} ecffffff010600000005070004 ecffffff010006000000050007000400 ecffffff01000000060000000500070004000000 ecffffff01000000060000000500070004000000 - {e=>6,c=>7,a=>89,g=>0,b=>6,d=>5,f=>4} 590000003e0500000006040000 590000003e0005000000060004000000 590000003e000000050000000600040000000000 590000003e000000050000000600040000000000 - {e=>2,c=>7,a=>75,g=>1,b=>0,d=>5,f=>5} 4b000000380500000002050001 4b000000380005000000020005000100 4b00000038000000050000000200050001000000 4b00000038000000050000000200050001000000 - {e=>5,c=>6,a=>-7,g=>2,b=>2,d=>4,f=>2} f9ffffff320400000005020002 f9ffffff320004000000050002000200 f9ffffff32000000040000000500020002000000 f9ffffff32000000040000000500020002000000 - {e=>0,c=>5,a=>-93,g=>6,b=>5,d=>1,f=>2} a3ffffff2d0100000000020006 a3ffffff2d0001000000000002000600 a3ffffff2d000000010000000000020006000000 a3ffffff2d000000010000000000020006000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>-73,d=>5,c=>2,h=>27,b=>3,g=>0,f=>5} b7ffffff1305000000070500001b000000 b7ffffff1300050000000700050000001b000000 b7ffffff130000000500000007000500000000001b000000 b7ffffff130000000500000007000500000000001b000000 - {e=>5,a=>-115,d=>0,c=>4,h=>51,b=>2,g=>3,f=>6} 8dffffff22000000000506000333000000 8dffffff22000000000005000600030033000000 8dffffff2200000000000000050006000300000033000000 8dffffff2200000000000000050006000300000033000000 - {e=>4,a=>20,d=>0,c=>2,h=>56,b=>5,g=>7,f=>4} 1400000015000000000404000738000000 1400000015000000000004000400070038000000 140000001500000000000000040004000700000038000000 140000001500000000000000040004000700000038000000 - {e=>6,a=>115,d=>7,c=>2,h=>157,b=>2,g=>0,f=>3} 730000001207000000060300009d000000 730000001200070000000600030000009d000000 73000000120000000700000006000300000000009d000000 73000000120000000700000006000300000000009d000000 - {e=>1,a=>101,d=>4,c=>2,h=>189,b=>7,g=>1,f=>6} 65000000170400000001060001bd000000 65000000170004000000010006000100bd000000 6500000017000000040000000100060001000000bd000000 6500000017000000040000000100060001000000bd000000 = struct umixed_no_pack { unsigned char a:3; }; - {a=>2} 02 02 02 02 - {a=>3} 03 03 03 03 - {a=>0} 00 00 00 00 - {a=>6} 06 06 06 06 - {a=>5} 05 05 05 05 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; }; - {a=>3,b=>4} 23 23 23 23 - {a=>4,b=>4} 24 24 24 24 - {a=>0,b=>0} 00 00 00 00 - {a=>6,b=>0} 06 06 06 06 - {a=>7,b=>2} 17 17 17 17 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>2,a=>4,b=>5} 2c0200 2c000200 2c000200 2c000200 - {c=>6,a=>2,b=>7} 3a0600 3a000600 3a000600 3a000600 - {c=>5,a=>1,b=>5} 290500 29000500 29000500 29000500 - {c=>5,a=>1,b=>5} 290500 29000500 29000500 29000500 - {c=>6,a=>2,b=>0} 020600 02000600 02000600 02000600 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>2,a=>3,b=>4,d=>16659437} 230200ed33fe00 23000200ed33fe00 23000200ed33fe00 23000200ed33fe00 - {c=>7,a=>2,b=>3,d=>201260983} 1a0700b7fffe0b 1a000700b7fffe0b 1a000700b7fffe0b 1a000700b7fffe0b - {c=>1,a=>6,b=>3,d=>256219575} 1e0100b799450f 1e000100b799450f 1e000100b799450f 1e000100b799450f - {c=>7,a=>6,b=>0,d=>55997687} 060700f7745603 06000700f7745603 06000700f7745603 06000700f7745603 - {c=>2,a=>4,b=>4,d=>103672891} 2402003bec2d06 240002003bec2d06 240002003bec2d06 240002003bec2d06 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>4,c=>3,a=>3,b=>1,d=>63303944} 0b030008f1c50304 0b00030008f1c5030400 0b00030008f1c50304000000 0b00030008f1c50304000000 - {e=>6,c=>1,a=>7,b=>5,d=>115286698} 2f0100aa22df0606 2f000100aa22df060600 2f000100aa22df0606000000 2f000100aa22df0606000000 - {e=>5,c=>7,a=>5,b=>1,d=>33758906} 0d0700ba1e030205 0d000700ba1e03020500 0d000700ba1e030205000000 0d000700ba1e030205000000 - {e=>1,c=>7,a=>2,b=>1,d=>75998826} 0a07006aa6870401 0a0007006aa687040100 0a0007006aa6870401000000 0a0007006aa6870401000000 - {e=>0,c=>4,a=>2,b=>7,d=>23580046} 3a04008ecd670100 3a0004008ecd67010000 3a0004008ecd670100000000 3a0004008ecd670100000000 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>1,c=>0,a=>2,b=>7,d=>158148049,f=>0} 3a0000d1256d0901 3a000000d1256d090100 3a000000d1256d0901000000 3a000000d1256d0901000000 - {e=>3,c=>1,a=>1,b=>7,d=>228592629,f=>0} 390100f50ba00d03 39000100f50ba00d0300 39000100f50ba00d03000000 39000100f50ba00d03000000 - {e=>6,c=>5,a=>5,b=>6,d=>13400160,f=>0} 3505006078cc0006 350005006078cc000600 350005006078cc0006000000 350005006078cc0006000000 - {e=>1,c=>2,a=>1,b=>1,d=>252868262,f=>3} 090200a676120f19 09000200a676120f1900 09000200a676120f19000000 09000200a676120f19000000 - {e=>6,c=>3,a=>3,b=>0,d=>45793175,f=>0} 03030097bfba0206 0300030097bfba020600 0300030097bfba0206000000 0300030097bfba0206000000 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>1,c=>2,a=>6,g=>1699,b=>6,d=>41631336,f=>2} 360200683e7b0211a306 36000200683e7b021100a306 36000200683e7b021100a306 36000200683e7b021100a306 - {e=>2,c=>0,a=>2,g=>602,b=>2,d=>186423654,f=>2} 12000066991c0b125a02 1200000066991c0b12005a02 1200000066991c0b12005a02 1200000066991c0b12005a02 - {e=>2,c=>7,a=>4,g=>6342,b=>7,d=>247473427,f=>2} 3c07001325c00e12c618 3c0007001325c00e1200c618 3c0007001325c00e1200c618 3c0007001325c00e1200c618 - {e=>5,c=>7,a=>4,g=>2765,b=>7,d=>238172392,f=>1} 3c0700e838320e0dcd0a 3c000700e838320e0d00cd0a 3c000700e838320e0d00cd0a 3c000700e838320e0d00cd0a - {e=>1,c=>7,a=>1,g=>5584,b=>7,d=>2742541,f=>3} 3907000dd9290019d015 390007000dd929001900d015 390007000dd929001900d015 390007000dd929001900d015 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; signed int h; }; - {e=>5,a=>0,d=>63927408,c=>7,h=>-86,b=>6,g=>5835,f=>1} 3007007074cf030dcb16aaffffff 300007007074cf030d00cb16aaffffff 300007007074cf030d00cb16aaffffff 300007007074cf030d00cb16aaffffff - {e=>7,a=>3,d=>165783275,c=>6,h=>-85,b=>5,g=>3147,f=>0} 2b0600eba6e109074b0cabffffff 2b000600eba6e10907004b0cabffffff 2b000600eba6e10907004b0cabffffff 2b000600eba6e10907004b0cabffffff - {e=>7,a=>0,d=>262181766,c=>7,h=>-76,b=>2,g=>3227,f=>0} 1007008693a00f079b0cb4ffffff 100007008693a00f07009b0cb4ffffff 100007008693a00f07009b0cb4ffffff 100007008693a00f07009b0cb4ffffff - {e=>2,a=>1,d=>258295770,c=>1,h=>-44,b=>2,g=>2696,f=>2} 110100da47650f12880ad4ffffff 11000100da47650f1200880ad4ffffff 11000100da47650f1200880ad4ffffff 11000100da47650f1200880ad4ffffff - {e=>6,a=>7,d=>149674579,c=>6,h=>44,b=>7,g=>3480,f=>1} 3f060053daeb080e980d2c000000 3f00060053daeb080e00980d2c000000 3f00060053daeb080e00980d2c000000 3f00060053daeb080e00980d2c000000 = struct umixed_no_pack { char a; unsigned char b:3; }; - {a=>18,b=>7} 1207 1207 1207 1207 - {a=>-34,b=>4} de04 de04 de04 de04 - {a=>-63,b=>4} c104 c104 c104 c104 - {a=>-10,b=>4} f604 f604 f604 f604 - {a=>117,b=>1} 7501 7501 7501 7501 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-68,b=>6} bc26 bc26 bc26 bc26 - {c=>7,a=>48,b=>6} 303e 303e 303e 303e - {c=>7,a=>124,b=>0} 7c38 7c38 7c38 7c38 - {c=>7,a=>111,b=>4} 6f3c 6f3c 6f3c 6f3c - {c=>5,a=>-83,b=>1} ad29 ad29 ad29 ad29 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>2,a=>116,b=>6,d=>5} 74160500 74160500 74160500 74160500 - {c=>0,a=>-85,b=>7,d=>7} ab070700 ab070700 ab070700 ab070700 - {c=>7,a=>13,b=>7,d=>6} 0d3f0600 0d3f0600 0d3f0600 0d3f0600 - {c=>6,a=>118,b=>4,d=>6} 76340600 76340600 76340600 76340600 - {c=>3,a=>59,b=>4,d=>5} 3b1c0500 3b1c0500 3b1c0500 3b1c0500 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>27672616,c=>4,a=>110,b=>5,d=>2} 6e2502002840a601 6e2502002840a601 6e2502002840a601 6e2502002840a601 - {e=>87433172,c=>4,a=>106,b=>7,d=>5} 6a270500d41f3605 6a270500d41f3605 6a270500d41f3605 6a270500d41f3605 - {e=>33757072,c=>4,a=>-72,b=>4,d=>2} b824020090170302 b824020090170302 b824020090170302 b824020090170302 - {e=>12459290,c=>0,a=>49,b=>7,d=>0} 310700001a1dbe00 310700001a1dbe00 310700001a1dbe00 310700001a1dbe00 - {e=>265383931,c=>3,a=>-91,b=>4,d=>1} a51c0100fb6fd10f a51c0100fb6fd10f a51c0100fb6fd10f a51c0100fb6fd10f = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>121017809,c=>3,a=>-127,b=>5,d=>0,f=>6} 811d0000d195360706 811d0000d19536070600 811d0000d195360706000000 811d0000d195360706000000 - {e=>38181014,c=>5,a=>-86,b=>4,d=>3,f=>1} aa2c03009698460201 aa2c0300969846020100 aa2c03009698460201000000 aa2c03009698460201000000 - {e=>206063701,c=>2,a=>-126,b=>5,d=>3,f=>4} 821503005548480c04 821503005548480c0400 821503005548480c04000000 821503005548480c04000000 - {e=>102799155,c=>1,a=>-102,b=>5,d=>0,f=>1} 9a0d00003397200601 9a0d0000339720060100 9a0d00003397200601000000 9a0d00003397200601000000 - {e=>35733158,c=>5,a=>48,b=>7,d=>5,f=>4} 302f0500a63e210204 302f0500a63e21020400 302f0500a63e210204000000 302f0500a63e210204000000 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>259030873,c=>6,a=>-99,g=>3,b=>6,d=>6,f=>7} 9d360600597f700f1f 9d360600597f700f1f00 9d360600597f700f1f000000 9d360600597f700f1f000000 - {e=>113534093,c=>3,a=>-82,g=>1,b=>7,d=>1,f=>1} ae1f01008d64c40609 ae1f01008d64c4060900 ae1f01008d64c40609000000 ae1f01008d64c40609000000 - {e=>196254634,c=>6,a=>-82,g=>0,b=>2,d=>5,f=>3} ae320500aa9bb20b03 ae320500aa9bb20b0300 ae320500aa9bb20b03000000 ae320500aa9bb20b03000000 - {e=>211207759,c=>7,a=>26,g=>3,b=>3,d=>6,f=>4} 1a3b06004fc6960c1c 1a3b06004fc6960c1c00 1a3b06004fc6960c1c000000 1a3b06004fc6960c1c000000 - {e=>35365642,c=>5,a=>-40,g=>0,b=>6,d=>0,f=>6} d82e00000aa31b0206 d82e00000aa31b020600 d82e00000aa31b0206000000 d82e00000aa31b0206000000 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>95421875,a=>113,d=>4,c=>0,h=>6613,b=>1,g=>2,f=>5} 71010400b305b00515d519 71010400b305b0051500d519 71010400b305b0051500d519 71010400b305b0051500d519 - {e=>219735823,a=>24,d=>6,c=>5,h=>3918,b=>5,g=>1,f=>0} 182d06000fe7180d084e0f 182d06000fe7180d08004e0f 182d06000fe7180d08004e0f 182d06000fe7180d08004e0f - {e=>114141874,a=>-127,d=>4,c=>4,h=>3018,b=>0,g=>0,f=>2} 81200400b2aacd0602ca0b 81200400b2aacd060200ca0b 81200400b2aacd060200ca0b 81200400b2aacd060200ca0b - {e=>116157792,a=>52,d=>7,c=>1,h=>7261,b=>4,g=>0,f=>5} 340c0700606dec06055d1c 340c0700606dec0605005d1c 340c0700606dec0605005d1c 340c0700606dec0605005d1c - {e=>164478627,a=>-23,d=>7,c=>1,h=>2155,b=>4,g=>3,f=>7} e90c0700a3becd091f6b08 e90c0700a3becd091f006b08 e90c0700a3becd091f006b08 e90c0700a3becd091f006b08 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>31308849,a=>-51,d=>6,c=>1,h=>3257,b=>7,g=>2,f=>6,i=>35} cd0f060031bcdd0116b90c23000000 cd0f060031bcdd011600b90c23000000 cd0f060031bcdd011600b90c23000000 cd0f060031bcdd011600b90c23000000 - {e=>200850095,a=>59,d=>3,c=>5,h=>4223,b=>2,g=>3,f=>7,i=>-30} 3b2a0300afbaf80b1f7f10e2ffffff 3b2a0300afbaf80b1f007f10e2ffffff 3b2a0300afbaf80b1f007f10e2ffffff 3b2a0300afbaf80b1f007f10e2ffffff - {e=>2384984,a=>-78,d=>5,c=>3,h=>4113,b=>0,g=>3,f=>7,i=>33} b2180500586424001f111021000000 b2180500586424001f00111021000000 b2180500586424001f00111021000000 b2180500586424001f00111021000000 - {e=>170834401,a=>-122,d=>7,c=>0,h=>305,b=>5,g=>1,f=>3,i=>93} 86050700e1b92e0a0b31015d000000 86050700e1b92e0a0b0031015d000000 86050700e1b92e0a0b0031015d000000 86050700e1b92e0a0b0031015d000000 - {e=>202616049,a=>-1,d=>7,c=>3,h=>4385,b=>5,g=>3,f=>0,i=>101} ff1d0700f1ac130c18211165000000 ff1d0700f1ac130c1800211165000000 ff1d0700f1ac130c1800211165000000 ff1d0700f1ac130c1800211165000000 = struct umixed_no_pack { short a; unsigned char b:3; }; - {a=>-23,b=>3} e9ff03 e9ff0300 e9ff0300 e9ff0300 - {a=>-90,b=>7} a6ff07 a6ff0700 a6ff0700 a6ff0700 - {a=>33,b=>2} 210002 21000200 21000200 21000200 - {a=>-4,b=>6} fcff06 fcff0600 fcff0600 fcff0600 - {a=>-31,b=>5} e1ff05 e1ff0500 e1ff0500 e1ff0500 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-107,b=>7} 95ff27 95ff2700 95ff2700 95ff2700 - {c=>7,a=>6,b=>0} 060038 06003800 06003800 06003800 - {c=>7,a=>47,b=>6} 2f003e 2f003e00 2f003e00 2f003e00 - {c=>2,a=>-33,b=>2} dfff12 dfff1200 dfff1200 dfff1200 - {c=>2,a=>-93,b=>3} a3ff13 a3ff1300 a3ff1300 a3ff1300 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>35,b=>3,d=>7} 2300230700 230023000700 230023000700 230023000700 - {c=>1,a=>-77,b=>0,d=>4} b3ff080400 b3ff08000400 b3ff08000400 b3ff08000400 - {c=>4,a=>-88,b=>6,d=>0} a8ff260000 a8ff26000000 a8ff26000000 a8ff26000000 - {c=>2,a=>-10,b=>6,d=>4} f6ff160400 f6ff16000400 f6ff16000400 f6ff16000400 - {c=>2,a=>17,b=>4,d=>3} 1100140300 110014000300 110014000300 110014000300 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>230924365,c=>5,a=>-34,b=>0,d=>1} deff2801004da0c30d deff280001004da0c30d deff2800010000004da0c30d deff2800010000004da0c30d - {e=>235124443,c=>6,a=>-25,b=>1,d=>0} e7ff310000dbb6030e e7ff31000000dbb6030e e7ff310000000000dbb6030e e7ff310000000000dbb6030e - {e=>218139234,c=>4,a=>-11,b=>4,d=>6} f5ff240600628a000d f5ff24000600628a000d f5ff240006000000628a000d f5ff240006000000628a000d - {e=>96460758,c=>3,a=>-25,b=>1,d=>3} e7ff190300d6dfbf05 e7ff19000300d6dfbf05 e7ff190003000000d6dfbf05 e7ff190003000000d6dfbf05 - {e=>143236939,c=>5,a=>117,b=>3,d=>0} 75002b00004b9f8908 75002b0000004b9f8908 75002b00000000004b9f8908 75002b00000000004b9f8908 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>81182875,c=>2,a=>49,b=>2,d=>5,f=>3} 31001205009bc0d60403 3100120005009bc0d6040300 31001200050000009bc0d60403000000 31001200050000009bc0d60403000000 - {e=>165824077,c=>1,a=>51,b=>0,d=>0,f=>4} 33000800004d46e20904 3300080000004d46e2090400 33000800000000004d46e20904000000 33000800000000004d46e20904000000 - {e=>20080403,c=>1,a=>41,b=>4,d=>7,f=>6} 29000c07001367320106 29000c000700136732010600 29000c00070000001367320106000000 29000c00070000001367320106000000 - {e=>100629693,c=>0,a=>61,b=>6,d=>6,f=>1} 3d00060600bd7cff0501 3d0006000600bd7cff050100 3d00060006000000bd7cff0501000000 3d00060006000000bd7cff0501000000 - {e=>190350127,c=>5,a=>-101,b=>6,d=>0,f=>3} 9bff2e00002f83580b03 9bff2e0000002f83580b0300 9bff2e00000000002f83580b03000000 9bff2e00000000002f83580b03000000 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>227828092,c=>0,a=>-16,g=>2,b=>1,d=>0,f=>0} f0ff0100007c61940d10 f0ff010000007c61940d1000 f0ff0100000000007c61940d10000000 f0ff0100000000007c61940d10000000 - {e=>182355747,c=>1,a=>112,g=>0,b=>0,d=>3,f=>7} 70000803002387de0a07 7000080003002387de0a0700 70000800030000002387de0a07000000 70000800030000002387de0a07000000 - {e=>183757219,c=>3,a=>117,g=>3,b=>6,d=>6,f=>2} 75001e0600a3e9f30a1a 75001e000600a3e9f30a1a00 75001e0006000000a3e9f30a1a000000 75001e0006000000a3e9f30a1a000000 - {e=>250036859,c=>6,a=>66,g=>1,b=>2,d=>0,f=>6} 42003200007b42e70e0e 4200320000007b42e70e0e00 42003200000000007b42e70e0e000000 42003200000000007b42e70e0e000000 - {e=>238803723,c=>4,a=>110,g=>0,b=>1,d=>6,f=>1} 6e002106000bdb3b0e01 6e00210006000bdb3b0e0100 6e002100060000000bdb3b0e01000000 6e002100060000000bdb3b0e01000000 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>123354721,a=>77,d=>1,c=>5,h=>6510,b=>2,g=>2,f=>7} 4d002a0100613e5a07176e19 4d002a000100613e5a0717006e19 4d002a0001000000613e5a0717006e19 4d002a0001000000613e5a0717006e19 - {e=>6270702,a=>72,d=>1,c=>2,h=>3832,b=>3,g=>1,f=>4} 4800130100eeae5f000cf80e 480013000100eeae5f000c00f80e 4800130001000000eeae5f000c00f80e 4800130001000000eeae5f000c00f80e - {e=>151397274,a=>-111,d=>6,c=>7,h=>1061,b=>6,g=>3,f=>3} 91ff3e06009a2306091b2504 91ff3e0006009a2306091b002504 91ff3e00060000009a2306091b002504 91ff3e00060000009a2306091b002504 - {e=>139689776,a=>26,d=>3,c=>0,h=>1364,b=>6,g=>1,f=>4} 1a00060300307f53080c5405 1a0006000300307f53080c005405 1a00060003000000307f53080c005405 1a00060003000000307f53080c005405 - {e=>36719821,a=>73,d=>2,c=>4,h=>2049,b=>7,g=>2,f=>3} 4900270200cd4c3002130108 490027000200cd4c300213000108 4900270002000000cd4c300213000108 4900270002000000cd4c300213000108 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>80052423,a=>38,d=>7,c=>5,h=>719,b=>0,g=>1,f=>2,i=>58} 2600280700c780c5040acf023a000000 260028000700c780c5040a00cf023a000000 2600280007000000c780c5040a00cf023a000000 2600280007000000c780c5040a00cf023a000000 - {e=>84879964,a=>-58,d=>2,c=>2,h=>7754,b=>5,g=>2,f=>6,i=>3} c6ff1502005c2a0f05164a1e03000000 c6ff150002005c2a0f0516004a1e03000000 c6ff1500020000005c2a0f0516004a1e03000000 c6ff1500020000005c2a0f0516004a1e03000000 - {e=>208832370,a=>-38,d=>5,c=>6,h=>7000,b=>7,g=>3,f=>1,i=>27} daff3705007287720c19581b1b000000 daff370005007287720c1900581b1b000000 daff3700050000007287720c1900581b1b000000 daff3700050000007287720c1900581b1b000000 - {e=>224138316,a=>99,d=>4,c=>7,h=>2886,b=>1,g=>1,f=>2,i=>-60} 63003904004c145c0d0a460bc4ffffff 6300390004004c145c0d0a00460bc4ffffff 63003900040000004c145c0d0a00460bc4ffffff 63003900040000004c145c0d0a00460bc4ffffff - {e=>208271774,a=>61,d=>7,c=>5,h=>4345,b=>5,g=>1,f=>2,i=>-10} 3d002d07009ef9690c0af910f6ffffff 3d002d0007009ef9690c0a00f910f6ffffff 3d002d00070000009ef9690c0a00f910f6ffffff 3d002d00070000009ef9690c0a00f910f6ffffff = struct umixed_no_pack { int a; unsigned char b:3; }; - {a=>77,b=>5} 4d00000005 4d0000000500 4d00000005000000 4d00000005000000 - {a=>-91,b=>1} a5ffffff01 a5ffffff0100 a5ffffff01000000 a5ffffff01000000 - {a=>42,b=>3} 2a00000003 2a0000000300 2a00000003000000 2a00000003000000 - {a=>-15,b=>3} f1ffffff03 f1ffffff0300 f1ffffff03000000 f1ffffff03000000 - {a=>-34,b=>2} deffffff02 deffffff0200 deffffff02000000 deffffff02000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>123,b=>7} 7b00000007 7b0000000700 7b00000007000000 7b00000007000000 - {c=>5,a=>35,b=>6} 230000002e 230000002e00 230000002e000000 230000002e000000 - {c=>3,a=>-76,b=>4} b4ffffff1c b4ffffff1c00 b4ffffff1c000000 b4ffffff1c000000 - {c=>6,a=>84,b=>4} 5400000034 540000003400 5400000034000000 5400000034000000 - {c=>5,a=>-26,b=>5} e6ffffff2d e6ffffff2d00 e6ffffff2d000000 e6ffffff2d000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>89,b=>0,d=>2} 59000000300200 5900000030000200 5900000030000200 5900000030000200 - {c=>2,a=>71,b=>6,d=>6} 47000000160600 4700000016000600 4700000016000600 4700000016000600 - {c=>6,a=>43,b=>6,d=>4} 2b000000360400 2b00000036000400 2b00000036000400 2b00000036000400 - {c=>7,a=>74,b=>6,d=>1} 4a0000003e0100 4a0000003e000100 4a0000003e000100 4a0000003e000100 - {c=>1,a=>24,b=>1,d=>7} 18000000090700 1800000009000700 1800000009000700 1800000009000700 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>258411058,c=>2,a=>-56,b=>3,d=>1} c8ffffff130100320a670f c8ffffff13000100320a670f c8ffffff13000100320a670f c8ffffff13000100320a670f - {e=>192775493,c=>2,a=>6,b=>7,d=>4} 0600000017040045857d0b 060000001700040045857d0b 060000001700040045857d0b 060000001700040045857d0b - {e=>70245712,c=>3,a=>-1,b=>7,d=>1} ffffffff1f010050dd2f04 ffffffff1f00010050dd2f04 ffffffff1f00010050dd2f04 ffffffff1f00010050dd2f04 - {e=>100376726,c=>7,a=>115,b=>0,d=>7} 7300000038070096a0fb05 730000003800070096a0fb05 730000003800070096a0fb05 730000003800070096a0fb05 - {e=>261070995,c=>7,a=>-47,b=>1,d=>0} d1ffffff39000093a08f0f d1ffffff3900000093a08f0f d1ffffff3900000093a08f0f d1ffffff3900000093a08f0f = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>202903687,c=>1,a=>-41,b=>7,d=>0,f=>7} d7ffffff0f00008710180c07 d7ffffff0f0000008710180c0700 d7ffffff0f0000008710180c07000000 d7ffffff0f0000008710180c07000000 - {e=>156182618,c=>1,a=>83,b=>7,d=>1,f=>1} 530000000f01005a284f0901 530000000f0001005a284f090100 530000000f0001005a284f0901000000 530000000f0001005a284f0901000000 - {e=>30752427,c=>5,a=>-26,b=>6,d=>3,f=>6} e6ffffff2e0300ab3ed50106 e6ffffff2e000300ab3ed5010600 e6ffffff2e000300ab3ed50106000000 e6ffffff2e000300ab3ed50106000000 - {e=>13986533,c=>2,a=>73,b=>0,d=>3,f=>0} 49000000100300e56ad50000 4900000010000300e56ad5000000 4900000010000300e56ad50000000000 4900000010000300e56ad50000000000 - {e=>97832562,c=>7,a=>67,b=>3,d=>1,f=>6} 430000003b010072ced40506 430000003b00010072ced4050600 430000003b00010072ced40506000000 430000003b00010072ced40506000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>224204808,c=>0,a=>-125,g=>3,b=>2,d=>6,f=>5} 83ffffff02060008185d0d1d 83ffffff0200060008185d0d1d00 83ffffff0200060008185d0d1d000000 83ffffff0200060008185d0d1d000000 - {e=>248110203,c=>2,a=>32,g=>2,b=>2,d=>2,f=>2} 200000001202007bdcc90e12 20000000120002007bdcc90e1200 20000000120002007bdcc90e12000000 20000000120002007bdcc90e12000000 - {e=>176808355,c=>3,a=>74,g=>3,b=>7,d=>1,f=>0} 4a0000001f0100a3e1890a18 4a0000001f000100a3e1890a1800 4a0000001f000100a3e1890a18000000 4a0000001f000100a3e1890a18000000 - {e=>200366377,c=>3,a=>-125,g=>2,b=>4,d=>6,f=>4} 83ffffff1c06002959f10b14 83ffffff1c0006002959f10b1400 83ffffff1c0006002959f10b14000000 83ffffff1c0006002959f10b14000000 - {e=>40965455,c=>3,a=>107,g=>2,b=>0,d=>3,f=>4} 6b0000001803004f15710214 6b000000180003004f1571021400 6b000000180003004f15710214000000 6b000000180003004f15710214000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>261834522,a=>113,d=>2,c=>3,h=>1720,b=>5,g=>2,f=>7} 710000001d02001a479b0f17b806 710000001d0002001a479b0f1700b806 710000001d0002001a479b0f1700b806 710000001d0002001a479b0f1700b806 - {e=>81177197,a=>52,d=>7,c=>0,h=>7442,b=>0,g=>0,f=>3} 340000000007006daad60403121d 34000000000007006daad6040300121d 34000000000007006daad6040300121d 34000000000007006daad6040300121d - {e=>252859983,a=>117,d=>4,c=>2,h=>3820,b=>7,g=>1,f=>3} 750000001704004f56120f0bec0e 75000000170004004f56120f0b00ec0e 75000000170004004f56120f0b00ec0e 75000000170004004f56120f0b00ec0e - {e=>260755755,a=>39,d=>6,c=>3,h=>5333,b=>4,g=>1,f=>6} 270000001c06002bd18a0f0ed514 270000001c0006002bd18a0f0e00d514 270000001c0006002bd18a0f0e00d514 270000001c0006002bd18a0f0e00d514 - {e=>197646476,a=>44,d=>1,c=>0,h=>1255,b=>0,g=>1,f=>7} 2c0000000001008cd8c70b0fe704 2c000000000001008cd8c70b0f00e704 2c000000000001008cd8c70b0f00e704 2c000000000001008cd8c70b0f00e704 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>3714946,a=>-88,d=>6,c=>2,h=>3065,b=>4,g=>0,f=>1,i=>-7} a8ffffff14060082af380001f90bf9ffffff a8ffffff1400060082af38000100f90bf9ffffff a8ffffff1400060082af38000100f90bf9ffffff a8ffffff1400060082af38000100f90bf9ffffff - {e=>217660046,a=>63,d=>4,c=>2,h=>4968,b=>5,g=>3,f=>5,i=>-17} 3f0000001504008e3af90c1d6813efffffff 3f000000150004008e3af90c1d006813efffffff 3f000000150004008e3af90c1d006813efffffff 3f000000150004008e3af90c1d006813efffffff - {e=>50265395,a=>101,d=>1,c=>3,h=>1816,b=>7,g=>1,f=>7,i=>113} 650000001f010033fdfe020f180771000000 650000001f00010033fdfe020f00180771000000 650000001f00010033fdfe020f00180771000000 650000001f00010033fdfe020f00180771000000 - {e=>165795744,a=>11,d=>5,c=>4,h=>2771,b=>2,g=>3,f=>6,i=>-6} 0b000000220500a0d7e1091ed30afaffffff 0b00000022000500a0d7e1091e00d30afaffffff 0b00000022000500a0d7e1091e00d30afaffffff 0b00000022000500a0d7e1091e00d30afaffffff - {e=>246643849,a=>56,d=>5,c=>2,h=>3254,b=>0,g=>3,f=>7,i=>-43} 38000000100500897cb30e1fb60cd5ffffff 3800000010000500897cb30e1f00b60cd5ffffff 3800000010000500897cb30e1f00b60cd5ffffff 3800000010000500897cb30e1f00b60cd5ffffff = struct umixed_no_pack { long a; unsigned char b:3; }; - {a=>-22,b=>3} eaffffff03 eaffffff0300 eaffffff03000000 eaffffff03000000 - {a=>15,b=>0} 0f00000000 0f0000000000 0f00000000000000 0f00000000000000 - {a=>-58,b=>4} c6ffffff04 c6ffffff0400 c6ffffff04000000 c6ffffff04000000 - {a=>39,b=>0} 2700000000 270000000000 2700000000000000 2700000000000000 - {a=>55,b=>0} 3700000000 370000000000 3700000000000000 3700000000000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>53,b=>3} 3500000033 350000003300 3500000033000000 3500000033000000 - {c=>6,a=>-101,b=>4} 9bffffff34 9bffffff3400 9bffffff34000000 9bffffff34000000 - {c=>6,a=>62,b=>1} 3e00000031 3e0000003100 3e00000031000000 3e00000031000000 - {c=>5,a=>-63,b=>5} c1ffffff2d c1ffffff2d00 c1ffffff2d000000 c1ffffff2d000000 - {c=>2,a=>26,b=>4} 1a00000014 1a0000001400 1a00000014000000 1a00000014000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>7,a=>84,b=>5,d=>0} 540000003d0000 540000003d000000 540000003d000000 540000003d000000 - {c=>2,a=>-4,b=>6,d=>7} fcffffff160700 fcffffff16000700 fcffffff16000700 fcffffff16000700 - {c=>0,a=>-1,b=>2,d=>4} ffffffff020400 ffffffff02000400 ffffffff02000400 ffffffff02000400 - {c=>5,a=>75,b=>2,d=>1} 4b0000002a0100 4b0000002a000100 4b0000002a000100 4b0000002a000100 - {c=>1,a=>-35,b=>2,d=>2} ddffffff0a0200 ddffffff0a000200 ddffffff0a000200 ddffffff0a000200 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>12846720,c=>5,a=>-2,b=>6,d=>4} feffffff2e04008006c400 feffffff2e0004008006c400 feffffff2e0004008006c400 feffffff2e0004008006c400 - {e=>122850482,c=>0,a=>44,b=>4,d=>5} 2c000000040500b28c5207 2c00000004000500b28c5207 2c00000004000500b28c5207 2c00000004000500b28c5207 - {e=>110531108,c=>0,a=>6,b=>7,d=>5} 0600000007050024929606 060000000700050024929606 060000000700050024929606 060000000700050024929606 - {e=>172922041,c=>3,a=>-21,b=>6,d=>1} ebffffff1e0100b9944e0a ebffffff1e000100b9944e0a ebffffff1e000100b9944e0a ebffffff1e000100b9944e0a - {e=>55535187,c=>1,a=>-73,b=>2,d=>3} b7ffffff0a030053664f03 b7ffffff0a00030053664f03 b7ffffff0a00030053664f03 b7ffffff0a00030053664f03 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>66805985,c=>5,a=>115,b=>6,d=>2,f=>6} 730000002e0200e160fb0306 730000002e000200e160fb030600 730000002e000200e160fb0306000000 730000002e000200e160fb0306000000 - {e=>217412345,c=>5,a=>83,b=>2,d=>7,f=>1} 530000002a0700f972f50c01 530000002a000700f972f50c0100 530000002a000700f972f50c01000000 530000002a000700f972f50c01000000 - {e=>143288860,c=>4,a=>80,b=>4,d=>7,f=>2} 500000002407001c6a8a0802 50000000240007001c6a8a080200 50000000240007001c6a8a0802000000 50000000240007001c6a8a0802000000 - {e=>80533529,c=>3,a=>-56,b=>0,d=>4,f=>3} c8ffffff18040019d8cc0403 c8ffffff1800040019d8cc040300 c8ffffff1800040019d8cc0403000000 c8ffffff1800040019d8cc0403000000 - {e=>76049210,c=>4,a=>41,b=>4,d=>0,f=>2} 290000002400003a6b880402 29000000240000003a6b88040200 29000000240000003a6b880402000000 29000000240000003a6b880402000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>33149186,c=>0,a=>-66,g=>2,b=>6,d=>0,f=>2} beffffff06000002d1f90112 beffffff0600000002d1f9011200 beffffff0600000002d1f90112000000 beffffff0600000002d1f90112000000 - {e=>24018713,c=>6,a=>42,g=>0,b=>3,d=>1,f=>7} 2a000000330100197f6e0107 2a00000033000100197f6e010700 2a00000033000100197f6e0107000000 2a00000033000100197f6e0107000000 - {e=>238049791,c=>1,a=>-89,g=>0,b=>5,d=>4,f=>3} a7ffffff0d0400ff59300e03 a7ffffff0d000400ff59300e0300 a7ffffff0d000400ff59300e03000000 a7ffffff0d000400ff59300e03000000 - {e=>45452680,c=>4,a=>85,g=>3,b=>5,d=>4,f=>2} 55000000250400888db5021a 5500000025000400888db5021a00 5500000025000400888db5021a000000 5500000025000400888db5021a000000 - {e=>127560049,c=>0,a=>38,g=>3,b=>5,d=>1,f=>4} 2600000005010071699a071c 260000000500010071699a071c00 260000000500010071699a071c000000 260000000500010071699a071c000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>143259895,a=>-70,d=>4,c=>3,h=>4312,b=>6,g=>0,f=>5} baffffff1e0400f7f8890805d810 baffffff1e000400f7f889080500d810 baffffff1e000400f7f889080500d810 baffffff1e000400f7f889080500d810 - {e=>130209381,a=>75,d=>3,c=>6,h=>1172,b=>2,g=>1,f=>0} 4b00000032030065d6c207089404 4b0000003200030065d6c20708009404 4b0000003200030065d6c20708009404 4b0000003200030065d6c20708009404 - {e=>169515883,a=>36,d=>3,c=>7,h=>7983,b=>7,g=>2,f=>0} 240000003f03006b9b1a0a102f1f 240000003f0003006b9b1a0a10002f1f 240000003f0003006b9b1a0a10002f1f 240000003f0003006b9b1a0a10002f1f - {e=>204680465,a=>-15,d=>2,c=>5,h=>8017,b=>2,g=>0,f=>6} f1ffffff2a0200112d330c06511f f1ffffff2a000200112d330c0600511f f1ffffff2a000200112d330c0600511f f1ffffff2a000200112d330c0600511f - {e=>243063688,a=>85,d=>2,c=>6,h=>342,b=>2,g=>0,f=>3} 5500000032020088db7c0e035601 550000003200020088db7c0e03005601 550000003200020088db7c0e03005601 550000003200020088db7c0e03005601 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>256419346,a=>25,d=>4,c=>1,h=>4924,b=>3,g=>1,f=>2,i=>-112} 190000000b040012a6480f0a3c1390ffffff 190000000b00040012a6480f0a003c1390ffffff 190000000b00040012a6480f0a003c1390ffffff 190000000b00040012a6480f0a003c1390ffffff - {e=>155022430,a=>75,d=>3,c=>2,h=>362,b=>7,g=>2,f=>1,i=>-49} 4b0000001703005e743d09116a01cfffffff 4b000000170003005e743d0911006a01cfffffff 4b000000170003005e743d0911006a01cfffffff 4b000000170003005e743d0911006a01cfffffff - {e=>190447867,a=>-73,d=>1,c=>2,h=>2876,b=>7,g=>0,f=>7,i=>1} b7ffffff170100fb005a0b073c0b01000000 b7ffffff17000100fb005a0b07003c0b01000000 b7ffffff17000100fb005a0b07003c0b01000000 b7ffffff17000100fb005a0b07003c0b01000000 - {e=>179690236,a=>9,d=>7,c=>0,h=>7267,b=>7,g=>1,f=>0,i=>-85} 09000000070700fcdab50a08631cabffffff 0900000007000700fcdab50a0800631cabffffff 0900000007000700fcdab50a0800631cabffffff 0900000007000700fcdab50a0800631cabffffff - {e=>104415787,a=>74,d=>7,c=>3,h=>3028,b=>4,g=>3,f=>7,i=>92} 4a0000001c07002b4239061fd40b5c000000 4a0000001c0007002b4239061f00d40b5c000000 4a0000001c0007002b4239061f00d40b5c000000 4a0000001c0007002b4239061f00d40b5c000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; }; - {a=>1} 01 01 01 01 - {a=>0} 00 00 00 00 - {a=>1} 01 01 01 01 - {a=>3} 03 03 03 03 - {a=>5} 05 05 05 05 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; }; - {a=>4,b=>3} 1c 1c 1c 1c - {a=>5,b=>6} 35 35 35 35 - {a=>1,b=>3} 19 19 19 19 - {a=>7,b=>6} 37 37 37 37 - {a=>1,b=>0} 01 01 01 01 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>7,a=>2,b=>6} 320700 320700 320700 320700 - {c=>3,a=>1,b=>4} 210300 210300 210300 210300 - {c=>0,a=>2,b=>1} 0a0000 0a0000 0a0000 0a0000 - {c=>7,a=>6,b=>6} 360700 360700 360700 360700 - {c=>6,a=>5,b=>3} 1d0600 1d0600 1d0600 1d0600 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>3,a=>4,b=>6,d=>50977657} 34030079db0903 34030079db0903 34030079db0903 34030079db0903 - {c=>4,a=>1,b=>0,d=>156580251} 0104009b395509 0104009b395509 0104009b395509 0104009b395509 - {c=>0,a=>6,b=>1,d=>120765803} 0e00006bbd3207 0e00006bbd3207 0e00006bbd3207 0e00006bbd3207 - {c=>5,a=>6,b=>4,d=>190259749} 2605002522570b 2605002522570b 2605002522570b 2605002522570b - {c=>3,a=>6,b=>1,d=>14877875} 0e0300b304e300 0e0300b304e300 0e0300b304e300 0e0300b304e300 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>7,c=>0,a=>5,b=>4,d=>131151049} 250000c934d10707 250000c934d10707 250000c934d10707 250000c934d10707 - {e=>4,c=>6,a=>0,b=>3,d=>27196562} 18060092fc9e0104 18060092fc9e0104 18060092fc9e0104 18060092fc9e0104 - {e=>5,c=>2,a=>5,b=>2,d=>79198194} 150200f277b80405 150200f277b80405 150200f277b80405 150200f277b80405 - {e=>1,c=>6,a=>1,b=>1,d=>53011008} 09060040e2280301 09060040e2280301 09060040e2280301 09060040e2280301 - {e=>3,c=>0,a=>3,b=>5,d=>229669114} 2b0000fa78b00d03 2b0000fa78b00d03 2b0000fa78b00d03 2b0000fa78b00d03 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>7,c=>4,a=>3,b=>2,d=>224213968,f=>0} 130400d03b5d0d07 130400d03b5d0d07 130400d03b5d0d07 130400d03b5d0d07 - {e=>5,c=>0,a=>6,b=>7,d=>149199438,f=>2} 3e00004e9ae40815 3e00004e9ae40815 3e00004e9ae40815 3e00004e9ae40815 - {e=>4,c=>7,a=>4,b=>6,d=>212284222,f=>0} 3407003e33a70c04 3407003e33a70c04 3407003e33a70c04 3407003e33a70c04 - {e=>0,c=>4,a=>1,b=>3,d=>183266435,f=>3} 190400836cec0a18 190400836cec0a18 190400836cec0a18 190400836cec0a18 - {e=>3,c=>3,a=>2,b=>0,d=>193465720,f=>3} 020300780d880b1b 020300780d880b1b 020300780d880b1b 020300780d880b1b = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>2,c=>0,a=>4,g=>7279,b=>3,d=>226086089,f=>0} 1c0000c9cc790d026f1c 1c0000c9cc790d026f1c 1c0000c9cc790d026f1c 1c0000c9cc790d026f1c - {e=>4,c=>1,a=>5,g=>1474,b=>6,d=>135043372,f=>2} 3501002c990c0814c205 3501002c990c0814c205 3501002c990c0814c205 3501002c990c0814c205 - {e=>0,c=>2,a=>4,g=>4289,b=>6,d=>167538358,f=>2} 340200b66efc0910c110 340200b66efc0910c110 340200b66efc0910c110 340200b66efc0910c110 - {e=>3,c=>4,a=>0,g=>1460,b=>0,d=>191785714,f=>1} 000400f26a6e0b0bb405 000400f26a6e0b0bb405 000400f26a6e0b0bb405 000400f26a6e0b0bb405 - {e=>1,c=>0,a=>4,g=>4192,b=>7,d=>193646184,f=>0} 3c000068ce8a0b016010 3c000068ce8a0b016010 3c000068ce8a0b016010 3c000068ce8a0b016010 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>2,a=>6,d=>72412399,c=>7,h=>156,b=>2,g=>1487,f=>3} 160700efec50041acf059c 160700efec50041acf059c 160700efec50041acf059c 160700efec50041acf059c - {e=>6,a=>3,d=>227300670,c=>1,h=>201,b=>3,g=>4275,f=>1} 1b01003e558c0d0eb310c9 1b01003e558c0d0eb310c9 1b01003e558c0d0eb310c9 1b01003e558c0d0eb310c9 - {e=>3,a=>7,d=>180879568,c=>1,h=>224,b=>5,g=>7892,f=>3} 2f0100d000c80a1bd41ee0 2f0100d000c80a1bd41ee0 2f0100d000c80a1bd41ee0 2f0100d000c80a1bd41ee0 - {e=>3,a=>0,d=>137129408,c=>6,h=>116,b=>2,g=>269,f=>0} 100600c06d2c08030d0174 100600c06d2c08030d0174 100600c06d2c08030d0174 100600c06d2c08030d0174 - {e=>1,a=>3,d=>206927027,c=>2,h=>226,b=>7,g=>3383,f=>2} 3b0200b374550c11370de2 3b0200b374550c11370de2 3b0200b374550c11370de2 3b0200b374550c11370de2 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; }; - {a=>5,b=>0} 0500 0500 0500 0500 - {a=>53,b=>0} 3500 3500 3500 3500 - {a=>83,b=>5} 5305 5305 5305 5305 - {a=>4,b=>3} 0403 0403 0403 0403 - {a=>-108,b=>1} 9401 9401 9401 9401 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-89,b=>5} a725 a725 a725 a725 - {c=>3,a=>-94,b=>1} a219 a219 a219 a219 - {c=>2,a=>41,b=>1} 2911 2911 2911 2911 - {c=>0,a=>-104,b=>5} 9805 9805 9805 9805 - {c=>4,a=>123,b=>7} 7b27 7b27 7b27 7b27 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>1,a=>26,b=>2,d=>6} 1a0a0600 1a0a0600 1a0a0600 1a0a0600 - {c=>0,a=>41,b=>3,d=>7} 29030700 29030700 29030700 29030700 - {c=>0,a=>-60,b=>7,d=>5} c4070500 c4070500 c4070500 c4070500 - {c=>4,a=>21,b=>5,d=>1} 15250100 15250100 15250100 15250100 - {c=>1,a=>-57,b=>3,d=>7} c70b0700 c70b0700 c70b0700 c70b0700 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>251650091,c=>3,a=>18,b=>2,d=>6} 121a06002be0ff0e 121a06002be0ff0e 121a06002be0ff0e 121a06002be0ff0e - {e=>184337798,c=>4,a=>67,b=>1,d=>5} 4321050086c5fc0a 4321050086c5fc0a 4321050086c5fc0a 4321050086c5fc0a - {e=>18454609,c=>4,a=>-22,b=>2,d=>3} ea22030051981901 ea22030051981901 ea22030051981901 ea22030051981901 - {e=>172433341,c=>6,a=>76,b=>6,d=>7} 4c360700bd1f470a 4c360700bd1f470a 4c360700bd1f470a 4c360700bd1f470a - {e=>134101335,c=>2,a=>103,b=>0,d=>4} 671004005739fe07 671004005739fe07 671004005739fe07 671004005739fe07 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>200236336,c=>5,a=>-24,b=>2,d=>3,f=>1} e82a0300305def0b01 e82a0300305def0b01 e82a0300305def0b01 e82a0300305def0b01 - {e=>16740769,c=>4,a=>-26,b=>0,d=>1,f=>3} e6200100a171ff0003 e6200100a171ff0003 e6200100a171ff0003 e6200100a171ff0003 - {e=>6071845,c=>4,a=>121,b=>4,d=>1,f=>2} 7924010025a65c0002 7924010025a65c0002 7924010025a65c0002 7924010025a65c0002 - {e=>24355757,c=>3,a=>-75,b=>5,d=>2,f=>2} b51d0200ada3730102 b51d0200ada3730102 b51d0200ada3730102 b51d0200ada3730102 - {e=>167185341,c=>2,a=>21,b=>6,d=>4,f=>4} 15160400bd0bf70904 15160400bd0bf70904 15160400bd0bf70904 15160400bd0bf70904 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>98259173,c=>2,a=>-44,g=>2,b=>6,d=>2,f=>2} d4160200e550db0512 d4160200e550db0512 d4160200e550db0512 d4160200e550db0512 - {e=>101458287,c=>3,a=>107,g=>0,b=>2,d=>7,f=>2} 6b1a07006f210c0602 6b1a07006f210c0602 6b1a07006f210c0602 6b1a07006f210c0602 - {e=>73372275,c=>5,a=>-94,g=>0,b=>1,d=>7,f=>1} a229070073925f0401 a229070073925f0401 a229070073925f0401 a229070073925f0401 - {e=>168006158,c=>5,a=>-34,g=>0,b=>0,d=>0,f=>5} de2800000e92030a05 de2800000e92030a05 de2800000e92030a05 de2800000e92030a05 - {e=>251692646,c=>0,a=>58,g=>1,b=>7,d=>2,f=>6} 3a0702006686000f0e 3a0702006686000f0e 3a0702006686000f0e 3a0702006686000f0e = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>72582175,a=>66,d=>0,c=>0,h=>6020,b=>1,g=>0,f=>1} 420100001f845304018417 420100001f845304018417 420100001f845304018417 420100001f845304018417 - {e=>184039552,a=>30,d=>0,c=>3,h=>2419,b=>7,g=>2,f=>0} 1e1f00008038f80a107309 1e1f00008038f80a107309 1e1f00008038f80a107309 1e1f00008038f80a107309 - {e=>80164592,a=>-49,d=>3,c=>6,h=>7825,b=>5,g=>0,f=>7} cf350300f036c70407911e cf350300f036c70407911e cf350300f036c70407911e cf350300f036c70407911e - {e=>159880110,a=>-107,d=>6,c=>0,h=>4520,b=>3,g=>1,f=>4} 95030600ae9387090ca811 95030600ae9387090ca811 95030600ae9387090ca811 95030600ae9387090ca811 - {e=>237506163,a=>-31,d=>6,c=>0,h=>1061,b=>7,g=>3,f=>6} e1070600730e280e1e2504 e1070600730e280e1e2504 e1070600730e280e1e2504 e1070600730e280e1e2504 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>75173975,a=>0,d=>7,c=>5,h=>219,b=>2,g=>0,f=>2,i=>75} 002a070057107b0402db004b 002a070057107b0402db004b 002a070057107b0402db004b 002a070057107b0402db004b - {e=>14359521,a=>-73,d=>7,c=>3,h=>7081,b=>3,g=>1,f=>4,i=>127} b71b0700e11bdb000ca91b7f b71b0700e11bdb000ca91b7f b71b0700e11bdb000ca91b7f b71b0700e11bdb000ca91b7f - {e=>93479715,a=>-14,d=>2,c=>4,h=>5837,b=>2,g=>0,f=>5,i=>120} f22202002363920505cd1678 f22202002363920505cd1678 f22202002363920505cd1678 f22202002363920505cd1678 - {e=>240985188,a=>123,d=>3,c=>4,h=>1817,b=>6,g=>0,f=>0,i=>75} 7b26030064245d0e0019074b 7b26030064245d0e0019074b 7b26030064245d0e0019074b 7b26030064245d0e0019074b - {e=>31234999,a=>99,d=>6,c=>3,h=>4938,b=>0,g=>3,f=>3,i=>200} 63180600b79bdc011b4a13c8 63180600b79bdc011b4a13c8 63180600b79bdc011b4a13c8 63180600b79bdc011b4a13c8 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; }; - {a=>-20,b=>2} ecff02 ecff02 ecff02 ecff02 - {a=>51,b=>0} 330000 330000 330000 330000 - {a=>-61,b=>7} c3ff07 c3ff07 c3ff07 c3ff07 - {a=>109,b=>2} 6d0002 6d0002 6d0002 6d0002 - {a=>3,b=>5} 030005 030005 030005 030005 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>91,b=>0} 5b0008 5b0008 5b0008 5b0008 - {c=>6,a=>40,b=>1} 280031 280031 280031 280031 - {c=>3,a=>73,b=>7} 49001f 49001f 49001f 49001f - {c=>2,a=>-70,b=>0} baff10 baff10 baff10 baff10 - {c=>3,a=>-86,b=>2} aaff1a aaff1a aaff1a aaff1a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>7,a=>-16,b=>2,d=>0} f0ff3a0000 f0ff3a0000 f0ff3a0000 f0ff3a0000 - {c=>2,a=>120,b=>3,d=>3} 7800130300 7800130300 7800130300 7800130300 - {c=>1,a=>109,b=>6,d=>6} 6d000e0600 6d000e0600 6d000e0600 6d000e0600 - {c=>2,a=>109,b=>7,d=>5} 6d00170500 6d00170500 6d00170500 6d00170500 - {c=>7,a=>35,b=>6,d=>4} 23003e0400 23003e0400 23003e0400 23003e0400 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>242573218,c=>0,a=>-82,b=>5,d=>3} aeff050300a25f750e aeff050300a25f750e aeff050300a25f750e aeff050300a25f750e - {e=>30225390,c=>1,a=>-90,b=>1,d=>0} a6ff090000ee33cd01 a6ff090000ee33cd01 a6ff090000ee33cd01 a6ff090000ee33cd01 - {e=>42673361,c=>7,a=>2,b=>7,d=>4} 02003f0400d1248b02 02003f0400d1248b02 02003f0400d1248b02 02003f0400d1248b02 - {e=>177618799,c=>1,a=>-74,b=>4,d=>0} b6ff0c00006f3f960a b6ff0c00006f3f960a b6ff0c00006f3f960a b6ff0c00006f3f960a - {e=>162146214,c=>1,a=>9,b=>5,d=>2} 09000d0200a627aa09 09000d0200a627aa09 09000d0200a627aa09 09000d0200a627aa09 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>51386433,c=>7,a=>-38,b=>4,d=>2,f=>2} daff3c02004118100302 daff3c02004118100302 daff3c02004118100302 daff3c02004118100302 - {e=>119132246,c=>3,a=>-125,b=>6,d=>1,f=>0} 83ff1e010056d0190700 83ff1e010056d0190700 83ff1e010056d0190700 83ff1e010056d0190700 - {e=>28309628,c=>6,a=>-101,b=>5,d=>5,f=>0} 9bff3505007cf8af0100 9bff3505007cf8af0100 9bff3505007cf8af0100 9bff3505007cf8af0100 - {e=>151543114,c=>3,a=>3,b=>2,d=>7,f=>5} 03001a07004a5d080905 03001a07004a5d080905 03001a07004a5d080905 03001a07004a5d080905 - {e=>213132804,c=>5,a=>-95,b=>4,d=>0,f=>0} a1ff2c00000426b40c00 a1ff2c00000426b40c00 a1ff2c00000426b40c00 a1ff2c00000426b40c00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>142590409,c=>6,a=>-41,g=>0,b=>6,d=>3,f=>7} d7ff360300c9c17f0807 d7ff360300c9c17f0807 d7ff360300c9c17f0807 d7ff360300c9c17f0807 - {e=>97470275,c=>4,a=>81,g=>1,b=>6,d=>6,f=>3} 51002606004347cf050b 51002606004347cf050b 51002606004347cf050b 51002606004347cf050b - {e=>267791921,c=>1,a=>34,g=>1,b=>7,d=>2,f=>1} 22000f0200312ef60f09 22000f0200312ef60f09 22000f0200312ef60f09 22000f0200312ef60f09 - {e=>41800024,c=>3,a=>-80,g=>2,b=>0,d=>0,f=>1} b0ff18000058d17d0211 b0ff18000058d17d0211 b0ff18000058d17d0211 b0ff18000058d17d0211 - {e=>258096646,c=>0,a=>-31,g=>2,b=>3,d=>0,f=>3} e1ff030000063e620f13 e1ff030000063e620f13 e1ff030000063e620f13 e1ff030000063e620f13 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>122313407,a=>19,d=>3,c=>0,h=>650,b=>1,g=>1,f=>3} 1300010300bf5a4a070b8a02 1300010300bf5a4a070b8a02 1300010300bf5a4a070b8a02 1300010300bf5a4a070b8a02 - {e=>94490750,a=>35,d=>1,c=>1,h=>5999,b=>4,g=>1,f=>0} 23000c01007ed0a105086f17 23000c01007ed0a105086f17 23000c01007ed0a105086f17 23000c01007ed0a105086f17 - {e=>76168925,a=>-99,d=>0,c=>3,h=>6309,b=>6,g=>0,f=>6} 9dff1e0000dd3e8a0406a518 9dff1e0000dd3e8a0406a518 9dff1e0000dd3e8a0406a518 9dff1e0000dd3e8a0406a518 - {e=>69639528,a=>-114,d=>1,c=>7,h=>2240,b=>2,g=>1,f=>7} 8eff3a0100689d26040fc008 8eff3a0100689d26040fc008 8eff3a0100689d26040fc008 8eff3a0100689d26040fc008 - {e=>138012526,a=>109,d=>3,c=>5,h=>7241,b=>3,g=>2,f=>0} 6d002b03006ee7390810491c 6d002b03006ee7390810491c 6d002b03006ee7390810491c 6d002b03006ee7390810491c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>213997424,a=>12,d=>4,c=>5,h=>6891,b=>4,g=>0,f=>5,i=>155} 0c002c04007057c10c05eb1a9b 0c002c04007057c10c05eb1a9b 0c002c04007057c10c05eb1a9b 0c002c04007057c10c05eb1a9b - {e=>80148154,a=>4,d=>3,c=>3,h=>5605,b=>4,g=>2,f=>7,i=>187} 04001c0300baf6c60417e515bb 04001c0300baf6c60417e515bb 04001c0300baf6c60417e515bb 04001c0300baf6c60417e515bb - {e=>17679511,a=>103,d=>4,c=>7,h=>793,b=>4,g=>1,f=>5,i=>154} 67003c040097c40d010d19039a 67003c040097c40d010d19039a 67003c040097c40d010d19039a 67003c040097c40d010d19039a - {e=>234963446,a=>-109,d=>7,c=>4,h=>4806,b=>2,g=>2,f=>0,i=>153} 93ff220700f641010e10c61299 93ff220700f641010e10c61299 93ff220700f641010e10c61299 93ff220700f641010e10c61299 - {e=>233686042,a=>26,d=>5,c=>3,h=>6938,b=>4,g=>1,f=>3,i=>229} 1a001c05001ac4ed0d0b1a1be5 1a001c05001ac4ed0d0b1a1be5 1a001c05001ac4ed0d0b1a1be5 1a001c05001ac4ed0d0b1a1be5 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; }; - {a=>-76,b=>0} b4ffffff00 b4ffffff00 b4ffffff00 b4ffffff00 - {a=>-65,b=>4} bfffffff04 bfffffff04 bfffffff04 bfffffff04 - {a=>13,b=>3} 0d00000003 0d00000003 0d00000003 0d00000003 - {a=>79,b=>5} 4f00000005 4f00000005 4f00000005 4f00000005 - {a=>-81,b=>4} afffffff04 afffffff04 afffffff04 afffffff04 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>84,b=>1} 5400000019 5400000019 5400000019 5400000019 - {c=>1,a=>127,b=>1} 7f00000009 7f00000009 7f00000009 7f00000009 - {c=>5,a=>-114,b=>0} 8effffff28 8effffff28 8effffff28 8effffff28 - {c=>3,a=>108,b=>1} 6c00000019 6c00000019 6c00000019 6c00000019 - {c=>7,a=>9,b=>1} 0900000039 0900000039 0900000039 0900000039 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>-62,b=>1,d=>4} c2ffffff310400 c2ffffff310400 c2ffffff310400 c2ffffff310400 - {c=>7,a=>74,b=>5,d=>0} 4a0000003d0000 4a0000003d0000 4a0000003d0000 4a0000003d0000 - {c=>3,a=>-122,b=>2,d=>7} 86ffffff1a0700 86ffffff1a0700 86ffffff1a0700 86ffffff1a0700 - {c=>3,a=>-73,b=>7,d=>2} b7ffffff1f0200 b7ffffff1f0200 b7ffffff1f0200 b7ffffff1f0200 - {c=>1,a=>13,b=>5,d=>2} 0d0000000d0200 0d0000000d0200 0d0000000d0200 0d0000000d0200 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>130106456,c=>4,a=>127,b=>7,d=>3} 7f0000002703005844c107 7f0000002703005844c107 7f0000002703005844c107 7f0000002703005844c107 - {e=>228064205,c=>5,a=>28,b=>5,d=>3} 1c0000002d0300cdfb970d 1c0000002d0300cdfb970d 1c0000002d0300cdfb970d 1c0000002d0300cdfb970d - {e=>217906279,c=>1,a=>99,b=>0,d=>7} 6300000008070067fcfc0c 6300000008070067fcfc0c 6300000008070067fcfc0c 6300000008070067fcfc0c - {e=>51712296,c=>5,a=>-8,b=>2,d=>6} f8ffffff2a060028111503 f8ffffff2a060028111503 f8ffffff2a060028111503 f8ffffff2a060028111503 - {e=>211735696,c=>6,a=>78,b=>1,d=>0} 4e00000031000090d49e0c 4e00000031000090d49e0c 4e00000031000090d49e0c 4e00000031000090d49e0c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>242564914,c=>0,a=>6,b=>0,d=>4,f=>4} 06000000000400323f750e04 06000000000400323f750e04 06000000000400323f750e04 06000000000400323f750e04 - {e=>142230259,c=>5,a=>-69,b=>3,d=>4,f=>0} bbffffff2b0400f3427a0800 bbffffff2b0400f3427a0800 bbffffff2b0400f3427a0800 bbffffff2b0400f3427a0800 - {e=>40226599,c=>3,a=>-72,b=>3,d=>0,f=>0} b8ffffff1b000027cf650200 b8ffffff1b000027cf650200 b8ffffff1b000027cf650200 b8ffffff1b000027cf650200 - {e=>4604876,c=>0,a=>18,b=>5,d=>2,f=>5} 12000000050200cc43460005 12000000050200cc43460005 12000000050200cc43460005 12000000050200cc43460005 - {e=>209840252,c=>0,a=>-52,b=>3,d=>3,f=>2} ccffffff0303007ce8810c02 ccffffff0303007ce8810c02 ccffffff0303007ce8810c02 ccffffff0303007ce8810c02 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>13259097,c=>3,a=>-63,g=>1,b=>5,d=>7,f=>3} c1ffffff1d07005951ca000b c1ffffff1d07005951ca000b c1ffffff1d07005951ca000b c1ffffff1d07005951ca000b - {e=>156908516,c=>4,a=>36,g=>0,b=>6,d=>0,f=>6} 24000000260000e43b5a0906 24000000260000e43b5a0906 24000000260000e43b5a0906 24000000260000e43b5a0906 - {e=>59405293,c=>0,a=>117,g=>2,b=>5,d=>7,f=>7} 75000000050700ed738a0317 75000000050700ed738a0317 75000000050700ed738a0317 75000000050700ed738a0317 - {e=>247527189,c=>5,a=>66,g=>2,b=>2,d=>2,f=>1} 420000002a020015f7c00e11 420000002a020015f7c00e11 420000002a020015f7c00e11 420000002a020015f7c00e11 - {e=>80174753,c=>2,a=>-35,g=>1,b=>2,d=>0,f=>2} ddffffff120000a15ec7040a ddffffff120000a15ec7040a ddffffff120000a15ec7040a ddffffff120000a15ec7040a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>79855944,a=>-79,d=>6,c=>0,h=>1469,b=>5,g=>1,f=>0} b1ffffff0506004881c20408bd05 b1ffffff0506004881c20408bd05 b1ffffff0506004881c20408bd05 b1ffffff0506004881c20408bd05 - {e=>55286286,a=>-110,d=>5,c=>5,h=>6486,b=>5,g=>1,f=>3} 92ffffff2d05000e9a4b030b5619 92ffffff2d05000e9a4b030b5619 92ffffff2d05000e9a4b030b5619 92ffffff2d05000e9a4b030b5619 - {e=>230194727,a=>-49,d=>2,c=>2,h=>6812,b=>6,g=>1,f=>4} cfffffff160200277eb80d0c9c1a cfffffff160200277eb80d0c9c1a cfffffff160200277eb80d0c9c1a cfffffff160200277eb80d0c9c1a - {e=>191802023,a=>61,d=>7,c=>6,h=>7935,b=>4,g=>1,f=>2} 3d000000340700a7aa6e0b0aff1e 3d000000340700a7aa6e0b0aff1e 3d000000340700a7aa6e0b0aff1e 3d000000340700a7aa6e0b0aff1e - {e=>31737331,a=>18,d=>6,c=>6,h=>5531,b=>3,g=>2,f=>2} 12000000330600f345e401129b15 12000000330600f345e401129b15 12000000330600f345e401129b15 12000000330600f345e401129b15 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>257753255,a=>78,d=>5,c=>1,h=>4307,b=>5,g=>1,f=>3,i=>23} 4e0000000d0500a7005d0f0bd31017 4e0000000d0500a7005d0f0bd31017 4e0000000d0500a7005d0f0bd31017 4e0000000d0500a7005d0f0bd31017 - {e=>154752796,a=>-128,d=>3,c=>3,h=>1857,b=>7,g=>2,f=>4,i=>149} 80ffffff1f03001c57390914410795 80ffffff1f03001c57390914410795 80ffffff1f03001c57390914410795 80ffffff1f03001c57390914410795 - {e=>48153402,a=>-86,d=>4,c=>5,h=>2443,b=>5,g=>1,f=>3,i=>106} aaffffff2d04003ac3de020b8b096a aaffffff2d04003ac3de020b8b096a aaffffff2d04003ac3de020b8b096a aaffffff2d04003ac3de020b8b096a - {e=>149056525,a=>-9,d=>6,c=>2,h=>4899,b=>0,g=>1,f=>2,i=>164} f7ffffff1006000d6ce2080a2313a4 f7ffffff1006000d6ce2080a2313a4 f7ffffff1006000d6ce2080a2313a4 f7ffffff1006000d6ce2080a2313a4 - {e=>211134956,a=>118,d=>5,c=>1,h=>1779,b=>3,g=>1,f=>5,i=>234} 760000000b0500eca9950c0df306ea 760000000b0500eca9950c0df306ea 760000000b0500eca9950c0df306ea 760000000b0500eca9950c0df306ea = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; }; - {a=>83,b=>3} 5300000003 5300000003 5300000003 5300000003 - {a=>118,b=>5} 7600000005 7600000005 7600000005 7600000005 - {a=>102,b=>4} 6600000004 6600000004 6600000004 6600000004 - {a=>-46,b=>3} d2ffffff03 d2ffffff03 d2ffffff03 d2ffffff03 - {a=>-65,b=>5} bfffffff05 bfffffff05 bfffffff05 bfffffff05 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>101,b=>1} 6500000031 6500000031 6500000031 6500000031 - {c=>5,a=>32,b=>7} 200000002f 200000002f 200000002f 200000002f - {c=>7,a=>-74,b=>2} b6ffffff3a b6ffffff3a b6ffffff3a b6ffffff3a - {c=>4,a=>-84,b=>1} acffffff21 acffffff21 acffffff21 acffffff21 - {c=>3,a=>-100,b=>4} 9cffffff1c 9cffffff1c 9cffffff1c 9cffffff1c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-18,b=>2,d=>4} eeffffff1a0400 eeffffff1a0400 eeffffff1a0400 eeffffff1a0400 - {c=>0,a=>-123,b=>2,d=>3} 85ffffff020300 85ffffff020300 85ffffff020300 85ffffff020300 - {c=>5,a=>85,b=>2,d=>3} 550000002a0300 550000002a0300 550000002a0300 550000002a0300 - {c=>5,a=>-113,b=>7,d=>6} 8fffffff2f0600 8fffffff2f0600 8fffffff2f0600 8fffffff2f0600 - {c=>3,a=>66,b=>0,d=>6} 42000000180600 42000000180600 42000000180600 42000000180600 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>160937402,c=>7,a=>27,b=>7,d=>5} 1b0000003f0500bab59709 1b0000003f0500bab59709 1b0000003f0500bab59709 1b0000003f0500bab59709 - {e=>20048177,c=>3,a=>28,b=>7,d=>6} 1c0000001f060031e93101 1c0000001f060031e93101 1c0000001f060031e93101 1c0000001f060031e93101 - {e=>246627849,c=>0,a=>-81,b=>4,d=>3} afffffff040300093eb30e afffffff040300093eb30e afffffff040300093eb30e afffffff040300093eb30e - {e=>200039194,c=>5,a=>112,b=>2,d=>1} 700000002a01001a5bec0b 700000002a01001a5bec0b 700000002a01001a5bec0b 700000002a01001a5bec0b - {e=>250650060,c=>0,a=>124,b=>1,d=>6} 7c000000010600cc9df00e 7c000000010600cc9df00e 7c000000010600cc9df00e 7c000000010600cc9df00e = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>164019807,c=>0,a=>-107,b=>4,d=>4,f=>4} 95ffffff0404005fbec60904 95ffffff0404005fbec60904 95ffffff0404005fbec60904 95ffffff0404005fbec60904 - {e=>148347054,c=>7,a=>122,b=>5,d=>4,f=>4} 7a0000003d0400ae98d70804 7a0000003d0400ae98d70804 7a0000003d0400ae98d70804 7a0000003d0400ae98d70804 - {e=>201328566,c=>2,a=>-38,b=>2,d=>0,f=>5} daffffff120000b607000c05 daffffff120000b607000c05 daffffff120000b607000c05 daffffff120000b607000c05 - {e=>17793067,c=>3,a=>62,b=>5,d=>1,f=>6} 3e0000001d01002b800f0106 3e0000001d01002b800f0106 3e0000001d01002b800f0106 3e0000001d01002b800f0106 - {e=>265362806,c=>3,a=>-81,b=>7,d=>0,f=>0} afffffff1f0000761dd10f00 afffffff1f0000761dd10f00 afffffff1f0000761dd10f00 afffffff1f0000761dd10f00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>119342936,c=>2,a=>-110,g=>0,b=>2,d=>6,f=>7} 92ffffff12060058071d0707 92ffffff12060058071d0707 92ffffff12060058071d0707 92ffffff12060058071d0707 - {e=>62059604,c=>7,a=>-92,g=>3,b=>4,d=>4,f=>7} a4ffffff3c040054f4b2031f a4ffffff3c040054f4b2031f a4ffffff3c040054f4b2031f a4ffffff3c040054f4b2031f - {e=>174545826,c=>6,a=>-60,g=>3,b=>2,d=>3,f=>1} c4ffffff320300a25b670a19 c4ffffff320300a25b670a19 c4ffffff320300a25b670a19 c4ffffff320300a25b670a19 - {e=>133811322,c=>5,a=>106,g=>2,b=>2,d=>0,f=>4} 6a0000002a00007accf90714 6a0000002a00007accf90714 6a0000002a00007accf90714 6a0000002a00007accf90714 - {e=>181399152,c=>6,a=>71,g=>3,b=>4,d=>7,f=>7} 4700000034070070eecf0a1f 4700000034070070eecf0a1f 4700000034070070eecf0a1f 4700000034070070eecf0a1f = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>178239616,a=>-56,d=>2,c=>0,h=>947,b=>6,g=>2,f=>5} c8ffffff06020080b89f0a15b303 c8ffffff06020080b89f0a15b303 c8ffffff06020080b89f0a15b303 c8ffffff06020080b89f0a15b303 - {e=>92807764,a=>66,d=>7,c=>0,h=>2391,b=>5,g=>2,f=>3} 4200000005070054228805135709 4200000005070054228805135709 4200000005070054228805135709 4200000005070054228805135709 - {e=>217147655,a=>26,d=>5,c=>6,h=>7725,b=>4,g=>1,f=>2} 1a0000003405000769f10c0a2d1e 1a0000003405000769f10c0a2d1e 1a0000003405000769f10c0a2d1e 1a0000003405000769f10c0a2d1e - {e=>94483661,a=>-122,d=>7,c=>6,h=>3773,b=>6,g=>2,f=>7} 86ffffff360700cdb4a10517bd0e 86ffffff360700cdb4a10517bd0e 86ffffff360700cdb4a10517bd0e 86ffffff360700cdb4a10517bd0e - {e=>255972856,a=>-65,d=>4,c=>6,h=>4167,b=>3,g=>2,f=>7} bfffffff330400f8d5410f174710 bfffffff330400f8d5410f174710 bfffffff330400f8d5410f174710 bfffffff330400f8d5410f174710 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>236368736,a=>50,d=>0,c=>0,h=>550,b=>0,g=>3,f=>2,i=>115} 3200000000000060b3160e1a260273 3200000000000060b3160e1a260273 3200000000000060b3160e1a260273 3200000000000060b3160e1a260273 - {e=>88524857,a=>-90,d=>2,c=>1,h=>306,b=>4,g=>3,f=>5,i=>249} a6ffffff0c020039c846051d3201f9 a6ffffff0c020039c846051d3201f9 a6ffffff0c020039c846051d3201f9 a6ffffff0c020039c846051d3201f9 - {e=>192500988,a=>-84,d=>1,c=>2,h=>5667,b=>5,g=>0,f=>5,i=>178} acffffff150100fc54790b052316b2 acffffff150100fc54790b052316b2 acffffff150100fc54790b052316b2 acffffff150100fc54790b052316b2 - {e=>102319901,a=>48,d=>6,c=>5,h=>4809,b=>5,g=>0,f=>5,i=>243} 300000002d06001d47190605c912f3 300000002d06001d47190605c912f3 300000002d06001d47190605c912f3 300000002d06001d47190605c912f3 - {e=>105125875,a=>-48,d=>6,c=>2,h=>3701,b=>4,g=>0,f=>6,i=>134} d0ffffff140600f317440606750e86 d0ffffff140600f317440606750e86 d0ffffff140600f317440606750e86 d0ffffff140600f317440606750e86 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; }; - {a=>7} 07 07 07 07 - {a=>4} 04 04 04 04 - {a=>4} 04 04 04 04 - {a=>7} 07 07 07 07 - {a=>1} 01 01 01 01 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; }; - {a=>6,b=>7} 3e 3e 3e 3e - {a=>6,b=>0} 06 06 06 06 - {a=>1,b=>6} 31 31 31 31 - {a=>3,b=>4} 23 23 23 23 - {a=>5,b=>5} 2d 2d 2d 2d = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>6,a=>3,b=>3} 1b000600 1b000600 1b000600 1b000600 - {c=>2,a=>6,b=>1} 0e000200 0e000200 0e000200 0e000200 - {c=>6,a=>4,b=>1} 0c000600 0c000600 0c000600 0c000600 - {c=>2,a=>1,b=>0} 01000200 01000200 01000200 01000200 - {c=>7,a=>4,b=>7} 3c000700 3c000700 3c000700 3c000700 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>1,a=>4,b=>4,d=>133269742} 24000100ee88f107 24000100ee88f107 24000100ee88f107 24000100ee88f107 - {c=>3,a=>7,b=>1,d=>257081784} 0f000300b8c1520f 0f000300b8c1520f 0f000300b8c1520f 0f000300b8c1520f - {c=>0,a=>7,b=>6,d=>258403104} 3700000020eb660f 3700000020eb660f 3700000020eb660f 3700000020eb660f - {c=>5,a=>7,b=>0,d=>128978242} 07000500420db007 07000500420db007 07000500420db007 07000500420db007 - {c=>5,a=>0,b=>4,d=>243031951} 200005008f5f7c0e 200005008f5f7c0e 200005008f5f7c0e 200005008f5f7c0e = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>0,c=>2,a=>6,b=>7,d=>33702724} 3e000200444302020000 3e000200444302020000 3e000200444302020000 3e000200444302020000 - {e=>2,c=>5,a=>5,b=>2,d=>6095297} 15000500c1015d000200 15000500c1015d000200 15000500c1015d000200 15000500c1015d000200 - {e=>4,c=>4,a=>4,b=>6,d=>213519559} 34000400c70cba0c0400 34000400c70cba0c0400 34000400c70cba0c0400 34000400c70cba0c0400 - {e=>5,c=>2,a=>7,b=>5,d=>18462540} 2f0002004cb719010500 2f0002004cb719010500 2f0002004cb719010500 2f0002004cb719010500 - {e=>1,c=>6,a=>1,b=>7,d=>89059346} 3900060012f04e050100 3900060012f04e050100 3900060012f04e050100 3900060012f04e050100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>5,c=>1,a=>7,b=>1,d=>136757511,f=>1} 0f00010007c126080d00 0f00010007c126080d00 0f00010007c126080d00 0f00010007c126080d00 - {e=>0,c=>4,a=>7,b=>4,d=>125709169,f=>0} 27000400712b7e070000 27000400712b7e070000 27000400712b7e070000 27000400712b7e070000 - {e=>4,c=>6,a=>4,b=>0,d=>58396282,f=>2} 040006007a0e7b031400 040006007a0e7b031400 040006007a0e7b031400 040006007a0e7b031400 - {e=>0,c=>7,a=>2,b=>1,d=>156900784,f=>0} 0a000700b01d5a090000 0a000700b01d5a090000 0a000700b01d5a090000 0a000700b01d5a090000 - {e=>6,c=>5,a=>4,b=>0,d=>153791533,f=>0} 040005002dac2a090600 040005002dac2a090600 040005002dac2a090600 040005002dac2a090600 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>4,c=>6,a=>0,g=>3159,b=>3,d=>201444973,f=>3} 180006006dce010c1c00570c 180006006dce010c1c00570c 180006006dce010c1c00570c 180006006dce010c1c00570c - {e=>3,c=>5,a=>2,g=>1311,b=>0,d=>216985875,f=>0} 0200050013f1ee0c03001f05 0200050013f1ee0c03001f05 0200050013f1ee0c03001f05 0200050013f1ee0c03001f05 - {e=>4,c=>1,a=>4,g=>4089,b=>3,d=>90392677,f=>2} 1c000100654863051400f90f 1c000100654863051400f90f 1c000100654863051400f90f 1c000100654863051400f90f - {e=>4,c=>6,a=>2,g=>6577,b=>0,d=>32952048,f=>2} 02000600f0cef6011400b119 02000600f0cef6011400b119 02000600f0cef6011400b119 02000600f0cef6011400b119 - {e=>6,c=>3,a=>2,g=>5134,b=>2,d=>70582675,f=>0} 120003009301350406000e14 120003009301350406000e14 120003009301350406000e14 120003009301350406000e14 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>4,a=>7,d=>66200696,c=>5,h=>31,b=>4,g=>6484,f=>1} 270005007824f2030c0054191f00 270005007824f2030c0054191f00 270005007824f2030c0054191f00 270005007824f2030c0054191f00 - {e=>3,a=>0,d=>142854848,c=>3,h=>30,b=>3,g=>2350,f=>3} 18000300c0ca83081b002e091e00 18000300c0ca83081b002e091e00 18000300c0ca83081b002e091e00 18000300c0ca83081b002e091e00 - {e=>0,a=>3,d=>178180283,c=>3,h=>162,b=>2,g=>1577,f=>2} 13000300bbd09e0a10002906a200 13000300bbd09e0a10002906a200 13000300bbd09e0a10002906a200 13000300bbd09e0a10002906a200 - {e=>7,a=>3,d=>71770977,c=>0,h=>159,b=>4,g=>2221,f=>2} 23000000612347041700ad089f00 23000000612347041700ad089f00 23000000612347041700ad089f00 23000000612347041700ad089f00 - {e=>3,a=>7,d=>209718566,c=>4,h=>184,b=>0,g=>4011,f=>3} 07000400260d800c1b00ab0fb800 07000400260d800c1b00ab0fb800 07000400260d800c1b00ab0fb800 07000400260d800c1b00ab0fb800 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; }; - {a=>-101,b=>3} 9b03 9b03 9b03 9b03 - {a=>-121,b=>0} 8700 8700 8700 8700 - {a=>49,b=>5} 3105 3105 3105 3105 - {a=>-18,b=>5} ee05 ee05 ee05 ee05 - {a=>-28,b=>7} e407 e407 e407 e407 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-95,b=>6} a12e a12e a12e a12e - {c=>3,a=>105,b=>5} 691d 691d 691d 691d - {c=>5,a=>-88,b=>7} a82f a82f a82f a82f - {c=>3,a=>-100,b=>0} 9c18 9c18 9c18 9c18 - {c=>0,a=>-15,b=>0} f100 f100 f100 f100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>1,a=>78,b=>7,d=>5} 4e0f0500 4e0f0500 4e0f0500 4e0f0500 - {c=>4,a=>18,b=>5,d=>2} 12250200 12250200 12250200 12250200 - {c=>7,a=>56,b=>5,d=>0} 383d0000 383d0000 383d0000 383d0000 - {c=>5,a=>-82,b=>5,d=>1} ae2d0100 ae2d0100 ae2d0100 ae2d0100 - {c=>7,a=>60,b=>6,d=>5} 3c3e0500 3c3e0500 3c3e0500 3c3e0500 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>221131133,c=>6,a=>105,b=>3,d=>0} 693300007d312e0d 693300007d312e0d 693300007d312e0d 693300007d312e0d - {e=>105130068,c=>7,a=>43,b=>7,d=>4} 2b3f040054284406 2b3f040054284406 2b3f040054284406 2b3f040054284406 - {e=>200295387,c=>7,a=>95,b=>0,d=>4} 5f380400db43f00b 5f380400db43f00b 5f380400db43f00b 5f380400db43f00b - {e=>204864432,c=>4,a=>121,b=>0,d=>5} 79200500b0fb350c 79200500b0fb350c 79200500b0fb350c 79200500b0fb350c - {e=>116121104,c=>3,a=>-77,b=>7,d=>7} b31f070010deeb06 b31f070010deeb06 b31f070010deeb06 b31f070010deeb06 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>172836301,c=>0,a=>32,b=>7,d=>6,f=>3} 20070600cd454d0a0300 20070600cd454d0a0300 20070600cd454d0a0300 20070600cd454d0a0300 - {e=>127428220,c=>5,a=>-44,b=>2,d=>7,f=>1} d42a07007c6698070100 d42a07007c6698070100 d42a07007c6698070100 d42a07007c6698070100 - {e=>422562,c=>0,a=>60,b=>7,d=>1,f=>2} 3c070100a27206000200 3c070100a27206000200 3c070100a27206000200 3c070100a27206000200 - {e=>96278787,c=>7,a=>3,b=>7,d=>2,f=>0} 033f02000319bd050000 033f02000319bd050000 033f02000319bd050000 033f02000319bd050000 - {e=>241856194,c=>3,a=>-107,b=>0,d=>6,f=>5} 95180600c26e6a0e0500 95180600c26e6a0e0500 95180600c26e6a0e0500 95180600c26e6a0e0500 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>239818291,c=>6,a=>50,g=>2,b=>1,d=>2,f=>7} 3231020033564b0e1700 3231020033564b0e1700 3231020033564b0e1700 3231020033564b0e1700 - {e=>27118579,c=>2,a=>-3,g=>0,b=>0,d=>4,f=>5} fd100400f3cb9d010500 fd100400f3cb9d010500 fd100400f3cb9d010500 fd100400f3cb9d010500 - {e=>134242001,c=>3,a=>59,g=>3,b=>5,d=>5,f=>6} 3b1d0500d15e00081e00 3b1d0500d15e00081e00 3b1d0500d15e00081e00 3b1d0500d15e00081e00 - {e=>65328260,c=>1,a=>-116,g=>1,b=>5,d=>4,f=>3} 8c0d040084d4e4030b00 8c0d040084d4e4030b00 8c0d040084d4e4030b00 8c0d040084d4e4030b00 - {e=>139743207,c=>3,a=>-41,g=>1,b=>3,d=>1,f=>6} d71b0100e74f54080e00 d71b0100e74f54080e00 d71b0100e74f54080e00 d71b0100e74f54080e00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>230124716,a=>16,d=>7,c=>1,h=>3908,b=>7,g=>2,f=>7} 100f0700ac6cb70d1700440f 100f0700ac6cb70d1700440f 100f0700ac6cb70d1700440f 100f0700ac6cb70d1700440f - {e=>124232976,a=>64,d=>4,c=>0,h=>5030,b=>2,g=>3,f=>4} 4002040010a567071c00a613 4002040010a567071c00a613 4002040010a567071c00a613 4002040010a567071c00a613 - {e=>239963925,a=>67,d=>1,c=>5,h=>5257,b=>4,g=>2,f=>4} 432c0100158f4d0e14008914 432c0100158f4d0e14008914 432c0100158f4d0e14008914 432c0100158f4d0e14008914 - {e=>119523408,a=>-65,d=>2,c=>5,h=>4247,b=>2,g=>2,f=>3} bf2a020050c81f0713009710 bf2a020050c81f0713009710 bf2a020050c81f0713009710 bf2a020050c81f0713009710 - {e=>9728961,a=>51,d=>5,c=>0,h=>2851,b=>7,g=>0,f=>4} 33070500c17394000400230b 33070500c17394000400230b 33070500c17394000400230b 33070500c17394000400230b = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>180027965,a=>92,d=>2,c=>4,h=>1057,b=>1,g=>1,f=>0,i=>60} 5c2102003d02bb0a080021043c00 5c2102003d02bb0a080021043c00 5c2102003d02bb0a080021043c00 5c2102003d02bb0a080021043c00 - {e=>231855491,a=>-124,d=>6,c=>4,h=>1682,b=>7,g=>0,f=>6,i=>222} 8427060083d5d10d06009206de00 8427060083d5d10d06009206de00 8427060083d5d10d06009206de00 8427060083d5d10d06009206de00 - {e=>14781907,a=>-124,d=>1,c=>0,h=>7235,b=>7,g=>0,f=>3,i=>179} 84070100d38de1000300431cb300 84070100d38de1000300431cb300 84070100d38de1000300431cb300 84070100d38de1000300431cb300 - {e=>268185659,a=>-127,d=>4,c=>0,h=>4094,b=>2,g=>3,f=>7,i=>166} 810204003b30fc0f1f00fe0fa600 810204003b30fc0f1f00fe0fa600 810204003b30fc0f1f00fe0fa600 810204003b30fc0f1f00fe0fa600 - {e=>102826413,a=>-10,d=>2,c=>6,h=>6758,b=>6,g=>2,f=>7,i=>80} f6360200ad0121061700661a5000 f6360200ad0121061700661a5000 f6360200ad0121061700661a5000 f6360200ad0121061700661a5000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; }; - {a=>-45,b=>6} d3ff0600 d3ff0600 d3ff0600 d3ff0600 - {a=>-32,b=>7} e0ff0700 e0ff0700 e0ff0700 e0ff0700 - {a=>43,b=>2} 2b000200 2b000200 2b000200 2b000200 - {a=>8,b=>3} 08000300 08000300 08000300 08000300 - {a=>-1,b=>1} ffff0100 ffff0100 ffff0100 ffff0100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>126,b=>7} 7e002f00 7e002f00 7e002f00 7e002f00 - {c=>4,a=>-38,b=>6} daff2600 daff2600 daff2600 daff2600 - {c=>3,a=>-19,b=>2} edff1a00 edff1a00 edff1a00 edff1a00 - {c=>0,a=>26,b=>4} 1a000400 1a000400 1a000400 1a000400 - {c=>4,a=>125,b=>4} 7d002400 7d002400 7d002400 7d002400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>66,b=>0,d=>6} 420020000600 420020000600 420020000600 420020000600 - {c=>3,a=>-65,b=>7,d=>5} bfff1f000500 bfff1f000500 bfff1f000500 bfff1f000500 - {c=>5,a=>42,b=>5,d=>4} 2a002d000400 2a002d000400 2a002d000400 2a002d000400 - {c=>1,a=>-96,b=>4,d=>5} a0ff0c000500 a0ff0c000500 a0ff0c000500 a0ff0c000500 - {c=>2,a=>-85,b=>0,d=>4} abff10000400 abff10000400 abff10000400 abff10000400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>144118602,c=>6,a=>-68,b=>2,d=>5} bcff320005004a139708 bcff320005004a139708 bcff320005004a139708 bcff320005004a139708 - {e=>194550170,c=>1,a=>-13,b=>2,d=>6} f3ff0a0006009a99980b f3ff0a0006009a99980b f3ff0a0006009a99980b f3ff0a0006009a99980b - {e=>80715514,c=>4,a=>100,b=>3,d=>0} 640023000000fa9ecf04 640023000000fa9ecf04 640023000000fa9ecf04 640023000000fa9ecf04 - {e=>265138084,c=>6,a=>37,b=>2,d=>0} 250032000000a4afcd0f 250032000000a4afcd0f 250032000000a4afcd0f 250032000000a4afcd0f - {e=>222887293,c=>6,a=>11,b=>1,d=>5} 0b00310005007dfd480d 0b00310005007dfd480d 0b00310005007dfd480d 0b00310005007dfd480d = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>18626280,c=>1,a=>-46,b=>5,d=>7,f=>5} d2ff0d000700e8361c010500 d2ff0d000700e8361c010500 d2ff0d000700e8361c010500 d2ff0d000700e8361c010500 - {e=>65331951,c=>5,a=>-123,b=>1,d=>4,f=>2} 85ff29000400efe2e4030200 85ff29000400efe2e4030200 85ff29000400efe2e4030200 85ff29000400efe2e4030200 - {e=>22199225,c=>6,a=>19,b=>2,d=>4,f=>0} 130032000400b9bb52010000 130032000400b9bb52010000 130032000400b9bb52010000 130032000400b9bb52010000 - {e=>9181650,c=>6,a=>56,b=>1,d=>0,f=>5} 380031000000d2198c000500 380031000000d2198c000500 380031000000d2198c000500 380031000000d2198c000500 - {e=>157034625,c=>6,a=>76,b=>0,d=>2,f=>5} 4c003000020081285c090500 4c003000020081285c090500 4c003000020081285c090500 4c003000020081285c090500 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>267203857,c=>2,a=>90,g=>1,b=>5,d=>0,f=>2} 5a00150000001135ed0f0a00 5a00150000001135ed0f0a00 5a00150000001135ed0f0a00 5a00150000001135ed0f0a00 - {e=>138564760,c=>2,a=>-49,g=>2,b=>4,d=>6,f=>3} cfff14000600985442081300 cfff14000600985442081300 cfff14000600985442081300 cfff14000600985442081300 - {e=>91970329,c=>6,a=>-122,g=>1,b=>1,d=>3,f=>0} 86ff31000300195b7b050800 86ff31000300195b7b050800 86ff31000300195b7b050800 86ff31000300195b7b050800 - {e=>102576163,c=>7,a=>39,g=>1,b=>0,d=>2,f=>6} 27003800020023301d060e00 27003800020023301d060e00 27003800020023301d060e00 27003800020023301d060e00 - {e=>263662536,c=>3,a=>-27,g=>1,b=>3,d=>4,f=>5} e5ff1b000400c82bb70f0d00 e5ff1b000400c82bb70f0d00 e5ff1b000400c82bb70f0d00 e5ff1b000400c82bb70f0d00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>194432513,a=>30,d=>2,c=>2,h=>1472,b=>2,g=>1,f=>3} 1e001200020001ce960b0b00c005 1e001200020001ce960b0b00c005 1e001200020001ce960b0b00c005 1e001200020001ce960b0b00c005 - {e=>90729129,a=>18,d=>7,c=>0,h=>7366,b=>1,g=>1,f=>4} 120001000700a96a68050c00c61c 120001000700a96a68050c00c61c 120001000700a96a68050c00c61c 120001000700a96a68050c00c61c - {e=>241644573,a=>75,d=>6,c=>6,h=>2932,b=>7,g=>3,f=>1} 4b00370006001d34670e1900740b 4b00370006001d34670e1900740b 4b00370006001d34670e1900740b 4b00370006001d34670e1900740b - {e=>176079331,a=>31,d=>2,c=>1,h=>4829,b=>6,g=>2,f=>2} 1f000e000200e3c17e0a1200dd12 1f000e000200e3c17e0a1200dd12 1f000e000200e3c17e0a1200dd12 1f000e000200e3c17e0a1200dd12 - {e=>239368188,a=>55,d=>5,c=>3,h=>1857,b=>6,g=>3,f=>7} 37001e000500fc77440e1f004107 37001e000500fc77440e1f004107 37001e000500fc77440e1f004107 37001e000500fc77440e1f004107 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>108438729,a=>58,d=>1,c=>1,h=>5562,b=>0,g=>0,f=>6,i=>192} 3a0008000100c9a476060600ba15c000 3a0008000100c9a476060600ba15c000 3a0008000100c9a476060600ba15c000 3a0008000100c9a476060600ba15c000 - {e=>5753109,a=>98,d=>6,c=>2,h=>3842,b=>0,g=>1,f=>4,i=>170} 62001000060015c957000c00020faa00 62001000060015c957000c00020faa00 62001000060015c957000c00020faa00 62001000060015c957000c00020faa00 - {e=>152483984,a=>118,d=>4,c=>6,h=>3538,b=>4,g=>1,f=>6,i=>229} 76003400040090b816090e00d20de500 76003400040090b816090e00d20de500 76003400040090b816090e00d20de500 76003400040090b816090e00d20de500 - {e=>54363077,a=>36,d=>6,c=>6,h=>7156,b=>2,g=>1,f=>3,i=>92} 240032000600c5833d030b00f41b5c00 240032000600c5833d030b00f41b5c00 240032000600c5833d030b00f41b5c00 240032000600c5833d030b00f41b5c00 - {e=>73602633,a=>-19,d=>3,c=>5,h=>1654,b=>6,g=>2,f=>6,i=>188} edff2e0003004916630416007606bc00 edff2e0003004916630416007606bc00 edff2e0003004916630416007606bc00 edff2e0003004916630416007606bc00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; }; - {a=>31,b=>7} 1f0000000700 1f0000000700 1f0000000700 1f0000000700 - {a=>70,b=>7} 460000000700 460000000700 460000000700 460000000700 - {a=>-101,b=>4} 9bffffff0400 9bffffff0400 9bffffff0400 9bffffff0400 - {a=>111,b=>2} 6f0000000200 6f0000000200 6f0000000200 6f0000000200 - {a=>-80,b=>3} b0ffffff0300 b0ffffff0300 b0ffffff0300 b0ffffff0300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>7,a=>76,b=>1} 4c0000003900 4c0000003900 4c0000003900 4c0000003900 - {c=>6,a=>52,b=>5} 340000003500 340000003500 340000003500 340000003500 - {c=>4,a=>-96,b=>4} a0ffffff2400 a0ffffff2400 a0ffffff2400 a0ffffff2400 - {c=>4,a=>16,b=>5} 100000002500 100000002500 100000002500 100000002500 - {c=>5,a=>-115,b=>3} 8dffffff2b00 8dffffff2b00 8dffffff2b00 8dffffff2b00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-95,b=>1,d=>3} a1ffffff19000300 a1ffffff19000300 a1ffffff19000300 a1ffffff19000300 - {c=>1,a=>-30,b=>2,d=>7} e2ffffff0a000700 e2ffffff0a000700 e2ffffff0a000700 e2ffffff0a000700 - {c=>3,a=>28,b=>7,d=>3} 1c0000001f000300 1c0000001f000300 1c0000001f000300 1c0000001f000300 - {c=>1,a=>34,b=>1,d=>3} 2200000009000300 2200000009000300 2200000009000300 2200000009000300 - {c=>5,a=>88,b=>6,d=>1} 580000002e000100 580000002e000100 580000002e000100 580000002e000100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>228389954,c=>6,a=>10,b=>1,d=>3} 0a0000003100030042f49c0d 0a0000003100030042f49c0d 0a0000003100030042f49c0d 0a0000003100030042f49c0d - {e=>26173929,c=>1,a=>46,b=>7,d=>3} 2e0000000f000300e9618f01 2e0000000f000300e9618f01 2e0000000f000300e9618f01 2e0000000f000300e9618f01 - {e=>31378561,c=>1,a=>-102,b=>0,d=>0} 9affffff0800000081ccde01 9affffff0800000081ccde01 9affffff0800000081ccde01 9affffff0800000081ccde01 - {e=>133881414,c=>3,a=>83,b=>6,d=>6} 530000001e00060046defa07 530000001e00060046defa07 530000001e00060046defa07 530000001e00060046defa07 - {e=>185498202,c=>4,a=>-46,b=>2,d=>4} d2ffffff220004005a7a0e0b d2ffffff220004005a7a0e0b d2ffffff220004005a7a0e0b d2ffffff220004005a7a0e0b = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>108248036,c=>1,a=>-113,b=>3,d=>5,f=>4} 8fffffff0b000500e4bb73060400 8fffffff0b000500e4bb73060400 8fffffff0b000500e4bb73060400 8fffffff0b000500e4bb73060400 - {e=>244754857,c=>2,a=>53,b=>1,d=>6,f=>7} 3500000011000600a9a9960e0700 3500000011000600a9a9960e0700 3500000011000600a9a9960e0700 3500000011000600a9a9960e0700 - {e=>82868130,c=>3,a=>-17,b=>3,d=>4,f=>1} efffffff1b000400a277f0040100 efffffff1b000400a277f0040100 efffffff1b000400a277f0040100 efffffff1b000400a277f0040100 - {e=>128771168,c=>5,a=>-97,b=>6,d=>5,f=>6} 9fffffff2e00050060e4ac070600 9fffffff2e00050060e4ac070600 9fffffff2e00050060e4ac070600 9fffffff2e00050060e4ac070600 - {e=>201646189,c=>5,a=>87,b=>0,d=>1,f=>3} 57000000280001006de0040c0300 57000000280001006de0040c0300 57000000280001006de0040c0300 57000000280001006de0040c0300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>52201699,c=>3,a=>-21,g=>2,b=>2,d=>3,f=>7} ebffffff1a000300e3881c031700 ebffffff1a000300e3881c031700 ebffffff1a000300e3881c031700 ebffffff1a000300e3881c031700 - {e=>156859917,c=>7,a=>28,g=>2,b=>4,d=>1,f=>7} 1c0000003c0001000d7e59091700 1c0000003c0001000d7e59091700 1c0000003c0001000d7e59091700 1c0000003c0001000d7e59091700 - {e=>73487576,c=>2,a=>44,g=>3,b=>5,d=>4,f=>1} 2c00000015000400d85461041900 2c00000015000400d85461041900 2c00000015000400d85461041900 2c00000015000400d85461041900 - {e=>172142530,c=>5,a=>101,g=>2,b=>7,d=>3,f=>5} 650000002f000300c2af420a1500 650000002f000300c2af420a1500 650000002f000300c2af420a1500 650000002f000300c2af420a1500 - {e=>150725544,c=>6,a=>71,g=>1,b=>6,d=>0,f=>3} 4700000036000000a8e3fb080b00 4700000036000000a8e3fb080b00 4700000036000000a8e3fb080b00 4700000036000000a8e3fb080b00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>165197259,a=>-34,d=>6,c=>6,h=>2543,b=>0,g=>1,f=>4} deffffff30000600cbb5d8090c00ef09 deffffff30000600cbb5d8090c00ef09 deffffff30000600cbb5d8090c00ef09 deffffff30000600cbb5d8090c00ef09 - {e=>66930837,a=>-1,d=>4,c=>3,h=>8014,b=>5,g=>2,f=>1} ffffffff1d0004009548fd0311004e1f ffffffff1d0004009548fd0311004e1f ffffffff1d0004009548fd0311004e1f ffffffff1d0004009548fd0311004e1f - {e=>133257048,a=>80,d=>2,c=>3,h=>7657,b=>4,g=>1,f=>2} 500000001c0002005857f1070a00e91d 500000001c0002005857f1070a00e91d 500000001c0002005857f1070a00e91d 500000001c0002005857f1070a00e91d - {e=>213734502,a=>-90,d=>4,c=>5,h=>5237,b=>1,g=>2,f=>0} a6ffffff290004006654bd0c10007514 a6ffffff290004006654bd0c10007514 a6ffffff290004006654bd0c10007514 a6ffffff290004006654bd0c10007514 - {e=>132335321,a=>121,d=>0,c=>3,h=>5451,b=>4,g=>0,f=>7} 790000001c000000d946e30707004b15 790000001c000000d946e30707004b15 790000001c000000d946e30707004b15 790000001c000000d946e30707004b15 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>54142455,a=>-77,d=>3,c=>0,h=>5806,b=>5,g=>0,f=>1,i=>177} b3ffffff05000300f7253a030100ae16b100 b3ffffff05000300f7253a030100ae16b100 b3ffffff05000300f7253a030100ae16b100 b3ffffff05000300f7253a030100ae16b100 - {e=>146569251,a=>-111,d=>5,c=>1,h=>6377,b=>1,g=>3,f=>2,i=>217} 91ffffff090005002378bc081a00e918d900 91ffffff090005002378bc081a00e918d900 91ffffff090005002378bc081a00e918d900 91ffffff090005002378bc081a00e918d900 - {e=>103323231,a=>-35,d=>5,c=>3,h=>286,b=>0,g=>2,f=>5,i=>160} ddffffff180005005f96280615001e01a000 ddffffff180005005f96280615001e01a000 ddffffff180005005f96280615001e01a000 ddffffff180005005f96280615001e01a000 - {e=>80135875,a=>-121,d=>4,c=>6,h=>4052,b=>0,g=>0,f=>6,i=>139} 87ffffff30000400c3c6c6040600d40f8b00 87ffffff30000400c3c6c6040600d40f8b00 87ffffff30000400c3c6c6040600d40f8b00 87ffffff30000400c3c6c6040600d40f8b00 - {e=>212259421,a=>46,d=>5,c=>2,h=>3423,b=>7,g=>2,f=>4,i=>165} 2e000000170005005dd2a60c14005f0da500 2e000000170005005dd2a60c14005f0da500 2e000000170005005dd2a60c14005f0da500 2e000000170005005dd2a60c14005f0da500 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; }; - {a=>-17,b=>1} efffffff0100 efffffff0100 efffffff0100 efffffff0100 - {a=>-21,b=>5} ebffffff0500 ebffffff0500 ebffffff0500 ebffffff0500 - {a=>117,b=>4} 750000000400 750000000400 750000000400 750000000400 - {a=>90,b=>5} 5a0000000500 5a0000000500 5a0000000500 5a0000000500 - {a=>48,b=>4} 300000000400 300000000400 300000000400 300000000400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>16,b=>5} 100000000500 100000000500 100000000500 100000000500 - {c=>6,a=>123,b=>0} 7b0000003000 7b0000003000 7b0000003000 7b0000003000 - {c=>4,a=>92,b=>2} 5c0000002200 5c0000002200 5c0000002200 5c0000002200 - {c=>4,a=>64,b=>0} 400000002000 400000002000 400000002000 400000002000 - {c=>0,a=>-8,b=>0} f8ffffff0000 f8ffffff0000 f8ffffff0000 f8ffffff0000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>124,b=>2,d=>6} 7c00000032000600 7c00000032000600 7c00000032000600 7c00000032000600 - {c=>2,a=>-19,b=>2,d=>0} edffffff12000000 edffffff12000000 edffffff12000000 edffffff12000000 - {c=>5,a=>55,b=>0,d=>1} 3700000028000100 3700000028000100 3700000028000100 3700000028000100 - {c=>5,a=>-44,b=>0,d=>7} d4ffffff28000700 d4ffffff28000700 d4ffffff28000700 d4ffffff28000700 - {c=>6,a=>-50,b=>1,d=>4} ceffffff31000400 ceffffff31000400 ceffffff31000400 ceffffff31000400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>95288597,c=>5,a=>-109,b=>2,d=>7} 93ffffff2a00070015fdad05 93ffffff2a00070015fdad05 93ffffff2a00070015fdad05 93ffffff2a00070015fdad05 - {e=>135290620,c=>4,a=>117,b=>5,d=>5} 7500000025000500fc5e1008 7500000025000500fc5e1008 7500000025000500fc5e1008 7500000025000500fc5e1008 - {e=>60560071,c=>0,a=>38,b=>6,d=>3} 2600000006000300c7129c03 2600000006000300c7129c03 2600000006000300c7129c03 2600000006000300c7129c03 - {e=>3218489,c=>7,a=>-111,b=>2,d=>3} 91ffffff3a000300391c3100 91ffffff3a000300391c3100 91ffffff3a000300391c3100 91ffffff3a000300391c3100 - {e=>124836907,c=>6,a=>-119,b=>3,d=>2} 89ffffff330002002bdc7007 89ffffff330002002bdc7007 89ffffff330002002bdc7007 89ffffff330002002bdc7007 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>12389401,c=>4,a=>83,b=>0,d=>1,f=>1} 5300000020000100190cbd000100 5300000020000100190cbd000100 5300000020000100190cbd000100 5300000020000100190cbd000100 - {e=>142083432,c=>7,a=>-99,b=>5,d=>3,f=>3} 9dffffff3d000300680578080300 9dffffff3d000300680578080300 9dffffff3d000300680578080300 9dffffff3d000300680578080300 - {e=>187721880,c=>2,a=>52,b=>6,d=>5,f=>2} 34000000160005009868300b0200 34000000160005009868300b0200 34000000160005009868300b0200 34000000160005009868300b0200 - {e=>48069462,c=>5,a=>48,b=>0,d=>2,f=>4} 3000000028000200567bdd020400 3000000028000200567bdd020400 3000000028000200567bdd020400 3000000028000200567bdd020400 - {e=>65320048,c=>4,a=>2,b=>6,d=>4,f=>3} 020000002600040070b4e4030300 020000002600040070b4e4030300 020000002600040070b4e4030300 020000002600040070b4e4030300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>260512924,c=>0,a=>13,g=>3,b=>2,d=>7,f=>5} 0d000000020007009c1c870f1d00 0d000000020007009c1c870f1d00 0d000000020007009c1c870f1d00 0d000000020007009c1c870f1d00 - {e=>57231972,c=>0,a=>50,g=>1,b=>1,d=>1,f=>1} 3200000001000100644a69030900 3200000001000100644a69030900 3200000001000100644a69030900 3200000001000100644a69030900 - {e=>202592947,c=>7,a=>-82,g=>2,b=>0,d=>0,f=>6} aeffffff38000000b352130c1600 aeffffff38000000b352130c1600 aeffffff38000000b352130c1600 aeffffff38000000b352130c1600 - {e=>222000348,c=>7,a=>-76,g=>2,b=>4,d=>4,f=>5} b4ffffff3c000400dc743b0d1500 b4ffffff3c000400dc743b0d1500 b4ffffff3c000400dc743b0d1500 b4ffffff3c000400dc743b0d1500 - {e=>259177945,c=>7,a=>-89,g=>3,b=>2,d=>4,f=>1} a7ffffff3a000400d9bd720f1900 a7ffffff3a000400d9bd720f1900 a7ffffff3a000400d9bd720f1900 a7ffffff3a000400d9bd720f1900 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>83948314,a=>-39,d=>7,c=>7,h=>5026,b=>2,g=>2,f=>5} d9ffffff3a0007001af300051500a213 d9ffffff3a0007001af300051500a213 d9ffffff3a0007001af300051500a213 d9ffffff3a0007001af300051500a213 - {e=>263712322,a=>73,d=>0,c=>3,h=>5678,b=>2,g=>3,f=>7} 490000001a00000042eeb70f1f002e16 490000001a00000042eeb70f1f002e16 490000001a00000042eeb70f1f002e16 490000001a00000042eeb70f1f002e16 - {e=>29595889,a=>-74,d=>7,c=>3,h=>3087,b=>2,g=>3,f=>4} b6ffffff1a000700f198c3011c000f0c b6ffffff1a000700f198c3011c000f0c b6ffffff1a000700f198c3011c000f0c b6ffffff1a000700f198c3011c000f0c - {e=>229616258,a=>-13,d=>2,c=>2,h=>5537,b=>5,g=>2,f=>6} f3ffffff1500020082aaaf0d1600a115 f3ffffff1500020082aaaf0d1600a115 f3ffffff1500020082aaaf0d1600a115 f3ffffff1500020082aaaf0d1600a115 - {e=>192578723,a=>-50,d=>5,c=>7,h=>779,b=>7,g=>0,f=>1} ceffffff3f000500a3847a0b01000b03 ceffffff3f000500a3847a0b01000b03 ceffffff3f000500a3847a0b01000b03 ceffffff3f000500a3847a0b01000b03 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>53556282,a=>93,d=>1,c=>0,h=>6233,b=>5,g=>2,f=>6,i=>8} 5d000000050001003a343103160059180800 5d000000050001003a343103160059180800 5d000000050001003a343103160059180800 5d000000050001003a343103160059180800 - {e=>177717941,a=>-92,d=>4,c=>4,h=>2021,b=>5,g=>1,f=>5,i=>247} a4ffffff25000400b5c2970a0d00e507f700 a4ffffff25000400b5c2970a0d00e507f700 a4ffffff25000400b5c2970a0d00e507f700 a4ffffff25000400b5c2970a0d00e507f700 - {e=>182845399,a=>88,d=>7,c=>0,h=>1885,b=>2,g=>0,f=>7,i=>153} 5800000002000700d7ffe50a07005d079900 5800000002000700d7ffe50a07005d079900 5800000002000700d7ffe50a07005d079900 5800000002000700d7ffe50a07005d079900 - {e=>88054627,a=>92,d=>5,c=>7,h=>765,b=>5,g=>0,f=>1,i=>252} 5c0000003d000500639b3f050100fd02fc00 5c0000003d000500639b3f050100fd02fc00 5c0000003d000500639b3f050100fd02fc00 5c0000003d000500639b3f050100fd02fc00 - {e=>77656705,a=>-32,d=>0,c=>0,h=>6746,b=>6,g=>3,f=>4,i=>4} e0ffffff0600000081f2a0041c005a1a0400 e0ffffff0600000081f2a0041c005a1a0400 e0ffffff0600000081f2a0041c005a1a0400 e0ffffff0600000081f2a0041c005a1a0400 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; }; - {a=>0} 00 00 00 00 - {a=>2} 02 02 02 02 - {a=>3} 03 03 03 03 - {a=>4} 04 04 04 04 - {a=>1} 01 01 01 01 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; }; - {a=>1,b=>7} 39 39 39 39 - {a=>5,b=>4} 25 25 25 25 - {a=>2,b=>6} 32 32 32 32 - {a=>6,b=>0} 06 06 06 06 - {a=>6,b=>3} 1e 1e 1e 1e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>7,a=>2,b=>3} 1a000700 1a000700 1a000700 1a000700 - {c=>7,a=>5,b=>5} 2d000700 2d000700 2d000700 2d000700 - {c=>6,a=>2,b=>1} 0a000600 0a000600 0a000600 0a000600 - {c=>2,a=>0,b=>4} 20000200 20000200 20000200 20000200 - {c=>2,a=>0,b=>0} 00000200 00000200 00000200 00000200 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>3,a=>7,b=>1,d=>50028689} 0f0003009160fb02 0f0003009160fb02 0f0003009160fb02 0f0003009160fb02 - {c=>0,a=>6,b=>4,d=>214060677} 26000000854ec20c 26000000854ec20c 26000000854ec20c 26000000854ec20c - {c=>5,a=>3,b=>2,d=>195763511} 13000500371dab0b 13000500371dab0b 13000500371dab0b 13000500371dab0b - {c=>3,a=>3,b=>6,d=>63439012} 33000300a400c803 33000300a400c803 33000300a400c803 33000300a400c803 - {c=>0,a=>5,b=>5,d=>244764352} 2d000000c0ce960e 2d000000c0ce960e 2d000000c0ce960e 2d000000c0ce960e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>3,c=>2,a=>4,b=>7,d=>224624247} 3c000200777e630d03000000 3c000200777e630d03000000 3c000200777e630d03000000 3c000200777e630d03000000 - {e=>0,c=>1,a=>5,b=>1,d=>177052414} 0d000100fe9a8d0a00000000 0d000100fe9a8d0a00000000 0d000100fe9a8d0a00000000 0d000100fe9a8d0a00000000 - {e=>0,c=>0,a=>2,b=>5,d=>246117108} 2a000000f472ab0e00000000 2a000000f472ab0e00000000 2a000000f472ab0e00000000 2a000000f472ab0e00000000 - {e=>6,c=>6,a=>5,b=>7,d=>185373738} 3d0006002a940c0b06000000 3d0006002a940c0b06000000 3d0006002a940c0b06000000 3d0006002a940c0b06000000 - {e=>5,c=>3,a=>4,b=>5,d=>54818930} 2c0003007278440305000000 2c0003007278440305000000 2c0003007278440305000000 2c0003007278440305000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>3,c=>4,a=>4,b=>0,d=>79628885,f=>3} 04000400550abf041b000000 04000400550abf041b000000 04000400550abf041b000000 04000400550abf041b000000 - {e=>2,c=>4,a=>1,b=>5,d=>144152264,f=>2} 29000400c896970812000000 29000400c896970812000000 29000400c896970812000000 29000400c896970812000000 - {e=>5,c=>6,a=>2,b=>0,d=>26710878,f=>3} 020006005e9397011d000000 020006005e9397011d000000 020006005e9397011d000000 020006005e9397011d000000 - {e=>5,c=>6,a=>7,b=>4,d=>34004101,f=>1} 2700060085dc06020d000000 2700060085dc06020d000000 2700060085dc06020d000000 2700060085dc06020d000000 - {e=>0,c=>4,a=>2,b=>1,d=>16933732,f=>1} 0a0004006463020108000000 0a0004006463020108000000 0a0004006463020108000000 0a0004006463020108000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>6,c=>4,a=>7,g=>5071,b=>0,d=>231122139,f=>3} 07000400dba4c60d1e00cf13 07000400dba4c60d1e00cf13 07000400dba4c60d1e00cf13 07000400dba4c60d1e00cf13 - {e=>6,c=>2,a=>7,g=>456,b=>3,d=>180080748,f=>0} 1f0002006cd0bb0a0600c801 1f0002006cd0bb0a0600c801 1f0002006cd0bb0a0600c801 1f0002006cd0bb0a0600c801 - {e=>2,c=>3,a=>3,g=>5849,b=>3,d=>79209729,f=>3} 1b00030001a5b8041a00d916 1b00030001a5b8041a00d916 1b00030001a5b8041a00d916 1b00030001a5b8041a00d916 - {e=>1,c=>3,a=>7,g=>2821,b=>0,d=>127280147,f=>3} 07000300132496071900050b 07000300132496071900050b 07000300132496071900050b 07000300132496071900050b - {e=>3,c=>1,a=>1,g=>507,b=>0,d=>255482069,f=>1} 01000100d5583a0f0b00fb01 01000100d5583a0f0b00fb01 01000100d5583a0f0b00fb01 01000100d5583a0f0b00fb01 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>6,a=>7,d=>257420570,c=>7,h=>84,b=>1,g=>1915,f=>3} 0f0007001aed570f1e007b0754000000 0f0007001aed570f1e007b0754000000 0f0007001aed570f1e007b0754000000 0f0007001aed570f1e007b0754000000 - {e=>5,a=>5,d=>71066412,c=>2,h=>226,b=>3,g=>1456,f=>3} 1d0002002c633c041d00b005e2000000 1d0002002c633c041d00b005e2000000 1d0002002c633c041d00b005e2000000 1d0002002c633c041d00b005e2000000 - {e=>5,a=>0,d=>136880796,c=>4,h=>149,b=>6,g=>7356,f=>2} 300004009ca228081500bc1c95000000 300004009ca228081500bc1c95000000 300004009ca228081500bc1c95000000 300004009ca228081500bc1c95000000 - {e=>4,a=>2,d=>230323768,c=>1,h=>107,b=>2,g=>1870,f=>0} 120001003876ba0d04004e076b000000 120001003876ba0d04004e076b000000 120001003876ba0d04004e076b000000 120001003876ba0d04004e076b000000 - {e=>0,a=>1,d=>100150911,c=>2,h=>68,b=>6,g=>5875,f=>1} 310002007f2ef8050800f31644000000 310002007f2ef8050800f31644000000 310002007f2ef8050800f31644000000 310002007f2ef8050800f31644000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; }; - {a=>65,b=>3} 4103 4103 4103 4103 - {a=>6,b=>0} 0600 0600 0600 0600 - {a=>95,b=>6} 5f06 5f06 5f06 5f06 - {a=>-19,b=>1} ed01 ed01 ed01 ed01 - {a=>69,b=>7} 4507 4507 4507 4507 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>-76,b=>3} b433 b433 b433 b433 - {c=>6,a=>58,b=>2} 3a32 3a32 3a32 3a32 - {c=>0,a=>-87,b=>7} a907 a907 a907 a907 - {c=>5,a=>95,b=>6} 5f2e 5f2e 5f2e 5f2e - {c=>6,a=>69,b=>2} 4532 4532 4532 4532 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-39,b=>1,d=>1} d9190100 d9190100 d9190100 d9190100 - {c=>0,a=>-41,b=>0,d=>0} d7000000 d7000000 d7000000 d7000000 - {c=>4,a=>98,b=>0,d=>0} 62200000 62200000 62200000 62200000 - {c=>0,a=>-29,b=>1,d=>5} e3010500 e3010500 e3010500 e3010500 - {c=>3,a=>-22,b=>1,d=>5} ea190500 ea190500 ea190500 ea190500 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>124299546,c=>2,a=>-99,b=>6,d=>6} 9d1606001aa96807 9d1606001aa96807 9d1606001aa96807 9d1606001aa96807 - {e=>146480008,c=>7,a=>77,b=>1,d=>1} 4d390100881bbb08 4d390100881bbb08 4d390100881bbb08 4d390100881bbb08 - {e=>114844914,c=>3,a=>-69,b=>7,d=>6} bb1f0600f264d806 bb1f0600f264d806 bb1f0600f264d806 bb1f0600f264d806 - {e=>66012636,c=>0,a=>-38,b=>2,d=>6} da020600dc45ef03 da020600dc45ef03 da020600dc45ef03 da020600dc45ef03 - {e=>262518736,c=>0,a=>20,b=>2,d=>0} 14020000d0b7a50f 14020000d0b7a50f 14020000d0b7a50f 14020000d0b7a50f = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>262442666,c=>5,a=>-46,b=>1,d=>0,f=>1} d2290000aa8ea40f01000000 d2290000aa8ea40f01000000 d2290000aa8ea40f01000000 d2290000aa8ea40f01000000 - {e=>51404586,c=>7,a=>-117,b=>0,d=>7,f=>2} 8b3807002a5f100302000000 8b3807002a5f100302000000 8b3807002a5f100302000000 8b3807002a5f100302000000 - {e=>62750320,c=>6,a=>103,b=>6,d=>5,f=>7} 67360500707ebd0307000000 67360500707ebd0307000000 67360500707ebd0307000000 67360500707ebd0307000000 - {e=>224998807,c=>7,a=>-64,b=>3,d=>6,f=>1} c03b06009735690d01000000 c03b06009735690d01000000 c03b06009735690d01000000 c03b06009735690d01000000 - {e=>147103397,c=>2,a=>51,b=>5,d=>5,f=>6} 33150500a59ec40806000000 33150500a59ec40806000000 33150500a59ec40806000000 33150500a59ec40806000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>126791030,c=>2,a=>62,g=>0,b=>5,d=>3,f=>3} 3e15030076ad8e0703000000 3e15030076ad8e0703000000 3e15030076ad8e0703000000 3e15030076ad8e0703000000 - {e=>121945673,c=>5,a=>14,g=>2,b=>7,d=>0,f=>6} 0e2f000049be440716000000 0e2f000049be440716000000 0e2f000049be440716000000 0e2f000049be440716000000 - {e=>144073686,c=>3,a=>96,g=>1,b=>3,d=>3,f=>6} 601b0300d66396080e000000 601b0300d66396080e000000 601b0300d66396080e000000 601b0300d66396080e000000 - {e=>215969518,c=>7,a=>-47,g=>2,b=>4,d=>4,f=>2} d13c0400ee6edf0c12000000 d13c0400ee6edf0c12000000 d13c0400ee6edf0c12000000 d13c0400ee6edf0c12000000 - {e=>140309850,c=>5,a=>-50,g=>1,b=>5,d=>2,f=>0} ce2d02005af55c0808000000 ce2d02005af55c0808000000 ce2d02005af55c0808000000 ce2d02005af55c0808000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>255150489,a=>50,d=>2,c=>3,h=>5131,b=>7,g=>0,f=>5} 321f02009949350f05000b14 321f02009949350f05000b14 321f02009949350f05000b14 321f02009949350f05000b14 - {e=>88288107,a=>30,d=>5,c=>2,h=>508,b=>1,g=>1,f=>4} 1e1105006b2b43050c00fc01 1e1105006b2b43050c00fc01 1e1105006b2b43050c00fc01 1e1105006b2b43050c00fc01 - {e=>69089767,a=>-51,d=>7,c=>1,h=>2817,b=>4,g=>0,f=>1} cd0c0700e7391e040100010b cd0c0700e7391e040100010b cd0c0700e7391e040100010b cd0c0700e7391e040100010b - {e=>181343856,a=>45,d=>0,c=>7,h=>8181,b=>5,g=>0,f=>3} 2d3d00007016cf0a0300f51f 2d3d00007016cf0a0300f51f 2d3d00007016cf0a0300f51f 2d3d00007016cf0a0300f51f - {e=>255383303,a=>-26,d=>0,c=>4,h=>6731,b=>2,g=>0,f=>2} e622000007d7380f02004b1a e622000007d7380f02004b1a e622000007d7380f02004b1a e622000007d7380f02004b1a = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>166068539,a=>7,d=>5,c=>2,h=>5695,b=>7,g=>1,f=>6,i=>154} 071705003b01e6090e003f169a000000 071705003b01e6090e003f169a000000 071705003b01e6090e003f169a000000 071705003b01e6090e003f169a000000 - {e=>33996722,a=>19,d=>3,c=>1,h=>5872,b=>0,g=>3,f=>4,i=>109} 13080300b2bf06021c00f0166d000000 13080300b2bf06021c00f0166d000000 13080300b2bf06021c00f0166d000000 13080300b2bf06021c00f0166d000000 - {e=>233609477,a=>33,d=>2,c=>7,h=>5345,b=>1,g=>1,f=>4,i=>42} 213902000599ec0d0c00e1142a000000 213902000599ec0d0c00e1142a000000 213902000599ec0d0c00e1142a000000 213902000599ec0d0c00e1142a000000 - {e=>221295631,a=>68,d=>4,c=>7,h=>2330,b=>4,g=>0,f=>7,i=>18} 443c04000fb4300d07001a0912000000 443c04000fb4300d07001a0912000000 443c04000fb4300d07001a0912000000 443c04000fb4300d07001a0912000000 - {e=>91575618,a=>-124,d=>7,c=>1,h=>4394,b=>5,g=>0,f=>3,i=>236} 840d07004255750503002a11ec000000 840d07004255750503002a11ec000000 840d07004255750503002a11ec000000 840d07004255750503002a11ec000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; }; - {a=>116,b=>5} 74000500 74000500 74000500 74000500 - {a=>71,b=>2} 47000200 47000200 47000200 47000200 - {a=>-124,b=>5} 84ff0500 84ff0500 84ff0500 84ff0500 - {a=>80,b=>5} 50000500 50000500 50000500 50000500 - {a=>-89,b=>4} a7ff0400 a7ff0400 a7ff0400 a7ff0400 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>-17,b=>0} efff1800 efff1800 efff1800 efff1800 - {c=>1,a=>-2,b=>7} feff0f00 feff0f00 feff0f00 feff0f00 - {c=>1,a=>-91,b=>5} a5ff0d00 a5ff0d00 a5ff0d00 a5ff0d00 - {c=>0,a=>68,b=>4} 44000400 44000400 44000400 44000400 - {c=>7,a=>-51,b=>2} cdff3a00 cdff3a00 cdff3a00 cdff3a00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>5,a=>-102,b=>5,d=>2} 9aff2d000200 9aff2d000200 9aff2d000200 9aff2d000200 - {c=>4,a=>79,b=>5,d=>3} 4f0025000300 4f0025000300 4f0025000300 4f0025000300 - {c=>7,a=>67,b=>7,d=>4} 43003f000400 43003f000400 43003f000400 43003f000400 - {c=>1,a=>57,b=>7,d=>4} 39000f000400 39000f000400 39000f000400 39000f000400 - {c=>7,a=>56,b=>4,d=>2} 38003c000200 38003c000200 38003c000200 38003c000200 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>13432198,c=>4,a=>37,b=>0,d=>6} 250020000600000086f5cc00 250020000600000086f5cc00 250020000600000086f5cc00 250020000600000086f5cc00 - {e=>56807926,c=>1,a=>40,b=>5,d=>2} 28000d0002000000f6d16203 28000d0002000000f6d16203 28000d0002000000f6d16203 28000d0002000000f6d16203 - {e=>135705606,c=>5,a=>-117,b=>1,d=>2} 8bff29000200000006b41608 8bff29000200000006b41608 8bff29000200000006b41608 8bff29000200000006b41608 - {e=>57461598,c=>5,a=>-92,b=>1,d=>0} a4ff2900000000005ecb6c03 a4ff2900000000005ecb6c03 a4ff2900000000005ecb6c03 a4ff2900000000005ecb6c03 - {e=>47673734,c=>0,a=>-17,b=>2,d=>4} efff0200040000008671d702 efff0200040000008671d702 efff0200040000008671d702 efff0200040000008671d702 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>161341178,c=>6,a=>41,b=>3,d=>6,f=>4} 2900330006000000fade9d0904000000 2900330006000000fade9d0904000000 2900330006000000fade9d0904000000 2900330006000000fade9d0904000000 - {e=>17636513,c=>4,a=>97,b=>1,d=>0,f=>7} 6100210000000000a11c0d0107000000 6100210000000000a11c0d0107000000 6100210000000000a11c0d0107000000 6100210000000000a11c0d0107000000 - {e=>71589661,c=>4,a=>83,b=>1,d=>4,f=>3} 53002100040000001d5f440403000000 53002100040000001d5f440403000000 53002100040000001d5f440403000000 53002100040000001d5f440403000000 - {e=>130474327,c=>1,a=>95,b=>0,d=>6,f=>2} 5f0008000600000057e1c60702000000 5f0008000600000057e1c60702000000 5f0008000600000057e1c60702000000 5f0008000600000057e1c60702000000 - {e=>97397382,c=>1,a=>47,b=>1,d=>2,f=>2} 2f00090002000000862ace0502000000 2f00090002000000862ace0502000000 2f00090002000000862ace0502000000 2f00090002000000862ace0502000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>212274530,c=>6,a=>61,g=>1,b=>5,d=>1,f=>6} 3d00350001000000620da70c0e000000 3d00350001000000620da70c0e000000 3d00350001000000620da70c0e000000 3d00350001000000620da70c0e000000 - {e=>84374245,c=>6,a=>105,g=>1,b=>3,d=>2,f=>4} 6900330002000000e57207050c000000 6900330002000000e57207050c000000 6900330002000000e57207050c000000 6900330002000000e57207050c000000 - {e=>59588346,c=>5,a=>-128,g=>1,b=>7,d=>7,f=>2} 80ff2f0007000000fa3e8d030a000000 80ff2f0007000000fa3e8d030a000000 80ff2f0007000000fa3e8d030a000000 80ff2f0007000000fa3e8d030a000000 - {e=>183955461,c=>3,a=>33,g=>3,b=>6,d=>7,f=>3} 21001e000700000005f0f60a1b000000 21001e000700000005f0f60a1b000000 21001e000700000005f0f60a1b000000 21001e000700000005f0f60a1b000000 - {e=>192083138,c=>3,a=>-69,g=>3,b=>4,d=>0,f=>2} bbff1c0000000000c2f4720b1a000000 bbff1c0000000000c2f4720b1a000000 bbff1c0000000000c2f4720b1a000000 bbff1c0000000000c2f4720b1a000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>113601201,a=>91,d=>3,c=>3,h=>3432,b=>1,g=>0,f=>2} 5b00190003000000b16ac5060200680d 5b00190003000000b16ac5060200680d 5b00190003000000b16ac5060200680d 5b00190003000000b16ac5060200680d - {e=>203592947,a=>15,d=>7,c=>1,h=>5527,b=>6,g=>0,f=>7} 0f000e0007000000f394220c07009715 0f000e0007000000f394220c07009715 0f000e0007000000f394220c07009715 0f000e0007000000f394220c07009715 - {e=>20997174,a=>-60,d=>7,c=>4,h=>6515,b=>6,g=>0,f=>0} c4ff2600070000003664400100007319 c4ff2600070000003664400100007319 c4ff2600070000003664400100007319 c4ff2600070000003664400100007319 - {e=>235268567,a=>-47,d=>5,c=>4,h=>1813,b=>6,g=>2,f=>7} d1ff260005000000d7e9050e17001507 d1ff260005000000d7e9050e17001507 d1ff260005000000d7e9050e17001507 d1ff260005000000d7e9050e17001507 - {e=>104426910,a=>-85,d=>3,c=>1,h=>4758,b=>4,g=>2,f=>1} abff0c00030000009e6d390611009612 abff0c00030000009e6d390611009612 abff0c00030000009e6d390611009612 abff0c00030000009e6d390611009612 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>12539432,a=>-13,d=>1,c=>5,h=>262,b=>4,g=>3,f=>0,i=>197} f3ff2c00010000002856bf0018000601c5000000 f3ff2c00010000002856bf0018000601c5000000 f3ff2c00010000002856bf0018000601c5000000 f3ff2c00010000002856bf0018000601c5000000 - {e=>121930746,a=>112,d=>4,c=>3,h=>1222,b=>7,g=>1,f=>5,i=>13} 70001f0004000000fa8344070d00c6040d000000 70001f0004000000fa8344070d00c6040d000000 70001f0004000000fa8344070d00c6040d000000 70001f0004000000fa8344070d00c6040d000000 - {e=>212968800,a=>104,d=>5,c=>7,h=>2223,b=>4,g=>2,f=>6,i=>9} 68003c000500000060a5b10c1600af0809000000 68003c000500000060a5b10c1600af0809000000 68003c000500000060a5b10c1600af0809000000 68003c000500000060a5b10c1600af0809000000 - {e=>48555818,a=>-18,d=>2,c=>7,h=>3063,b=>4,g=>1,f=>1,i=>165} eeff3c00020000002ae7e4020900f70ba5000000 eeff3c00020000002ae7e4020900f70ba5000000 eeff3c00020000002ae7e4020900f70ba5000000 eeff3c00020000002ae7e4020900f70ba5000000 - {e=>204417579,a=>18,d=>3,c=>6,h=>3751,b=>6,g=>1,f=>5,i=>20} 12003600030000002b2a2f0c0d00a70e14000000 12003600030000002b2a2f0c0d00a70e14000000 12003600030000002b2a2f0c0d00a70e14000000 12003600030000002b2a2f0c0d00a70e14000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; }; - {a=>3,b=>1} 0300000001000000 0300000001000000 0300000001000000 0300000001000000 - {a=>-79,b=>0} b1ffffff00000000 b1ffffff00000000 b1ffffff00000000 b1ffffff00000000 - {a=>22,b=>0} 1600000000000000 1600000000000000 1600000000000000 1600000000000000 - {a=>-61,b=>4} c3ffffff04000000 c3ffffff04000000 c3ffffff04000000 c3ffffff04000000 - {a=>4,b=>5} 0400000005000000 0400000005000000 0400000005000000 0400000005000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>15,b=>2} 0f0000000a000000 0f0000000a000000 0f0000000a000000 0f0000000a000000 - {c=>6,a=>8,b=>1} 0800000031000000 0800000031000000 0800000031000000 0800000031000000 - {c=>7,a=>20,b=>5} 140000003d000000 140000003d000000 140000003d000000 140000003d000000 - {c=>2,a=>65,b=>6} 4100000016000000 4100000016000000 4100000016000000 4100000016000000 - {c=>6,a=>27,b=>7} 1b00000037000000 1b00000037000000 1b00000037000000 1b00000037000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>121,b=>6,d=>0} 7900000026000000 7900000026000000 7900000026000000 7900000026000000 - {c=>7,a=>-95,b=>4,d=>6} a1ffffff3c000600 a1ffffff3c000600 a1ffffff3c000600 a1ffffff3c000600 - {c=>5,a=>-88,b=>5,d=>4} a8ffffff2d000400 a8ffffff2d000400 a8ffffff2d000400 a8ffffff2d000400 - {c=>6,a=>101,b=>5,d=>1} 6500000035000100 6500000035000100 6500000035000100 6500000035000100 - {c=>7,a=>24,b=>5,d=>6} 180000003d000600 180000003d000600 180000003d000600 180000003d000600 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>169306690,c=>2,a=>21,b=>0,d=>6} 1500000010000600426a170a 1500000010000600426a170a 1500000010000600426a170a 1500000010000600426a170a - {e=>49555571,c=>7,a=>7,b=>1,d=>7} 07000000390007007328f402 07000000390007007328f402 07000000390007007328f402 07000000390007007328f402 - {e=>137008742,c=>3,a=>-69,b=>1,d=>4} bbffffff1900040066962a08 bbffffff1900040066962a08 bbffffff1900040066962a08 bbffffff1900040066962a08 - {e=>85806609,c=>1,a=>-17,b=>5,d=>3} efffffff0d000300114e1d05 efffffff0d000300114e1d05 efffffff0d000300114e1d05 efffffff0d000300114e1d05 - {e=>133506977,c=>6,a=>93,b=>0,d=>6} 5d00000030000600a127f507 5d00000030000600a127f507 5d00000030000600a127f507 5d00000030000600a127f507 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>156208632,c=>7,a=>-84,b=>2,d=>2,f=>2} acffffff3a000200f88d4f0902000000 acffffff3a000200f88d4f0902000000 acffffff3a000200f88d4f0902000000 acffffff3a000200f88d4f0902000000 - {e=>130617554,c=>4,a=>-17,b=>6,d=>7,f=>0} efffffff26000700d210c90700000000 efffffff26000700d210c90700000000 efffffff26000700d210c90700000000 efffffff26000700d210c90700000000 - {e=>95191856,c=>5,a=>65,b=>4,d=>6,f=>6} 410000002c0006003083ac0506000000 410000002c0006003083ac0506000000 410000002c0006003083ac0506000000 410000002c0006003083ac0506000000 - {e=>142523577,c=>4,a=>114,b=>5,d=>2,f=>1} 7200000025000200b9bc7e0801000000 7200000025000200b9bc7e0801000000 7200000025000200b9bc7e0801000000 7200000025000200b9bc7e0801000000 - {e=>122537461,c=>7,a=>-44,b=>5,d=>0,f=>2} d4ffffff3d000000f5c54d0702000000 d4ffffff3d000000f5c54d0702000000 d4ffffff3d000000f5c54d0702000000 d4ffffff3d000000f5c54d0702000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>144539243,c=>5,a=>29,g=>2,b=>5,d=>0,f=>6} 1d0000002d0000006b7e9d0816000000 1d0000002d0000006b7e9d0816000000 1d0000002d0000006b7e9d0816000000 1d0000002d0000006b7e9d0816000000 - {e=>139635304,c=>6,a=>123,g=>2,b=>7,d=>7,f=>3} 7b0000003700070068aa520813000000 7b0000003700070068aa520813000000 7b0000003700070068aa520813000000 7b0000003700070068aa520813000000 - {e=>8969412,c=>7,a=>-110,g=>2,b=>1,d=>2,f=>2} 92ffffff39000200c4dc880012000000 92ffffff39000200c4dc880012000000 92ffffff39000200c4dc880012000000 92ffffff39000200c4dc880012000000 - {e=>110093836,c=>0,a=>-32,g=>3,b=>2,d=>0,f=>5} e0ffffff020000000ce68f061d000000 e0ffffff020000000ce68f061d000000 e0ffffff020000000ce68f061d000000 e0ffffff020000000ce68f061d000000 - {e=>18345492,c=>1,a=>14,g=>2,b=>0,d=>1,f=>1} 0e0000000800010014ee170111000000 0e0000000800010014ee170111000000 0e0000000800010014ee170111000000 0e0000000800010014ee170111000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>243213622,a=>-120,d=>4,c=>7,h=>7881,b=>7,g=>3,f=>2} 88ffffff3f00040036257f0e1a00c91e 88ffffff3f00040036257f0e1a00c91e 88ffffff3f00040036257f0e1a00c91e 88ffffff3f00040036257f0e1a00c91e - {e=>86919501,a=>53,d=>5,c=>5,h=>380,b=>0,g=>0,f=>0} 35000000280005004d492e0500007c01 35000000280005004d492e0500007c01 35000000280005004d492e0500007c01 35000000280005004d492e0500007c01 - {e=>147012077,a=>32,d=>1,c=>6,h=>2230,b=>1,g=>2,f=>7} 2000000031000100ed39c3081700b608 2000000031000100ed39c3081700b608 2000000031000100ed39c3081700b608 2000000031000100ed39c3081700b608 - {e=>23638499,a=>-48,d=>3,c=>7,h=>5753,b=>7,g=>2,f=>6} d0ffffff3f000300e3b1680116007916 d0ffffff3f000300e3b1680116007916 d0ffffff3f000300e3b1680116007916 d0ffffff3f000300e3b1680116007916 - {e=>136927608,a=>-38,d=>6,c=>7,h=>773,b=>3,g=>2,f=>5} daffffff3b0006007859290815000503 daffffff3b0006007859290815000503 daffffff3b0006007859290815000503 daffffff3b0006007859290815000503 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>145884245,a=>43,d=>4,c=>7,h=>3698,b=>4,g=>0,f=>0,i=>117} 2b0000003c0004005504b2080000720e75000000 2b0000003c0004005504b2080000720e75000000 2b0000003c0004005504b2080000720e75000000 2b0000003c0004005504b2080000720e75000000 - {e=>148618604,a=>-115,d=>5,c=>6,h=>3263,b=>7,g=>2,f=>1,i=>253} 8dffffff370005006cbddb081100bf0cfd000000 8dffffff370005006cbddb081100bf0cfd000000 8dffffff370005006cbddb081100bf0cfd000000 8dffffff370005006cbddb081100bf0cfd000000 - {e=>226652794,a=>48,d=>5,c=>2,h=>2101,b=>4,g=>1,f=>3,i=>16} 30000000140005007a72820d0b00350810000000 30000000140005007a72820d0b00350810000000 30000000140005007a72820d0b00350810000000 30000000140005007a72820d0b00350810000000 - {e=>137257539,a=>-126,d=>4,c=>7,h=>3963,b=>0,g=>3,f=>1,i=>27} 82ffffff3800040043622e0819007b0f1b000000 82ffffff3800040043622e0819007b0f1b000000 82ffffff3800040043622e0819007b0f1b000000 82ffffff3800040043622e0819007b0f1b000000 - {e=>106849035,a=>-61,d=>5,c=>4,h=>1757,b=>7,g=>1,f=>5,i=>42} c3ffffff270005000b635e060d00dd062a000000 c3ffffff270005000b635e060d00dd062a000000 c3ffffff270005000b635e060d00dd062a000000 c3ffffff270005000b635e060d00dd062a000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; }; - {a=>72,b=>5} 4800000005000000 4800000005000000 4800000005000000 4800000005000000 - {a=>-71,b=>1} b9ffffff01000000 b9ffffff01000000 b9ffffff01000000 b9ffffff01000000 - {a=>-67,b=>4} bdffffff04000000 bdffffff04000000 bdffffff04000000 bdffffff04000000 - {a=>-126,b=>2} 82ffffff02000000 82ffffff02000000 82ffffff02000000 82ffffff02000000 - {a=>126,b=>2} 7e00000002000000 7e00000002000000 7e00000002000000 7e00000002000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>2,a=>122,b=>0} 7a00000010000000 7a00000010000000 7a00000010000000 7a00000010000000 - {c=>7,a=>-32,b=>1} e0ffffff39000000 e0ffffff39000000 e0ffffff39000000 e0ffffff39000000 - {c=>1,a=>33,b=>2} 210000000a000000 210000000a000000 210000000a000000 210000000a000000 - {c=>2,a=>-13,b=>6} f3ffffff16000000 f3ffffff16000000 f3ffffff16000000 f3ffffff16000000 - {c=>6,a=>-22,b=>1} eaffffff31000000 eaffffff31000000 eaffffff31000000 eaffffff31000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>-120,b=>1,d=>6} 88ffffff21000600 88ffffff21000600 88ffffff21000600 88ffffff21000600 - {c=>6,a=>-100,b=>5,d=>5} 9cffffff35000500 9cffffff35000500 9cffffff35000500 9cffffff35000500 - {c=>7,a=>70,b=>5,d=>2} 460000003d000200 460000003d000200 460000003d000200 460000003d000200 - {c=>5,a=>-124,b=>3,d=>0} 84ffffff2b000000 84ffffff2b000000 84ffffff2b000000 84ffffff2b000000 - {c=>7,a=>106,b=>6,d=>3} 6a0000003e000300 6a0000003e000300 6a0000003e000300 6a0000003e000300 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>238948103,c=>0,a=>46,b=>1,d=>7} 2e00000001000700070f3e0e 2e00000001000700070f3e0e 2e00000001000700070f3e0e 2e00000001000700070f3e0e - {e=>85833411,c=>2,a=>41,b=>3,d=>7} 2900000013000700c3b61d05 2900000013000700c3b61d05 2900000013000700c3b61d05 2900000013000700c3b61d05 - {e=>85862305,c=>4,a=>-94,b=>6,d=>4} a2ffffff26000400a1271e05 a2ffffff26000400a1271e05 a2ffffff26000400a1271e05 a2ffffff26000400a1271e05 - {e=>89255584,c=>4,a=>26,b=>1,d=>0} 1a00000021000000a0ee5105 1a00000021000000a0ee5105 1a00000021000000a0ee5105 1a00000021000000a0ee5105 - {e=>218745112,c=>5,a=>-41,b=>3,d=>0} d7ffffff2b00000018c9090d d7ffffff2b00000018c9090d d7ffffff2b00000018c9090d d7ffffff2b00000018c9090d = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>181902780,c=>3,a=>-112,b=>6,d=>7,f=>4} 90ffffff1e000700bc9dd70a04000000 90ffffff1e000700bc9dd70a04000000 90ffffff1e000700bc9dd70a04000000 90ffffff1e000700bc9dd70a04000000 - {e=>243947917,c=>2,a=>-87,b=>0,d=>1,f=>7} a9ffffff100001008d598a0e07000000 a9ffffff100001008d598a0e07000000 a9ffffff100001008d598a0e07000000 a9ffffff100001008d598a0e07000000 - {e=>87380681,c=>3,a=>-46,b=>2,d=>3,f=>1} d2ffffff1a000300c952350501000000 d2ffffff1a000300c952350501000000 d2ffffff1a000300c952350501000000 d2ffffff1a000300c952350501000000 - {e=>23417204,c=>4,a=>50,b=>3,d=>0,f=>5} 32000000230000007451650105000000 32000000230000007451650105000000 32000000230000007451650105000000 32000000230000007451650105000000 - {e=>33123043,c=>0,a=>116,b=>6,d=>0,f=>4} 7400000006000000e36af90104000000 7400000006000000e36af90104000000 7400000006000000e36af90104000000 7400000006000000e36af90104000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>84208039,c=>0,a=>14,g=>1,b=>2,d=>1,f=>0} 0e00000002000100a7e9040508000000 0e00000002000100a7e9040508000000 0e00000002000100a7e9040508000000 0e00000002000100a7e9040508000000 - {e=>116421098,c=>1,a=>-89,g=>2,b=>6,d=>4,f=>6} a7ffffff0e000400ea71f00616000000 a7ffffff0e000400ea71f00616000000 a7ffffff0e000400ea71f00616000000 a7ffffff0e000400ea71f00616000000 - {e=>233446560,c=>1,a=>-126,g=>0,b=>7,d=>1,f=>0} 82ffffff0f000100a01cea0d00000000 82ffffff0f000100a01cea0d00000000 82ffffff0f000100a01cea0d00000000 82ffffff0f000100a01cea0d00000000 - {e=>196256397,c=>2,a=>-106,g=>1,b=>1,d=>5,f=>0} 96ffffff110005008da2b20b08000000 96ffffff110005008da2b20b08000000 96ffffff110005008da2b20b08000000 96ffffff110005008da2b20b08000000 - {e=>98949361,c=>1,a=>69,g=>3,b=>4,d=>4,f=>0} 450000000c000400f1d8e50518000000 450000000c000400f1d8e50518000000 450000000c000400f1d8e50518000000 450000000c000400f1d8e50518000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>154431445,a=>-110,d=>6,c=>7,h=>5540,b=>6,g=>1,f=>7} 92ffffff3e000600d56f34090f00a415 92ffffff3e000600d56f34090f00a415 92ffffff3e000600d56f34090f00a415 92ffffff3e000600d56f34090f00a415 - {e=>175556692,a=>-125,d=>1,c=>1,h=>2798,b=>5,g=>2,f=>5} 83ffffff0d00010054c8760a1500ee0a 83ffffff0d00010054c8760a1500ee0a 83ffffff0d00010054c8760a1500ee0a 83ffffff0d00010054c8760a1500ee0a - {e=>165973282,a=>-23,d=>2,c=>0,h=>4321,b=>0,g=>0,f=>0} e9ffffff00000200228de4090000e110 e9ffffff00000200228de4090000e110 e9ffffff00000200228de4090000e110 e9ffffff00000200228de4090000e110 - {e=>13388635,a=>38,d=>7,c=>3,h=>3576,b=>1,g=>1,f=>0} 26000000190007005b4bcc000800f80d 26000000190007005b4bcc000800f80d 26000000190007005b4bcc000800f80d 26000000190007005b4bcc000800f80d - {e=>21214690,a=>-124,d=>3,c=>4,h=>6149,b=>0,g=>3,f=>3} 84ffffff20000300e2b543011b000518 84ffffff20000300e2b543011b000518 84ffffff20000300e2b543011b000518 84ffffff20000300e2b543011b000518 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>130293957,a=>-6,d=>3,c=>0,h=>3224,b=>7,g=>2,f=>1,i=>96} faffffff07000300c520c4071100980c60000000 faffffff07000300c520c4071100980c60000000 faffffff07000300c520c4071100980c60000000 faffffff07000300c520c4071100980c60000000 - {e=>22275050,a=>24,d=>7,c=>6,h=>4511,b=>7,g=>0,f=>3,i=>194} 1800000037000700eae3530103009f11c2000000 1800000037000700eae3530103009f11c2000000 1800000037000700eae3530103009f11c2000000 1800000037000700eae3530103009f11c2000000 - {e=>185744049,a=>-60,d=>7,c=>6,h=>1844,b=>6,g=>0,f=>2,i=>56} c4ffffff36000700b13a120b0200340738000000 c4ffffff36000700b13a120b0200340738000000 c4ffffff36000700b13a120b0200340738000000 c4ffffff36000700b13a120b0200340738000000 - {e=>260322633,a=>-58,d=>5,c=>5,h=>6201,b=>7,g=>2,f=>2,i=>199} c6ffffff2f0005004935840f12003918c7000000 c6ffffff2f0005004935840f12003918c7000000 c6ffffff2f0005004935840f12003918c7000000 c6ffffff2f0005004935840f12003918c7000000 - {e=>148496573,a=>-115,d=>0,c=>0,h=>7411,b=>3,g=>0,f=>7,i=>14} 8dffffff03000000bde0d9080700f31c0e000000 8dffffff03000000bde0d9080700f31c0e000000 8dffffff03000000bde0d9080700f31c0e000000 8dffffff03000000bde0d9080700f31c0e000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; }; - {a=>7} 07000000 07000000 07000000 07000000 - {a=>5} 05000000 05000000 05000000 05000000 - {a=>5} 05000000 05000000 05000000 05000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>7} 07000000 07000000 07000000 07000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; }; - {a=>5,b=>3} 1d000000 1d000000 1d000000 1d000000 - {a=>6,b=>-4} 26000000 26000000 26000000 26000000 - {a=>7,b=>1} 0f000000 0f000000 0f000000 0f000000 - {a=>4,b=>2} 14000000 14000000 14000000 14000000 - {a=>3,b=>2} 13000000 13000000 13000000 13000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>1,a=>6,b=>-4} 66000000 66000000 66000000 66000000 - {c=>3,a=>2,b=>0} c2000000 c2000000 c2000000 c2000000 - {c=>1,a=>4,b=>-3} 6c000000 6c000000 6c000000 6c000000 - {c=>-4,a=>2,b=>-4} 22010000 22010000 22010000 22010000 - {c=>-3,a=>4,b=>-3} 6c010000 6c010000 6c010000 6c010000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>-3,a=>0,b=>-3,d=>3} 6801000003 680100000300 6801000003000000 6801000003000000 - {c=>-4,a=>3,b=>3,d=>4} 1b01000004 1b0100000400 1b01000004000000 1b01000004000000 - {c=>-4,a=>4,b=>3,d=>1} 1c01000001 1c0100000100 1c01000001000000 1c01000001000000 - {c=>-1,a=>6,b=>-3,d=>0} ee01000000 ee0100000000 ee01000000000000 ee01000000000000 - {c=>0,a=>5,b=>2,d=>2} 1500000002 150000000200 1500000002000000 1500000002000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>0,c=>2,a=>1,b=>2,d=>6} 9100000006 910000000600 9100000006000000 9100000006000000 - {e=>-1,c=>-2,a=>6,b=>3,d=>7} 9e0100003f 9e0100003f00 9e0100003f000000 9e0100003f000000 - {e=>-1,c=>-2,a=>0,b=>0,d=>2} 800100003a 800100003a00 800100003a000000 800100003a000000 - {e=>0,c=>3,a=>6,b=>-1,d=>0} fe00000000 fe0000000000 fe00000000000000 fe00000000000000 - {e=>3,c=>-2,a=>1,b=>0,d=>7} 810100001f 810100001f00 810100001f000000 810100001f000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>2,c=>1,a=>2,b=>-4,d=>3,f=>6} 620000001306000000 62000000130006000000 620000001300000006000000 620000001300000006000000 - {e=>-2,c=>-2,a=>6,b=>1,d=>6,f=>0} 8e0100003600000000 8e010000360000000000 8e0100003600000000000000 8e0100003600000000000000 - {e=>1,c=>1,a=>3,b=>-4,d=>7,f=>5} 630000000f05000000 630000000f0005000000 630000000f00000005000000 630000000f00000005000000 - {e=>2,c=>2,a=>0,b=>-1,d=>3,f=>2} b80000001302000000 b8000000130002000000 b80000001300000002000000 b80000001300000002000000 - {e=>0,c=>3,a=>5,b=>2,d=>5,f=>2} d50000000502000000 d5000000050002000000 d50000000500000002000000 d50000000500000002000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>3,c=>-4,a=>1,b=>2,d=>1,f=>1} 110100001901000000 11010000190001000000 110100001900000001000000 110100001900000001000000 - {e=>-1,c=>-2,a=>5,b=>-1,d=>7,f=>2} bd0100003f02000000 bd0100003f0002000000 bd0100003f00000002000000 bd0100003f00000002000000 - {e=>-3,c=>-2,a=>2,b=>-2,d=>2,f=>3} b20100002a03000000 b20100002a0003000000 b20100002a00000003000000 b20100002a00000003000000 - {e=>-1,c=>-1,a=>7,b=>-1,d=>3,f=>1} ff0100003b01000000 ff0100003b0001000000 ff0100003b00000001000000 ff0100003b00000001000000 - {e=>-3,c=>2,a=>7,b=>-2,d=>5,f=>0} b70000002d00000000 b70000002d0000000000 b70000002d00000000000000 b70000002d00000000000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>0,c=>3,a=>3,g=>2,b=>0,d=>2,f=>7} c3000000020700000002 c30000000200070000000200 c3000000020000000700000002000000 c3000000020000000700000002000000 - {e=>1,c=>3,a=>0,g=>7,b=>1,d=>1,f=>4} c8000000090400000007 c80000000900040000000700 c8000000090000000400000007000000 c8000000090000000400000007000000 - {e=>0,c=>3,a=>7,g=>0,b=>-2,d=>7,f=>2} f7000000070200000000 f70000000700020000000000 f7000000070000000200000000000000 f7000000070000000200000000000000 - {e=>-2,c=>3,a=>1,g=>2,b=>0,d=>2,f=>0} c1000000320000000002 c10000003200000000000200 c1000000320000000000000002000000 c1000000320000000000000002000000 - {e=>2,c=>-1,a=>7,g=>5,b=>-2,d=>6,f=>7} f7010000160700000005 f70100001600070000000500 f7010000160000000700000005000000 f7010000160000000700000005000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>1,a=>0,d=>6,c=>-1,h=>3,b=>-1,g=>7,f=>6} f80100000e060000001f f80100000e00060000001f00 f80100000e000000060000001f000000 f80100000e000000060000001f000000 - {e=>-4,a=>1,d=>3,c=>-4,h=>2,b=>2,g=>0,f=>5} 11010000230500000010 110100002300050000001000 11010000230000000500000010000000 11010000230000000500000010000000 - {e=>2,a=>3,d=>1,c=>-4,h=>0,b=>-1,g=>0,f=>2} 3b010000110200000000 3b0100001100020000000000 3b010000110000000200000000000000 3b010000110000000200000000000000 - {e=>-2,a=>4,d=>4,c=>2,h=>-3,b=>-4,g=>7,f=>1} a400000034010000002f a40000003400010000002f00 a400000034000000010000002f000000 a400000034000000010000002f000000 - {e=>-2,a=>1,d=>2,c=>-1,h=>0,b=>-2,g=>5,f=>6} f1010000320600000005 f10100003200060000000500 f1010000320000000600000005000000 f1010000320000000600000005000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>0,a=>3,d=>4,c=>-1,h=>3,b=>-2,g=>3,f=>4,i=>1} f301000004040000001b01000000 f30100000400040000001b0001000000 f301000004000000040000001b00000001000000 f301000004000000040000001b00000001000000 - {e=>2,a=>5,d=>2,c=>1,h=>2,b=>-3,g=>4,f=>0,i=>3} 6d00000012000000001403000000 6d000000120000000000140003000000 6d00000012000000000000001400000003000000 6d00000012000000000000001400000003000000 - {e=>0,a=>5,d=>3,c=>2,h=>-3,b=>-1,g=>7,f=>7,i=>4} bd00000003070000002f04000000 bd0000000300070000002f0004000000 bd00000003000000070000002f00000004000000 bd00000003000000070000002f00000004000000 - {e=>-3,a=>5,d=>1,c=>1,h=>3,b=>-1,g=>3,f=>2,i=>6} 7d00000029020000001b06000000 7d0000002900020000001b0006000000 7d00000029000000020000001b00000006000000 7d00000029000000020000001b00000006000000 - {e=>3,a=>3,d=>6,c=>1,h=>0,b=>0,g=>3,f=>2,i=>7} 430000001e020000000307000000 430000001e0002000000030007000000 430000001e000000020000000300000007000000 430000001e000000020000000300000007000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>-1,a=>4,d=>4,j=>-12,c=>2,h=>1,b=>-1,g=>7,f=>7,i=>0} bc0000003c070000000f00000000f4 bc0000003c00070000000f0000000000f400 bc0000003c000000070000000f00000000000000f4000000 bc0000003c000000070000000f00000000000000f4000000 - {e=>3,a=>4,d=>1,j=>93,c=>-1,h=>3,b=>-4,g=>3,f=>2,i=>6} e401000019020000001b060000005d e40100001900020000001b00060000005d00 e401000019000000020000001b000000060000005d000000 e401000019000000020000001b000000060000005d000000 - {e=>1,a=>1,d=>6,j=>58,c=>-2,h=>-3,b=>3,g=>7,f=>5,i=>6} 990100000e050000002f060000003a 990100000e00050000002f00060000003a00 990100000e000000050000002f000000060000003a000000 990100000e000000050000002f000000060000003a000000 - {e=>-2,a=>4,d=>4,j=>96,c=>3,h=>3,b=>-3,g=>6,f=>0,i=>1} ec00000034000000001e0100000060 ec0000003400000000001e00010000006000 ec00000034000000000000001e0000000100000060000000 ec00000034000000000000001e0000000100000060000000 - {e=>-4,a=>6,d=>7,j=>-52,c=>-2,h=>-2,b=>2,g=>5,f=>4,i=>7} 9601000027040000003507000000cc 96010000270004000000350007000000cc00 9601000027000000040000003500000007000000cc000000 9601000027000000040000003500000007000000cc000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>-4,a=>4,d=>6,j=>-110,c=>3,k=>1,h=>3,b=>-4,g=>4,f=>2,i=>5} e400000026020000001c050000009201 e40000002600020000001c00050000009201 e400000026000000020000001c0000000500000092010000 e400000026000000020000001c0000000500000092010000 - {e=>1,a=>1,d=>5,j=>-28,c=>-3,k=>4,h=>-4,b=>2,g=>2,f=>4,i=>2} 510100000d040000002202000000e404 510100000d0004000000220002000000e404 510100000d000000040000002200000002000000e4040000 510100000d000000040000002200000002000000e4040000 - {e=>1,a=>0,d=>1,j=>83,c=>2,k=>7,h=>0,b=>1,g=>6,f=>5,i=>0} 88000000090500000006000000005307 880000000900050000000600000000005307 880000000900000005000000060000000000000053070000 880000000900000005000000060000000000000053070000 - {e=>3,a=>7,d=>1,j=>-110,c=>2,k=>0,h=>0,b=>-3,g=>0,f=>4,i=>6} af000000190400000000060000009200 af0000001900040000000000060000009200 af0000001900000004000000000000000600000092000000 af0000001900000004000000000000000600000092000000 - {e=>-4,a=>5,d=>6,j=>-88,c=>1,k=>7,h=>-3,b=>0,g=>5,f=>2,i=>2} 4500000026020000002d02000000a807 450000002600020000002d0002000000a807 4500000026000000020000002d00000002000000a8070000 4500000026000000020000002d00000002000000a8070000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>1,a=>1,d=>5,j=>101,l=>-3,c=>-4,k=>2,h=>-2,b=>3,g=>1,f=>1,i=>2} 190100000d010000003102000000652a 190100000d0001000000310002000000652a 190100000d000000010000003100000002000000652a0000 190100000d000000010000003100000002000000652a0000 - {e=>1,a=>6,d=>2,j=>-74,l=>0,c=>-4,k=>2,h=>-2,b=>2,g=>2,f=>0,i=>4} 160100000a000000003204000000b602 160100000a0000000000320004000000b602 160100000a000000000000003200000004000000b6020000 160100000a000000000000003200000004000000b6020000 - {e=>3,a=>7,d=>2,j=>30,l=>2,c=>3,k=>6,h=>0,b=>-4,g=>2,f=>7,i=>6} e70000001a0700000002060000001e16 e70000001a00070000000200060000001e16 e70000001a0000000700000002000000060000001e160000 e70000001a0000000700000002000000060000001e160000 - {e=>-2,a=>7,d=>0,j=>-4,l=>-2,c=>-4,k=>5,h=>0,b=>0,g=>4,f=>7,i=>4} 0701000030070000000404000000fc35 07010000300007000000040004000000fc35 0701000030000000070000000400000004000000fc350000 0701000030000000070000000400000004000000fc350000 - {e=>2,a=>0,d=>6,j=>65,l=>1,c=>-3,k=>6,h=>-3,b=>-2,g=>3,f=>1,i=>6} 7001000016010000002b06000000410e 700100001600010000002b0006000000410e 7001000016000000010000002b00000006000000410e0000 7001000016000000010000002b00000006000000410e0000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-4,a=>6,m=>1,d=>1,j=>55,l=>-2,c=>0,k=>7,h=>-2,b=>-4,g=>1,f=>0,i=>1} 2600000021000000003101000000373701000000 26000000210000000000310001000000373701000000 26000000210000000000000031000000010000003737000001000000 26000000210000000000000031000000010000003737000001000000 - {e=>3,a=>1,m=>6,d=>6,j=>-117,l=>-4,c=>-1,k=>5,h=>-4,b=>0,g=>2,f=>6,i=>7} c10100001e0600000022070000008b2506000000 c10100001e00060000002200070000008b2506000000 c10100001e0000000600000022000000070000008b25000006000000 c10100001e0000000600000022000000070000008b25000006000000 - {e=>2,a=>2,m=>4,d=>7,j=>-36,l=>3,c=>-1,k=>7,h=>3,b=>3,g=>3,f=>5,i=>5} da01000017050000001b05000000dc1f04000000 da0100001700050000001b0005000000dc1f04000000 da01000017000000050000001b00000005000000dc1f000004000000 da01000017000000050000001b00000005000000dc1f000004000000 - {e=>1,a=>0,m=>7,d=>6,j=>-99,l=>-1,c=>0,k=>7,h=>-4,b=>1,g=>0,f=>3,i=>1} 080000000e0300000020010000009d3f07000000 080000000e00030000002000010000009d3f07000000 080000000e0000000300000020000000010000009d3f000007000000 080000000e0000000300000020000000010000009d3f000007000000 - {e=>1,a=>2,m=>1,d=>3,j=>57,l=>-1,c=>0,k=>5,h=>3,b=>-4,g=>4,f=>4,i=>6} 220000000b040000001c06000000393d01000000 220000000b00040000001c0006000000393d01000000 220000000b000000040000001c00000006000000393d000001000000 220000000b000000040000001c00000006000000393d000001000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>0,n=>177,a=>4,m=>2,d=>0,j=>-5,l=>-2,c=>3,k=>3,h=>-3,b=>0,g=>7,f=>7,i=>3} c400000000070000002f03000000fb3302000000b1 c40000000000070000002f0003000000fb3302000000b100 c400000000000000070000002f00000003000000fb33000002000000b1000000 c400000000000000070000002f00000003000000fb33000002000000b1000000 - {e=>-3,n=>5,a=>7,m=>4,d=>0,j=>90,l=>-1,c=>-1,k=>6,h=>-4,b=>3,g=>6,f=>3,i=>2} df010000280300000026020000005a3e0400000005 df0100002800030000002600020000005a3e040000000500 df010000280000000300000026000000020000005a3e00000400000005000000 df010000280000000300000026000000020000005a3e00000400000005000000 - {e=>-2,n=>218,a=>6,m=>2,d=>3,j=>122,l=>-3,c=>0,k=>7,h=>-3,b=>-2,g=>0,f=>1,i=>0} 36000000330100000028000000007a2f02000000da 360000003300010000002800000000007a2f02000000da00 36000000330000000100000028000000000000007a2f000002000000da000000 36000000330000000100000028000000000000007a2f000002000000da000000 - {e=>-2,n=>245,a=>5,m=>7,d=>2,j=>-67,l=>-1,c=>3,k=>0,h=>3,b=>-2,g=>3,f=>5,i=>0} f500000032050000001b00000000bd3807000000f5 f50000003200050000001b0000000000bd3807000000f500 f500000032000000050000001b00000000000000bd38000007000000f5000000 f500000032000000050000001b00000000000000bd38000007000000f5000000 - {e=>3,n=>3,a=>5,m=>6,d=>6,j=>-78,l=>3,c=>-1,k=>5,h=>2,b=>2,g=>4,f=>7,i=>5} d50100001e070000001405000000b21d0600000003 d50100001e0007000000140005000000b21d060000000300 d50100001e000000070000001400000005000000b21d00000600000003000000 d50100001e000000070000001400000005000000b21d00000600000003000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; }; - {a=>13,b=>7} 0d07000000 0d0007000000 0d00000007000000 0d00000007000000 - {a=>-33,b=>1} df01000000 df0001000000 df00000001000000 df00000001000000 - {a=>-85,b=>1} ab01000000 ab0001000000 ab00000001000000 ab00000001000000 - {a=>58,b=>4} 3a04000000 3a0004000000 3a00000004000000 3a00000004000000 - {a=>18,b=>6} 1206000000 120006000000 1200000006000000 1200000006000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>8,b=>7} 0827000000 080027000000 0800000027000000 0800000027000000 - {c=>2,a=>-98,b=>6} 9e16000000 9e0016000000 9e00000016000000 9e00000016000000 - {c=>-4,a=>-119,b=>6} 8926000000 890026000000 8900000026000000 8900000026000000 - {c=>3,a=>-114,b=>0} 8e18000000 8e0018000000 8e00000018000000 8e00000018000000 - {c=>-4,a=>104,b=>7} 6827000000 680027000000 6800000027000000 6800000027000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>2,a=>90,b=>5,d=>-3} 5a55010000 5a0055010000 5a00000055010000 5a00000055010000 - {c=>-3,a=>-24,b=>2,d=>-1} e8ea010000 e800ea010000 e8000000ea010000 e8000000ea010000 - {c=>0,a=>-46,b=>4,d=>-4} d204010000 d20004010000 d200000004010000 d200000004010000 - {c=>1,a=>-95,b=>5,d=>-3} a14d010000 a1004d010000 a10000004d010000 a10000004d010000 - {c=>3,a=>-50,b=>5,d=>-3} ce5d010000 ce005d010000 ce0000005d010000 ce0000005d010000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>3,a=>-67,b=>0,d=>-1} bdd801000002 bd00d80100000200 bd000000d801000002000000 bd000000d801000002000000 - {e=>6,c=>0,a=>-85,b=>0,d=>3} abc000000006 ab00c00000000600 ab000000c000000006000000 ab000000c000000006000000 - {e=>1,c=>-4,a=>27,b=>3,d=>3} 1be300000001 1b00e30000000100 1b000000e300000001000000 1b000000e300000001000000 - {e=>3,c=>1,a=>-53,b=>7,d=>3} cbcf00000003 cb00cf0000000300 cb000000cf00000003000000 cb000000cf00000003000000 - {e=>4,c=>3,a=>-28,b=>2,d=>-4} e41a01000004 e4001a0100000400 e40000001a01000004000000 e40000001a01000004000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>-1,a=>54,b=>0,d=>-1,f=>-4} 36f801000021 3600f80100002100 36000000f801000021000000 36000000f801000021000000 - {e=>5,c=>-2,a=>43,b=>2,d=>-2,f=>-4} 2bb201000025 2b00b20100002500 2b000000b201000025000000 2b000000b201000025000000 - {e=>2,c=>-1,a=>57,b=>7,d=>0,f=>-3} 393f0000002a 39003f0000002a00 390000003f0000002a000000 390000003f0000002a000000 - {e=>2,c=>-4,a=>-86,b=>0,d=>-4,f=>2} aa2001000012 aa00200100001200 aa0000002001000012000000 aa0000002001000012000000 - {e=>5,c=>-4,a=>36,b=>6,d=>-2,f=>1} 24a60100000d 2400a60100000d00 24000000a60100000d000000 24000000a60100000d000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>1,c=>-1,a=>-59,g=>1,b=>7,d=>-1,f=>1} c5ff0100000901000000 c500ff010000090001000000 c5000000ff0100000900000001000000 c5000000ff0100000900000001000000 - {e=>0,c=>-3,a=>-42,g=>3,b=>3,d=>-1,f=>3} d6eb0100001803000000 d600eb010000180003000000 d6000000eb0100001800000003000000 d6000000eb0100001800000003000000 - {e=>1,c=>-3,a=>-91,g=>5,b=>1,d=>1,f=>2} a5690000001105000000 a50069000000110005000000 a5000000690000001100000005000000 a5000000690000001100000005000000 - {e=>3,c=>-2,a=>3,g=>0,b=>1,d=>0,f=>-1} 03310000003b00000000 0300310000003b0000000000 03000000310000003b00000000000000 03000000310000003b00000000000000 - {e=>1,c=>-2,a=>-94,g=>1,b=>0,d=>-1,f=>2} a2f00100001101000000 a200f0010000110001000000 a2000000f00100001100000001000000 a2000000f00100001100000001000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>3,c=>3,a=>-87,g=>4,b=>0,d=>2,f=>2} a9980000001304000000 a90098000000130004000000 a9000000980000001300000004000000 a9000000980000001300000004000000 - {e=>3,c=>2,a=>-100,g=>0,b=>7,d=>-2,f=>-4} 9c970100002300000000 9c0097010000230000000000 9c000000970100002300000000000000 9c000000970100002300000000000000 - {e=>4,c=>3,a=>30,g=>4,b=>0,d=>3,f=>-3} 1ed80000002c04000000 1e00d80000002c0004000000 1e000000d80000002c00000004000000 1e000000d80000002c00000004000000 - {e=>3,c=>3,a=>117,g=>7,b=>3,d=>-3,f=>1} 755b0100000b07000000 75005b0100000b0007000000 750000005b0100000b00000007000000 750000005b0100000b00000007000000 - {e=>4,c=>-2,a=>-117,g=>5,b=>2,d=>-1,f=>0} 8bf20100000405000000 8b00f2010000040005000000 8b000000f20100000400000005000000 8b000000f20100000400000005000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>5,d=>-4,c=>1,h=>7,b=>0,g=>0,f=>-1} 05080100003b0000000007 0500080100003b00000000000700 05000000080100003b0000000000000007000000 05000000080100003b0000000000000007000000 - {e=>5,a=>30,d=>-4,c=>3,h=>3,b=>7,g=>4,f=>-1} 1e1f0100003d0400000003 1e001f0100003d00040000000300 1e0000001f0100003d0000000400000003000000 1e0000001f0100003d0000000400000003000000 - {e=>7,a=>0,d=>-3,c=>1,h=>0,b=>7,g=>2,f=>-1} 004f0100003f0200000000 00004f0100003f00020000000000 000000004f0100003f0000000200000000000000 000000004f0100003f0000000200000000000000 - {e=>0,a=>126,d=>-3,c=>0,h=>0,b=>2,g=>5,f=>-1} 7e42010000380500000000 7e00420100003800050000000000 7e00000042010000380000000500000000000000 7e00000042010000380000000500000000000000 - {e=>0,a=>4,d=>-1,c=>-3,h=>7,b=>2,g=>4,f=>3} 04ea010000180400000007 0400ea0100001800040000000700 04000000ea010000180000000400000007000000 04000000ea010000180000000400000007000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>55,d=>-4,c=>-4,h=>0,b=>6,g=>4,f=>2,i=>-3} 3726010000120400000028 3700260100001200040000002800 3700000026010000120000000400000028000000 3700000026010000120000000400000028000000 - {e=>5,a=>43,d=>1,c=>1,h=>1,b=>3,g=>7,f=>-3,i=>1} 2b4b0000002d0700000009 2b004b0000002d00070000000900 2b0000004b0000002d0000000700000009000000 2b0000004b0000002d0000000700000009000000 - {e=>2,a=>-68,d=>-4,c=>-1,h=>6,b=>2,g=>5,f=>-3,i=>-3} bc3a0100002a050000002e bc003a0100002a00050000002e00 bc0000003a0100002a000000050000002e000000 bc0000003a0100002a000000050000002e000000 - {e=>3,a=>-9,d=>2,c=>-4,h=>6,b=>3,g=>7,f=>-3,i=>1} f7a30000002b070000000e f700a30000002b00070000000e00 f7000000a30000002b000000070000000e000000 f7000000a30000002b000000070000000e000000 - {e=>6,a=>-80,d=>1,c=>-2,h=>3,b=>1,g=>5,f=>3,i=>-3} b0710000001e050000002b b000710000001e00050000002b00 b0000000710000001e000000050000002b000000 b0000000710000001e000000050000002b000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>5,a=>114,d=>-4,j=>4,c=>3,h=>6,b=>2,g=>0,f=>-4,i=>2} 721a01000025000000001604000000 72001a010000250000000000160004000000 720000001a01000025000000000000001600000004000000 720000001a01000025000000000000001600000004000000 - {e=>3,a=>-15,d=>-2,j=>6,c=>-1,h=>1,b=>0,g=>2,f=>2,i=>0} f1b801000013020000000106000000 f100b8010000130002000000010006000000 f1000000b801000013000000020000000100000006000000 f1000000b801000013000000020000000100000006000000 - {e=>6,a=>-68,d=>-2,j=>5,c=>-3,h=>1,b=>4,g=>0,f=>-1,i=>2} bcac0100003e000000001105000000 bc00ac0100003e0000000000110005000000 bc000000ac0100003e000000000000001100000005000000 bc000000ac0100003e000000000000001100000005000000 - {e=>4,a=>-102,d=>0,j=>1,c=>1,h=>4,b=>1,g=>0,f=>1,i=>-3} 9a090000000c000000002c01000000 9a00090000000c00000000002c0001000000 9a000000090000000c000000000000002c00000001000000 9a000000090000000c000000000000002c00000001000000 - {e=>7,a=>-118,d=>-4,j=>3,c=>-2,h=>3,b=>3,g=>4,f=>1,i=>-1} 8a330100000f040000003b03000000 8a00330100000f00040000003b0003000000 8a000000330100000f000000040000003b00000003000000 8a000000330100000f000000040000003b00000003000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>4,a=>36,d=>-2,j=>7,c=>1,k=>-85,h=>7,b=>5,g=>7,f=>-4,i=>-3} 248d01000024070000002f07000000ab 24008d0100002400070000002f0007000000ab00 240000008d01000024000000070000002f00000007000000ab000000 240000008d01000024000000070000002f00000007000000ab000000 - {e=>2,a=>57,d=>2,j=>6,c=>0,k=>-127,h=>0,b=>5,g=>5,f=>1,i=>-1} 39850000000a05000000380600000081 3900850000000a00050000003800060000008100 39000000850000000a00000005000000380000000600000081000000 39000000850000000a00000005000000380000000600000081000000 - {e=>7,a=>-85,d=>1,j=>0,c=>-2,k=>-9,h=>1,b=>1,g=>4,f=>0,i=>-2} ab7100000007040000003100000000f7 ab0071000000070004000000310000000000f700 ab0000007100000007000000040000003100000000000000f7000000 ab0000007100000007000000040000003100000000000000f7000000 - {e=>6,a=>12,d=>3,j=>2,c=>-1,k=>-109,h=>0,b=>1,g=>1,f=>3,i=>-2} 0cf90000001e01000000300200000093 0c00f90000001e00010000003000020000009300 0c000000f90000001e00000001000000300000000200000093000000 0c000000f90000001e00000001000000300000000200000093000000 - {e=>3,a=>-93,d=>-3,j=>3,c=>0,k=>38,h=>2,b=>4,g=>2,f=>-3,i=>-3} a3440100002b020000002a0300000026 a300440100002b00020000002a00030000002600 a3000000440100002b000000020000002a0000000300000026000000 a3000000440100002b000000020000002a0000000300000026000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>-121,d=>0,j=>7,l=>7,c=>-2,k=>104,h=>5,b=>5,g=>2,f=>-1,i=>-1} 873500000039020000003d070000006807 8700350000003900020000003d00070000006807 870000003500000039000000020000003d0000000700000068070000 870000003500000039000000020000003d0000000700000068070000 - {e=>4,a=>-69,d=>0,j=>7,l=>3,c=>3,k=>116,h=>2,b=>5,g=>0,f=>2,i=>3} bb1d00000014000000001a070000007403 bb001d0000001400000000001a00070000007403 bb0000001d00000014000000000000001a0000000700000074030000 bb0000001d00000014000000000000001a0000000700000074030000 - {e=>7,a=>-88,d=>3,j=>2,l=>6,c=>-2,k=>94,h=>0,b=>1,g=>0,f=>-2,i=>2} a8f1000000370000000010020000005e06 a800f10000003700000000001000020000005e06 a8000000f1000000370000000000000010000000020000005e060000 a8000000f1000000370000000000000010000000020000005e060000 - {e=>7,a=>41,d=>1,j=>2,l=>2,c=>-2,k=>-6,h=>1,b=>4,g=>1,f=>-3,i=>2} 29740000002f010000001102000000fa02 2900740000002f0001000000110002000000fa02 29000000740000002f000000010000001100000002000000fa020000 29000000740000002f000000010000001100000002000000fa020000 - {e=>1,a=>-123,d=>-2,j=>3,l=>7,c=>3,k=>82,h=>1,b=>6,g=>6,f=>0,i=>-3} 859e010000010600000029030000005207 85009e0100000100060000002900030000005207 850000009e0100000100000006000000290000000300000052070000 850000009e0100000100000006000000290000000300000052070000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-121,m=>2,d=>-2,j=>6,l=>3,c=>0,k=>-106,h=>5,b=>7,g=>4,f=>3,i=>2} 87870100001c0400000015060000009613 8700870100001c00040000001500060000009613 87000000870100001c00000004000000150000000600000096130000 87000000870100001c00000004000000150000000600000096130000 - {e=>7,a=>-56,m=>1,d=>-1,j=>2,l=>7,c=>3,k=>102,h=>6,b=>0,g=>6,f=>-4,i=>-3} c8d801000027060000002e02000000660f c800d80100002700060000002e0002000000660f c8000000d801000027000000060000002e00000002000000660f0000 c8000000d801000027000000060000002e00000002000000660f0000 - {e=>3,a=>-72,m=>-4,d=>-1,j=>6,l=>2,c=>-1,k=>-50,h=>4,b=>2,g=>1,f=>1,i=>-3} b8fa0100000b010000002c06000000ce22 b800fa0100000b00010000002c0006000000ce22 b8000000fa0100000b000000010000002c00000006000000ce220000 b8000000fa0100000b000000010000002c00000006000000ce220000 - {e=>5,a=>84,m=>-4,d=>-2,j=>4,l=>0,c=>1,k=>-79,h=>5,b=>6,g=>1,f=>3,i=>1} 548e0100001d010000000d04000000b120 54008e0100001d00010000000d0004000000b120 540000008e0100001d000000010000000d00000004000000b1200000 540000008e0100001d000000010000000d00000004000000b1200000 - {e=>6,a=>-18,m=>-2,d=>-4,j=>7,l=>4,c=>-1,k=>-2,h=>1,b=>1,g=>4,f=>3,i=>-3} ee390100001e040000002907000000fe34 ee00390100001e0004000000290007000000fe34 ee000000390100001e000000040000002900000007000000fe340000 ee000000390100001e000000040000002900000007000000fe340000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>6,a=>-112,m=>3,d=>-1,j=>2,l=>0,c=>-3,k=>39,h=>4,b=>6,g=>4,f=>3,i=>2} 90ee0100001d040000001402000000271806000000 9000ee0100001d0004000000140002000000271806000000 90000000ee0100001d0000000400000014000000020000002718000006000000 90000000ee0100001d0000000400000014000000020000002718000006000000 - {e=>1,n=>2,a=>93,m=>-2,d=>2,j=>5,l=>5,c=>2,k=>-95,h=>1,b=>6,g=>0,f=>-1,i=>-3} 5d9600000039000000002905000000a13502000000 5d0096000000390000000000290005000000a13502000000 5d0000009600000039000000000000002900000005000000a135000002000000 5d0000009600000039000000000000002900000005000000a135000002000000 - {e=>2,n=>1,a=>55,m=>2,d=>-2,j=>0,l=>0,c=>-2,k=>-97,h=>1,b=>7,g=>1,f=>3,i=>3} 37b70100001a0100000019000000009f1001000000 3700b70100001a00010000001900000000009f1001000000 37000000b70100001a0000000100000019000000000000009f10000001000000 37000000b70100001a0000000100000019000000000000009f10000001000000 - {e=>6,n=>2,a=>2,m=>2,d=>0,j=>7,l=>5,c=>-1,k=>-32,h=>7,b=>0,g=>5,f=>-2,i=>2} 023800000036050000001707000000e01502000000 020038000000360005000000170007000000e01502000000 020000003800000036000000050000001700000007000000e015000002000000 020000003800000036000000050000001700000007000000e015000002000000 - {e=>1,n=>2,a=>-65,m=>0,d=>-3,j=>5,l=>6,c=>-1,k=>10,h=>2,b=>2,g=>3,f=>-4,i=>2} bf7a010000210300000012050000000a0602000000 bf007a0100002100030000001200050000000a0602000000 bf0000007a010000210000000300000012000000050000000a06000002000000 bf0000007a010000210000000300000012000000050000000a06000002000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>4,n=>4,a=>96,m=>-1,d=>-4,j=>2,l=>1,c=>-2,k=>-106,h=>1,b=>4,g=>2,f=>-2,o=>172,i=>3} 603401000034020000001902000000963904000000ac 600034010000340002000000190002000000963904000000ac00 6000000034010000340000000200000019000000020000009639000004000000ac000000 6000000034010000340000000200000019000000020000009639000004000000ac000000 - {e=>3,n=>3,a=>-103,m=>-2,d=>-1,j=>6,l=>2,c=>-3,k=>-23,h=>7,b=>7,g=>4,f=>-3,o=>204,i=>0} 99ef0100002b040000000706000000e93203000000cc 9900ef0100002b0004000000070006000000e93203000000cc00 99000000ef0100002b000000040000000700000006000000e932000003000000cc000000 99000000ef0100002b000000040000000700000006000000e932000003000000cc000000 - {e=>7,n=>2,a=>-104,m=>3,d=>2,j=>7,l=>5,c=>2,k=>49,h=>2,b=>0,g=>0,f=>3,o=>143,i=>0} 98900000001f000000000207000000311d020000008f 9800900000001f0000000000020007000000311d020000008f00 98000000900000001f000000000000000200000007000000311d0000020000008f000000 98000000900000001f000000000000000200000007000000311d0000020000008f000000 - {e=>7,n=>0,a=>-12,m=>1,d=>2,j=>3,l=>2,c=>3,k=>73,h=>6,b=>0,g=>3,f=>-2,o=>165,i=>-3} f49800000037030000002e03000000490a00000000a5 f400980000003700030000002e0003000000490a00000000a500 f40000009800000037000000030000002e00000003000000490a000000000000a5000000 f40000009800000037000000030000002e00000003000000490a000000000000a5000000 - {e=>2,n=>6,a=>-124,m=>-3,d=>-3,j=>1,l=>3,c=>-4,k=>109,h=>1,b=>5,g=>0,f=>-2,o=>55,i=>-3} 8465010000320000000029010000006d2b0600000037 8400650100003200000000002900010000006d2b060000003700 8400000065010000320000000000000029000000010000006d2b00000600000037000000 8400000065010000320000000000000029000000010000006d2b00000600000037000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; }; - {a=>92,b=>1} 5c0001000000 5c0001000000 5c00000001000000 5c00000001000000 - {a=>51,b=>4} 330004000000 330004000000 3300000004000000 3300000004000000 - {a=>-66,b=>3} beff03000000 beff03000000 beff000003000000 beff000003000000 - {a=>-113,b=>2} 8fff02000000 8fff02000000 8fff000002000000 8fff000002000000 - {a=>10,b=>0} 0a0000000000 0a0000000000 0a00000000000000 0a00000000000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-103,b=>5} 99ff05000000 99ff05000000 99ff000005000000 99ff000005000000 - {c=>0,a=>-75,b=>2} b5ff02000000 b5ff02000000 b5ff000002000000 b5ff000002000000 - {c=>-4,a=>-81,b=>3} afff23000000 afff23000000 afff000023000000 afff000023000000 - {c=>-2,a=>14,b=>7} 0e0037000000 0e0037000000 0e00000037000000 0e00000037000000 - {c=>0,a=>94,b=>1} 5e0001000000 5e0001000000 5e00000001000000 5e00000001000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-1,a=>-100,b=>5,d=>1} 9cff7d000000 9cff7d000000 9cff00007d000000 9cff00007d000000 - {c=>3,a=>107,b=>2,d=>-4} 6b001a010000 6b001a010000 6b0000001a010000 6b0000001a010000 - {c=>1,a=>-24,b=>1,d=>1} e8ff49000000 e8ff49000000 e8ff000049000000 e8ff000049000000 - {c=>-2,a=>-62,b=>0,d=>2} c2ffb0000000 c2ffb0000000 c2ff0000b0000000 c2ff0000b0000000 - {c=>0,a=>-40,b=>6,d=>-1} d8ffc6010000 d8ffc6010000 d8ff0000c6010000 d8ff0000c6010000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-4,a=>-8,b=>5,d=>3} f8ffe500000004 f8ffe50000000400 f8ff0000e500000004000000 f8ff0000e500000004000000 - {e=>4,c=>-3,a=>-46,b=>4,d=>2} d2ffac00000004 d2ffac0000000400 d2ff0000ac00000004000000 d2ff0000ac00000004000000 - {e=>2,c=>0,a=>-15,b=>0,d=>-2} f1ff8001000002 f1ff800100000200 f1ff00008001000002000000 f1ff00008001000002000000 - {e=>6,c=>3,a=>97,b=>1,d=>-1} 6100d901000006 6100d90100000600 61000000d901000006000000 61000000d901000006000000 - {e=>5,c=>1,a=>86,b=>2,d=>-1} 5600ca01000005 5600ca0100000500 56000000ca01000005000000 56000000ca01000005000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>-4,a=>-30,b=>0,d=>2,f=>-4} e2ffa000000022 e2ffa00000002200 e2ff0000a000000022000000 e2ff0000a000000022000000 - {e=>3,c=>-2,a=>58,b=>7,d=>3,f=>-2} 3a00f700000033 3a00f70000003300 3a000000f700000033000000 3a000000f700000033000000 - {e=>3,c=>2,a=>-93,b=>0,d=>1,f=>2} a3ff5000000013 a3ff500000001300 a3ff00005000000013000000 a3ff00005000000013000000 - {e=>2,c=>3,a=>17,b=>1,d=>-3,f=>2} 11005901000012 1100590100001200 110000005901000012000000 110000005901000012000000 - {e=>3,c=>2,a=>-36,b=>3,d=>-1,f=>1} dcffd30100000b dcffd30100000b00 dcff0000d30100000b000000 dcff0000d30100000b000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>6,c=>3,a=>-5,g=>1,b=>4,d=>-4,f=>-4} fbff1c0100002601000000 fbff1c010000260001000000 fbff00001c0100002600000001000000 fbff00001c0100002600000001000000 - {e=>1,c=>0,a=>5,g=>5,b=>6,d=>-1,f=>-3} 0500c60100002905000000 0500c6010000290005000000 05000000c60100002900000005000000 05000000c60100002900000005000000 - {e=>5,c=>-3,a=>94,g=>6,b=>0,d=>-1,f=>2} 5e00e80100001506000000 5e00e8010000150006000000 5e000000e80100001500000006000000 5e000000e80100001500000006000000 - {e=>5,c=>-3,a=>-86,g=>4,b=>3,d=>2,f=>2} aaffab0000001504000000 aaffab000000150004000000 aaff0000ab0000001500000004000000 aaff0000ab0000001500000004000000 - {e=>6,c=>0,a=>-114,g=>6,b=>6,d=>-3,f=>-4} 8eff460100002606000000 8eff46010000260006000000 8eff0000460100002600000006000000 8eff0000460100002600000006000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>7,c=>-1,a=>-26,g=>4,b=>2,d=>-1,f=>-2} e6fffa0100003704000000 e6fffa010000370004000000 e6ff0000fa0100003700000004000000 e6ff0000fa0100003700000004000000 - {e=>3,c=>-3,a=>-39,g=>5,b=>5,d=>2,f=>3} d9ffad0000001b05000000 d9ffad0000001b0005000000 d9ff0000ad0000001b00000005000000 d9ff0000ad0000001b00000005000000 - {e=>2,c=>-1,a=>-108,g=>4,b=>7,d=>1,f=>0} 94ff7f0000000204000000 94ff7f000000020004000000 94ff00007f0000000200000004000000 94ff00007f0000000200000004000000 - {e=>1,c=>3,a=>36,g=>7,b=>4,d=>1,f=>-4} 24005c0000002107000000 24005c000000210007000000 240000005c0000002100000007000000 240000005c0000002100000007000000 - {e=>0,c=>1,a=>-70,g=>2,b=>0,d=>-3,f=>0} baff480100000002000000 baff48010000000002000000 baff0000480100000000000002000000 baff0000480100000000000002000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>-73,d=>3,c=>-4,h=>3,b=>3,g=>5,f=>-2} b7ffe3000000310500000003 b7ffe30000003100050000000300 b7ff0000e3000000310000000500000003000000 b7ff0000e3000000310000000500000003000000 - {e=>2,a=>106,d=>3,c=>-1,h=>4,b=>0,g=>6,f=>-2} 6a00f8000000320600000004 6a00f80000003200060000000400 6a000000f8000000320000000600000004000000 6a000000f8000000320000000600000004000000 - {e=>2,a=>-78,d=>3,c=>3,h=>6,b=>0,g=>0,f=>-1} b2ffd80000003a0000000006 b2ffd80000003a00000000000600 b2ff0000d80000003a0000000000000006000000 b2ff0000d80000003a0000000000000006000000 - {e=>4,a=>-84,d=>-2,c=>3,h=>4,b=>3,g=>5,f=>-3} acff9b0100002c0500000004 acff9b0100002c00050000000400 acff00009b0100002c0000000500000004000000 acff00009b0100002c0000000500000004000000 - {e=>7,a=>-108,d=>1,c=>-4,h=>2,b=>4,g=>5,f=>-4} 94ff64000000270500000002 94ff640000002700050000000200 94ff000064000000270000000500000002000000 94ff000064000000270000000500000002000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>113,d=>3,c=>2,h=>4,b=>1,g=>6,f=>2,i=>3} 7100d100000014060000001c 7100d10000001400060000001c00 71000000d100000014000000060000001c000000 71000000d100000014000000060000001c000000 - {e=>7,a=>83,d=>-1,c=>3,h=>0,b=>0,g=>4,f=>-3,i=>-2} 5300d80100002f0400000030 5300d80100002f00040000003000 53000000d80100002f0000000400000030000000 53000000d80100002f0000000400000030000000 - {e=>2,a=>-34,d=>3,c=>-4,h=>4,b=>4,g=>0,f=>1,i=>-3} deffe40000000a000000002c deffe40000000a00000000002c00 deff0000e40000000a000000000000002c000000 deff0000e40000000a000000000000002c000000 - {e=>1,a=>87,d=>1,c=>0,h=>1,b=>7,g=>0,f=>1,i=>-1} 570047000000090000000039 5700470000000900000000003900 5700000047000000090000000000000039000000 5700000047000000090000000000000039000000 - {e=>1,a=>-63,d=>3,c=>-1,h=>2,b=>1,g=>6,f=>1,i=>-3} c1fff900000009060000002a c1fff90000000900060000002a00 c1ff0000f900000009000000060000002a000000 c1ff0000f900000009000000060000002a000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-8,d=>3,j=>1,c=>-3,h=>0,b=>1,g=>7,f=>3,i=>2} f8ffe900000018070000001001000000 f8ffe9000000180007000000100001000000 f8ff0000e900000018000000070000001000000001000000 f8ff0000e900000018000000070000001000000001000000 - {e=>1,a=>-18,d=>-3,j=>7,c=>-4,h=>4,b=>2,g=>0,f=>3,i=>-2} eeff6201000019000000003407000000 eeff62010000190000000000340007000000 eeff00006201000019000000000000003400000007000000 eeff00006201000019000000000000003400000007000000 - {e=>7,a=>-19,d=>0,j=>4,c=>2,h=>1,b=>3,g=>3,f=>-4,i=>3} edff1300000027030000001904000000 edff13000000270003000000190004000000 edff00001300000027000000030000001900000004000000 edff00001300000027000000030000001900000004000000 - {e=>4,a=>43,d=>-3,j=>6,c=>-4,h=>4,b=>0,g=>5,f=>3,i=>-3} 2b00600100001c050000002c06000000 2b00600100001c00050000002c0006000000 2b000000600100001c000000050000002c00000006000000 2b000000600100001c000000050000002c00000006000000 - {e=>3,a=>-3,d=>0,j=>5,c=>1,h=>7,b=>6,g=>0,f=>2,i=>1} fdff0e00000013000000000f05000000 fdff0e0000001300000000000f0005000000 fdff00000e00000013000000000000000f00000005000000 fdff00000e00000013000000000000000f00000005000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>1,a=>29,d=>-1,j=>7,c=>-3,k=>-108,h=>1,b=>7,g=>6,f=>2,i=>-1} 1d00ef0100001106000000390700000094 1d00ef0100001100060000003900070000009400 1d000000ef0100001100000006000000390000000700000094000000 1d000000ef0100001100000006000000390000000700000094000000 - {e=>3,a=>48,d=>1,j=>5,c=>1,k=>-74,h=>0,b=>5,g=>7,f=>-2,i=>-2} 30004d00000033070000003005000000b6 30004d000000330007000000300005000000b600 300000004d00000033000000070000003000000005000000b6000000 300000004d00000033000000070000003000000005000000b6000000 - {e=>7,a=>-122,d=>2,j=>0,c=>-3,k=>14,h=>2,b=>1,g=>4,f=>-4,i=>0} 86ffa9000000270400000002000000000e 86ffa90000002700040000000200000000000e00 86ff0000a9000000270000000400000002000000000000000e000000 86ff0000a9000000270000000400000002000000000000000e000000 - {e=>5,a=>-32,d=>-4,j=>2,c=>3,k=>-91,h=>7,b=>0,g=>3,f=>0,i=>2} e0ff1801000005030000001702000000a5 e0ff18010000050003000000170002000000a500 e0ff00001801000005000000030000001700000002000000a5000000 e0ff00001801000005000000030000001700000002000000a5000000 - {e=>4,a=>-6,d=>2,j=>0,c=>-4,k=>-31,h=>6,b=>7,g=>4,f=>1,i=>0} faffa70000000c040000000600000000e1 faffa70000000c0004000000060000000000e100 faff0000a70000000c000000040000000600000000000000e1000000 faff0000a70000000c000000040000000600000000000000e1000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>100,d=>-3,j=>2,l=>1,c=>-3,k=>17,h=>3,b=>6,g=>3,f=>3,i=>3} 64006e01000019030000001b020000001101 64006e0100001900030000001b00020000001101 640000006e01000019000000030000001b0000000200000011010000 640000006e01000019000000030000001b0000000200000011010000 - {e=>3,a=>46,d=>-4,j=>5,l=>3,c=>1,k=>-95,h=>7,b=>4,g=>7,f=>0,i=>1} 2e000c01000003070000000f05000000a103 2e000c0100000300070000000f0005000000a103 2e0000000c01000003000000070000000f00000005000000a1030000 2e0000000c01000003000000070000000f00000005000000a1030000 - {e=>3,a=>-72,d=>0,j=>6,l=>7,c=>-2,k=>41,h=>2,b=>2,g=>2,f=>2,i=>-3} b8ff3200000013020000002a060000002907 b8ff320000001300020000002a00060000002907 b8ff00003200000013000000020000002a0000000600000029070000 b8ff00003200000013000000020000002a0000000600000029070000 - {e=>5,a=>84,d=>-1,j=>6,l=>5,c=>2,k=>95,h=>3,b=>4,g=>4,f=>2,i=>-4} 5400d4010000150400000023060000005f05 5400d40100001500040000002300060000005f05 54000000d4010000150000000400000023000000060000005f050000 54000000d4010000150000000400000023000000060000005f050000 - {e=>1,a=>13,d=>-2,j=>3,l=>0,c=>-3,k=>-14,h=>2,b=>5,g=>0,f=>1,i=>-4} 0d00ad01000009000000002203000000f200 0d00ad010000090000000000220003000000f200 0d000000ad01000009000000000000002200000003000000f2000000 0d000000ad01000009000000000000002200000003000000f2000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>-88,m=>2,d=>0,j=>2,l=>5,c=>0,k=>96,h=>5,b=>0,g=>7,f=>2,i=>3} a8ff0000000017070000001d020000006015 a8ff000000001700070000001d00020000006015 a8ff00000000000017000000070000001d0000000200000060150000 a8ff00000000000017000000070000001d0000000200000060150000 - {e=>2,a=>-64,m=>1,d=>-2,j=>2,l=>0,c=>0,k=>83,h=>6,b=>7,g=>5,f=>-3,i=>1} c0ff870100002a050000000e020000005308 c0ff870100002a00050000000e00020000005308 c0ff0000870100002a000000050000000e0000000200000053080000 c0ff0000870100002a000000050000000e0000000200000053080000 - {e=>1,a=>50,m=>3,d=>0,j=>6,l=>6,c=>-4,k=>20,h=>4,b=>1,g=>7,f=>0,i=>-2} 32002100000001070000003406000000141e 320021000000010007000000340006000000141e 320000002100000001000000070000003400000006000000141e0000 320000002100000001000000070000003400000006000000141e0000 - {e=>3,a=>-2,m=>1,d=>-1,j=>4,l=>0,c=>-1,k=>106,h=>4,b=>2,g=>6,f=>-3,i=>0} fefffa0100002b0600000004040000006a08 fefffa0100002b00060000000400040000006a08 feff0000fa0100002b0000000600000004000000040000006a080000 feff0000fa0100002b0000000600000004000000040000006a080000 - {e=>3,a=>126,m=>2,d=>-4,j=>7,l=>2,c=>-4,k=>-75,h=>0,b=>2,g=>7,f=>-3,i=>-2} 7e00220100002b070000003007000000b512 7e00220100002b0007000000300007000000b512 7e000000220100002b000000070000003000000007000000b5120000 7e000000220100002b000000070000003000000007000000b5120000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>0,n=>3,a=>114,m=>2,d=>1,j=>4,l=>2,c=>0,k=>-114,h=>1,b=>5,g=>1,f=>1,i=>2} 720045000000080100000011040000008e1203000000 7200450000000800010000001100040000008e1203000000 7200000045000000080000000100000011000000040000008e12000003000000 7200000045000000080000000100000011000000040000008e12000003000000 - {e=>0,n=>2,a=>11,m=>1,d=>-2,j=>4,l=>7,c=>-4,k=>-117,h=>6,b=>1,g=>5,f=>1,i=>3} 0b00a101000008050000001e040000008b0f02000000 0b00a10100000800050000001e00040000008b0f02000000 0b000000a101000008000000050000001e000000040000008b0f000002000000 0b000000a101000008000000050000001e000000040000008b0f000002000000 - {e=>5,n=>4,a=>8,m=>0,d=>2,j=>7,l=>3,c=>3,k=>71,h=>7,b=>2,g=>4,f=>-4,i=>2} 08009a00000025040000001707000000470304000000 08009a000000250004000000170007000000470304000000 080000009a000000250000000400000017000000070000004703000004000000 080000009a000000250000000400000017000000070000004703000004000000 - {e=>4,n=>5,a=>25,m=>1,d=>2,j=>3,l=>7,c=>-1,k=>-69,h=>4,b=>5,g=>6,f=>1,i=>-1} 1900bd0000000c060000003c03000000bb0f05000000 1900bd0000000c00060000003c0003000000bb0f05000000 19000000bd0000000c000000060000003c00000003000000bb0f000005000000 19000000bd0000000c000000060000003c00000003000000bb0f000005000000 - {e=>1,n=>3,a=>71,m=>3,d=>-1,j=>0,l=>0,c=>-2,k=>28,h=>1,b=>7,g=>3,f=>0,i=>1} 4700f7010000010300000009000000001c1803000000 4700f70100000100030000000900000000001c1803000000 47000000f7010000010000000300000009000000000000001c18000003000000 47000000f7010000010000000300000009000000000000001c18000003000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>2,a=>-53,m=>-1,d=>2,j=>2,l=>6,c=>-3,k=>-55,h=>7,b=>3,g=>6,f=>3,o=>97,i=>-4} cbffab0000001a060000002702000000c93e0200000061 cbffab0000001a0006000000270002000000c93e020000006100 cbff0000ab0000001a000000060000002700000002000000c93e00000200000061000000 cbff0000ab0000001a000000060000002700000002000000c93e00000200000061000000 - {e=>0,n=>6,a=>-59,m=>1,d=>0,j=>6,l=>4,c=>0,k=>75,h=>2,b=>6,g=>7,f=>3,o=>144,i=>2} c5ff06000000180700000012060000004b0c0600000090 c5ff060000001800070000001200060000004b0c060000009000 c5ff000006000000180000000700000012000000060000004b0c00000600000090000000 c5ff000006000000180000000700000012000000060000004b0c00000600000090000000 - {e=>1,n=>1,a=>66,m=>2,d=>-3,j=>0,l=>3,c=>1,k=>103,h=>4,b=>3,g=>7,f=>-1,o=>216,i=>-2} 42004b01000039070000003400000000671301000000d8 42004b010000390007000000340000000000671301000000d800 420000004b010000390000000700000034000000000000006713000001000000d8000000 420000004b010000390000000700000034000000000000006713000001000000d8000000 - {e=>2,n=>1,a=>-81,m=>-1,d=>3,j=>0,l=>3,c=>-2,k=>98,h=>2,b=>1,g=>3,f=>-2,o=>209,i=>-3} affff100000032030000002a00000000623b01000000d1 affff10000003200030000002a0000000000623b01000000d100 afff0000f100000032000000030000002a00000000000000623b000001000000d1000000 afff0000f100000032000000030000002a00000000000000623b000001000000d1000000 - {e=>1,n=>5,a=>-91,m=>-1,d=>-1,j=>3,l=>5,c=>-1,k=>-46,h=>2,b=>4,g=>6,f=>-2,o=>161,i=>-3} a5fffc01000031060000002a03000000d23d05000000a1 a5fffc0100003100060000002a0003000000d23d05000000a100 a5ff0000fc01000031000000060000002a00000003000000d23d000005000000a1000000 a5ff0000fc01000031000000060000002a00000003000000d23d000005000000a1000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; }; - {a=>55,b=>2} 3700000002000000 3700000002000000 3700000002000000 3700000002000000 - {a=>62,b=>5} 3e00000005000000 3e00000005000000 3e00000005000000 3e00000005000000 - {a=>127,b=>2} 7f00000002000000 7f00000002000000 7f00000002000000 7f00000002000000 - {a=>-95,b=>4} a1ffffff04000000 a1ffffff04000000 a1ffffff04000000 a1ffffff04000000 - {a=>-58,b=>4} c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; }; - {c=>1,a=>-70,b=>7} baffffff0f000000 baffffff0f000000 baffffff0f000000 baffffff0f000000 - {c=>0,a=>-56,b=>5} c8ffffff05000000 c8ffffff05000000 c8ffffff05000000 c8ffffff05000000 - {c=>-2,a=>-48,b=>2} d0ffffff32000000 d0ffffff32000000 d0ffffff32000000 d0ffffff32000000 - {c=>1,a=>31,b=>2} 1f0000000a000000 1f0000000a000000 1f0000000a000000 1f0000000a000000 - {c=>3,a=>120,b=>2} 780000001a000000 780000001a000000 780000001a000000 780000001a000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-120,b=>6,d=>0} 88ffffff26000000 88ffffff26000000 88ffffff26000000 88ffffff26000000 - {c=>0,a=>118,b=>7,d=>3} 76000000c7000000 76000000c7000000 76000000c7000000 76000000c7000000 - {c=>-2,a=>-76,b=>5,d=>2} b4ffffffb5000000 b4ffffffb5000000 b4ffffffb5000000 b4ffffffb5000000 - {c=>3,a=>-39,b=>6,d=>3} d9ffffffde000000 d9ffffffde000000 d9ffffffde000000 d9ffffffde000000 - {c=>-3,a=>9,b=>5,d=>1} 090000006d000000 090000006d000000 090000006d000000 090000006d000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>3,a=>-74,b=>2,d=>3} b6ffffffda00000003 b6ffffffda0000000300 b6ffffffda00000003000000 b6ffffffda00000003000000 - {e=>4,c=>2,a=>16,b=>7,d=>2} 100000009700000004 10000000970000000400 100000009700000004000000 100000009700000004000000 - {e=>2,c=>0,a=>48,b=>5,d=>-3} 300000004501000002 30000000450100000200 300000004501000002000000 300000004501000002000000 - {e=>5,c=>2,a=>77,b=>3,d=>1} 4d0000005300000005 4d000000530000000500 4d0000005300000005000000 4d0000005300000005000000 - {e=>0,c=>-2,a=>78,b=>5,d=>1} 4e0000007500000000 4e000000750000000000 4e0000007500000000000000 4e0000007500000000000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>2,a=>80,b=>4,d=>1,f=>0} 500000005400000001 50000000540000000100 500000005400000001000000 500000005400000001000000 - {e=>6,c=>2,a=>-27,b=>4,d=>3,f=>-4} e5ffffffd400000026 e5ffffffd40000002600 e5ffffffd400000026000000 e5ffffffd400000026000000 - {e=>0,c=>2,a=>-111,b=>5,d=>3,f=>-4} 91ffffffd500000020 91ffffffd50000002000 91ffffffd500000020000000 91ffffffd500000020000000 - {e=>7,c=>1,a=>-42,b=>7,d=>1,f=>3} d6ffffff4f0000001f d6ffffff4f0000001f00 d6ffffff4f0000001f000000 d6ffffff4f0000001f000000 - {e=>5,c=>0,a=>90,b=>4,d=>0,f=>0} 5a0000000400000005 5a000000040000000500 5a0000000400000005000000 5a0000000400000005000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>3,c=>0,a=>0,g=>3,b=>3,d=>1,f=>-3} 00000000430000002b03000000 00000000430000002b0003000000 00000000430000002b00000003000000 00000000430000002b00000003000000 - {e=>3,c=>-4,a=>-62,g=>6,b=>1,d=>-3,f=>1} c2ffffff610100000b06000000 c2ffffff610100000b0006000000 c2ffffff610100000b00000006000000 c2ffffff610100000b00000006000000 - {e=>2,c=>-3,a=>26,g=>5,b=>3,d=>0,f=>-4} 1a0000002b0000002205000000 1a0000002b000000220005000000 1a0000002b0000002200000005000000 1a0000002b0000002200000005000000 - {e=>3,c=>3,a=>-96,g=>7,b=>7,d=>-3,f=>3} a0ffffff5f0100001b07000000 a0ffffff5f0100001b0007000000 a0ffffff5f0100001b00000007000000 a0ffffff5f0100001b00000007000000 - {e=>6,c=>2,a=>-81,g=>5,b=>1,d=>-1,f=>3} afffffffd10100001e05000000 afffffffd10100001e0005000000 afffffffd10100001e00000005000000 afffffffd10100001e00000005000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>4,c=>2,a=>21,g=>1,b=>4,d=>-4,f=>3} 15000000140100001c01000000 15000000140100001c0001000000 15000000140100001c00000001000000 15000000140100001c00000001000000 - {e=>3,c=>-4,a=>82,g=>4,b=>5,d=>3,f=>1} 52000000e50000000b04000000 52000000e50000000b0004000000 52000000e50000000b00000004000000 52000000e50000000b00000004000000 - {e=>2,c=>-3,a=>28,g=>5,b=>2,d=>0,f=>-4} 1c0000002a0000002205000000 1c0000002a000000220005000000 1c0000002a0000002200000005000000 1c0000002a0000002200000005000000 - {e=>4,c=>2,a=>116,g=>2,b=>3,d=>-2,f=>0} 74000000930100000402000000 7400000093010000040002000000 74000000930100000400000002000000 74000000930100000400000002000000 - {e=>5,c=>-2,a=>77,g=>7,b=>6,d=>-1,f=>3} 4d000000f60100001d07000000 4d000000f60100001d0007000000 4d000000f60100001d00000007000000 4d000000f60100001d00000007000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>-106,d=>0,c=>-3,h=>5,b=>4,g=>2,f=>0} 96ffffff2c000000060200000005 96ffffff2c0000000600020000000500 96ffffff2c000000060000000200000005000000 96ffffff2c000000060000000200000005000000 - {e=>2,a=>41,d=>-3,c=>-3,h=>1,b=>0,g=>7,f=>-4} 2900000068010000220700000001 29000000680100002200070000000100 2900000068010000220000000700000001000000 2900000068010000220000000700000001000000 - {e=>7,a=>-97,d=>2,c=>2,h=>5,b=>3,g=>1,f=>-3} 9fffffff930000002f0100000005 9fffffff930000002f00010000000500 9fffffff930000002f0000000100000005000000 9fffffff930000002f0000000100000005000000 - {e=>2,a=>-90,d=>-1,c=>-4,h=>4,b=>0,g=>0,f=>3} a6ffffffe00100001a0000000004 a6ffffffe00100001a00000000000400 a6ffffffe00100001a0000000000000004000000 a6ffffffe00100001a0000000000000004000000 - {e=>6,a=>106,d=>-3,c=>2,h=>7,b=>7,g=>4,f=>-3} 6a000000570100002e0400000007 6a000000570100002e00040000000700 6a000000570100002e0000000400000007000000 6a000000570100002e0000000400000007000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>-65,d=>-4,c=>-4,h=>6,b=>0,g=>5,f=>3,i=>-4} bfffffff200100001e0500000026 bfffffff200100001e00050000002600 bfffffff200100001e0000000500000026000000 bfffffff200100001e0000000500000026000000 - {e=>5,a=>-32,d=>-2,c=>1,h=>1,b=>6,g=>1,f=>0,i=>1} e0ffffff8e010000050100000009 e0ffffff8e0100000500010000000900 e0ffffff8e010000050000000100000009000000 e0ffffff8e010000050000000100000009000000 - {e=>5,a=>-95,d=>-3,c=>2,h=>7,b=>5,g=>2,f=>3,i=>-3} a1ffffff550100001d020000002f a1ffffff550100001d00020000002f00 a1ffffff550100001d000000020000002f000000 a1ffffff550100001d000000020000002f000000 - {e=>3,a=>-22,d=>-1,c=>-1,h=>6,b=>6,g=>7,f=>-4,i=>-3} eafffffffe01000023070000002e eafffffffe0100002300070000002e00 eafffffffe01000023000000070000002e000000 eafffffffe01000023000000070000002e000000 - {e=>6,a=>-103,d=>-1,c=>0,h=>2,b=>2,g=>7,f=>-2,i=>-4} 99ffffffc2010000360700000022 99ffffffc20100003600070000002200 99ffffffc2010000360000000700000022000000 99ffffffc2010000360000000700000022000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>7,a=>87,d=>-2,j=>7,c=>-2,h=>2,b=>2,g=>2,f=>-2,i=>2} 57000000b201000037020000001207000000 57000000b2010000370002000000120007000000 57000000b201000037000000020000001200000007000000 57000000b201000037000000020000001200000007000000 - {e=>3,a=>-126,d=>-4,j=>4,c=>0,h=>0,b=>6,g=>1,f=>-2,i=>-4} 82ffffff0601000033010000002004000000 82ffffff06010000330001000000200004000000 82ffffff0601000033000000010000002000000004000000 82ffffff0601000033000000010000002000000004000000 - {e=>5,a=>90,d=>0,j=>7,c=>3,h=>0,b=>5,g=>6,f=>-1,i=>-1} 5a0000001d0000003d060000003807000000 5a0000001d0000003d0006000000380007000000 5a0000001d0000003d000000060000003800000007000000 5a0000001d0000003d000000060000003800000007000000 - {e=>6,a=>-47,d=>1,j=>3,c=>1,h=>4,b=>7,g=>7,f=>3,i=>-1} d1ffffff4f0000001e070000003c03000000 d1ffffff4f0000001e00070000003c0003000000 d1ffffff4f0000001e000000070000003c00000003000000 d1ffffff4f0000001e000000070000003c00000003000000 - {e=>6,a=>47,d=>2,j=>7,c=>1,h=>4,b=>6,g=>1,f=>0,i=>-4} 2f0000008e00000006010000002407000000 2f0000008e000000060001000000240007000000 2f0000008e00000006000000010000002400000007000000 2f0000008e00000006000000010000002400000007000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>4,a=>-69,d=>1,j=>5,c=>-2,k=>-25,h=>4,b=>3,g=>1,f=>3,i=>1} bbffffff730000001c010000000c05000000e7 bbffffff730000001c00010000000c0005000000e700 bbffffff730000001c000000010000000c00000005000000e7000000 bbffffff730000001c000000010000000c00000005000000e7000000 - {e=>1,a=>116,d=>0,j=>4,c=>2,k=>45,h=>6,b=>3,g=>3,f=>-2,i=>3} 740000001300000031030000001e040000002d 74000000130000003100030000001e00040000002d00 740000001300000031000000030000001e000000040000002d000000 740000001300000031000000030000001e000000040000002d000000 - {e=>3,a=>-113,d=>1,j=>1,c=>0,k=>-27,h=>5,b=>5,g=>6,f=>-3,i=>-2} 8fffffff450000002b060000003501000000e5 8fffffff450000002b0006000000350001000000e500 8fffffff450000002b000000060000003500000001000000e5000000 8fffffff450000002b000000060000003500000001000000e5000000 - {e=>3,a=>49,d=>3,j=>2,c=>-2,k=>3,h=>1,b=>0,g=>2,f=>2,i=>2} 31000000f00000001302000000110200000003 31000000f00000001300020000001100020000000300 31000000f00000001300000002000000110000000200000003000000 31000000f00000001300000002000000110000000200000003000000 - {e=>0,a=>105,d=>-1,j=>3,c=>-3,k=>-114,h=>6,b=>5,g=>7,f=>-2,i=>3} 69000000ed01000030070000001e030000008e 69000000ed0100003000070000001e00030000008e00 69000000ed01000030000000070000001e000000030000008e000000 69000000ed01000030000000070000001e000000030000008e000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>4,a=>-33,d=>-3,j=>2,l=>4,c=>2,k=>-127,h=>2,b=>1,g=>3,f=>0,i=>3} dfffffff5101000004030000001a020000008104 dfffffff510100000400030000001a00020000008104 dfffffff5101000004000000030000001a0000000200000081040000 dfffffff5101000004000000030000001a0000000200000081040000 - {e=>1,a=>30,d=>0,j=>3,l=>5,c=>-2,k=>-10,h=>5,b=>0,g=>3,f=>2,i=>-2} 1e0000003000000011030000003503000000f605 1e00000030000000110003000000350003000000f605 1e0000003000000011000000030000003500000003000000f6050000 1e0000003000000011000000030000003500000003000000f6050000 - {e=>0,a=>87,d=>-1,j=>5,l=>6,c=>-2,k=>-45,h=>2,b=>7,g=>1,f=>3,i=>-2} 57000000f701000018010000003205000000d306 57000000f7010000180001000000320005000000d306 57000000f701000018000000010000003200000005000000d3060000 57000000f701000018000000010000003200000005000000d3060000 - {e=>1,a=>-27,d=>2,j=>3,l=>0,c=>1,k=>36,h=>0,b=>0,g=>5,f=>0,i=>-1} e5ffffff88000000010500000038030000002400 e5ffffff880000000100050000003800030000002400 e5ffffff880000000100000005000000380000000300000024000000 e5ffffff880000000100000005000000380000000300000024000000 - {e=>7,a=>38,d=>2,j=>1,l=>5,c=>-2,k=>37,h=>5,b=>5,g=>5,f=>1,i=>-1} 26000000b50000000f050000003d010000002505 26000000b50000000f00050000003d00010000002505 26000000b50000000f000000050000003d0000000100000025050000 26000000b50000000f000000050000003d0000000100000025050000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-77,m=>-1,d=>-4,j=>3,l=>6,c=>0,k=>2,h=>7,b=>7,g=>3,f=>1,i=>1} b3ffffff070100000c030000000f03000000023e b3ffffff070100000c00030000000f0003000000023e b3ffffff070100000c000000030000000f00000003000000023e0000 b3ffffff070100000c000000030000000f00000003000000023e0000 - {e=>6,a=>-85,m=>-1,d=>0,j=>6,l=>2,c=>2,k=>121,h=>4,b=>0,g=>5,f=>-4,i=>3} abffffff1000000026050000001c06000000793a abffffff100000002600050000001c0006000000793a abffffff1000000026000000050000001c00000006000000793a0000 abffffff1000000026000000050000001c00000006000000793a0000 - {e=>0,a=>63,m=>-1,d=>3,j=>3,l=>1,c=>-1,k=>54,h=>5,b=>0,g=>0,f=>1,i=>-4} 3f000000f8000000080000000025030000003639 3f000000f80000000800000000002500030000003639 3f000000f80000000800000000000000250000000300000036390000 3f000000f80000000800000000000000250000000300000036390000 - {e=>5,a=>3,m=>-4,d=>1,j=>0,l=>5,c=>-3,k=>-15,h=>4,b=>6,g=>2,f=>1,i=>1} 030000006e0000000d020000000c00000000f125 030000006e0000000d00020000000c0000000000f125 030000006e0000000d000000020000000c00000000000000f1250000 030000006e0000000d000000020000000c00000000000000f1250000 - {e=>1,a=>93,m=>0,d=>3,j=>0,l=>2,c=>0,k=>57,h=>6,b=>0,g=>4,f=>-1,i=>2} 5d000000c0000000390400000016000000003902 5d000000c00000003900040000001600000000003902 5d000000c00000003900000004000000160000000000000039020000 5d000000c00000003900000004000000160000000000000039020000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>5,a=>93,m=>1,d=>1,j=>3,l=>1,c=>-2,k=>115,h=>3,b=>0,g=>2,f=>1,i=>1} 5d000000700000000e020000000b03000000730905000000 5d000000700000000e00020000000b0003000000730905000000 5d000000700000000e000000020000000b000000030000007309000005000000 5d000000700000000e000000020000000b000000030000007309000005000000 - {e=>7,n=>6,a=>-112,m=>1,d=>-2,j=>2,l=>1,c=>-1,k=>66,h=>1,b=>5,g=>3,f=>-4,i=>3} 90ffffffbd01000027030000001902000000420906000000 90ffffffbd010000270003000000190002000000420906000000 90ffffffbd010000270000000300000019000000020000004209000006000000 90ffffffbd010000270000000300000019000000020000004209000006000000 - {e=>7,n=>1,a=>102,m=>3,d=>3,j=>3,l=>6,c=>1,k=>-50,h=>5,b=>6,g=>7,f=>1,i=>1} 66000000ce0000000f070000000d03000000ce1e01000000 66000000ce0000000f00070000000d0003000000ce1e01000000 66000000ce0000000f000000070000000d00000003000000ce1e000001000000 66000000ce0000000f000000070000000d00000003000000ce1e000001000000 - {e=>3,n=>6,a=>-108,m=>1,d=>-4,j=>4,l=>4,c=>-3,k=>85,h=>3,b=>7,g=>7,f=>-1,i=>1} 94ffffff2f0100003b070000000b04000000550c06000000 94ffffff2f0100003b00070000000b0004000000550c06000000 94ffffff2f0100003b000000070000000b00000004000000550c000006000000 94ffffff2f0100003b000000070000000b00000004000000550c000006000000 - {e=>3,n=>5,a=>103,m=>1,d=>-3,j=>3,l=>2,c=>0,k=>103,h=>3,b=>4,g=>1,f=>1,i=>0} 67000000440100000b010000000303000000670a05000000 67000000440100000b0001000000030003000000670a05000000 67000000440100000b000000010000000300000003000000670a000005000000 67000000440100000b000000010000000300000003000000670a000005000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>5,a=>-4,m=>-2,d=>-1,j=>4,l=>2,c=>-1,k=>-4,h=>5,b=>5,g=>2,f=>-2,o=>251,i=>1} fcfffffffd01000036020000000d04000000fc3205000000fb fcfffffffd0100003600020000000d0004000000fc3205000000fb00 fcfffffffd01000036000000020000000d00000004000000fc32000005000000fb000000 fcfffffffd01000036000000020000000d00000004000000fc32000005000000fb000000 - {e=>5,n=>7,a=>100,m=>-4,d=>-4,j=>4,l=>2,c=>0,k=>-86,h=>1,b=>5,g=>0,f=>2,o=>180,i=>-2} 640000000501000015000000003104000000aa2207000000b4 6400000005010000150000000000310004000000aa2207000000b400 640000000501000015000000000000003100000004000000aa22000007000000b4000000 640000000501000015000000000000003100000004000000aa22000007000000b4000000 - {e=>6,n=>7,a=>-56,m=>-2,d=>-3,j=>5,l=>0,c=>-3,k=>122,h=>4,b=>7,g=>2,f=>1,o=>254,i=>0} c8ffffff6f0100000e0200000004050000007a3007000000fe c8ffffff6f0100000e00020000000400050000007a3007000000fe00 c8ffffff6f0100000e0000000200000004000000050000007a30000007000000fe000000 c8ffffff6f0100000e0000000200000004000000050000007a30000007000000fe000000 - {e=>1,n=>5,a=>-64,m=>-2,d=>1,j=>0,l=>1,c=>-3,k=>77,h=>7,b=>1,g=>4,f=>-1,o=>3,i=>-2} c0ffffff69000000390400000037000000004d310500000003 c0ffffff690000003900040000003700000000004d31050000000300 c0ffffff69000000390000000400000037000000000000004d3100000500000003000000 c0ffffff69000000390000000400000037000000000000004d3100000500000003000000 - {e=>5,n=>6,a=>-59,m=>-3,d=>0,j=>4,l=>3,c=>-3,k=>47,h=>3,b=>7,g=>0,f=>0,o=>16,i=>2} c5ffffff2f000000050000000013040000002f2b0600000010 c5ffffff2f0000000500000000001300040000002f2b060000001000 c5ffffff2f000000050000000000000013000000040000002f2b00000600000010000000 c5ffffff2f000000050000000000000013000000040000002f2b00000600000010000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; }; - {a=>-106,b=>7} 96ffffff07000000 96ffffff07000000 96ffffff07000000 96ffffff07000000 - {a=>-127,b=>2} 81ffffff02000000 81ffffff02000000 81ffffff02000000 81ffffff02000000 - {a=>-66,b=>6} beffffff06000000 beffffff06000000 beffffff06000000 beffffff06000000 - {a=>49,b=>6} 3100000006000000 3100000006000000 3100000006000000 3100000006000000 - {a=>107,b=>7} 6b00000007000000 6b00000007000000 6b00000007000000 6b00000007000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-18,b=>6} eeffffff06000000 eeffffff06000000 eeffffff06000000 eeffffff06000000 - {c=>-3,a=>-10,b=>6} f6ffffff2e000000 f6ffffff2e000000 f6ffffff2e000000 f6ffffff2e000000 - {c=>2,a=>40,b=>4} 2800000014000000 2800000014000000 2800000014000000 2800000014000000 - {c=>-2,a=>-97,b=>3} 9fffffff33000000 9fffffff33000000 9fffffff33000000 9fffffff33000000 - {c=>0,a=>-24,b=>3} e8ffffff03000000 e8ffffff03000000 e8ffffff03000000 e8ffffff03000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>2,a=>-99,b=>5,d=>-3} 9dffffff55010000 9dffffff55010000 9dffffff55010000 9dffffff55010000 - {c=>-3,a=>102,b=>4,d=>1} 660000006c000000 660000006c000000 660000006c000000 660000006c000000 - {c=>-4,a=>108,b=>1,d=>2} 6c000000a1000000 6c000000a1000000 6c000000a1000000 6c000000a1000000 - {c=>1,a=>-81,b=>6,d=>3} afffffffce000000 afffffffce000000 afffffffce000000 afffffffce000000 - {c=>2,a=>-53,b=>2,d=>2} cbffffff92000000 cbffffff92000000 cbffffff92000000 cbffffff92000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>2,a=>62,b=>7,d=>0} 3e0000001700000002 3e000000170000000200 3e0000001700000002000000 3e0000001700000002000000 - {e=>0,c=>1,a=>-91,b=>7,d=>1} a5ffffff4f00000000 a5ffffff4f0000000000 a5ffffff4f00000000000000 a5ffffff4f00000000000000 - {e=>3,c=>-1,a=>50,b=>3,d=>0} 320000003b00000003 320000003b0000000300 320000003b00000003000000 320000003b00000003000000 - {e=>2,c=>-1,a=>-68,b=>2,d=>2} bcffffffba00000002 bcffffffba0000000200 bcffffffba00000002000000 bcffffffba00000002000000 - {e=>5,c=>2,a=>67,b=>4,d=>1} 430000005400000005 43000000540000000500 430000005400000005000000 430000005400000005000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>3,a=>-33,b=>2,d=>-3,f=>-3} dfffffff5a01000029 dfffffff5a0100002900 dfffffff5a01000029000000 dfffffff5a01000029000000 - {e=>6,c=>-4,a=>-3,b=>1,d=>-3,f=>1} fdffffff610100000e fdffffff610100000e00 fdffffff610100000e000000 fdffffff610100000e000000 - {e=>5,c=>-2,a=>-125,b=>1,d=>-3,f=>-3} 83ffffff710100002d 83ffffff710100002d00 83ffffff710100002d000000 83ffffff710100002d000000 - {e=>7,c=>-2,a=>101,b=>3,d=>-2,f=>-1} 65000000b30100003f 65000000b30100003f00 65000000b30100003f000000 65000000b30100003f000000 - {e=>1,c=>-2,a=>71,b=>4,d=>3,f=>2} 47000000f400000011 47000000f40000001100 47000000f400000011000000 47000000f400000011000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>5,c=>0,a=>56,g=>7,b=>1,d=>-1,f=>2} 38000000c10100001507000000 38000000c1010000150007000000 38000000c10100001500000007000000 38000000c10100001500000007000000 - {e=>6,c=>-4,a=>-45,g=>2,b=>2,d=>-1,f=>-1} d3ffffffe20100003e02000000 d3ffffffe20100003e0002000000 d3ffffffe20100003e00000002000000 d3ffffffe20100003e00000002000000 - {e=>7,c=>-4,a=>-101,g=>3,b=>1,d=>1,f=>-3} 9bffffff610000002f03000000 9bffffff610000002f0003000000 9bffffff610000002f00000003000000 9bffffff610000002f00000003000000 - {e=>0,c=>3,a=>62,g=>5,b=>2,d=>-3,f=>-4} 3e0000005a0100002005000000 3e0000005a010000200005000000 3e0000005a0100002000000005000000 3e0000005a0100002000000005000000 - {e=>6,c=>3,a=>102,g=>2,b=>6,d=>1,f=>-1} 660000005e0000003e02000000 660000005e0000003e0002000000 660000005e0000003e00000002000000 660000005e0000003e00000002000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>0,c=>-3,a=>-101,g=>1,b=>2,d=>0,f=>-3} 9bffffff2a0000002801000000 9bffffff2a000000280001000000 9bffffff2a0000002800000001000000 9bffffff2a0000002800000001000000 - {e=>5,c=>-4,a=>-95,g=>4,b=>4,d=>-4,f=>-1} a1ffffff240100003d04000000 a1ffffff240100003d0004000000 a1ffffff240100003d00000004000000 a1ffffff240100003d00000004000000 - {e=>0,c=>0,a=>60,g=>4,b=>4,d=>2,f=>-3} 3c000000840000002804000000 3c00000084000000280004000000 3c000000840000002800000004000000 3c000000840000002800000004000000 - {e=>4,c=>2,a=>-72,g=>5,b=>2,d=>1,f=>-2} b8ffffff520000003405000000 b8ffffff52000000340005000000 b8ffffff520000003400000005000000 b8ffffff520000003400000005000000 - {e=>4,c=>1,a=>-29,g=>7,b=>2,d=>-1,f=>2} e3ffffffca0100001407000000 e3ffffffca010000140007000000 e3ffffffca0100001400000007000000 e3ffffffca0100001400000007000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>23,d=>2,c=>-2,h=>0,b=>2,g=>4,f=>-3} 17000000b2000000290400000000 17000000b20000002900040000000000 17000000b2000000290000000400000000000000 17000000b2000000290000000400000000000000 - {e=>7,a=>-108,d=>3,c=>0,h=>1,b=>7,g=>7,f=>-2} 94ffffffc7000000370700000001 94ffffffc70000003700070000000100 94ffffffc7000000370000000700000001000000 94ffffffc7000000370000000700000001000000 - {e=>5,a=>-126,d=>2,c=>1,h=>3,b=>4,g=>0,f=>3} 82ffffff8c0000001d0000000003 82ffffff8c0000001d00000000000300 82ffffff8c0000001d0000000000000003000000 82ffffff8c0000001d0000000000000003000000 - {e=>4,a=>-62,d=>3,c=>-4,h=>1,b=>2,g=>2,f=>-3} c2ffffffe20000002c0200000001 c2ffffffe20000002c00020000000100 c2ffffffe20000002c0000000200000001000000 c2ffffffe20000002c0000000200000001000000 - {e=>0,a=>89,d=>-3,c=>3,h=>0,b=>7,g=>3,f=>2} 590000005f010000100300000000 590000005f0100001000030000000000 590000005f010000100000000300000000000000 590000005f010000100000000300000000000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>16,d=>1,c=>-4,h=>1,b=>7,g=>3,f=>-3,i=>0} 10000000670000002e0300000001 10000000670000002e00030000000100 10000000670000002e0000000300000001000000 10000000670000002e0000000300000001000000 - {e=>6,a=>62,d=>0,c=>1,h=>2,b=>0,g=>5,f=>-3,i=>2} 3e000000080000002e0500000012 3e000000080000002e00050000001200 3e000000080000002e0000000500000012000000 3e000000080000002e0000000500000012000000 - {e=>3,a=>-95,d=>-2,c=>3,h=>7,b=>3,g=>7,f=>-4,i=>0} a1ffffff9b010000230700000007 a1ffffff9b0100002300070000000700 a1ffffff9b010000230000000700000007000000 a1ffffff9b010000230000000700000007000000 - {e=>6,a=>-45,d=>1,c=>0,h=>1,b=>6,g=>3,f=>-1,i=>1} d3ffffff460000003e0300000009 d3ffffff460000003e00030000000900 d3ffffff460000003e0000000300000009000000 d3ffffff460000003e0000000300000009000000 - {e=>1,a=>-122,d=>1,c=>0,h=>4,b=>1,g=>4,f=>0,i=>3} 86ffffff4100000001040000001c 86ffffff410000000100040000001c00 86ffffff4100000001000000040000001c000000 86ffffff4100000001000000040000001c000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>1,a=>-114,d=>2,j=>5,c=>1,h=>4,b=>1,g=>6,f=>2,i=>-4} 8effffff8900000011060000002405000000 8effffff89000000110006000000240005000000 8effffff8900000011000000060000002400000005000000 8effffff8900000011000000060000002400000005000000 - {e=>2,a=>-60,d=>-3,j=>3,c=>-1,h=>6,b=>2,g=>1,f=>3,i=>0} c4ffffff7a0100001a010000000603000000 c4ffffff7a0100001a0001000000060003000000 c4ffffff7a0100001a000000010000000600000003000000 c4ffffff7a0100001a000000010000000600000003000000 - {e=>3,a=>51,d=>1,j=>5,c=>-4,h=>6,b=>7,g=>3,f=>2,i=>2} 330000006700000013030000001605000000 3300000067000000130003000000160005000000 330000006700000013000000030000001600000005000000 330000006700000013000000030000001600000005000000 - {e=>4,a=>-121,d=>-1,j=>3,c=>-3,h=>5,b=>3,g=>5,f=>1,i=>-1} 87ffffffeb0100000c050000003d03000000 87ffffffeb0100000c00050000003d0003000000 87ffffffeb0100000c000000050000003d00000003000000 87ffffffeb0100000c000000050000003d00000003000000 - {e=>4,a=>80,d=>3,j=>5,c=>-1,h=>2,b=>0,g=>4,f=>-2,i=>0} 50000000f800000034040000000205000000 50000000f8000000340004000000020005000000 50000000f800000034000000040000000200000005000000 50000000f800000034000000040000000200000005000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>-88,d=>3,j=>5,c=>-3,k=>-40,h=>0,b=>6,g=>6,f=>1,i=>-2} a8ffffffee0000000e060000003005000000d8 a8ffffffee0000000e0006000000300005000000d800 a8ffffffee0000000e000000060000003000000005000000d8000000 a8ffffffee0000000e000000060000003000000005000000d8000000 - {e=>2,a=>100,d=>-2,j=>0,c=>-2,k=>126,h=>4,b=>0,g=>2,f=>-3,i=>-4} 64000000b00100002a0200000024000000007e 64000000b00100002a00020000002400000000007e00 64000000b00100002a0000000200000024000000000000007e000000 64000000b00100002a0000000200000024000000000000007e000000 - {e=>3,a=>-69,d=>2,j=>7,c=>2,k=>33,h=>6,b=>6,g=>0,f=>1,i=>-1} bbffffff960000000b000000003e0700000021 bbffffff960000000b00000000003e00070000002100 bbffffff960000000b000000000000003e0000000700000021000000 bbffffff960000000b000000000000003e0000000700000021000000 - {e=>4,a=>68,d=>0,j=>5,c=>-1,k=>-97,h=>7,b=>4,g=>1,f=>-1,i=>3} 440000003c0000003c010000001f050000009f 440000003c0000003c00010000001f00050000009f00 440000003c0000003c000000010000001f000000050000009f000000 440000003c0000003c000000010000001f000000050000009f000000 - {e=>3,a=>-64,d=>-4,j=>1,c=>0,k=>-12,h=>3,b=>3,g=>2,f=>2,i=>0} c0ffffff0301000013020000000301000000f4 c0ffffff03010000130002000000030001000000f400 c0ffffff0301000013000000020000000300000001000000f4000000 c0ffffff0301000013000000020000000300000001000000f4000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>7,a=>19,d=>-2,j=>6,l=>1,c=>3,k=>-48,h=>6,b=>3,g=>4,f=>2,i=>3} 130000009b01000017040000001e06000000d001 130000009b0100001700040000001e0006000000d001 130000009b01000017000000040000001e00000006000000d0010000 130000009b01000017000000040000001e00000006000000d0010000 - {e=>2,a=>-64,d=>-1,j=>0,l=>2,c=>-4,k=>-102,h=>5,b=>4,g=>0,f=>-4,i=>0} c0ffffffe4010000220000000005000000009a02 c0ffffffe40100002200000000000500000000009a02 c0ffffffe4010000220000000000000005000000000000009a020000 c0ffffffe4010000220000000000000005000000000000009a020000 - {e=>6,a=>32,d=>3,j=>6,l=>7,c=>0,k=>-18,h=>6,b=>2,g=>6,f=>3,i=>-4} 20000000c20000001e060000002606000000ee07 20000000c20000001e0006000000260006000000ee07 20000000c20000001e000000060000002600000006000000ee070000 20000000c20000001e000000060000002600000006000000ee070000 - {e=>4,a=>12,d=>0,j=>4,l=>0,c=>1,k=>-60,h=>6,b=>2,g=>0,f=>3,i=>-4} 0c0000000a0000001c000000002604000000c400 0c0000000a0000001c0000000000260004000000c400 0c0000000a0000001c000000000000002600000004000000c4000000 0c0000000a0000001c000000000000002600000004000000c4000000 - {e=>1,a=>126,d=>-3,j=>3,l=>3,c=>-2,k=>127,h=>6,b=>2,g=>7,f=>3,i=>-2} 7e00000072010000190700000036030000007f03 7e000000720100001900070000003600030000007f03 7e00000072010000190000000700000036000000030000007f030000 7e00000072010000190000000700000036000000030000007f030000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>41,m=>-2,d=>-2,j=>7,l=>3,c=>-2,k=>100,h=>7,b=>4,g=>4,f=>3,i=>2} 29000000b40100001f0400000017070000006433 29000000b40100001f00040000001700070000006433 29000000b40100001f00000004000000170000000700000064330000 29000000b40100001f00000004000000170000000700000064330000 - {e=>0,a=>-34,m=>-1,d=>-1,j=>1,l=>4,c=>-4,k=>120,h=>0,b=>4,g=>1,f=>0,i=>1} deffffffe401000000010000000801000000783c deffffffe4010000000001000000080001000000783c deffffffe401000000000000010000000800000001000000783c0000 deffffffe401000000000000010000000800000001000000783c0000 - {e=>6,a=>29,m=>1,d=>-2,j=>2,l=>1,c=>-2,k=>-104,h=>4,b=>7,g=>2,f=>0,i=>-1} 1d000000b701000006020000003c020000009809 1d000000b70100000600020000003c00020000009809 1d000000b701000006000000020000003c0000000200000098090000 1d000000b701000006000000020000003c0000000200000098090000 - {e=>5,a=>-81,m=>3,d=>3,j=>2,l=>6,c=>-2,k=>-76,h=>3,b=>4,g=>4,f=>-1,i=>-3} affffffff40000003d040000002b02000000b41e affffffff40000003d00040000002b0002000000b41e affffffff40000003d000000040000002b00000002000000b41e0000 affffffff40000003d000000040000002b00000002000000b41e0000 - {e=>3,a=>-14,m=>2,d=>-1,j=>5,l=>2,c=>3,k=>77,h=>2,b=>0,g=>7,f=>0,i=>1} f2ffffffd801000003070000000a050000004d12 f2ffffffd80100000300070000000a00050000004d12 f2ffffffd801000003000000070000000a000000050000004d120000 f2ffffffd801000003000000070000000a000000050000004d120000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>0,n=>2,a=>99,m=>-3,d=>-4,j=>1,l=>6,c=>-3,k=>5,h=>5,b=>2,g=>5,f=>3,i=>0} 630000002a01000018050000000501000000052e02000000 630000002a010000180005000000050001000000052e02000000 630000002a01000018000000050000000500000001000000052e000002000000 630000002a01000018000000050000000500000001000000052e000002000000 - {e=>7,n=>4,a=>56,m=>-1,d=>0,j=>4,l=>6,c=>3,k=>123,h=>3,b=>0,g=>0,f=>-1,i=>1} 38000000180000003f000000000b040000007b3e04000000 38000000180000003f00000000000b00040000007b3e04000000 38000000180000003f000000000000000b000000040000007b3e000004000000 38000000180000003f000000000000000b000000040000007b3e000004000000 - {e=>1,n=>0,a=>-72,m=>-1,d=>1,j=>2,l=>5,c=>-2,k=>29,h=>1,b=>1,g=>1,f=>2,i=>-3} b8ffffff71000000110100000029020000001d3d00000000 b8ffffff710000001100010000002900020000001d3d00000000 b8ffffff71000000110000000100000029000000020000001d3d000000000000 b8ffffff71000000110000000100000029000000020000001d3d000000000000 - {e=>6,n=>5,a=>-35,m=>-3,d=>-2,j=>5,l=>6,c=>-1,k=>87,h=>4,b=>7,g=>0,f=>1,i=>-1} ddffffffbf0100000e000000003c05000000572e05000000 ddffffffbf0100000e00000000003c0005000000572e05000000 ddffffffbf0100000e000000000000003c00000005000000572e000005000000 ddffffffbf0100000e000000000000003c00000005000000572e000005000000 - {e=>0,n=>1,a=>-32,m=>-1,d=>0,j=>6,l=>3,c=>1,k=>-26,h=>3,b=>1,g=>4,f=>-1,i=>3} e0ffffff0900000038040000001b06000000e63b01000000 e0ffffff090000003800040000001b0006000000e63b01000000 e0ffffff0900000038000000040000001b00000006000000e63b000001000000 e0ffffff0900000038000000040000001b00000006000000e63b000001000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>4,n=>5,a=>-63,m=>0,d=>-4,j=>0,l=>3,c=>2,k=>0,h=>4,b=>6,g=>3,f=>0,o=>255,i=>1} c1ffffff1601000004030000000c00000000000305000000ff c1ffffff160100000400030000000c0000000000000305000000ff00 c1ffffff1601000004000000030000000c000000000000000003000005000000ff000000 c1ffffff1601000004000000030000000c000000000000000003000005000000ff000000 - {e=>4,n=>4,a=>-45,m=>-1,d=>-3,j=>5,l=>4,c=>-3,k=>-116,h=>7,b=>7,g=>0,f=>1,o=>47,i=>3} d3ffffff6f0100000c000000001f050000008c3c040000002f d3ffffff6f0100000c00000000001f00050000008c3c040000002f00 d3ffffff6f0100000c000000000000001f000000050000008c3c0000040000002f000000 d3ffffff6f0100000c000000000000001f000000050000008c3c0000040000002f000000 - {e=>2,n=>7,a=>37,m=>3,d=>2,j=>5,l=>5,c=>-2,k=>86,h=>3,b=>7,g=>5,f=>-2,o=>120,i=>-2} 25000000b700000032050000003305000000561d0700000078 25000000b7000000320005000000330005000000561d070000007800 25000000b700000032000000050000003300000005000000561d00000700000078000000 25000000b700000032000000050000003300000005000000561d00000700000078000000 - {e=>7,n=>3,a=>-38,m=>-4,d=>0,j=>4,l=>5,c=>0,k=>30,h=>7,b=>7,g=>0,f=>3,o=>182,i=>-2} daffffff070000001f0000000037040000001e2503000000b6 daffffff070000001f00000000003700040000001e2503000000b600 daffffff070000001f0000000000000037000000040000001e25000003000000b6000000 daffffff070000001f0000000000000037000000040000001e25000003000000b6000000 - {e=>4,n=>1,a=>-127,m=>0,d=>-4,j=>1,l=>7,c=>0,k=>-88,h=>1,b=>4,g=>3,f=>-2,o=>194,i=>-2} 81ffffff0401000034030000003101000000a80701000000c2 81ffffff04010000340003000000310001000000a80701000000c200 81ffffff0401000034000000030000003100000001000000a807000001000000c2000000 81ffffff0401000034000000030000003100000001000000a807000001000000c2000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; }; - {a=>0} 00000000 00000000 00000000 00000000 - {a=>5} 05000000 05000000 05000000 05000000 - {a=>5} 05000000 05000000 05000000 05000000 - {a=>4} 04000000 04000000 04000000 04000000 - {a=>1} 01000000 01000000 01000000 01000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; }; - {a=>0,b=>-1} 38000000 38000000 38000000 38000000 - {a=>0,b=>2} 10000000 10000000 10000000 10000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>0,b=>3} 18000000 18000000 18000000 18000000 - {a=>5,b=>-1} 3d000000 3d000000 3d000000 3d000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>3,a=>0,b=>-3} e8000000 e8000000 e8000000 e8000000 - {c=>3,a=>7,b=>-4} e7000000 e7000000 e7000000 e7000000 - {c=>2,a=>3,b=>3} 9b000000 9b000000 9b000000 9b000000 - {c=>0,a=>3,b=>-3} 2b000000 2b000000 2b000000 2b000000 - {c=>-1,a=>3,b=>2} d3010000 d3010000 d3010000 d3010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>3,a=>7,b=>-4,d=>7} e700000007 e700000007 e700000007 e700000007 - {c=>1,a=>2,b=>1,d=>0} 4a00000000 4a00000000 4a00000000 4a00000000 - {c=>-1,a=>1,b=>-4,d=>5} e101000005 e101000005 e101000005 e101000005 - {c=>3,a=>6,b=>-1,d=>0} fe00000000 fe00000000 fe00000000 fe00000000 - {c=>1,a=>4,b=>-2,d=>0} 7400000000 7400000000 7400000000 7400000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>2,c=>-2,a=>3,b=>-2,d=>6} b301000016 b301000016 b301000016 b301000016 - {e=>-2,c=>-1,a=>3,b=>-3,d=>2} eb01000032 eb01000032 eb01000032 eb01000032 - {e=>3,c=>1,a=>7,b=>-1,d=>3} 7f0000001b 7f0000001b 7f0000001b 7f0000001b - {e=>-4,c=>-2,a=>5,b=>-4,d=>1} a501000021 a501000021 a501000021 a501000021 - {e=>1,c=>-2,a=>4,b=>-2,d=>4} b40100000c b40100000c b40100000c b40100000c = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>-3,c=>1,a=>4,b=>-1,d=>2,f=>2} 7c0000002a02000000 7c0000002a02000000 7c0000002a02000000 7c0000002a02000000 - {e=>3,c=>2,a=>5,b=>-1,d=>0,f=>4} bd0000001804000000 bd0000001804000000 bd0000001804000000 bd0000001804000000 - {e=>1,c=>-3,a=>3,b=>0,d=>6,f=>6} 430100000e06000000 430100000e06000000 430100000e06000000 430100000e06000000 - {e=>2,c=>0,a=>1,b=>-3,d=>1,f=>6} 290000001106000000 290000001106000000 290000001106000000 290000001106000000 - {e=>2,c=>1,a=>4,b=>3,d=>0,f=>4} 5c0000001004000000 5c0000001004000000 5c0000001004000000 5c0000001004000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>-4,c=>0,a=>2,b=>2,d=>2,f=>3} 120000002203000000 120000002203000000 120000002203000000 120000002203000000 - {e=>2,c=>-4,a=>0,b=>2,d=>4,f=>2} 100100001402000000 100100001402000000 100100001402000000 100100001402000000 - {e=>-2,c=>-4,a=>4,b=>0,d=>3,f=>0} 040100003300000000 040100003300000000 040100003300000000 040100003300000000 - {e=>-1,c=>1,a=>2,b=>3,d=>7,f=>0} 5a0000003f00000000 5a0000003f00000000 5a0000003f00000000 5a0000003f00000000 - {e=>0,c=>-1,a=>1,b=>-3,d=>0,f=>5} e90100000005000000 e90100000005000000 e90100000005000000 e90100000005000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>3,c=>1,a=>1,g=>6,b=>0,d=>5,f=>2} 410000001d0200000006 410000001d0200000006 410000001d0200000006 410000001d0200000006 - {e=>-2,c=>-2,a=>3,g=>0,b=>3,d=>0,f=>7} 9b010000300700000000 9b010000300700000000 9b010000300700000000 9b010000300700000000 - {e=>-2,c=>-4,a=>6,g=>3,b=>-4,d=>6,f=>3} 26010000360300000003 26010000360300000003 26010000360300000003 26010000360300000003 - {e=>-2,c=>1,a=>7,g=>4,b=>3,d=>7,f=>3} 5f000000370300000004 5f000000370300000004 5f000000370300000004 5f000000370300000004 - {e=>-2,c=>-3,a=>0,g=>1,b=>-3,d=>7,f=>5} 68010000370500000001 68010000370500000001 68010000370500000001 68010000370500000001 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>-2,a=>2,d=>0,c=>-4,h=>1,b=>-4,g=>0,f=>0} 22010000300000000008 22010000300000000008 22010000300000000008 22010000300000000008 - {e=>-1,a=>0,d=>5,c=>-2,h=>-3,b=>2,g=>2,f=>7} 900100003d070000002a 900100003d070000002a 900100003d070000002a 900100003d070000002a - {e=>3,a=>4,d=>0,c=>2,h=>-3,b=>3,g=>2,f=>7} 9c00000018070000002a 9c00000018070000002a 9c00000018070000002a 9c00000018070000002a - {e=>2,a=>7,d=>5,c=>2,h=>1,b=>0,g=>0,f=>2} 87000000150200000008 87000000150200000008 87000000150200000008 87000000150200000008 - {e=>-3,a=>3,d=>6,c=>2,h=>0,b=>-1,g=>7,f=>4} bb0000002e0400000007 bb0000002e0400000007 bb0000002e0400000007 bb0000002e0400000007 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>2,a=>3,d=>4,c=>1,h=>-4,b=>-1,g=>4,f=>2,i=>7} 7b00000014020000002407000000 7b00000014020000002407000000 7b00000014020000002407000000 7b00000014020000002407000000 - {e=>2,a=>7,d=>2,c=>-3,h=>2,b=>-1,g=>6,f=>7,i=>5} 7f01000012070000001605000000 7f01000012070000001605000000 7f01000012070000001605000000 7f01000012070000001605000000 - {e=>2,a=>2,d=>5,c=>-2,h=>0,b=>-1,g=>0,f=>6,i=>7} ba01000015060000000007000000 ba01000015060000000007000000 ba01000015060000000007000000 ba01000015060000000007000000 - {e=>-4,a=>0,d=>7,c=>0,h=>1,b=>3,g=>6,f=>0,i=>2} 1800000027000000000e02000000 1800000027000000000e02000000 1800000027000000000e02000000 1800000027000000000e02000000 - {e=>0,a=>4,d=>3,c=>-1,h=>-4,b=>-4,g=>3,f=>6,i=>7} e401000003060000002307000000 e401000003060000002307000000 e401000003060000002307000000 e401000003060000002307000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>-3,a=>2,d=>5,j=>51,c=>-3,h=>-4,b=>-1,g=>5,f=>7,i=>4} 7a0100002d07000000250400000033 7a0100002d07000000250400000033 7a0100002d07000000250400000033 7a0100002d07000000250400000033 - {e=>2,a=>5,d=>0,j=>-45,c=>-2,h=>2,b=>-1,g=>6,f=>3,i=>2} bd01000010030000001602000000d3 bd01000010030000001602000000d3 bd01000010030000001602000000d3 bd01000010030000001602000000d3 - {e=>-1,a=>3,d=>4,j=>-26,c=>2,h=>3,b=>0,g=>1,f=>5,i=>0} 830000003c050000001900000000e6 830000003c050000001900000000e6 830000003c050000001900000000e6 830000003c050000001900000000e6 - {e=>1,a=>4,d=>0,j=>-56,c=>1,h=>3,b=>2,g=>2,f=>3,i=>4} 5400000008030000001a04000000c8 5400000008030000001a04000000c8 5400000008030000001a04000000c8 5400000008030000001a04000000c8 - {e=>2,a=>7,d=>4,j=>-122,c=>-4,h=>1,b=>-2,g=>1,f=>4,i=>6} 370100001404000000090600000086 370100001404000000090600000086 370100001404000000090600000086 370100001404000000090600000086 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>3,a=>6,d=>7,j=>112,c=>0,k=>2,h=>-4,b=>-3,g=>3,f=>7,i=>5} 2e0000001f0700000023050000007002 2e0000001f0700000023050000007002 2e0000001f0700000023050000007002 2e0000001f0700000023050000007002 - {e=>-3,a=>1,d=>7,j=>-86,c=>3,k=>2,h=>3,b=>-4,g=>7,f=>0,i=>3} e10000002f000000001f03000000aa02 e10000002f000000001f03000000aa02 e10000002f000000001f03000000aa02 e10000002f000000001f03000000aa02 - {e=>-2,a=>0,d=>6,j=>-117,c=>-3,k=>7,h=>0,b=>-1,g=>6,f=>7,i=>2} 78010000360700000006020000008b07 78010000360700000006020000008b07 78010000360700000006020000008b07 78010000360700000006020000008b07 - {e=>1,a=>5,d=>5,j=>-119,c=>-2,k=>6,h=>1,b=>2,g=>3,f=>2,i=>0} 950100000d020000000b000000008906 950100000d020000000b000000008906 950100000d020000000b000000008906 950100000d020000000b000000008906 - {e=>3,a=>6,d=>6,j=>-128,c=>-2,k=>0,h=>2,b=>-4,g=>3,f=>3,i=>5} a60100001e0300000013050000008000 a60100001e0300000013050000008000 a60100001e0300000013050000008000 a60100001e0300000013050000008000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>-1,a=>1,d=>3,j=>90,l=>-1,c=>2,k=>4,h=>0,b=>-2,g=>5,f=>4,i=>3} b10000003b0400000005030000005a3c b10000003b0400000005030000005a3c b10000003b0400000005030000005a3c b10000003b0400000005030000005a3c - {e=>3,a=>0,d=>3,j=>27,l=>-2,c=>-3,k=>5,h=>0,b=>-1,g=>2,f=>1,i=>5} 780100001b0100000002050000001b35 780100001b0100000002050000001b35 780100001b0100000002050000001b35 780100001b0100000002050000001b35 - {e=>1,a=>1,d=>3,j=>-13,l=>-4,c=>-3,k=>5,h=>2,b=>-2,g=>6,f=>1,i=>1} 710100000b010000001601000000f325 710100000b010000001601000000f325 710100000b010000001601000000f325 710100000b010000001601000000f325 - {e=>2,a=>3,d=>7,j=>-47,l=>-2,c=>-3,k=>1,h=>3,b=>-3,g=>6,f=>3,i=>6} 6b01000017030000001e06000000d131 6b01000017030000001e06000000d131 6b01000017030000001e06000000d131 6b01000017030000001e06000000d131 - {e=>1,a=>3,d=>4,j=>20,l=>2,c=>-4,k=>3,h=>-3,b=>2,g=>4,f=>0,i=>4} 130100000c000000002c040000001413 130100000c000000002c040000001413 130100000c000000002c040000001413 130100000c000000002c040000001413 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-2,a=>2,m=>1,d=>3,j=>66,l=>2,c=>1,k=>7,h=>0,b=>3,g=>3,f=>3,i=>4} 5a00000033030000000304000000421701000000 5a00000033030000000304000000421701000000 5a00000033030000000304000000421701000000 5a00000033030000000304000000421701000000 - {e=>3,a=>7,m=>5,d=>2,j=>87,l=>-2,c=>-4,k=>4,h=>0,b=>1,g=>4,f=>1,i=>1} 0f0100001a010000000401000000573405000000 0f0100001a010000000401000000573405000000 0f0100001a010000000401000000573405000000 0f0100001a010000000401000000573405000000 - {e=>0,a=>3,m=>7,d=>4,j=>2,l=>-3,c=>2,k=>7,h=>-4,b=>-2,g=>0,f=>4,i=>1} b300000004040000002001000000022f07000000 b300000004040000002001000000022f07000000 b300000004040000002001000000022f07000000 b300000004040000002001000000022f07000000 - {e=>0,a=>6,m=>1,d=>0,j=>-127,l=>0,c=>0,k=>2,h=>-3,b=>-2,g=>3,f=>2,i=>1} 3600000000020000002b01000000810201000000 3600000000020000002b01000000810201000000 3600000000020000002b01000000810201000000 3600000000020000002b01000000810201000000 - {e=>-1,a=>4,m=>4,d=>0,j=>-10,l=>-3,c=>0,k=>4,h=>-4,b=>1,g=>6,f=>3,i=>0} 0c00000038030000002600000000f62c04000000 0c00000038030000002600000000f62c04000000 0c00000038030000002600000000f62c04000000 0c00000038030000002600000000f62c04000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>-3,n=>71,a=>1,m=>5,d=>3,j=>-14,l=>-1,c=>0,k=>5,h=>-3,b=>0,g=>0,f=>5,i=>5} 010000002b050000002805000000f23d0500000047 010000002b050000002805000000f23d0500000047 010000002b050000002805000000f23d0500000047 010000002b050000002805000000f23d0500000047 - {e=>1,n=>212,a=>5,m=>3,d=>1,j=>-32,l=>3,c=>-2,k=>5,h=>-2,b=>-3,g=>4,f=>0,i=>4} ad01000009000000003404000000e01d03000000d4 ad01000009000000003404000000e01d03000000d4 ad01000009000000003404000000e01d03000000d4 ad01000009000000003404000000e01d03000000d4 - {e=>-1,n=>32,a=>4,m=>3,d=>1,j=>-40,l=>-2,c=>-1,k=>3,h=>-1,b=>2,g=>0,f=>5,i=>5} d401000039050000003805000000d8330300000020 d401000039050000003805000000d8330300000020 d401000039050000003805000000d8330300000020 d401000039050000003805000000d8330300000020 - {e=>-1,n=>95,a=>2,m=>6,d=>6,j=>-84,l=>0,c=>2,k=>0,h=>2,b=>-3,g=>2,f=>3,i=>2} aa0000003e030000001202000000ac00060000005f aa0000003e030000001202000000ac00060000005f aa0000003e030000001202000000ac00060000005f aa0000003e030000001202000000ac00060000005f - {e=>0,n=>37,a=>4,m=>6,d=>1,j=>46,l=>2,c=>-3,k=>7,h=>0,b=>3,g=>0,f=>7,i=>0} 5c010000010700000000000000002e170600000025 5c010000010700000000000000002e170600000025 5c010000010700000000000000002e170600000025 5c010000010700000000000000002e170600000025 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; }; - {a=>106,b=>0} 6a00000000 6a00000000 6a00000000 6a00000000 - {a=>-10,b=>0} f600000000 f600000000 f600000000 f600000000 - {a=>12,b=>6} 0c06000000 0c06000000 0c06000000 0c06000000 - {a=>-86,b=>1} aa01000000 aa01000000 aa01000000 aa01000000 - {a=>-33,b=>2} df02000000 df02000000 df02000000 df02000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; }; - {c=>-3,a=>-108,b=>2} 942a000000 942a000000 942a000000 942a000000 - {c=>1,a=>96,b=>5} 600d000000 600d000000 600d000000 600d000000 - {c=>3,a=>-121,b=>6} 871e000000 871e000000 871e000000 871e000000 - {c=>-1,a=>-58,b=>1} c639000000 c639000000 c639000000 c639000000 - {c=>2,a=>62,b=>2} 3e12000000 3e12000000 3e12000000 3e12000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>40,b=>3,d=>-2} 28a3010000 28a3010000 28a3010000 28a3010000 - {c=>-3,a=>68,b=>4,d=>-3} 446c010000 446c010000 446c010000 446c010000 - {c=>-3,a=>21,b=>0,d=>3} 15e8000000 15e8000000 15e8000000 15e8000000 - {c=>-3,a=>-98,b=>2,d=>-1} 9eea010000 9eea010000 9eea010000 9eea010000 - {c=>-3,a=>74,b=>7,d=>1} 4a6f000000 4a6f000000 4a6f000000 4a6f000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>-2,a=>4,b=>0,d=>-4} 043001000003 043001000003 043001000003 043001000003 - {e=>4,c=>-1,a=>44,b=>0,d=>2} 2cb800000004 2cb800000004 2cb800000004 2cb800000004 - {e=>7,c=>-1,a=>-108,b=>5,d=>-2} 94bd01000007 94bd01000007 94bd01000007 94bd01000007 - {e=>3,c=>2,a=>-123,b=>0,d=>3} 85d000000003 85d000000003 85d000000003 85d000000003 - {e=>3,c=>0,a=>-85,b=>5,d=>0} ab0500000003 ab0500000003 ab0500000003 ab0500000003 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>-3,a=>-86,b=>1,d=>-3,f=>3} aa690100001a aa690100001a aa690100001a aa690100001a - {e=>4,c=>1,a=>-10,b=>0,d=>0,f=>3} f6080000001c f6080000001c f6080000001c f6080000001c - {e=>7,c=>-2,a=>18,b=>2,d=>-2,f=>-1} 12b20100003f 12b20100003f 12b20100003f 12b20100003f - {e=>2,c=>3,a=>-8,b=>5,d=>1,f=>2} f85d00000012 f85d00000012 f85d00000012 f85d00000012 - {e=>1,c=>0,a=>-98,b=>0,d=>1,f=>0} 9e4000000001 9e4000000001 9e4000000001 9e4000000001 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>3,c=>1,a=>126,g=>5,b=>0,d=>0,f=>3} 7e080000001b05000000 7e080000001b05000000 7e080000001b05000000 7e080000001b05000000 - {e=>0,c=>-4,a=>-72,g=>4,b=>2,d=>-1,f=>2} b8e20100001004000000 b8e20100001004000000 b8e20100001004000000 b8e20100001004000000 - {e=>4,c=>-2,a=>-68,g=>1,b=>6,d=>3,f=>3} bcf60000001c01000000 bcf60000001c01000000 bcf60000001c01000000 bcf60000001c01000000 - {e=>1,c=>-2,a=>34,g=>4,b=>7,d=>-4,f=>-4} 22370100002104000000 22370100002104000000 22370100002104000000 22370100002104000000 - {e=>2,c=>3,a=>13,g=>1,b=>3,d=>2,f=>-3} 0d9b0000002a01000000 0d9b0000002a01000000 0d9b0000002a01000000 0d9b0000002a01000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>6,c=>2,a=>-126,g=>7,b=>4,d=>-3,f=>2} 82540100001607000000 82540100001607000000 82540100001607000000 82540100001607000000 - {e=>7,c=>-3,a=>-72,g=>3,b=>6,d=>-4,f=>-3} b82e0100002f03000000 b82e0100002f03000000 b82e0100002f03000000 b82e0100002f03000000 - {e=>6,c=>-3,a=>67,g=>7,b=>6,d=>-1,f=>-4} 43ee0100002607000000 43ee0100002607000000 43ee0100002607000000 43ee0100002607000000 - {e=>4,c=>-2,a=>-37,g=>6,b=>2,d=>3,f=>3} dbf20000001c06000000 dbf20000001c06000000 dbf20000001c06000000 dbf20000001c06000000 - {e=>4,c=>3,a=>23,g=>7,b=>1,d=>2,f=>2} 17990000001407000000 17990000001407000000 17990000001407000000 17990000001407000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>106,d=>0,c=>1,h=>0,b=>6,g=>3,f=>3} 6a0e0000001b0300000000 6a0e0000001b0300000000 6a0e0000001b0300000000 6a0e0000001b0300000000 - {e=>0,a=>102,d=>-2,c=>-2,h=>0,b=>5,g=>0,f=>2} 66b5010000100000000000 66b5010000100000000000 66b5010000100000000000 66b5010000100000000000 - {e=>1,a=>-118,d=>2,c=>-3,h=>1,b=>1,g=>6,f=>3} 8aa9000000190600000001 8aa9000000190600000001 8aa9000000190600000001 8aa9000000190600000001 - {e=>0,a=>60,d=>-3,c=>2,h=>0,b=>3,g=>0,f=>0} 3c53010000000000000000 3c53010000000000000000 3c53010000000000000000 3c53010000000000000000 - {e=>5,a=>19,d=>-2,c=>3,h=>1,b=>2,g=>4,f=>3} 139a0100001d0400000001 139a0100001d0400000001 139a0100001d0400000001 139a0100001d0400000001 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>126,d=>2,c=>1,h=>5,b=>4,g=>6,f=>3,i=>-4} 7e8c0000001c0600000025 7e8c0000001c0600000025 7e8c0000001c0600000025 7e8c0000001c0600000025 - {e=>7,a=>-19,d=>0,c=>1,h=>2,b=>3,g=>5,f=>0,i=>-3} ed0b00000007050000002a ed0b00000007050000002a ed0b00000007050000002a ed0b00000007050000002a - {e=>0,a=>122,d=>3,c=>3,h=>2,b=>4,g=>2,f=>-2,i=>2} 7adc000000300200000012 7adc000000300200000012 7adc000000300200000012 7adc000000300200000012 - {e=>2,a=>62,d=>-4,c=>-4,h=>6,b=>3,g=>5,f=>-2,i=>3} 3e2301000032050000001e 3e2301000032050000001e 3e2301000032050000001e 3e2301000032050000001e - {e=>1,a=>64,d=>-3,c=>-4,h=>0,b=>3,g=>1,f=>-4,i=>-4} 4063010000210100000020 4063010000210100000020 4063010000210100000020 4063010000210100000020 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>6,a=>-51,d=>2,j=>2,c=>1,h=>0,b=>4,g=>2,f=>0,i=>-3} cd8c00000006020000002802000000 cd8c00000006020000002802000000 cd8c00000006020000002802000000 cd8c00000006020000002802000000 - {e=>3,a=>36,d=>-4,j=>7,c=>3,h=>7,b=>5,g=>6,f=>0,i=>-2} 241d01000003060000003707000000 241d01000003060000003707000000 241d01000003060000003707000000 241d01000003060000003707000000 - {e=>3,a=>-65,d=>-2,j=>7,c=>-1,h=>5,b=>0,g=>5,f=>3,i=>-1} bfb80100001b050000003d07000000 bfb80100001b050000003d07000000 bfb80100001b050000003d07000000 bfb80100001b050000003d07000000 - {e=>3,a=>-4,d=>2,j=>4,c=>1,h=>1,b=>5,g=>1,f=>-1,i=>1} fc8d0000003b010000000904000000 fc8d0000003b010000000904000000 fc8d0000003b010000000904000000 fc8d0000003b010000000904000000 - {e=>5,a=>114,d=>2,j=>0,c=>1,h=>2,b=>7,g=>2,f=>-3,i=>-3} 728f0000002d020000002a00000000 728f0000002d020000002a00000000 728f0000002d020000002a00000000 728f0000002d020000002a00000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>66,d=>1,j=>3,c=>3,k=>-88,h=>4,b=>5,g=>0,f=>3,i=>1} 425d0000001e000000000c03000000a8 425d0000001e000000000c03000000a8 425d0000001e000000000c03000000a8 425d0000001e000000000c03000000a8 - {e=>3,a=>-27,d=>3,j=>3,c=>-4,k=>-71,h=>2,b=>6,g=>1,f=>1,i=>-3} e5e60000000b010000002a03000000b9 e5e60000000b010000002a03000000b9 e5e60000000b010000002a03000000b9 e5e60000000b010000002a03000000b9 - {e=>7,a=>-4,d=>-3,j=>1,c=>-3,k=>-71,h=>5,b=>0,g=>3,f=>2,i=>-4} fc6801000017030000002501000000b9 fc6801000017030000002501000000b9 fc6801000017030000002501000000b9 fc6801000017030000002501000000b9 - {e=>7,a=>-35,d=>-3,j=>6,c=>2,k=>50,h=>5,b=>5,g=>6,f=>1,i=>2} dd550100000f06000000150600000032 dd550100000f06000000150600000032 dd550100000f06000000150600000032 dd550100000f06000000150600000032 - {e=>5,a=>-47,d=>0,j=>3,c=>3,k=>-120,h=>3,b=>2,g=>7,f=>2,i=>1} d11a00000015070000000b0300000088 d11a00000015070000000b0300000088 d11a00000015070000000b0300000088 d11a00000015070000000b0300000088 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>2,a=>-32,d=>-4,j=>1,l=>2,c=>-4,k=>-17,h=>5,b=>0,g=>3,f=>1,i=>-3} e0200100000a030000002d01000000ef02 e0200100000a030000002d01000000ef02 e0200100000a030000002d01000000ef02 e0200100000a030000002d01000000ef02 - {e=>7,a=>-51,d=>2,j=>0,l=>7,c=>-1,k=>-66,h=>1,b=>5,g=>3,f=>1,i=>-1} cdbd0000000f030000003900000000be07 cdbd0000000f030000003900000000be07 cdbd0000000f030000003900000000be07 cdbd0000000f030000003900000000be07 - {e=>5,a=>73,d=>2,j=>4,l=>7,c=>-3,k=>-107,h=>4,b=>6,g=>4,f=>-2,i=>-4} 49ae000000350400000024040000009507 49ae000000350400000024040000009507 49ae000000350400000024040000009507 49ae000000350400000024040000009507 - {e=>7,a=>-32,d=>0,j=>2,l=>6,c=>1,k=>-119,h=>6,b=>7,g=>0,f=>-4,i=>0} e00f000000270000000006020000008906 e00f000000270000000006020000008906 e00f000000270000000006020000008906 e00f000000270000000006020000008906 - {e=>7,a=>70,d=>1,j=>3,l=>0,c=>2,k=>-78,h=>4,b=>1,g=>4,f=>3,i=>-1} 46510000001f040000003c03000000b200 46510000001f040000003c03000000b200 46510000001f040000003c03000000b200 46510000001f040000003c03000000b200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>5,a=>82,m=>1,d=>-4,j=>4,l=>4,c=>2,k=>75,h=>1,b=>7,g=>3,f=>-2,i=>2} 5217010000350300000011040000004b0c 5217010000350300000011040000004b0c 5217010000350300000011040000004b0c 5217010000350300000011040000004b0c - {e=>1,a=>65,m=>0,d=>-2,j=>6,l=>6,c=>1,k=>10,h=>7,b=>6,g=>6,f=>1,i=>3} 418e01000009060000001f060000000a06 418e01000009060000001f060000000a06 418e01000009060000001f060000000a06 418e01000009060000001f060000000a06 - {e=>1,a=>50,m=>0,d=>-1,j=>4,l=>1,c=>3,k=>-39,h=>4,b=>5,g=>1,f=>3,i=>2} 32dd01000019010000001404000000d901 32dd01000019010000001404000000d901 32dd01000019010000001404000000d901 32dd01000019010000001404000000d901 - {e=>1,a=>-30,m=>-3,d=>-3,j=>4,l=>3,c=>0,k=>-58,h=>2,b=>2,g=>4,f=>-3,i=>-1} e24201000029040000003a04000000c62b e24201000029040000003a04000000c62b e24201000029040000003a04000000c62b e24201000029040000003a04000000c62b - {e=>6,a=>-8,m=>-1,d=>-4,j=>1,l=>7,c=>1,k=>-96,h=>4,b=>1,g=>2,f=>-4,i=>3} f80901000026020000001c01000000a03f f80901000026020000001c01000000a03f f80901000026020000001c01000000a03f f80901000026020000001c01000000a03f = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>7,a=>127,m=>-3,d=>2,j=>1,l=>4,c=>3,k=>113,h=>7,b=>0,g=>3,f=>-2,i=>1} 7f9800000036030000000f01000000712c07000000 7f9800000036030000000f01000000712c07000000 7f9800000036030000000f01000000712c07000000 7f9800000036030000000f01000000712c07000000 - {e=>4,n=>0,a=>91,m=>2,d=>-1,j=>4,l=>6,c=>0,k=>7,h=>3,b=>0,g=>3,f=>2,i=>2} 5bc001000014030000001304000000071600000000 5bc001000014030000001304000000071600000000 5bc001000014030000001304000000071600000000 5bc001000014030000001304000000071600000000 - {e=>3,n=>7,a=>-20,m=>-1,d=>-3,j=>0,l=>1,c=>3,k=>18,h=>1,b=>6,g=>4,f=>2,i=>-2} ec5e01000013040000003100000000123907000000 ec5e01000013040000003100000000123907000000 ec5e01000013040000003100000000123907000000 ec5e01000013040000003100000000123907000000 - {e=>6,n=>4,a=>46,m=>-4,d=>-2,j=>7,l=>6,c=>-3,k=>27,h=>0,b=>6,g=>7,f=>2,i=>3} 2eae010000160700000018070000001b2604000000 2eae010000160700000018070000001b2604000000 2eae010000160700000018070000001b2604000000 2eae010000160700000018070000001b2604000000 - {e=>6,n=>5,a=>47,m=>-1,d=>-4,j=>7,l=>6,c=>-3,k=>-66,h=>0,b=>6,g=>0,f=>-4,i=>0} 2f2e01000026000000000007000000be3e05000000 2f2e01000026000000000007000000be3e05000000 2f2e01000026000000000007000000be3e05000000 2f2e01000026000000000007000000be3e05000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>3,a=>90,m=>-1,d=>-4,j=>1,l=>4,c=>2,k=>65,h=>5,b=>7,g=>5,f=>1,o=>24,i=>2} 5a170100000f050000001501000000413c0300000018 5a170100000f050000001501000000413c0300000018 5a170100000f050000001501000000413c0300000018 5a170100000f050000001501000000413c0300000018 - {e=>2,n=>4,a=>119,m=>3,d=>-2,j=>6,l=>0,c=>-4,k=>51,h=>3,b=>6,g=>7,f=>-4,o=>208,i=>-4} 77a601000022070000002306000000331804000000d0 77a601000022070000002306000000331804000000d0 77a601000022070000002306000000331804000000d0 77a601000022070000002306000000331804000000d0 - {e=>7,n=>2,a=>-108,m=>-3,d=>2,j=>4,l=>7,c=>-1,k=>14,h=>5,b=>7,g=>3,f=>3,o=>186,i=>3} 94bf0000001f030000001d040000000e2f02000000ba 94bf0000001f030000001d040000000e2f02000000ba 94bf0000001f030000001d040000000e2f02000000ba 94bf0000001f030000001d040000000e2f02000000ba - {e=>6,n=>0,a=>-25,m=>-1,d=>1,j=>2,l=>3,c=>-1,k=>-23,h=>6,b=>5,g=>5,f=>2,o=>143,i=>2} e77d00000016050000001602000000e93b000000008f e77d00000016050000001602000000e93b000000008f e77d00000016050000001602000000e93b000000008f e77d00000016050000001602000000e93b000000008f - {e=>3,n=>2,a=>-24,m=>0,d=>-1,j=>4,l=>3,c=>3,k=>57,h=>3,b=>7,g=>0,f=>-2,o=>223,i=>2} e8df01000033000000001304000000390302000000df e8df01000033000000001304000000390302000000df e8df01000033000000001304000000390302000000df e8df01000033000000001304000000390302000000df = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; }; - {a=>-22,b=>5} eaff05000000 eaff05000000 eaff05000000 eaff05000000 - {a=>45,b=>7} 2d0007000000 2d0007000000 2d0007000000 2d0007000000 - {a=>-48,b=>5} d0ff05000000 d0ff05000000 d0ff05000000 d0ff05000000 - {a=>-29,b=>0} e3ff00000000 e3ff00000000 e3ff00000000 e3ff00000000 - {a=>124,b=>1} 7c0001000000 7c0001000000 7c0001000000 7c0001000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-68,b=>0} bcff00000000 bcff00000000 bcff00000000 bcff00000000 - {c=>0,a=>-11,b=>4} f5ff04000000 f5ff04000000 f5ff04000000 f5ff04000000 - {c=>-4,a=>-111,b=>3} 91ff23000000 91ff23000000 91ff23000000 91ff23000000 - {c=>-1,a=>-105,b=>0} 97ff38000000 97ff38000000 97ff38000000 97ff38000000 - {c=>0,a=>-96,b=>4} a0ff04000000 a0ff04000000 a0ff04000000 a0ff04000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-55,b=>7,d=>1} c9ff67000000 c9ff67000000 c9ff67000000 c9ff67000000 - {c=>3,a=>59,b=>3,d=>-2} 3b009b010000 3b009b010000 3b009b010000 3b009b010000 - {c=>-1,a=>-48,b=>3,d=>0} d0ff3b000000 d0ff3b000000 d0ff3b000000 d0ff3b000000 - {c=>-1,a=>-29,b=>6,d=>3} e3fffe000000 e3fffe000000 e3fffe000000 e3fffe000000 - {c=>-3,a=>32,b=>0,d=>1} 200068000000 200068000000 200068000000 200068000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-3,a=>20,b=>1,d=>-3} 14006901000004 14006901000004 14006901000004 14006901000004 - {e=>3,c=>2,a=>-60,b=>0,d=>-2} c4ff9001000003 c4ff9001000003 c4ff9001000003 c4ff9001000003 - {e=>5,c=>-3,a=>-102,b=>3,d=>-4} 9aff2b01000005 9aff2b01000005 9aff2b01000005 9aff2b01000005 - {e=>3,c=>-4,a=>5,b=>0,d=>1} 05006000000003 05006000000003 05006000000003 05006000000003 - {e=>4,c=>0,a=>-80,b=>6,d=>0} b0ff0600000004 b0ff0600000004 b0ff0600000004 b0ff0600000004 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>5,c=>-1,a=>-102,b=>0,d=>1,f=>0} 9aff7800000005 9aff7800000005 9aff7800000005 9aff7800000005 - {e=>4,c=>2,a=>7,b=>4,d=>-4,f=>-1} 0700140100003c 0700140100003c 0700140100003c 0700140100003c - {e=>4,c=>-1,a=>99,b=>1,d=>1,f=>-1} 6300790000003c 6300790000003c 6300790000003c 6300790000003c - {e=>3,c=>-2,a=>-105,b=>7,d=>-4,f=>-3} 97ff370100002b 97ff370100002b 97ff370100002b 97ff370100002b - {e=>6,c=>-2,a=>102,b=>7,d=>-4,f=>-1} 6600370100003e 6600370100003e 6600370100003e 6600370100003e = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>4,c=>0,a=>106,g=>0,b=>1,d=>-3,f=>1} 6a00410100000c00000000 6a00410100000c00000000 6a00410100000c00000000 6a00410100000c00000000 - {e=>6,c=>-4,a=>-47,g=>4,b=>0,d=>2,f=>-1} d1ffa00000003e04000000 d1ffa00000003e04000000 d1ffa00000003e04000000 d1ffa00000003e04000000 - {e=>2,c=>0,a=>28,g=>2,b=>3,d=>-4,f=>-1} 1c00030100003a02000000 1c00030100003a02000000 1c00030100003a02000000 1c00030100003a02000000 - {e=>2,c=>2,a=>8,g=>0,b=>4,d=>-3,f=>1} 0800540100000a00000000 0800540100000a00000000 0800540100000a00000000 0800540100000a00000000 - {e=>7,c=>1,a=>-41,g=>1,b=>6,d=>-3,f=>-3} d7ff4e0100002f01000000 d7ff4e0100002f01000000 d7ff4e0100002f01000000 d7ff4e0100002f01000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>2,c=>2,a=>57,g=>4,b=>4,d=>-3,f=>-3} 3900540100002a04000000 3900540100002a04000000 3900540100002a04000000 3900540100002a04000000 - {e=>5,c=>-1,a=>108,g=>7,b=>2,d=>-1,f=>-3} 6c00fa0100002d07000000 6c00fa0100002d07000000 6c00fa0100002d07000000 6c00fa0100002d07000000 - {e=>3,c=>-3,a=>59,g=>1,b=>5,d=>1,f=>-2} 3b006d0000003301000000 3b006d0000003301000000 3b006d0000003301000000 3b006d0000003301000000 - {e=>3,c=>-2,a=>82,g=>7,b=>1,d=>-1,f=>-1} 5200f10100003b07000000 5200f10100003b07000000 5200f10100003b07000000 5200f10100003b07000000 - {e=>1,c=>-1,a=>12,g=>2,b=>6,d=>3,f=>-1} 0c00fe0000003902000000 0c00fe0000003902000000 0c00fe0000003902000000 0c00fe0000003902000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>50,d=>-3,c=>-2,h=>0,b=>7,g=>4,f=>-2} 320077010000310400000000 320077010000310400000000 320077010000310400000000 320077010000310400000000 - {e=>5,a=>40,d=>-3,c=>-4,h=>2,b=>3,g=>0,f=>3} 2800630100001d0000000002 2800630100001d0000000002 2800630100001d0000000002 2800630100001d0000000002 - {e=>6,a=>21,d=>-1,c=>3,h=>2,b=>6,g=>7,f=>-1} 1500de0100003e0700000002 1500de0100003e0700000002 1500de0100003e0700000002 1500de0100003e0700000002 - {e=>0,a=>-119,d=>0,c=>-1,h=>6,b=>1,g=>7,f=>3} 89ff39000000180700000006 89ff39000000180700000006 89ff39000000180700000006 89ff39000000180700000006 - {e=>4,a=>-45,d=>2,c=>1,h=>2,b=>7,g=>7,f=>0} d3ff8f000000040700000002 d3ff8f000000040700000002 d3ff8f000000040700000002 d3ff8f000000040700000002 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>95,d=>0,c=>-2,h=>1,b=>4,g=>3,f=>0,i=>-1} 5f0034000000020300000039 5f0034000000020300000039 5f0034000000020300000039 5f0034000000020300000039 - {e=>4,a=>34,d=>0,c=>3,h=>3,b=>2,g=>1,f=>0,i=>-1} 22001a00000004010000003b 22001a00000004010000003b 22001a00000004010000003b 22001a00000004010000003b - {e=>7,a=>40,d=>-2,c=>-2,h=>0,b=>3,g=>1,f=>2,i=>1} 2800b3010000170100000008 2800b3010000170100000008 2800b3010000170100000008 2800b3010000170100000008 - {e=>2,a=>-13,d=>-3,c=>1,h=>1,b=>0,g=>5,f=>3,i=>-2} f3ff480100001a0500000031 f3ff480100001a0500000031 f3ff480100001a0500000031 f3ff480100001a0500000031 - {e=>6,a=>-50,d=>0,c=>1,h=>6,b=>6,g=>5,f=>-3,i=>-2} ceff0e0000002e0500000036 ceff0e0000002e0500000036 ceff0e0000002e0500000036 ceff0e0000002e0500000036 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-78,d=>-2,j=>4,c=>-1,h=>1,b=>3,g=>6,f=>-3,i=>-2} b2ffbb01000028060000003104000000 b2ffbb01000028060000003104000000 b2ffbb01000028060000003104000000 b2ffbb01000028060000003104000000 - {e=>7,a=>76,d=>-2,j=>1,c=>-4,h=>5,b=>6,g=>3,f=>-4,i=>2} 4c00a601000027030000001501000000 4c00a601000027030000001501000000 4c00a601000027030000001501000000 4c00a601000027030000001501000000 - {e=>7,a=>88,d=>0,j=>0,c=>1,h=>1,b=>1,g=>1,f=>1,i=>2} 5800090000000f010000001100000000 5800090000000f010000001100000000 5800090000000f010000001100000000 5800090000000f010000001100000000 - {e=>7,a=>-27,d=>0,j=>7,c=>-1,h=>1,b=>0,g=>0,f=>-4,i=>-1} e5ff3800000027000000003907000000 e5ff3800000027000000003907000000 e5ff3800000027000000003907000000 e5ff3800000027000000003907000000 - {e=>1,a=>-99,d=>-3,j=>3,c=>1,h=>5,b=>1,g=>6,f=>3,i=>3} 9dff4901000019060000001d03000000 9dff4901000019060000001d03000000 9dff4901000019060000001d03000000 9dff4901000019060000001d03000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>2,a=>4,d=>1,j=>5,c=>-3,k=>75,h=>5,b=>0,g=>2,f=>3,i=>-1} 0400680000001a020000003d050000004b 0400680000001a020000003d050000004b 0400680000001a020000003d050000004b 0400680000001a020000003d050000004b - {e=>5,a=>7,d=>-2,j=>1,c=>0,k=>19,h=>4,b=>6,g=>6,f=>3,i=>1} 0700860100001d060000000c0100000013 0700860100001d060000000c0100000013 0700860100001d060000000c0100000013 0700860100001d060000000c0100000013 - {e=>2,a=>57,d=>1,j=>0,c=>1,k=>89,h=>1,b=>3,g=>6,f=>3,i=>1} 39004b0000001a06000000090000000059 39004b0000001a06000000090000000059 39004b0000001a06000000090000000059 39004b0000001a06000000090000000059 - {e=>4,a=>7,d=>0,j=>2,c=>-1,k=>-8,h=>3,b=>7,g=>4,f=>-1,i=>-4} 07003f0000003c040000002302000000f8 07003f0000003c040000002302000000f8 07003f0000003c040000002302000000f8 07003f0000003c040000002302000000f8 - {e=>5,a=>105,d=>3,j=>1,c=>3,k=>119,h=>7,b=>7,g=>0,f=>0,i=>-2} 6900df0000000500000000370100000077 6900df0000000500000000370100000077 6900df0000000500000000370100000077 6900df0000000500000000370100000077 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>3,a=>-68,d=>3,j=>1,l=>0,c=>-3,k=>40,h=>5,b=>6,g=>0,f=>0,i=>2} bcffee000000030000000015010000002800 bcffee000000030000000015010000002800 bcffee000000030000000015010000002800 bcffee000000030000000015010000002800 - {e=>6,a=>84,d=>-4,j=>4,l=>0,c=>1,k=>100,h=>2,b=>1,g=>6,f=>3,i=>2} 5400090100001e0600000012040000006400 5400090100001e0600000012040000006400 5400090100001e0600000012040000006400 5400090100001e0600000012040000006400 - {e=>2,a=>-8,d=>-4,j=>2,l=>4,c=>-2,k=>-68,h=>2,b=>6,g=>5,f=>-1,i=>-1} f8ff360100003a050000003a02000000bc04 f8ff360100003a050000003a02000000bc04 f8ff360100003a050000003a02000000bc04 f8ff360100003a050000003a02000000bc04 - {e=>0,a=>-64,d=>3,j=>4,l=>1,c=>-4,k=>-2,h=>3,b=>1,g=>4,f=>-3,i=>-3} c0ffe100000028040000002b04000000fe01 c0ffe100000028040000002b04000000fe01 c0ffe100000028040000002b04000000fe01 c0ffe100000028040000002b04000000fe01 - {e=>5,a=>64,d=>-4,j=>6,l=>7,c=>0,k=>13,h=>2,b=>4,g=>7,f=>-4,i=>3} 40000401000025070000001a060000000d07 40000401000025070000001a060000000d07 40000401000025070000001a060000000d07 40000401000025070000001a060000000d07 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>2,a=>-53,m=>2,d=>0,j=>4,l=>6,c=>0,k=>-28,h=>4,b=>1,g=>0,f=>0,i=>-1} cbff0100000002000000003c04000000e416 cbff0100000002000000003c04000000e416 cbff0100000002000000003c04000000e416 cbff0100000002000000003c04000000e416 - {e=>2,a=>-58,m=>-4,d=>-3,j=>7,l=>1,c=>1,k=>-110,h=>4,b=>2,g=>5,f=>-2,i=>1} c6ff4a01000032050000000c070000009221 c6ff4a01000032050000000c070000009221 c6ff4a01000032050000000c070000009221 c6ff4a01000032050000000c070000009221 - {e=>2,a=>-95,m=>1,d=>2,j=>3,l=>1,c=>2,k=>47,h=>7,b=>5,g=>2,f=>3,i=>0} a1ff950000001a0200000007030000002f09 a1ff950000001a0200000007030000002f09 a1ff950000001a0200000007030000002f09 a1ff950000001a0200000007030000002f09 - {e=>2,a=>86,m=>0,d=>-1,j=>3,l=>0,c=>3,k=>-1,h=>4,b=>3,g=>1,f=>0,i=>-3} 5600db01000002010000002c03000000ff00 5600db01000002010000002c03000000ff00 5600db01000002010000002c03000000ff00 5600db01000002010000002c03000000ff00 - {e=>5,a=>31,m=>-3,d=>1,j=>4,l=>5,c=>1,k=>1,h=>6,b=>1,g=>2,f=>2,i=>-4} 1f004900000015020000002604000000012d 1f004900000015020000002604000000012d 1f004900000015020000002604000000012d 1f004900000015020000002604000000012d = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>4,n=>3,a=>-119,m=>-2,d=>0,j=>0,l=>0,c=>3,k=>127,h=>3,b=>3,g=>0,f=>-3,i=>-3} 89ff1b0000002c000000002b000000007f3003000000 89ff1b0000002c000000002b000000007f3003000000 89ff1b0000002c000000002b000000007f3003000000 89ff1b0000002c000000002b000000007f3003000000 - {e=>2,n=>3,a=>47,m=>-4,d=>1,j=>6,l=>7,c=>1,k=>-126,h=>6,b=>1,g=>2,f=>-2,i=>-4} 2f004900000032020000002606000000822703000000 2f004900000032020000002606000000822703000000 2f004900000032020000002606000000822703000000 2f004900000032020000002606000000822703000000 - {e=>6,n=>4,a=>-16,m=>3,d=>-4,j=>3,l=>3,c=>2,k=>-100,h=>4,b=>4,g=>3,f=>-1,i=>3} f0ff140100003e030000001c030000009c1b04000000 f0ff140100003e030000001c030000009c1b04000000 f0ff140100003e030000001c030000009c1b04000000 f0ff140100003e030000001c030000009c1b04000000 - {e=>0,n=>3,a=>99,m=>-3,d=>-4,j=>4,l=>1,c=>-1,k=>-77,h=>3,b=>1,g=>0,f=>-2,i=>3} 63003901000030000000001b04000000b32903000000 63003901000030000000001b04000000b32903000000 63003901000030000000001b04000000b32903000000 63003901000030000000001b04000000b32903000000 - {e=>5,n=>0,a=>-106,m=>-2,d=>-4,j=>7,l=>7,c=>-3,k=>-97,h=>3,b=>3,g=>2,f=>1,i=>-3} 96ff2b0100000d020000002b070000009f3700000000 96ff2b0100000d020000002b070000009f3700000000 96ff2b0100000d020000002b070000009f3700000000 96ff2b0100000d020000002b070000009f3700000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>3,n=>7,a=>-113,m=>1,d=>-3,j=>5,l=>0,c=>1,k=>2,h=>6,b=>0,g=>5,f=>-2,o=>22,i=>0} 8fff480100003305000000060500000002080700000016 8fff480100003305000000060500000002080700000016 8fff480100003305000000060500000002080700000016 8fff480100003305000000060500000002080700000016 - {e=>6,n=>7,a=>-82,m=>-2,d=>-3,j=>7,l=>3,c=>-1,k=>-116,h=>6,b=>1,g=>5,f=>2,o=>227,i=>-2} aeff79010000160500000036070000008c3307000000e3 aeff79010000160500000036070000008c3307000000e3 aeff79010000160500000036070000008c3307000000e3 aeff79010000160500000036070000008c3307000000e3 - {e=>1,n=>4,a=>-117,m=>-2,d=>-2,j=>2,l=>5,c=>1,k=>-17,h=>3,b=>6,g=>3,f=>-4,o=>238,i=>-2} 8bff8e01000021030000003302000000ef3504000000ee 8bff8e01000021030000003302000000ef3504000000ee 8bff8e01000021030000003302000000ef3504000000ee 8bff8e01000021030000003302000000ef3504000000ee - {e=>4,n=>6,a=>62,m=>-2,d=>3,j=>0,l=>4,c=>2,k=>119,h=>2,b=>7,g=>6,f=>0,o=>141,i=>-4} 3e00d7000000040600000022000000007734060000008d 3e00d7000000040600000022000000007734060000008d 3e00d7000000040600000022000000007734060000008d 3e00d7000000040600000022000000007734060000008d - {e=>0,n=>5,a=>59,m=>0,d=>1,j=>3,l=>5,c=>-2,k=>-64,h=>0,b=>7,g=>0,f=>-4,o=>130,i=>3} 3b007700000020000000001803000000c0050500000082 3b007700000020000000001803000000c0050500000082 3b007700000020000000001803000000c0050500000082 3b007700000020000000001803000000c0050500000082 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; }; - {a=>-25,b=>5} e7ffffff05000000 e7ffffff05000000 e7ffffff05000000 e7ffffff05000000 - {a=>10,b=>1} 0a00000001000000 0a00000001000000 0a00000001000000 0a00000001000000 - {a=>8,b=>7} 0800000007000000 0800000007000000 0800000007000000 0800000007000000 - {a=>-93,b=>6} a3ffffff06000000 a3ffffff06000000 a3ffffff06000000 a3ffffff06000000 - {a=>-67,b=>1} bdffffff01000000 bdffffff01000000 bdffffff01000000 bdffffff01000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-12,b=>7} f4ffffff07000000 f4ffffff07000000 f4ffffff07000000 f4ffffff07000000 - {c=>-4,a=>99,b=>7} 6300000027000000 6300000027000000 6300000027000000 6300000027000000 - {c=>1,a=>18,b=>7} 120000000f000000 120000000f000000 120000000f000000 120000000f000000 - {c=>2,a=>43,b=>7} 2b00000017000000 2b00000017000000 2b00000017000000 2b00000017000000 - {c=>-4,a=>34,b=>0} 2200000020000000 2200000020000000 2200000020000000 2200000020000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>26,b=>4,d=>1} 1a00000074000000 1a00000074000000 1a00000074000000 1a00000074000000 - {c=>-3,a=>42,b=>5,d=>0} 2a0000002d000000 2a0000002d000000 2a0000002d000000 2a0000002d000000 - {c=>3,a=>115,b=>3,d=>-4} 730000001b010000 730000001b010000 730000001b010000 730000001b010000 - {c=>1,a=>21,b=>4,d=>-2} 150000008c010000 150000008c010000 150000008c010000 150000008c010000 - {c=>1,a=>124,b=>0,d=>-2} 7c00000088010000 7c00000088010000 7c00000088010000 7c00000088010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-3,a=>-59,b=>7,d=>-3} c5ffffff6f01000001 c5ffffff6f01000001 c5ffffff6f01000001 c5ffffff6f01000001 - {e=>5,c=>3,a=>96,b=>7,d=>1} 600000005f00000005 600000005f00000005 600000005f00000005 600000005f00000005 - {e=>6,c=>-3,a=>97,b=>1,d=>1} 610000006900000006 610000006900000006 610000006900000006 610000006900000006 - {e=>0,c=>-3,a=>45,b=>5,d=>-2} 2d000000ad01000000 2d000000ad01000000 2d000000ad01000000 2d000000ad01000000 - {e=>5,c=>-4,a=>-125,b=>0,d=>1} 83ffffff6000000005 83ffffff6000000005 83ffffff6000000005 83ffffff6000000005 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>3,a=>-75,b=>2,d=>-3,f=>0} b5ffffff5a01000006 b5ffffff5a01000006 b5ffffff5a01000006 b5ffffff5a01000006 - {e=>5,c=>-4,a=>-82,b=>3,d=>3,f=>1} aeffffffe30000000d aeffffffe30000000d aeffffffe30000000d aeffffffe30000000d - {e=>7,c=>1,a=>53,b=>4,d=>-2,f=>0} 350000008c01000007 350000008c01000007 350000008c01000007 350000008c01000007 - {e=>1,c=>2,a=>126,b=>6,d=>-3,f=>0} 7e0000005601000001 7e0000005601000001 7e0000005601000001 7e0000005601000001 - {e=>3,c=>0,a=>11,b=>4,d=>-1,f=>-1} 0b000000c40100003b 0b000000c40100003b 0b000000c40100003b 0b000000c40100003b = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>2,c=>-1,a=>-28,g=>6,b=>6,d=>1,f=>-2} e4ffffff7e0000003206000000 e4ffffff7e0000003206000000 e4ffffff7e0000003206000000 e4ffffff7e0000003206000000 - {e=>1,c=>2,a=>-122,g=>5,b=>3,d=>2,f=>-2} 86ffffff930000003105000000 86ffffff930000003105000000 86ffffff930000003105000000 86ffffff930000003105000000 - {e=>7,c=>-2,a=>-4,g=>7,b=>7,d=>1,f=>3} fcffffff770000001f07000000 fcffffff770000001f07000000 fcffffff770000001f07000000 fcffffff770000001f07000000 - {e=>3,c=>-1,a=>-107,g=>6,b=>5,d=>-4,f=>-3} 95ffffff3d0100002b06000000 95ffffff3d0100002b06000000 95ffffff3d0100002b06000000 95ffffff3d0100002b06000000 - {e=>2,c=>1,a=>-115,g=>0,b=>7,d=>2,f=>0} 8dffffff8f0000000200000000 8dffffff8f0000000200000000 8dffffff8f0000000200000000 8dffffff8f0000000200000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>4,c=>1,a=>-92,g=>6,b=>5,d=>-4,f=>-4} a4ffffff0d0100002406000000 a4ffffff0d0100002406000000 a4ffffff0d0100002406000000 a4ffffff0d0100002406000000 - {e=>3,c=>3,a=>112,g=>1,b=>4,d=>0,f=>-3} 700000001c0000002b01000000 700000001c0000002b01000000 700000001c0000002b01000000 700000001c0000002b01000000 - {e=>2,c=>1,a=>-90,g=>7,b=>2,d=>1,f=>0} a6ffffff4a0000000207000000 a6ffffff4a0000000207000000 a6ffffff4a0000000207000000 a6ffffff4a0000000207000000 - {e=>1,c=>3,a=>20,g=>3,b=>6,d=>-1,f=>-4} 14000000de0100002103000000 14000000de0100002103000000 14000000de0100002103000000 14000000de0100002103000000 - {e=>0,c=>1,a=>-18,g=>4,b=>0,d=>-2,f=>-2} eeffffff880100003004000000 eeffffff880100003004000000 eeffffff880100003004000000 eeffffff880100003004000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>38,d=>-1,c=>-1,h=>0,b=>7,g=>7,f=>3} 26000000ff0100001e0700000000 26000000ff0100001e0700000000 26000000ff0100001e0700000000 26000000ff0100001e0700000000 - {e=>6,a=>31,d=>3,c=>2,h=>1,b=>2,g=>0,f=>3} 1f000000d20000001e0000000001 1f000000d20000001e0000000001 1f000000d20000001e0000000001 1f000000d20000001e0000000001 - {e=>7,a=>-56,d=>-4,c=>0,h=>5,b=>1,g=>2,f=>-4} c8ffffff01010000270200000005 c8ffffff01010000270200000005 c8ffffff01010000270200000005 c8ffffff01010000270200000005 - {e=>7,a=>119,d=>2,c=>-4,h=>5,b=>7,g=>0,f=>-3} 77000000a70000002f0000000005 77000000a70000002f0000000005 77000000a70000002f0000000005 77000000a70000002f0000000005 - {e=>7,a=>-122,d=>3,c=>3,h=>6,b=>2,g=>7,f=>2} 86ffffffda000000170700000006 86ffffffda000000170700000006 86ffffffda000000170700000006 86ffffffda000000170700000006 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>0,a=>66,d=>-4,c=>-4,h=>6,b=>2,g=>6,f=>3,i=>2} 4200000022010000180600000016 4200000022010000180600000016 4200000022010000180600000016 4200000022010000180600000016 - {e=>2,a=>19,d=>-2,c=>3,h=>4,b=>6,g=>5,f=>2,i=>3} 130000009e01000012050000001c 130000009e01000012050000001c 130000009e01000012050000001c 130000009e01000012050000001c - {e=>1,a=>-41,d=>-3,c=>-3,h=>6,b=>5,g=>0,f=>-3,i=>-2} d7ffffff6d010000290000000036 d7ffffff6d010000290000000036 d7ffffff6d010000290000000036 d7ffffff6d010000290000000036 - {e=>3,a=>-25,d=>1,c=>0,h=>2,b=>2,g=>6,f=>2,i=>-3} e7ffffff4200000013060000002a e7ffffff4200000013060000002a e7ffffff4200000013060000002a e7ffffff4200000013060000002a - {e=>3,a=>77,d=>3,c=>-1,h=>3,b=>5,g=>6,f=>-1,i=>3} 4d000000fd0000003b060000001b 4d000000fd0000003b060000001b 4d000000fd0000003b060000001b 4d000000fd0000003b060000001b = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>7,a=>-49,d=>3,j=>4,c=>1,h=>6,b=>5,g=>7,f=>-3,i=>-2} cfffffffcd0000002f070000003604000000 cfffffffcd0000002f070000003604000000 cfffffffcd0000002f070000003604000000 cfffffffcd0000002f070000003604000000 - {e=>4,a=>-24,d=>-3,j=>3,c=>3,h=>3,b=>6,g=>6,f=>3,i=>1} e8ffffff5e0100001c060000000b03000000 e8ffffff5e0100001c060000000b03000000 e8ffffff5e0100001c060000000b03000000 e8ffffff5e0100001c060000000b03000000 - {e=>5,a=>-77,d=>1,j=>7,c=>-3,h=>0,b=>6,g=>1,f=>2,i=>1} b3ffffff6e00000015010000000807000000 b3ffffff6e00000015010000000807000000 b3ffffff6e00000015010000000807000000 b3ffffff6e00000015010000000807000000 - {e=>5,a=>80,d=>3,j=>5,c=>-3,h=>1,b=>6,g=>7,f=>-4,i=>3} 50000000ee00000025070000001905000000 50000000ee00000025070000001905000000 50000000ee00000025070000001905000000 50000000ee00000025070000001905000000 - {e=>3,a=>33,d=>-4,j=>4,c=>-1,h=>5,b=>4,g=>2,f=>3,i=>-2} 210000003c0100001b020000003504000000 210000003c0100001b020000003504000000 210000003c0100001b020000003504000000 210000003c0100001b020000003504000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>1,a=>-125,d=>-4,j=>6,c=>-1,k=>-20,h=>4,b=>1,g=>5,f=>-1,i=>1} 83ffffff3901000039050000000c06000000ec 83ffffff3901000039050000000c06000000ec 83ffffff3901000039050000000c06000000ec 83ffffff3901000039050000000c06000000ec - {e=>6,a=>123,d=>0,j=>3,c=>1,k=>-127,h=>6,b=>5,g=>2,f=>-2,i=>-2} 7b0000000d0000003602000000360300000081 7b0000000d0000003602000000360300000081 7b0000000d0000003602000000360300000081 7b0000000d0000003602000000360300000081 - {e=>3,a=>80,d=>-3,j=>6,c=>3,k=>-21,h=>1,b=>7,g=>5,f=>-2,i=>-1} 500000005f01000033050000003906000000eb 500000005f01000033050000003906000000eb 500000005f01000033050000003906000000eb 500000005f01000033050000003906000000eb - {e=>6,a=>85,d=>-2,j=>5,c=>-3,k=>-38,h=>1,b=>5,g=>2,f=>-4,i=>-1} 55000000ad01000026020000003905000000da 55000000ad01000026020000003905000000da 55000000ad01000026020000003905000000da 55000000ad01000026020000003905000000da - {e=>6,a=>-9,d=>-1,j=>0,c=>1,k=>20,h=>1,b=>6,g=>3,f=>-3,i=>-1} f7ffffffce0100002e03000000390000000014 f7ffffffce0100002e03000000390000000014 f7ffffffce0100002e03000000390000000014 f7ffffffce0100002e03000000390000000014 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>5,a=>42,d=>2,j=>4,l=>7,c=>1,k=>-45,h=>5,b=>5,g=>3,f=>2,i=>1} 2a0000008d00000015030000000d04000000d307 2a0000008d00000015030000000d04000000d307 2a0000008d00000015030000000d04000000d307 2a0000008d00000015030000000d04000000d307 - {e=>7,a=>-123,d=>2,j=>5,l=>5,c=>3,k=>-51,h=>4,b=>7,g=>5,f=>-3,i=>0} 85ffffff9f0000002f050000000405000000cd05 85ffffff9f0000002f050000000405000000cd05 85ffffff9f0000002f050000000405000000cd05 85ffffff9f0000002f050000000405000000cd05 - {e=>0,a=>0,d=>-3,j=>0,l=>2,c=>3,k=>-69,h=>4,b=>4,g=>6,f=>-1,i=>-4} 000000005c01000038060000002400000000bb02 000000005c01000038060000002400000000bb02 000000005c01000038060000002400000000bb02 000000005c01000038060000002400000000bb02 - {e=>0,a=>17,d=>-2,j=>3,l=>2,c=>-4,k=>-21,h=>0,b=>6,g=>7,f=>-1,i=>2} 11000000a601000038070000001003000000eb02 11000000a601000038070000001003000000eb02 11000000a601000038070000001003000000eb02 11000000a601000038070000001003000000eb02 - {e=>2,a=>-122,d=>2,j=>5,l=>6,c=>0,k=>-75,h=>4,b=>7,g=>2,f=>-3,i=>0} 86ffffff870000002a020000000405000000b506 86ffffff870000002a020000000405000000b506 86ffffff870000002a020000000405000000b506 86ffffff870000002a020000000405000000b506 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-47,m=>-1,d=>-2,j=>0,l=>1,c=>2,k=>8,h=>1,b=>5,g=>4,f=>0,i=>-2} d1ffffff95010000040400000031000000000839 d1ffffff95010000040400000031000000000839 d1ffffff95010000040400000031000000000839 d1ffffff95010000040400000031000000000839 - {e=>4,a=>96,m=>1,d=>-1,j=>2,l=>1,c=>-4,k=>62,h=>0,b=>1,g=>6,f=>0,i=>3} 60000000e1010000040600000018020000003e09 60000000e1010000040600000018020000003e09 60000000e1010000040600000018020000003e09 60000000e1010000040600000018020000003e09 - {e=>7,a=>119,m=>-3,d=>1,j=>2,l=>5,c=>0,k=>22,h=>2,b=>6,g=>1,f=>-4,i=>2} 770000004600000027010000001202000000162d 770000004600000027010000001202000000162d 770000004600000027010000001202000000162d 770000004600000027010000001202000000162d - {e=>5,a=>105,m=>-4,d=>-4,j=>6,l=>5,c=>-3,k=>5,h=>1,b=>4,g=>2,f=>1,i=>0} 690000002c0100000d0200000001060000000525 690000002c0100000d0200000001060000000525 690000002c0100000d0200000001060000000525 690000002c0100000d0200000001060000000525 - {e=>3,a=>23,m=>1,d=>-4,j=>1,l=>2,c=>1,k=>-75,h=>5,b=>4,g=>3,f=>0,i=>3} 170000000c01000003030000001d01000000b50a 170000000c01000003030000001d01000000b50a 170000000c01000003030000001d01000000b50a 170000000c01000003030000001d01000000b50a = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>3,a=>-113,m=>0,d=>1,j=>4,l=>0,c=>-1,k=>-9,h=>4,b=>0,g=>0,f=>2,i=>-4} 8fffffff7800000015000000002404000000f70003000000 8fffffff7800000015000000002404000000f70003000000 8fffffff7800000015000000002404000000f70003000000 8fffffff7800000015000000002404000000f70003000000 - {e=>0,n=>4,a=>64,m=>2,d=>-3,j=>4,l=>3,c=>-3,k=>-98,h=>5,b=>3,g=>6,f=>-3,i=>-4} 400000006b010000280600000025040000009e1304000000 400000006b010000280600000025040000009e1304000000 400000006b010000280600000025040000009e1304000000 400000006b010000280600000025040000009e1304000000 - {e=>1,n=>7,a=>-94,m=>-4,d=>3,j=>1,l=>2,c=>2,k=>-115,h=>0,b=>0,g=>6,f=>2,i=>2} a2ffffffd0000000110600000010010000008d2207000000 a2ffffffd0000000110600000010010000008d2207000000 a2ffffffd0000000110600000010010000008d2207000000 a2ffffffd0000000110600000010010000008d2207000000 - {e=>3,n=>0,a=>-84,m=>0,d=>-2,j=>4,l=>2,c=>-1,k=>-57,h=>4,b=>5,g=>4,f=>-1,i=>1} acffffffbd0100003b040000000c04000000c70200000000 acffffffbd0100003b040000000c04000000c70200000000 acffffffbd0100003b040000000c04000000c70200000000 acffffffbd0100003b040000000c04000000c70200000000 - {e=>6,n=>3,a=>-84,m=>0,d=>-2,j=>6,l=>5,c=>-4,k=>45,h=>4,b=>0,g=>3,f=>-1,i=>-3} acffffffa00100003e030000002c060000002d0503000000 acffffffa00100003e030000002c060000002d0503000000 acffffffa00100003e030000002c060000002d0503000000 acffffffa00100003e030000002c060000002d0503000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>1,a=>73,m=>-2,d=>1,j=>5,l=>1,c=>-4,k=>34,h=>0,b=>2,g=>0,f=>-2,o=>136,i=>0} 49000000620000003200000000000500000022310100000088 49000000620000003200000000000500000022310100000088 49000000620000003200000000000500000022310100000088 49000000620000003200000000000500000022310100000088 - {e=>7,n=>0,a=>-14,m=>-2,d=>2,j=>2,l=>3,c=>-2,k=>-24,h=>3,b=>6,g=>5,f=>3,o=>72,i=>1} f2ffffffb60000001f050000000b02000000e8330000000048 f2ffffffb60000001f050000000b02000000e8330000000048 f2ffffffb60000001f050000000b02000000e8330000000048 f2ffffffb60000001f050000000b02000000e8330000000048 - {e=>7,n=>0,a=>-32,m=>0,d=>3,j=>6,l=>3,c=>-2,k=>-5,h=>3,b=>6,g=>6,f=>1,o=>139,i=>-2} e0fffffff60000000f060000003306000000fb03000000008b e0fffffff60000000f060000003306000000fb03000000008b e0fffffff60000000f060000003306000000fb03000000008b e0fffffff60000000f060000003306000000fb03000000008b - {e=>7,n=>0,a=>-69,m=>2,d=>2,j=>2,l=>1,c=>0,k=>118,h=>3,b=>5,g=>4,f=>-4,o=>156,i=>2} bbffffff85000000270400000013020000007611000000009c bbffffff85000000270400000013020000007611000000009c bbffffff85000000270400000013020000007611000000009c bbffffff85000000270400000013020000007611000000009c - {e=>0,n=>4,a=>-23,m=>-1,d=>-2,j=>3,l=>7,c=>0,k=>44,h=>7,b=>0,g=>5,f=>0,o=>146,i=>1} e9ffffff8001000000050000000f030000002c3f0400000092 e9ffffff8001000000050000000f030000002c3f0400000092 e9ffffff8001000000050000000f030000002c3f0400000092 e9ffffff8001000000050000000f030000002c3f0400000092 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; }; - {a=>116,b=>0} 7400000000000000 7400000000000000 7400000000000000 7400000000000000 - {a=>-38,b=>2} daffffff02000000 daffffff02000000 daffffff02000000 daffffff02000000 - {a=>-116,b=>0} 8cffffff00000000 8cffffff00000000 8cffffff00000000 8cffffff00000000 - {a=>-9,b=>4} f7ffffff04000000 f7ffffff04000000 f7ffffff04000000 f7ffffff04000000 - {a=>-84,b=>1} acffffff01000000 acffffff01000000 acffffff01000000 acffffff01000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; }; - {c=>2,a=>-53,b=>0} cbffffff10000000 cbffffff10000000 cbffffff10000000 cbffffff10000000 - {c=>-2,a=>54,b=>3} 3600000033000000 3600000033000000 3600000033000000 3600000033000000 - {c=>-2,a=>90,b=>7} 5a00000037000000 5a00000037000000 5a00000037000000 5a00000037000000 - {c=>-1,a=>16,b=>0} 1000000038000000 1000000038000000 1000000038000000 1000000038000000 - {c=>2,a=>66,b=>6} 4200000016000000 4200000016000000 4200000016000000 4200000016000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>101,b=>3,d=>-4} 650000000b010000 650000000b010000 650000000b010000 650000000b010000 - {c=>0,a=>-29,b=>2,d=>-4} e3ffffff02010000 e3ffffff02010000 e3ffffff02010000 e3ffffff02010000 - {c=>-2,a=>-116,b=>7,d=>2} 8cffffffb7000000 8cffffffb7000000 8cffffffb7000000 8cffffffb7000000 - {c=>-4,a=>-103,b=>1,d=>-2} 99ffffffa1010000 99ffffffa1010000 99ffffffa1010000 99ffffffa1010000 - {c=>-4,a=>90,b=>4,d=>0} 5a00000024000000 5a00000024000000 5a00000024000000 5a00000024000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>6,c=>-3,a=>-61,b=>2,d=>-2} c3ffffffaa01000006 c3ffffffaa01000006 c3ffffffaa01000006 c3ffffffaa01000006 - {e=>4,c=>1,a=>111,b=>2,d=>3} 6f000000ca00000004 6f000000ca00000004 6f000000ca00000004 6f000000ca00000004 - {e=>4,c=>0,a=>-27,b=>3,d=>-2} e5ffffff8301000004 e5ffffff8301000004 e5ffffff8301000004 e5ffffff8301000004 - {e=>0,c=>0,a=>123,b=>5,d=>-2} 7b0000008501000000 7b0000008501000000 7b0000008501000000 7b0000008501000000 - {e=>2,c=>0,a=>92,b=>7,d=>-4} 5c0000000701000002 5c0000000701000002 5c0000000701000002 5c0000000701000002 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>3,c=>0,a=>-105,b=>0,d=>2,f=>0} 97ffffff8000000003 97ffffff8000000003 97ffffff8000000003 97ffffff8000000003 - {e=>0,c=>1,a=>-22,b=>2,d=>-1,f=>-2} eaffffffca01000030 eaffffffca01000030 eaffffffca01000030 eaffffffca01000030 - {e=>1,c=>-3,a=>42,b=>2,d=>-1,f=>-1} 2a000000ea01000039 2a000000ea01000039 2a000000ea01000039 2a000000ea01000039 - {e=>6,c=>0,a=>-26,b=>6,d=>-1,f=>-3} e6ffffffc60100002e e6ffffffc60100002e e6ffffffc60100002e e6ffffffc60100002e - {e=>2,c=>2,a=>65,b=>0,d=>0,f=>0} 410000001000000002 410000001000000002 410000001000000002 410000001000000002 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>0,c=>-2,a=>40,g=>2,b=>5,d=>2,f=>-4} 28000000b50000002002000000 28000000b50000002002000000 28000000b50000002002000000 28000000b50000002002000000 - {e=>7,c=>3,a=>118,g=>5,b=>4,d=>-3,f=>-3} 760000005c0100002f05000000 760000005c0100002f05000000 760000005c0100002f05000000 760000005c0100002f05000000 - {e=>5,c=>-2,a=>-74,g=>3,b=>3,d=>-4,f=>2} b6ffffff330100001503000000 b6ffffff330100001503000000 b6ffffff330100001503000000 b6ffffff330100001503000000 - {e=>4,c=>-4,a=>-40,g=>1,b=>7,d=>-4,f=>-1} d8ffffff270100003c01000000 d8ffffff270100003c01000000 d8ffffff270100003c01000000 d8ffffff270100003c01000000 - {e=>0,c=>3,a=>18,g=>6,b=>0,d=>-4,f=>1} 12000000180100000806000000 12000000180100000806000000 12000000180100000806000000 12000000180100000806000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>0,c=>-2,a=>14,g=>3,b=>7,d=>3,f=>0} 0e000000f70000000003000000 0e000000f70000000003000000 0e000000f70000000003000000 0e000000f70000000003000000 - {e=>1,c=>0,a=>-50,g=>4,b=>7,d=>3,f=>0} ceffffffc70000000104000000 ceffffffc70000000104000000 ceffffffc70000000104000000 ceffffffc70000000104000000 - {e=>6,c=>-3,a=>101,g=>4,b=>2,d=>-4,f=>0} 650000002a0100000604000000 650000002a0100000604000000 650000002a0100000604000000 650000002a0100000604000000 - {e=>4,c=>-1,a=>87,g=>0,b=>1,d=>1,f=>1} 57000000790000000c00000000 57000000790000000c00000000 57000000790000000c00000000 57000000790000000c00000000 - {e=>3,c=>-1,a=>45,g=>7,b=>0,d=>-2,f=>3} 2d000000b80100001b07000000 2d000000b80100001b07000000 2d000000b80100001b07000000 2d000000b80100001b07000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>-39,d=>0,c=>-2,h=>1,b=>3,g=>7,f=>-3} d9ffffff330000002e0700000001 d9ffffff330000002e0700000001 d9ffffff330000002e0700000001 d9ffffff330000002e0700000001 - {e=>2,a=>-6,d=>-3,c=>1,h=>0,b=>1,g=>4,f=>-1} faffffff490100003a0400000000 faffffff490100003a0400000000 faffffff490100003a0400000000 faffffff490100003a0400000000 - {e=>4,a=>-114,d=>3,c=>-2,h=>2,b=>6,g=>2,f=>3} 8efffffff60000001c0200000002 8efffffff60000001c0200000002 8efffffff60000001c0200000002 8efffffff60000001c0200000002 - {e=>2,a=>-117,d=>0,c=>-2,h=>2,b=>3,g=>0,f=>0} 8bffffff33000000020000000002 8bffffff33000000020000000002 8bffffff33000000020000000002 8bffffff33000000020000000002 - {e=>6,a=>120,d=>2,c=>1,h=>5,b=>7,g=>4,f=>-3} 780000008f0000002e0400000005 780000008f0000002e0400000005 780000008f0000002e0400000005 780000008f0000002e0400000005 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>52,d=>1,c=>3,h=>2,b=>3,g=>6,f=>2,i=>-3} 340000005b00000011060000002a 340000005b00000011060000002a 340000005b00000011060000002a 340000005b00000011060000002a - {e=>3,a=>53,d=>0,c=>0,h=>1,b=>3,g=>6,f=>2,i=>1} 3500000003000000130600000009 3500000003000000130600000009 3500000003000000130600000009 3500000003000000130600000009 - {e=>6,a=>16,d=>-4,c=>-1,h=>7,b=>1,g=>6,f=>1,i=>3} 10000000390100000e060000001f 10000000390100000e060000001f 10000000390100000e060000001f 10000000390100000e060000001f - {e=>5,a=>110,d=>-3,c=>-2,h=>1,b=>4,g=>6,f=>1,i=>-1} 6e000000740100000d0600000039 6e000000740100000d0600000039 6e000000740100000d0600000039 6e000000740100000d0600000039 - {e=>2,a=>-21,d=>1,c=>3,h=>1,b=>2,g=>0,f=>-4,i=>-3} ebffffff5a000000220000000029 ebffffff5a000000220000000029 ebffffff5a000000220000000029 ebffffff5a000000220000000029 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>-50,d=>3,j=>1,c=>0,h=>3,b=>2,g=>2,f=>3,i=>-2} ceffffffc20000001b020000003301000000 ceffffffc20000001b020000003301000000 ceffffffc20000001b020000003301000000 ceffffffc20000001b020000003301000000 - {e=>1,a=>-3,d=>0,j=>2,c=>-3,h=>2,b=>0,g=>1,f=>-2,i=>-4} fdffffff2800000031010000002202000000 fdffffff2800000031010000002202000000 fdffffff2800000031010000002202000000 fdffffff2800000031010000002202000000 - {e=>4,a=>52,d=>-2,j=>6,c=>-2,h=>1,b=>2,g=>0,f=>0,i=>-2} 34000000b201000004000000003106000000 34000000b201000004000000003106000000 34000000b201000004000000003106000000 34000000b201000004000000003106000000 - {e=>1,a=>99,d=>1,j=>7,c=>3,h=>7,b=>6,g=>4,f=>0,i=>3} 630000005e00000001040000001f07000000 630000005e00000001040000001f07000000 630000005e00000001040000001f07000000 630000005e00000001040000001f07000000 - {e=>6,a=>127,d=>2,j=>0,c=>1,h=>5,b=>5,g=>5,f=>1,i=>-2} 7f0000008d0000000e050000003500000000 7f0000008d0000000e050000003500000000 7f0000008d0000000e050000003500000000 7f0000008d0000000e050000003500000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>5,a=>53,d=>-2,j=>1,c=>0,k=>-7,h=>4,b=>1,g=>5,f=>1,i=>-1} 35000000810100000d050000003c01000000f9 35000000810100000d050000003c01000000f9 35000000810100000d050000003c01000000f9 35000000810100000d050000003c01000000f9 - {e=>4,a=>-53,d=>-4,j=>2,c=>1,k=>34,h=>7,b=>1,g=>3,f=>0,i=>0} cbffffff090100000403000000070200000022 cbffffff090100000403000000070200000022 cbffffff090100000403000000070200000022 cbffffff090100000403000000070200000022 - {e=>6,a=>-45,d=>3,j=>5,c=>1,k=>97,h=>4,b=>6,g=>0,f=>-3,i=>2} d3ffffffce0000002e00000000140500000061 d3ffffffce0000002e00000000140500000061 d3ffffffce0000002e00000000140500000061 d3ffffffce0000002e00000000140500000061 - {e=>1,a=>65,d=>1,j=>0,c=>0,k=>30,h=>0,b=>0,g=>2,f=>3,i=>-4} 4100000040000000190200000020000000001e 4100000040000000190200000020000000001e 4100000040000000190200000020000000001e 4100000040000000190200000020000000001e - {e=>1,a=>-80,d=>-4,j=>5,c=>-3,k=>115,h=>3,b=>5,g=>3,f=>-4,i=>3} b0ffffff2d01000021030000001b0500000073 b0ffffff2d01000021030000001b0500000073 b0ffffff2d01000021030000001b0500000073 b0ffffff2d01000021030000001b0500000073 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>4,a=>122,d=>2,j=>4,l=>5,c=>-3,k=>111,h=>7,b=>3,g=>4,f=>2,i=>2} 7a000000ab000000140400000017040000006f05 7a000000ab000000140400000017040000006f05 7a000000ab000000140400000017040000006f05 7a000000ab000000140400000017040000006f05 - {e=>4,a=>-118,d=>2,j=>0,l=>5,c=>-1,k=>9,h=>1,b=>4,g=>4,f=>1,i=>-3} 8affffffbc0000000c0400000029000000000905 8affffffbc0000000c0400000029000000000905 8affffffbc0000000c0400000029000000000905 8affffffbc0000000c0400000029000000000905 - {e=>7,a=>-99,d=>-3,j=>1,l=>6,c=>3,k=>-51,h=>4,b=>0,g=>0,f=>2,i=>-1} 9dffffff5801000017000000003c01000000cd06 9dffffff5801000017000000003c01000000cd06 9dffffff5801000017000000003c01000000cd06 9dffffff5801000017000000003c01000000cd06 - {e=>5,a=>46,d=>-1,j=>7,l=>2,c=>-4,k=>-82,h=>4,b=>6,g=>6,f=>-4,i=>-1} 2e000000e601000025060000003c07000000ae02 2e000000e601000025060000003c07000000ae02 2e000000e601000025060000003c07000000ae02 2e000000e601000025060000003c07000000ae02 - {e=>5,a=>-15,d=>-4,j=>3,l=>1,c=>3,k=>-7,h=>3,b=>7,g=>2,f=>-3,i=>3} f1ffffff1f0100002d020000001b03000000f901 f1ffffff1f0100002d020000001b03000000f901 f1ffffff1f0100002d020000001b03000000f901 f1ffffff1f0100002d020000001b03000000f901 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>-125,m=>2,d=>0,j=>0,l=>5,c=>-2,k=>49,h=>6,b=>0,g=>6,f=>3,i=>-4} 83ffffff300000001b0600000026000000003115 83ffffff300000001b0600000026000000003115 83ffffff300000001b0600000026000000003115 83ffffff300000001b0600000026000000003115 - {e=>5,a=>127,m=>1,d=>-3,j=>3,l=>3,c=>-4,k=>15,h=>1,b=>5,g=>6,f=>3,i=>1} 7f000000650100001d0600000009030000000f0b 7f000000650100001d0600000009030000000f0b 7f000000650100001d0600000009030000000f0b 7f000000650100001d0600000009030000000f0b - {e=>5,a=>-102,m=>2,d=>1,j=>7,l=>4,c=>-2,k=>76,h=>2,b=>5,g=>4,f=>2,i=>0} 9affffff75000000150400000002070000004c14 9affffff75000000150400000002070000004c14 9affffff75000000150400000002070000004c14 9affffff75000000150400000002070000004c14 - {e=>3,a=>83,m=>-2,d=>-3,j=>6,l=>6,c=>-4,k=>56,h=>4,b=>0,g=>3,f=>1,i=>-1} 53000000600100000b030000003c060000003836 53000000600100000b030000003c060000003836 53000000600100000b030000003c060000003836 53000000600100000b030000003c060000003836 - {e=>1,a=>-24,m=>-4,d=>-3,j=>0,l=>0,c=>2,k=>-52,h=>5,b=>6,g=>3,f=>2,i=>-2} e8ffffff5601000011030000003500000000cc20 e8ffffff5601000011030000003500000000cc20 e8ffffff5601000011030000003500000000cc20 e8ffffff5601000011030000003500000000cc20 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>0,a=>74,m=>-2,d=>1,j=>6,l=>3,c=>2,k=>113,h=>1,b=>0,g=>0,f=>0,i=>-4} 4a0000005000000005000000002106000000713300000000 4a0000005000000005000000002106000000713300000000 4a0000005000000005000000002106000000713300000000 4a0000005000000005000000002106000000713300000000 - {e=>5,n=>3,a=>-44,m=>1,d=>-3,j=>3,l=>6,c=>2,k=>-63,h=>7,b=>0,g=>4,f=>-1,i=>3} d4ffffff500100003d040000001f03000000c10e03000000 d4ffffff500100003d040000001f03000000c10e03000000 d4ffffff500100003d040000001f03000000c10e03000000 d4ffffff500100003d040000001f03000000c10e03000000 - {e=>5,n=>1,a=>39,m=>1,d=>-3,j=>5,l=>0,c=>0,k=>1,h=>0,b=>1,g=>3,f=>2,i=>-1} 270000004101000015030000003805000000010801000000 270000004101000015030000003805000000010801000000 270000004101000015030000003805000000010801000000 270000004101000015030000003805000000010801000000 - {e=>4,n=>3,a=>97,m=>-3,d=>-3,j=>7,l=>4,c=>-3,k=>75,h=>5,b=>6,g=>5,f=>3,i=>3} 610000006e0100001c050000001d070000004b2c03000000 610000006e0100001c050000001d070000004b2c03000000 610000006e0100001c050000001d070000004b2c03000000 610000006e0100001c050000001d070000004b2c03000000 - {e=>1,n=>3,a=>77,m=>1,d=>-2,j=>3,l=>6,c=>-4,k=>50,h=>4,b=>0,g=>1,f=>-2,i=>-4} 4d000000a001000031010000002403000000320e03000000 4d000000a001000031010000002403000000320e03000000 4d000000a001000031010000002403000000320e03000000 4d000000a001000031010000002403000000320e03000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>1,a=>104,m=>0,d=>3,j=>1,l=>6,c=>2,k=>-66,h=>7,b=>0,g=>4,f=>-1,o=>189,i=>-3} 68000000d00000003a040000002f01000000be0601000000bd 68000000d00000003a040000002f01000000be0601000000bd 68000000d00000003a040000002f01000000be0601000000bd 68000000d00000003a040000002f01000000be0601000000bd - {e=>4,n=>1,a=>-82,m=>-1,d=>-2,j=>2,l=>6,c=>3,k=>81,h=>7,b=>1,g=>0,f=>-2,o=>27,i=>-3} aeffffff9901000034000000002f02000000513e010000001b aeffffff9901000034000000002f02000000513e010000001b aeffffff9901000034000000002f02000000513e010000001b aeffffff9901000034000000002f02000000513e010000001b - {e=>0,n=>0,a=>110,m=>-3,d=>0,j=>2,l=>6,c=>-3,k=>27,h=>6,b=>6,g=>5,f=>0,o=>50,i=>3} 6e0000002e00000000050000001e020000001b2e0000000032 6e0000002e00000000050000001e020000001b2e0000000032 6e0000002e00000000050000001e020000001b2e0000000032 6e0000002e00000000050000001e020000001b2e0000000032 - {e=>0,n=>5,a=>65,m=>-4,d=>1,j=>3,l=>2,c=>-1,k=>-88,h=>2,b=>4,g=>7,f=>0,o=>17,i=>1} 410000007c00000000070000000a03000000a8220500000011 410000007c00000000070000000a03000000a8220500000011 410000007c00000000070000000a03000000a8220500000011 410000007c00000000070000000a03000000a8220500000011 - {e=>2,n=>3,a=>51,m=>-2,d=>-3,j=>1,l=>1,c=>-1,k=>-125,h=>6,b=>2,g=>2,f=>-2,o=>98,i=>2} 330000007a0100003202000000160100000083310300000062 330000007a0100003202000000160100000083310300000062 330000007a0100003202000000160100000083310300000062 330000007a0100003202000000160100000083310300000062 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; }; - {a=>4} 04000000 04000000 04000000 04000000 - {a=>3} 03000000 03000000 03000000 03000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>5} 05000000 05000000 05000000 05000000 - {a=>3} 03000000 03000000 03000000 03000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; }; - {a=>1,b=>-2} 31000000 31000000 31000000 31000000 - {a=>2,b=>3} 1a000000 1a000000 1a000000 1a000000 - {a=>2,b=>2} 12000000 12000000 12000000 12000000 - {a=>2,b=>-2} 32000000 32000000 32000000 32000000 - {a=>5,b=>-4} 25000000 25000000 25000000 25000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>0,a=>0,b=>3} 18000000 18000000 18000000 18000000 - {c=>-3,a=>0,b=>-3} 68010000 68010000 68010000 68010000 - {c=>-3,a=>3,b=>-4} 63010000 63010000 63010000 63010000 - {c=>-2,a=>6,b=>-2} b6010000 b6010000 b6010000 b6010000 - {c=>-1,a=>4,b=>-3} ec010000 ec010000 ec010000 ec010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>0,a=>5,b=>-1,d=>0} 3d0000000000 3d0000000000 3d0000000000 3d0000000000 - {c=>3,a=>4,b=>-2,d=>4} f40000000400 f40000000400 f40000000400 f40000000400 - {c=>2,a=>0,b=>-1,d=>4} b80000000400 b80000000400 b80000000400 b80000000400 - {c=>-3,a=>4,b=>2,d=>3} 540100000300 540100000300 540100000300 540100000300 - {c=>-2,a=>0,b=>0,d=>7} 800100000700 800100000700 800100000700 800100000700 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>1,c=>-1,a=>5,b=>1,d=>0} cd0100000800 cd0100000800 cd0100000800 cd0100000800 - {e=>-3,c=>-4,a=>1,b=>2,d=>4} 110100002c00 110100002c00 110100002c00 110100002c00 - {e=>-1,c=>-1,a=>3,b=>0,d=>7} c30100003f00 c30100003f00 c30100003f00 c30100003f00 - {e=>0,c=>-3,a=>4,b=>-3,d=>0} 6c0100000000 6c0100000000 6c0100000000 6c0100000000 - {e=>2,c=>0,a=>5,b=>1,d=>7} 0d0000001700 0d0000001700 0d0000001700 0d0000001700 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>-1,c=>3,a=>3,b=>-2,d=>2,f=>6} f30000003a0006000000 f30000003a0006000000 f30000003a0006000000 f30000003a0006000000 - {e=>2,c=>-1,a=>1,b=>-4,d=>5,f=>2} e1010000150002000000 e1010000150002000000 e1010000150002000000 e1010000150002000000 - {e=>1,c=>1,a=>3,b=>-4,d=>2,f=>6} 630000000a0006000000 630000000a0006000000 630000000a0006000000 630000000a0006000000 - {e=>1,c=>-2,a=>2,b=>-4,d=>2,f=>3} a20100000a0003000000 a20100000a0003000000 a20100000a0003000000 a20100000a0003000000 - {e=>0,c=>0,a=>5,b=>-4,d=>4,f=>5} 25000000040005000000 25000000040005000000 25000000040005000000 25000000040005000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>-4,c=>-1,a=>5,b=>3,d=>2,f=>2} dd010000220002000000 dd010000220002000000 dd010000220002000000 dd010000220002000000 - {e=>1,c=>-1,a=>3,b=>2,d=>7,f=>6} d30100000f0006000000 d30100000f0006000000 d30100000f0006000000 d30100000f0006000000 - {e=>-1,c=>3,a=>0,b=>1,d=>4,f=>5} c80000003c0005000000 c80000003c0005000000 c80000003c0005000000 c80000003c0005000000 - {e=>1,c=>-4,a=>2,b=>1,d=>1,f=>7} 0a010000090007000000 0a010000090007000000 0a010000090007000000 0a010000090007000000 - {e=>-4,c=>-3,a=>2,b=>-1,d=>4,f=>1} 7a010000240001000000 7a010000240001000000 7a010000240001000000 7a010000240001000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>-3,c=>3,a=>4,g=>2,b=>-1,d=>7,f=>5} fc0000002f00050000000200 fc0000002f00050000000200 fc0000002f00050000000200 fc0000002f00050000000200 - {e=>0,c=>-4,a=>2,g=>2,b=>-4,d=>5,f=>5} 220100000500050000000200 220100000500050000000200 220100000500050000000200 220100000500050000000200 - {e=>2,c=>1,a=>1,g=>6,b=>3,d=>3,f=>0} 590000001300000000000600 590000001300000000000600 590000001300000000000600 590000001300000000000600 - {e=>1,c=>-3,a=>3,g=>6,b=>2,d=>7,f=>0} 530100000f00000000000600 530100000f00000000000600 530100000f00000000000600 530100000f00000000000600 - {e=>-4,c=>0,a=>5,g=>1,b=>-1,d=>3,f=>2} 3d0000002300020000000100 3d0000002300020000000100 3d0000002300020000000100 3d0000002300020000000100 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>-3,a=>2,d=>5,c=>-4,h=>0,b=>-1,g=>5,f=>7} 3a0100002d00070000000500 3a0100002d00070000000500 3a0100002d00070000000500 3a0100002d00070000000500 - {e=>-3,a=>4,d=>6,c=>2,h=>-4,b=>3,g=>6,f=>3} 9c0000002e00030000002600 9c0000002e00030000002600 9c0000002e00030000002600 9c0000002e00030000002600 - {e=>1,a=>4,d=>4,c=>3,h=>-1,b=>-2,g=>6,f=>3} f40000000c00030000003e00 f40000000c00030000003e00 f40000000c00030000003e00 f40000000c00030000003e00 - {e=>3,a=>5,d=>5,c=>1,h=>-2,b=>2,g=>6,f=>2} 550000001d00020000003600 550000001d00020000003600 550000001d00020000003600 550000001d00020000003600 - {e=>1,a=>7,d=>6,c=>2,h=>0,b=>3,g=>0,f=>6} 9f0000000e00060000000000 9f0000000e00060000000000 9f0000000e00060000000000 9f0000000e00060000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>2,a=>1,d=>3,c=>-3,h=>1,b=>-4,g=>1,f=>7,i=>5} 61010000130007000000090005000000 61010000130007000000090005000000 61010000130007000000090005000000 61010000130007000000090005000000 - {e=>-4,a=>1,d=>3,c=>-2,h=>2,b=>-3,g=>7,f=>4,i=>3} a9010000230004000000170003000000 a9010000230004000000170003000000 a9010000230004000000170003000000 a9010000230004000000170003000000 - {e=>0,a=>2,d=>7,c=>3,h=>2,b=>2,g=>5,f=>2,i=>1} d2000000070002000000150001000000 d2000000070002000000150001000000 d2000000070002000000150001000000 d2000000070002000000150001000000 - {e=>1,a=>3,d=>2,c=>2,h=>2,b=>0,g=>7,f=>6,i=>0} 830000000a0006000000170000000000 830000000a0006000000170000000000 830000000a0006000000170000000000 830000000a0006000000170000000000 - {e=>-4,a=>3,d=>2,c=>-1,h=>0,b=>-3,g=>4,f=>7,i=>4} eb010000220007000000040004000000 eb010000220007000000040004000000 eb010000220007000000040004000000 eb010000220007000000040004000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>0,a=>0,d=>0,j=>-15,c=>0,h=>-4,b=>-2,g=>1,f=>2,i=>3} 30000000000002000000210003000000f100 30000000000002000000210003000000f100 30000000000002000000210003000000f100 30000000000002000000210003000000f100 - {e=>-4,a=>2,d=>1,j=>101,c=>3,h=>1,b=>-2,g=>5,f=>1,i=>6} f20000002100010000000d00060000006500 f20000002100010000000d00060000006500 f20000002100010000000d00060000006500 f20000002100010000000d00060000006500 - {e=>-1,a=>0,d=>3,j=>90,c=>3,h=>3,b=>2,g=>6,f=>2,i=>1} d00000003b00020000001e00010000005a00 d00000003b00020000001e00010000005a00 d00000003b00020000001e00010000005a00 d00000003b00020000001e00010000005a00 - {e=>-4,a=>2,d=>2,j=>87,c=>3,h=>-1,b=>-1,g=>6,f=>4,i=>4} fa0000002200040000003e00040000005700 fa0000002200040000003e00040000005700 fa0000002200040000003e00040000005700 fa0000002200040000003e00040000005700 - {e=>1,a=>7,d=>3,j=>-72,c=>1,h=>0,b=>-1,g=>4,f=>1,i=>0} 7f0000000b0001000000040000000000b800 7f0000000b0001000000040000000000b800 7f0000000b0001000000040000000000b800 7f0000000b0001000000040000000000b800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>-3,a=>3,d=>4,j=>77,c=>1,k=>1,h=>-3,b=>2,g=>3,f=>0,i=>2} 530000002c00000000002b00020000004d01 530000002c00000000002b00020000004d01 530000002c00000000002b00020000004d01 530000002c00000000002b00020000004d01 - {e=>1,a=>1,d=>1,j=>20,c=>2,k=>1,h=>1,b=>-3,g=>3,f=>3,i=>4} a90000000900030000000b00040000001401 a90000000900030000000b00040000001401 a90000000900030000000b00040000001401 a90000000900030000000b00040000001401 - {e=>2,a=>5,d=>2,j=>108,c=>1,k=>5,h=>2,b=>0,g=>2,f=>5,i=>2} 450000001200050000001200020000006c05 450000001200050000001200020000006c05 450000001200050000001200020000006c05 450000001200050000001200020000006c05 - {e=>3,a=>1,d=>1,j=>-2,c=>1,k=>7,h=>-1,b=>-3,g=>4,f=>4,i=>4} 690000001900040000003c0004000000fe07 690000001900040000003c0004000000fe07 690000001900040000003c0004000000fe07 690000001900040000003c0004000000fe07 - {e=>0,a=>4,d=>7,j=>-104,c=>-2,k=>3,h=>2,b=>-4,g=>2,f=>6,i=>3} a40100000700060000001200030000009803 a40100000700060000001200030000009803 a40100000700060000001200030000009803 a40100000700060000001200030000009803 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>1,a=>6,d=>7,j=>30,l=>2,c=>-1,k=>0,h=>-3,b=>-2,g=>6,f=>7,i=>5} f60100000f00070000002e00050000001e10 f60100000f00070000002e00050000001e10 f60100000f00070000002e00050000001e10 f60100000f00070000002e00050000001e10 - {e=>1,a=>1,d=>3,j=>-98,l=>0,c=>-1,k=>6,h=>-4,b=>-2,g=>1,f=>3,i=>1} f10100000b00030000002100010000009e06 f10100000b00030000002100010000009e06 f10100000b00030000002100010000009e06 f10100000b00030000002100010000009e06 - {e=>-2,a=>2,d=>1,j=>-45,l=>-2,c=>1,k=>7,h=>2,b=>-3,g=>0,f=>6,i=>6} 6a000000310006000000100006000000d337 6a000000310006000000100006000000d337 6a000000310006000000100006000000d337 6a000000310006000000100006000000d337 - {e=>-2,a=>4,d=>2,j=>-1,l=>0,c=>-4,k=>0,h=>-3,b=>0,g=>3,f=>0,i=>4} 040100003200000000002b0004000000ff00 040100003200000000002b0004000000ff00 040100003200000000002b0004000000ff00 040100003200000000002b0004000000ff00 - {e=>3,a=>4,d=>4,j=>110,l=>-1,c=>0,k=>1,h=>2,b=>-4,g=>0,f=>7,i=>6} 240000001c00070000001000060000006e39 240000001c00070000001000060000006e39 240000001c00070000001000060000006e39 240000001c00070000001000060000006e39 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-2,a=>6,m=>4,d=>0,j=>28,l=>-3,c=>-3,k=>2,h=>3,b=>-1,g=>3,f=>5,i=>6} 7e0100003000050000001b00060000001c2a04000000 7e0100003000050000001b00060000001c2a04000000 7e0100003000050000001b00060000001c2a04000000 7e0100003000050000001b00060000001c2a04000000 - {e=>-1,a=>7,m=>1,d=>6,j=>79,l=>2,c=>1,k=>3,h=>-4,b=>1,g=>1,f=>5,i=>2} 4f0000003e00050000002100020000004f1301000000 4f0000003e00050000002100020000004f1301000000 4f0000003e00050000002100020000004f1301000000 4f0000003e00050000002100020000004f1301000000 - {e=>-3,a=>5,m=>2,d=>3,j=>43,l=>-2,c=>-4,k=>3,h=>-4,b=>-3,g=>5,f=>6,i=>5} 2d0100002b00060000002500050000002b3302000000 2d0100002b00060000002500050000002b3302000000 2d0100002b00060000002500050000002b3302000000 2d0100002b00060000002500050000002b3302000000 - {e=>-2,a=>6,m=>4,d=>2,j=>62,l=>-2,c=>-4,k=>4,h=>-2,b=>-1,g=>1,f=>5,i=>4} 3e0100003200050000003100040000003e3404000000 3e0100003200050000003100040000003e3404000000 3e0100003200050000003100040000003e3404000000 3e0100003200050000003100040000003e3404000000 - {e=>1,a=>1,m=>0,d=>4,j=>-74,l=>-3,c=>2,k=>1,h=>-2,b=>2,g=>2,f=>6,i=>4} 910000000c0006000000320004000000b62900000000 910000000c0006000000320004000000b62900000000 910000000c0006000000320004000000b62900000000 910000000c0006000000320004000000b62900000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>-4,n=>116,a=>1,m=>6,d=>4,j=>-19,l=>-1,c=>-2,k=>1,h=>0,b=>-1,g=>5,f=>3,i=>5} b9010000240003000000050005000000ed39060000007400 b9010000240003000000050005000000ed39060000007400 b9010000240003000000050005000000ed39060000007400 b9010000240003000000050005000000ed39060000007400 - {e=>2,n=>61,a=>4,m=>3,d=>0,j=>78,l=>-2,c=>3,k=>3,h=>-3,b=>-3,g=>2,f=>0,i=>2} ec0000001000000000002a00020000004e33030000003d00 ec0000001000000000002a00020000004e33030000003d00 ec0000001000000000002a00020000004e33030000003d00 ec0000001000000000002a00020000004e33030000003d00 - {e=>-1,n=>150,a=>3,m=>2,d=>3,j=>-89,l=>-4,c=>-3,k=>7,h=>-3,b=>-1,g=>3,f=>5,i=>1} 7b0100003b00050000002b0001000000a727020000009600 7b0100003b00050000002b0001000000a727020000009600 7b0100003b00050000002b0001000000a727020000009600 7b0100003b00050000002b0001000000a727020000009600 - {e=>-1,n=>162,a=>3,m=>5,d=>1,j=>46,l=>-2,c=>-1,k=>2,h=>-1,b=>3,g=>4,f=>0,i=>2} db0100003900000000003c00020000002e3205000000a200 db0100003900000000003c00020000002e3205000000a200 db0100003900000000003c00020000002e3205000000a200 db0100003900000000003c00020000002e3205000000a200 - {e=>-4,n=>162,a=>2,m=>5,d=>7,j=>-26,l=>2,c=>3,k=>0,h=>3,b=>-2,g=>1,f=>3,i=>6} f2000000270003000000190006000000e61005000000a200 f2000000270003000000190006000000e61005000000a200 f2000000270003000000190006000000e61005000000a200 f2000000270003000000190006000000e61005000000a200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; }; - {a=>-94,b=>6} a20006000000 a20006000000 a20006000000 a20006000000 - {a=>-87,b=>1} a90001000000 a90001000000 a90001000000 a90001000000 - {a=>-8,b=>2} f80002000000 f80002000000 f80002000000 f80002000000 - {a=>-106,b=>2} 960002000000 960002000000 960002000000 960002000000 - {a=>-98,b=>5} 9e0005000000 9e0005000000 9e0005000000 9e0005000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; }; - {c=>3,a=>-72,b=>5} b8001d000000 b8001d000000 b8001d000000 b8001d000000 - {c=>0,a=>-13,b=>5} f30005000000 f30005000000 f30005000000 f30005000000 - {c=>3,a=>-92,b=>6} a4001e000000 a4001e000000 a4001e000000 a4001e000000 - {c=>-1,a=>79,b=>3} 4f003b000000 4f003b000000 4f003b000000 4f003b000000 - {c=>-3,a=>-108,b=>7} 94002f000000 94002f000000 94002f000000 94002f000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>49,b=>2,d=>-3} 31004a010000 31004a010000 31004a010000 31004a010000 - {c=>0,a=>42,b=>7,d=>0} 2a0007000000 2a0007000000 2a0007000000 2a0007000000 - {c=>-4,a=>41,b=>5,d=>-3} 290065010000 290065010000 290065010000 290065010000 - {c=>1,a=>-70,b=>4,d=>0} ba000c000000 ba000c000000 ba000c000000 ba000c000000 - {c=>2,a=>-18,b=>5,d=>-1} ee00d5010000 ee00d5010000 ee00d5010000 ee00d5010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-3,a=>-42,b=>7,d=>-2} d600af0100000100 d600af0100000100 d600af0100000100 d600af0100000100 - {e=>5,c=>-4,a=>109,b=>4,d=>1} 6d00640000000500 6d00640000000500 6d00640000000500 6d00640000000500 - {e=>7,c=>-2,a=>-119,b=>4,d=>0} 8900340000000700 8900340000000700 8900340000000700 8900340000000700 - {e=>3,c=>-3,a=>-23,b=>6,d=>0} e9002e0000000300 e9002e0000000300 e9002e0000000300 e9002e0000000300 - {e=>1,c=>-4,a=>-38,b=>2,d=>3} da00e20000000100 da00e20000000100 da00e20000000100 da00e20000000100 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>5,c=>-3,a=>-8,b=>3,d=>-1,f=>0} f800eb0100000500 f800eb0100000500 f800eb0100000500 f800eb0100000500 - {e=>4,c=>0,a=>3,b=>7,d=>2,f=>2} 0300870000001400 0300870000001400 0300870000001400 0300870000001400 - {e=>4,c=>2,a=>43,b=>3,d=>-4,f=>-3} 2b00130100002c00 2b00130100002c00 2b00130100002c00 2b00130100002c00 - {e=>2,c=>-3,a=>-97,b=>6,d=>-4,f=>1} 9f002e0100000a00 9f002e0100000a00 9f002e0100000a00 9f002e0100000a00 - {e=>6,c=>3,a=>87,b=>5,d=>2,f=>-1} 57009d0000003e00 57009d0000003e00 57009d0000003e00 57009d0000003e00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>7,c=>2,a=>-29,g=>2,b=>6,d=>-1,f=>-3} e300d60100002f0002000000 e300d60100002f0002000000 e300d60100002f0002000000 e300d60100002f0002000000 - {e=>5,c=>3,a=>-72,g=>6,b=>4,d=>-2,f=>0} b8009c010000050006000000 b8009c010000050006000000 b8009c010000050006000000 b8009c010000050006000000 - {e=>4,c=>0,a=>-24,g=>5,b=>4,d=>1,f=>2} e80044000000140005000000 e80044000000140005000000 e80044000000140005000000 e80044000000140005000000 - {e=>1,c=>-1,a=>-37,g=>1,b=>4,d=>-3,f=>1} db007c010000090001000000 db007c010000090001000000 db007c010000090001000000 db007c010000090001000000 - {e=>7,c=>-2,a=>92,g=>0,b=>4,d=>-2,f=>-4} 5c00b4010000270000000000 5c00b4010000270000000000 5c00b4010000270000000000 5c00b4010000270000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>7,c=>2,a=>93,g=>4,b=>1,d=>-3,f=>3} 5d00510100001f0004000000 5d00510100001f0004000000 5d00510100001f0004000000 5d00510100001f0004000000 - {e=>0,c=>-1,a=>-59,g=>5,b=>2,d=>-3,f=>-1} c5007a010000380005000000 c5007a010000380005000000 c5007a010000380005000000 c5007a010000380005000000 - {e=>5,c=>-1,a=>8,g=>5,b=>2,d=>-2,f=>-1} 0800ba0100003d0005000000 0800ba0100003d0005000000 0800ba0100003d0005000000 0800ba0100003d0005000000 - {e=>0,c=>3,a=>-103,g=>5,b=>5,d=>1,f=>0} 99005d000000000005000000 99005d000000000005000000 99005d000000000005000000 99005d000000000005000000 - {e=>5,c=>-3,a=>114,g=>7,b=>1,d=>-4,f=>-1} 7200290100003d0007000000 7200290100003d0007000000 7200290100003d0007000000 7200290100003d0007000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>2,d=>0,c=>2,h=>7,b=>5,g=>6,f=>-1} 0200150000003b00060000000700 0200150000003b00060000000700 0200150000003b00060000000700 0200150000003b00060000000700 - {e=>3,a=>-24,d=>-1,c=>-1,h=>6,b=>3,g=>2,f=>2} e800fb0100001300020000000600 e800fb0100001300020000000600 e800fb0100001300020000000600 e800fb0100001300020000000600 - {e=>6,a=>66,d=>0,c=>-3,h=>1,b=>3,g=>1,f=>-1} 42002b0000003e00010000000100 42002b0000003e00010000000100 42002b0000003e00010000000100 42002b0000003e00010000000100 - {e=>7,a=>83,d=>3,c=>0,h=>1,b=>1,g=>3,f=>3} 5300c10000001f00030000000100 5300c10000001f00030000000100 5300c10000001f00030000000100 5300c10000001f00030000000100 - {e=>2,a=>47,d=>-1,c=>-1,h=>7,b=>0,g=>5,f=>3} 2f00f80100001a00050000000700 2f00f80100001a00050000000700 2f00f80100001a00050000000700 2f00f80100001a00050000000700 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>60,d=>-2,c=>0,h=>6,b=>2,g=>2,f=>-2,i=>-2} 3c00820100003700020000003600 3c00820100003700020000003600 3c00820100003700020000003600 3c00820100003700020000003600 - {e=>6,a=>-97,d=>0,c=>0,h=>0,b=>3,g=>4,f=>0,i=>3} 9f00030000000600040000001800 9f00030000000600040000001800 9f00030000000600040000001800 9f00030000000600040000001800 - {e=>3,a=>88,d=>-3,c=>-4,h=>7,b=>5,g=>1,f=>-4,i=>-2} 5800650100002300010000003700 5800650100002300010000003700 5800650100002300010000003700 5800650100002300010000003700 - {e=>6,a=>86,d=>2,c=>0,h=>5,b=>0,g=>1,f=>3,i=>-2} 5600800000001e00010000003500 5600800000001e00010000003500 5600800000001e00010000003500 5600800000001e00010000003500 - {e=>0,a=>52,d=>-3,c=>-4,h=>5,b=>5,g=>0,f=>3,i=>3} 3400650100001800000000001d00 3400650100001800000000001d00 3400650100001800000000001d00 3400650100001800000000001d00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>80,d=>-2,j=>7,c=>0,h=>3,b=>2,g=>4,f=>1,i=>3} 5000820100000b00040000001b0007000000 5000820100000b00040000001b0007000000 5000820100000b00040000001b0007000000 5000820100000b00040000001b0007000000 - {e=>7,a=>-43,d=>-3,j=>6,c=>1,h=>2,b=>0,g=>4,f=>0,i=>3} d500480100000700040000001a0006000000 d500480100000700040000001a0006000000 d500480100000700040000001a0006000000 d500480100000700040000001a0006000000 - {e=>7,a=>87,d=>0,j=>3,c=>2,h=>7,b=>0,g=>7,f=>-3,i=>2} 5700100000002f0007000000170003000000 5700100000002f0007000000170003000000 5700100000002f0007000000170003000000 5700100000002f0007000000170003000000 - {e=>1,a=>57,d=>-4,j=>7,c=>-3,h=>2,b=>7,g=>4,f=>2,i=>2} 39002f010000110004000000120007000000 39002f010000110004000000120007000000 39002f010000110004000000120007000000 39002f010000110004000000120007000000 - {e=>1,a=>61,d=>0,j=>0,c=>-2,h=>3,b=>3,g=>7,f=>0,i=>1} 3d00330000000100070000000b0000000000 3d00330000000100070000000b0000000000 3d00330000000100070000000b0000000000 3d00330000000100070000000b0000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>2,a=>-111,d=>2,j=>6,c=>0,k=>2,h=>7,b=>5,g=>5,f=>-2,i=>1} 9100850000003200050000000f00060000000200 9100850000003200050000000f00060000000200 9100850000003200050000000f00060000000200 9100850000003200050000000f00060000000200 - {e=>3,a=>125,d=>-3,j=>7,c=>2,k=>102,h=>6,b=>4,g=>2,f=>-3,i=>3} 7d00540100002b00020000001e00070000006600 7d00540100002b00020000001e00070000006600 7d00540100002b00020000001e00070000006600 7d00540100002b00020000001e00070000006600 - {e=>5,a=>-3,d=>-3,j=>4,c=>0,k=>42,h=>5,b=>0,g=>6,f=>-1,i=>-4} fd00400100003d00060000002500040000002a00 fd00400100003d00060000002500040000002a00 fd00400100003d00060000002500040000002a00 fd00400100003d00060000002500040000002a00 - {e=>2,a=>-127,d=>0,j=>1,c=>-1,k=>70,h=>5,b=>0,g=>0,f=>1,i=>-2} 8100380000000a00000000003500010000004600 8100380000000a00000000003500010000004600 8100380000000a00000000003500010000004600 8100380000000a00000000003500010000004600 - {e=>0,a=>43,d=>3,j=>3,c=>2,k=>93,h=>4,b=>2,g=>6,f=>1,i=>1} 2b00d20000000800060000000c00030000005d00 2b00d20000000800060000000c00030000005d00 2b00d20000000800060000000c00030000005d00 2b00d20000000800060000000c00030000005d00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>0,a=>-82,d=>1,j=>3,l=>2,c=>-1,k=>124,h=>4,b=>3,g=>7,f=>3,i=>-4} ae007b0000001800070000002400030000007c02 ae007b0000001800070000002400030000007c02 ae007b0000001800070000002400030000007c02 ae007b0000001800070000002400030000007c02 - {e=>7,a=>125,d=>-3,j=>6,l=>7,c=>-3,k=>33,h=>0,b=>5,g=>7,f=>2,i=>-3} 7d006d0100001700070000002800060000002107 7d006d0100001700070000002800060000002107 7d006d0100001700070000002800060000002107 7d006d0100001700070000002800060000002107 - {e=>0,a=>-27,d=>-1,j=>3,l=>5,c=>-1,k=>41,h=>0,b=>7,g=>6,f=>-2,i=>-2} e500ff0100003000060000003000030000002905 e500ff0100003000060000003000030000002905 e500ff0100003000060000003000030000002905 e500ff0100003000060000003000030000002905 - {e=>6,a=>-76,d=>-3,j=>7,l=>0,c=>0,k=>-16,h=>5,b=>7,g=>4,f=>-1,i=>2} b400470100003e0004000000150007000000f000 b400470100003e0004000000150007000000f000 b400470100003e0004000000150007000000f000 b400470100003e0004000000150007000000f000 - {e=>4,a=>-66,d=>3,j=>1,l=>5,c=>2,k=>-26,h=>1,b=>6,g=>6,f=>0,i=>-1} be00d6000000040006000000390001000000e605 be00d6000000040006000000390001000000e605 be00d6000000040006000000390001000000e605 be00d6000000040006000000390001000000e605 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>-113,m=>3,d=>-2,j=>5,l=>3,c=>2,k=>-9,h=>0,b=>7,g=>1,f=>0,i=>1} 8f0097010000070001000000080005000000f71b 8f0097010000070001000000080005000000f71b 8f0097010000070001000000080005000000f71b 8f0097010000070001000000080005000000f71b - {e=>5,a=>14,m=>3,d=>-4,j=>7,l=>1,c=>-1,k=>41,h=>6,b=>4,g=>0,f=>-2,i=>-4} 0e003c0100003500000000002600070000002919 0e003c0100003500000000002600070000002919 0e003c0100003500000000002600070000002919 0e003c0100003500000000002600070000002919 - {e=>1,a=>50,m=>2,d=>3,j=>7,l=>3,c=>-4,k=>-106,h=>4,b=>3,g=>0,f=>-1,i=>-4} 3200e30000003900000000002400070000009613 3200e30000003900000000002400070000009613 3200e30000003900000000002400070000009613 3200e30000003900000000002400070000009613 - {e=>3,a=>122,m=>2,d=>1,j=>5,l=>6,c=>-3,k=>83,h=>4,b=>0,g=>0,f=>-2,i=>2} 7a00680000003300000000001400050000005316 7a00680000003300000000001400050000005316 7a00680000003300000000001400050000005316 7a00680000003300000000001400050000005316 - {e=>4,a=>25,m=>-4,d=>1,j=>5,l=>0,c=>1,k=>115,h=>2,b=>1,g=>6,f=>1,i=>0} 1900490000000c00060000000200050000007320 1900490000000c00060000000200050000007320 1900490000000c00060000000200050000007320 1900490000000c00060000000200050000007320 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>7,a=>-13,m=>2,d=>-3,j=>4,l=>5,c=>-3,k=>-63,h=>6,b=>1,g=>7,f=>3,i=>3} f300690100001b00070000001e0004000000c11507000000 f300690100001b00070000001e0004000000c11507000000 f300690100001b00070000001e0004000000c11507000000 f300690100001b00070000001e0004000000c11507000000 - {e=>2,n=>2,a=>10,m=>2,d=>3,j=>4,l=>0,c=>2,k=>-15,h=>1,b=>3,g=>3,f=>-3,i=>-2} 0a00d30000002a0003000000310004000000f11002000000 0a00d30000002a0003000000310004000000f11002000000 0a00d30000002a0003000000310004000000f11002000000 0a00d30000002a0003000000310004000000f11002000000 - {e=>2,n=>5,a=>53,m=>-2,d=>2,j=>5,l=>1,c=>2,k=>-31,h=>5,b=>7,g=>4,f=>-3,i=>1} 3500970000002a00040000000d0005000000e13105000000 3500970000002a00040000000d0005000000e13105000000 3500970000002a00040000000d0005000000e13105000000 3500970000002a00040000000d0005000000e13105000000 - {e=>2,n=>3,a=>92,m=>3,d=>3,j=>6,l=>6,c=>-2,k=>99,h=>7,b=>3,g=>4,f=>-4,i=>-2} 5c00f3000000220004000000370006000000631e03000000 5c00f3000000220004000000370006000000631e03000000 5c00f3000000220004000000370006000000631e03000000 5c00f3000000220004000000370006000000631e03000000 - {e=>2,n=>6,a=>-14,m=>1,d=>0,j=>0,l=>2,c=>-4,k=>1,h=>7,b=>7,g=>4,f=>1,i=>-3} f200270000000a00040000002f0000000000010a06000000 f200270000000a00040000002f0000000000010a06000000 f200270000000a00040000002f0000000000010a06000000 f200270000000a00040000002f0000000000010a06000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>5,a=>61,m=>-2,d=>-4,j=>1,l=>6,c=>1,k=>-87,h=>5,b=>7,g=>7,f=>-1,o=>42,i=>1} 3d000f0100003800070000000d0001000000a936050000002a00 3d000f0100003800070000000d0001000000a936050000002a00 3d000f0100003800070000000d0001000000a936050000002a00 3d000f0100003800070000000d0001000000a936050000002a00 - {e=>1,n=>4,a=>116,m=>-1,d=>-4,j=>0,l=>7,c=>3,k=>-107,h=>2,b=>6,g=>5,f=>0,o=>162,i=>3} 74001e0100000100050000001a0000000000953f04000000a200 74001e0100000100050000001a0000000000953f04000000a200 74001e0100000100050000001a0000000000953f04000000a200 74001e0100000100050000001a0000000000953f04000000a200 - {e=>4,n=>5,a=>114,m=>-3,d=>-2,j=>4,l=>5,c=>-2,k=>68,h=>3,b=>7,g=>3,f=>-2,o=>112,i=>-2} 7200b7010000340003000000330004000000442d050000007000 7200b7010000340003000000330004000000442d050000007000 7200b7010000340003000000330004000000442d050000007000 7200b7010000340003000000330004000000442d050000007000 - {e=>2,n=>7,a=>-31,m=>-2,d=>-2,j=>7,l=>7,c=>-4,k=>20,h=>2,b=>1,g=>3,f=>-3,o=>162,i=>-2} e100a10100002a0003000000320007000000143707000000a200 e100a10100002a0003000000320007000000143707000000a200 e100a10100002a0003000000320007000000143707000000a200 e100a10100002a0003000000320007000000143707000000a200 - {e=>2,n=>1,a=>-39,m=>-4,d=>-1,j=>4,l=>3,c=>1,k=>-123,h=>7,b=>7,g=>5,f=>1,o=>105,i=>-2} d900cf0100000a00050000003700040000008523010000006900 d900cf0100000a00050000003700040000008523010000006900 d900cf0100000a00050000003700040000008523010000006900 d900cf0100000a00050000003700040000008523010000006900 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; }; - {a=>103,b=>3} 670003000000 670003000000 670003000000 670003000000 - {a=>38,b=>4} 260004000000 260004000000 260004000000 260004000000 - {a=>52,b=>0} 340000000000 340000000000 340000000000 340000000000 - {a=>-12,b=>3} f4ff03000000 f4ff03000000 f4ff03000000 f4ff03000000 - {a=>5,b=>6} 050006000000 050006000000 050006000000 050006000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-92,b=>5} a4ff05000000 a4ff05000000 a4ff05000000 a4ff05000000 - {c=>-2,a=>-97,b=>2} 9fff32000000 9fff32000000 9fff32000000 9fff32000000 - {c=>3,a=>-63,b=>1} c1ff19000000 c1ff19000000 c1ff19000000 c1ff19000000 - {c=>2,a=>93,b=>2} 5d0012000000 5d0012000000 5d0012000000 5d0012000000 - {c=>2,a=>1,b=>3} 010013000000 010013000000 010013000000 010013000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>65,b=>6,d=>-1} 4100f6010000 4100f6010000 4100f6010000 4100f6010000 - {c=>-2,a=>107,b=>0,d=>3} 6b00f0000000 6b00f0000000 6b00f0000000 6b00f0000000 - {c=>-2,a=>-7,b=>3,d=>1} f9ff73000000 f9ff73000000 f9ff73000000 f9ff73000000 - {c=>-1,a=>-11,b=>3,d=>0} f5ff3b000000 f5ff3b000000 f5ff3b000000 f5ff3b000000 - {c=>-3,a=>-10,b=>7,d=>-3} f6ff6f010000 f6ff6f010000 f6ff6f010000 f6ff6f010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>7,c=>-3,a=>69,b=>7,d=>-2} 4500af0100000700 4500af0100000700 4500af0100000700 4500af0100000700 - {e=>1,c=>1,a=>92,b=>7,d=>3} 5c00cf0000000100 5c00cf0000000100 5c00cf0000000100 5c00cf0000000100 - {e=>5,c=>-3,a=>104,b=>7,d=>1} 68006f0000000500 68006f0000000500 68006f0000000500 68006f0000000500 - {e=>6,c=>-3,a=>50,b=>7,d=>1} 32006f0000000600 32006f0000000600 32006f0000000600 32006f0000000600 - {e=>6,c=>-3,a=>52,b=>5,d=>2} 3400ad0000000600 3400ad0000000600 3400ad0000000600 3400ad0000000600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>1,a=>-16,b=>7,d=>-4,f=>2} f0ff0f0100001200 f0ff0f0100001200 f0ff0f0100001200 f0ff0f0100001200 - {e=>3,c=>1,a=>-81,b=>2,d=>-3,f=>-2} afff4a0100003300 afff4a0100003300 afff4a0100003300 afff4a0100003300 - {e=>0,c=>-2,a=>-7,b=>6,d=>2,f=>2} f9ffb60000001000 f9ffb60000001000 f9ffb60000001000 f9ffb60000001000 - {e=>5,c=>3,a=>46,b=>4,d=>1,f=>3} 2e005c0000001d00 2e005c0000001d00 2e005c0000001d00 2e005c0000001d00 - {e=>2,c=>-4,a=>110,b=>3,d=>2,f=>-3} 6e00a30000002a00 6e00a30000002a00 6e00a30000002a00 6e00a30000002a00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>1,c=>2,a=>-118,g=>2,b=>2,d=>1,f=>1} 8aff52000000090002000000 8aff52000000090002000000 8aff52000000090002000000 8aff52000000090002000000 - {e=>7,c=>-3,a=>73,g=>6,b=>3,d=>-4,f=>3} 49002b0100001f0006000000 49002b0100001f0006000000 49002b0100001f0006000000 49002b0100001f0006000000 - {e=>0,c=>-4,a=>51,g=>5,b=>3,d=>-1,f=>-1} 3300e3010000380005000000 3300e3010000380005000000 3300e3010000380005000000 3300e3010000380005000000 - {e=>6,c=>0,a=>-60,g=>3,b=>4,d=>-3,f=>1} c4ff440100000e0003000000 c4ff440100000e0003000000 c4ff440100000e0003000000 c4ff440100000e0003000000 - {e=>3,c=>-4,a=>-59,g=>0,b=>1,d=>-3,f=>3} c5ff610100001b0000000000 c5ff610100001b0000000000 c5ff610100001b0000000000 c5ff610100001b0000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>5,c=>-3,a=>-108,g=>3,b=>6,d=>-1,f=>-4} 94ffee010000250003000000 94ffee010000250003000000 94ffee010000250003000000 94ffee010000250003000000 - {e=>0,c=>1,a=>1,g=>6,b=>4,d=>-3,f=>-3} 01004c010000280006000000 01004c010000280006000000 01004c010000280006000000 01004c010000280006000000 - {e=>7,c=>-3,a=>-122,g=>3,b=>2,d=>-4,f=>1} 86ff2a0100000f0003000000 86ff2a0100000f0003000000 86ff2a0100000f0003000000 86ff2a0100000f0003000000 - {e=>4,c=>-2,a=>112,g=>2,b=>6,d=>-4,f=>1} 7000360100000c0002000000 7000360100000c0002000000 7000360100000c0002000000 7000360100000c0002000000 - {e=>0,c=>-1,a=>-72,g=>6,b=>5,d=>3,f=>-4} b8fffd000000200006000000 b8fffd000000200006000000 b8fffd000000200006000000 b8fffd000000200006000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>7,a=>108,d=>2,c=>0,h=>5,b=>7,g=>0,f=>3} 6c00870000001f00000000000500 6c00870000001f00000000000500 6c00870000001f00000000000500 6c00870000001f00000000000500 - {e=>3,a=>126,d=>-1,c=>3,h=>6,b=>3,g=>6,f=>-2} 7e00db0100003300060000000600 7e00db0100003300060000000600 7e00db0100003300060000000600 7e00db0100003300060000000600 - {e=>0,a=>-62,d=>-2,c=>-4,h=>1,b=>5,g=>7,f=>-1} c2ffa50100003800070000000100 c2ffa50100003800070000000100 c2ffa50100003800070000000100 c2ffa50100003800070000000100 - {e=>4,a=>102,d=>2,c=>2,h=>7,b=>1,g=>3,f=>-1} 6600910000003c00030000000700 6600910000003c00030000000700 6600910000003c00030000000700 6600910000003c00030000000700 - {e=>5,a=>-66,d=>2,c=>-4,h=>7,b=>7,g=>7,f=>-2} beffa70000003500070000000700 beffa70000003500070000000700 beffa70000003500070000000700 beffa70000003500070000000700 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>114,d=>1,c=>-2,h=>7,b=>7,g=>2,f=>-1,i=>-2} 7200770000003f00020000003700 7200770000003f00020000003700 7200770000003f00020000003700 7200770000003f00020000003700 - {e=>1,a=>-112,d=>-3,c=>2,h=>5,b=>5,g=>1,f=>-2,i=>-2} 90ff550100003100010000003500 90ff550100003100010000003500 90ff550100003100010000003500 90ff550100003100010000003500 - {e=>5,a=>88,d=>0,c=>1,h=>4,b=>4,g=>6,f=>-2,i=>2} 58000c0000003500060000001400 58000c0000003500060000001400 58000c0000003500060000001400 58000c0000003500060000001400 - {e=>2,a=>-8,d=>-2,c=>-1,h=>5,b=>0,g=>4,f=>-4,i=>0} f8ffb80100002200040000000500 f8ffb80100002200040000000500 f8ffb80100002200040000000500 f8ffb80100002200040000000500 - {e=>7,a=>-35,d=>3,c=>3,h=>0,b=>4,g=>0,f=>-2,i=>-4} ddffdc0000003700000000002000 ddffdc0000003700000000002000 ddffdc0000003700000000002000 ddffdc0000003700000000002000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-31,d=>-2,j=>5,c=>-3,h=>0,b=>0,g=>5,f=>-3,i=>3} e1ffa8010000280005000000180005000000 e1ffa8010000280005000000180005000000 e1ffa8010000280005000000180005000000 e1ffa8010000280005000000180005000000 - {e=>3,a=>0,d=>-1,j=>1,c=>-1,h=>0,b=>2,g=>1,f=>-2,i=>2} 0000fa010000330001000000100001000000 0000fa010000330001000000100001000000 0000fa010000330001000000100001000000 0000fa010000330001000000100001000000 - {e=>0,a=>72,d=>-1,j=>5,c=>2,h=>6,b=>5,g=>1,f=>-4,i=>-4} 4800d5010000200001000000260005000000 4800d5010000200001000000260005000000 4800d5010000200001000000260005000000 4800d5010000200001000000260005000000 - {e=>5,a=>84,d=>1,j=>1,c=>1,h=>3,b=>5,g=>2,f=>-3,i=>2} 54004d0000002d0002000000130001000000 54004d0000002d0002000000130001000000 54004d0000002d0002000000130001000000 54004d0000002d0002000000130001000000 - {e=>2,a=>75,d=>1,j=>3,c=>1,h=>2,b=>7,g=>5,f=>-2,i=>0} 4b004f000000320005000000020003000000 4b004f000000320005000000020003000000 4b004f000000320005000000020003000000 4b004f000000320005000000020003000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>7,a=>-23,d=>-3,j=>1,c=>-3,k=>-79,h=>4,b=>0,g=>6,f=>0,i=>1} e9ff680100000700060000000c0001000000b100 e9ff680100000700060000000c0001000000b100 e9ff680100000700060000000c0001000000b100 e9ff680100000700060000000c0001000000b100 - {e=>2,a=>-89,d=>0,j=>5,c=>1,k=>-14,h=>6,b=>6,g=>6,f=>3,i=>-3} a7ff0e0000001a00060000002e0005000000f200 a7ff0e0000001a00060000002e0005000000f200 a7ff0e0000001a00060000002e0005000000f200 a7ff0e0000001a00060000002e0005000000f200 - {e=>1,a=>-23,d=>0,j=>2,c=>1,k=>-2,h=>1,b=>1,g=>5,f=>2,i=>-2} e9ff09000000110005000000310002000000fe00 e9ff09000000110005000000310002000000fe00 e9ff09000000110005000000310002000000fe00 e9ff09000000110005000000310002000000fe00 - {e=>7,a=>-84,d=>-2,j=>3,c=>-4,k=>1,h=>6,b=>3,g=>4,f=>-2,i=>-4} acffa30100003700040000002600030000000100 acffa30100003700040000002600030000000100 acffa30100003700040000002600030000000100 acffa30100003700040000002600030000000100 - {e=>4,a=>-2,d=>-1,j=>3,c=>3,k=>-56,h=>3,b=>2,g=>6,f=>0,i=>-2} feffda010000040006000000330003000000c800 feffda010000040006000000330003000000c800 feffda010000040006000000330003000000c800 feffda010000040006000000330003000000c800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>43,d=>-2,j=>3,l=>3,c=>0,k=>-20,h=>3,b=>4,g=>1,f=>1,i=>-2} 2b0084010000090001000000330003000000ec03 2b0084010000090001000000330003000000ec03 2b0084010000090001000000330003000000ec03 2b0084010000090001000000330003000000ec03 - {e=>1,a=>-33,d=>1,j=>3,l=>2,c=>-3,k=>77,h=>2,b=>4,g=>0,f=>2,i=>2} dfff6c0000001100000000001200030000004d02 dfff6c0000001100000000001200030000004d02 dfff6c0000001100000000001200030000004d02 dfff6c0000001100000000001200030000004d02 - {e=>7,a=>122,d=>0,j=>5,l=>3,c=>-3,k=>-62,h=>7,b=>5,g=>3,f=>3,i=>0} 7a002d0000001f0003000000070005000000c203 7a002d0000001f0003000000070005000000c203 7a002d0000001f0003000000070005000000c203 7a002d0000001f0003000000070005000000c203 - {e=>4,a=>36,d=>3,j=>2,l=>1,c=>0,k=>-1,h=>6,b=>7,g=>1,f=>-3,i=>-3} 2400c70000002c00010000002e0002000000ff01 2400c70000002c00010000002e0002000000ff01 2400c70000002c00010000002e0002000000ff01 2400c70000002c00010000002e0002000000ff01 - {e=>2,a=>126,d=>-4,j=>2,l=>3,c=>0,k=>-47,h=>2,b=>6,g=>7,f=>0,i=>-4} 7e0006010000020007000000220002000000d103 7e0006010000020007000000220002000000d103 7e0006010000020007000000220002000000d103 7e0006010000020007000000220002000000d103 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>-59,m=>-4,d=>1,j=>2,l=>7,c=>0,k=>-30,h=>2,b=>7,g=>7,f=>-1,i=>0} c5ff47000000380007000000020002000000e227 c5ff47000000380007000000020002000000e227 c5ff47000000380007000000020002000000e227 c5ff47000000380007000000020002000000e227 - {e=>5,a=>-106,m=>-1,d=>3,j=>2,l=>5,c=>3,k=>84,h=>4,b=>3,g=>3,f=>-3,i=>-1} 96ffdb0000002d00030000003c0002000000543d 96ffdb0000002d00030000003c0002000000543d 96ffdb0000002d00030000003c0002000000543d 96ffdb0000002d00030000003c0002000000543d - {e=>1,a=>41,m=>1,d=>1,j=>7,l=>5,c=>2,k=>33,h=>5,b=>7,g=>4,f=>-1,i=>-1} 2900570000003900040000003d0007000000210d 2900570000003900040000003d0007000000210d 2900570000003900040000003d0007000000210d 2900570000003900040000003d0007000000210d - {e=>7,a=>53,m=>0,d=>2,j=>5,l=>6,c=>0,k=>-74,h=>1,b=>1,g=>6,f=>-1,i=>-4} 3500810000003f0006000000210005000000b606 3500810000003f0006000000210005000000b606 3500810000003f0006000000210005000000b606 3500810000003f0006000000210005000000b606 - {e=>0,a=>-26,m=>0,d=>-3,j=>0,l=>6,c=>1,k=>94,h=>3,b=>2,g=>5,f=>3,i=>-2} e6ff4a0100001800050000003300000000005e06 e6ff4a0100001800050000003300000000005e06 e6ff4a0100001800050000003300000000005e06 e6ff4a0100001800050000003300000000005e06 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>3,a=>116,m=>1,d=>-1,j=>4,l=>5,c=>-4,k=>-99,h=>6,b=>1,g=>1,f=>-1,i=>-4} 7400e10100003b00010000002600040000009d0d03000000 7400e10100003b00010000002600040000009d0d03000000 7400e10100003b00010000002600040000009d0d03000000 7400e10100003b00010000002600040000009d0d03000000 - {e=>5,n=>6,a=>-60,m=>-4,d=>-1,j=>1,l=>5,c=>0,k=>-90,h=>3,b=>3,g=>2,f=>-2,i=>-3} c4ffc30100003500020000002b0001000000a62506000000 c4ffc30100003500020000002b0001000000a62506000000 c4ffc30100003500020000002b0001000000a62506000000 c4ffc30100003500020000002b0001000000a62506000000 - {e=>1,n=>3,a=>101,m=>1,d=>1,j=>5,l=>4,c=>-1,k=>0,h=>0,b=>0,g=>3,f=>3,i=>2} 650078000000190003000000100005000000000c03000000 650078000000190003000000100005000000000c03000000 650078000000190003000000100005000000000c03000000 650078000000190003000000100005000000000c03000000 - {e=>1,n=>5,a=>-81,m=>-2,d=>1,j=>4,l=>7,c=>-3,k=>24,h=>2,b=>7,g=>4,f=>2,i=>1} afff6f0000001100040000000a0004000000183705000000 afff6f0000001100040000000a0004000000183705000000 afff6f0000001100040000000a0004000000183705000000 afff6f0000001100040000000a0004000000183705000000 - {e=>5,n=>7,a=>69,m=>-1,d=>-4,j=>4,l=>5,c=>-3,k=>-48,h=>3,b=>1,g=>1,f=>-3,i=>1} 4500290100002d00010000000b0004000000d03d07000000 4500290100002d00010000000b0004000000d03d07000000 4500290100002d00010000000b0004000000d03d07000000 4500290100002d00010000000b0004000000d03d07000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>1,a=>-4,m=>-3,d=>1,j=>6,l=>4,c=>1,k=>-26,h=>3,b=>6,g=>0,f=>3,o=>238,i=>2} fcff4e0000001e0000000000130006000000e62c01000000ee00 fcff4e0000001e0000000000130006000000e62c01000000ee00 fcff4e0000001e0000000000130006000000e62c01000000ee00 fcff4e0000001e0000000000130006000000e62c01000000ee00 - {e=>0,n=>1,a=>-68,m=>-2,d=>1,j=>5,l=>3,c=>-2,k=>121,h=>3,b=>2,g=>1,f=>-2,o=>129,i=>2} bcff720000003000010000001300050000007933010000008100 bcff720000003000010000001300050000007933010000008100 bcff720000003000010000001300050000007933010000008100 bcff720000003000010000001300050000007933010000008100 - {e=>0,n=>3,a=>-111,m=>-4,d=>2,j=>1,l=>5,c=>-4,k=>58,h=>7,b=>2,g=>1,f=>-4,o=>239,i=>-2} 91ffa20000002000010000003700010000003a2503000000ef00 91ffa20000002000010000003700010000003a2503000000ef00 91ffa20000002000010000003700010000003a2503000000ef00 91ffa20000002000010000003700010000003a2503000000ef00 - {e=>0,n=>5,a=>-114,m=>-2,d=>-4,j=>1,l=>2,c=>2,k=>-17,h=>7,b=>3,g=>3,f=>-3,o=>107,i=>-1} 8eff130100002800030000003f0001000000ef32050000006b00 8eff130100002800030000003f0001000000ef32050000006b00 8eff130100002800030000003f0001000000ef32050000006b00 8eff130100002800030000003f0001000000ef32050000006b00 - {e=>1,n=>6,a=>-2,m=>1,d=>0,j=>0,l=>6,c=>1,k=>68,h=>6,b=>2,g=>4,f=>-3,o=>139,i=>1} feff0a0000002900040000000e0000000000440e060000008b00 feff0a0000002900040000000e0000000000440e060000008b00 feff0a0000002900040000000e0000000000440e060000008b00 feff0a0000002900040000000e0000000000440e060000008b00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; }; - {a=>109,b=>7} 6d00000007000000 6d00000007000000 6d00000007000000 6d00000007000000 - {a=>-103,b=>4} 99ffffff04000000 99ffffff04000000 99ffffff04000000 99ffffff04000000 - {a=>111,b=>4} 6f00000004000000 6f00000004000000 6f00000004000000 6f00000004000000 - {a=>-58,b=>4} c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 - {a=>117,b=>4} 7500000004000000 7500000004000000 7500000004000000 7500000004000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>54,b=>7} 3600000027000000 3600000027000000 3600000027000000 3600000027000000 - {c=>-4,a=>-26,b=>7} e6ffffff27000000 e6ffffff27000000 e6ffffff27000000 e6ffffff27000000 - {c=>1,a=>35,b=>7} 230000000f000000 230000000f000000 230000000f000000 230000000f000000 - {c=>-3,a=>59,b=>0} 3b00000028000000 3b00000028000000 3b00000028000000 3b00000028000000 - {c=>-3,a=>70,b=>2} 460000002a000000 460000002a000000 460000002a000000 460000002a000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-61,b=>4,d=>2} c3ffffffa4000000 c3ffffffa4000000 c3ffffffa4000000 c3ffffffa4000000 - {c=>-3,a=>79,b=>5,d=>3} 4f000000ed000000 4f000000ed000000 4f000000ed000000 4f000000ed000000 - {c=>-3,a=>-113,b=>0,d=>-3} 8fffffff68010000 8fffffff68010000 8fffffff68010000 8fffffff68010000 - {c=>-3,a=>-20,b=>5,d=>3} ecffffffed000000 ecffffffed000000 ecffffffed000000 ecffffffed000000 - {c=>-1,a=>84,b=>7,d=>-3} 540000007f010000 540000007f010000 540000007f010000 540000007f010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>0,a=>-47,b=>6,d=>-1} d1ffffffc60100000400 d1ffffffc60100000400 d1ffffffc60100000400 d1ffffffc60100000400 - {e=>3,c=>1,a=>-93,b=>5,d=>-3} a3ffffff4d0100000300 a3ffffff4d0100000300 a3ffffff4d0100000300 a3ffffff4d0100000300 - {e=>1,c=>3,a=>123,b=>0,d=>-1} 7b000000d80100000100 7b000000d80100000100 7b000000d80100000100 7b000000d80100000100 - {e=>1,c=>-1,a=>-36,b=>7,d=>3} dcffffffff0000000100 dcffffffff0000000100 dcffffffff0000000100 dcffffffff0000000100 - {e=>2,c=>0,a=>-51,b=>2,d=>1} cdffffff420000000200 cdffffff420000000200 cdffffff420000000200 cdffffff420000000200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>-3,a=>54,b=>4,d=>-3,f=>1} 360000006c0100000e00 360000006c0100000e00 360000006c0100000e00 360000006c0100000e00 - {e=>4,c=>2,a=>53,b=>2,d=>-4,f=>0} 35000000120100000400 35000000120100000400 35000000120100000400 35000000120100000400 - {e=>3,c=>1,a=>-32,b=>6,d=>2,f=>1} e0ffffff8e0000000b00 e0ffffff8e0000000b00 e0ffffff8e0000000b00 e0ffffff8e0000000b00 - {e=>4,c=>-4,a=>57,b=>1,d=>-1,f=>-4} 39000000e10100002400 39000000e10100002400 39000000e10100002400 39000000e10100002400 - {e=>2,c=>-2,a=>-128,b=>2,d=>0,f=>-2} 80ffffff320000003200 80ffffff320000003200 80ffffff320000003200 80ffffff320000003200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>7,c=>-2,a=>-88,g=>0,b=>2,d=>3,f=>-4} a8fffffff2000000270000000000 a8fffffff2000000270000000000 a8fffffff2000000270000000000 a8fffffff2000000270000000000 - {e=>5,c=>-3,a=>90,g=>6,b=>2,d=>-1,f=>1} 5a000000ea0100000d0006000000 5a000000ea0100000d0006000000 5a000000ea0100000d0006000000 5a000000ea0100000d0006000000 - {e=>4,c=>3,a=>68,g=>6,b=>2,d=>-1,f=>-3} 44000000da0100002c0006000000 44000000da0100002c0006000000 44000000da0100002c0006000000 44000000da0100002c0006000000 - {e=>0,c=>3,a=>54,g=>6,b=>1,d=>-2,f=>2} 3600000099010000100006000000 3600000099010000100006000000 3600000099010000100006000000 3600000099010000100006000000 - {e=>2,c=>2,a=>45,g=>3,b=>1,d=>2,f=>-4} 2d00000091000000220003000000 2d00000091000000220003000000 2d00000091000000220003000000 2d00000091000000220003000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>3,c=>2,a=>-87,g=>6,b=>4,d=>0,f=>-1} a9ffffff140000003b0006000000 a9ffffff140000003b0006000000 a9ffffff140000003b0006000000 a9ffffff140000003b0006000000 - {e=>7,c=>-3,a=>103,g=>6,b=>0,d=>2,f=>-4} 67000000a8000000270006000000 67000000a8000000270006000000 67000000a8000000270006000000 67000000a8000000270006000000 - {e=>2,c=>2,a=>-32,g=>2,b=>6,d=>2,f=>-2} e0ffffff96000000320002000000 e0ffffff96000000320002000000 e0ffffff96000000320002000000 e0ffffff96000000320002000000 - {e=>5,c=>0,a=>122,g=>7,b=>4,d=>-4,f=>1} 7a000000040100000d0007000000 7a000000040100000d0007000000 7a000000040100000d0007000000 7a000000040100000d0007000000 - {e=>4,c=>-2,a=>-85,g=>0,b=>0,d=>-3,f=>-3} abffffff700100002c0000000000 abffffff700100002c0000000000 abffffff700100002c0000000000 abffffff700100002c0000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>2,a=>-79,d=>-4,c=>2,h=>5,b=>0,g=>4,f=>-4} b1ffffff100100002200040000000500 b1ffffff100100002200040000000500 b1ffffff100100002200040000000500 b1ffffff100100002200040000000500 - {e=>1,a=>61,d=>1,c=>-2,h=>7,b=>2,g=>4,f=>-3} 3d000000720000002900040000000700 3d000000720000002900040000000700 3d000000720000002900040000000700 3d000000720000002900040000000700 - {e=>7,a=>-36,d=>3,c=>-2,h=>0,b=>2,g=>0,f=>-1} dcfffffff20000003f00000000000000 dcfffffff20000003f00000000000000 dcfffffff20000003f00000000000000 dcfffffff20000003f00000000000000 - {e=>3,a=>-11,d=>-2,c=>-4,h=>2,b=>6,g=>5,f=>3} f5ffffffa60100001b00050000000200 f5ffffffa60100001b00050000000200 f5ffffffa60100001b00050000000200 f5ffffffa60100001b00050000000200 - {e=>7,a=>-10,d=>1,c=>-3,h=>4,b=>7,g=>0,f=>3} f6ffffff6f0000001f00000000000400 f6ffffff6f0000001f00000000000400 f6ffffff6f0000001f00000000000400 f6ffffff6f0000001f00000000000400 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>32,d=>-2,c=>1,h=>7,b=>7,g=>0,f=>1,i=>3} 200000008f0100000e00000000001f00 200000008f0100000e00000000001f00 200000008f0100000e00000000001f00 200000008f0100000e00000000001f00 - {e=>7,a=>-98,d=>-3,c=>3,h=>1,b=>1,g=>1,f=>-1,i=>1} 9effffff590100003f00010000000900 9effffff590100003f00010000000900 9effffff590100003f00010000000900 9effffff590100003f00010000000900 - {e=>0,a=>-83,d=>-2,c=>-4,h=>7,b=>5,g=>5,f=>-4,i=>1} adffffffa50100002000050000000f00 adffffffa50100002000050000000f00 adffffffa50100002000050000000f00 adffffffa50100002000050000000f00 - {e=>6,a=>-52,d=>-4,c=>-4,h=>5,b=>5,g=>0,f=>-1,i=>-2} ccffffff250100003e00000000003500 ccffffff250100003e00000000003500 ccffffff250100003e00000000003500 ccffffff250100003e00000000003500 - {e=>4,a=>123,d=>2,c=>0,h=>6,b=>7,g=>2,f=>-1,i=>0} 7b000000870000003c00020000000600 7b000000870000003c00020000000600 7b000000870000003c00020000000600 7b000000870000003c00020000000600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>62,d=>-1,j=>3,c=>-2,h=>0,b=>7,g=>2,f=>1,i=>-3} 3e000000f70100000b0002000000280003000000 3e000000f70100000b0002000000280003000000 3e000000f70100000b0002000000280003000000 3e000000f70100000b0002000000280003000000 - {e=>6,a=>-59,d=>2,j=>5,c=>1,h=>5,b=>5,g=>7,f=>3,i=>0} c5ffffff8d0000001e0007000000050005000000 c5ffffff8d0000001e0007000000050005000000 c5ffffff8d0000001e0007000000050005000000 c5ffffff8d0000001e0007000000050005000000 - {e=>6,a=>76,d=>0,j=>7,c=>2,h=>1,b=>4,g=>2,f=>1,i=>-1} 4c000000140000000e0002000000390007000000 4c000000140000000e0002000000390007000000 4c000000140000000e0002000000390007000000 4c000000140000000e0002000000390007000000 - {e=>6,a=>-74,d=>0,j=>1,c=>1,h=>5,b=>6,g=>7,f=>3,i=>-1} b6ffffff0e0000001e00070000003d0001000000 b6ffffff0e0000001e00070000003d0001000000 b6ffffff0e0000001e00070000003d0001000000 b6ffffff0e0000001e00070000003d0001000000 - {e=>0,a=>-90,d=>-4,j=>4,c=>3,h=>5,b=>5,g=>2,f=>-2,i=>0} a6ffffff1d010000300002000000050004000000 a6ffffff1d010000300002000000050004000000 a6ffffff1d010000300002000000050004000000 a6ffffff1d010000300002000000050004000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>-103,d=>-1,j=>0,c=>1,k=>-31,h=>7,b=>0,g=>1,f=>1,i=>-3} 99ffffffc80100000e00010000002f0000000000e100 99ffffffc80100000e00010000002f0000000000e100 99ffffffc80100000e00010000002f0000000000e100 99ffffffc80100000e00010000002f0000000000e100 - {e=>5,a=>-2,d=>-1,j=>6,c=>0,k=>78,h=>6,b=>1,g=>4,f=>3,i=>3} feffffffc10100001d00040000001e00060000004e00 feffffffc10100001d00040000001e00060000004e00 feffffffc10100001d00040000001e00060000004e00 feffffffc10100001d00040000001e00060000004e00 - {e=>3,a=>-110,d=>-1,j=>1,c=>2,k=>-117,h=>6,b=>1,g=>6,f=>1,i=>2} 92ffffffd10100000b00060000001600010000008b00 92ffffffd10100000b00060000001600010000008b00 92ffffffd10100000b00060000001600010000008b00 92ffffffd10100000b00060000001600010000008b00 - {e=>3,a=>-42,d=>-2,j=>0,c=>-2,k=>-72,h=>4,b=>5,g=>4,f=>-4,i=>1} d6ffffffb50100002300040000000c0000000000b800 d6ffffffb50100002300040000000c0000000000b800 d6ffffffb50100002300040000000c0000000000b800 d6ffffffb50100002300040000000c0000000000b800 - {e=>1,a=>117,d=>-4,j=>1,c=>-3,k=>97,h=>4,b=>0,g=>1,f=>2,i=>-3} 75000000280100001100010000002c00010000006100 75000000280100001100010000002c00010000006100 75000000280100001100010000002c00010000006100 75000000280100001100010000002c00010000006100 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>3,a=>-57,d=>2,j=>6,l=>1,c=>0,k=>73,h=>5,b=>5,g=>3,f=>1,i=>-3} c7ffffff850000000b00030000002d00060000004901 c7ffffff850000000b00030000002d00060000004901 c7ffffff850000000b00030000002d00060000004901 c7ffffff850000000b00030000002d00060000004901 - {e=>6,a=>-107,d=>1,j=>5,l=>4,c=>-2,k=>25,h=>2,b=>1,g=>3,f=>3,i=>3} 95ffffff710000001e00030000001a00050000001904 95ffffff710000001e00030000001a00050000001904 95ffffff710000001e00030000001a00050000001904 95ffffff710000001e00030000001a00050000001904 - {e=>2,a=>108,d=>-3,j=>1,l=>5,c=>-3,k=>74,h=>4,b=>7,g=>4,f=>0,i=>-3} 6c0000006f0100000200040000002c00010000004a05 6c0000006f0100000200040000002c00010000004a05 6c0000006f0100000200040000002c00010000004a05 6c0000006f0100000200040000002c00010000004a05 - {e=>7,a=>-5,d=>3,j=>2,l=>7,c=>-3,k=>54,h=>0,b=>1,g=>0,f=>-2,i=>-1} fbffffffe90000003700000000003800020000003607 fbffffffe90000003700000000003800020000003607 fbffffffe90000003700000000003800020000003607 fbffffffe90000003700000000003800020000003607 - {e=>0,a=>-52,d=>2,j=>2,l=>0,c=>0,k=>118,h=>7,b=>0,g=>4,f=>1,i=>3} ccffffff800000000800040000001f00020000007600 ccffffff800000000800040000001f00020000007600 ccffffff800000000800040000001f00020000007600 ccffffff800000000800040000001f00020000007600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>-84,m=>1,d=>0,j=>1,l=>3,c=>-2,k=>78,h=>2,b=>4,g=>7,f=>2,i=>-3} acffffff340000001300070000002a00010000004e0b acffffff340000001300070000002a00010000004e0b acffffff340000001300070000002a00010000004e0b acffffff340000001300070000002a00010000004e0b - {e=>7,a=>80,m=>-4,d=>0,j=>6,l=>1,c=>3,k=>-88,h=>3,b=>1,g=>7,f=>-3,i=>1} 50000000190000002f00070000000b0006000000a821 50000000190000002f00070000000b0006000000a821 50000000190000002f00070000000b0006000000a821 50000000190000002f00070000000b0006000000a821 - {e=>6,a=>112,m=>-2,d=>1,j=>3,l=>1,c=>3,k=>69,h=>2,b=>1,g=>4,f=>-1,i=>2} 70000000590000003e00040000001200030000004531 70000000590000003e00040000001200030000004531 70000000590000003e00040000001200030000004531 70000000590000003e00040000001200030000004531 - {e=>1,a=>110,m=>-1,d=>0,j=>1,l=>3,c=>0,k=>-21,h=>1,b=>4,g=>0,f=>2,i=>1} 6e00000004000000110000000000090001000000eb3b 6e00000004000000110000000000090001000000eb3b 6e00000004000000110000000000090001000000eb3b 6e00000004000000110000000000090001000000eb3b - {e=>7,a=>35,m=>-2,d=>0,j=>1,l=>1,c=>3,k=>36,h=>3,b=>4,g=>4,f=>-4,i=>-3} 230000001c0000002700040000002b00010000002431 230000001c0000002700040000002b00010000002431 230000001c0000002700040000002b00010000002431 230000001c0000002700040000002b00010000002431 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>2,n=>0,a=>-6,m=>3,d=>0,j=>7,l=>2,c=>-4,k=>-55,h=>7,b=>3,g=>5,f=>2,i=>-2} faffffff23000000120005000000370007000000c91a00000000 faffffff23000000120005000000370007000000c91a00000000 faffffff23000000120005000000370007000000c91a00000000 faffffff23000000120005000000370007000000c91a00000000 - {e=>1,n=>7,a=>-87,m=>0,d=>0,j=>6,l=>4,c=>-2,k=>24,h=>7,b=>2,g=>1,f=>-3,i=>-3} a9ffffff320000002900010000002f0006000000180407000000 a9ffffff320000002900010000002f0006000000180407000000 a9ffffff320000002900010000002f0006000000180407000000 a9ffffff320000002900010000002f0006000000180407000000 - {e=>4,n=>4,a=>-107,m=>-1,d=>-2,j=>6,l=>0,c=>1,k=>-90,h=>5,b=>5,g=>2,f=>-4,i=>-2} 95ffffff8d010000240002000000350006000000a63804000000 95ffffff8d010000240002000000350006000000a63804000000 95ffffff8d010000240002000000350006000000a63804000000 95ffffff8d010000240002000000350006000000a63804000000 - {e=>1,n=>5,a=>-24,m=>-2,d=>-4,j=>6,l=>7,c=>1,k=>-102,h=>1,b=>5,g=>0,f=>-2,i=>0} e8ffffff0d0100003100000000000100060000009a3705000000 e8ffffff0d0100003100000000000100060000009a3705000000 e8ffffff0d0100003100000000000100060000009a3705000000 e8ffffff0d0100003100000000000100060000009a3705000000 - {e=>0,n=>4,a=>127,m=>-2,d=>-1,j=>7,l=>4,c=>-4,k=>68,h=>0,b=>1,g=>4,f=>-4,i=>-3} 7f000000e1010000200004000000280007000000443404000000 7f000000e1010000200004000000280007000000443404000000 7f000000e1010000200004000000280007000000443404000000 7f000000e1010000200004000000280007000000443404000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>4,a=>47,m=>3,d=>0,j=>7,l=>0,c=>3,k=>-117,h=>2,b=>3,g=>0,f=>-4,o=>238,i=>-3} 2f0000001b0000002200000000002a00070000008b1804000000ee00 2f0000001b0000002200000000002a00070000008b1804000000ee00 2f0000001b0000002200000000002a00070000008b1804000000ee00 2f0000001b0000002200000000002a00070000008b1804000000ee00 - {e=>1,n=>4,a=>-56,m=>-3,d=>0,j=>0,l=>3,c=>-3,k=>-65,h=>0,b=>6,g=>7,f=>-2,o=>157,i=>3} c8ffffff2e000000310007000000180000000000bf2b040000009d00 c8ffffff2e000000310007000000180000000000bf2b040000009d00 c8ffffff2e000000310007000000180000000000bf2b040000009d00 c8ffffff2e000000310007000000180000000000bf2b040000009d00 - {e=>6,n=>5,a=>44,m=>1,d=>1,j=>3,l=>1,c=>1,k=>57,h=>1,b=>7,g=>4,f=>2,o=>68,i=>2} 2c0000004f0000001600040000001100030000003909050000004400 2c0000004f0000001600040000001100030000003909050000004400 2c0000004f0000001600040000001100030000003909050000004400 2c0000004f0000001600040000001100030000003909050000004400 - {e=>2,n=>6,a=>-122,m=>0,d=>0,j=>6,l=>6,c=>3,k=>87,h=>1,b=>2,g=>7,f=>2,o=>182,i=>3} 86ffffff1a000000120007000000190006000000570606000000b600 86ffffff1a000000120007000000190006000000570606000000b600 86ffffff1a000000120007000000190006000000570606000000b600 86ffffff1a000000120007000000190006000000570606000000b600 - {e=>6,n=>4,a=>-93,m=>0,d=>-3,j=>5,l=>2,c=>2,k=>104,h=>6,b=>0,g=>1,f=>-3,o=>134,i=>-1} a3ffffff500100002e00010000003e00050000006802040000008600 a3ffffff500100002e00010000003e00050000006802040000008600 a3ffffff500100002e00010000003e00050000006802040000008600 a3ffffff500100002e00010000003e00050000006802040000008600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; }; - {a=>92,b=>7} 5c00000007000000 5c00000007000000 5c00000007000000 5c00000007000000 - {a=>73,b=>2} 4900000002000000 4900000002000000 4900000002000000 4900000002000000 - {a=>-17,b=>2} efffffff02000000 efffffff02000000 efffffff02000000 efffffff02000000 - {a=>6,b=>0} 0600000000000000 0600000000000000 0600000000000000 0600000000000000 - {a=>-12,b=>7} f4ffffff07000000 f4ffffff07000000 f4ffffff07000000 f4ffffff07000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>5,b=>1} 0500000001000000 0500000001000000 0500000001000000 0500000001000000 - {c=>3,a=>54,b=>3} 360000001b000000 360000001b000000 360000001b000000 360000001b000000 - {c=>3,a=>58,b=>0} 3a00000018000000 3a00000018000000 3a00000018000000 3a00000018000000 - {c=>2,a=>-6,b=>6} faffffff16000000 faffffff16000000 faffffff16000000 faffffff16000000 - {c=>1,a=>-30,b=>2} e2ffffff0a000000 e2ffffff0a000000 e2ffffff0a000000 e2ffffff0a000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>3,a=>18,b=>6,d=>1} 120000005e000000 120000005e000000 120000005e000000 120000005e000000 - {c=>-1,a=>-92,b=>2,d=>-2} a4ffffffba010000 a4ffffffba010000 a4ffffffba010000 a4ffffffba010000 - {c=>-1,a=>-128,b=>5,d=>3} 80fffffffd000000 80fffffffd000000 80fffffffd000000 80fffffffd000000 - {c=>-4,a=>-90,b=>0,d=>0} a6ffffff20000000 a6ffffff20000000 a6ffffff20000000 a6ffffff20000000 - {c=>2,a=>-12,b=>2,d=>2} f4ffffff92000000 f4ffffff92000000 f4ffffff92000000 f4ffffff92000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-2,a=>-52,b=>1,d=>-2} ccffffffb10100000400 ccffffffb10100000400 ccffffffb10100000400 ccffffffb10100000400 - {e=>3,c=>2,a=>-5,b=>6,d=>0} fbffffff160000000300 fbffffff160000000300 fbffffff160000000300 fbffffff160000000300 - {e=>5,c=>-4,a=>51,b=>1,d=>-2} 33000000a10100000500 33000000a10100000500 33000000a10100000500 33000000a10100000500 - {e=>2,c=>2,a=>-120,b=>6,d=>-4} 88ffffff160100000200 88ffffff160100000200 88ffffff160100000200 88ffffff160100000200 - {e=>5,c=>1,a=>-11,b=>3,d=>2} f5ffffff8b0000000500 f5ffffff8b0000000500 f5ffffff8b0000000500 f5ffffff8b0000000500 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>-4,a=>-32,b=>4,d=>0,f=>-1} e0ffffff240000003e00 e0ffffff240000003e00 e0ffffff240000003e00 e0ffffff240000003e00 - {e=>5,c=>2,a=>50,b=>1,d=>2,f=>1} 32000000910000000d00 32000000910000000d00 32000000910000000d00 32000000910000000d00 - {e=>7,c=>-2,a=>106,b=>5,d=>-4,f=>1} 6a000000350100000f00 6a000000350100000f00 6a000000350100000f00 6a000000350100000f00 - {e=>4,c=>-4,a=>-26,b=>5,d=>-3,f=>-4} e6ffffff650100002400 e6ffffff650100002400 e6ffffff650100002400 e6ffffff650100002400 - {e=>6,c=>1,a=>30,b=>1,d=>-3,f=>1} 1e000000490100000e00 1e000000490100000e00 1e000000490100000e00 1e000000490100000e00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>2,c=>-3,a=>34,g=>7,b=>0,d=>0,f=>-2} 2200000028000000320007000000 2200000028000000320007000000 2200000028000000320007000000 2200000028000000320007000000 - {e=>7,c=>1,a=>-121,g=>0,b=>5,d=>0,f=>-2} 87ffffff0d000000370000000000 87ffffff0d000000370000000000 87ffffff0d000000370000000000 87ffffff0d000000370000000000 - {e=>3,c=>-3,a=>0,g=>1,b=>0,d=>2,f=>-1} 00000000a80000003b0001000000 00000000a80000003b0001000000 00000000a80000003b0001000000 00000000a80000003b0001000000 - {e=>5,c=>-3,a=>-126,g=>5,b=>5,d=>-3,f=>3} 82ffffff6d0100001d0005000000 82ffffff6d0100001d0005000000 82ffffff6d0100001d0005000000 82ffffff6d0100001d0005000000 - {e=>0,c=>2,a=>-72,g=>7,b=>0,d=>3,f=>3} b8ffffffd0000000180007000000 b8ffffffd0000000180007000000 b8ffffffd0000000180007000000 b8ffffffd0000000180007000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-1,a=>16,g=>1,b=>3,d=>-4,f=>-4} 100000003b010000210001000000 100000003b010000210001000000 100000003b010000210001000000 100000003b010000210001000000 - {e=>5,c=>-2,a=>-124,g=>2,b=>1,d=>3,f=>3} 84fffffff10000001d0002000000 84fffffff10000001d0002000000 84fffffff10000001d0002000000 84fffffff10000001d0002000000 - {e=>3,c=>-4,a=>-30,g=>6,b=>6,d=>0,f=>-3} e2ffffff260000002b0006000000 e2ffffff260000002b0006000000 e2ffffff260000002b0006000000 e2ffffff260000002b0006000000 - {e=>5,c=>-4,a=>101,g=>4,b=>2,d=>2,f=>2} 65000000a2000000150004000000 65000000a2000000150004000000 65000000a2000000150004000000 65000000a2000000150004000000 - {e=>0,c=>1,a=>-30,g=>0,b=>0,d=>-1,f=>-1} e2ffffffc8010000380000000000 e2ffffffc8010000380000000000 e2ffffffc8010000380000000000 e2ffffffc8010000380000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>-63,d=>-4,c=>-3,h=>4,b=>0,g=>7,f=>-1} c1ffffff280100003b00070000000400 c1ffffff280100003b00070000000400 c1ffffff280100003b00070000000400 c1ffffff280100003b00070000000400 - {e=>1,a=>-112,d=>3,c=>0,h=>7,b=>3,g=>1,f=>2} 90ffffffc30000001100010000000700 90ffffffc30000001100010000000700 90ffffffc30000001100010000000700 90ffffffc30000001100010000000700 - {e=>5,a=>-65,d=>-1,c=>2,h=>5,b=>6,g=>4,f=>-2} bfffffffd60100003500040000000500 bfffffffd60100003500040000000500 bfffffffd60100003500040000000500 bfffffffd60100003500040000000500 - {e=>7,a=>63,d=>0,c=>-4,h=>3,b=>5,g=>4,f=>1} 3f000000250000000f00040000000300 3f000000250000000f00040000000300 3f000000250000000f00040000000300 3f000000250000000f00040000000300 - {e=>3,a=>-66,d=>-3,c=>3,h=>4,b=>0,g=>2,f=>-3} beffffff580100002b00020000000400 beffffff580100002b00020000000400 beffffff580100002b00020000000400 beffffff580100002b00020000000400 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>0,a=>-44,d=>-1,c=>-2,h=>7,b=>4,g=>5,f=>-3,i=>1} d4fffffff40100002800050000000f00 d4fffffff40100002800050000000f00 d4fffffff40100002800050000000f00 d4fffffff40100002800050000000f00 - {e=>2,a=>-106,d=>-4,c=>2,h=>0,b=>5,g=>5,f=>-3,i=>-2} 96ffffff150100002a00050000003000 96ffffff150100002a00050000003000 96ffffff150100002a00050000003000 96ffffff150100002a00050000003000 - {e=>0,a=>127,d=>-4,c=>2,h=>5,b=>2,g=>1,f=>-2,i=>-4} 7f000000120100003000010000002500 7f000000120100003000010000002500 7f000000120100003000010000002500 7f000000120100003000010000002500 - {e=>2,a=>-89,d=>1,c=>-2,h=>5,b=>4,g=>0,f=>-2,i=>3} a7ffffff740000003200000000001d00 a7ffffff740000003200000000001d00 a7ffffff740000003200000000001d00 a7ffffff740000003200000000001d00 - {e=>3,a=>86,d=>2,c=>1,h=>6,b=>4,g=>7,f=>3,i=>-4} 560000008c0000001b00070000002600 560000008c0000001b00070000002600 560000008c0000001b00070000002600 560000008c0000001b00070000002600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>2,a=>68,d=>-3,j=>7,c=>-1,h=>6,b=>2,g=>2,f=>-2,i=>-1} 440000007a0100003200020000003e0007000000 440000007a0100003200020000003e0007000000 440000007a0100003200020000003e0007000000 440000007a0100003200020000003e0007000000 - {e=>5,a=>125,d=>2,j=>0,c=>2,h=>0,b=>0,g=>1,f=>2,i=>3} 7d00000090000000150001000000180000000000 7d00000090000000150001000000180000000000 7d00000090000000150001000000180000000000 7d00000090000000150001000000180000000000 - {e=>7,a=>-98,d=>-3,j=>3,c=>1,h=>0,b=>2,g=>0,f=>3,i=>2} 9effffff4a0100001f0000000000100003000000 9effffff4a0100001f0000000000100003000000 9effffff4a0100001f0000000000100003000000 9effffff4a0100001f0000000000100003000000 - {e=>6,a=>65,d=>-4,j=>2,c=>2,h=>4,b=>4,g=>6,f=>0,i=>-1} 41000000140100000600060000003c0002000000 41000000140100000600060000003c0002000000 41000000140100000600060000003c0002000000 41000000140100000600060000003c0002000000 - {e=>4,a=>-43,d=>-4,j=>1,c=>0,h=>7,b=>1,g=>0,f=>1,i=>2} d5ffffff010100000c0000000000170001000000 d5ffffff010100000c0000000000170001000000 d5ffffff010100000c0000000000170001000000 d5ffffff010100000c0000000000170001000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>7,a=>86,d=>3,j=>2,c=>0,k=>-13,h=>7,b=>3,g=>7,f=>3,i=>-4} 56000000c30000001f0007000000270002000000f300 56000000c30000001f0007000000270002000000f300 56000000c30000001f0007000000270002000000f300 56000000c30000001f0007000000270002000000f300 - {e=>5,a=>-12,d=>-3,j=>6,c=>-3,k=>-95,h=>0,b=>6,g=>0,f=>-2,i=>-3} f4ffffff6e010000350000000000280006000000a100 f4ffffff6e010000350000000000280006000000a100 f4ffffff6e010000350000000000280006000000a100 f4ffffff6e010000350000000000280006000000a100 - {e=>6,a=>-124,d=>3,j=>3,c=>-3,k=>50,h=>6,b=>7,g=>2,f=>-1,i=>-1} 84ffffffef0000003e00020000003e00030000003200 84ffffffef0000003e00020000003e00030000003200 84ffffffef0000003e00020000003e00030000003200 84ffffffef0000003e00020000003e00030000003200 - {e=>2,a=>47,d=>0,j=>0,c=>-4,k=>102,h=>3,b=>7,g=>6,f=>-4,i=>2} 2f000000270000002200060000001300000000006600 2f000000270000002200060000001300000000006600 2f000000270000002200060000001300000000006600 2f000000270000002200060000001300000000006600 - {e=>5,a=>95,d=>0,j=>6,c=>0,k=>66,h=>6,b=>6,g=>6,f=>-4,i=>-4} 5f000000060000002500060000002600060000004200 5f000000060000002500060000002600060000004200 5f000000060000002500060000002600060000004200 5f000000060000002500060000002600060000004200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>7,a=>101,d=>-2,j=>1,l=>0,c=>-3,k=>83,h=>7,b=>0,g=>3,f=>-4,i=>2} 65000000a80100002700030000001700010000005300 65000000a80100002700030000001700010000005300 65000000a80100002700030000001700010000005300 65000000a80100002700030000001700010000005300 - {e=>7,a=>-82,d=>2,j=>3,l=>2,c=>1,k=>50,h=>0,b=>2,g=>7,f=>-2,i=>-2} aeffffff8a0000003700070000003000030000003202 aeffffff8a0000003700070000003000030000003202 aeffffff8a0000003700070000003000030000003202 aeffffff8a0000003700070000003000030000003202 - {e=>5,a=>49,d=>-3,j=>1,l=>7,c=>-2,k=>-9,h=>7,b=>5,g=>5,f=>-1,i=>2} 31000000750100003d0005000000170001000000f707 31000000750100003d0005000000170001000000f707 31000000750100003d0005000000170001000000f707 31000000750100003d0005000000170001000000f707 - {e=>0,a=>-76,d=>3,j=>0,l=>0,c=>-1,k=>-27,h=>7,b=>6,g=>6,f=>-1,i=>-4} b4fffffffe000000380006000000270000000000e500 b4fffffffe000000380006000000270000000000e500 b4fffffffe000000380006000000270000000000e500 b4fffffffe000000380006000000270000000000e500 - {e=>5,a=>62,d=>2,j=>1,l=>2,c=>-1,k=>-59,h=>5,b=>1,g=>5,f=>-2,i=>-2} 3e000000b9000000350005000000350001000000c502 3e000000b9000000350005000000350001000000c502 3e000000b9000000350005000000350001000000c502 3e000000b9000000350005000000350001000000c502 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>61,m=>-3,d=>-2,j=>7,l=>1,c=>3,k=>-49,h=>5,b=>0,g=>1,f=>-3,i=>0} 3d000000980100002f0001000000050007000000cf29 3d000000980100002f0001000000050007000000cf29 3d000000980100002f0001000000050007000000cf29 3d000000980100002f0001000000050007000000cf29 - {e=>6,a=>115,m=>-1,d=>0,j=>4,l=>2,c=>-2,k=>32,h=>7,b=>4,g=>3,f=>-2,i=>-2} 7300000034000000360003000000370004000000203a 7300000034000000360003000000370004000000203a 7300000034000000360003000000370004000000203a 7300000034000000360003000000370004000000203a - {e=>7,a=>74,m=>3,d=>-1,j=>6,l=>5,c=>-1,k=>34,h=>3,b=>4,g=>4,f=>2,i=>2} 4a000000fc010000170004000000130006000000221d 4a000000fc010000170004000000130006000000221d 4a000000fc010000170004000000130006000000221d 4a000000fc010000170004000000130006000000221d - {e=>3,a=>91,m=>-3,d=>0,j=>2,l=>7,c=>-1,k=>-86,h=>5,b=>0,g=>1,f=>-1,i=>-4} 5b000000380000003b0001000000250002000000aa2f 5b000000380000003b0001000000250002000000aa2f 5b000000380000003b0001000000250002000000aa2f 5b000000380000003b0001000000250002000000aa2f - {e=>4,a=>-16,m=>0,d=>2,j=>2,l=>3,c=>-2,k=>-46,h=>7,b=>2,g=>0,f=>-1,i=>-3} f0ffffffb20000003c00000000002f0002000000d203 f0ffffffb20000003c00000000002f0002000000d203 f0ffffffb20000003c00000000002f0002000000d203 f0ffffffb20000003c00000000002f0002000000d203 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>1,n=>1,a=>-128,m=>-2,d=>2,j=>3,l=>2,c=>3,k=>-47,h=>3,b=>1,g=>0,f=>1,i=>0} 80ffffff99000000090000000000030003000000d13201000000 80ffffff99000000090000000000030003000000d13201000000 80ffffff99000000090000000000030003000000d13201000000 80ffffff99000000090000000000030003000000d13201000000 - {e=>0,n=>3,a=>39,m=>2,d=>2,j=>2,l=>2,c=>-2,k=>-60,h=>2,b=>2,g=>1,f=>-4,i=>-1} 27000000b20000002000010000003a0002000000c41203000000 27000000b20000002000010000003a0002000000c41203000000 27000000b20000002000010000003a0002000000c41203000000 27000000b20000002000010000003a0002000000c41203000000 - {e=>0,n=>7,a=>86,m=>-3,d=>-2,j=>4,l=>4,c=>-1,k=>24,h=>1,b=>4,g=>3,f=>-2,i=>3} 56000000bc010000300003000000190004000000182c07000000 56000000bc010000300003000000190004000000182c07000000 56000000bc010000300003000000190004000000182c07000000 56000000bc010000300003000000190004000000182c07000000 - {e=>3,n=>4,a=>-28,m=>2,d=>3,j=>2,l=>5,c=>0,k=>-23,h=>7,b=>2,g=>7,f=>1,i=>1} e4ffffffc20000000b00070000000f0002000000e91504000000 e4ffffffc20000000b00070000000f0002000000e91504000000 e4ffffffc20000000b00070000000f0002000000e91504000000 e4ffffffc20000000b00070000000f0002000000e91504000000 - {e=>3,n=>3,a=>-127,m=>-4,d=>-2,j=>6,l=>7,c=>0,k=>51,h=>2,b=>0,g=>5,f=>-3,i=>-2} 81ffffff800100002b0005000000320006000000332703000000 81ffffff800100002b0005000000320006000000332703000000 81ffffff800100002b0005000000320006000000332703000000 81ffffff800100002b0005000000320006000000332703000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>5,a=>-107,m=>2,d=>3,j=>1,l=>1,c=>-1,k=>88,h=>1,b=>3,g=>2,f=>3,o=>104,i=>2} 95fffffffb0000001a00020000001100010000005811050000006800 95fffffffb0000001a00020000001100010000005811050000006800 95fffffffb0000001a00020000001100010000005811050000006800 95fffffffb0000001a00020000001100010000005811050000006800 - {e=>1,n=>6,a=>84,m=>-1,d=>-2,j=>3,l=>7,c=>1,k=>29,h=>2,b=>3,g=>3,f=>-2,o=>30,i=>-3} 540000008b0100003100030000002a00030000001d3f060000001e00 540000008b0100003100030000002a00030000001d3f060000001e00 540000008b0100003100030000002a00030000001d3f060000001e00 540000008b0100003100030000002a00030000001d3f060000001e00 - {e=>3,n=>0,a=>79,m=>3,d=>-3,j=>2,l=>6,c=>1,k=>125,h=>1,b=>2,g=>3,f=>3,o=>59,i=>-1} 4f0000004a0100001b00030000003900020000007d1e000000003b00 4f0000004a0100001b00030000003900020000007d1e000000003b00 4f0000004a0100001b00030000003900020000007d1e000000003b00 4f0000004a0100001b00030000003900020000007d1e000000003b00 - {e=>7,n=>7,a=>112,m=>-1,d=>3,j=>4,l=>0,c=>1,k=>-29,h=>5,b=>4,g=>4,f=>-2,o=>130,i=>2} 70000000cc000000370004000000150004000000e338070000008200 70000000cc000000370004000000150004000000e338070000008200 70000000cc000000370004000000150004000000e338070000008200 70000000cc000000370004000000150004000000e338070000008200 - {e=>7,n=>0,a=>27,m=>-1,d=>2,j=>1,l=>6,c=>-2,k=>40,h=>4,b=>0,g=>5,f=>1,o=>182,i=>-4} 1b000000b00000000f0005000000240001000000283e00000000b600 1b000000b00000000f0005000000240001000000283e00000000b600 1b000000b00000000f0005000000240001000000283e00000000b600 1b000000b00000000f0005000000240001000000283e00000000b600 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; }; - {a=>3} 03000000 03000000 03000000 03000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>6} 06000000 06000000 06000000 06000000 - {a=>5} 05000000 05000000 05000000 05000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; }; - {a=>4,b=>-3} 2c000000 2c000000 2c000000 2c000000 - {a=>7,b=>-4} 27000000 27000000 27000000 27000000 - {a=>3,b=>-3} 2b000000 2b000000 2b000000 2b000000 - {a=>3,b=>-3} 2b000000 2b000000 2b000000 2b000000 - {a=>6,b=>-3} 2e000000 2e000000 2e000000 2e000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>3,a=>7,b=>-3} ef000000 ef000000 ef000000 ef000000 - {c=>-3,a=>7,b=>-3} 6f010000 6f010000 6f010000 6f010000 - {c=>-4,a=>0,b=>2} 10010000 10010000 10010000 10010000 - {c=>1,a=>0,b=>3} 58000000 58000000 58000000 58000000 - {c=>-1,a=>5,b=>-2} f5010000 f5010000 f5010000 f5010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>1,a=>5,b=>-2,d=>7} 7500000007 7500000007 7500000007 7500000007 - {c=>-3,a=>0,b=>-4,d=>1} 6001000001 6001000001 6001000001 6001000001 - {c=>-4,a=>4,b=>-2,d=>0} 3401000000 3401000000 3401000000 3401000000 - {c=>0,a=>3,b=>3,d=>5} 1b00000005 1b00000005 1b00000005 1b00000005 - {c=>-4,a=>6,b=>2,d=>3} 1601000003 1601000003 1601000003 1601000003 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; }; - {e=>'UE6',c=>2,a=>1,b=>-1,d=>1} b90000000106000000 b90000000106000000 b90000000106000000 b90000000106000000 - {e=>'UE7',c=>-2,a=>1,b=>1,d=>0} 890100000007000000 890100000007000000 890100000007000000 890100000007000000 - {e=>'UE7',c=>-4,a=>0,b=>-1,d=>4} 380100000407000000 380100000407000000 380100000407000000 380100000407000000 - {e=>'UE0',c=>-3,a=>4,b=>-4,d=>0} 640100000000000000 640100000000000000 640100000000000000 640100000000000000 - {e=>'UE5',c=>-3,a=>5,b=>-3,d=>0} 6d0100000005000000 6d0100000005000000 6d0100000005000000 6d0100000005000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; }; - {e=>'UE2',c=>-2,a=>7,b=>1,d=>7,f=>1} 8f010000070a000000 8f010000070a000000 8f010000070a000000 8f010000070a000000 - {e=>'UE3',c=>0,a=>4,b=>2,d=>4,f=>2} 140000000413000000 140000000413000000 140000000413000000 140000000413000000 - {e=>'UE2',c=>3,a=>4,b=>0,d=>0,f=>0} c40000000002000000 c40000000002000000 c40000000002000000 c40000000002000000 - {e=>'UE1',c=>0,a=>3,b=>1,d=>0,f=>6} 0b0000000031000000 0b0000000031000000 0b0000000031000000 0b0000000031000000 - {e=>'UE2',c=>3,a=>1,b=>2,d=>3,f=>5} d1000000032a000000 d1000000032a000000 d1000000032a000000 d1000000032a000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; }; - {e=>'UE1',c=>3,a=>2,b=>-3,d=>0,f=>0} ea0000000001000000 ea0000000001000000 ea0000000001000000 ea0000000001000000 - {e=>'UE6',c=>-2,a=>7,b=>-2,d=>7,f=>1} b7010000070e000000 b7010000070e000000 b7010000070e000000 b7010000070e000000 - {e=>'UE2',c=>-2,a=>5,b=>2,d=>6,f=>5} 95010000062a000000 95010000062a000000 95010000062a000000 95010000062a000000 - {e=>'UE1',c=>2,a=>1,b=>-1,d=>4,f=>6} b90000000431000000 b90000000431000000 b90000000431000000 b90000000431000000 - {e=>'UE1',c=>3,a=>1,b=>-3,d=>3,f=>4} e90000000321000000 e90000000321000000 e90000000321000000 e90000000321000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>'UE6',c=>-2,a=>0,g=>0,b=>3,d=>6,f=>4} 98010000062600000000 98010000062600000000 98010000062600000000 98010000062600000000 - {e=>'UE4',c=>2,a=>2,g=>2,b=>-4,d=>7,f=>3} a2000000071c00000002 a2000000071c00000002 a2000000071c00000002 a2000000071c00000002 - {e=>'UE2',c=>-3,a=>4,g=>6,b=>3,d=>6,f=>7} 5c010000063a00000006 5c010000063a00000006 5c010000063a00000006 5c010000063a00000006 - {e=>'UE6',c=>-1,a=>7,g=>6,b=>2,d=>7,f=>6} d7010000073600000006 d7010000073600000006 d7010000073600000006 d7010000073600000006 - {e=>'UE3',c=>-2,a=>7,g=>2,b=>-3,d=>4,f=>7} af010000043b00000002 af010000043b00000002 af010000043b00000002 af010000043b00000002 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>'UE2',a=>3,d=>3,c=>1,h=>2,b=>-1,g=>0,f=>2} 7b000000031200000010 7b000000031200000010 7b000000031200000010 7b000000031200000010 - {e=>'UE5',a=>4,d=>6,c=>1,h=>-4,b=>-1,g=>5,f=>4} 7c000000062500000025 7c000000062500000025 7c000000062500000025 7c000000062500000025 - {e=>'UE0',a=>7,d=>2,c=>3,h=>1,b=>-3,g=>2,f=>1} ef00000002080000000a ef00000002080000000a ef00000002080000000a ef00000002080000000a - {e=>'UE0',a=>1,d=>7,c=>-3,h=>-1,b=>1,g=>3,f=>4} 4901000007200000003b 4901000007200000003b 4901000007200000003b 4901000007200000003b - {e=>'UE1',a=>5,d=>3,c=>3,h=>2,b=>-4,g=>2,f=>5} e5000000032900000012 e5000000032900000012 e5000000032900000012 e5000000032900000012 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; }; - {e=>'UE2',a=>0,d=>0,c=>-4,h=>1,b=>1,g=>0,f=>7,i=>'SEM2'} 08010000003a0000000806000000 08010000003a0000000806000000 08010000003a0000000806000000 08010000003a0000000806000000 - {e=>'UE1',a=>1,d=>7,c=>-1,h=>3,b=>2,g=>2,f=>5,i=>'SEM1'} d101000007290000001a07000000 d101000007290000001a07000000 d101000007290000001a07000000 d101000007290000001a07000000 - {e=>'UE7',a=>7,d=>3,c=>-4,h=>3,b=>-3,g=>0,f=>5,i=>'SE0'} 2f010000032f0000001800000000 2f010000032f0000001800000000 2f010000032f0000001800000000 2f010000032f0000001800000000 - {e=>'UE6',a=>6,d=>1,c=>3,h=>0,b=>1,g=>5,f=>5,i=>'SEM2'} ce000000012e0000000506000000 ce000000012e0000000506000000 ce000000012e0000000506000000 ce000000012e0000000506000000 - {e=>'UE6',a=>5,d=>4,c=>3,h=>1,b=>3,g=>2,f=>4,i=>'SE1'} dd00000004260000000a01000000 dd00000004260000000a01000000 dd00000004260000000a01000000 dd00000004260000000a01000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; }; - {e=>'UE4',a=>6,d=>2,j=>117,c=>2,h=>-4,b=>2,g=>0,f=>5,i=>'SE2'} 96000000022c000000200200000075 96000000022c000000200200000075 96000000022c000000200200000075 96000000022c000000200200000075 - {e=>'UE1',a=>3,d=>4,j=>126,c=>3,h=>0,b=>-4,g=>2,f=>5,i=>'SEM3'} e3000000042900000002050000007e e3000000042900000002050000007e e3000000042900000002050000007e e3000000042900000002050000007e - {e=>'UE4',a=>4,d=>7,j=>-36,c=>1,h=>-4,b=>-3,g=>7,f=>2,i=>'SEM2'} 6c00000007140000002706000000dc 6c00000007140000002706000000dc 6c00000007140000002706000000dc 6c00000007140000002706000000dc - {e=>'UE5',a=>1,d=>1,j=>61,c=>-3,h=>-3,b=>-4,g=>4,f=>6,i=>'SEM1'} 6101000001350000002c070000003d 6101000001350000002c070000003d 6101000001350000002c070000003d 6101000001350000002c070000003d - {e=>'UE6',a=>3,d=>1,j=>-91,c=>1,h=>-1,b=>-1,g=>6,f=>1,i=>'SEM4'} 7b000000010e0000003e04000000a5 7b000000010e0000003e04000000a5 7b000000010e0000003e04000000a5 7b000000010e0000003e04000000a5 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; }; - {e=>'UE4',a=>1,d=>0,j=>-29,c=>-3,k=>3,h=>3,b=>-1,g=>1,f=>7,i=>'SE2'} 79010000003c0000001902000000e303 79010000003c0000001902000000e303 79010000003c0000001902000000e303 79010000003c0000001902000000e303 - {e=>'UE7',a=>0,d=>6,j=>9,c=>1,k=>7,h=>2,b=>-4,g=>3,f=>4,i=>'SEM4'} 60000000062700000013040000000907 60000000062700000013040000000907 60000000062700000013040000000907 60000000062700000013040000000907 - {e=>'UE2',a=>0,d=>2,j=>101,c=>2,k=>1,h=>-4,b=>1,g=>7,f=>1,i=>'SEM2'} 88000000020a00000027060000006501 88000000020a00000027060000006501 88000000020a00000027060000006501 88000000020a00000027060000006501 - {e=>'UE3',a=>0,d=>6,j=>74,c=>1,k=>1,h=>-1,b=>1,g=>4,f=>2,i=>'SE0'} 4800000006130000003c000000004a01 4800000006130000003c000000004a01 4800000006130000003c000000004a01 4800000006130000003c000000004a01 - {e=>'UE1',a=>4,d=>7,j=>-119,c=>-3,k=>4,h=>1,b=>2,g=>7,f=>4,i=>'SEM4'} 5401000007210000000f040000008904 5401000007210000000f040000008904 5401000007210000000f040000008904 5401000007210000000f040000008904 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>'UE0',a=>5,d=>7,j=>-122,l=>-3,c=>-4,k=>2,h=>1,b=>-1,g=>4,f=>3,i=>'SEM3'} 3d01000007180000000c05000000862a 3d01000007180000000c05000000862a 3d01000007180000000c05000000862a 3d01000007180000000c05000000862a - {e=>'UE0',a=>1,d=>3,j=>-34,l=>-4,c=>-3,k=>6,h=>-3,b=>-2,g=>1,f=>7,i=>'SEM1'} 7101000003380000002907000000de26 7101000003380000002907000000de26 7101000003380000002907000000de26 7101000003380000002907000000de26 - {e=>'UE1',a=>1,d=>0,j=>86,l=>-4,c=>-3,k=>3,h=>2,b=>1,g=>0,f=>0,i=>'SEM3'} 49010000000100000010050000005623 49010000000100000010050000005623 49010000000100000010050000005623 49010000000100000010050000005623 - {e=>'UE1',a=>2,d=>1,j=>-57,l=>-1,c=>3,k=>5,h=>1,b=>-2,g=>7,f=>0,i=>'SE3'} f200000001010000000f03000000c73d f200000001010000000f03000000c73d f200000001010000000f03000000c73d f200000001010000000f03000000c73d - {e=>'UE7',a=>3,d=>1,j=>111,l=>-4,c=>-4,k=>6,h=>-3,b=>-2,g=>4,f=>3,i=>'SEM2'} 33010000011f0000002c060000006f26 33010000011f0000002c060000006f26 33010000011f0000002c060000006f26 33010000011f0000002c060000006f26 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>'UE3',a=>5,m=>4,d=>5,j=>-36,l=>2,c=>0,k=>4,h=>0,b=>-3,g=>5,f=>0,i=>'SEM1'} 2d00000005030000000507000000dc1404000000 2d00000005030000000507000000dc1404000000 2d00000005030000000507000000dc1404000000 2d00000005030000000507000000dc1404000000 - {e=>'UE7',a=>5,m=>0,d=>6,j=>-48,l=>3,c=>1,k=>3,h=>2,b=>-3,g=>2,f=>0,i=>'SE1'} 6d00000006070000001201000000d01b00000000 6d00000006070000001201000000d01b00000000 6d00000006070000001201000000d01b00000000 6d00000006070000001201000000d01b00000000 - {e=>'UE5',a=>6,m=>5,d=>5,j=>-112,l=>1,c=>-4,k=>5,h=>0,b=>2,g=>1,f=>3,i=>'SEM2'} 16010000051d0000000106000000900d05000000 16010000051d0000000106000000900d05000000 16010000051d0000000106000000900d05000000 16010000051d0000000106000000900d05000000 - {e=>'UE3',a=>5,m=>5,d=>5,j=>-44,l=>-2,c=>-3,k=>0,h=>1,b=>-1,g=>4,f=>3,i=>'SE0'} 7d010000051b0000000c00000000d43005000000 7d010000051b0000000c00000000d43005000000 7d010000051b0000000c00000000d43005000000 7d010000051b0000000c00000000d43005000000 - {e=>'UE1',a=>5,m=>1,d=>7,j=>-106,l=>0,c=>-2,k=>7,h=>-4,b=>2,g=>0,f=>0,i=>'SE2'} 9501000007010000002002000000960701000000 9501000007010000002002000000960701000000 9501000007010000002002000000960701000000 9501000007010000002002000000960701000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>'UE2',n=>245,a=>6,m=>3,d=>5,j=>21,l=>-3,c=>3,k=>3,h=>-2,b=>1,g=>3,f=>4,i=>'SE2'} ce00000005220000003302000000152b03000000f5 ce00000005220000003302000000152b03000000f5 ce00000005220000003302000000152b03000000f5 ce00000005220000003302000000152b03000000f5 - {e=>'UE4',n=>39,a=>4,m=>1,d=>1,j=>-106,l=>0,c=>-3,k=>5,h=>2,b=>1,g=>6,f=>2,i=>'SEM1'} 4c0100000114000000160700000096050100000027 4c0100000114000000160700000096050100000027 4c0100000114000000160700000096050100000027 4c0100000114000000160700000096050100000027 - {e=>'UE2',n=>222,a=>0,m=>0,d=>4,j=>23,l=>0,c=>-2,k=>3,h=>3,b=>-1,g=>2,f=>1,i=>'SE1'} b8010000040a0000001a01000000170300000000de b8010000040a0000001a01000000170300000000de b8010000040a0000001a01000000170300000000de b8010000040a0000001a01000000170300000000de - {e=>'UE1',n=>14,a=>6,m=>6,d=>0,j=>-82,l=>3,c=>-4,k=>6,h=>-2,b=>-4,g=>4,f=>7,i=>'SEM4'} 2601000000390000003404000000ae1e060000000e 2601000000390000003404000000ae1e060000000e 2601000000390000003404000000ae1e060000000e 2601000000390000003404000000ae1e060000000e - {e=>'UE5',n=>1,a=>2,m=>5,d=>2,j=>-12,l=>1,c=>-3,k=>4,h=>-3,b=>1,g=>0,f=>7,i=>'SEM3'} 4a010000023d0000002805000000f40c0500000001 4a010000023d0000002805000000f40c0500000001 4a010000023d0000002805000000f40c0500000001 4a010000023d0000002805000000f40c0500000001 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; }; - {a=>13,b=>3} 0d03000000 0d03000000 0d03000000 0d03000000 - {a=>-11,b=>1} f501000000 f501000000 f501000000 f501000000 - {a=>5,b=>2} 0502000000 0502000000 0502000000 0502000000 - {a=>-65,b=>1} bf01000000 bf01000000 bf01000000 bf01000000 - {a=>51,b=>3} 3303000000 3303000000 3303000000 3303000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; }; - {c=>3,a=>-27,b=>4} e51c000000 e51c000000 e51c000000 e51c000000 - {c=>-2,a=>123,b=>4} 7b34000000 7b34000000 7b34000000 7b34000000 - {c=>-4,a=>-38,b=>5} da25000000 da25000000 da25000000 da25000000 - {c=>-3,a=>4,b=>0} 0428000000 0428000000 0428000000 0428000000 - {c=>0,a=>-104,b=>5} 9805000000 9805000000 9805000000 9805000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>-116,b=>0,d=>-2} 8cb0010000 8cb0010000 8cb0010000 8cb0010000 - {c=>-3,a=>-33,b=>2,d=>-3} df6a010000 df6a010000 df6a010000 df6a010000 - {c=>-2,a=>-99,b=>7,d=>2} 9db7000000 9db7000000 9db7000000 9db7000000 - {c=>-4,a=>103,b=>5,d=>-3} 6765010000 6765010000 6765010000 6765010000 - {c=>1,a=>111,b=>5,d=>0} 6f0d000000 6f0d000000 6f0d000000 6f0d000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>0,a=>17,b=>1,d=>-4} 110101000001 110101000001 110101000001 110101000001 - {e=>4,c=>-2,a=>-99,b=>6,d=>-1} 9df601000004 9df601000004 9df601000004 9df601000004 - {e=>3,c=>-1,a=>-98,b=>4,d=>-1} 9efc01000003 9efc01000003 9efc01000003 9efc01000003 - {e=>1,c=>-2,a=>-9,b=>2,d=>3} f7f200000001 f7f200000001 f7f200000001 f7f200000001 - {e=>5,c=>0,a=>-8,b=>0,d=>0} f80000000005 f80000000005 f80000000005 f80000000005 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>5,c=>-1,a=>-128,b=>0,d=>2,f=>'UE2'} 80b80000000502000000 80b80000000502000000 80b80000000502000000 80b80000000502000000 - {e=>1,c=>-1,a=>19,b=>6,d=>3,f=>'UE0'} 13fe0000000100000000 13fe0000000100000000 13fe0000000100000000 13fe0000000100000000 - {e=>3,c=>1,a=>-34,b=>1,d=>-3,f=>'UE2'} de490100000302000000 de490100000302000000 de490100000302000000 de490100000302000000 - {e=>3,c=>3,a=>-85,b=>7,d=>1,f=>'UE4'} ab5f0000000304000000 ab5f0000000304000000 ab5f0000000304000000 ab5f0000000304000000 - {e=>3,c=>-3,a=>14,b=>3,d=>1,f=>'UE7'} 0e6b0000000307000000 0e6b0000000307000000 0e6b0000000307000000 0e6b0000000307000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>3,c=>-2,a=>-81,g=>5,b=>0,d=>3,f=>'UE1'} aff00000000329000000 aff00000000329000000 aff00000000329000000 aff00000000329000000 - {e=>5,c=>3,a=>-48,g=>4,b=>5,d=>-3,f=>'UE0'} d05d0100000520000000 d05d0100000520000000 d05d0100000520000000 d05d0100000520000000 - {e=>6,c=>1,a=>72,g=>3,b=>3,d=>-3,f=>'UE4'} 484b010000061c000000 484b010000061c000000 484b010000061c000000 484b010000061c000000 - {e=>5,c=>-4,a=>-73,g=>6,b=>4,d=>-1,f=>'UE3'} b7e40100000533000000 b7e40100000533000000 b7e40100000533000000 b7e40100000533000000 - {e=>4,c=>-4,a=>33,g=>5,b=>5,d=>-3,f=>'UE6'} 2165010000042e000000 2165010000042e000000 2165010000042e000000 2165010000042e000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>4,c=>2,a=>15,g=>5,b=>7,d=>1,f=>'UE1'} 0f570000000429000000 0f570000000429000000 0f570000000429000000 0f570000000429000000 - {e=>6,c=>-2,a=>117,g=>0,b=>0,d=>-2,f=>'UE3'} 75b00100000603000000 75b00100000603000000 75b00100000603000000 75b00100000603000000 - {e=>3,c=>2,a=>70,g=>7,b=>0,d=>2,f=>'UE0'} 46900000000338000000 46900000000338000000 46900000000338000000 46900000000338000000 - {e=>7,c=>-3,a=>95,g=>4,b=>2,d=>-2,f=>'UE7'} 5faa0100000727000000 5faa0100000727000000 5faa0100000727000000 5faa0100000727000000 - {e=>3,c=>0,a=>42,g=>4,b=>7,d=>2,f=>'UE4'} 2a870000000324000000 2a870000000324000000 2a870000000324000000 2a870000000324000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>-95,d=>0,c=>-2,h=>7,b=>4,g=>4,f=>'UE1'} a134000000052100000007 a134000000052100000007 a134000000052100000007 a134000000052100000007 - {e=>0,a=>79,d=>3,c=>3,h=>4,b=>2,g=>0,f=>'UE4'} 4fda000000000400000004 4fda000000000400000004 4fda000000000400000004 4fda000000000400000004 - {e=>4,a=>23,d=>0,c=>3,h=>5,b=>5,g=>0,f=>'UE4'} 171d000000040400000005 171d000000040400000005 171d000000040400000005 171d000000040400000005 - {e=>5,a=>-48,d=>2,c=>1,h=>4,b=>4,g=>4,f=>'UE1'} d08c000000052100000004 d08c000000052100000004 d08c000000052100000004 d08c000000052100000004 - {e=>1,a=>-57,d=>3,c=>1,h=>5,b=>0,g=>0,f=>'UE3'} c7c8000000010300000005 c7c8000000010300000005 c7c8000000010300000005 c7c8000000010300000005 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>5,a=>-24,d=>-4,c=>3,h=>2,b=>2,g=>3,f=>'UE2',i=>-2} e81a010000051a00000032 e81a010000051a00000032 e81a010000051a00000032 e81a010000051a00000032 - {e=>7,a=>25,d=>0,c=>3,h=>3,b=>2,g=>3,f=>'UE0',i=>0} 191a000000071800000003 191a000000071800000003 191a000000071800000003 191a000000071800000003 - {e=>3,a=>31,d=>2,c=>-1,h=>1,b=>1,g=>4,f=>'UE5',i=>1} 1fb9000000032500000009 1fb9000000032500000009 1fb9000000032500000009 1fb9000000032500000009 - {e=>4,a=>21,d=>-2,c=>1,h=>4,b=>6,g=>6,f=>'UE4',i=>-2} 158e010000043400000034 158e010000043400000034 158e010000043400000034 158e010000043400000034 - {e=>6,a=>106,d=>-1,c=>1,h=>0,b=>0,g=>4,f=>'UE5',i=>-2} 6ac8010000062500000030 6ac8010000062500000030 6ac8010000062500000030 6ac8010000062500000030 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>-92,d=>-4,j=>'SEM4',c=>1,h=>0,b=>7,g=>4,f=>'UE4',i=>0} a40f01000005240000000004000000 a40f01000005240000000004000000 a40f01000005240000000004000000 a40f01000005240000000004000000 - {e=>6,a=>89,d=>1,j=>'SEM4',c=>0,h=>5,b=>5,g=>1,f=>'UE7',i=>2} 5945000000060f0000001504000000 5945000000060f0000001504000000 5945000000060f0000001504000000 5945000000060f0000001504000000 - {e=>2,a=>15,d=>0,j=>'SEM2',c=>1,h=>1,b=>4,g=>3,f=>'UE7',i=>0} 0f0c000000021f0000000106000000 0f0c000000021f0000000106000000 0f0c000000021f0000000106000000 0f0c000000021f0000000106000000 - {e=>3,a=>-2,d=>3,j=>'SEM2',c=>1,h=>1,b=>3,g=>4,f=>'UE7',i=>1} fecb00000003270000000906000000 fecb00000003270000000906000000 fecb00000003270000000906000000 fecb00000003270000000906000000 - {e=>5,a=>113,d=>0,j=>'SE2',c=>3,h=>5,b=>4,g=>5,f=>'UE2',i=>3} 711c000000052a0000001d02000000 711c000000052a0000001d02000000 711c000000052a0000001d02000000 711c000000052a0000001d02000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>-108,d=>-2,j=>'SE0',c=>3,k=>33,h=>1,b=>5,g=>1,f=>'UE4',i=>-2} 949d010000040c000000310000000021 949d010000040c000000310000000021 949d010000040c000000310000000021 949d010000040c000000310000000021 - {e=>5,a=>-119,d=>-4,j=>'SE1',c=>-2,k=>-4,h=>2,b=>0,g=>3,f=>'UE2',i=>-4} 8930010000051a0000002201000000fc 8930010000051a0000002201000000fc 8930010000051a0000002201000000fc 8930010000051a0000002201000000fc - {e=>7,a=>-38,d=>-4,j=>'SEM1',c=>1,k=>-5,h=>1,b=>7,g=>7,f=>'UE2',i=>1} da0f010000073a0000000907000000fb da0f010000073a0000000907000000fb da0f010000073a0000000907000000fb da0f010000073a0000000907000000fb - {e=>4,a=>-11,d=>0,j=>'SEM3',c=>3,k=>-84,h=>3,b=>6,g=>3,f=>'UE3',i=>2} f51e000000041b0000001305000000ac f51e000000041b0000001305000000ac f51e000000041b0000001305000000ac f51e000000041b0000001305000000ac - {e=>0,a=>27,d=>2,j=>'SE2',c=>1,k=>-54,h=>0,b=>4,g=>1,f=>'UE4',i=>3} 1b8c000000000c0000001802000000ca 1b8c000000000c0000001802000000ca 1b8c000000000c0000001802000000ca 1b8c000000000c0000001802000000ca = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>4,a=>-97,d=>3,j=>'SEM4',l=>0,c=>-2,k=>122,h=>3,b=>1,g=>1,f=>'UE3',i=>1} 9ff1000000040b0000000b040000007a00 9ff1000000040b0000000b040000007a00 9ff1000000040b0000000b040000007a00 9ff1000000040b0000000b040000007a00 - {e=>4,a=>-122,d=>3,j=>'SEM2',l=>1,c=>3,k=>50,h=>0,b=>4,g=>5,f=>'UE0',i=>-3} 86dc000000042800000028060000003201 86dc000000042800000028060000003201 86dc000000042800000028060000003201 86dc000000042800000028060000003201 - {e=>1,a=>-106,d=>0,j=>'SEM1',l=>1,c=>3,k=>-92,h=>5,b=>3,g=>7,f=>'UE1',i=>1} 961b00000001390000000d07000000a401 961b00000001390000000d07000000a401 961b00000001390000000d07000000a401 961b00000001390000000d07000000a401 - {e=>5,a=>-50,d=>0,j=>'SE1',l=>0,c=>-2,k=>62,h=>7,b=>3,g=>6,f=>'UE5',i=>0} ce33000000053500000007010000003e00 ce33000000053500000007010000003e00 ce33000000053500000007010000003e00 ce33000000053500000007010000003e00 - {e=>5,a=>100,d=>0,j=>'SE3',l=>3,c=>-4,k=>67,h=>1,b=>1,g=>7,f=>'UE3',i=>1} 6421000000053b00000009030000004303 6421000000053b00000009030000004303 6421000000053b00000009030000004303 6421000000053b00000009030000004303 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>18,m=>-4,d=>-2,j=>'SE0',l=>1,c=>-3,k=>-93,h=>5,b=>2,g=>6,f=>'UE1',i=>3} 12aa01000003310000001d00000000a321 12aa01000003310000001d00000000a321 12aa01000003310000001d00000000a321 12aa01000003310000001d00000000a321 - {e=>3,a=>-79,m=>-4,d=>0,j=>'SEM1',l=>5,c=>3,k=>20,h=>2,b=>5,g=>5,f=>'UE2',i=>-3} b11d000000032a0000002a070000001425 b11d000000032a0000002a070000001425 b11d000000032a0000002a070000001425 b11d000000032a0000002a070000001425 - {e=>1,a=>16,m=>-1,d=>2,j=>'SEM3',l=>5,c=>1,k=>116,h=>3,b=>7,g=>5,f=>'UE1',i=>-3} 108f00000001290000002b05000000743d 108f00000001290000002b05000000743d 108f00000001290000002b05000000743d 108f00000001290000002b05000000743d - {e=>3,a=>33,m=>-2,d=>0,j=>'SE0',l=>4,c=>3,k=>98,h=>3,b=>1,g=>6,f=>'UE6',i=>0} 2119000000033600000003000000006234 2119000000033600000003000000006234 2119000000033600000003000000006234 2119000000033600000003000000006234 - {e=>7,a=>-14,m=>-4,d=>-2,j=>'SE2',l=>7,c=>1,k=>-62,h=>0,b=>2,g=>0,f=>'UE2',i=>-1} f28a01000007020000003802000000c227 f28a01000007020000003802000000c227 f28a01000007020000003802000000c227 f28a01000007020000003802000000c227 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>2,n=>0,a=>-27,m=>-4,d=>-3,j=>'SEM3',l=>3,c=>3,k=>23,h=>3,b=>6,g=>7,f=>'UE4',i=>-3} e55e010000023c0000002b05000000172300000000 e55e010000023c0000002b05000000172300000000 e55e010000023c0000002b05000000172300000000 e55e010000023c0000002b05000000172300000000 - {e=>4,n=>7,a=>-105,m=>-4,d=>-4,j=>'SE0',l=>6,c=>2,k=>99,h=>3,b=>1,g=>6,f=>'UE0',i=>2} 971101000004300000001300000000632607000000 971101000004300000001300000000632607000000 971101000004300000001300000000632607000000 971101000004300000001300000000632607000000 - {e=>4,n=>4,a=>96,m=>-3,d=>-3,j=>'SEM2',l=>4,c=>-1,k=>7,h=>7,b=>3,g=>5,f=>'UE3',i=>1} 607b010000042b0000000f06000000072c04000000 607b010000042b0000000f06000000072c04000000 607b010000042b0000000f06000000072c04000000 607b010000042b0000000f06000000072c04000000 - {e=>0,n=>4,a=>-116,m=>-1,d=>-4,j=>'SE1',l=>1,c=>0,k=>-79,h=>4,b=>7,g=>6,f=>'UE4',i=>-2} 8c0701000000340000003401000000b13904000000 8c0701000000340000003401000000b13904000000 8c0701000000340000003401000000b13904000000 8c0701000000340000003401000000b13904000000 - {e=>3,n=>0,a=>75,m=>0,d=>1,j=>'SEM4',l=>3,c=>-1,k=>-22,h=>4,b=>7,g=>7,f=>'UE1',i=>-2} 4b7f00000003390000003404000000ea0300000000 4b7f00000003390000003404000000ea0300000000 4b7f00000003390000003404000000ea0300000000 4b7f00000003390000003404000000ea0300000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>0,a=>-125,m=>1,d=>-1,j=>'SE1',l=>4,c=>3,k=>75,h=>2,b=>4,g=>2,f=>'UE4',o=>207,i=>1} 83dc01000007140000000a010000004b0c00000000cf 83dc01000007140000000a010000004b0c00000000cf 83dc01000007140000000a010000004b0c00000000cf 83dc01000007140000000a010000004b0c00000000cf - {e=>5,n=>5,a=>123,m=>2,d=>2,j=>'SEM4',l=>0,c=>-1,k=>-99,h=>5,b=>0,g=>6,f=>'UE2',o=>139,i=>0} 7bb8000000053200000005040000009d10050000008b 7bb8000000053200000005040000009d10050000008b 7bb8000000053200000005040000009d10050000008b 7bb8000000053200000005040000009d10050000008b - {e=>4,n=>3,a=>11,m=>-1,d=>-1,j=>'SE1',l=>7,c=>-1,k=>-112,h=>3,b=>4,g=>6,f=>'UE7',o=>200,i=>-2} 0bfc01000004370000003301000000903f03000000c8 0bfc01000004370000003301000000903f03000000c8 0bfc01000004370000003301000000903f03000000c8 0bfc01000004370000003301000000903f03000000c8 - {e=>3,n=>1,a=>-24,m=>1,d=>1,j=>'SE3',l=>4,c=>1,k=>14,h=>1,b=>5,g=>4,f=>'UE3',o=>226,i=>1} e84d000000032300000009030000000e0c01000000e2 e84d000000032300000009030000000e0c01000000e2 e84d000000032300000009030000000e0c01000000e2 e84d000000032300000009030000000e0c01000000e2 - {e=>1,n=>3,a=>-40,m=>-4,d=>3,j=>'SE0',l=>2,c=>3,k=>-119,h=>2,b=>6,g=>1,f=>'UE3',o=>233,i=>0} d8de000000010b0000000200000000892203000000e9 d8de000000010b0000000200000000892203000000e9 d8de000000010b0000000200000000892203000000e9 d8de000000010b0000000200000000892203000000e9 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; }; - {a=>66,b=>2} 420002000000 420002000000 420002000000 420002000000 - {a=>47,b=>3} 2f0003000000 2f0003000000 2f0003000000 2f0003000000 - {a=>34,b=>7} 220007000000 220007000000 220007000000 220007000000 - {a=>-104,b=>2} 98ff02000000 98ff02000000 98ff02000000 98ff02000000 - {a=>43,b=>2} 2b0002000000 2b0002000000 2b0002000000 2b0002000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; }; - {c=>1,a=>3,b=>3} 03000b000000 03000b000000 03000b000000 03000b000000 - {c=>-2,a=>65,b=>7} 410037000000 410037000000 410037000000 410037000000 - {c=>-2,a=>41,b=>1} 290031000000 290031000000 290031000000 290031000000 - {c=>2,a=>111,b=>5} 6f0015000000 6f0015000000 6f0015000000 6f0015000000 - {c=>-2,a=>11,b=>1} 0b0031000000 0b0031000000 0b0031000000 0b0031000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>121,b=>6,d=>-2} 79008e010000 79008e010000 79008e010000 79008e010000 - {c=>2,a=>-66,b=>7,d=>-3} beff57010000 beff57010000 beff57010000 beff57010000 - {c=>3,a=>-37,b=>3,d=>1} dbff5b000000 dbff5b000000 dbff5b000000 dbff5b000000 - {c=>-1,a=>-22,b=>6,d=>-3} eaff7e010000 eaff7e010000 eaff7e010000 eaff7e010000 - {c=>-1,a=>-107,b=>1,d=>-2} 95ffb9010000 95ffb9010000 95ffb9010000 95ffb9010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>3,a=>113,b=>7,d=>2} 71009f00000002 71009f00000002 71009f00000002 71009f00000002 - {e=>3,c=>2,a=>104,b=>0,d=>-2} 68009001000003 68009001000003 68009001000003 68009001000003 - {e=>4,c=>-4,a=>91,b=>2,d=>-1} 5b00e201000004 5b00e201000004 5b00e201000004 5b00e201000004 - {e=>1,c=>0,a=>-67,b=>3,d=>0} bdff0300000001 bdff0300000001 bdff0300000001 bdff0300000001 - {e=>6,c=>-2,a=>-125,b=>5,d=>-2} 83ffb501000006 83ffb501000006 83ffb501000006 83ffb501000006 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>-4,a=>63,b=>1,d=>-3,f=>'UE7'} 3f00610100000407000000 3f00610100000407000000 3f00610100000407000000 3f00610100000407000000 - {e=>2,c=>2,a=>20,b=>1,d=>-4,f=>'UE1'} 1400110100000201000000 1400110100000201000000 1400110100000201000000 1400110100000201000000 - {e=>6,c=>-3,a=>-51,b=>5,d=>1,f=>'UE1'} cdff6d0000000601000000 cdff6d0000000601000000 cdff6d0000000601000000 cdff6d0000000601000000 - {e=>6,c=>0,a=>82,b=>2,d=>0,f=>'UE0'} 5200020000000600000000 5200020000000600000000 5200020000000600000000 5200020000000600000000 - {e=>5,c=>-4,a=>32,b=>4,d=>0,f=>'UE6'} 2000240000000506000000 2000240000000506000000 2000240000000506000000 2000240000000506000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>0,c=>-4,a=>-51,g=>5,b=>5,d=>1,f=>'UE0'} cdff650000000028000000 cdff650000000028000000 cdff650000000028000000 cdff650000000028000000 - {e=>3,c=>-3,a=>51,g=>5,b=>3,d=>1,f=>'UE7'} 33006b000000032f000000 33006b000000032f000000 33006b000000032f000000 33006b000000032f000000 - {e=>2,c=>-3,a=>-58,g=>5,b=>3,d=>3,f=>'UE3'} c6ffeb000000022b000000 c6ffeb000000022b000000 c6ffeb000000022b000000 c6ffeb000000022b000000 - {e=>5,c=>1,a=>-74,g=>7,b=>3,d=>-2,f=>'UE3'} b6ff8b010000053b000000 b6ff8b010000053b000000 b6ff8b010000053b000000 b6ff8b010000053b000000 - {e=>3,c=>1,a=>90,g=>5,b=>1,d=>3,f=>'UE6'} 5a00c9000000032e000000 5a00c9000000032e000000 5a00c9000000032e000000 5a00c9000000032e000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>7,c=>-4,a=>20,g=>5,b=>1,d=>2,f=>'UE0'} 1400a10000000728000000 1400a10000000728000000 1400a10000000728000000 1400a10000000728000000 - {e=>3,c=>-3,a=>78,g=>5,b=>4,d=>2,f=>'UE5'} 4e00ac000000032d000000 4e00ac000000032d000000 4e00ac000000032d000000 4e00ac000000032d000000 - {e=>6,c=>3,a=>-109,g=>0,b=>6,d=>2,f=>'UE4'} 93ff9e0000000604000000 93ff9e0000000604000000 93ff9e0000000604000000 93ff9e0000000604000000 - {e=>5,c=>0,a=>92,g=>2,b=>4,d=>1,f=>'UE1'} 5c00440000000511000000 5c00440000000511000000 5c00440000000511000000 5c00440000000511000000 - {e=>6,c=>2,a=>-108,g=>4,b=>7,d=>-1,f=>'UE4'} 94ffd70100000624000000 94ffd70100000624000000 94ffd70100000624000000 94ffd70100000624000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>8,d=>-1,c=>-4,h=>6,b=>1,g=>5,f=>'UE6'} 0800e1010000032e00000006 0800e1010000032e00000006 0800e1010000032e00000006 0800e1010000032e00000006 - {e=>4,a=>118,d=>1,c=>0,h=>2,b=>3,g=>1,f=>'UE6'} 760043000000040e00000002 760043000000040e00000002 760043000000040e00000002 760043000000040e00000002 - {e=>7,a=>27,d=>-4,c=>2,h=>1,b=>4,g=>3,f=>'UE2'} 1b0014010000071a00000001 1b0014010000071a00000001 1b0014010000071a00000001 1b0014010000071a00000001 - {e=>0,a=>91,d=>-2,c=>3,h=>3,b=>5,g=>1,f=>'UE6'} 5b009d010000000e00000003 5b009d010000000e00000003 5b009d010000000e00000003 5b009d010000000e00000003 - {e=>2,a=>70,d=>-3,c=>1,h=>6,b=>6,g=>5,f=>'UE4'} 46004e010000022c00000006 46004e010000022c00000006 46004e010000022c00000006 46004e010000022c00000006 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>-26,d=>1,c=>-1,h=>0,b=>3,g=>0,f=>'UE4',i=>-4} e6ff7b000000020400000020 e6ff7b000000020400000020 e6ff7b000000020400000020 e6ff7b000000020400000020 - {e=>0,a=>70,d=>3,c=>0,h=>3,b=>0,g=>5,f=>'UE0',i=>1} 4600c000000000280000000b 4600c000000000280000000b 4600c000000000280000000b 4600c000000000280000000b - {e=>1,a=>17,d=>3,c=>-4,h=>3,b=>1,g=>1,f=>'UE4',i=>-1} 1100e1000000010c0000003b 1100e1000000010c0000003b 1100e1000000010c0000003b 1100e1000000010c0000003b - {e=>2,a=>39,d=>1,c=>1,h=>0,b=>1,g=>0,f=>'UE1',i=>0} 270049000000020100000000 270049000000020100000000 270049000000020100000000 270049000000020100000000 - {e=>6,a=>-65,d=>-2,c=>-1,h=>2,b=>6,g=>7,f=>'UE1',i=>-4} bfffbe010000063900000022 bfffbe010000063900000022 bfffbe010000063900000022 bfffbe010000063900000022 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>7,a=>118,d=>1,j=>'SE2',c=>1,h=>6,b=>3,g=>5,f=>'UE4',i=>2} 76004b000000072c0000001602000000 76004b000000072c0000001602000000 76004b000000072c0000001602000000 76004b000000072c0000001602000000 - {e=>0,a=>32,d=>2,j=>'SE3',c=>2,h=>5,b=>3,g=>7,f=>'UE1',i=>-4} 20009300000000390000002503000000 20009300000000390000002503000000 20009300000000390000002503000000 20009300000000390000002503000000 - {e=>2,a=>88,d=>0,j=>'SEM3',c=>1,h=>5,b=>2,g=>2,f=>'UE0',i=>1} 58000a00000002100000000d05000000 58000a00000002100000000d05000000 58000a00000002100000000d05000000 58000a00000002100000000d05000000 - {e=>7,a=>105,d=>-3,j=>'SE3',c=>0,h=>0,b=>3,g=>2,f=>'UE0',i=>-2} 69004301000007100000003003000000 69004301000007100000003003000000 69004301000007100000003003000000 69004301000007100000003003000000 - {e=>4,a=>-56,d=>-2,j=>'SE0',c=>-3,h=>4,b=>1,g=>4,f=>'UE4',i=>2} c8ffa901000004240000001400000000 c8ffa901000004240000001400000000 c8ffa901000004240000001400000000 c8ffa901000004240000001400000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>0,a=>-104,d=>-4,j=>'SE0',c=>-2,k=>8,h=>1,b=>4,g=>6,f=>'UE1',i=>1} 98ff340100000031000000090000000008 98ff340100000031000000090000000008 98ff340100000031000000090000000008 98ff340100000031000000090000000008 - {e=>2,a=>-127,d=>-1,j=>'SE0',c=>0,k=>-15,h=>5,b=>7,g=>0,f=>'UE1',i=>-1} 81ffc701000002010000003d00000000f1 81ffc701000002010000003d00000000f1 81ffc701000002010000003d00000000f1 81ffc701000002010000003d00000000f1 - {e=>0,a=>47,d=>2,j=>'SEM2',c=>-4,k=>-44,h=>0,b=>7,g=>0,f=>'UE3',i=>-3} 2f00a700000000030000002806000000d4 2f00a700000000030000002806000000d4 2f00a700000000030000002806000000d4 2f00a700000000030000002806000000d4 - {e=>7,a=>116,d=>-1,j=>'SEM3',c=>-3,k=>-14,h=>3,b=>5,g=>1,f=>'UE7',i=>2} 7400ed010000070f0000001305000000f2 7400ed010000070f0000001305000000f2 7400ed010000070f0000001305000000f2 7400ed010000070f0000001305000000f2 - {e=>7,a=>45,d=>-1,j=>'SE3',c=>-4,k=>65,h=>3,b=>2,g=>6,f=>'UE0',i=>1} 2d00e201000007300000000b0300000041 2d00e201000007300000000b0300000041 2d00e201000007300000000b0300000041 2d00e201000007300000000b0300000041 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>1,a=>-38,d=>0,j=>'SEM4',l=>1,c=>3,k=>122,h=>0,b=>3,g=>6,f=>'UE0',i=>-4} daff1b000000013000000020040000007a01 daff1b000000013000000020040000007a01 daff1b000000013000000020040000007a01 daff1b000000013000000020040000007a01 - {e=>6,a=>-120,d=>-2,j=>'SE0',l=>0,c=>2,k=>-45,h=>4,b=>5,g=>6,f=>'UE7',i=>-1} 88ff9501000006370000003c00000000d300 88ff9501000006370000003c00000000d300 88ff9501000006370000003c00000000d300 88ff9501000006370000003c00000000d300 - {e=>2,a=>115,d=>3,j=>'SEM4',l=>2,c=>-1,k=>-24,h=>4,b=>3,g=>1,f=>'UE2',i=>-3} 7300fb000000020a0000002c04000000e802 7300fb000000020a0000002c04000000e802 7300fb000000020a0000002c04000000e802 7300fb000000020a0000002c04000000e802 - {e=>2,a=>-120,d=>2,j=>'SEM3',l=>5,c=>-3,k=>-38,h=>3,b=>5,g=>5,f=>'UE0',i=>0} 88ffad00000002280000000305000000da05 88ffad00000002280000000305000000da05 88ffad00000002280000000305000000da05 88ffad00000002280000000305000000da05 - {e=>1,a=>-3,d=>3,j=>'SEM4',l=>6,c=>3,k=>-72,h=>4,b=>1,g=>3,f=>'UE4',i=>-3} fdffd9000000011c0000002c04000000b806 fdffd9000000011c0000002c04000000b806 fdffd9000000011c0000002c04000000b806 fdffd9000000011c0000002c04000000b806 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>-115,m=>-1,d=>1,j=>'SE1',l=>5,c=>3,k=>34,h=>4,b=>3,g=>5,f=>'UE3',i=>-1} 8dff5b000000002b0000003c01000000223d 8dff5b000000002b0000003c01000000223d 8dff5b000000002b0000003c01000000223d 8dff5b000000002b0000003c01000000223d - {e=>7,a=>101,m=>-3,d=>2,j=>'SE2',l=>7,c=>2,k=>33,h=>5,b=>4,g=>7,f=>'UE5',i=>1} 650094000000073d0000000d02000000212f 650094000000073d0000000d02000000212f 650094000000073d0000000d02000000212f 650094000000073d0000000d02000000212f - {e=>4,a=>75,m=>-2,d=>-1,j=>'SE0',l=>6,c=>-4,k=>-42,h=>0,b=>5,g=>5,f=>'UE2',i=>-1} 4b00e5010000042a0000003800000000d636 4b00e5010000042a0000003800000000d636 4b00e5010000042a0000003800000000d636 4b00e5010000042a0000003800000000d636 - {e=>4,a=>124,m=>-2,d=>1,j=>'SE0',l=>2,c=>2,k=>-11,h=>2,b=>2,g=>2,f=>'UE5',i=>-1} 7c005200000004150000003a00000000f532 7c005200000004150000003a00000000f532 7c005200000004150000003a00000000f532 7c005200000004150000003a00000000f532 - {e=>1,a=>39,m=>-2,d=>2,j=>'SE1',l=>5,c=>0,k=>86,h=>1,b=>1,g=>0,f=>'UE6',i=>-4} 270081000000010600000021010000005635 270081000000010600000021010000005635 270081000000010600000021010000005635 270081000000010600000021010000005635 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>6,a=>-69,m=>-2,d=>1,j=>'SE2',l=>5,c=>3,k=>-27,h=>7,b=>0,g=>7,f=>'UE6',i=>-2} bbff58000000053e0000003702000000e53506000000 bbff58000000053e0000003702000000e53506000000 bbff58000000053e0000003702000000e53506000000 bbff58000000053e0000003702000000e53506000000 - {e=>5,n=>2,a=>107,m=>-3,d=>0,j=>'SE1',l=>1,c=>-4,k=>111,h=>1,b=>0,g=>4,f=>'UE6',i=>-2} 6b0020000000052600000031010000006f2902000000 6b0020000000052600000031010000006f2902000000 6b0020000000052600000031010000006f2902000000 6b0020000000052600000031010000006f2902000000 - {e=>4,n=>7,a=>-128,m=>-2,d=>-1,j=>'SEM2',l=>7,c=>-4,k=>-5,h=>5,b=>5,g=>1,f=>'UE7',i=>-4} 80ffe5010000040f0000002506000000fb3707000000 80ffe5010000040f0000002506000000fb3707000000 80ffe5010000040f0000002506000000fb3707000000 80ffe5010000040f0000002506000000fb3707000000 - {e=>4,n=>4,a=>-44,m=>0,d=>3,j=>'SEM3',l=>3,c=>1,k=>-62,h=>4,b=>0,g=>2,f=>'UE5',i=>-1} d4ffc800000004150000003c05000000c20304000000 d4ffc800000004150000003c05000000c20304000000 d4ffc800000004150000003c05000000c20304000000 d4ffc800000004150000003c05000000c20304000000 - {e=>1,n=>3,a=>20,m=>0,d=>-3,j=>'SE0',l=>7,c=>3,k=>86,h=>1,b=>3,g=>2,f=>'UE2',i=>3} 14005b01000001120000001900000000560703000000 14005b01000001120000001900000000560703000000 14005b01000001120000001900000000560703000000 14005b01000001120000001900000000560703000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>7,a=>-36,m=>-2,d=>-4,j=>'SEM1',l=>5,c=>-4,k=>-30,h=>6,b=>2,g=>7,f=>'UE1',o=>11,i=>-1} dcff2201000000390000003e07000000e235070000000b dcff2201000000390000003e07000000e235070000000b dcff2201000000390000003e07000000e235070000000b dcff2201000000390000003e07000000e235070000000b - {e=>1,n=>0,a=>47,m=>2,d=>-1,j=>'SE1',l=>6,c=>2,k=>19,h=>7,b=>5,g=>3,f=>'UE5',o=>117,i=>-1} 2f00d5010000011d0000003f0100000013160000000075 2f00d5010000011d0000003f0100000013160000000075 2f00d5010000011d0000003f0100000013160000000075 2f00d5010000011d0000003f0100000013160000000075 - {e=>3,n=>4,a=>60,m=>-4,d=>0,j=>'SE0',l=>6,c=>-2,k=>48,h=>1,b=>2,g=>6,f=>'UE7',o=>42,i=>1} 3c0032000000033700000009000000003026040000002a 3c0032000000033700000009000000003026040000002a 3c0032000000033700000009000000003026040000002a 3c0032000000033700000009000000003026040000002a - {e=>1,n=>2,a=>116,m=>1,d=>-4,j=>'SEM2',l=>7,c=>3,k=>100,h=>0,b=>7,g=>2,f=>'UE3',o=>77,i=>-1} 74001f01000001130000003806000000640f020000004d 74001f01000001130000003806000000640f020000004d 74001f01000001130000003806000000640f020000004d 74001f01000001130000003806000000640f020000004d - {e=>1,n=>7,a=>-98,m=>-3,d=>2,j=>'SEM4',l=>5,c=>0,k=>27,h=>7,b=>1,g=>1,f=>'UE2',o=>35,i=>-2} 9eff81000000010a00000037040000001b2d0700000023 9eff81000000010a00000037040000001b2d0700000023 9eff81000000010a00000037040000001b2d0700000023 9eff81000000010a00000037040000001b2d0700000023 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; }; - {a=>54,b=>7} 3600000007000000 3600000007000000 3600000007000000 3600000007000000 - {a=>-14,b=>1} f2ffffff01000000 f2ffffff01000000 f2ffffff01000000 f2ffffff01000000 - {a=>8,b=>5} 0800000005000000 0800000005000000 0800000005000000 0800000005000000 - {a=>-128,b=>2} 80ffffff02000000 80ffffff02000000 80ffffff02000000 80ffffff02000000 - {a=>89,b=>7} 5900000007000000 5900000007000000 5900000007000000 5900000007000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>71,b=>4} 4700000024000000 4700000024000000 4700000024000000 4700000024000000 - {c=>-1,a=>22,b=>7} 160000003f000000 160000003f000000 160000003f000000 160000003f000000 - {c=>3,a=>6,b=>4} 060000001c000000 060000001c000000 060000001c000000 060000001c000000 - {c=>0,a=>5,b=>7} 0500000007000000 0500000007000000 0500000007000000 0500000007000000 - {c=>-1,a=>71,b=>5} 470000003d000000 470000003d000000 470000003d000000 470000003d000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>-39,b=>5,d=>-4} d9ffffff2d010000 d9ffffff2d010000 d9ffffff2d010000 d9ffffff2d010000 - {c=>1,a=>-63,b=>0,d=>-1} c1ffffffc8010000 c1ffffffc8010000 c1ffffffc8010000 c1ffffffc8010000 - {c=>3,a=>-125,b=>4,d=>1} 83ffffff5c000000 83ffffff5c000000 83ffffff5c000000 83ffffff5c000000 - {c=>-4,a=>-67,b=>6,d=>-1} bdffffffe6010000 bdffffffe6010000 bdffffffe6010000 bdffffffe6010000 - {c=>3,a=>-19,b=>7,d=>-4} edffffff1f010000 edffffff1f010000 edffffff1f010000 edffffff1f010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>-1,a=>96,b=>4,d=>1} 600000007c00000002 600000007c00000002 600000007c00000002 600000007c00000002 - {e=>0,c=>1,a=>-33,b=>2,d=>0} dfffffff0a00000000 dfffffff0a00000000 dfffffff0a00000000 dfffffff0a00000000 - {e=>1,c=>-3,a=>-123,b=>4,d=>-2} 85ffffffac01000001 85ffffffac01000001 85ffffffac01000001 85ffffffac01000001 - {e=>2,c=>0,a=>-85,b=>3,d=>2} abffffff8300000002 abffffff8300000002 abffffff8300000002 abffffff8300000002 - {e=>5,c=>2,a=>93,b=>6,d=>-3} 5d0000005601000005 5d0000005601000005 5d0000005601000005 5d0000005601000005 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>-2,a=>-117,b=>4,d=>2,f=>'UE6'} 8bffffffb40000000406000000 8bffffffb40000000406000000 8bffffffb40000000406000000 8bffffffb40000000406000000 - {e=>2,c=>-4,a=>78,b=>0,d=>-2,f=>'UE4'} 4e000000a00100000204000000 4e000000a00100000204000000 4e000000a00100000204000000 4e000000a00100000204000000 - {e=>3,c=>3,a=>-102,b=>0,d=>-3,f=>'UE2'} 9affffff580100000302000000 9affffff580100000302000000 9affffff580100000302000000 9affffff580100000302000000 - {e=>3,c=>-4,a=>10,b=>2,d=>0,f=>'UE1'} 0a000000220000000301000000 0a000000220000000301000000 0a000000220000000301000000 0a000000220000000301000000 - {e=>5,c=>3,a=>112,b=>7,d=>-2,f=>'UE1'} 700000009f0100000501000000 700000009f0100000501000000 700000009f0100000501000000 700000009f0100000501000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>4,c=>3,a=>77,g=>5,b=>3,d=>2,f=>'UE5'} 4d0000009b000000042d000000 4d0000009b000000042d000000 4d0000009b000000042d000000 4d0000009b000000042d000000 - {e=>7,c=>3,a=>5,g=>6,b=>2,d=>0,f=>'UE5'} 050000001a0000000735000000 050000001a0000000735000000 050000001a0000000735000000 050000001a0000000735000000 - {e=>7,c=>-2,a=>-24,g=>2,b=>0,d=>3,f=>'UE1'} e8fffffff00000000711000000 e8fffffff00000000711000000 e8fffffff00000000711000000 e8fffffff00000000711000000 - {e=>7,c=>3,a=>-1,g=>3,b=>6,d=>-2,f=>'UE6'} ffffffff9e010000071e000000 ffffffff9e010000071e000000 ffffffff9e010000071e000000 ffffffff9e010000071e000000 - {e=>1,c=>-1,a=>-111,g=>1,b=>4,d=>1,f=>'UE5'} 91ffffff7c000000010d000000 91ffffff7c000000010d000000 91ffffff7c000000010d000000 91ffffff7c000000010d000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>3,c=>-3,a=>50,g=>6,b=>2,d=>-3,f=>'UE2'} 320000006a0100000332000000 320000006a0100000332000000 320000006a0100000332000000 320000006a0100000332000000 - {e=>2,c=>-3,a=>47,g=>0,b=>3,d=>-3,f=>'UE1'} 2f0000006b0100000201000000 2f0000006b0100000201000000 2f0000006b0100000201000000 2f0000006b0100000201000000 - {e=>0,c=>0,a=>-123,g=>6,b=>6,d=>-3,f=>'UE4'} 85ffffff460100000034000000 85ffffff460100000034000000 85ffffff460100000034000000 85ffffff460100000034000000 - {e=>1,c=>-2,a=>-46,g=>4,b=>5,d=>0,f=>'UE6'} d2ffffff350000000126000000 d2ffffff350000000126000000 d2ffffff350000000126000000 d2ffffff350000000126000000 - {e=>4,c=>-4,a=>41,g=>7,b=>7,d=>-2,f=>'UE3'} 29000000a7010000043b000000 29000000a7010000043b000000 29000000a7010000043b000000 29000000a7010000043b000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>4,a=>-86,d=>3,c=>3,h=>2,b=>7,g=>7,f=>'UE7'} aaffffffdf000000043f00000002 aaffffffdf000000043f00000002 aaffffffdf000000043f00000002 aaffffffdf000000043f00000002 - {e=>4,a=>64,d=>2,c=>1,h=>5,b=>5,g=>4,f=>'UE0'} 400000008d000000042000000005 400000008d000000042000000005 400000008d000000042000000005 400000008d000000042000000005 - {e=>4,a=>-56,d=>2,c=>-4,h=>6,b=>5,g=>1,f=>'UE6'} c8ffffffa5000000040e00000006 c8ffffffa5000000040e00000006 c8ffffffa5000000040e00000006 c8ffffffa5000000040e00000006 - {e=>6,a=>78,d=>3,c=>-1,h=>3,b=>0,g=>6,f=>'UE4'} 4e000000f8000000063400000003 4e000000f8000000063400000003 4e000000f8000000063400000003 4e000000f8000000063400000003 - {e=>7,a=>-101,d=>0,c=>-2,h=>6,b=>1,g=>4,f=>'UE1'} 9bffffff31000000072100000006 9bffffff31000000072100000006 9bffffff31000000072100000006 9bffffff31000000072100000006 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>98,d=>1,c=>0,h=>3,b=>1,g=>0,f=>'UE5',i=>-4} 6200000041000000040500000023 6200000041000000040500000023 6200000041000000040500000023 6200000041000000040500000023 - {e=>6,a=>-56,d=>-2,c=>-4,h=>6,b=>4,g=>7,f=>'UE5',i=>2} c8ffffffa4010000063d00000016 c8ffffffa4010000063d00000016 c8ffffffa4010000063d00000016 c8ffffffa4010000063d00000016 - {e=>3,a=>-48,d=>0,c=>1,h=>5,b=>7,g=>5,f=>'UE1',i=>3} d0ffffff0f00000003290000001d d0ffffff0f00000003290000001d d0ffffff0f00000003290000001d d0ffffff0f00000003290000001d - {e=>0,a=>-14,d=>-1,c=>-4,h=>1,b=>1,g=>4,f=>'UE1',i=>1} f2ffffffe1010000002100000009 f2ffffffe1010000002100000009 f2ffffffe1010000002100000009 f2ffffffe1010000002100000009 - {e=>4,a=>-3,d=>3,c=>2,h=>1,b=>6,g=>6,f=>'UE4',i=>-2} fdffffffd6000000043400000031 fdffffffd6000000043400000031 fdffffffd6000000043400000031 fdffffffd6000000043400000031 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>7,a=>-125,d=>-1,j=>'SE0',c=>-3,h=>0,b=>3,g=>0,f=>'UE0',i=>0} 83ffffffeb01000007000000000000000000 83ffffffeb01000007000000000000000000 83ffffffeb01000007000000000000000000 83ffffffeb01000007000000000000000000 - {e=>4,a=>-83,d=>1,j=>'SEM1',c=>-2,h=>0,b=>5,g=>2,f=>'UE1',i=>3} adffffff7500000004110000001807000000 adffffff7500000004110000001807000000 adffffff7500000004110000001807000000 adffffff7500000004110000001807000000 - {e=>1,a=>118,d=>-1,j=>'SE0',c=>1,h=>6,b=>1,g=>5,f=>'UE7',i=>0} 76000000c9010000012f0000000600000000 76000000c9010000012f0000000600000000 76000000c9010000012f0000000600000000 76000000c9010000012f0000000600000000 - {e=>1,a=>-5,d=>-4,j=>'SE0',c=>0,h=>0,b=>6,g=>3,f=>'UE3',i=>2} fbffffff06010000011b0000001000000000 fbffffff06010000011b0000001000000000 fbffffff06010000011b0000001000000000 fbffffff06010000011b0000001000000000 - {e=>0,a=>70,d=>-3,j=>'SEM1',c=>0,h=>3,b=>5,g=>3,f=>'UE5',i=>2} 4600000045010000001d0000001307000000 4600000045010000001d0000001307000000 4600000045010000001d0000001307000000 4600000045010000001d0000001307000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>0,a=>2,d=>0,j=>'SE2',c=>2,k=>37,h=>4,b=>1,g=>0,f=>'UE2',i=>0} 02000000110000000002000000040200000025 02000000110000000002000000040200000025 02000000110000000002000000040200000025 02000000110000000002000000040200000025 - {e=>1,a=>68,d=>-2,j=>'SEM2',c=>-4,k=>-109,h=>0,b=>4,g=>2,f=>'UE5',i=>0} 44000000a40100000115000000000600000093 44000000a40100000115000000000600000093 44000000a40100000115000000000600000093 44000000a40100000115000000000600000093 - {e=>4,a=>117,d=>-4,j=>'SEM4',c=>2,k=>-10,h=>7,b=>3,g=>1,f=>'UE3',i=>-2} 7500000013010000040b0000003704000000f6 7500000013010000040b0000003704000000f6 7500000013010000040b0000003704000000f6 7500000013010000040b0000003704000000f6 - {e=>7,a=>-56,d=>-3,j=>'SE2',c=>3,k=>30,h=>7,b=>6,g=>5,f=>'UE5',i=>-1} c8ffffff5e010000072d0000003f020000001e c8ffffff5e010000072d0000003f020000001e c8ffffff5e010000072d0000003f020000001e c8ffffff5e010000072d0000003f020000001e - {e=>1,a=>-1,d=>-2,j=>'SEM1',c=>-3,k=>-71,h=>6,b=>6,g=>3,f=>'UE2',i=>-3} ffffffffae010000011a0000002e07000000b9 ffffffffae010000011a0000002e07000000b9 ffffffffae010000011a0000002e07000000b9 ffffffffae010000011a0000002e07000000b9 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>1,a=>26,d=>2,j=>'SEM1',l=>2,c=>-2,k=>-113,h=>2,b=>0,g=>0,f=>'UE7',i=>-3} 1a000000b000000001070000002a070000008f02 1a000000b000000001070000002a070000008f02 1a000000b000000001070000002a070000008f02 1a000000b000000001070000002a070000008f02 - {e=>2,a=>117,d=>-4,j=>'SE1',l=>6,c=>3,k=>-95,h=>1,b=>6,g=>4,f=>'UE0',i=>1} 750000001e01000002200000000901000000a106 750000001e01000002200000000901000000a106 750000001e01000002200000000901000000a106 750000001e01000002200000000901000000a106 - {e=>4,a=>69,d=>3,j=>'SE1',l=>7,c=>-3,k=>-103,h=>5,b=>4,g=>7,f=>'UE2',i=>-4} 45000000ec000000043a00000025010000009907 45000000ec000000043a00000025010000009907 45000000ec000000043a00000025010000009907 45000000ec000000043a00000025010000009907 - {e=>0,a=>66,d=>0,j=>'SEM1',l=>4,c=>-2,k=>-115,h=>0,b=>6,g=>2,f=>'UE6',i=>-1} 4200000036000000001600000038070000008d04 4200000036000000001600000038070000008d04 4200000036000000001600000038070000008d04 4200000036000000001600000038070000008d04 - {e=>0,a=>115,d=>3,j=>'SE3',l=>6,c=>-3,k=>-110,h=>4,b=>7,g=>6,f=>'UE3',i=>1} 73000000ef00000000330000000c030000009206 73000000ef00000000330000000c030000009206 73000000ef00000000330000000c030000009206 73000000ef00000000330000000c030000009206 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>20,m=>-3,d=>1,j=>'SE3',l=>5,c=>-3,k=>47,h=>7,b=>3,g=>2,f=>'UE7',i=>-4} 140000006b000000011700000027030000002f2d 140000006b000000011700000027030000002f2d 140000006b000000011700000027030000002f2d 140000006b000000011700000027030000002f2d - {e=>5,a=>113,m=>0,d=>-2,j=>'SE3',l=>3,c=>-4,k=>63,h=>2,b=>7,g=>2,f=>'UE2',i=>2} 71000000a7010000051200000012030000003f03 71000000a7010000051200000012030000003f03 71000000a7010000051200000012030000003f03 71000000a7010000051200000012030000003f03 - {e=>1,a=>58,m=>-1,d=>-1,j=>'SEM2',l=>1,c=>1,k=>4,h=>1,b=>2,g=>7,f=>'UE5',i=>-2} 3a000000ca010000013d00000031060000000439 3a000000ca010000013d00000031060000000439 3a000000ca010000013d00000031060000000439 3a000000ca010000013d00000031060000000439 - {e=>5,a=>101,m=>0,d=>3,j=>'SEM4',l=>6,c=>-2,k=>124,h=>5,b=>7,g=>0,f=>'UE0',i=>-1} 65000000f700000005000000003d040000007c06 65000000f700000005000000003d040000007c06 65000000f700000005000000003d040000007c06 65000000f700000005000000003d040000007c06 - {e=>1,a=>73,m=>-4,d=>-1,j=>'SEM1',l=>2,c=>1,k=>-19,h=>4,b=>0,g=>5,f=>'UE3',i=>-4} 49000000c8010000012b0000002407000000ed22 49000000c8010000012b0000002407000000ed22 49000000c8010000012b0000002407000000ed22 49000000c8010000012b0000002407000000ed22 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>1,n=>1,a=>-71,m=>-2,d=>0,j=>'SE1',l=>0,c=>-2,k=>60,h=>6,b=>4,g=>5,f=>'UE5',i=>-1} b9ffffff34000000012d0000003e010000003c3001000000 b9ffffff34000000012d0000003e010000003c3001000000 b9ffffff34000000012d0000003e010000003c3001000000 b9ffffff34000000012d0000003e010000003c3001000000 - {e=>7,n=>5,a=>-15,m=>-1,d=>0,j=>'SEM1',l=>5,c=>-2,k=>4,h=>2,b=>3,g=>3,f=>'UE0',i=>-3} f1ffffff3300000007180000002a07000000043d05000000 f1ffffff3300000007180000002a07000000043d05000000 f1ffffff3300000007180000002a07000000043d05000000 f1ffffff3300000007180000002a07000000043d05000000 - {e=>6,n=>3,a=>12,m=>1,d=>3,j=>'SE3',l=>4,c=>-4,k=>116,h=>6,b=>1,g=>4,f=>'UE2',i=>-2} 0c000000e100000006220000003603000000740c03000000 0c000000e100000006220000003603000000740c03000000 0c000000e100000006220000003603000000740c03000000 0c000000e100000006220000003603000000740c03000000 - {e=>5,n=>3,a=>42,m=>1,d=>-3,j=>'SE3',l=>4,c=>1,k=>-90,h=>4,b=>3,g=>6,f=>'UE3',i=>-1} 2a0000004b01000005330000003c03000000a60c03000000 2a0000004b01000005330000003c03000000a60c03000000 2a0000004b01000005330000003c03000000a60c03000000 2a0000004b01000005330000003c03000000a60c03000000 - {e=>7,n=>3,a=>55,m=>-2,d=>0,j=>'SE2',l=>0,c=>2,k=>-125,h=>4,b=>5,g=>7,f=>'UE7',i=>-4} 3700000015000000073f0000002402000000833003000000 3700000015000000073f0000002402000000833003000000 3700000015000000073f0000002402000000833003000000 3700000015000000073f0000002402000000833003000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>5,a=>111,m=>-1,d=>3,j=>'SE1',l=>5,c=>-1,k=>85,h=>5,b=>0,g=>4,f=>'UE7',o=>100,i=>2} 6f000000f800000007270000001501000000553d0500000064 6f000000f800000007270000001501000000553d0500000064 6f000000f800000007270000001501000000553d0500000064 6f000000f800000007270000001501000000553d0500000064 - {e=>3,n=>3,a=>68,m=>3,d=>-2,j=>'SE0',l=>2,c=>3,k=>30,h=>0,b=>6,g=>3,f=>'UE0',o=>140,i=>-1} 440000009e010000031800000038000000001e1a030000008c 440000009e010000031800000038000000001e1a030000008c 440000009e010000031800000038000000001e1a030000008c 440000009e010000031800000038000000001e1a030000008c - {e=>1,n=>2,a=>-1,m=>2,d=>1,j=>'SE0',l=>1,c=>3,k=>-56,h=>3,b=>0,g=>3,f=>'UE1',o=>96,i=>2} ffffffff5800000001190000001300000000c8110200000060 ffffffff5800000001190000001300000000c8110200000060 ffffffff5800000001190000001300000000c8110200000060 ffffffff5800000001190000001300000000c8110200000060 - {e=>7,n=>5,a=>26,m=>3,d=>1,j=>'SEM3',l=>5,c=>-1,k=>-127,h=>0,b=>4,g=>2,f=>'UE1',o=>99,i=>-3} 1a0000007c00000007110000002805000000811d0500000063 1a0000007c00000007110000002805000000811d0500000063 1a0000007c00000007110000002805000000811d0500000063 1a0000007c00000007110000002805000000811d0500000063 - {e=>1,n=>3,a=>-55,m=>0,d=>0,j=>'SEM1',l=>2,c=>1,k=>-1,h=>1,b=>3,g=>3,f=>'UE2',o=>164,i=>-4} c9ffffff0b000000011a0000002107000000ff0203000000a4 c9ffffff0b000000011a0000002107000000ff0203000000a4 c9ffffff0b000000011a0000002107000000ff0203000000a4 c9ffffff0b000000011a0000002107000000ff0203000000a4 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; }; - {a=>30,b=>3} 1e00000003000000 1e00000003000000 1e00000003000000 1e00000003000000 - {a=>-14,b=>4} f2ffffff04000000 f2ffffff04000000 f2ffffff04000000 f2ffffff04000000 - {a=>3,b=>2} 0300000002000000 0300000002000000 0300000002000000 0300000002000000 - {a=>98,b=>5} 6200000005000000 6200000005000000 6200000005000000 6200000005000000 - {a=>85,b=>3} 5500000003000000 5500000003000000 5500000003000000 5500000003000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; }; - {c=>-1,a=>-46,b=>6} d2ffffff3e000000 d2ffffff3e000000 d2ffffff3e000000 d2ffffff3e000000 - {c=>2,a=>-36,b=>5} dcffffff15000000 dcffffff15000000 dcffffff15000000 dcffffff15000000 - {c=>-4,a=>78,b=>7} 4e00000027000000 4e00000027000000 4e00000027000000 4e00000027000000 - {c=>-4,a=>65,b=>5} 4100000025000000 4100000025000000 4100000025000000 4100000025000000 - {c=>-1,a=>124,b=>3} 7c0000003b000000 7c0000003b000000 7c0000003b000000 7c0000003b000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>0,a=>45,b=>2,d=>1} 2d00000042000000 2d00000042000000 2d00000042000000 2d00000042000000 - {c=>0,a=>-85,b=>5,d=>0} abffffff05000000 abffffff05000000 abffffff05000000 abffffff05000000 - {c=>-3,a=>62,b=>0,d=>0} 3e00000028000000 3e00000028000000 3e00000028000000 3e00000028000000 - {c=>3,a=>52,b=>1,d=>1} 3400000059000000 3400000059000000 3400000059000000 3400000059000000 - {c=>-2,a=>17,b=>6,d=>-4} 1100000036010000 1100000036010000 1100000036010000 1100000036010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-1,a=>-49,b=>1,d=>-4} cfffffff3901000004 cfffffff3901000004 cfffffff3901000004 cfffffff3901000004 - {e=>5,c=>0,a=>127,b=>4,d=>0} 7f0000000400000005 7f0000000400000005 7f0000000400000005 7f0000000400000005 - {e=>3,c=>0,a=>28,b=>0,d=>3} 1c000000c000000003 1c000000c000000003 1c000000c000000003 1c000000c000000003 - {e=>3,c=>2,a=>42,b=>3,d=>-4} 2a0000001301000003 2a0000001301000003 2a0000001301000003 2a0000001301000003 - {e=>1,c=>3,a=>-60,b=>0,d=>-2} c4ffffff9801000001 c4ffffff9801000001 c4ffffff9801000001 c4ffffff9801000001 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>7,c=>3,a=>-108,b=>1,d=>-1,f=>'UE1'} 94ffffffd90100000701000000 94ffffffd90100000701000000 94ffffffd90100000701000000 94ffffffd90100000701000000 - {e=>6,c=>-2,a=>4,b=>1,d=>-4,f=>'UE2'} 04000000310100000602000000 04000000310100000602000000 04000000310100000602000000 04000000310100000602000000 - {e=>3,c=>-3,a=>79,b=>0,d=>-4,f=>'UE0'} 4f000000280100000300000000 4f000000280100000300000000 4f000000280100000300000000 4f000000280100000300000000 - {e=>2,c=>-2,a=>45,b=>0,d=>3,f=>'UE5'} 2d000000f00000000205000000 2d000000f00000000205000000 2d000000f00000000205000000 2d000000f00000000205000000 - {e=>4,c=>-1,a=>18,b=>7,d=>-1,f=>'UE2'} 12000000ff0100000402000000 12000000ff0100000402000000 12000000ff0100000402000000 12000000ff0100000402000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>5,c=>-1,a=>107,g=>7,b=>1,d=>-2,f=>'UE5'} 6b000000b9010000053d000000 6b000000b9010000053d000000 6b000000b9010000053d000000 6b000000b9010000053d000000 - {e=>0,c=>-1,a=>-57,g=>6,b=>7,d=>-4,f=>'UE2'} c7ffffff3f0100000032000000 c7ffffff3f0100000032000000 c7ffffff3f0100000032000000 c7ffffff3f0100000032000000 - {e=>1,c=>2,a=>9,g=>5,b=>7,d=>2,f=>'UE7'} 0900000097000000012f000000 0900000097000000012f000000 0900000097000000012f000000 0900000097000000012f000000 - {e=>3,c=>3,a=>-7,g=>4,b=>4,d=>2,f=>'UE5'} f9ffffff9c0000000325000000 f9ffffff9c0000000325000000 f9ffffff9c0000000325000000 f9ffffff9c0000000325000000 - {e=>7,c=>1,a=>-15,g=>6,b=>2,d=>2,f=>'UE0'} f1ffffff8a0000000730000000 f1ffffff8a0000000730000000 f1ffffff8a0000000730000000 f1ffffff8a0000000730000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-1,a=>-17,g=>2,b=>3,d=>-2,f=>'UE0'} efffffffbb0100000110000000 efffffffbb0100000110000000 efffffffbb0100000110000000 efffffffbb0100000110000000 - {e=>7,c=>-2,a=>6,g=>1,b=>0,d=>-3,f=>'UE6'} 0600000070010000070e000000 0600000070010000070e000000 0600000070010000070e000000 0600000070010000070e000000 - {e=>2,c=>3,a=>64,g=>4,b=>2,d=>2,f=>'UE1'} 400000009a0000000221000000 400000009a0000000221000000 400000009a0000000221000000 400000009a0000000221000000 - {e=>2,c=>1,a=>58,g=>6,b=>1,d=>1,f=>'UE5'} 3a000000490000000235000000 3a000000490000000235000000 3a000000490000000235000000 3a000000490000000235000000 - {e=>0,c=>1,a=>-124,g=>4,b=>2,d=>-1,f=>'UE4'} 84ffffffca0100000024000000 84ffffffca0100000024000000 84ffffffca0100000024000000 84ffffffca0100000024000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>5,d=>1,c=>-3,h=>0,b=>1,g=>2,f=>'UE1'} 0500000069000000051100000000 0500000069000000051100000000 0500000069000000051100000000 0500000069000000051100000000 - {e=>2,a=>-102,d=>-2,c=>-2,h=>5,b=>0,g=>1,f=>'UE6'} 9affffffb0010000020e00000005 9affffffb0010000020e00000005 9affffffb0010000020e00000005 9affffffb0010000020e00000005 - {e=>5,a=>65,d=>-4,c=>0,h=>7,b=>3,g=>2,f=>'UE7'} 4100000003010000051700000007 4100000003010000051700000007 4100000003010000051700000007 4100000003010000051700000007 - {e=>2,a=>-87,d=>3,c=>-1,h=>1,b=>7,g=>2,f=>'UE6'} a9ffffffff000000021600000001 a9ffffffff000000021600000001 a9ffffffff000000021600000001 a9ffffffff000000021600000001 - {e=>5,a=>-29,d=>2,c=>-4,h=>3,b=>6,g=>7,f=>'UE3'} e3ffffffa6000000053b00000003 e3ffffffa6000000053b00000003 e3ffffffa6000000053b00000003 e3ffffffa6000000053b00000003 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>-52,d=>-3,c=>2,h=>1,b=>4,g=>2,f=>'UE6',i=>3} ccffffff54010000011600000019 ccffffff54010000011600000019 ccffffff54010000011600000019 ccffffff54010000011600000019 - {e=>6,a=>-55,d=>-2,c=>2,h=>7,b=>1,g=>4,f=>'UE2',i=>-2} c9ffffff91010000062200000037 c9ffffff91010000062200000037 c9ffffff91010000062200000037 c9ffffff91010000062200000037 - {e=>3,a=>1,d=>-4,c=>3,h=>2,b=>6,g=>2,f=>'UE1',i=>0} 010000001e010000031100000002 010000001e010000031100000002 010000001e010000031100000002 010000001e010000031100000002 - {e=>7,a=>92,d=>1,c=>0,h=>3,b=>6,g=>4,f=>'UE3',i=>3} 5c0000004600000007230000001b 5c0000004600000007230000001b 5c0000004600000007230000001b 5c0000004600000007230000001b - {e=>4,a=>83,d=>-3,c=>-2,h=>6,b=>1,g=>6,f=>'UE5',i=>-3} 530000007101000004350000002e 530000007101000004350000002e 530000007101000004350000002e 530000007101000004350000002e = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>2,a=>104,d=>1,j=>'SEM2',c=>-3,h=>4,b=>3,g=>5,f=>'UE4',i=>3} 680000006b000000022c0000001c06000000 680000006b000000022c0000001c06000000 680000006b000000022c0000001c06000000 680000006b000000022c0000001c06000000 - {e=>5,a=>72,d=>-3,j=>'SE0',c=>2,h=>6,b=>2,g=>5,f=>'UE0',i=>0} 480000005201000005280000000600000000 480000005201000005280000000600000000 480000005201000005280000000600000000 480000005201000005280000000600000000 - {e=>4,a=>-114,d=>2,j=>'SE0',c=>-4,h=>4,b=>5,g=>7,f=>'UE7',i=>3} 8effffffa5000000043f0000001c00000000 8effffffa5000000043f0000001c00000000 8effffffa5000000043f0000001c00000000 8effffffa5000000043f0000001c00000000 - {e=>5,a=>-114,d=>3,j=>'SE1',c=>2,h=>2,b=>5,g=>2,f=>'UE1',i=>-2} 8effffffd500000005110000003201000000 8effffffd500000005110000003201000000 8effffffd500000005110000003201000000 8effffffd500000005110000003201000000 - {e=>7,a=>-75,d=>1,j=>'SEM3',c=>-3,h=>1,b=>7,g=>1,f=>'UE2',i=>0} b5ffffff6f000000070a0000000105000000 b5ffffff6f000000070a0000000105000000 b5ffffff6f000000070a0000000105000000 b5ffffff6f000000070a0000000105000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>2,a=>48,d=>-2,j=>'SE3',c=>3,k=>43,h=>4,b=>2,g=>2,f=>'UE5',i=>0} 300000009a010000021500000004030000002b 300000009a010000021500000004030000002b 300000009a010000021500000004030000002b 300000009a010000021500000004030000002b - {e=>6,a=>-50,d=>0,j=>'SE0',c=>-1,k=>78,h=>6,b=>5,g=>5,f=>'UE6',i=>-3} ceffffff3d000000062e0000002e000000004e ceffffff3d000000062e0000002e000000004e ceffffff3d000000062e0000002e000000004e ceffffff3d000000062e0000002e000000004e - {e=>4,a=>67,d=>0,j=>'SEM2',c=>3,k=>-96,h=>7,b=>3,g=>1,f=>'UE3',i=>2} 430000001b000000040b0000001706000000a0 430000001b000000040b0000001706000000a0 430000001b000000040b0000001706000000a0 430000001b000000040b0000001706000000a0 - {e=>5,a=>-6,d=>1,j=>'SE2',c=>0,k=>69,h=>4,b=>5,g=>0,f=>'UE0',i=>-4} faffffff450000000500000000240200000045 faffffff450000000500000000240200000045 faffffff450000000500000000240200000045 faffffff450000000500000000240200000045 - {e=>7,a=>-120,d=>1,j=>'SE0',c=>-1,k=>92,h=>1,b=>5,g=>5,f=>'UE3',i=>2} 88ffffff7d000000072b00000011000000005c 88ffffff7d000000072b00000011000000005c 88ffffff7d000000072b00000011000000005c 88ffffff7d000000072b00000011000000005c = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>3,a=>-102,d=>-2,j=>'SEM4',l=>7,c=>-3,k=>-44,h=>3,b=>3,g=>7,f=>'UE6',i=>0} 9affffffab010000033e0000000304000000d407 9affffffab010000033e0000000304000000d407 9affffffab010000033e0000000304000000d407 9affffffab010000033e0000000304000000d407 - {e=>6,a=>15,d=>1,j=>'SE1',l=>1,c=>2,k=>-19,h=>5,b=>7,g=>1,f=>'UE6',i=>-2} 0f00000057000000060e0000003501000000ed01 0f00000057000000060e0000003501000000ed01 0f00000057000000060e0000003501000000ed01 0f00000057000000060e0000003501000000ed01 - {e=>2,a=>-49,d=>-1,j=>'SEM3',l=>3,c=>-2,k=>75,h=>0,b=>4,g=>7,f=>'UE3',i=>-3} cffffffff4010000023b00000028050000004b03 cffffffff4010000023b00000028050000004b03 cffffffff4010000023b00000028050000004b03 cffffffff4010000023b00000028050000004b03 - {e=>6,a=>-49,d=>1,j=>'SEM2',l=>3,c=>3,k=>-128,h=>7,b=>5,g=>0,f=>'UE1',i=>2} cfffffff5d000000060100000017060000008003 cfffffff5d000000060100000017060000008003 cfffffff5d000000060100000017060000008003 cfffffff5d000000060100000017060000008003 - {e=>3,a=>-61,d=>0,j=>'SEM1',l=>1,c=>1,k=>6,h=>0,b=>1,g=>3,f=>'UE0',i=>-2} c3ffffff09000000031800000030070000000601 c3ffffff09000000031800000030070000000601 c3ffffff09000000031800000030070000000601 c3ffffff09000000031800000030070000000601 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>101,m=>1,d=>3,j=>'SEM4',l=>0,c=>3,k=>115,h=>2,b=>1,g=>3,f=>'UE0',i=>-3} 65000000d900000001180000002a040000007308 65000000d900000001180000002a040000007308 65000000d900000001180000002a040000007308 65000000d900000001180000002a040000007308 - {e=>4,a=>-15,m=>1,d=>-3,j=>'SE2',l=>6,c=>-3,k=>-105,h=>6,b=>3,g=>5,f=>'UE5',i=>1} f1ffffff6b010000042d0000000e02000000970e f1ffffff6b010000042d0000000e02000000970e f1ffffff6b010000042d0000000e02000000970e f1ffffff6b010000042d0000000e02000000970e - {e=>3,a=>111,m=>-1,d=>1,j=>'SE0',l=>6,c=>-1,k=>-84,h=>3,b=>4,g=>0,f=>'UE4',i=>-1} 6f0000007c00000003040000003b00000000ac3e 6f0000007c00000003040000003b00000000ac3e 6f0000007c00000003040000003b00000000ac3e 6f0000007c00000003040000003b00000000ac3e - {e=>7,a=>-11,m=>3,d=>-4,j=>'SEM1',l=>3,c=>0,k=>-99,h=>0,b=>4,g=>4,f=>'UE4',i=>-3} f5ffffff04010000072400000028070000009d1b f5ffffff04010000072400000028070000009d1b f5ffffff04010000072400000028070000009d1b f5ffffff04010000072400000028070000009d1b - {e=>4,a=>-69,m=>-3,d=>-2,j=>'SEM3',l=>2,c=>0,k=>94,h=>2,b=>4,g=>3,f=>'UE3',i=>2} bbffffff84010000041b00000012050000005e2a bbffffff84010000041b00000012050000005e2a bbffffff84010000041b00000012050000005e2a bbffffff84010000041b00000012050000005e2a = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>4,a=>-5,m=>-1,d=>-3,j=>'SE0',l=>4,c=>-3,k=>70,h=>7,b=>6,g=>4,f=>'UE5',i=>-3} fbffffff6e01000005250000002f00000000463c04000000 fbffffff6e01000005250000002f00000000463c04000000 fbffffff6e01000005250000002f00000000463c04000000 fbffffff6e01000005250000002f00000000463c04000000 - {e=>7,n=>6,a=>108,m=>-3,d=>1,j=>'SEM3',l=>5,c=>-3,k=>-4,h=>3,b=>0,g=>6,f=>'UE6',i=>-2} 6c0000006800000007360000003305000000fc2d06000000 6c0000006800000007360000003305000000fc2d06000000 6c0000006800000007360000003305000000fc2d06000000 6c0000006800000007360000003305000000fc2d06000000 - {e=>3,n=>7,a=>-39,m=>-2,d=>3,j=>'SEM2',l=>2,c=>-4,k=>59,h=>1,b=>0,g=>7,f=>'UE5',i=>-4} d9ffffffe0000000033d00000021060000003b3207000000 d9ffffffe0000000033d00000021060000003b3207000000 d9ffffffe0000000033d00000021060000003b3207000000 d9ffffffe0000000033d00000021060000003b3207000000 - {e=>2,n=>0,a=>-64,m=>1,d=>1,j=>'SE1',l=>0,c=>2,k=>123,h=>0,b=>7,g=>7,f=>'UE7',i=>1} c0ffffff57000000023f00000008010000007b0800000000 c0ffffff57000000023f00000008010000007b0800000000 c0ffffff57000000023f00000008010000007b0800000000 c0ffffff57000000023f00000008010000007b0800000000 - {e=>5,n=>7,a=>-49,m=>-2,d=>-3,j=>'SE2',l=>0,c=>0,k=>95,h=>1,b=>5,g=>6,f=>'UE1',i=>-1} cfffffff45010000053100000039020000005f3007000000 cfffffff45010000053100000039020000005f3007000000 cfffffff45010000053100000039020000005f3007000000 cfffffff45010000053100000039020000005f3007000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>7,a=>-65,m=>-2,d=>-3,j=>'SEM3',l=>0,c=>0,k=>67,h=>5,b=>3,g=>6,f=>'UE7',o=>184,i=>3} bfffffff4301000006370000001d05000000433007000000b8 bfffffff4301000006370000001d05000000433007000000b8 bfffffff4301000006370000001d05000000433007000000b8 bfffffff4301000006370000001d05000000433007000000b8 - {e=>5,n=>0,a=>80,m=>-2,d=>0,j=>'SEM2',l=>4,c=>-3,k=>18,h=>7,b=>4,g=>5,f=>'UE5',o=>3,i=>1} 500000002c000000052d0000000f0600000012340000000003 500000002c000000052d0000000f0600000012340000000003 500000002c000000052d0000000f0600000012340000000003 500000002c000000052d0000000f0600000012340000000003 - {e=>5,n=>0,a=>89,m=>-1,d=>-4,j=>'SEM4',l=>6,c=>2,k=>-48,h=>0,b=>2,g=>2,f=>'UE7',o=>146,i=>2} 590000001201000005170000001004000000d03e0000000092 590000001201000005170000001004000000d03e0000000092 590000001201000005170000001004000000d03e0000000092 590000001201000005170000001004000000d03e0000000092 - {e=>5,n=>6,a=>-3,m=>-1,d=>0,j=>'SE1',l=>1,c=>0,k=>72,h=>1,b=>3,g=>4,f=>'UE2',o=>92,i=>2} fdffffff03000000052200000011010000004839060000005c fdffffff03000000052200000011010000004839060000005c fdffffff03000000052200000011010000004839060000005c fdffffff03000000052200000011010000004839060000005c - {e=>3,n=>5,a=>-96,m=>-4,d=>3,j=>'SE1',l=>5,c=>-4,k=>-39,h=>0,b=>3,g=>3,f=>'UE4',o=>240,i=>-2} a0ffffffe3000000031c0000003001000000d92505000000f0 a0ffffffe3000000031c0000003001000000d92505000000f0 a0ffffffe3000000031c0000003001000000d92505000000f0 a0ffffffe3000000031c0000003001000000d92505000000f0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; }; - {a=>3} 03000000 03000000 03000000 03000000 - {a=>4} 04000000 04000000 04000000 04000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>2} 02000000 02000000 02000000 02000000 - {a=>0} 00000000 00000000 00000000 00000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; }; - {a=>5,b=>2} 15000000 15000000 15000000 15000000 - {a=>6,b=>-2} 36000000 36000000 36000000 36000000 - {a=>6,b=>3} 1e000000 1e000000 1e000000 1e000000 - {a=>7,b=>3} 1f000000 1f000000 1f000000 1f000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>-4,a=>2,b=>-1} 3a010000 3a010000 3a010000 3a010000 - {c=>2,a=>0,b=>2} 90000000 90000000 90000000 90000000 - {c=>-3,a=>7,b=>-4} 67010000 67010000 67010000 67010000 - {c=>2,a=>3,b=>1} 8b000000 8b000000 8b000000 8b000000 - {c=>-4,a=>0,b=>-3} 28010000 28010000 28010000 28010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>2,a=>4,b=>0,d=>3} 840000000300 840000000300 840000000300 840000000300 - {c=>-4,a=>2,b=>2,d=>5} 120100000500 120100000500 120100000500 120100000500 - {c=>-3,a=>2,b=>-3,d=>7} 6a0100000700 6a0100000700 6a0100000700 6a0100000700 - {c=>1,a=>7,b=>-4,d=>1} 670000000100 670000000100 670000000100 670000000100 - {c=>-2,a=>2,b=>3,d=>3} 9a0100000300 9a0100000300 9a0100000300 9a0100000300 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; }; - {e=>'UE6',c=>-4,a=>5,b=>-3,d=>1} 2d010000010006000000 2d010000010006000000 2d010000010006000000 2d010000010006000000 - {e=>'UE5',c=>1,a=>6,b=>2,d=>4} 56000000040005000000 56000000040005000000 56000000040005000000 56000000040005000000 - {e=>'UE6',c=>-1,a=>0,b=>-4,d=>7} e0010000070006000000 e0010000070006000000 e0010000070006000000 e0010000070006000000 - {e=>'UE1',c=>-4,a=>4,b=>-3,d=>4} 2c010000040001000000 2c010000040001000000 2c010000040001000000 2c010000040001000000 - {e=>'UE1',c=>-2,a=>2,b=>2,d=>4} 92010000040001000000 92010000040001000000 92010000040001000000 92010000040001000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; }; - {e=>'UE1',c=>-4,a=>4,b=>-1,d=>3,f=>3} 3c010000030019000000 3c010000030019000000 3c010000030019000000 3c010000030019000000 - {e=>'UE3',c=>-4,a=>2,b=>-3,d=>0,f=>0} 2a010000000003000000 2a010000000003000000 2a010000000003000000 2a010000000003000000 - {e=>'UE0',c=>0,a=>3,b=>-3,d=>5,f=>0} 2b000000050000000000 2b000000050000000000 2b000000050000000000 2b000000050000000000 - {e=>'UE7',c=>1,a=>3,b=>-3,d=>3,f=>4} 6b000000030027000000 6b000000030027000000 6b000000030027000000 6b000000030027000000 - {e=>'UE7',c=>-2,a=>2,b=>3,d=>6,f=>5} 9a01000006002f000000 9a01000006002f000000 9a01000006002f000000 9a01000006002f000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; }; - {e=>'UE4',c=>2,a=>1,b=>-4,d=>1,f=>3} a100000001001c000000 a100000001001c000000 a100000001001c000000 a100000001001c000000 - {e=>'UE7',c=>0,a=>6,b=>-4,d=>2,f=>7} 2600000002003f000000 2600000002003f000000 2600000002003f000000 2600000002003f000000 - {e=>'UE6',c=>3,a=>4,b=>-2,d=>5,f=>2} f4000000050016000000 f4000000050016000000 f4000000050016000000 f4000000050016000000 - {e=>'UE0',c=>-3,a=>5,b=>-2,d=>5,f=>3} 75010000050018000000 75010000050018000000 75010000050018000000 75010000050018000000 - {e=>'UE1',c=>0,a=>6,b=>0,d=>3,f=>4} 06000000030021000000 06000000030021000000 06000000030021000000 06000000030021000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>'UE4',c=>-2,a=>3,g=>3,b=>-4,d=>7,f=>5} a301000007002c0000000300 a301000007002c0000000300 a301000007002c0000000300 a301000007002c0000000300 - {e=>'UE2',c=>0,a=>1,g=>7,b=>0,d=>6,f=>2} 010000000600120000000700 010000000600120000000700 010000000600120000000700 010000000600120000000700 - {e=>'UE2',c=>-1,a=>3,g=>7,b=>3,d=>4,f=>2} db0100000400120000000700 db0100000400120000000700 db0100000400120000000700 db0100000400120000000700 - {e=>'UE0',c=>-1,a=>4,g=>1,b=>2,d=>0,f=>0} d40100000000000000000100 d40100000000000000000100 d40100000000000000000100 d40100000000000000000100 - {e=>'UE1',c=>-2,a=>7,g=>4,b=>-2,d=>3,f=>6} b70100000300310000000400 b70100000300310000000400 b70100000300310000000400 b70100000300310000000400 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>'UE4',a=>1,d=>4,c=>-4,h=>-1,b=>2,g=>3,f=>1} 1101000004000c0000003b00 1101000004000c0000003b00 1101000004000c0000003b00 1101000004000c0000003b00 - {e=>'UE3',a=>3,d=>3,c=>2,h=>1,b=>-3,g=>5,f=>2} ab0000000300130000000d00 ab0000000300130000000d00 ab0000000300130000000d00 ab0000000300130000000d00 - {e=>'UE2',a=>0,d=>4,c=>-3,h=>2,b=>1,g=>2,f=>7} 4801000004003a0000001200 4801000004003a0000001200 4801000004003a0000001200 4801000004003a0000001200 - {e=>'UE4',a=>2,d=>3,c=>0,h=>-1,b=>-1,g=>2,f=>4} 3a0000000300240000003a00 3a0000000300240000003a00 3a0000000300240000003a00 3a0000000300240000003a00 - {e=>'UE5',a=>5,d=>7,c=>0,h=>-1,b=>3,g=>1,f=>1} 1d00000007000d0000003900 1d00000007000d0000003900 1d00000007000d0000003900 1d00000007000d0000003900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; }; - {e=>'UE4',a=>1,d=>7,c=>-3,h=>0,b=>-4,g=>4,f=>3,i=>'SEM2'} 6101000007001c000000040006000000 6101000007001c000000040006000000 6101000007001c000000040006000000 6101000007001c000000040006000000 - {e=>'UE0',a=>0,d=>3,c=>1,h=>0,b=>-3,g=>6,f=>6,i=>'SE3'} 68000000030030000000060003000000 68000000030030000000060003000000 68000000030030000000060003000000 68000000030030000000060003000000 - {e=>'UE5',a=>0,d=>1,c=>-2,h=>2,b=>0,g=>6,f=>0,i=>'SE3'} 80010000010005000000160003000000 80010000010005000000160003000000 80010000010005000000160003000000 80010000010005000000160003000000 - {e=>'UE7',a=>5,d=>4,c=>-3,h=>-1,b=>2,g=>5,f=>6,i=>'SE2'} 550100000400370000003d0002000000 550100000400370000003d0002000000 550100000400370000003d0002000000 550100000400370000003d0002000000 - {e=>'UE4',a=>6,d=>1,c=>-1,h=>2,b=>-3,g=>5,f=>1,i=>'SEM4'} ee01000001000c000000150004000000 ee01000001000c000000150004000000 ee01000001000c000000150004000000 ee01000001000c000000150004000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; }; - {e=>'UE2',a=>3,d=>3,j=>79,c=>-1,h=>-3,b=>2,g=>4,f=>1,i=>'SE3'} d301000003000a0000002c00030000004f00 d301000003000a0000002c00030000004f00 d301000003000a0000002c00030000004f00 d301000003000a0000002c00030000004f00 - {e=>'UE3',a=>4,d=>5,j=>33,c=>-2,h=>-4,b=>-1,g=>7,f=>7,i=>'SEM3'} bc01000005003b0000002700050000002100 bc01000005003b0000002700050000002100 bc01000005003b0000002700050000002100 bc01000005003b0000002700050000002100 - {e=>'UE3',a=>2,d=>6,j=>127,c=>-1,h=>1,b=>0,g=>1,f=>5,i=>'SEM1'} c201000006002b0000000900070000007f00 c201000006002b0000000900070000007f00 c201000006002b0000000900070000007f00 c201000006002b0000000900070000007f00 - {e=>'UE7',a=>4,d=>1,j=>84,c=>2,h=>-3,b=>3,g=>7,f=>0,i=>'SEM1'} 9c0000000100070000002f00070000005400 9c0000000100070000002f00070000005400 9c0000000100070000002f00070000005400 9c0000000100070000002f00070000005400 - {e=>'UE6',a=>1,d=>7,j=>37,c=>2,h=>-2,b=>0,g=>3,f=>5,i=>'SE3'} 8100000007002e0000003300030000002500 8100000007002e0000003300030000002500 8100000007002e0000003300030000002500 8100000007002e0000003300030000002500 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; }; - {e=>'UE0',a=>7,d=>4,j=>-44,c=>0,k=>0,h=>0,b=>2,g=>5,f=>1,i=>'SEM4'} 17000000040008000000050004000000d400 17000000040008000000050004000000d400 17000000040008000000050004000000d400 17000000040008000000050004000000d400 - {e=>'UE6',a=>0,d=>4,j=>-58,c=>2,k=>1,h=>1,b=>-2,g=>2,f=>3,i=>'SEM3'} b000000004001e0000000a0005000000c601 b000000004001e0000000a0005000000c601 b000000004001e0000000a0005000000c601 b000000004001e0000000a0005000000c601 - {e=>'UE7',a=>0,d=>4,j=>-25,c=>-4,k=>2,h=>-4,b=>1,g=>6,f=>3,i=>'SEM1'} 0801000004001f000000260007000000e702 0801000004001f000000260007000000e702 0801000004001f000000260007000000e702 0801000004001f000000260007000000e702 - {e=>'UE0',a=>0,d=>5,j=>87,c=>2,k=>4,h=>1,b=>2,g=>5,f=>4,i=>'SEM2'} 900000000500200000000d00060000005704 900000000500200000000d00060000005704 900000000500200000000d00060000005704 900000000500200000000d00060000005704 - {e=>'UE3',a=>6,d=>5,j=>-127,c=>0,k=>4,h=>2,b=>-3,g=>7,f=>6,i=>'SE0'} 2e0000000500330000001700000000008104 2e0000000500330000001700000000008104 2e0000000500330000001700000000008104 2e0000000500330000001700000000008104 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>'UE1',a=>5,d=>7,j=>116,l=>-1,c=>2,k=>3,h=>-4,b=>0,g=>0,f=>1,i=>'SE3'} 85000000070009000000200003000000743b 85000000070009000000200003000000743b 85000000070009000000200003000000743b 85000000070009000000200003000000743b - {e=>'UE0',a=>3,d=>5,j=>-63,l=>3,c=>-4,k=>7,h=>2,b=>0,g=>1,f=>1,i=>'SEM2'} 03010000050008000000110006000000c11f 03010000050008000000110006000000c11f 03010000050008000000110006000000c11f 03010000050008000000110006000000c11f - {e=>'UE1',a=>6,d=>3,j=>-79,l=>1,c=>2,k=>1,h=>-2,b=>-4,g=>5,f=>0,i=>'SE0'} a6000000030001000000350000000000b109 a6000000030001000000350000000000b109 a6000000030001000000350000000000b109 a6000000030001000000350000000000b109 - {e=>'UE1',a=>4,d=>5,j=>7,l=>2,c=>-2,k=>4,h=>-4,b=>-2,g=>3,f=>7,i=>'SE1'} b40100000500390000002300010000000714 b40100000500390000002300010000000714 b40100000500390000002300010000000714 b40100000500390000002300010000000714 - {e=>'UE2',a=>5,d=>0,j=>41,l=>-2,c=>-4,k=>4,h=>-1,b=>3,g=>5,f=>4,i=>'SEM2'} 1d0100000000220000003d00060000002934 1d0100000000220000003d00060000002934 1d0100000000220000003d00060000002934 1d0100000000220000003d00060000002934 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>'UE1',a=>1,m=>3,d=>5,j=>80,l=>-4,c=>-4,k=>7,h=>-2,b=>1,g=>5,f=>1,i=>'SEM4'} 09010000050009000000350004000000502703000000 09010000050009000000350004000000502703000000 09010000050009000000350004000000502703000000 09010000050009000000350004000000502703000000 - {e=>'UE0',a=>3,m=>1,d=>7,j=>-49,l=>-4,c=>-3,k=>5,h=>0,b=>-1,g=>3,f=>5,i=>'SEM4'} 7b010000070028000000030004000000cf2501000000 7b010000070028000000030004000000cf2501000000 7b010000070028000000030004000000cf2501000000 7b010000070028000000030004000000cf2501000000 - {e=>'UE5',a=>3,m=>7,d=>7,j=>100,l=>-4,c=>1,k=>4,h=>0,b=>-3,g=>1,f=>7,i=>'SE3'} 6b00000007003d000000010003000000642407000000 6b00000007003d000000010003000000642407000000 6b00000007003d000000010003000000642407000000 6b00000007003d000000010003000000642407000000 - {e=>'UE5',a=>7,m=>2,d=>0,j=>-111,l=>1,c=>2,k=>6,h=>0,b=>0,g=>4,f=>7,i=>'SEM3'} 8700000000003d000000040005000000910e02000000 8700000000003d000000040005000000910e02000000 8700000000003d000000040005000000910e02000000 8700000000003d000000040005000000910e02000000 - {e=>'UE1',a=>6,m=>1,d=>3,j=>78,l=>-2,c=>-2,k=>1,h=>-3,b=>3,g=>4,f=>5,i=>'SE0'} 9e0100000300290000002c00000000004e3101000000 9e0100000300290000002c00000000004e3101000000 9e0100000300290000002c00000000004e3101000000 9e0100000300290000002c00000000004e3101000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>'UE0',n=>164,a=>0,m=>3,d=>1,j=>-21,l=>-4,c=>2,k=>3,h=>-4,b=>1,g=>0,f=>5,i=>'SE2'} 88000000010028000000200002000000eb2303000000a400 88000000010028000000200002000000eb2303000000a400 88000000010028000000200002000000eb2303000000a400 88000000010028000000200002000000eb2303000000a400 - {e=>'UE6',n=>235,a=>5,m=>3,d=>0,j=>122,l=>0,c=>-2,k=>5,h=>3,b=>-2,g=>6,f=>1,i=>'SEM3'} b501000000000e0000001e00050000007a0503000000eb00 b501000000000e0000001e00050000007a0503000000eb00 b501000000000e0000001e00050000007a0503000000eb00 b501000000000e0000001e00050000007a0503000000eb00 - {e=>'UE2',n=>226,a=>5,m=>6,d=>1,j=>0,l=>0,c=>-4,k=>4,h=>3,b=>-2,g=>1,f=>5,i=>'SEM3'} 3501000001002a000000190005000000000406000000e200 3501000001002a000000190005000000000406000000e200 3501000001002a000000190005000000000406000000e200 3501000001002a000000190005000000000406000000e200 - {e=>'UE4',n=>153,a=>0,m=>7,d=>6,j=>106,l=>-2,c=>1,k=>6,h=>2,b=>2,g=>2,f=>2,i=>'SE3'} 500000000600140000001200030000006a36070000009900 500000000600140000001200030000006a36070000009900 500000000600140000001200030000006a36070000009900 500000000600140000001200030000006a36070000009900 - {e=>'UE5',n=>143,a=>3,m=>3,d=>4,j=>112,l=>3,c=>1,k=>5,h=>-4,b=>-1,g=>3,f=>7,i=>'SEM4'} 7b00000004003d000000230004000000701d030000008f00 7b00000004003d000000230004000000701d030000008f00 7b00000004003d000000230004000000701d030000008f00 7b00000004003d000000230004000000701d030000008f00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; }; - {a=>35,b=>4} 230004000000 230004000000 230004000000 230004000000 - {a=>-103,b=>7} 990007000000 990007000000 990007000000 990007000000 - {a=>-90,b=>6} a60006000000 a60006000000 a60006000000 a60006000000 - {a=>-77,b=>1} b30001000000 b30001000000 b30001000000 b30001000000 - {a=>73,b=>6} 490006000000 490006000000 490006000000 490006000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>8,b=>7} 080027000000 080027000000 080027000000 080027000000 - {c=>-4,a=>110,b=>2} 6e0022000000 6e0022000000 6e0022000000 6e0022000000 - {c=>0,a=>-68,b=>0} bc0000000000 bc0000000000 bc0000000000 bc0000000000 - {c=>0,a=>7,b=>7} 070007000000 070007000000 070007000000 070007000000 - {c=>1,a=>-91,b=>5} a5000d000000 a5000d000000 a5000d000000 a5000d000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>-105,b=>7,d=>1} 970077000000 970077000000 970077000000 970077000000 - {c=>0,a=>68,b=>2,d=>-1} 4400c2010000 4400c2010000 4400c2010000 4400c2010000 - {c=>3,a=>66,b=>2,d=>-4} 42001a010000 42001a010000 42001a010000 42001a010000 - {c=>-2,a=>-3,b=>5,d=>2} fd00b5000000 fd00b5000000 fd00b5000000 fd00b5000000 - {c=>2,a=>-69,b=>0,d=>2} bb0090000000 bb0090000000 bb0090000000 bb0090000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>5,c=>-4,a=>-27,b=>0,d=>2} e500a00000000500 e500a00000000500 e500a00000000500 e500a00000000500 - {e=>6,c=>-1,a=>67,b=>7,d=>-4} 43003f0100000600 43003f0100000600 43003f0100000600 43003f0100000600 - {e=>5,c=>-3,a=>-14,b=>5,d=>0} f2002d0000000500 f2002d0000000500 f2002d0000000500 f2002d0000000500 - {e=>7,c=>-3,a=>-84,b=>6,d=>0} ac002e0000000700 ac002e0000000700 ac002e0000000700 ac002e0000000700 - {e=>4,c=>-1,a=>49,b=>2,d=>-1} 3100fa0100000400 3100fa0100000400 3100fa0100000400 3100fa0100000400 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>1,c=>2,a=>83,b=>0,d=>1,f=>'UE5'} 530050000000010005000000 530050000000010005000000 530050000000010005000000 530050000000010005000000 - {e=>2,c=>-2,a=>-120,b=>2,d=>-3,f=>'UE1'} 880072010000020001000000 880072010000020001000000 880072010000020001000000 880072010000020001000000 - {e=>7,c=>2,a=>-63,b=>6,d=>-1,f=>'UE4'} c100d6010000070004000000 c100d6010000070004000000 c100d6010000070004000000 c100d6010000070004000000 - {e=>3,c=>2,a=>-5,b=>1,d=>-1,f=>'UE3'} fb00d1010000030003000000 fb00d1010000030003000000 fb00d1010000030003000000 fb00d1010000030003000000 - {e=>3,c=>-1,a=>107,b=>5,d=>-1,f=>'UE2'} 6b00fd010000030002000000 6b00fd010000030002000000 6b00fd010000030002000000 6b00fd010000030002000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>3,c=>-2,a=>0,g=>4,b=>0,d=>2,f=>'UE6'} 0000b0000000030026000000 0000b0000000030026000000 0000b0000000030026000000 0000b0000000030026000000 - {e=>1,c=>1,a=>30,g=>6,b=>2,d=>-2,f=>'UE4'} 1e008a010000010034000000 1e008a010000010034000000 1e008a010000010034000000 1e008a010000010034000000 - {e=>6,c=>3,a=>4,g=>1,b=>4,d=>0,f=>'UE7'} 04001c00000006000f000000 04001c00000006000f000000 04001c00000006000f000000 04001c00000006000f000000 - {e=>7,c=>-1,a=>-95,g=>6,b=>5,d=>1,f=>'UE6'} a1007d000000070036000000 a1007d000000070036000000 a1007d000000070036000000 a1007d000000070036000000 - {e=>7,c=>2,a=>-102,g=>2,b=>3,d=>2,f=>'UE3'} 9a0093000000070013000000 9a0093000000070013000000 9a0093000000070013000000 9a0093000000070013000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>2,c=>-3,a=>17,g=>0,b=>7,d=>-4,f=>'UE0'} 11002f010000020000000000 11002f010000020000000000 11002f010000020000000000 11002f010000020000000000 - {e=>5,c=>1,a=>-35,g=>5,b=>3,d=>0,f=>'UE7'} dd000b00000005002f000000 dd000b00000005002f000000 dd000b00000005002f000000 dd000b00000005002f000000 - {e=>3,c=>1,a=>-16,g=>3,b=>3,d=>-4,f=>'UE1'} f0000b010000030019000000 f0000b010000030019000000 f0000b010000030019000000 f0000b010000030019000000 - {e=>6,c=>3,a=>-120,g=>6,b=>3,d=>-2,f=>'UE6'} 88009b010000060036000000 88009b010000060036000000 88009b010000060036000000 88009b010000060036000000 - {e=>6,c=>1,a=>-121,g=>1,b=>7,d=>-4,f=>'UE3'} 87000f01000006000b000000 87000f01000006000b000000 87000f01000006000b000000 87000f01000006000b000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>72,d=>-1,c=>-3,h=>1,b=>0,g=>2,f=>'UE5'} 4800e80100000500150000000100 4800e80100000500150000000100 4800e80100000500150000000100 4800e80100000500150000000100 - {e=>3,a=>-54,d=>1,c=>-4,h=>3,b=>0,g=>2,f=>'UE3'} ca00600000000300130000000300 ca00600000000300130000000300 ca00600000000300130000000300 ca00600000000300130000000300 - {e=>0,a=>-29,d=>3,c=>1,h=>1,b=>2,g=>7,f=>'UE1'} e300ca0000000000390000000100 e300ca0000000000390000000100 e300ca0000000000390000000100 e300ca0000000000390000000100 - {e=>5,a=>60,d=>-4,c=>3,h=>1,b=>5,g=>1,f=>'UE4'} 3c001d01000005000c0000000100 3c001d01000005000c0000000100 3c001d01000005000c0000000100 3c001d01000005000c0000000100 - {e=>3,a=>21,d=>1,c=>0,h=>7,b=>2,g=>2,f=>'UE7'} 1500420000000300170000000700 1500420000000300170000000700 1500420000000300170000000700 1500420000000300170000000700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>3,a=>31,d=>-2,c=>0,h=>4,b=>1,g=>4,f=>'UE7',i=>-3} 1f00810100000300270000002c00 1f00810100000300270000002c00 1f00810100000300270000002c00 1f00810100000300270000002c00 - {e=>7,a=>-56,d=>-4,c=>0,h=>3,b=>0,g=>6,f=>'UE0',i=>1} c800000100000700300000000b00 c800000100000700300000000b00 c800000100000700300000000b00 c800000100000700300000000b00 - {e=>4,a=>-92,d=>3,c=>3,h=>0,b=>7,g=>7,f=>'UE0',i=>-2} a400df0000000400380000003000 a400df0000000400380000003000 a400df0000000400380000003000 a400df0000000400380000003000 - {e=>7,a=>27,d=>1,c=>-4,h=>7,b=>6,g=>4,f=>'UE1',i=>1} 1b00660000000700210000000f00 1b00660000000700210000000f00 1b00660000000700210000000f00 1b00660000000700210000000f00 - {e=>0,a=>-28,d=>1,c=>1,h=>1,b=>2,g=>5,f=>'UE1',i=>2} e4004a0000000000290000001100 e4004a0000000000290000001100 e4004a0000000000290000001100 e4004a0000000000290000001100 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>43,d=>-4,j=>'SEM1',c=>-2,h=>5,b=>1,g=>0,f=>'UE6',i=>0} 2b0031010000050006000000050007000000 2b0031010000050006000000050007000000 2b0031010000050006000000050007000000 2b0031010000050006000000050007000000 - {e=>1,a=>-116,d=>-3,j=>'SE2',c=>-3,h=>4,b=>4,g=>3,f=>'UE6',i=>1} 8c006c01000001001e0000000c0002000000 8c006c01000001001e0000000c0002000000 8c006c01000001001e0000000c0002000000 8c006c01000001001e0000000c0002000000 - {e=>5,a=>-97,d=>-4,j=>'SE2',c=>0,h=>6,b=>6,g=>2,f=>'UE0',i=>2} 9f0006010000050010000000160002000000 9f0006010000050010000000160002000000 9f0006010000050010000000160002000000 9f0006010000050010000000160002000000 - {e=>3,a=>-10,d=>0,j=>'SE1',c=>-4,h=>1,b=>4,g=>4,f=>'UE7',i=>-3} f60024000000030027000000290001000000 f60024000000030027000000290001000000 f60024000000030027000000290001000000 f60024000000030027000000290001000000 - {e=>0,a=>-83,d=>3,j=>'SEM4',c=>-1,h=>3,b=>7,g=>0,f=>'UE0',i=>2} ad00ff000000000000000000130004000000 ad00ff000000000000000000130004000000 ad00ff000000000000000000130004000000 ad00ff000000000000000000130004000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>-72,d=>1,j=>'SEM4',c=>-2,k=>-69,h=>2,b=>2,g=>4,f=>'UE6',i=>-3} b800720000000400260000002a0004000000bb00 b800720000000400260000002a0004000000bb00 b800720000000400260000002a0004000000bb00 b800720000000400260000002a0004000000bb00 - {e=>3,a=>-74,d=>3,j=>'SE1',c=>1,k=>-22,h=>7,b=>7,g=>1,f=>'UE4',i=>1} b600cf00000003000c0000000f0001000000ea00 b600cf00000003000c0000000f0001000000ea00 b600cf00000003000c0000000f0001000000ea00 b600cf00000003000c0000000f0001000000ea00 - {e=>2,a=>-35,d=>3,j=>'SE0',c=>-3,k=>-17,h=>4,b=>5,g=>0,f=>'UE7',i=>-1} dd00ed0000000200070000003c0000000000ef00 dd00ed0000000200070000003c0000000000ef00 dd00ed0000000200070000003c0000000000ef00 dd00ed0000000200070000003c0000000000ef00 - {e=>6,a=>36,d=>-4,j=>'SEM2',c=>-4,k=>-49,h=>0,b=>3,g=>4,f=>'UE3',i=>-2} 240023010000060023000000300006000000cf00 240023010000060023000000300006000000cf00 240023010000060023000000300006000000cf00 240023010000060023000000300006000000cf00 - {e=>0,a=>34,d=>-3,j=>'SEM2',c=>0,k=>9,h=>2,b=>6,g=>4,f=>'UE3',i=>-1} 2200460100000000230000003a00060000000900 2200460100000000230000003a00060000000900 2200460100000000230000003a00060000000900 2200460100000000230000003a00060000000900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>7,a=>-52,d=>0,j=>'SE0',l=>6,c=>0,k=>67,h=>4,b=>1,g=>4,f=>'UE1',i=>3} cc00010000000700210000001c00000000004306 cc00010000000700210000001c00000000004306 cc00010000000700210000001c00000000004306 cc00010000000700210000001c00000000004306 - {e=>0,a=>104,d=>-4,j=>'SE3',l=>4,c=>1,k=>-98,h=>7,b=>1,g=>2,f=>'UE1',i=>-1} 6800090100000000110000003f00030000009e04 6800090100000000110000003f00030000009e04 6800090100000000110000003f00030000009e04 6800090100000000110000003f00030000009e04 - {e=>1,a=>88,d=>-1,j=>'SE2',l=>4,c=>-2,k=>51,h=>4,b=>2,g=>4,f=>'UE2',i=>-2} 5800f20100000100220000003400020000003304 5800f20100000100220000003400020000003304 5800f20100000100220000003400020000003304 5800f20100000100220000003400020000003304 - {e=>2,a=>-81,d=>2,j=>'SE0',l=>2,c=>0,k=>87,h=>1,b=>1,g=>6,f=>'UE4',i=>0} af00810000000200340000000100000000005702 af00810000000200340000000100000000005702 af00810000000200340000000100000000005702 af00810000000200340000000100000000005702 - {e=>5,a=>-126,d=>2,j=>'SE3',l=>6,c=>-3,k=>79,h=>0,b=>3,g=>4,f=>'UE4',i=>1} 8200ab0000000500240000000800030000004f06 8200ab0000000500240000000800030000004f06 8200ab0000000500240000000800030000004f06 8200ab0000000500240000000800030000004f06 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-69,m=>2,d=>2,j=>'SE1',l=>1,c=>2,k=>35,h=>6,b=>4,g=>4,f=>'UE5',i=>3} bb00940000000400250000001e00010000002311 bb00940000000400250000001e00010000002311 bb00940000000400250000001e00010000002311 bb00940000000400250000001e00010000002311 - {e=>7,a=>87,m=>-2,d=>-4,j=>'SEM4',l=>1,c=>-1,k=>1,h=>7,b=>6,g=>4,f=>'UE4',i=>2} 57003e0100000700240000001700040000000131 57003e0100000700240000001700040000000131 57003e0100000700240000001700040000000131 57003e0100000700240000001700040000000131 - {e=>6,a=>-102,m=>1,d=>3,j=>'SEM4',l=>2,c=>-4,k=>78,h=>5,b=>7,g=>6,f=>'UE3',i=>-3} 9a00e70000000600330000002d00040000004e0a 9a00e70000000600330000002d00040000004e0a 9a00e70000000600330000002d00040000004e0a 9a00e70000000600330000002d00040000004e0a - {e=>0,a=>122,m=>2,d=>-1,j=>'SEM2',l=>4,c=>-1,k=>-59,h=>6,b=>4,g=>0,f=>'UE1',i=>-3} 7a00fc0100000000010000002e0006000000c514 7a00fc0100000000010000002e0006000000c514 7a00fc0100000000010000002e0006000000c514 7a00fc0100000000010000002e0006000000c514 - {e=>2,a=>91,m=>2,d=>2,j=>'SEM4',l=>2,c=>0,k=>-51,h=>2,b=>4,g=>3,f=>'UE2',i=>3} 5b008400000002001a0000001a0004000000cd12 5b008400000002001a0000001a0004000000cd12 5b008400000002001a0000001a0004000000cd12 5b008400000002001a0000001a0004000000cd12 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>0,a=>40,m=>0,d=>-2,j=>'SEM1',l=>4,c=>-3,k=>69,h=>7,b=>4,g=>3,f=>'UE0',i=>-1} 2800ac0100000600180000003f0007000000450400000000 2800ac0100000600180000003f0007000000450400000000 2800ac0100000600180000003f0007000000450400000000 2800ac0100000600180000003f0007000000450400000000 - {e=>4,n=>6,a=>30,m=>1,d=>3,j=>'SEM1',l=>0,c=>-2,k=>-11,h=>4,b=>6,g=>7,f=>'UE3',i=>-1} 1e00f600000004003b0000003c0007000000f50806000000 1e00f600000004003b0000003c0007000000f50806000000 1e00f600000004003b0000003c0007000000f50806000000 1e00f600000004003b0000003c0007000000f50806000000 - {e=>7,n=>3,a=>-38,m=>3,d=>2,j=>'SEM4',l=>2,c=>-2,k=>-84,h=>7,b=>7,g=>3,f=>'UE2',i=>3} da00b700000007001a0000001f0004000000ac1a03000000 da00b700000007001a0000001f0004000000ac1a03000000 da00b700000007001a0000001f0004000000ac1a03000000 da00b700000007001a0000001f0004000000ac1a03000000 - {e=>0,n=>3,a=>39,m=>0,d=>1,j=>'SEM3',l=>7,c=>3,k=>-120,h=>5,b=>2,g=>6,f=>'UE2',i=>3} 27005a0000000000320000001d0005000000880703000000 27005a0000000000320000001d0005000000880703000000 27005a0000000000320000001d0005000000880703000000 27005a0000000000320000001d0005000000880703000000 - {e=>5,n=>5,a=>-10,m=>-4,d=>-1,j=>'SEM3',l=>5,c=>0,k=>23,h=>7,b=>0,g=>7,f=>'UE7',i=>0} f600c001000005003f000000070005000000172505000000 f600c001000005003f000000070005000000172505000000 f600c001000005003f000000070005000000172505000000 f600c001000005003f000000070005000000172505000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>4,a=>-49,m=>-4,d=>-2,j=>'SE3',l=>1,c=>0,k=>-90,h=>0,b=>3,g=>1,f=>'UE1',o=>232,i=>1} cf0083010000020009000000080003000000a62104000000e800 cf0083010000020009000000080003000000a62104000000e800 cf0083010000020009000000080003000000a62104000000e800 cf0083010000020009000000080003000000a62104000000e800 - {e=>6,n=>2,a=>4,m=>1,d=>3,j=>'SEM2',l=>1,c=>1,k=>-19,h=>7,b=>4,g=>3,f=>'UE0',o=>88,i=>1} 0400cc0000000600180000000f0006000000ed09020000005800 0400cc0000000600180000000f0006000000ed09020000005800 0400cc0000000600180000000f0006000000ed09020000005800 0400cc0000000600180000000f0006000000ed09020000005800 - {e=>4,n=>7,a=>61,m=>0,d=>2,j=>'SE1',l=>6,c=>-1,k=>113,h=>2,b=>6,g=>5,f=>'UE6',o=>234,i=>2} 3d00be00000004002e000000120001000000710607000000ea00 3d00be00000004002e000000120001000000710607000000ea00 3d00be00000004002e000000120001000000710607000000ea00 3d00be00000004002e000000120001000000710607000000ea00 - {e=>1,n=>0,a=>-69,m=>-2,d=>2,j=>'SE0',l=>0,c=>0,k=>38,h=>4,b=>5,g=>1,f=>'UE6',o=>145,i=>-2} bb008500000001000e0000003400000000002630000000009100 bb008500000001000e0000003400000000002630000000009100 bb008500000001000e0000003400000000002630000000009100 bb008500000001000e0000003400000000002630000000009100 - {e=>3,n=>2,a=>-1,m=>-1,d=>2,j=>'SEM3',l=>1,c=>1,k=>-52,h=>3,b=>1,g=>2,f=>'UE1',o=>195,i=>-3} ff00890000000300110000002b0005000000cc3902000000c300 ff00890000000300110000002b0005000000cc3902000000c300 ff00890000000300110000002b0005000000cc3902000000c300 ff00890000000300110000002b0005000000cc3902000000c300 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; }; - {a=>-117,b=>5} 8bff05000000 8bff05000000 8bff05000000 8bff05000000 - {a=>72,b=>7} 480007000000 480007000000 480007000000 480007000000 - {a=>10,b=>5} 0a0005000000 0a0005000000 0a0005000000 0a0005000000 - {a=>-60,b=>2} c4ff02000000 c4ff02000000 c4ff02000000 c4ff02000000 - {a=>-76,b=>6} b4ff06000000 b4ff06000000 b4ff06000000 b4ff06000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>-67,b=>0} bdff20000000 bdff20000000 bdff20000000 bdff20000000 - {c=>-3,a=>-101,b=>6} 9bff2e000000 9bff2e000000 9bff2e000000 9bff2e000000 - {c=>2,a=>-19,b=>7} edff17000000 edff17000000 edff17000000 edff17000000 - {c=>-2,a=>92,b=>7} 5c0037000000 5c0037000000 5c0037000000 5c0037000000 - {c=>3,a=>46,b=>7} 2e001f000000 2e001f000000 2e001f000000 2e001f000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>79,b=>0,d=>0} 4f0020000000 4f0020000000 4f0020000000 4f0020000000 - {c=>-3,a=>93,b=>4,d=>0} 5d002c000000 5d002c000000 5d002c000000 5d002c000000 - {c=>-3,a=>-14,b=>5,d=>-1} f2ffed010000 f2ffed010000 f2ffed010000 f2ffed010000 - {c=>0,a=>-47,b=>4,d=>-4} d1ff04010000 d1ff04010000 d1ff04010000 d1ff04010000 - {c=>2,a=>-7,b=>5,d=>2} f9ff95000000 f9ff95000000 f9ff95000000 f9ff95000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>6,c=>-1,a=>-71,b=>2,d=>0} b9ff3a0000000600 b9ff3a0000000600 b9ff3a0000000600 b9ff3a0000000600 - {e=>0,c=>-1,a=>-25,b=>1,d=>3} e7fff90000000000 e7fff90000000000 e7fff90000000000 e7fff90000000000 - {e=>0,c=>0,a=>-15,b=>4,d=>-4} f1ff040100000000 f1ff040100000000 f1ff040100000000 f1ff040100000000 - {e=>6,c=>-1,a=>26,b=>6,d=>-3} 1a007e0100000600 1a007e0100000600 1a007e0100000600 1a007e0100000600 - {e=>7,c=>3,a=>-24,b=>1,d=>2} e8ff990000000700 e8ff990000000700 e8ff990000000700 e8ff990000000700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>2,c=>-3,a=>-20,b=>5,d=>3,f=>'UE1'} ecffed000000020001000000 ecffed000000020001000000 ecffed000000020001000000 ecffed000000020001000000 - {e=>1,c=>2,a=>47,b=>6,d=>2,f=>'UE3'} 2f0096000000010003000000 2f0096000000010003000000 2f0096000000010003000000 2f0096000000010003000000 - {e=>6,c=>1,a=>16,b=>5,d=>0,f=>'UE7'} 10000d000000060007000000 10000d000000060007000000 10000d000000060007000000 10000d000000060007000000 - {e=>6,c=>-2,a=>102,b=>5,d=>2,f=>'UE1'} 6600b5000000060001000000 6600b5000000060001000000 6600b5000000060001000000 6600b5000000060001000000 - {e=>3,c=>-3,a=>-74,b=>2,d=>-4,f=>'UE7'} b6ff2a010000030007000000 b6ff2a010000030007000000 b6ff2a010000030007000000 b6ff2a010000030007000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>5,c=>3,a=>65,g=>2,b=>7,d=>0,f=>'UE3'} 41001f000000050013000000 41001f000000050013000000 41001f000000050013000000 41001f000000050013000000 - {e=>1,c=>-1,a=>17,g=>4,b=>3,d=>3,f=>'UE4'} 1100fb000000010024000000 1100fb000000010024000000 1100fb000000010024000000 1100fb000000010024000000 - {e=>0,c=>1,a=>100,g=>1,b=>1,d=>1,f=>'UE5'} 64004900000000000d000000 64004900000000000d000000 64004900000000000d000000 64004900000000000d000000 - {e=>5,c=>1,a=>90,g=>5,b=>1,d=>3,f=>'UE4'} 5a00c900000005002c000000 5a00c900000005002c000000 5a00c900000005002c000000 5a00c900000005002c000000 - {e=>5,c=>3,a=>-34,g=>1,b=>7,d=>1,f=>'UE7'} deff5f00000005000f000000 deff5f00000005000f000000 deff5f00000005000f000000 deff5f00000005000f000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>6,c=>-1,a=>-29,g=>4,b=>0,d=>0,f=>'UE0'} e3ff38000000060020000000 e3ff38000000060020000000 e3ff38000000060020000000 e3ff38000000060020000000 - {e=>4,c=>1,a=>-112,g=>5,b=>1,d=>-4,f=>'UE6'} 90ff0901000004002e000000 90ff0901000004002e000000 90ff0901000004002e000000 90ff0901000004002e000000 - {e=>4,c=>-1,a=>-66,g=>1,b=>4,d=>2,f=>'UE0'} beffbc000000040008000000 beffbc000000040008000000 beffbc000000040008000000 beffbc000000040008000000 - {e=>7,c=>-3,a=>-106,g=>5,b=>5,d=>-1,f=>'UE2'} 96ffed01000007002a000000 96ffed01000007002a000000 96ffed01000007002a000000 96ffed01000007002a000000 - {e=>7,c=>3,a=>-85,g=>4,b=>5,d=>-1,f=>'UE5'} abffdd010000070025000000 abffdd010000070025000000 abffdd010000070025000000 abffdd010000070025000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>-70,d=>3,c=>-2,h=>1,b=>7,g=>0,f=>'UE6'} bafff70000000100060000000100 bafff70000000100060000000100 bafff70000000100060000000100 bafff70000000100060000000100 - {e=>3,a=>16,d=>-2,c=>1,h=>1,b=>3,g=>7,f=>'UE2'} 10008b01000003003a0000000100 10008b01000003003a0000000100 10008b01000003003a0000000100 10008b01000003003a0000000100 - {e=>7,a=>34,d=>-3,c=>-1,h=>3,b=>1,g=>4,f=>'UE6'} 2200790100000700260000000300 2200790100000700260000000300 2200790100000700260000000300 2200790100000700260000000300 - {e=>1,a=>15,d=>-3,c=>-1,h=>6,b=>7,g=>7,f=>'UE0'} 0f007f0100000100380000000600 0f007f0100000100380000000600 0f007f0100000100380000000600 0f007f0100000100380000000600 - {e=>5,a=>120,d=>0,c=>3,h=>7,b=>7,g=>0,f=>'UE4'} 78001f0000000500040000000700 78001f0000000500040000000700 78001f0000000500040000000700 78001f0000000500040000000700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>110,d=>1,c=>0,h=>3,b=>1,g=>7,f=>'UE3',i=>-3} 6e004100000007003b0000002b00 6e004100000007003b0000002b00 6e004100000007003b0000002b00 6e004100000007003b0000002b00 - {e=>4,a=>-31,d=>-2,c=>-4,h=>0,b=>7,g=>7,f=>'UE7',i=>-2} e1ffa701000004003f0000003000 e1ffa701000004003f0000003000 e1ffa701000004003f0000003000 e1ffa701000004003f0000003000 - {e=>6,a=>64,d=>2,c=>-1,h=>4,b=>3,g=>5,f=>'UE5',i=>-3} 4000bb00000006002d0000002c00 4000bb00000006002d0000002c00 4000bb00000006002d0000002c00 4000bb00000006002d0000002c00 - {e=>5,a=>100,d=>1,c=>3,h=>5,b=>4,g=>4,f=>'UE2',i=>-1} 64005c0000000500220000003d00 64005c0000000500220000003d00 64005c0000000500220000003d00 64005c0000000500220000003d00 - {e=>5,a=>-124,d=>-4,c=>-2,h=>6,b=>1,g=>4,f=>'UE4',i=>2} 84ff310100000500240000001600 84ff310100000500240000001600 84ff310100000500240000001600 84ff310100000500240000001600 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>6,a=>-89,d=>2,j=>'SE2',c=>0,h=>7,b=>2,g=>7,f=>'UE6',i=>-4} a7ff8200000006003e000000270002000000 a7ff8200000006003e000000270002000000 a7ff8200000006003e000000270002000000 a7ff8200000006003e000000270002000000 - {e=>6,a=>63,d=>-2,j=>'SEM1',c=>-4,h=>2,b=>6,g=>6,f=>'UE0',i=>-1} 3f00a60100000600300000003a0007000000 3f00a60100000600300000003a0007000000 3f00a60100000600300000003a0007000000 3f00a60100000600300000003a0007000000 - {e=>4,a=>93,d=>-4,j=>'SE2',c=>3,h=>7,b=>5,g=>7,f=>'UE7',i=>-1} 5d001d01000004003f0000003f0002000000 5d001d01000004003f0000003f0002000000 5d001d01000004003f0000003f0002000000 5d001d01000004003f0000003f0002000000 - {e=>4,a=>-43,d=>0,j=>'SE3',c=>-2,h=>1,b=>7,g=>6,f=>'UE6',i=>-1} d5ff37000000040036000000390003000000 d5ff37000000040036000000390003000000 d5ff37000000040036000000390003000000 d5ff37000000040036000000390003000000 - {e=>1,a=>21,d=>2,j=>'SEM3',c=>-3,h=>0,b=>6,g=>4,f=>'UE4',i=>-2} 1500ae000000010024000000300005000000 1500ae000000010024000000300005000000 1500ae000000010024000000300005000000 1500ae000000010024000000300005000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>124,d=>-1,j=>'SE2',c=>2,k=>-23,h=>7,b=>1,g=>2,f=>'UE4',i=>0} 7c00d1010000040014000000070002000000e900 7c00d1010000040014000000070002000000e900 7c00d1010000040014000000070002000000e900 7c00d1010000040014000000070002000000e900 - {e=>6,a=>-50,d=>-3,j=>'SE2',c=>-3,k=>-66,h=>3,b=>5,g=>2,f=>'UE5',i=>1} ceff6d0100000600150000000b0002000000be00 ceff6d0100000600150000000b0002000000be00 ceff6d0100000600150000000b0002000000be00 ceff6d0100000600150000000b0002000000be00 - {e=>4,a=>31,d=>2,j=>'SEM1',c=>-4,k=>-117,h=>1,b=>4,g=>3,f=>'UE5',i=>0} 1f00a400000004001d0000000100070000008b00 1f00a400000004001d0000000100070000008b00 1f00a400000004001d0000000100070000008b00 1f00a400000004001d0000000100070000008b00 - {e=>0,a=>-107,d=>0,j=>'SEM4',c=>-3,k=>8,h=>7,b=>7,g=>5,f=>'UE5',i=>-1} 95ff2f00000000002d0000003f00040000000800 95ff2f00000000002d0000003f00040000000800 95ff2f00000000002d0000003f00040000000800 95ff2f00000000002d0000003f00040000000800 - {e=>7,a=>-5,d=>1,j=>'SEM4',c=>1,k=>71,h=>4,b=>2,g=>6,f=>'UE1',i=>2} fbff4a0000000700310000001400040000004700 fbff4a0000000700310000001400040000004700 fbff4a0000000700310000001400040000004700 fbff4a0000000700310000001400040000004700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>2,a=>-31,d=>2,j=>'SE1',l=>0,c=>2,k=>75,h=>7,b=>1,g=>0,f=>'UE1',i=>2} e1ff910000000200010000001700010000004b00 e1ff910000000200010000001700010000004b00 e1ff910000000200010000001700010000004b00 e1ff910000000200010000001700010000004b00 - {e=>2,a=>-101,d=>-3,j=>'SEM4',l=>4,c=>-4,k=>-56,h=>0,b=>2,g=>1,f=>'UE0',i=>-3} 9bff62010000020008000000280004000000c804 9bff62010000020008000000280004000000c804 9bff62010000020008000000280004000000c804 9bff62010000020008000000280004000000c804 - {e=>7,a=>79,d=>1,j=>'SE2',l=>0,c=>-4,k=>87,h=>0,b=>7,g=>2,f=>'UE6',i=>-1} 4f00670000000700160000003800020000005700 4f00670000000700160000003800020000005700 4f00670000000700160000003800020000005700 4f00670000000700160000003800020000005700 - {e=>1,a=>44,d=>1,j=>'SE0',l=>3,c=>2,k=>97,h=>7,b=>5,g=>3,f=>'UE5',i=>3} 2c005500000001001d0000001f00000000006103 2c005500000001001d0000001f00000000006103 2c005500000001001d0000001f00000000006103 2c005500000001001d0000001f00000000006103 - {e=>3,a=>59,d=>2,j=>'SEM3',l=>5,c=>2,k=>-17,h=>0,b=>4,g=>3,f=>'UE4',i=>1} 3b009400000003001c000000080005000000ef05 3b009400000003001c000000080005000000ef05 3b009400000003001c000000080005000000ef05 3b009400000003001c000000080005000000ef05 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>54,m=>-4,d=>2,j=>'SE2',l=>1,c=>1,k=>91,h=>0,b=>5,g=>5,f=>'UE5',i=>2} 36008d00000000002d0000001000020000005b21 36008d00000000002d0000001000020000005b21 36008d00000000002d0000001000020000005b21 36008d00000000002d0000001000020000005b21 - {e=>6,a=>-109,m=>-4,d=>1,j=>'SEM1',l=>4,c=>-2,k=>111,h=>7,b=>7,g=>7,f=>'UE7',i=>0} 93ff7700000006003f0000000700070000006f24 93ff7700000006003f0000000700070000006f24 93ff7700000006003f0000000700070000006f24 93ff7700000006003f0000000700070000006f24 - {e=>4,a=>-18,m=>-1,d=>-2,j=>'SEM4',l=>7,c=>3,k=>-106,h=>2,b=>6,g=>7,f=>'UE1',i=>-4} eeff9e010000040039000000220004000000963f eeff9e010000040039000000220004000000963f eeff9e010000040039000000220004000000963f eeff9e010000040039000000220004000000963f - {e=>5,a=>77,m=>1,d=>1,j=>'SE2',l=>6,c=>-2,k=>-38,h=>5,b=>1,g=>6,f=>'UE2',i=>3} 4d00710000000500320000001d0002000000da0e 4d00710000000500320000001d0002000000da0e 4d00710000000500320000001d0002000000da0e 4d00710000000500320000001d0002000000da0e - {e=>2,a=>63,m=>2,d=>0,j=>'SEM4',l=>4,c=>-3,k=>-13,h=>0,b=>2,g=>5,f=>'UE6',i=>2} 3f002a00000002002e000000100004000000f314 3f002a00000002002e000000100004000000f314 3f002a00000002002e000000100004000000f314 3f002a00000002002e000000100004000000f314 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>7,n=>1,a=>6,m=>2,d=>-1,j=>'SEM1',l=>4,c=>3,k=>-96,h=>7,b=>7,g=>2,f=>'UE0',i=>-2} 0600df010000070010000000370007000000a01401000000 0600df010000070010000000370007000000a01401000000 0600df010000070010000000370007000000a01401000000 0600df010000070010000000370007000000a01401000000 - {e=>1,n=>3,a=>-28,m=>0,d=>1,j=>'SEM4',l=>5,c=>-2,k=>118,h=>2,b=>1,g=>1,f=>'UE1',i=>-2} e4ff71000000010009000000320004000000760503000000 e4ff71000000010009000000320004000000760503000000 e4ff71000000010009000000320004000000760503000000 e4ff71000000010009000000320004000000760503000000 - {e=>6,n=>5,a=>125,m=>-4,d=>1,j=>'SEM1',l=>3,c=>-1,k=>1,h=>5,b=>7,g=>6,f=>'UE6',i=>-1} 7d007f0000000600360000003d0007000000012305000000 7d007f0000000600360000003d0007000000012305000000 7d007f0000000600360000003d0007000000012305000000 7d007f0000000600360000003d0007000000012305000000 - {e=>3,n=>1,a=>4,m=>-4,d=>-3,j=>'SE1',l=>5,c=>-4,k=>82,h=>7,b=>3,g=>0,f=>'UE5',i=>-4} 040063010000030005000000270001000000522501000000 040063010000030005000000270001000000522501000000 040063010000030005000000270001000000522501000000 040063010000030005000000270001000000522501000000 - {e=>4,n=>7,a=>98,m=>1,d=>1,j=>'SE2',l=>5,c=>-3,k=>-32,h=>6,b=>2,g=>3,f=>'UE5',i=>1} 62006a00000004001d0000000e0002000000e00d07000000 62006a00000004001d0000000e0002000000e00d07000000 62006a00000004001d0000000e0002000000e00d07000000 62006a00000004001d0000000e0002000000e00d07000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>5,n=>6,a=>-72,m=>-2,d=>-3,j=>'SEM1',l=>0,c=>1,k=>95,h=>2,b=>5,g=>7,f=>'UE0',o=>120,i=>-3} b8ff4d0100000500380000002a00070000005f30060000007800 b8ff4d0100000500380000002a00070000005f30060000007800 b8ff4d0100000500380000002a00070000005f30060000007800 b8ff4d0100000500380000002a00070000005f30060000007800 - {e=>2,n=>0,a=>-69,m=>-1,d=>0,j=>'SE0',l=>0,c=>1,k=>-105,h=>7,b=>6,g=>0,f=>'UE1',o=>44,i=>2} bbff0e0000000200010000001700000000009738000000002c00 bbff0e0000000200010000001700000000009738000000002c00 bbff0e0000000200010000001700000000009738000000002c00 bbff0e0000000200010000001700000000009738000000002c00 - {e=>0,n=>5,a=>94,m=>-3,d=>-2,j=>'SEM3',l=>4,c=>-1,k=>53,h=>7,b=>4,g=>7,f=>'UE3',o=>232,i=>3} 5e00bc01000000003b0000001f0005000000352c05000000e800 5e00bc01000000003b0000001f0005000000352c05000000e800 5e00bc01000000003b0000001f0005000000352c05000000e800 5e00bc01000000003b0000001f0005000000352c05000000e800 - {e=>1,n=>0,a=>112,m=>-1,d=>-3,j=>'SE3',l=>4,c=>-2,k=>50,h=>1,b=>4,g=>7,f=>'UE6',o=>103,i=>1} 70007401000001003e000000090003000000323c000000006700 70007401000001003e000000090003000000323c000000006700 70007401000001003e000000090003000000323c000000006700 70007401000001003e000000090003000000323c000000006700 - {e=>7,n=>6,a=>-116,m=>1,d=>3,j=>'SEM1',l=>3,c=>0,k=>117,h=>5,b=>5,g=>7,f=>'UE0',o=>207,i=>-1} 8cffc50000000700380000003d0007000000750b06000000cf00 8cffc50000000700380000003d0007000000750b06000000cf00 8cffc50000000700380000003d0007000000750b06000000cf00 8cffc50000000700380000003d0007000000750b06000000cf00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; }; - {a=>59,b=>6} 3b00000006000000 3b00000006000000 3b00000006000000 3b00000006000000 - {a=>-72,b=>6} b8ffffff06000000 b8ffffff06000000 b8ffffff06000000 b8ffffff06000000 - {a=>-11,b=>2} f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 - {a=>-120,b=>5} 88ffffff05000000 88ffffff05000000 88ffffff05000000 88ffffff05000000 - {a=>16,b=>4} 1000000004000000 1000000004000000 1000000004000000 1000000004000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>-6,b=>5} faffffff25000000 faffffff25000000 faffffff25000000 faffffff25000000 - {c=>2,a=>-12,b=>0} f4ffffff10000000 f4ffffff10000000 f4ffffff10000000 f4ffffff10000000 - {c=>-1,a=>-6,b=>7} faffffff3f000000 faffffff3f000000 faffffff3f000000 faffffff3f000000 - {c=>-3,a=>126,b=>1} 7e00000029000000 7e00000029000000 7e00000029000000 7e00000029000000 - {c=>-2,a=>3,b=>2} 0300000032000000 0300000032000000 0300000032000000 0300000032000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>6,b=>4,d=>1} 060000006c000000 060000006c000000 060000006c000000 060000006c000000 - {c=>2,a=>-111,b=>6,d=>-3} 91ffffff56010000 91ffffff56010000 91ffffff56010000 91ffffff56010000 - {c=>1,a=>-80,b=>4,d=>-3} b0ffffff4c010000 b0ffffff4c010000 b0ffffff4c010000 b0ffffff4c010000 - {c=>3,a=>54,b=>4,d=>0} 360000001c000000 360000001c000000 360000001c000000 360000001c000000 - {c=>-1,a=>-73,b=>5,d=>-4} b7ffffff3d010000 b7ffffff3d010000 b7ffffff3d010000 b7ffffff3d010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-2,a=>59,b=>4,d=>1} 3b000000740000000100 3b000000740000000100 3b000000740000000100 3b000000740000000100 - {e=>4,c=>3,a=>-20,b=>1,d=>-3} ecffffff590100000400 ecffffff590100000400 ecffffff590100000400 ecffffff590100000400 - {e=>3,c=>-4,a=>59,b=>0,d=>-2} 3b000000a00100000300 3b000000a00100000300 3b000000a00100000300 3b000000a00100000300 - {e=>5,c=>-4,a=>-67,b=>2,d=>2} bdffffffa20000000500 bdffffffa20000000500 bdffffffa20000000500 bdffffffa20000000500 - {e=>7,c=>1,a=>-13,b=>2,d=>2} f3ffffff8a0000000700 f3ffffff8a0000000700 f3ffffff8a0000000700 f3ffffff8a0000000700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>3,a=>-90,b=>0,d=>-4,f=>'UE5'} a6ffffff18010000040005000000 a6ffffff18010000040005000000 a6ffffff18010000040005000000 a6ffffff18010000040005000000 - {e=>4,c=>-3,a=>-120,b=>6,d=>-4,f=>'UE3'} 88ffffff2e010000040003000000 88ffffff2e010000040003000000 88ffffff2e010000040003000000 88ffffff2e010000040003000000 - {e=>2,c=>2,a=>94,b=>0,d=>-1,f=>'UE7'} 5e000000d0010000020007000000 5e000000d0010000020007000000 5e000000d0010000020007000000 5e000000d0010000020007000000 - {e=>7,c=>2,a=>51,b=>2,d=>0,f=>'UE3'} 3300000012000000070003000000 3300000012000000070003000000 3300000012000000070003000000 3300000012000000070003000000 - {e=>1,c=>-1,a=>74,b=>1,d=>1,f=>'UE6'} 4a00000079000000010006000000 4a00000079000000010006000000 4a00000079000000010006000000 4a00000079000000010006000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>2,c=>3,a=>-102,g=>2,b=>7,d=>2,f=>'UE1'} 9affffff9f000000020011000000 9affffff9f000000020011000000 9affffff9f000000020011000000 9affffff9f000000020011000000 - {e=>5,c=>0,a=>55,g=>0,b=>3,d=>1,f=>'UE1'} 3700000043000000050001000000 3700000043000000050001000000 3700000043000000050001000000 3700000043000000050001000000 - {e=>7,c=>0,a=>-113,g=>0,b=>6,d=>-2,f=>'UE1'} 8fffffff86010000070001000000 8fffffff86010000070001000000 8fffffff86010000070001000000 8fffffff86010000070001000000 - {e=>3,c=>3,a=>56,g=>5,b=>5,d=>-1,f=>'UE3'} 38000000dd01000003002b000000 38000000dd01000003002b000000 38000000dd01000003002b000000 38000000dd01000003002b000000 - {e=>4,c=>-2,a=>-74,g=>2,b=>3,d=>-1,f=>'UE4'} b6fffffff3010000040014000000 b6fffffff3010000040014000000 b6fffffff3010000040014000000 b6fffffff3010000040014000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-4,a=>98,g=>3,b=>6,d=>-4,f=>'UE7'} 620000002601000001001f000000 620000002601000001001f000000 620000002601000001001f000000 620000002601000001001f000000 - {e=>6,c=>-1,a=>-100,g=>6,b=>1,d=>-2,f=>'UE2'} 9cffffffb9010000060032000000 9cffffffb9010000060032000000 9cffffffb9010000060032000000 9cffffffb9010000060032000000 - {e=>3,c=>0,a=>-41,g=>4,b=>6,d=>1,f=>'UE2'} d7ffffff46000000030022000000 d7ffffff46000000030022000000 d7ffffff46000000030022000000 d7ffffff46000000030022000000 - {e=>3,c=>-4,a=>74,g=>2,b=>2,d=>-3,f=>'UE4'} 4a00000062010000030014000000 4a00000062010000030014000000 4a00000062010000030014000000 4a00000062010000030014000000 - {e=>2,c=>2,a=>-78,g=>4,b=>4,d=>-2,f=>'UE7'} b2ffffff94010000020027000000 b2ffffff94010000020027000000 b2ffffff94010000020027000000 b2ffffff94010000020027000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>14,d=>-2,c=>-3,h=>7,b=>3,g=>7,f=>'UE6'} 0e000000ab01000001003e0000000700 0e000000ab01000001003e0000000700 0e000000ab01000001003e0000000700 0e000000ab01000001003e0000000700 - {e=>5,a=>-111,d=>-2,c=>-2,h=>7,b=>0,g=>5,f=>'UE0'} 91ffffffb00100000500280000000700 91ffffffb00100000500280000000700 91ffffffb00100000500280000000700 91ffffffb00100000500280000000700 - {e=>6,a=>68,d=>-3,c=>1,h=>7,b=>2,g=>1,f=>'UE2'} 440000004a01000006000a0000000700 440000004a01000006000a0000000700 440000004a01000006000a0000000700 440000004a01000006000a0000000700 - {e=>5,a=>-108,d=>1,c=>-3,h=>7,b=>1,g=>4,f=>'UE3'} 94ffffff690000000500230000000700 94ffffff690000000500230000000700 94ffffff690000000500230000000700 94ffffff690000000500230000000700 - {e=>3,a=>114,d=>-2,c=>-1,h=>6,b=>1,g=>2,f=>'UE5'} 72000000b90100000300150000000600 72000000b90100000300150000000600 72000000b90100000300150000000600 72000000b90100000300150000000600 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>-51,d=>-4,c=>2,h=>0,b=>1,g=>7,f=>'UE3',i=>-4} cdffffff1101000002003b0000002000 cdffffff1101000002003b0000002000 cdffffff1101000002003b0000002000 cdffffff1101000002003b0000002000 - {e=>2,a=>-42,d=>2,c=>3,h=>7,b=>3,g=>2,f=>'UE5',i=>1} d6ffffff9b0000000200150000000f00 d6ffffff9b0000000200150000000f00 d6ffffff9b0000000200150000000f00 d6ffffff9b0000000200150000000f00 - {e=>1,a=>47,d=>3,c=>3,h=>1,b=>0,g=>4,f=>'UE0',i=>-4} 2f000000d80000000100200000002100 2f000000d80000000100200000002100 2f000000d80000000100200000002100 2f000000d80000000100200000002100 - {e=>0,a=>-80,d=>-1,c=>-4,h=>5,b=>2,g=>4,f=>'UE7',i=>0} b0ffffffe20100000000270000000500 b0ffffffe20100000000270000000500 b0ffffffe20100000000270000000500 b0ffffffe20100000000270000000500 - {e=>2,a=>-76,d=>-1,c=>1,h=>5,b=>6,g=>3,f=>'UE6',i=>2} b4ffffffce01000002001e0000001500 b4ffffffce01000002001e0000001500 b4ffffffce01000002001e0000001500 b4ffffffce01000002001e0000001500 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>-74,d=>2,j=>'SEM1',c=>0,h=>7,b=>0,g=>2,f=>'UE7',i=>-3} b6ffffff800000000500170000002f0007000000 b6ffffff800000000500170000002f0007000000 b6ffffff800000000500170000002f0007000000 b6ffffff800000000500170000002f0007000000 - {e=>5,a=>94,d=>-1,j=>'SEM4',c=>3,h=>3,b=>5,g=>2,f=>'UE6',i=>-3} 5e000000dd0100000500160000002b0004000000 5e000000dd0100000500160000002b0004000000 5e000000dd0100000500160000002b0004000000 5e000000dd0100000500160000002b0004000000 - {e=>6,a=>-63,d=>-3,j=>'SE2',c=>3,h=>3,b=>5,g=>1,f=>'UE1',i=>2} c1ffffff5d010000060009000000130002000000 c1ffffff5d010000060009000000130002000000 c1ffffff5d010000060009000000130002000000 c1ffffff5d010000060009000000130002000000 - {e=>2,a=>15,d=>3,j=>'SEM3',c=>0,h=>2,b=>4,g=>5,f=>'UE7',i=>-4} 0f000000c400000002002f000000220005000000 0f000000c400000002002f000000220005000000 0f000000c400000002002f000000220005000000 0f000000c400000002002f000000220005000000 - {e=>4,a=>-16,d=>-4,j=>'SEM4',c=>-3,h=>4,b=>7,g=>2,f=>'UE3',i=>1} f0ffffff2f0100000400130000000c0004000000 f0ffffff2f0100000400130000000c0004000000 f0ffffff2f0100000400130000000c0004000000 f0ffffff2f0100000400130000000c0004000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>7,a=>-113,d=>0,j=>'SE3',c=>2,k=>96,h=>4,b=>7,g=>5,f=>'UE3',i=>0} 8fffffff1700000007002b0000000400030000006000 8fffffff1700000007002b0000000400030000006000 8fffffff1700000007002b0000000400030000006000 8fffffff1700000007002b0000000400030000006000 - {e=>2,a=>-5,d=>-4,j=>'SEM4',c=>-1,k=>28,h=>2,b=>4,g=>0,f=>'UE0',i=>1} fbffffff3c0100000200000000000a00040000001c00 fbffffff3c0100000200000000000a00040000001c00 fbffffff3c0100000200000000000a00040000001c00 fbffffff3c0100000200000000000a00040000001c00 - {e=>5,a=>52,d=>-3,j=>'SE3',c=>-3,k=>-1,h=>2,b=>6,g=>1,f=>'UE6',i=>1} 340000006e01000005000e0000000a0003000000ff00 340000006e01000005000e0000000a0003000000ff00 340000006e01000005000e0000000a0003000000ff00 340000006e01000005000e0000000a0003000000ff00 - {e=>4,a=>-47,d=>-3,j=>'SE2',c=>2,k=>112,h=>6,b=>3,g=>2,f=>'UE3',i=>1} d1ffffff530100000400130000000e00020000007000 d1ffffff530100000400130000000e00020000007000 d1ffffff530100000400130000000e00020000007000 d1ffffff530100000400130000000e00020000007000 - {e=>4,a=>-78,d=>2,j=>'SE3',c=>2,k=>55,h=>1,b=>0,g=>5,f=>'UE2',i=>1} b2ffffff9000000004002a0000000900030000003700 b2ffffff9000000004002a0000000900030000003700 b2ffffff9000000004002a0000000900030000003700 b2ffffff9000000004002a0000000900030000003700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>0,a=>-33,d=>-4,j=>'SEM1',l=>0,c=>-2,k=>46,h=>6,b=>0,g=>3,f=>'UE7',i=>-2} dfffffff3001000000001f0000003600070000002e00 dfffffff3001000000001f0000003600070000002e00 dfffffff3001000000001f0000003600070000002e00 dfffffff3001000000001f0000003600070000002e00 - {e=>3,a=>78,d=>-4,j=>'SE3',l=>1,c=>-1,k=>-21,h=>5,b=>3,g=>5,f=>'UE2',i=>-3} 4e0000003b01000003002a0000002d0003000000eb01 4e0000003b01000003002a0000002d0003000000eb01 4e0000003b01000003002a0000002d0003000000eb01 4e0000003b01000003002a0000002d0003000000eb01 - {e=>3,a=>-6,d=>0,j=>'SE0',l=>2,c=>-1,k=>54,h=>1,b=>1,g=>0,f=>'UE6',i=>2} faffffff390000000300060000001100000000003602 faffffff390000000300060000001100000000003602 faffffff390000000300060000001100000000003602 faffffff390000000300060000001100000000003602 - {e=>3,a=>-92,d=>2,j=>'SEM2',l=>3,c=>-3,k=>28,h=>0,b=>5,g=>6,f=>'UE1',i=>0} a4ffffffad0000000300310000000000060000001c03 a4ffffffad0000000300310000000000060000001c03 a4ffffffad0000000300310000000000060000001c03 a4ffffffad0000000300310000000000060000001c03 - {e=>0,a=>109,d=>3,j=>'SE1',l=>7,c=>-1,k=>116,h=>4,b=>4,g=>6,f=>'UE3',i=>-3} 6d000000fc0000000000330000002c00010000007407 6d000000fc0000000000330000002c00010000007407 6d000000fc0000000000330000002c00010000007407 6d000000fc0000000000330000002c00010000007407 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>61,m=>0,d=>3,j=>'SEM3',l=>5,c=>-4,k=>-68,h=>1,b=>6,g=>5,f=>'UE4',i=>0} 3d000000e600000001002c000000010005000000bc05 3d000000e600000001002c000000010005000000bc05 3d000000e600000001002c000000010005000000bc05 3d000000e600000001002c000000010005000000bc05 - {e=>2,a=>-25,m=>-1,d=>2,j=>'SE2',l=>3,c=>-2,k=>-89,h=>3,b=>3,g=>4,f=>'UE1',i=>0} e7ffffffb3000000020021000000030002000000a73b e7ffffffb3000000020021000000030002000000a73b e7ffffffb3000000020021000000030002000000a73b e7ffffffb3000000020021000000030002000000a73b - {e=>2,a=>14,m=>0,d=>3,j=>'SEM3',l=>7,c=>1,k=>75,h=>6,b=>7,g=>6,f=>'UE5',i=>0} 0e000000cf0000000200350000000600050000004b07 0e000000cf0000000200350000000600050000004b07 0e000000cf0000000200350000000600050000004b07 0e000000cf0000000200350000000600050000004b07 - {e=>6,a=>-81,m=>-2,d=>3,j=>'SEM1',l=>1,c=>3,k=>45,h=>1,b=>0,g=>2,f=>'UE7',i=>-4} afffffffd80000000600170000002100070000002d31 afffffffd80000000600170000002100070000002d31 afffffffd80000000600170000002100070000002d31 afffffffd80000000600170000002100070000002d31 - {e=>0,a=>-15,m=>-2,d=>2,j=>'SEM1',l=>6,c=>-4,k=>52,h=>4,b=>4,g=>4,f=>'UE1',i=>2} f1ffffffa40000000000210000001400070000003436 f1ffffffa40000000000210000001400070000003436 f1ffffffa40000000000210000001400070000003436 f1ffffffa40000000000210000001400070000003436 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>7,n=>3,a=>-25,m=>2,d=>0,j=>'SE0',l=>5,c=>3,k=>-128,h=>6,b=>7,g=>1,f=>'UE4',i=>2} e7ffffff1f00000007000c000000160000000000801503000000 e7ffffff1f00000007000c000000160000000000801503000000 e7ffffff1f00000007000c000000160000000000801503000000 e7ffffff1f00000007000c000000160000000000801503000000 - {e=>4,n=>1,a=>31,m=>2,d=>-1,j=>'SE2',l=>0,c=>-1,k=>-106,h=>3,b=>0,g=>2,f=>'UE7',i=>0} 1f000000f8010000040017000000030002000000961001000000 1f000000f8010000040017000000030002000000961001000000 1f000000f8010000040017000000030002000000961001000000 1f000000f8010000040017000000030002000000961001000000 - {e=>7,n=>5,a=>42,m=>-4,d=>-4,j=>'SEM2',l=>3,c=>-4,k=>82,h=>1,b=>6,g=>7,f=>'UE0',i=>-1} 2a00000026010000070038000000390006000000522305000000 2a00000026010000070038000000390006000000522305000000 2a00000026010000070038000000390006000000522305000000 2a00000026010000070038000000390006000000522305000000 - {e=>3,n=>5,a=>51,m=>-4,d=>2,j=>'SEM4',l=>7,c=>3,k=>-87,h=>1,b=>2,g=>0,f=>'UE5',i=>0} 330000009a000000030005000000010004000000a92705000000 330000009a000000030005000000010004000000a92705000000 330000009a000000030005000000010004000000a92705000000 330000009a000000030005000000010004000000a92705000000 - {e=>0,n=>7,a=>31,m=>-3,d=>2,j=>'SE1',l=>2,c=>2,k=>-41,h=>5,b=>4,g=>6,f=>'UE1',i=>2} 1f00000094000000000031000000150001000000d72a07000000 1f00000094000000000031000000150001000000d72a07000000 1f00000094000000000031000000150001000000d72a07000000 1f00000094000000000031000000150001000000d72a07000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>6,a=>-128,m=>-1,d=>0,j=>'SE2',l=>1,c=>0,k=>-95,h=>3,b=>5,g=>7,f=>'UE6',o=>62,i=>2} 80ffffff0500000000003e000000130002000000a139060000003e00 80ffffff0500000000003e000000130002000000a139060000003e00 80ffffff0500000000003e000000130002000000a139060000003e00 80ffffff0500000000003e000000130002000000a139060000003e00 - {e=>3,n=>5,a=>-9,m=>-4,d=>1,j=>'SEM1',l=>3,c=>3,k=>-61,h=>2,b=>6,g=>0,f=>'UE5',o=>76,i=>1} f7ffffff5e0000000300050000000a0007000000c323050000004c00 f7ffffff5e0000000300050000000a0007000000c323050000004c00 f7ffffff5e0000000300050000000a0007000000c323050000004c00 f7ffffff5e0000000300050000000a0007000000c323050000004c00 - {e=>4,n=>7,a=>15,m=>1,d=>-2,j=>'SEM2',l=>6,c=>2,k=>-46,h=>3,b=>5,g=>4,f=>'UE0',o=>51,i=>-1} 0f000000950100000400200000003b0006000000d20e070000003300 0f000000950100000400200000003b0006000000d20e070000003300 0f000000950100000400200000003b0006000000d20e070000003300 0f000000950100000400200000003b0006000000d20e070000003300 - {e=>7,n=>2,a=>-103,m=>2,d=>2,j=>'SEM3',l=>3,c=>-2,k=>75,h=>4,b=>7,g=>4,f=>'UE2',o=>76,i=>-1} 99ffffffb70000000700220000003c00050000004b13020000004c00 99ffffffb70000000700220000003c00050000004b13020000004c00 99ffffffb70000000700220000003c00050000004b13020000004c00 99ffffffb70000000700220000003c00050000004b13020000004c00 - {e=>6,n=>2,a=>-114,m=>-3,d=>-4,j=>'SEM1',l=>5,c=>-2,k=>88,h=>6,b=>0,g=>5,f=>'UE3',o=>44,i=>-3} 8effffff3001000006002b0000002e0007000000582d020000002c00 8effffff3001000006002b0000002e0007000000582d020000002c00 8effffff3001000006002b0000002e0007000000582d020000002c00 8effffff3001000006002b0000002e0007000000582d020000002c00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; }; - {a=>20,b=>5} 1400000005000000 1400000005000000 1400000005000000 1400000005000000 - {a=>-55,b=>5} c9ffffff05000000 c9ffffff05000000 c9ffffff05000000 c9ffffff05000000 - {a=>98,b=>5} 6200000005000000 6200000005000000 6200000005000000 6200000005000000 - {a=>-119,b=>4} 89ffffff04000000 89ffffff04000000 89ffffff04000000 89ffffff04000000 - {a=>-90,b=>0} a6ffffff00000000 a6ffffff00000000 a6ffffff00000000 a6ffffff00000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; }; - {c=>-3,a=>-84,b=>3} acffffff2b000000 acffffff2b000000 acffffff2b000000 acffffff2b000000 - {c=>-4,a=>5,b=>3} 0500000023000000 0500000023000000 0500000023000000 0500000023000000 - {c=>0,a=>-27,b=>6} e5ffffff06000000 e5ffffff06000000 e5ffffff06000000 e5ffffff06000000 - {c=>1,a=>41,b=>1} 2900000009000000 2900000009000000 2900000009000000 2900000009000000 - {c=>2,a=>-56,b=>5} c8ffffff15000000 c8ffffff15000000 c8ffffff15000000 c8ffffff15000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>38,b=>5,d=>-1} 26000000ed010000 26000000ed010000 26000000ed010000 26000000ed010000 - {c=>-4,a=>-66,b=>1,d=>2} beffffffa1000000 beffffffa1000000 beffffffa1000000 beffffffa1000000 - {c=>-2,a=>-17,b=>2,d=>0} efffffff32000000 efffffff32000000 efffffff32000000 efffffff32000000 - {c=>-3,a=>-93,b=>4,d=>3} a3ffffffec000000 a3ffffffec000000 a3ffffffec000000 a3ffffffec000000 - {c=>3,a=>83,b=>6,d=>0} 530000001e000000 530000001e000000 530000001e000000 530000001e000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>-2,a=>79,b=>7,d=>-1} 4f000000f70100000300 4f000000f70100000300 4f000000f70100000300 4f000000f70100000300 - {e=>0,c=>2,a=>118,b=>4,d=>-4} 76000000140100000000 76000000140100000000 76000000140100000000 76000000140100000000 - {e=>6,c=>0,a=>-24,b=>0,d=>3} e8ffffffc00000000600 e8ffffffc00000000600 e8ffffffc00000000600 e8ffffffc00000000600 - {e=>4,c=>-1,a=>-90,b=>3,d=>-3} a6ffffff7b0100000400 a6ffffff7b0100000400 a6ffffff7b0100000400 a6ffffff7b0100000400 - {e=>3,c=>1,a=>80,b=>3,d=>2} 500000008b0000000300 500000008b0000000300 500000008b0000000300 500000008b0000000300 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>0,c=>-3,a=>-26,b=>6,d=>-1,f=>'UE1'} e6ffffffee010000000001000000 e6ffffffee010000000001000000 e6ffffffee010000000001000000 e6ffffffee010000000001000000 - {e=>4,c=>2,a=>124,b=>4,d=>-4,f=>'UE2'} 7c00000014010000040002000000 7c00000014010000040002000000 7c00000014010000040002000000 7c00000014010000040002000000 - {e=>7,c=>-2,a=>-9,b=>1,d=>3,f=>'UE2'} f7fffffff1000000070002000000 f7fffffff1000000070002000000 f7fffffff1000000070002000000 f7fffffff1000000070002000000 - {e=>7,c=>0,a=>122,b=>4,d=>2,f=>'UE5'} 7a00000084000000070005000000 7a00000084000000070005000000 7a00000084000000070005000000 7a00000084000000070005000000 - {e=>1,c=>-4,a=>-12,b=>6,d=>-4,f=>'UE4'} f4ffffff26010000010004000000 f4ffffff26010000010004000000 f4ffffff26010000010004000000 f4ffffff26010000010004000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>7,c=>-4,a=>-80,g=>7,b=>2,d=>3,f=>'UE2'} b0ffffffe200000007003a000000 b0ffffffe200000007003a000000 b0ffffffe200000007003a000000 b0ffffffe200000007003a000000 - {e=>1,c=>2,a=>93,g=>2,b=>1,d=>3,f=>'UE0'} 5d000000d1000000010010000000 5d000000d1000000010010000000 5d000000d1000000010010000000 5d000000d1000000010010000000 - {e=>0,c=>0,a=>-46,g=>2,b=>3,d=>-3,f=>'UE6'} d2ffffff43010000000016000000 d2ffffff43010000000016000000 d2ffffff43010000000016000000 d2ffffff43010000000016000000 - {e=>4,c=>1,a=>120,g=>0,b=>2,d=>1,f=>'UE6'} 780000004a000000040006000000 780000004a000000040006000000 780000004a000000040006000000 780000004a000000040006000000 - {e=>3,c=>0,a=>19,g=>6,b=>7,d=>-4,f=>'UE0'} 1300000007010000030030000000 1300000007010000030030000000 1300000007010000030030000000 1300000007010000030030000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>6,c=>-2,a=>-99,g=>4,b=>1,d=>0,f=>'UE0'} 9dffffff31000000060020000000 9dffffff31000000060020000000 9dffffff31000000060020000000 9dffffff31000000060020000000 - {e=>0,c=>0,a=>-111,g=>1,b=>4,d=>-1,f=>'UE6'} 91ffffffc401000000000e000000 91ffffffc401000000000e000000 91ffffffc401000000000e000000 91ffffffc401000000000e000000 - {e=>0,c=>1,a=>106,g=>1,b=>3,d=>3,f=>'UE0'} 6a000000cb000000000008000000 6a000000cb000000000008000000 6a000000cb000000000008000000 6a000000cb000000000008000000 - {e=>4,c=>-3,a=>94,g=>0,b=>2,d=>1,f=>'UE6'} 5e0000006a000000040006000000 5e0000006a000000040006000000 5e0000006a000000040006000000 5e0000006a000000040006000000 - {e=>7,c=>-4,a=>-48,g=>2,b=>3,d=>2,f=>'UE6'} d0ffffffa3000000070016000000 d0ffffffa3000000070016000000 d0ffffffa3000000070016000000 d0ffffffa3000000070016000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>4,a=>-127,d=>2,c=>-2,h=>0,b=>1,g=>6,f=>'UE0'} 81ffffffb10000000400300000000000 81ffffffb10000000400300000000000 81ffffffb10000000400300000000000 81ffffffb10000000400300000000000 - {e=>0,a=>16,d=>-2,c=>-1,h=>5,b=>0,g=>2,f=>'UE6'} 10000000b80100000000160000000500 10000000b80100000000160000000500 10000000b80100000000160000000500 10000000b80100000000160000000500 - {e=>7,a=>-107,d=>2,c=>0,h=>1,b=>6,g=>7,f=>'UE5'} 95ffffff8600000007003d0000000100 95ffffff8600000007003d0000000100 95ffffff8600000007003d0000000100 95ffffff8600000007003d0000000100 - {e=>3,a=>53,d=>-2,c=>0,h=>0,b=>0,g=>5,f=>'UE0'} 35000000800100000300280000000000 35000000800100000300280000000000 35000000800100000300280000000000 35000000800100000300280000000000 - {e=>5,a=>33,d=>3,c=>0,h=>6,b=>7,g=>3,f=>'UE7'} 21000000c700000005001f0000000600 21000000c700000005001f0000000600 21000000c700000005001f0000000600 21000000c700000005001f0000000600 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>3,d=>0,c=>1,h=>4,b=>3,g=>2,f=>'UE0',i=>-2} 030000000b0000000100100000003400 030000000b0000000100100000003400 030000000b0000000100100000003400 030000000b0000000100100000003400 - {e=>1,a=>-126,d=>0,c=>0,h=>1,b=>1,g=>7,f=>'UE7',i=>-4} 82ffffff0100000001003f0000002100 82ffffff0100000001003f0000002100 82ffffff0100000001003f0000002100 82ffffff0100000001003f0000002100 - {e=>2,a=>58,d=>2,c=>-2,h=>1,b=>2,g=>4,f=>'UE4',i=>0} 3a000000b20000000200240000000100 3a000000b20000000200240000000100 3a000000b20000000200240000000100 3a000000b20000000200240000000100 - {e=>4,a=>66,d=>-4,c=>-3,h=>7,b=>2,g=>5,f=>'UE4',i=>-4} 420000002a01000004002c0000002700 420000002a01000004002c0000002700 420000002a01000004002c0000002700 420000002a01000004002c0000002700 - {e=>5,a=>9,d=>-1,c=>3,h=>4,b=>3,g=>3,f=>'UE3',i=>3} 09000000db01000005001b0000001c00 09000000db01000005001b0000001c00 09000000db01000005001b0000001c00 09000000db01000005001b0000001c00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>6,a=>73,d=>2,j=>'SEM3',c=>-1,h=>3,b=>0,g=>6,f=>'UE4',i=>0} 49000000b8000000060034000000030005000000 49000000b8000000060034000000030005000000 49000000b8000000060034000000030005000000 49000000b8000000060034000000030005000000 - {e=>1,a=>24,d=>0,j=>'SEM2',c=>-3,h=>7,b=>5,g=>1,f=>'UE3',i=>3} 180000002d00000001000b0000001f0006000000 180000002d00000001000b0000001f0006000000 180000002d00000001000b0000001f0006000000 180000002d00000001000b0000001f0006000000 - {e=>0,a=>-128,d=>0,j=>'SEM3',c=>1,h=>4,b=>7,g=>1,f=>'UE0',i=>-1} 80ffffff0f0000000000080000003c0005000000 80ffffff0f0000000000080000003c0005000000 80ffffff0f0000000000080000003c0005000000 80ffffff0f0000000000080000003c0005000000 - {e=>5,a=>-96,d=>1,j=>'SE1',c=>-2,h=>4,b=>4,g=>7,f=>'UE3',i=>-2} a0ffffff7400000005003b000000340001000000 a0ffffff7400000005003b000000340001000000 a0ffffff7400000005003b000000340001000000 a0ffffff7400000005003b000000340001000000 - {e=>0,a=>54,d=>-1,j=>'SEM1',c=>-3,h=>3,b=>5,g=>0,f=>'UE7',i=>3} 36000000ed0100000000070000001b0007000000 36000000ed0100000000070000001b0007000000 36000000ed0100000000070000001b0007000000 36000000ed0100000000070000001b0007000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>3,a=>-71,d=>-2,j=>'SEM2',c=>-3,k=>-37,h=>1,b=>1,g=>2,f=>'UE1',i=>1} b9ffffffa9010000030011000000090006000000db00 b9ffffffa9010000030011000000090006000000db00 b9ffffffa9010000030011000000090006000000db00 b9ffffffa9010000030011000000090006000000db00 - {e=>6,a=>14,d=>1,j=>'SE2',c=>-3,k=>-10,h=>2,b=>0,g=>7,f=>'UE1',i=>1} 0e000000680000000600390000000a0002000000f600 0e000000680000000600390000000a0002000000f600 0e000000680000000600390000000a0002000000f600 0e000000680000000600390000000a0002000000f600 - {e=>1,a=>-4,d=>-4,j=>'SE1',c=>0,k=>-70,h=>2,b=>0,g=>7,f=>'UE0',i=>-2} fcffffff00010000010038000000320001000000ba00 fcffffff00010000010038000000320001000000ba00 fcffffff00010000010038000000320001000000ba00 fcffffff00010000010038000000320001000000ba00 - {e=>0,a=>-105,d=>0,j=>'SEM1',c=>3,k=>-94,h=>3,b=>4,g=>4,f=>'UE1',i=>1} 97ffffff1c0000000000210000000b0007000000a200 97ffffff1c0000000000210000000b0007000000a200 97ffffff1c0000000000210000000b0007000000a200 97ffffff1c0000000000210000000b0007000000a200 - {e=>0,a=>-18,d=>3,j=>'SEM4',c=>0,k=>76,h=>6,b=>7,g=>7,f=>'UE1',i=>-3} eeffffffc70000000000390000002e00040000004c00 eeffffffc70000000000390000002e00040000004c00 eeffffffc70000000000390000002e00040000004c00 eeffffffc70000000000390000002e00040000004c00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>0,a=>-72,d=>1,j=>'SE1',l=>1,c=>2,k=>-123,h=>6,b=>0,g=>0,f=>'UE0',i=>2} b8ffffff500000000000000000001600010000008501 b8ffffff500000000000000000001600010000008501 b8ffffff500000000000000000001600010000008501 b8ffffff500000000000000000001600010000008501 - {e=>4,a=>38,d=>0,j=>'SE3',l=>3,c=>-3,k=>109,h=>0,b=>0,g=>6,f=>'UE4',i=>-2} 26000000280000000400340000003000030000006d03 26000000280000000400340000003000030000006d03 26000000280000000400340000003000030000006d03 26000000280000000400340000003000030000006d03 - {e=>1,a=>-38,d=>0,j=>'SEM4',l=>7,c=>1,k=>88,h=>4,b=>5,g=>1,f=>'UE2',i=>0} daffffff0d00000001000a0000000400040000005807 daffffff0d00000001000a0000000400040000005807 daffffff0d00000001000a0000000400040000005807 daffffff0d00000001000a0000000400040000005807 - {e=>3,a=>-30,d=>-3,j=>'SEM3',l=>1,c=>0,k=>47,h=>7,b=>3,g=>4,f=>'UE1',i=>1} e2ffffff430100000300210000000f00050000002f01 e2ffffff430100000300210000000f00050000002f01 e2ffffff430100000300210000000f00050000002f01 e2ffffff430100000300210000000f00050000002f01 - {e=>2,a=>49,d=>-4,j=>'SEM3',l=>5,c=>2,k=>101,h=>0,b=>0,g=>1,f=>'UE5',i=>-4} 310000001001000002000d0000002000050000006505 310000001001000002000d0000002000050000006505 310000001001000002000d0000002000050000006505 310000001001000002000d0000002000050000006505 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>2,a=>72,m=>-1,d=>-1,j=>'SE1',l=>2,c=>-3,k=>28,h=>7,b=>0,g=>6,f=>'UE7',i=>0} 48000000e80100000200370000000700010000001c3a 48000000e80100000200370000000700010000001c3a 48000000e80100000200370000000700010000001c3a 48000000e80100000200370000000700010000001c3a - {e=>5,a=>-114,m=>3,d=>3,j=>'SE0',l=>7,c=>-3,k=>-79,h=>1,b=>2,g=>6,f=>'UE1',i=>2} 8effffffea000000050031000000110000000000b11f 8effffffea000000050031000000110000000000b11f 8effffffea000000050031000000110000000000b11f 8effffffea000000050031000000110000000000b11f - {e=>6,a=>-48,m=>1,d=>-3,j=>'SE2',l=>2,c=>-3,k=>78,h=>0,b=>5,g=>1,f=>'UE7',i=>-4} d0ffffff6d01000006000f0000002000020000004e0a d0ffffff6d01000006000f0000002000020000004e0a d0ffffff6d01000006000f0000002000020000004e0a d0ffffff6d01000006000f0000002000020000004e0a - {e=>5,a=>101,m=>-2,d=>3,j=>'SE3',l=>3,c=>-3,k=>-125,h=>5,b=>4,g=>0,f=>'UE1',i=>-3} 65000000ec0000000500010000002d00030000008333 65000000ec0000000500010000002d00030000008333 65000000ec0000000500010000002d00030000008333 65000000ec0000000500010000002d00030000008333 - {e=>4,a=>-7,m=>2,d=>1,j=>'SE1',l=>7,c=>-2,k=>8,h=>4,b=>7,g=>5,f=>'UE1',i=>-2} f9ffffff770000000400290000003400010000000817 f9ffffff770000000400290000003400010000000817 f9ffffff770000000400290000003400010000000817 f9ffffff770000000400290000003400010000000817 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>2,a=>-110,m=>-1,d=>3,j=>'SEM1',l=>6,c=>-3,k=>119,h=>0,b=>3,g=>3,f=>'UE4',i=>0} 92ffffffeb00000003001c000000000007000000773e02000000 92ffffffeb00000003001c000000000007000000773e02000000 92ffffffeb00000003001c000000000007000000773e02000000 92ffffffeb00000003001c000000000007000000773e02000000 - {e=>4,n=>0,a=>-68,m=>3,d=>-1,j=>'SEM4',l=>7,c=>0,k=>57,h=>0,b=>3,g=>7,f=>'UE7',i=>-2} bcffffffc301000004003f000000300004000000391f00000000 bcffffffc301000004003f000000300004000000391f00000000 bcffffffc301000004003f000000300004000000391f00000000 bcffffffc301000004003f000000300004000000391f00000000 - {e=>4,n=>6,a=>-6,m=>-2,d=>-1,j=>'SE1',l=>3,c=>3,k=>127,h=>3,b=>6,g=>5,f=>'UE3',i=>2} faffffffde01000004002b0000001300010000007f3306000000 faffffffde01000004002b0000001300010000007f3306000000 faffffffde01000004002b0000001300010000007f3306000000 faffffffde01000004002b0000001300010000007f3306000000 - {e=>1,n=>0,a=>-116,m=>-2,d=>1,j=>'SE1',l=>7,c=>-2,k=>-82,h=>7,b=>1,g=>4,f=>'UE7',i=>3} 8cffffff710000000100270000001f0001000000ae3700000000 8cffffff710000000100270000001f0001000000ae3700000000 8cffffff710000000100270000001f0001000000ae3700000000 8cffffff710000000100270000001f0001000000ae3700000000 - {e=>5,n=>5,a=>122,m=>-3,d=>3,j=>'SEM2',l=>2,c=>-2,k=>31,h=>3,b=>1,g=>5,f=>'UE0',i=>1} 7a000000f10000000500280000000b00060000001f2a05000000 7a000000f10000000500280000000b00060000001f2a05000000 7a000000f10000000500280000000b00060000001f2a05000000 7a000000f10000000500280000000b00060000001f2a05000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>5,n=>1,a=>-10,m=>1,d=>-1,j=>'SE2',l=>2,c=>0,k=>99,h=>6,b=>3,g=>7,f=>'UE6',o=>213,i=>-2} f6ffffffc301000005003e000000360002000000630a01000000d500 f6ffffffc301000005003e000000360002000000630a01000000d500 f6ffffffc301000005003e000000360002000000630a01000000d500 f6ffffffc301000005003e000000360002000000630a01000000d500 - {e=>0,n=>3,a=>53,m=>-2,d=>-1,j=>'SE1',l=>7,c=>1,k=>25,h=>3,b=>2,g=>5,f=>'UE3',o=>128,i=>3} 35000000ca01000000002b0000001b00010000001937030000008000 35000000ca01000000002b0000001b00010000001937030000008000 35000000ca01000000002b0000001b00010000001937030000008000 35000000ca01000000002b0000001b00010000001937030000008000 - {e=>5,n=>2,a=>23,m=>1,d=>-2,j=>'SEM2',l=>3,c=>-3,k=>-114,h=>1,b=>1,g=>2,f=>'UE6',o=>170,i=>-4} 17000000a90100000500160000002100060000008e0b02000000aa00 17000000a90100000500160000002100060000008e0b02000000aa00 17000000a90100000500160000002100060000008e0b02000000aa00 17000000a90100000500160000002100060000008e0b02000000aa00 - {e=>7,n=>7,a=>-19,m=>-1,d=>-1,j=>'SE3',l=>2,c=>0,k=>-61,h=>3,b=>3,g=>7,f=>'UE6',o=>181,i=>-1} edffffffc301000007003e0000003b0003000000c33a07000000b500 edffffffc301000007003e0000003b0003000000c33a07000000b500 edffffffc301000007003e0000003b0003000000c33a07000000b500 edffffffc301000007003e0000003b0003000000c33a07000000b500 - {e=>5,n=>5,a=>-62,m=>0,d=>-4,j=>'SEM4',l=>6,c=>-2,k=>-114,h=>3,b=>4,g=>6,f=>'UE0',o=>248,i=>3} c2ffffff340100000500300000001b00040000008e0605000000f800 c2ffffff340100000500300000001b00040000008e0605000000f800 c2ffffff340100000500300000001b00040000008e0605000000f800 c2ffffff340100000500300000001b00040000008e0605000000f800 = struct toobig { unsigned char a:2; }; - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>2} 02 02 02 02 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 = struct toobig { unsigned char a:2; unsigned char b:7; }; - {a=>0,b=>93} 005d 005d 005d 005d - {a=>3,b=>125} 037d 037d 037d 037d - {a=>1,b=>103} 0167 0167 0167 0167 - {a=>0,b=>44} 002c 002c 002c 002c - {a=>2,b=>56} 0238 0238 0238 0238 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>1,b=>105} 0169 0169 0169 0169 - {a=>1,b=>69} 0145 0145 0145 0145 - {a=>0,b=>100} 0064 0064 0064 0064 - {a=>1,b=>64} 0140 0140 0140 0140 - {a=>1,b=>29} 011d 011d 011d 011d = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>2,a=>1,b=>120} 01780200 01780200 01780200 01780200 - {c=>3,a=>3,b=>117} 03750300 03750300 03750300 03750300 - {c=>2,a=>3,b=>66} 03420200 03420200 03420200 03420200 - {c=>2,a=>3,b=>40} 03280200 03280200 03280200 03280200 - {c=>3,a=>1,b=>78} 014e0300 014e0300 014e0300 014e0300 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>1,a=>0,b=>40,d=>29011} 002801005371 002801005371 002801005371 002801005371 - {c=>1,a=>1,b=>52,d=>7870} 01340100be1e 01340100be1e 01340100be1e 01340100be1e - {c=>3,a=>0,b=>127,d=>24484} 007f0300a45f 007f0300a45f 007f0300a45f 007f0300a45f - {c=>0,a=>1,b=>117,d=>2770} 01750000d20a 01750000d20a 01750000d20a 01750000d20a - {c=>0,a=>2,b=>117,d=>21525} 027500001554 027500001554 027500001554 027500001554 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>0,a=>2,b=>47,d=>5532} 022f00009c15 022f00009c15 022f00009c150000 022f00009c150000 - {c=>0,a=>2,b=>53,d=>17293} 023500008d43 023500008d43 023500008d430000 023500008d430000 - {c=>0,a=>0,b=>42,d=>15065} 002a0000d93a 002a0000d93a 002a0000d93a0000 002a0000d93a0000 - {c=>1,a=>2,b=>43,d=>26082} 022b0100e265 022b0100e265 022b0100e2650000 022b0100e2650000 - {c=>2,a=>0,b=>3,d=>23011} 00030200e359 00030200e359 00030200e3590000 00030200e3590000 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>0,c=>2,a=>1,b=>107,d=>14008} 016b0200b83600000000 016b0200b83600000000 016b0200b836000000000000 016b0200b836000000000000 - {e=>1,c=>1,a=>0,b=>109,d=>31882} 006d01008a7c01000000 006d01008a7c01000000 006d01008a7c000001000000 006d01008a7c000001000000 - {e=>2,c=>1,a=>0,b=>83,d=>27991} 00530100576d02000000 00530100576d02000000 00530100576d000002000000 00530100576d000002000000 - {e=>0,c=>3,a=>1,b=>74,d=>7214} 014a03002e1c00000000 014a03002e1c00000000 014a03002e1c000000000000 014a03002e1c000000000000 - {e=>0,c=>1,a=>0,b=>93,d=>28404} 005d0100f46e00000000 005d0100f46e00000000 005d0100f46e000000000000 005d0100f46e000000000000 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>2,c=>3,a=>2,b=>66,d=>17839,f=>37720169} 02420300af450200000069903f02 02420300af450200000069903f02 02420300af4500000200000069903f02 02420300af4500000200000069903f02 - {e=>2,c=>0,a=>2,b=>81,d=>29158,f=>19309962} 02510000e671020000008aa52601 02510000e671020000008aa52601 02510000e6710000020000008aa52601 02510000e6710000020000008aa52601 - {e=>0,c=>1,a=>2,b=>98,d=>18169,f=>163308787} 02620100f94600000000f3e4bb09 02620100f94600000000f3e4bb09 02620100f946000000000000f3e4bb09 02620100f946000000000000f3e4bb09 - {e=>0,c=>3,a=>3,b=>41,d=>24753,f=>707702915} 03290300b1600000000083b02e2a 03290300b1600000000083b02e2a 03290300b16000000000000083b02e2a 03290300b16000000000000083b02e2a - {e=>3,c=>0,a=>2,b=>18,d=>28569,f=>199312493} 02120000996f030000006d44e10b 02120000996f030000006d44e10b 02120000996f0000030000006d44e10b 02120000996f0000030000006d44e10b = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>3,c=>0,a=>3,g=>253,b=>73,d=>20290,f=>324422081} 03490000424f03000000c1495613fd 03490000424f03000000c1495613fd00 03490000424f000003000000c1495613fd000000 03490000424f000003000000c1495613fd000000 - {e=>2,c=>1,a=>2,g=>98,b=>58,d=>14829,f=>1109100526} 023a0100ed3902000000ee871b4262 023a0100ed3902000000ee871b426200 023a0100ed39000002000000ee871b4262000000 023a0100ed39000002000000ee871b4262000000 - {e=>1,c=>2,a=>3,g=>243,b=>82,d=>31588,f=>727978398} 03520200647b010000009e11642bf3 03520200647b010000009e11642bf300 03520200647b0000010000009e11642bf3000000 03520200647b0000010000009e11642bf3000000 - {e=>1,c=>1,a=>1,g=>104,b=>26,d=>22162,f=>432784954} 011a01009256010000003ac6cb1968 011a01009256010000003ac6cb196800 011a010092560000010000003ac6cb1968000000 011a010092560000010000003ac6cb1968000000 - {e=>0,c=>3,a=>3,g=>167,b=>62,d=>17539,f=>1939871904} 033e0300834400000000a018a073a7 033e0300834400000000a018a073a700 033e03008344000000000000a018a073a7000000 033e03008344000000000000a018a073a7000000 = struct toobig { char a; unsigned char b:2; }; - {a=>-24,b=>1} e801 e801 e801 e801 - {a=>61,b=>3} 3d03 3d03 3d03 3d03 - {a=>-95,b=>1} a101 a101 a101 a101 - {a=>-2,b=>2} fe02 fe02 fe02 fe02 - {a=>-71,b=>3} b903 b903 b903 b903 = struct toobig { char a; unsigned char b:2; unsigned char c:7; }; - {c=>113,a=>-30,b=>1} e20171 e20171 e20171 e20171 - {c=>77,a=>93,b=>3} 5d034d 5d034d 5d034d 5d034d - {c=>76,a=>-105,b=>0} 97004c 97004c 97004c 97004c - {c=>113,a=>-106,b=>0} 960071 960071 960071 960071 - {c=>111,a=>21,b=>3} 15036f 15036f 15036f 15036f = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>117,a=>4,b=>0} 040075 04007500 04007500 04007500 - {c=>110,a=>92,b=>1} 5c016e 5c016e00 5c016e00 5c016e00 - {c=>80,a=>1,b=>0} 010050 01005000 01005000 01005000 - {c=>115,a=>49,b=>0} 310073 31007300 31007300 31007300 - {c=>119,a=>-53,b=>1} cb0177 cb017700 cb017700 cb017700 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>119,a=>99,b=>1,d=>2} 6301770200 630177000200 630177000200 630177000200 - {c=>52,a=>-52,b=>2,d=>1} cc02340100 cc0234000100 cc0234000100 cc0234000100 - {c=>59,a=>2,b=>2,d=>0} 02023b0000 02023b000000 02023b000000 02023b000000 - {c=>25,a=>59,b=>3,d=>1} 3b03190100 3b0319000100 3b0319000100 3b0319000100 - {c=>52,a=>-19,b=>0,d=>0} ed00340000 ed0034000000 ed0034000000 ed0034000000 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>10626,c=>62,a=>76,b=>3,d=>2} 4c033e02008229 4c033e0002008229 4c033e0002008229 4c033e0002008229 - {e=>16013,c=>106,a=>-123,b=>2,d=>2} 85026a02008d3e 85026a0002008d3e 85026a0002008d3e 85026a0002008d3e - {e=>15778,c=>84,a=>-66,b=>1,d=>3} be01540300a23d be0154000300a23d be0154000300a23d be0154000300a23d - {e=>3225,c=>25,a=>-124,b=>1,d=>1} 8401190100990c 840119000100990c 840119000100990c 840119000100990c - {e=>27218,c=>32,a=>-118,b=>0,d=>2} 8a00200200526a 8a0020000200526a 8a0020000200526a 8a0020000200526a = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>21377,c=>115,a=>-29,b=>0,d=>3} e3007303008153 e300730003008153 e300730003008153 e300730003008153 - {e=>21700,c=>42,a=>-64,b=>3,d=>0} c0032a0000c454 c0032a000000c454 c0032a000000c454 c0032a000000c454 - {e=>20468,c=>93,a=>104,b=>0,d=>3} 68005d0300f44f 68005d000300f44f 68005d000300f44f 68005d000300f44f - {e=>31677,c=>22,a=>109,b=>2,d=>3} 6d02160300bd7b 6d0216000300bd7b 6d0216000300bd7b 6d0216000300bd7b - {e=>23636,c=>112,a=>-2,b=>1,d=>0} fe01700000545c fe0170000000545c fe0170000000545c fe0170000000545c = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>1537,c=>102,a=>-45,b=>3,d=>3,f=>0} d303660300010600000000 d30366000300010600000000 d30366000300010600000000 d30366000300010600000000 - {e=>22539,c=>10,a=>-66,b=>3,d=>1,f=>1} be030a01000b5801000000 be030a0001000b5801000000 be030a0001000b5801000000 be030a0001000b5801000000 - {e=>28767,c=>112,a=>28,b=>1,d=>1,f=>1} 1c017001005f7001000000 1c01700001005f7001000000 1c01700001005f7001000000 1c01700001005f7001000000 - {e=>10945,c=>37,a=>-128,b=>0,d=>0,f=>1} 8000250000c12a01000000 800025000000c12a01000000 800025000000c12a01000000 800025000000c12a01000000 - {e=>7837,c=>65,a=>-30,b=>2,d=>1,f=>2} e2024101009d1e02000000 e202410001009d1e02000000 e202410001009d1e02000000 e202410001009d1e02000000 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16952,c=>81,a=>-69,g=>1806494585,b=>0,d=>0,f=>1} bb0051000038420100000079ebac6b bb005100000038420100000079ebac6b bb005100000038420100000079ebac6b bb005100000038420100000079ebac6b - {e=>22905,c=>42,a=>28,g=>718498820,b=>3,d=>3,f=>0} 1c032a0300795900000000046cd32a 1c032a000300795900000000046cd32a 1c032a000300795900000000046cd32a 1c032a000300795900000000046cd32a - {e=>25314,c=>59,a=>-52,g=>851143488,b=>3,d=>3,f=>0} cc033b0300e26200000000406bbb32 cc033b000300e26200000000406bbb32 cc033b000300e26200000000406bbb32 cc033b000300e26200000000406bbb32 - {e=>9562,c=>91,a=>-56,g=>17470223,b=>0,d=>1,f=>0} c8005b01005a25000000000f930a01 c8005b0001005a25000000000f930a01 c8005b0001005a25000000000f930a01 c8005b0001005a25000000000f930a01 - {e=>19455,c=>19,a=>7,g=>1006255369,b=>0,d=>2,f=>3} 0700130200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>19431,a=>126,d=>3,c=>84,h=>119,b=>2,g=>10182399,f=>1} 7e02540300e74b01000000ff5e9b0077 7e0254000300e74b01000000ff5e9b007700 7e0254000300e74b01000000ff5e9b0077000000 7e0254000300e74b01000000ff5e9b0077000000 - {e=>1236,a=>51,d=>0,c=>82,h=>240,b=>2,g=>1480777427,f=>1} 3302520000d40401000000d3de4258f0 330252000000d40401000000d3de4258f000 330252000000d40401000000d3de4258f0000000 330252000000d40401000000d3de4258f0000000 - {e=>30136,a=>-73,d=>2,c=>69,h=>69,b=>0,g=>579636421,f=>2} b700450200b87502000000c58c8c2245 b70045000200b87502000000c58c8c224500 b70045000200b87502000000c58c8c2245000000 b70045000200b87502000000c58c8c2245000000 - {e=>25530,a=>-39,d=>2,c=>73,h=>143,b=>3,g=>1327623552,f=>3} d903490200ba630300000080ed214f8f d90349000200ba630300000080ed214f8f00 d90349000200ba630300000080ed214f8f000000 d90349000200ba630300000080ed214f8f000000 - {e=>29715,a=>81,d=>0,c=>33,h=>85,b=>0,g=>909633605,f=>1} 510021000013740100000045e8373655 51002100000013740100000045e837365500 51002100000013740100000045e8373655000000 51002100000013740100000045e8373655000000 = struct toobig { short a; unsigned char b:2; }; - {a=>-69,b=>3} bbff03 bbff0300 bbff0300 bbff0300 - {a=>-109,b=>1} 93ff01 93ff0100 93ff0100 93ff0100 - {a=>68,b=>2} 440002 44000200 44000200 44000200 - {a=>-46,b=>1} d2ff01 d2ff0100 d2ff0100 d2ff0100 - {a=>109,b=>0} 6d0000 6d000000 6d000000 6d000000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; }; - {c=>54,a=>-126,b=>1} 82ff0136 82ff0136 82ff0136 82ff0136 - {c=>117,a=>49,b=>0} 31000075 31000075 31000075 31000075 - {c=>60,a=>-49,b=>3} cfff033c cfff033c cfff033c cfff033c - {c=>21,a=>117,b=>0} 75000015 75000015 75000015 75000015 - {c=>6,a=>-91,b=>2} a5ff0206 a5ff0206 a5ff0206 a5ff0206 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>126,a=>87,b=>0} 5700007e 5700007e 5700007e 5700007e - {c=>27,a=>-45,b=>1} d3ff011b d3ff011b d3ff011b d3ff011b - {c=>6,a=>-11,b=>2} f5ff0206 f5ff0206 f5ff0206 f5ff0206 - {c=>55,a=>63,b=>0} 3f000037 3f000037 3f000037 3f000037 - {c=>121,a=>81,b=>0} 51000079 51000079 51000079 51000079 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>11,a=>-34,b=>0,d=>1} deff000b0100 deff000b0100 deff000b0100 deff000b0100 - {c=>109,a=>-11,b=>2,d=>1} f5ff026d0100 f5ff026d0100 f5ff026d0100 f5ff026d0100 - {c=>79,a=>-9,b=>1,d=>2} f7ff014f0200 f7ff014f0200 f7ff014f0200 f7ff014f0200 - {c=>12,a=>121,b=>3,d=>3} 7900030c0300 7900030c0300 7900030c0300 7900030c0300 - {c=>3,a=>-105,b=>1,d=>0} 97ff01030000 97ff01030000 97ff01030000 97ff01030000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>16815,c=>31,a=>-103,b=>3,d=>0} 99ff031f0000af41 99ff031f0000af41 99ff031f0000af41 99ff031f0000af41 - {e=>30240,c=>36,a=>-51,b=>1,d=>2} cdff012402002076 cdff012402002076 cdff012402002076 cdff012402002076 - {e=>7916,c=>40,a=>47,b=>3,d=>1} 2f0003280100ec1e 2f0003280100ec1e 2f0003280100ec1e 2f0003280100ec1e - {e=>18293,c=>39,a=>19,b=>3,d=>2} 1300032702007547 1300032702007547 1300032702007547 1300032702007547 - {e=>20458,c=>127,a=>-47,b=>1,d=>3} d1ff017f0300ea4f d1ff017f0300ea4f d1ff017f0300ea4f d1ff017f0300ea4f = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>4625,c=>71,a=>-47,b=>0,d=>0} d1ff004700001112 d1ff004700001112 d1ff004700001112 d1ff004700001112 - {e=>32168,c=>81,a=>26,b=>2,d=>1} 1a0002510100a87d 1a0002510100a87d 1a0002510100a87d 1a0002510100a87d - {e=>16938,c=>8,a=>95,b=>0,d=>2} 5f00000802002a42 5f00000802002a42 5f00000802002a42 5f00000802002a42 - {e=>7085,c=>73,a=>-59,b=>0,d=>1} c5ff00490100ad1b c5ff00490100ad1b c5ff00490100ad1b c5ff00490100ad1b - {e=>22949,c=>98,a=>-95,b=>2,d=>0} a1ff02620000a559 a1ff02620000a559 a1ff02620000a559 a1ff02620000a559 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>15082,c=>111,a=>-95,b=>0,d=>0,f=>2} a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 - {e=>2765,c=>57,a=>35,b=>3,d=>0,f=>3} 230003390000cd0a03000000 230003390000cd0a03000000 230003390000cd0a03000000 230003390000cd0a03000000 - {e=>10395,c=>112,a=>-21,b=>2,d=>3,f=>1} ebff027003009b2801000000 ebff027003009b2801000000 ebff027003009b2801000000 ebff027003009b2801000000 - {e=>27935,c=>81,a=>-93,b=>3,d=>1,f=>3} a3ff035101001f6d03000000 a3ff035101001f6d03000000 a3ff035101001f6d03000000 a3ff035101001f6d03000000 - {e=>9978,c=>10,a=>-112,b=>2,d=>1,f=>0} 90ff020a0100fa2600000000 90ff020a0100fa2600000000 90ff020a0100fa2600000000 90ff020a0100fa2600000000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7540,c=>19,a=>-11,g=>1471494247,b=>0,d=>2,f=>2} f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 - {e=>21082,c=>15,a=>-52,g=>380642011,b=>2,d=>3,f=>0} ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 - {e=>20626,c=>108,a=>-96,g=>1260212640,b=>2,d=>1,f=>2} a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b - {e=>9472,c=>8,a=>-4,g=>1691591019,b=>2,d=>1,f=>2} fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 - {e=>9356,c=>8,a=>78,g=>959851153,b=>3,d=>3,f=>2} 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>15569,a=>49,d=>0,c=>98,h=>100,b=>2,g=>783521155,f=>1} 310002620000d13c010000008395b32e64 310002620000d13c010000008395b32e6400 310002620000d13c010000008395b32e64000000 310002620000d13c010000008395b32e64000000 - {e=>16972,a=>63,d=>1,c=>69,h=>90,b=>2,g=>609013294,f=>3} 3f00024501004c42030000002ece4c245a 3f00024501004c42030000002ece4c245a00 3f00024501004c42030000002ece4c245a000000 3f00024501004c42030000002ece4c245a000000 - {e=>28524,a=>82,d=>1,c=>98,h=>95,b=>0,g=>948610449,f=>0} 5200006201006c6f0000000091a58a385f 5200006201006c6f0000000091a58a385f00 5200006201006c6f0000000091a58a385f000000 5200006201006c6f0000000091a58a385f000000 - {e=>15555,a=>-7,d=>0,c=>124,h=>184,b=>1,g=>1579365922,f=>3} f9ff017c0000c33c030000002236235eb8 f9ff017c0000c33c030000002236235eb800 f9ff017c0000c33c030000002236235eb8000000 f9ff017c0000c33c030000002236235eb8000000 - {e=>30807,a=>89,d=>3,c=>74,h=>1,b=>3,g=>681792943,f=>3} 5900034a0300577803000000af55a32801 5900034a0300577803000000af55a3280100 5900034a0300577803000000af55a32801000000 5900034a0300577803000000af55a32801000000 = struct toobig { int a; unsigned char b:2; }; - {a=>95,b=>2} 5f00000002 5f0000000200 5f00000002000000 5f00000002000000 - {a=>81,b=>1} 5100000001 510000000100 5100000001000000 5100000001000000 - {a=>-17,b=>1} efffffff01 efffffff0100 efffffff01000000 efffffff01000000 - {a=>-1,b=>2} ffffffff02 ffffffff0200 ffffffff02000000 ffffffff02000000 - {a=>117,b=>2} 7500000002 750000000200 7500000002000000 7500000002000000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; }; - {c=>67,a=>69,b=>0} 450000000043 450000000043 4500000000430000 4500000000430000 - {c=>61,a=>-71,b=>3} b9ffffff033d b9ffffff033d b9ffffff033d0000 b9ffffff033d0000 - {c=>36,a=>-65,b=>0} bfffffff0024 bfffffff0024 bfffffff00240000 bfffffff00240000 - {c=>115,a=>-65,b=>2} bfffffff0273 bfffffff0273 bfffffff02730000 bfffffff02730000 - {c=>98,a=>-9,b=>1} f7ffffff0162 f7ffffff0162 f7ffffff01620000 f7ffffff01620000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>110,a=>-90,b=>2} a6ffffff026e a6ffffff026e a6ffffff026e0000 a6ffffff026e0000 - {c=>89,a=>109,b=>3} 6d0000000359 6d0000000359 6d00000003590000 6d00000003590000 - {c=>119,a=>55,b=>2} 370000000277 370000000277 3700000002770000 3700000002770000 - {c=>78,a=>-95,b=>2} a1ffffff024e a1ffffff024e a1ffffff024e0000 a1ffffff024e0000 - {c=>108,a=>-76,b=>2} b4ffffff026c b4ffffff026c b4ffffff026c0000 b4ffffff026c0000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>67,a=>-11,b=>2,d=>2} f5ffffff02430200 f5ffffff02430200 f5ffffff02430200 f5ffffff02430200 - {c=>94,a=>-43,b=>2,d=>0} d5ffffff025e0000 d5ffffff025e0000 d5ffffff025e0000 d5ffffff025e0000 - {c=>13,a=>12,b=>0,d=>3} 0c000000000d0300 0c000000000d0300 0c000000000d0300 0c000000000d0300 - {c=>20,a=>75,b=>1,d=>3} 4b00000001140300 4b00000001140300 4b00000001140300 4b00000001140300 - {c=>16,a=>99,b=>2,d=>0} 6300000002100000 6300000002100000 6300000002100000 6300000002100000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>15944,c=>81,a=>-88,b=>1,d=>1} a8ffffff01510100483e a8ffffff01510100483e a8ffffff01510100483e0000 a8ffffff01510100483e0000 - {e=>28784,c=>113,a=>-26,b=>3,d=>2} e6ffffff037102007070 e6ffffff037102007070 e6ffffff0371020070700000 e6ffffff0371020070700000 - {e=>25323,c=>4,a=>3,b=>2,d=>3} 0300000002040300eb62 0300000002040300eb62 0300000002040300eb620000 0300000002040300eb620000 - {e=>5631,c=>25,a=>126,b=>2,d=>2} 7e00000002190200ff15 7e00000002190200ff15 7e00000002190200ff150000 7e00000002190200ff150000 - {e=>30242,c=>81,a=>43,b=>1,d=>2} 2b000000015102002276 2b000000015102002276 2b0000000151020022760000 2b0000000151020022760000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>26399,c=>49,a=>-62,b=>2,d=>1} c2ffffff023101001f67 c2ffffff023101001f67 c2ffffff023101001f670000 c2ffffff023101001f670000 - {e=>29626,c=>6,a=>-98,b=>2,d=>1} 9effffff02060100ba73 9effffff02060100ba73 9effffff02060100ba730000 9effffff02060100ba730000 - {e=>10198,c=>108,a=>64,b=>2,d=>1} 40000000026c0100d627 40000000026c0100d627 40000000026c0100d6270000 40000000026c0100d6270000 - {e=>10521,c=>124,a=>34,b=>0,d=>3} 22000000007c03001929 22000000007c03001929 22000000007c030019290000 22000000007c030019290000 - {e=>25536,c=>37,a=>88,b=>3,d=>3} 5800000003250300c063 5800000003250300c063 5800000003250300c0630000 5800000003250300c0630000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>22897,c=>65,a=>-113,b=>1,d=>3,f=>2} 8fffffff01410300715902000000 8fffffff01410300715902000000 8fffffff014103007159000002000000 8fffffff014103007159000002000000 - {e=>28655,c=>21,a=>107,b=>1,d=>3,f=>0} 6b00000001150300ef6f00000000 6b00000001150300ef6f00000000 6b00000001150300ef6f000000000000 6b00000001150300ef6f000000000000 - {e=>11486,c=>82,a=>27,b=>0,d=>2,f=>1} 1b00000000520200de2c01000000 1b00000000520200de2c01000000 1b00000000520200de2c000001000000 1b00000000520200de2c000001000000 - {e=>8829,c=>47,a=>-44,b=>2,d=>1,f=>3} d4ffffff022f01007d2203000000 d4ffffff022f01007d2203000000 d4ffffff022f01007d22000003000000 d4ffffff022f01007d22000003000000 - {e=>24395,c=>33,a=>-122,b=>1,d=>0,f=>0} 86ffffff012100004b5f00000000 86ffffff012100004b5f00000000 86ffffff012100004b5f000000000000 86ffffff012100004b5f000000000000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>21026,c=>66,a=>92,g=>1659281310,b=>0,d=>2,f=>1} 5c000000004202002252010000009e9fe662 5c000000004202002252010000009e9fe662 5c0000000042020022520000010000009e9fe662 5c0000000042020022520000010000009e9fe662 - {e=>12920,c=>104,a=>10,g=>2107984876,b=>2,d=>2,f=>2} 0a00000002680200783202000000ec4ba57d 0a00000002680200783202000000ec4ba57d 0a000000026802007832000002000000ec4ba57d 0a000000026802007832000002000000ec4ba57d - {e=>3821,c=>93,a=>-11,g=>664990743,b=>1,d=>0,f=>0} f5ffffff015d0000ed0e0000000017f4a227 f5ffffff015d0000ed0e0000000017f4a227 f5ffffff015d0000ed0e00000000000017f4a227 f5ffffff015d0000ed0e00000000000017f4a227 - {e=>5353,c=>99,a=>-47,g=>171749847,b=>0,d=>1,f=>1} d1ffffff00630100e91401000000d7b13c0a d1ffffff00630100e91401000000d7b13c0a d1ffffff00630100e914000001000000d7b13c0a d1ffffff00630100e914000001000000d7b13c0a - {e=>3580,c=>89,a=>24,g=>668072177,b=>3,d=>3,f=>0} 1800000003590300fc0d00000000f1f8d127 1800000003590300fc0d00000000f1f8d127 1800000003590300fc0d000000000000f1f8d127 1800000003590300fc0d000000000000f1f8d127 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>26214,a=>3,d=>3,c=>2,h=>13,b=>0,g=>1018602210,f=>1} 0300000000020300666601000000e2a2b63c0d 0300000000020300666601000000e2a2b63c0d00 03000000000203006666000001000000e2a2b63c0d000000 03000000000203006666000001000000e2a2b63c0d000000 - {e=>1638,a=>90,d=>0,c=>29,h=>15,b=>0,g=>1932291266,f=>2} 5a000000001d0000660602000000c26c2c730f 5a000000001d0000660602000000c26c2c730f00 5a000000001d00006606000002000000c26c2c730f000000 5a000000001d00006606000002000000c26c2c730f000000 - {e=>19392,a=>98,d=>2,c=>117,h=>142,b=>2,g=>1646528382,f=>3} 6200000002750200c04b030000007e0724628e 6200000002750200c04b030000007e0724628e00 6200000002750200c04b0000030000007e0724628e000000 6200000002750200c04b0000030000007e0724628e000000 - {e=>9394,a=>18,d=>2,c=>23,h=>96,b=>0,g=>1695469510,f=>0} 1200000000170200b22400000000c6cf0e6560 1200000000170200b22400000000c6cf0e656000 1200000000170200b224000000000000c6cf0e6560000000 1200000000170200b224000000000000c6cf0e6560000000 - {e=>21676,a=>69,d=>2,c=>106,h=>240,b=>1,g=>2126836617,f=>2} 45000000016a0200ac540200000089f3c47ef0 45000000016a0200ac540200000089f3c47ef000 45000000016a0200ac5400000200000089f3c47ef0000000 45000000016a0200ac5400000200000089f3c47ef0000000 = struct toobig { long a; unsigned char b:2; }; - {a=>-12,b=>2} f4ffffff02 f4ffffff0200 f4ffffff02000000 f4ffffff02000000 - {a=>0,b=>1} 0000000001 000000000100 0000000001000000 0000000001000000 - {a=>60,b=>2} 3c00000002 3c0000000200 3c00000002000000 3c00000002000000 - {a=>61,b=>3} 3d00000003 3d0000000300 3d00000003000000 3d00000003000000 - {a=>122,b=>1} 7a00000001 7a0000000100 7a00000001000000 7a00000001000000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; }; - {c=>127,a=>-21,b=>2} ebffffff027f ebffffff027f ebffffff027f0000 ebffffff027f0000 - {c=>6,a=>-60,b=>0} c4ffffff0006 c4ffffff0006 c4ffffff00060000 c4ffffff00060000 - {c=>118,a=>-112,b=>2} 90ffffff0276 90ffffff0276 90ffffff02760000 90ffffff02760000 - {c=>100,a=>-92,b=>3} a4ffffff0364 a4ffffff0364 a4ffffff03640000 a4ffffff03640000 - {c=>11,a=>123,b=>1} 7b000000010b 7b000000010b 7b000000010b0000 7b000000010b0000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>82,a=>18,b=>3} 120000000352 120000000352 1200000003520000 1200000003520000 - {c=>34,a=>45,b=>2} 2d0000000222 2d0000000222 2d00000002220000 2d00000002220000 - {c=>18,a=>-66,b=>2} beffffff0212 beffffff0212 beffffff02120000 beffffff02120000 - {c=>41,a=>53,b=>1} 350000000129 350000000129 3500000001290000 3500000001290000 - {c=>97,a=>60,b=>0} 3c0000000061 3c0000000061 3c00000000610000 3c00000000610000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>124,a=>18,b=>1,d=>1} 12000000017c0100 12000000017c0100 12000000017c0100 12000000017c0100 - {c=>4,a=>-25,b=>3,d=>0} e7ffffff03040000 e7ffffff03040000 e7ffffff03040000 e7ffffff03040000 - {c=>9,a=>8,b=>0,d=>2} 0800000000090200 0800000000090200 0800000000090200 0800000000090200 - {c=>74,a=>-10,b=>2,d=>3} f6ffffff024a0300 f6ffffff024a0300 f6ffffff024a0300 f6ffffff024a0300 - {c=>20,a=>-100,b=>0,d=>3} 9cffffff00140300 9cffffff00140300 9cffffff00140300 9cffffff00140300 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>8288,c=>27,a=>27,b=>1,d=>0} 1b000000011b00006020 1b000000011b00006020 1b000000011b000060200000 1b000000011b000060200000 - {e=>31476,c=>62,a=>15,b=>2,d=>0} 0f000000023e0000f47a 0f000000023e0000f47a 0f000000023e0000f47a0000 0f000000023e0000f47a0000 - {e=>28645,c=>102,a=>-2,b=>0,d=>3} feffffff00660300e56f feffffff00660300e56f feffffff00660300e56f0000 feffffff00660300e56f0000 - {e=>5175,c=>47,a=>123,b=>3,d=>3} 7b000000032f03003714 7b000000032f03003714 7b000000032f030037140000 7b000000032f030037140000 - {e=>3986,c=>9,a=>92,b=>2,d=>2} 5c00000002090200920f 5c00000002090200920f 5c00000002090200920f0000 5c00000002090200920f0000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>26564,c=>47,a=>75,b=>2,d=>1} 4b000000022f0100c467 4b000000022f0100c467 4b000000022f0100c4670000 4b000000022f0100c4670000 - {e=>13162,c=>83,a=>-7,b=>3,d=>2} f9ffffff035302006a33 f9ffffff035302006a33 f9ffffff035302006a330000 f9ffffff035302006a330000 - {e=>21769,c=>111,a=>-87,b=>3,d=>2} a9ffffff036f02000955 a9ffffff036f02000955 a9ffffff036f020009550000 a9ffffff036f020009550000 - {e=>5436,c=>68,a=>-101,b=>3,d=>0} 9bffffff034400003c15 9bffffff034400003c15 9bffffff034400003c150000 9bffffff034400003c150000 - {e=>13380,c=>90,a=>86,b=>2,d=>0} 56000000025a00004434 56000000025a00004434 56000000025a000044340000 56000000025a000044340000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>23505,c=>0,a=>-30,b=>2,d=>3,f=>3} e2ffffff02000300d15b03000000 e2ffffff02000300d15b03000000 e2ffffff02000300d15b000003000000 e2ffffff02000300d15b000003000000 - {e=>29524,c=>34,a=>72,b=>2,d=>2,f=>0} 4800000002220200547300000000 4800000002220200547300000000 48000000022202005473000000000000 48000000022202005473000000000000 - {e=>8502,c=>60,a=>85,b=>1,d=>1,f=>1} 55000000013c0100362101000000 55000000013c0100362101000000 55000000013c01003621000001000000 55000000013c01003621000001000000 - {e=>3686,c=>42,a=>-13,b=>2,d=>0,f=>1} f3ffffff022a0000660e01000000 f3ffffff022a0000660e01000000 f3ffffff022a0000660e000001000000 f3ffffff022a0000660e000001000000 - {e=>26261,c=>48,a=>-62,b=>1,d=>0,f=>1} c2ffffff01300000956601000000 c2ffffff01300000956601000000 c2ffffff013000009566000001000000 c2ffffff013000009566000001000000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>25271,c=>5,a=>23,g=>1549434592,b=>0,d=>0,f=>3} 1700000000050000b76203000000e07e5a5c 1700000000050000b76203000000e07e5a5c 1700000000050000b762000003000000e07e5a5c 1700000000050000b762000003000000e07e5a5c - {e=>29769,c=>70,a=>53,g=>485498167,b=>3,d=>3,f=>3} 3500000003460300497403000000371df01c 3500000003460300497403000000371df01c 35000000034603004974000003000000371df01c 35000000034603004974000003000000371df01c - {e=>4324,c=>68,a=>105,g=>554750747,b=>0,d=>0,f=>1} 6900000000440000e410010000001bd31021 6900000000440000e410010000001bd31021 6900000000440000e4100000010000001bd31021 6900000000440000e4100000010000001bd31021 - {e=>17511,c=>94,a=>58,g=>250165519,b=>2,d=>2,f=>3} 3a000000025e02006744030000000f39e90e 3a000000025e02006744030000000f39e90e 3a000000025e020067440000030000000f39e90e 3a000000025e020067440000030000000f39e90e - {e=>14283,c=>79,a=>-97,g=>1714885120,b=>1,d=>2,f=>1} 9fffffff014f0200cb370100000000123766 9fffffff014f0200cb370100000000123766 9fffffff014f0200cb3700000100000000123766 9fffffff014f0200cb3700000100000000123766 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22593,a=>-105,d=>2,c=>125,h=>86,b=>2,g=>490502662,f=>2} 97ffffff027d0200415802000000067a3c1d56 97ffffff027d0200415802000000067a3c1d5600 97ffffff027d02004158000002000000067a3c1d56000000 97ffffff027d02004158000002000000067a3c1d56000000 - {e=>22467,a=>-25,d=>0,c=>60,h=>208,b=>0,g=>371229021,f=>0} e7ffffff003c0000c357000000005d812016d0 e7ffffff003c0000c357000000005d812016d000 e7ffffff003c0000c3570000000000005d812016d0000000 e7ffffff003c0000c3570000000000005d812016d0000000 - {e=>31600,a=>-7,d=>2,c=>78,h=>234,b=>0,g=>1056003073,f=>2} f9ffffff004e0200707b020000000154f13eea f9ffffff004e0200707b020000000154f13eea00 f9ffffff004e0200707b0000020000000154f13eea000000 f9ffffff004e0200707b0000020000000154f13eea000000 - {e=>12252,a=>38,d=>2,c=>1,h=>15,b=>1,g=>1441179725,f=>2} 2600000001010200dc2f020000004da8e6550f 2600000001010200dc2f020000004da8e6550f00 2600000001010200dc2f0000020000004da8e6550f000000 2600000001010200dc2f0000020000004da8e6550f000000 - {e=>29268,a=>28,d=>0,c=>18,h=>157,b=>1,g=>2064430442,f=>1} 1c000000011200005472010000006ab50c7b9d 1c000000011200005472010000006ab50c7b9d00 1c0000000112000054720000010000006ab50c7b9d000000 1c0000000112000054720000010000006ab50c7b9d000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>2} 02 02 02 02 - {a=>3} 03 03 03 03 - {a=>0} 00 00 00 00 - {a=>3} 03 03 03 03 - {a=>1} 01 01 01 01 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>3,b=>122} 037a 037a 037a 037a - {a=>0,b=>7} 0007 0007 0007 0007 - {a=>3,b=>2} 0302 0302 0302 0302 - {a=>1,b=>102} 0166 0166 0166 0166 - {a=>1,b=>57} 0139 0139 0139 0139 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>3,b=>86} 0356 0356 0356 0356 - {a=>2,b=>116} 0274 0274 0274 0274 - {a=>2,b=>29} 021d 021d 021d 021d - {a=>3,b=>95} 035f 035f 035f 035f - {a=>1,b=>22} 0116 0116 0116 0116 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>0,a=>1,b=>74} 014a0000 014a0000 014a0000 014a0000 - {c=>0,a=>2,b=>114} 02720000 02720000 02720000 02720000 - {c=>2,a=>3,b=>123} 037b0200 037b0200 037b0200 037b0200 - {c=>1,a=>2,b=>78} 024e0100 024e0100 024e0100 024e0100 - {c=>1,a=>2,b=>67} 02430100 02430100 02430100 02430100 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>0,a=>2,b=>89,d=>17148} 02590000fc42 02590000fc42 02590000fc42 02590000fc42 - {c=>3,a=>3,b=>1,d=>7923} 03010300f31e 03010300f31e 03010300f31e 03010300f31e - {c=>3,a=>3,b=>36,d=>24620} 032403002c60 032403002c60 032403002c60 032403002c60 - {c=>1,a=>1,b=>110,d=>27219} 016e0100536a 016e0100536a 016e0100536a 016e0100536a - {c=>1,a=>2,b=>119,d=>25127} 027701002762 027701002762 027701002762 027701002762 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>2,a=>1,b=>55,d=>24370} 01370200325f 01370200325f 01370200325f 01370200325f - {c=>3,a=>1,b=>76,d=>484} 014c0300e401 014c0300e401 014c0300e401 014c0300e401 - {c=>3,a=>0,b=>72,d=>28441} 00480300196f 00480300196f 00480300196f 00480300196f - {c=>0,a=>1,b=>4,d=>20335} 010400006f4f 010400006f4f 010400006f4f 010400006f4f - {c=>1,a=>3,b=>108,d=>25748} 036c01009464 036c01009464 036c01009464 036c01009464 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>2,c=>1,a=>3,b=>25,d=>14129} 03190100313702000000 03190100313702000000 03190100313702000000 03190100313702000000 - {e=>2,c=>1,a=>0,b=>43,d=>29105} 002b0100b17102000000 002b0100b17102000000 002b0100b17102000000 002b0100b17102000000 - {e=>2,c=>0,a=>2,b=>27,d=>17807} 021b00008f4502000000 021b00008f4502000000 021b00008f4502000000 021b00008f4502000000 - {e=>3,c=>0,a=>0,b=>93,d=>809} 005d0000290303000000 005d0000290303000000 005d0000290303000000 005d0000290303000000 - {e=>0,c=>3,a=>1,b=>44,d=>30562} 012c0300627700000000 012c0300627700000000 012c0300627700000000 012c0300627700000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>3,c=>2,a=>2,b=>10,d=>5501,f=>1254374167} 020a02007d1503000000173bc44a 020a02007d1503000000173bc44a 020a02007d1503000000173bc44a 020a02007d1503000000173bc44a - {e=>0,c=>3,a=>3,b=>108,d=>4783,f=>549387562} 036c0300af12000000002afdbe20 036c0300af12000000002afdbe20 036c0300af12000000002afdbe20 036c0300af12000000002afdbe20 - {e=>2,c=>1,a=>1,b=>71,d=>5216,f=>457981324} 014701006014020000008c3d4c1b 014701006014020000008c3d4c1b 014701006014020000008c3d4c1b 014701006014020000008c3d4c1b - {e=>0,c=>1,a=>0,b=>108,d=>3389,f=>260729659} 006c01003d0d000000003b6b8a0f 006c01003d0d000000003b6b8a0f 006c01003d0d000000003b6b8a0f 006c01003d0d000000003b6b8a0f - {e=>2,c=>3,a=>3,b=>78,d=>9795,f=>22588338} 034e0300432602000000b2ab5801 034e0300432602000000b2ab5801 034e0300432602000000b2ab5801 034e0300432602000000b2ab5801 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>0,c=>0,a=>3,g=>96,b=>9,d=>3499,f=>226878349} 03090000ab0d000000008de3850d60 03090000ab0d000000008de3850d60 03090000ab0d000000008de3850d60 03090000ab0d000000008de3850d60 - {e=>2,c=>0,a=>0,g=>93,b=>30,d=>5449,f=>524944825} 001e0000491502000000b9054a1f5d 001e0000491502000000b9054a1f5d 001e0000491502000000b9054a1f5d 001e0000491502000000b9054a1f5d - {e=>3,c=>2,a=>0,g=>121,b=>95,d=>26776,f=>1524019449} 005f0200986803000000f9b0d65a79 005f0200986803000000f9b0d65a79 005f0200986803000000f9b0d65a79 005f0200986803000000f9b0d65a79 - {e=>0,c=>1,a=>1,g=>154,b=>21,d=>23517,f=>1699556351} 01150100dd5b00000000ff2b4d659a 01150100dd5b00000000ff2b4d659a 01150100dd5b00000000ff2b4d659a 01150100dd5b00000000ff2b4d659a - {e=>0,c=>0,a=>1,g=>149,b=>13,d=>27687,f=>223666191} 010d0000276c000000000fe0540d95 010d0000276c000000000fe0540d95 010d0000276c000000000fe0540d95 010d0000276c000000000fe0540d95 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>-93,b=>2} a302 a302 a302 a302 - {a=>-56,b=>0} c800 c800 c800 c800 - {a=>-79,b=>1} b101 b101 b101 b101 - {a=>-126,b=>2} 8202 8202 8202 8202 - {a=>44,b=>0} 2c00 2c00 2c00 2c00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>88,a=>99,b=>0} 630058 630058 630058 630058 - {c=>14,a=>-42,b=>3} d6030e d6030e d6030e d6030e - {c=>110,a=>-33,b=>2} df026e df026e df026e df026e - {c=>83,a=>37,b=>3} 250353 250353 250353 250353 - {c=>75,a=>2,b=>0} 02004b 02004b 02004b 02004b = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>63,a=>-71,b=>0} b9003f b9003f b9003f b9003f - {c=>61,a=>68,b=>0} 44003d 44003d 44003d 44003d - {c=>111,a=>-7,b=>1} f9016f f9016f f9016f f9016f - {c=>6,a=>-14,b=>3} f20306 f20306 f20306 f20306 - {c=>25,a=>42,b=>0} 2a0019 2a0019 2a0019 2a0019 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>78,a=>-62,b=>3,d=>2} c2034e0200 c2034e0200 c2034e0200 c2034e0200 - {c=>120,a=>110,b=>1,d=>1} 6e01780100 6e01780100 6e01780100 6e01780100 - {c=>125,a=>-39,b=>1,d=>2} d9017d0200 d9017d0200 d9017d0200 d9017d0200 - {c=>49,a=>-83,b=>1,d=>3} ad01310300 ad01310300 ad01310300 ad01310300 - {c=>102,a=>-96,b=>2,d=>3} a002660300 a002660300 a002660300 a002660300 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>11659,c=>16,a=>72,b=>3,d=>2} 48031002008b2d 48031002008b2d 48031002008b2d 48031002008b2d - {e=>3023,c=>30,a=>121,b=>2,d=>1} 79021e0100cf0b 79021e0100cf0b 79021e0100cf0b 79021e0100cf0b - {e=>8049,c=>55,a=>-115,b=>1,d=>2} 8d01370200711f 8d01370200711f 8d01370200711f 8d01370200711f - {e=>11589,c=>80,a=>-12,b=>1,d=>1} f401500100452d f401500100452d f401500100452d f401500100452d - {e=>1954,c=>66,a=>-32,b=>0,d=>0} e000420000a207 e000420000a207 e000420000a207 e000420000a207 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>5026,c=>9,a=>122,b=>2,d=>3} 7a02090300a213 7a02090300a213 7a02090300a213 7a02090300a213 - {e=>31797,c=>98,a=>-83,b=>0,d=>2} ad00620200357c ad00620200357c ad00620200357c ad00620200357c - {e=>10931,c=>103,a=>-107,b=>2,d=>2} 9502670200b32a 9502670200b32a 9502670200b32a 9502670200b32a - {e=>6859,c=>82,a=>6,b=>1,d=>3} 0601520300cb1a 0601520300cb1a 0601520300cb1a 0601520300cb1a - {e=>27967,c=>53,a=>90,b=>1,d=>2} 5a013502003f6d 5a013502003f6d 5a013502003f6d 5a013502003f6d = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>32078,c=>33,a=>90,b=>0,d=>1,f=>1} 5a002101004e7d01000000 5a002101004e7d01000000 5a002101004e7d01000000 5a002101004e7d01000000 - {e=>30999,c=>21,a=>-47,b=>1,d=>1,f=>2} d101150100177902000000 d101150100177902000000 d101150100177902000000 d101150100177902000000 - {e=>5469,c=>52,a=>117,b=>0,d=>2,f=>0} 75003402005d1500000000 75003402005d1500000000 75003402005d1500000000 75003402005d1500000000 - {e=>30192,c=>87,a=>-54,b=>3,d=>3,f=>1} ca03570300f07501000000 ca03570300f07501000000 ca03570300f07501000000 ca03570300f07501000000 - {e=>5881,c=>2,a=>23,b=>1,d=>3,f=>0} 1701020300f91600000000 1701020300f91600000000 1701020300f91600000000 1701020300f91600000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16281,c=>25,a=>111,g=>1820714982,b=>1,d=>0,f=>0} 6f01190000993f00000000e6e7856c 6f01190000993f00000000e6e7856c 6f01190000993f00000000e6e7856c 6f01190000993f00000000e6e7856c - {e=>6891,c=>53,a=>-40,g=>97596344,b=>2,d=>2,f=>0} d802350200eb1a00000000b833d105 d802350200eb1a00000000b833d105 d802350200eb1a00000000b833d105 d802350200eb1a00000000b833d105 - {e=>3360,c=>31,a=>63,g=>761179706,b=>1,d=>0,f=>0} 3f011f0000200d000000003aae5e2d 3f011f0000200d000000003aae5e2d 3f011f0000200d000000003aae5e2d 3f011f0000200d000000003aae5e2d - {e=>16476,c=>63,a=>-85,g=>512020589,b=>3,d=>0,f=>3} ab033f00005c40030000006dd0841e ab033f00005c40030000006dd0841e ab033f00005c40030000006dd0841e ab033f00005c40030000006dd0841e - {e=>15061,c=>102,a=>-67,g=>473075273,b=>1,d=>1,f=>0} bd01660100d53a00000000498e321c bd01660100d53a00000000498e321c bd01660100d53a00000000498e321c bd01660100d53a00000000498e321c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22977,a=>-2,d=>2,c=>83,h=>109,b=>1,g=>868418545,f=>3} fe01530200c15903000000f103c3336d fe01530200c15903000000f103c3336d fe01530200c15903000000f103c3336d fe01530200c15903000000f103c3336d - {e=>12366,a=>-40,d=>0,c=>7,h=>103,b=>1,g=>1323876095,f=>1} d8010700004e3001000000ffbee84e67 d8010700004e3001000000ffbee84e67 d8010700004e3001000000ffbee84e67 d8010700004e3001000000ffbee84e67 - {e=>28796,a=>-113,d=>1,c=>90,h=>201,b=>3,g=>1452786621,f=>3} 8f035a01007c7003000000bdc39756c9 8f035a01007c7003000000bdc39756c9 8f035a01007c7003000000bdc39756c9 8f035a01007c7003000000bdc39756c9 - {e=>11159,a=>98,d=>2,c=>57,h=>40,b=>0,g=>1298924782,f=>1} 6200390200972b01000000ee046c4d28 6200390200972b01000000ee046c4d28 6200390200972b01000000ee046c4d28 6200390200972b01000000ee046c4d28 - {e=>2986,a=>35,d=>3,c=>121,h=>161,b=>3,g=>287355737,f=>1} 2303790300aa0b0100000059b32011a1 2303790300aa0b0100000059b32011a1 2303790300aa0b0100000059b32011a1 2303790300aa0b0100000059b32011a1 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>36,b=>2} 240002 240002 240002 240002 - {a=>-42,b=>0} d6ff00 d6ff00 d6ff00 d6ff00 - {a=>52,b=>2} 340002 340002 340002 340002 - {a=>52,b=>2} 340002 340002 340002 340002 - {a=>-48,b=>1} d0ff01 d0ff01 d0ff01 d0ff01 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>9,a=>-31,b=>1} e1ff0109 e1ff0109 e1ff0109 e1ff0109 - {c=>116,a=>-67,b=>0} bdff0074 bdff0074 bdff0074 bdff0074 - {c=>96,a=>-109,b=>3} 93ff0360 93ff0360 93ff0360 93ff0360 - {c=>112,a=>110,b=>1} 6e000170 6e000170 6e000170 6e000170 - {c=>85,a=>-99,b=>1} 9dff0155 9dff0155 9dff0155 9dff0155 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>59,a=>-96,b=>3} a0ff033b a0ff033b a0ff033b a0ff033b - {c=>67,a=>-103,b=>2} 99ff0243 99ff0243 99ff0243 99ff0243 - {c=>92,a=>-115,b=>1} 8dff015c 8dff015c 8dff015c 8dff015c - {c=>64,a=>19,b=>0} 13000040 13000040 13000040 13000040 - {c=>112,a=>95,b=>0} 5f000070 5f000070 5f000070 5f000070 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>78,a=>-30,b=>0,d=>1} e2ff004e0100 e2ff004e0100 e2ff004e0100 e2ff004e0100 - {c=>18,a=>106,b=>3,d=>1} 6a0003120100 6a0003120100 6a0003120100 6a0003120100 - {c=>55,a=>-74,b=>1,d=>2} b6ff01370200 b6ff01370200 b6ff01370200 b6ff01370200 - {c=>73,a=>20,b=>2,d=>0} 140002490000 140002490000 140002490000 140002490000 - {c=>17,a=>-82,b=>2,d=>0} aeff02110000 aeff02110000 aeff02110000 aeff02110000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>23152,c=>68,a=>35,b=>3,d=>1} 230003440100705a 230003440100705a 230003440100705a 230003440100705a - {e=>11271,c=>14,a=>65,b=>1,d=>1} 4100010e0100072c 4100010e0100072c 4100010e0100072c 4100010e0100072c - {e=>14141,c=>13,a=>16,b=>1,d=>2} 1000010d02003d37 1000010d02003d37 1000010d02003d37 1000010d02003d37 - {e=>13679,c=>79,a=>119,b=>3,d=>0} 7700034f00006f35 7700034f00006f35 7700034f00006f35 7700034f00006f35 - {e=>32421,c=>57,a=>49,b=>1,d=>0} 310001390000a57e 310001390000a57e 310001390000a57e 310001390000a57e = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>13261,c=>104,a=>-64,b=>3,d=>2} c0ff03680200cd33 c0ff03680200cd33 c0ff03680200cd33 c0ff03680200cd33 - {e=>14081,c=>16,a=>118,b=>2,d=>0} 7600021000000137 7600021000000137 7600021000000137 7600021000000137 - {e=>18138,c=>125,a=>-105,b=>3,d=>3} 97ff037d0300da46 97ff037d0300da46 97ff037d0300da46 97ff037d0300da46 - {e=>10748,c=>38,a=>-13,b=>0,d=>0} f3ff00260000fc29 f3ff00260000fc29 f3ff00260000fc29 f3ff00260000fc29 - {e=>2078,c=>92,a=>59,b=>0,d=>1} 3b00005c01001e08 3b00005c01001e08 3b00005c01001e08 3b00005c01001e08 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>7575,c=>96,a=>14,b=>1,d=>2,f=>0} 0e0001600200971d00000000 0e0001600200971d00000000 0e0001600200971d00000000 0e0001600200971d00000000 - {e=>14550,c=>56,a=>-116,b=>1,d=>0,f=>0} 8cff01380000d63800000000 8cff01380000d63800000000 8cff01380000d63800000000 8cff01380000d63800000000 - {e=>31077,c=>102,a=>118,b=>0,d=>3,f=>0} 760000660300657900000000 760000660300657900000000 760000660300657900000000 760000660300657900000000 - {e=>14802,c=>1,a=>-81,b=>2,d=>0,f=>3} afff02010000d23903000000 afff02010000d23903000000 afff02010000d23903000000 afff02010000d23903000000 - {e=>14877,c=>55,a=>26,b=>2,d=>2,f=>2} 1a00023702001d3a02000000 1a00023702001d3a02000000 1a00023702001d3a02000000 1a00023702001d3a02000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7844,c=>54,a=>27,g=>751275513,b=>0,d=>2,f=>1} 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c - {e=>11268,c=>97,a=>-121,g=>109432832,b=>2,d=>3,f=>3} 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 - {e=>23652,c=>90,a=>107,g=>836655276,b=>1,d=>3,f=>1} 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 - {e=>29274,c=>92,a=>101,g=>1563176679,b=>1,d=>1,f=>1} 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d - {e=>24723,c=>105,a=>-77,g=>980506780,b=>0,d=>3,f=>2} b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>17518,a=>-39,d=>3,c=>91,h=>162,b=>3,g=>1543066247,f=>1} d9ff035b03006e44010000008752f95ba2 d9ff035b03006e44010000008752f95ba2 d9ff035b03006e44010000008752f95ba2 d9ff035b03006e44010000008752f95ba2 - {e=>8378,a=>71,d=>1,c=>66,h=>137,b=>0,g=>834780984,f=>3} 470000420100ba200300000038bfc13189 470000420100ba200300000038bfc13189 470000420100ba200300000038bfc13189 470000420100ba200300000038bfc13189 - {e=>28729,a=>-103,d=>3,c=>19,h=>150,b=>3,g=>458128972,f=>2} 99ff031303003970020000004c7e4e1b96 99ff031303003970020000004c7e4e1b96 99ff031303003970020000004c7e4e1b96 99ff031303003970020000004c7e4e1b96 - {e=>2388,a=>86,d=>2,c=>85,h=>7,b=>2,g=>1947211790,f=>3} 5600025502005409030000000e18107407 5600025502005409030000000e18107407 5600025502005409030000000e18107407 5600025502005409030000000e18107407 - {e=>25964,a=>-72,d=>2,c=>127,h=>252,b=>3,g=>338601299,f=>3} b8ff037f02006c650300000053a52e14fc b8ff037f02006c650300000053a52e14fc b8ff037f02006c650300000053a52e14fc b8ff037f02006c650300000053a52e14fc = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>23,b=>3} 1700000003 1700000003 1700000003 1700000003 - {a=>93,b=>0} 5d00000000 5d00000000 5d00000000 5d00000000 - {a=>82,b=>3} 5200000003 5200000003 5200000003 5200000003 - {a=>-120,b=>3} 88ffffff03 88ffffff03 88ffffff03 88ffffff03 - {a=>-6,b=>2} faffffff02 faffffff02 faffffff02 faffffff02 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>118,a=>39,b=>1} 270000000176 270000000176 270000000176 270000000176 - {c=>36,a=>70,b=>1} 460000000124 460000000124 460000000124 460000000124 - {c=>28,a=>12,b=>1} 0c000000011c 0c000000011c 0c000000011c 0c000000011c - {c=>0,a=>-92,b=>0} a4ffffff0000 a4ffffff0000 a4ffffff0000 a4ffffff0000 - {c=>54,a=>84,b=>0} 540000000036 540000000036 540000000036 540000000036 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>29,a=>0,b=>1} 00000000011d 00000000011d 00000000011d 00000000011d - {c=>42,a=>-2,b=>3} feffffff032a feffffff032a feffffff032a feffffff032a - {c=>79,a=>100,b=>2} 64000000024f 64000000024f 64000000024f 64000000024f - {c=>46,a=>-76,b=>2} b4ffffff022e b4ffffff022e b4ffffff022e b4ffffff022e - {c=>57,a=>13,b=>3} 0d0000000339 0d0000000339 0d0000000339 0d0000000339 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>42,a=>54,b=>1,d=>3} 36000000012a0300 36000000012a0300 36000000012a0300 36000000012a0300 - {c=>23,a=>120,b=>3,d=>1} 7800000003170100 7800000003170100 7800000003170100 7800000003170100 - {c=>65,a=>67,b=>3,d=>3} 4300000003410300 4300000003410300 4300000003410300 4300000003410300 - {c=>36,a=>-14,b=>0,d=>2} f2ffffff00240200 f2ffffff00240200 f2ffffff00240200 f2ffffff00240200 - {c=>6,a=>61,b=>2,d=>3} 3d00000002060300 3d00000002060300 3d00000002060300 3d00000002060300 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>6171,c=>80,a=>-30,b=>1,d=>0} e2ffffff015000001b18 e2ffffff015000001b18 e2ffffff015000001b18 e2ffffff015000001b18 - {e=>13986,c=>17,a=>16,b=>2,d=>1} 1000000002110100a236 1000000002110100a236 1000000002110100a236 1000000002110100a236 - {e=>10321,c=>77,a=>-41,b=>2,d=>1} d7ffffff024d01005128 d7ffffff024d01005128 d7ffffff024d01005128 d7ffffff024d01005128 - {e=>4855,c=>52,a=>-59,b=>2,d=>2} c5ffffff02340200f712 c5ffffff02340200f712 c5ffffff02340200f712 c5ffffff02340200f712 - {e=>4433,c=>3,a=>-57,b=>2,d=>2} c7ffffff020302005111 c7ffffff020302005111 c7ffffff020302005111 c7ffffff020302005111 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>924,c=>33,a=>-21,b=>0,d=>1} ebffffff002101009c03 ebffffff002101009c03 ebffffff002101009c03 ebffffff002101009c03 - {e=>6351,c=>54,a=>-34,b=>1,d=>0} deffffff01360000cf18 deffffff01360000cf18 deffffff01360000cf18 deffffff01360000cf18 - {e=>1879,c=>52,a=>35,b=>1,d=>1} 23000000013401005707 23000000013401005707 23000000013401005707 23000000013401005707 - {e=>8238,c=>76,a=>32,b=>2,d=>1} 20000000024c01002e20 20000000024c01002e20 20000000024c01002e20 20000000024c01002e20 - {e=>31420,c=>54,a=>0,b=>1,d=>3} 0000000001360300bc7a 0000000001360300bc7a 0000000001360300bc7a 0000000001360300bc7a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>26010,c=>9,a=>2,b=>3,d=>0,f=>0} 02000000030900009a6500000000 02000000030900009a6500000000 02000000030900009a6500000000 02000000030900009a6500000000 - {e=>2064,c=>80,a=>-119,b=>3,d=>3,f=>3} 89ffffff03500300100803000000 89ffffff03500300100803000000 89ffffff03500300100803000000 89ffffff03500300100803000000 - {e=>31255,c=>2,a=>-82,b=>0,d=>0,f=>2} aeffffff00020000177a02000000 aeffffff00020000177a02000000 aeffffff00020000177a02000000 aeffffff00020000177a02000000 - {e=>3569,c=>113,a=>86,b=>2,d=>2,f=>1} 5600000002710200f10d01000000 5600000002710200f10d01000000 5600000002710200f10d01000000 5600000002710200f10d01000000 - {e=>17551,c=>23,a=>-128,b=>1,d=>3,f=>3} 80ffffff011703008f4403000000 80ffffff011703008f4403000000 80ffffff011703008f4403000000 80ffffff011703008f4403000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>22897,c=>67,a=>93,g=>236819416,b=>2,d=>0,f=>0} 5d00000002430000715900000000d8931d0e 5d00000002430000715900000000d8931d0e 5d00000002430000715900000000d8931d0e 5d00000002430000715900000000d8931d0e - {e=>31111,c=>74,a=>119,g=>1459711425,b=>2,d=>1,f=>3} 77000000024a0100877903000000c16d0157 77000000024a0100877903000000c16d0157 77000000024a0100877903000000c16d0157 77000000024a0100877903000000c16d0157 - {e=>13989,c=>102,a=>70,g=>1058309672,b=>3,d=>0,f=>2} 4600000003660000a536020000002886143f 4600000003660000a536020000002886143f 4600000003660000a536020000002886143f 4600000003660000a536020000002886143f - {e=>26791,c=>57,a=>7,g=>1365065929,b=>1,d=>2,f=>1} 0700000001390200a76801000000c9405d51 0700000001390200a76801000000c9405d51 0700000001390200a76801000000c9405d51 0700000001390200a76801000000c9405d51 - {e=>6858,c=>70,a=>-7,g=>1686921269,b=>3,d=>3,f=>1} f9ffffff03460300ca1a0100000035608c64 f9ffffff03460300ca1a0100000035608c64 f9ffffff03460300ca1a0100000035608c64 f9ffffff03460300ca1a0100000035608c64 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>32326,a=>82,d=>2,c=>71,h=>163,b=>1,g=>1658102310,f=>1} 5200000001470200467e0100000026a2d462a3 5200000001470200467e0100000026a2d462a3 5200000001470200467e0100000026a2d462a3 5200000001470200467e0100000026a2d462a3 - {e=>6558,a=>54,d=>0,c=>114,h=>224,b=>0,g=>240808537,f=>1} 36000000007200009e190100000059725a0ee0 36000000007200009e190100000059725a0ee0 36000000007200009e190100000059725a0ee0 36000000007200009e190100000059725a0ee0 - {e=>7128,a=>-105,d=>3,c=>78,h=>139,b=>2,g=>1841705631,f=>2} 97ffffff024e0300d81b020000009f32c66d8b 97ffffff024e0300d81b020000009f32c66d8b 97ffffff024e0300d81b020000009f32c66d8b 97ffffff024e0300d81b020000009f32c66d8b - {e=>30661,a=>87,d=>2,c=>117,h=>158,b=>1,g=>176849329,f=>1} 5700000001750200c57701000000b1818a0a9e 5700000001750200c57701000000b1818a0a9e 5700000001750200c57701000000b1818a0a9e 5700000001750200c57701000000b1818a0a9e - {e=>20458,a=>-35,d=>3,c=>6,h=>255,b=>3,g=>1305982333,f=>0} ddffffff03060300ea4f000000007db5d74dff ddffffff03060300ea4f000000007db5d74dff ddffffff03060300ea4f000000007db5d74dff ddffffff03060300ea4f000000007db5d74dff = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>-94,b=>3} a2ffffff03 a2ffffff03 a2ffffff03 a2ffffff03 - {a=>-70,b=>3} baffffff03 baffffff03 baffffff03 baffffff03 - {a=>-56,b=>0} c8ffffff00 c8ffffff00 c8ffffff00 c8ffffff00 - {a=>42,b=>1} 2a00000001 2a00000001 2a00000001 2a00000001 - {a=>80,b=>0} 5000000000 5000000000 5000000000 5000000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>70,a=>33,b=>2} 210000000246 210000000246 210000000246 210000000246 - {c=>99,a=>28,b=>2} 1c0000000263 1c0000000263 1c0000000263 1c0000000263 - {c=>31,a=>-81,b=>3} afffffff031f afffffff031f afffffff031f afffffff031f - {c=>60,a=>50,b=>1} 32000000013c 32000000013c 32000000013c 32000000013c - {c=>63,a=>-105,b=>3} 97ffffff033f 97ffffff033f 97ffffff033f 97ffffff033f = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>48,a=>-2,b=>1} feffffff0130 feffffff0130 feffffff0130 feffffff0130 - {c=>12,a=>35,b=>1} 23000000010c 23000000010c 23000000010c 23000000010c - {c=>66,a=>83,b=>0} 530000000042 530000000042 530000000042 530000000042 - {c=>88,a=>9,b=>0} 090000000058 090000000058 090000000058 090000000058 - {c=>96,a=>41,b=>1} 290000000160 290000000160 290000000160 290000000160 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>116,a=>-52,b=>3,d=>2} ccffffff03740200 ccffffff03740200 ccffffff03740200 ccffffff03740200 - {c=>2,a=>-30,b=>3,d=>2} e2ffffff03020200 e2ffffff03020200 e2ffffff03020200 e2ffffff03020200 - {c=>22,a=>31,b=>3,d=>2} 1f00000003160200 1f00000003160200 1f00000003160200 1f00000003160200 - {c=>103,a=>99,b=>1,d=>1} 6300000001670100 6300000001670100 6300000001670100 6300000001670100 - {c=>110,a=>-15,b=>0,d=>3} f1ffffff006e0300 f1ffffff006e0300 f1ffffff006e0300 f1ffffff006e0300 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>13673,c=>84,a=>122,b=>1,d=>3} 7a000000015403006935 7a000000015403006935 7a000000015403006935 7a000000015403006935 - {e=>31547,c=>111,a=>-80,b=>1,d=>0} b0ffffff016f00003b7b b0ffffff016f00003b7b b0ffffff016f00003b7b b0ffffff016f00003b7b - {e=>19845,c=>63,a=>77,b=>1,d=>3} 4d000000013f0300854d 4d000000013f0300854d 4d000000013f0300854d 4d000000013f0300854d - {e=>6913,c=>104,a=>127,b=>2,d=>1} 7f00000002680100011b 7f00000002680100011b 7f00000002680100011b 7f00000002680100011b - {e=>16426,c=>0,a=>57,b=>1,d=>0} 39000000010000002a40 39000000010000002a40 39000000010000002a40 39000000010000002a40 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>30485,c=>17,a=>-61,b=>1,d=>2} c3ffffff011102001577 c3ffffff011102001577 c3ffffff011102001577 c3ffffff011102001577 - {e=>4491,c=>69,a=>-114,b=>1,d=>3} 8effffff014503008b11 8effffff014503008b11 8effffff014503008b11 8effffff014503008b11 - {e=>1064,c=>91,a=>-67,b=>0,d=>0} bdffffff005b00002804 bdffffff005b00002804 bdffffff005b00002804 bdffffff005b00002804 - {e=>26263,c=>40,a=>2,b=>2,d=>1} 02000000022801009766 02000000022801009766 02000000022801009766 02000000022801009766 - {e=>1533,c=>107,a=>-62,b=>3,d=>3} c2ffffff036b0300fd05 c2ffffff036b0300fd05 c2ffffff036b0300fd05 c2ffffff036b0300fd05 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>6622,c=>119,a=>103,b=>2,d=>1,f=>3} 6700000002770100de1903000000 6700000002770100de1903000000 6700000002770100de1903000000 6700000002770100de1903000000 - {e=>7645,c=>92,a=>55,b=>0,d=>1,f=>3} 37000000005c0100dd1d03000000 37000000005c0100dd1d03000000 37000000005c0100dd1d03000000 37000000005c0100dd1d03000000 - {e=>23069,c=>56,a=>60,b=>3,d=>0,f=>2} 3c000000033800001d5a02000000 3c000000033800001d5a02000000 3c000000033800001d5a02000000 3c000000033800001d5a02000000 - {e=>27949,c=>1,a=>-7,b=>2,d=>3,f=>3} f9ffffff020103002d6d03000000 f9ffffff020103002d6d03000000 f9ffffff020103002d6d03000000 f9ffffff020103002d6d03000000 - {e=>11648,c=>90,a=>72,b=>2,d=>3,f=>1} 48000000025a0300802d01000000 48000000025a0300802d01000000 48000000025a0300802d01000000 48000000025a0300802d01000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>20058,c=>21,a=>-54,g=>527765798,b=>2,d=>1,f=>2} caffffff021501005a4e020000002611751f caffffff021501005a4e020000002611751f caffffff021501005a4e020000002611751f caffffff021501005a4e020000002611751f - {e=>31782,c=>68,a=>19,g=>946001649,b=>3,d=>0,f=>3} 1300000003440000267c03000000f1d66238 1300000003440000267c03000000f1d66238 1300000003440000267c03000000f1d66238 1300000003440000267c03000000f1d66238 - {e=>7380,c=>37,a=>-52,g=>464958575,b=>2,d=>3,f=>1} ccffffff02250300d41c010000006fb4b61b ccffffff02250300d41c010000006fb4b61b ccffffff02250300d41c010000006fb4b61b ccffffff02250300d41c010000006fb4b61b - {e=>21112,c=>42,a=>42,g=>906361925,b=>1,d=>0,f=>2} 2a000000012a000078520200000045fc0536 2a000000012a000078520200000045fc0536 2a000000012a000078520200000045fc0536 2a000000012a000078520200000045fc0536 - {e=>30855,c=>1,a=>53,g=>1190588411,b=>0,d=>0,f=>1} 3500000000010000877801000000fbeff646 3500000000010000877801000000fbeff646 3500000000010000877801000000fbeff646 3500000000010000877801000000fbeff646 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>12949,a=>112,d=>2,c=>46,h=>27,b=>1,g=>348067209,f=>0} 70000000012e02009532000000008915bf141b 70000000012e02009532000000008915bf141b 70000000012e02009532000000008915bf141b 70000000012e02009532000000008915bf141b - {e=>12614,a=>-75,d=>0,c=>88,h=>124,b=>2,g=>2115801870,f=>3} b5ffffff025800004631030000000e931c7e7c b5ffffff025800004631030000000e931c7e7c b5ffffff025800004631030000000e931c7e7c b5ffffff025800004631030000000e931c7e7c - {e=>22026,a=>-26,d=>1,c=>44,h=>122,b=>2,g=>1176974089,f=>1} e6ffffff022c01000a5601000000093327467a e6ffffff022c01000a5601000000093327467a e6ffffff022c01000a5601000000093327467a e6ffffff022c01000a5601000000093327467a - {e=>23544,a=>64,d=>3,c=>24,h=>65,b=>3,g=>598810224,f=>3} 4000000003180300f85b03000000701eb12341 4000000003180300f85b03000000701eb12341 4000000003180300f85b03000000701eb12341 4000000003180300f85b03000000701eb12341 - {e=>30624,a=>65,d=>0,c=>53,h=>114,b=>1,g=>378284213,f=>2} 4100000001350000a07702000000b5288c1672 4100000001350000a07702000000b5288c1672 4100000001350000a07702000000b5288c1672 4100000001350000a07702000000b5288c1672 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>0} 00 00 00 00 - {a=>3} 03 03 03 03 - {a=>2} 02 02 02 02 - {a=>1} 01 01 01 01 - {a=>3} 03 03 03 03 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>1,b=>60} 013c 013c 013c 013c - {a=>3,b=>93} 035d 035d 035d 035d - {a=>3,b=>13} 030d 030d 030d 030d - {a=>0,b=>66} 0042 0042 0042 0042 - {a=>0,b=>56} 0038 0038 0038 0038 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>2,b=>26} 021a 021a 021a 021a - {a=>1,b=>51} 0133 0133 0133 0133 - {a=>0,b=>90} 005a 005a 005a 005a - {a=>0,b=>63} 003f 003f 003f 003f - {a=>3,b=>46} 032e 032e 032e 032e = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>0,a=>3,b=>10} 030a0000 030a0000 030a0000 030a0000 - {c=>2,a=>1,b=>22} 01160200 01160200 01160200 01160200 - {c=>2,a=>3,b=>21} 03150200 03150200 03150200 03150200 - {c=>3,a=>1,b=>40} 01280300 01280300 01280300 01280300 - {c=>3,a=>2,b=>35} 02230300 02230300 02230300 02230300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>1,a=>3,b=>106,d=>4863} 036a0100ff12 036a0100ff12 036a0100ff12 036a0100ff12 - {c=>2,a=>3,b=>103,d=>15834} 03670200da3d 03670200da3d 03670200da3d 03670200da3d - {c=>2,a=>0,b=>63,d=>15070} 003f0200de3a 003f0200de3a 003f0200de3a 003f0200de3a - {c=>2,a=>3,b=>122,d=>25867} 037a02000b65 037a02000b65 037a02000b65 037a02000b65 - {c=>3,a=>3,b=>3,d=>19726} 030303000e4d 030303000e4d 030303000e4d 030303000e4d = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>3,a=>2,b=>61,d=>16632} 023d0300f840 023d0300f840 023d0300f840 023d0300f840 - {c=>3,a=>2,b=>27,d=>3303} 021b0300e70c 021b0300e70c 021b0300e70c 021b0300e70c - {c=>3,a=>0,b=>104,d=>32422} 00680300a67e 00680300a67e 00680300a67e 00680300a67e - {c=>2,a=>2,b=>11,d=>4097} 020b02000110 020b02000110 020b02000110 020b02000110 - {c=>0,a=>2,b=>22,d=>2075} 021600001b08 021600001b08 021600001b08 021600001b08 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>3,c=>2,a=>3,b=>70,d=>22538} 034602000a5803000000 034602000a5803000000 034602000a5803000000 034602000a5803000000 - {e=>1,c=>0,a=>2,b=>126,d=>20675} 027e0000c35001000000 027e0000c35001000000 027e0000c35001000000 027e0000c35001000000 - {e=>2,c=>0,a=>1,b=>97,d=>22568} 01610000285802000000 01610000285802000000 01610000285802000000 01610000285802000000 - {e=>2,c=>0,a=>3,b=>84,d=>1178} 035400009a0402000000 035400009a0402000000 035400009a0402000000 035400009a0402000000 - {e=>0,c=>3,a=>0,b=>125,d=>500} 007d0300f40100000000 007d0300f40100000000 007d0300f40100000000 007d0300f40100000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>3,c=>3,a=>1,b=>44,d=>24620,f=>1808311042} 012c03002c600300000002a3c86b 012c03002c600300000002a3c86b 012c03002c600300000002a3c86b 012c03002c600300000002a3c86b - {e=>1,c=>2,a=>1,b=>25,d=>25227,f=>801958710} 011902008b620100000036ebcc2f 011902008b620100000036ebcc2f 011902008b620100000036ebcc2f 011902008b620100000036ebcc2f - {e=>1,c=>3,a=>3,b=>101,d=>18705,f=>1451666857} 03650300114901000000a9ad8656 03650300114901000000a9ad8656 03650300114901000000a9ad8656 03650300114901000000a9ad8656 - {e=>0,c=>1,a=>3,b=>11,d=>27785,f=>1658211394} 030b0100896c00000000424cd662 030b0100896c00000000424cd662 030b0100896c00000000424cd662 030b0100896c00000000424cd662 - {e=>2,c=>3,a=>2,b=>99,d=>30270,f=>922018987} 026303003e7602000000abe4f436 026303003e7602000000abe4f436 026303003e7602000000abe4f436 026303003e7602000000abe4f436 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>2,c=>1,a=>3,g=>159,b=>94,d=>10039,f=>410307155} 035e010037270200000053ca74189f00 035e010037270200000053ca74189f00 035e010037270200000053ca74189f00 035e010037270200000053ca74189f00 - {e=>2,c=>1,a=>2,g=>50,b=>106,d=>11247,f=>668484590} 026a0100ef2b02000000ee43d8273200 026a0100ef2b02000000ee43d8273200 026a0100ef2b02000000ee43d8273200 026a0100ef2b02000000ee43d8273200 - {e=>0,c=>0,a=>3,g=>181,b=>49,d=>12908,f=>38446332} 033100006c3200000000fca44a02b500 033100006c3200000000fca44a02b500 033100006c3200000000fca44a02b500 033100006c3200000000fca44a02b500 - {e=>0,c=>2,a=>0,g=>106,b=>119,d=>27698,f=>1629435493} 00770200326c0000000065361f616a00 00770200326c0000000065361f616a00 00770200326c0000000065361f616a00 00770200326c0000000065361f616a00 - {e=>3,c=>2,a=>3,g=>36,b=>28,d=>17585,f=>1462750237} 031c0200b144030000001dcc2f572400 031c0200b144030000001dcc2f572400 031c0200b144030000001dcc2f572400 031c0200b144030000001dcc2f572400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>97,b=>0} 6100 6100 6100 6100 - {a=>-113,b=>1} 8f01 8f01 8f01 8f01 - {a=>97,b=>1} 6101 6101 6101 6101 - {a=>43,b=>0} 2b00 2b00 2b00 2b00 - {a=>8,b=>2} 0802 0802 0802 0802 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>121,a=>95,b=>1} 5f0179 5f0179 5f0179 5f0179 - {c=>47,a=>-39,b=>1} d9012f d9012f d9012f d9012f - {c=>126,a=>-116,b=>3} 8c037e 8c037e 8c037e 8c037e - {c=>60,a=>-8,b=>3} f8033c f8033c f8033c f8033c - {c=>50,a=>-3,b=>3} fd0332 fd0332 fd0332 fd0332 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>91,a=>-79,b=>2} b1025b00 b1025b00 b1025b00 b1025b00 - {c=>51,a=>-12,b=>1} f4013300 f4013300 f4013300 f4013300 - {c=>113,a=>104,b=>2} 68027100 68027100 68027100 68027100 - {c=>40,a=>105,b=>3} 69032800 69032800 69032800 69032800 - {c=>3,a=>-77,b=>3} b3030300 b3030300 b3030300 b3030300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>80,a=>-57,b=>1,d=>2} c70150000200 c70150000200 c70150000200 c70150000200 - {c=>73,a=>13,b=>2,d=>0} 0d0249000000 0d0249000000 0d0249000000 0d0249000000 - {c=>36,a=>-29,b=>0,d=>0} e30024000000 e30024000000 e30024000000 e30024000000 - {c=>123,a=>-35,b=>1,d=>3} dd017b000300 dd017b000300 dd017b000300 dd017b000300 - {c=>124,a=>10,b=>3,d=>0} 0a037c000000 0a037c000000 0a037c000000 0a037c000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>28834,c=>110,a=>-15,b=>3,d=>3} f1036e000300a270 f1036e000300a270 f1036e000300a270 f1036e000300a270 - {e=>1691,c=>38,a=>110,b=>1,d=>3} 6e01260003009b06 6e01260003009b06 6e01260003009b06 6e01260003009b06 - {e=>28902,c=>77,a=>121,b=>0,d=>0} 79004d000000e670 79004d000000e670 79004d000000e670 79004d000000e670 - {e=>5288,c=>45,a=>70,b=>1,d=>3} 46012d000300a814 46012d000300a814 46012d000300a814 46012d000300a814 - {e=>5983,c=>60,a=>35,b=>2,d=>1} 23023c0001005f17 23023c0001005f17 23023c0001005f17 23023c0001005f17 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>22747,c=>99,a=>17,b=>0,d=>3} 110063000300db58 110063000300db58 110063000300db58 110063000300db58 - {e=>8890,c=>116,a=>111,b=>3,d=>0} 6f0374000000ba22 6f0374000000ba22 6f0374000000ba22 6f0374000000ba22 - {e=>26859,c=>36,a=>-47,b=>3,d=>0} d10324000000eb68 d10324000000eb68 d10324000000eb68 d10324000000eb68 - {e=>4561,c=>1,a=>-82,b=>1,d=>2} ae0101000200d111 ae0101000200d111 ae0101000200d111 ae0101000200d111 - {e=>862,c=>125,a=>22,b=>1,d=>3} 16017d0003005e03 16017d0003005e03 16017d0003005e03 16017d0003005e03 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>7083,c=>105,a=>101,b=>1,d=>1,f=>1} 650169000100ab1b01000000 650169000100ab1b01000000 650169000100ab1b01000000 650169000100ab1b01000000 - {e=>26777,c=>7,a=>85,b=>2,d=>2,f=>0} 550207000200996800000000 550207000200996800000000 550207000200996800000000 550207000200996800000000 - {e=>2370,c=>62,a=>-56,b=>3,d=>0,f=>0} c8033e000000420900000000 c8033e000000420900000000 c8033e000000420900000000 c8033e000000420900000000 - {e=>17701,c=>23,a=>112,b=>0,d=>2,f=>0} 700017000200254500000000 700017000200254500000000 700017000200254500000000 700017000200254500000000 - {e=>7327,c=>107,a=>105,b=>0,d=>1,f=>1} 69006b0001009f1c01000000 69006b0001009f1c01000000 69006b0001009f1c01000000 69006b0001009f1c01000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>25941,c=>65,a=>-78,g=>738858833,b=>0,d=>1,f=>3} b2004100010055650300000051170a2c b2004100010055650300000051170a2c b2004100010055650300000051170a2c b2004100010055650300000051170a2c - {e=>16369,c=>84,a=>23,g=>253726160,b=>2,d=>3,f=>0} 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f - {e=>20549,c=>68,a=>-90,g=>1840050508,b=>0,d=>3,f=>2} a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d - {e=>4229,c=>122,a=>68,g=>163350911,b=>3,d=>1,f=>3} 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 - {e=>2131,c=>18,a=>-48,g=>1460988621,b=>3,d=>3,f=>1} d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>28672,a=>-38,d=>3,c=>3,h=>230,b=>0,g=>1572591659,f=>3} da00030003000070030000002bd8bb5de600 da00030003000070030000002bd8bb5de600 da00030003000070030000002bd8bb5de600 da00030003000070030000002bd8bb5de600 - {e=>21420,a=>6,d=>3,c=>126,h=>29,b=>1,g=>1987843785,f=>2} 06017e000300ac5302000000c9167c761d00 06017e000300ac5302000000c9167c761d00 06017e000300ac5302000000c9167c761d00 06017e000300ac5302000000c9167c761d00 - {e=>24974,a=>83,d=>3,c=>26,h=>197,b=>0,g=>375167546,f=>0} 53001a0003008e61000000003a9a5c16c500 53001a0003008e61000000003a9a5c16c500 53001a0003008e61000000003a9a5c16c500 53001a0003008e61000000003a9a5c16c500 - {e=>10987,a=>91,d=>0,c=>96,h=>171,b=>1,g=>1441248927,f=>3} 5b0160000000eb2a030000009fb6e755ab00 5b0160000000eb2a030000009fb6e755ab00 5b0160000000eb2a030000009fb6e755ab00 5b0160000000eb2a030000009fb6e755ab00 - {e=>7107,a=>62,d=>3,c=>84,h=>49,b=>0,g=>1539603978,f=>0} 3e0054000300c31b000000000a7ec45b3100 3e0054000300c31b000000000a7ec45b3100 3e0054000300c31b000000000a7ec45b3100 3e0054000300c31b000000000a7ec45b3100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>-78,b=>1} b2ff0100 b2ff0100 b2ff0100 b2ff0100 - {a=>-18,b=>2} eeff0200 eeff0200 eeff0200 eeff0200 - {a=>3,b=>3} 03000300 03000300 03000300 03000300 - {a=>-8,b=>0} f8ff0000 f8ff0000 f8ff0000 f8ff0000 - {a=>114,b=>1} 72000100 72000100 72000100 72000100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>46,a=>40,b=>3} 2800032e 2800032e 2800032e 2800032e - {c=>26,a=>116,b=>1} 7400011a 7400011a 7400011a 7400011a - {c=>116,a=>-66,b=>3} beff0374 beff0374 beff0374 beff0374 - {c=>45,a=>-35,b=>2} ddff022d ddff022d ddff022d ddff022d - {c=>30,a=>75,b=>3} 4b00031e 4b00031e 4b00031e 4b00031e = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>51,a=>56,b=>2} 38000233 38000233 38000233 38000233 - {c=>76,a=>38,b=>0} 2600004c 2600004c 2600004c 2600004c - {c=>31,a=>-74,b=>3} b6ff031f b6ff031f b6ff031f b6ff031f - {c=>95,a=>53,b=>0} 3500005f 3500005f 3500005f 3500005f - {c=>65,a=>-118,b=>2} 8aff0241 8aff0241 8aff0241 8aff0241 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>104,a=>-99,b=>1,d=>3} 9dff01680300 9dff01680300 9dff01680300 9dff01680300 - {c=>113,a=>-77,b=>0,d=>3} b3ff00710300 b3ff00710300 b3ff00710300 b3ff00710300 - {c=>38,a=>119,b=>1,d=>3} 770001260300 770001260300 770001260300 770001260300 - {c=>120,a=>-5,b=>0,d=>0} fbff00780000 fbff00780000 fbff00780000 fbff00780000 - {c=>94,a=>-19,b=>3,d=>2} edff035e0200 edff035e0200 edff035e0200 edff035e0200 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>9932,c=>43,a=>-80,b=>2,d=>3} b0ff022b0300cc26 b0ff022b0300cc26 b0ff022b0300cc26 b0ff022b0300cc26 - {e=>30764,c=>117,a=>-54,b=>0,d=>2} caff007502002c78 caff007502002c78 caff007502002c78 caff007502002c78 - {e=>13093,c=>118,a=>118,b=>3,d=>0} 7600037600002533 7600037600002533 7600037600002533 7600037600002533 - {e=>20007,c=>75,a=>-56,b=>3,d=>2} c8ff034b0200274e c8ff034b0200274e c8ff034b0200274e c8ff034b0200274e - {e=>29692,c=>120,a=>45,b=>1,d=>3} 2d0001780300fc73 2d0001780300fc73 2d0001780300fc73 2d0001780300fc73 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>1707,c=>51,a=>-92,b=>2,d=>0} a4ff02330000ab06 a4ff02330000ab06 a4ff02330000ab06 a4ff02330000ab06 - {e=>22195,c=>16,a=>-106,b=>0,d=>3} 96ff00100300b356 96ff00100300b356 96ff00100300b356 96ff00100300b356 - {e=>26092,c=>101,a=>-52,b=>3,d=>0} ccff03650000ec65 ccff03650000ec65 ccff03650000ec65 ccff03650000ec65 - {e=>10767,c=>23,a=>120,b=>3,d=>0} 7800031700000f2a 7800031700000f2a 7800031700000f2a 7800031700000f2a - {e=>22371,c=>42,a=>97,b=>0,d=>3} 6100002a03006357 6100002a03006357 6100002a03006357 6100002a03006357 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>5426,c=>73,a=>107,b=>1,d=>2,f=>3} 6b0001490200321503000000 6b0001490200321503000000 6b0001490200321503000000 6b0001490200321503000000 - {e=>25684,c=>82,a=>-99,b=>3,d=>2,f=>1} 9dff03520200546401000000 9dff03520200546401000000 9dff03520200546401000000 9dff03520200546401000000 - {e=>5420,c=>23,a=>75,b=>2,d=>1,f=>0} 4b00021701002c1500000000 4b00021701002c1500000000 4b00021701002c1500000000 4b00021701002c1500000000 - {e=>2354,c=>11,a=>-63,b=>0,d=>1,f=>3} c1ff000b0100320903000000 c1ff000b0100320903000000 c1ff000b0100320903000000 c1ff000b0100320903000000 - {e=>14868,c=>64,a=>-6,b=>1,d=>3,f=>0} faff01400300143a00000000 faff01400300143a00000000 faff01400300143a00000000 faff01400300143a00000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7432,c=>46,a=>-97,g=>1876506977,b=>1,d=>2,f=>0} 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f - {e=>19949,c=>124,a=>32,g=>396727791,b=>2,d=>1,f=>2} 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 - {e=>1774,c=>10,a=>110,g=>861455959,b=>0,d=>3,f=>3} 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 - {e=>17159,c=>124,a=>-113,g=>2079899019,b=>2,d=>3,f=>0} 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b - {e=>30127,c=>49,a=>-70,g=>1975146991,b=>0,d=>0,f=>3} baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>3,a=>85,d=>1,c=>69,h=>236,b=>0,g=>486067682,f=>2} 550000450100030002000000e2cdf81cec00 550000450100030002000000e2cdf81cec00 550000450100030002000000e2cdf81cec00 550000450100030002000000e2cdf81cec00 - {e=>30273,a=>-71,d=>3,c=>51,h=>105,b=>2,g=>1361574005,f=>3} b9ff0233030041760300000075f827516900 b9ff0233030041760300000075f827516900 b9ff0233030041760300000075f827516900 b9ff0233030041760300000075f827516900 - {e=>25503,a=>-67,d=>3,c=>19,h=>175,b=>1,g=>190963807,f=>1} bdff011303009f63010000005fe0610baf00 bdff011303009f63010000005fe0610baf00 bdff011303009f63010000005fe0610baf00 bdff011303009f63010000005fe0610baf00 - {e=>18177,a=>-30,d=>1,c=>47,h=>200,b=>1,g=>976748818,f=>3} e2ff012f01000147030000001201383ac800 e2ff012f01000147030000001201383ac800 e2ff012f01000147030000001201383ac800 e2ff012f01000147030000001201383ac800 - {e=>29900,a=>97,d=>1,c=>20,h=>124,b=>0,g=>261624382,f=>3} 610000140100cc74030000003e12980f7c00 610000140100cc74030000003e12980f7c00 610000140100cc74030000003e12980f7c00 610000140100cc74030000003e12980f7c00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>-90,b=>3} a6ffffff0300 a6ffffff0300 a6ffffff0300 a6ffffff0300 - {a=>41,b=>1} 290000000100 290000000100 290000000100 290000000100 - {a=>-89,b=>0} a7ffffff0000 a7ffffff0000 a7ffffff0000 a7ffffff0000 - {a=>96,b=>0} 600000000000 600000000000 600000000000 600000000000 - {a=>-20,b=>3} ecffffff0300 ecffffff0300 ecffffff0300 ecffffff0300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>30,a=>-27,b=>1} e5ffffff011e e5ffffff011e e5ffffff011e e5ffffff011e - {c=>124,a=>-69,b=>0} bbffffff007c bbffffff007c bbffffff007c bbffffff007c - {c=>28,a=>-28,b=>0} e4ffffff001c e4ffffff001c e4ffffff001c e4ffffff001c - {c=>99,a=>50,b=>0} 320000000063 320000000063 320000000063 320000000063 - {c=>63,a=>-67,b=>3} bdffffff033f bdffffff033f bdffffff033f bdffffff033f = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>26,a=>-54,b=>2} caffffff021a caffffff021a caffffff021a caffffff021a - {c=>38,a=>126,b=>2} 7e0000000226 7e0000000226 7e0000000226 7e0000000226 - {c=>107,a=>-7,b=>0} f9ffffff006b f9ffffff006b f9ffffff006b f9ffffff006b - {c=>13,a=>98,b=>3} 62000000030d 62000000030d 62000000030d 62000000030d - {c=>97,a=>84,b=>2} 540000000261 540000000261 540000000261 540000000261 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>110,a=>-46,b=>1,d=>2} d2ffffff016e0200 d2ffffff016e0200 d2ffffff016e0200 d2ffffff016e0200 - {c=>99,a=>-7,b=>1,d=>1} f9ffffff01630100 f9ffffff01630100 f9ffffff01630100 f9ffffff01630100 - {c=>88,a=>-1,b=>1,d=>2} ffffffff01580200 ffffffff01580200 ffffffff01580200 ffffffff01580200 - {c=>65,a=>-40,b=>0,d=>2} d8ffffff00410200 d8ffffff00410200 d8ffffff00410200 d8ffffff00410200 - {c=>59,a=>-76,b=>0,d=>0} b4ffffff003b0000 b4ffffff003b0000 b4ffffff003b0000 b4ffffff003b0000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>32442,c=>51,a=>3,b=>0,d=>0} 0300000000330000ba7e 0300000000330000ba7e 0300000000330000ba7e 0300000000330000ba7e - {e=>9995,c=>67,a=>48,b=>2,d=>2} 30000000024302000b27 30000000024302000b27 30000000024302000b27 30000000024302000b27 - {e=>29590,c=>74,a=>75,b=>0,d=>2} 4b000000004a02009673 4b000000004a02009673 4b000000004a02009673 4b000000004a02009673 - {e=>31156,c=>54,a=>-49,b=>1,d=>3} cfffffff01360300b479 cfffffff01360300b479 cfffffff01360300b479 cfffffff01360300b479 - {e=>29653,c=>12,a=>-35,b=>3,d=>0} ddffffff030c0000d573 ddffffff030c0000d573 ddffffff030c0000d573 ddffffff030c0000d573 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>29970,c=>42,a=>-35,b=>0,d=>2} ddffffff002a02001275 ddffffff002a02001275 ddffffff002a02001275 ddffffff002a02001275 - {e=>5805,c=>46,a=>15,b=>0,d=>0} 0f000000002e0000ad16 0f000000002e0000ad16 0f000000002e0000ad16 0f000000002e0000ad16 - {e=>32451,c=>91,a=>82,b=>3,d=>1} 52000000035b0100c37e 52000000035b0100c37e 52000000035b0100c37e 52000000035b0100c37e - {e=>4579,c=>50,a=>-33,b=>2,d=>1} dfffffff02320100e311 dfffffff02320100e311 dfffffff02320100e311 dfffffff02320100e311 - {e=>21164,c=>115,a=>-64,b=>0,d=>2} c0ffffff00730200ac52 c0ffffff00730200ac52 c0ffffff00730200ac52 c0ffffff00730200ac52 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>23029,c=>127,a=>-67,b=>1,d=>3,f=>0} bdffffff017f0300f55900000000 bdffffff017f0300f55900000000 bdffffff017f0300f55900000000 bdffffff017f0300f55900000000 - {e=>16590,c=>24,a=>-103,b=>2,d=>3,f=>0} 99ffffff02180300ce4000000000 99ffffff02180300ce4000000000 99ffffff02180300ce4000000000 99ffffff02180300ce4000000000 - {e=>6342,c=>83,a=>-124,b=>3,d=>2,f=>3} 84ffffff03530200c61803000000 84ffffff03530200c61803000000 84ffffff03530200c61803000000 84ffffff03530200c61803000000 - {e=>20449,c=>25,a=>51,b=>1,d=>2,f=>0} 3300000001190200e14f00000000 3300000001190200e14f00000000 3300000001190200e14f00000000 3300000001190200e14f00000000 - {e=>6146,c=>52,a=>40,b=>2,d=>0,f=>3} 2800000002340000021803000000 2800000002340000021803000000 2800000002340000021803000000 2800000002340000021803000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>3892,c=>48,a=>-46,g=>316743879,b=>2,d=>1,f=>3} d2ffffff02300100340f03000000c720e112 d2ffffff02300100340f03000000c720e112 d2ffffff02300100340f03000000c720e112 d2ffffff02300100340f03000000c720e112 - {e=>26400,c=>46,a=>-27,g=>151740613,b=>2,d=>3,f=>1} e5ffffff022e0300206701000000c5600b09 e5ffffff022e0300206701000000c5600b09 e5ffffff022e0300206701000000c5600b09 e5ffffff022e0300206701000000c5600b09 - {e=>26192,c=>62,a=>24,g=>1861908220,b=>2,d=>0,f=>3} 18000000023e0000506603000000fc76fa6e 18000000023e0000506603000000fc76fa6e 18000000023e0000506603000000fc76fa6e 18000000023e0000506603000000fc76fa6e - {e=>21869,c=>35,a=>48,g=>1165253908,b=>2,d=>3,f=>1} 30000000022303006d5501000000145d7445 30000000022303006d5501000000145d7445 30000000022303006d5501000000145d7445 30000000022303006d5501000000145d7445 - {e=>31408,c=>111,a=>30,g=>1811810369,b=>1,d=>0,f=>0} 1e000000016f0000b07a000000004108fe6b 1e000000016f0000b07a000000004108fe6b 1e000000016f0000b07a000000004108fe6b 1e000000016f0000b07a000000004108fe6b = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22792,a=>69,d=>0,c=>81,h=>223,b=>0,g=>1807892872,f=>2} 45000000005100000859020000008841c26bdf00 45000000005100000859020000008841c26bdf00 45000000005100000859020000008841c26bdf00 45000000005100000859020000008841c26bdf00 - {e=>6988,a=>-93,d=>1,c=>27,h=>182,b=>3,g=>374359030,f=>1} a3ffffff031b01004c1b01000000f6435016b600 a3ffffff031b01004c1b01000000f6435016b600 a3ffffff031b01004c1b01000000f6435016b600 a3ffffff031b01004c1b01000000f6435016b600 - {e=>14822,a=>-84,d=>0,c=>16,h=>181,b=>0,g=>1852459803,f=>2} acffffff00100000e639020000001b4b6a6eb500 acffffff00100000e639020000001b4b6a6eb500 acffffff00100000e639020000001b4b6a6eb500 acffffff00100000e639020000001b4b6a6eb500 - {e=>21205,a=>118,d=>1,c=>107,h=>123,b=>2,g=>1241312097,f=>2} 76000000026b0100d5520200000061ebfc497b00 76000000026b0100d5520200000061ebfc497b00 76000000026b0100d5520200000061ebfc497b00 76000000026b0100d5520200000061ebfc497b00 - {e=>15889,a=>-72,d=>3,c=>115,h=>148,b=>3,g=>812033748,f=>2} b8ffffff03730300113e02000000d4a666309400 b8ffffff03730300113e02000000d4a666309400 b8ffffff03730300113e02000000d4a666309400 b8ffffff03730300113e02000000d4a666309400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>-83,b=>1} adffffff0100 adffffff0100 adffffff0100 adffffff0100 - {a=>-66,b=>2} beffffff0200 beffffff0200 beffffff0200 beffffff0200 - {a=>29,b=>2} 1d0000000200 1d0000000200 1d0000000200 1d0000000200 - {a=>3,b=>3} 030000000300 030000000300 030000000300 030000000300 - {a=>96,b=>0} 600000000000 600000000000 600000000000 600000000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>65,a=>58,b=>1} 3a0000000141 3a0000000141 3a0000000141 3a0000000141 - {c=>69,a=>121,b=>3} 790000000345 790000000345 790000000345 790000000345 - {c=>64,a=>43,b=>0} 2b0000000040 2b0000000040 2b0000000040 2b0000000040 - {c=>119,a=>-117,b=>3} 8bffffff0377 8bffffff0377 8bffffff0377 8bffffff0377 - {c=>121,a=>-9,b=>2} f7ffffff0279 f7ffffff0279 f7ffffff0279 f7ffffff0279 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>105,a=>-106,b=>1} 96ffffff0169 96ffffff0169 96ffffff0169 96ffffff0169 - {c=>123,a=>94,b=>1} 5e000000017b 5e000000017b 5e000000017b 5e000000017b - {c=>116,a=>-82,b=>1} aeffffff0174 aeffffff0174 aeffffff0174 aeffffff0174 - {c=>123,a=>72,b=>2} 48000000027b 48000000027b 48000000027b 48000000027b - {c=>73,a=>-126,b=>3} 82ffffff0349 82ffffff0349 82ffffff0349 82ffffff0349 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>95,a=>0,b=>2,d=>1} 00000000025f0100 00000000025f0100 00000000025f0100 00000000025f0100 - {c=>66,a=>121,b=>3,d=>3} 7900000003420300 7900000003420300 7900000003420300 7900000003420300 - {c=>26,a=>99,b=>2,d=>2} 63000000021a0200 63000000021a0200 63000000021a0200 63000000021a0200 - {c=>88,a=>98,b=>0,d=>1} 6200000000580100 6200000000580100 6200000000580100 6200000000580100 - {c=>3,a=>-14,b=>2,d=>3} f2ffffff02030300 f2ffffff02030300 f2ffffff02030300 f2ffffff02030300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>9767,c=>60,a=>-61,b=>1,d=>2} c3ffffff013c02002726 c3ffffff013c02002726 c3ffffff013c02002726 c3ffffff013c02002726 - {e=>12740,c=>73,a=>45,b=>1,d=>0} 2d00000001490000c431 2d00000001490000c431 2d00000001490000c431 2d00000001490000c431 - {e=>19242,c=>24,a=>3,b=>2,d=>3} 03000000021803002a4b 03000000021803002a4b 03000000021803002a4b 03000000021803002a4b - {e=>22616,c=>113,a=>104,b=>2,d=>0} 68000000027100005858 68000000027100005858 68000000027100005858 68000000027100005858 - {e=>25298,c=>80,a=>59,b=>3,d=>0} 3b00000003500000d262 3b00000003500000d262 3b00000003500000d262 3b00000003500000d262 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>20592,c=>52,a=>-37,b=>2,d=>2} dbffffff023402007050 dbffffff023402007050 dbffffff023402007050 dbffffff023402007050 - {e=>276,c=>125,a=>90,b=>3,d=>0} 5a000000037d00001401 5a000000037d00001401 5a000000037d00001401 5a000000037d00001401 - {e=>32279,c=>46,a=>100,b=>2,d=>3} 64000000022e0300177e 64000000022e0300177e 64000000022e0300177e 64000000022e0300177e - {e=>25090,c=>74,a=>5,b=>1,d=>2} 05000000014a02000262 05000000014a02000262 05000000014a02000262 05000000014a02000262 - {e=>3865,c=>84,a=>-99,b=>0,d=>1} 9dffffff00540100190f 9dffffff00540100190f 9dffffff00540100190f 9dffffff00540100190f = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>21175,c=>59,a=>-120,b=>1,d=>1,f=>3} 88ffffff013b0100b75203000000 88ffffff013b0100b75203000000 88ffffff013b0100b75203000000 88ffffff013b0100b75203000000 - {e=>28600,c=>26,a=>40,b=>1,d=>0,f=>3} 28000000011a0000b86f03000000 28000000011a0000b86f03000000 28000000011a0000b86f03000000 28000000011a0000b86f03000000 - {e=>28585,c=>40,a=>111,b=>2,d=>1,f=>0} 6f00000002280100a96f00000000 6f00000002280100a96f00000000 6f00000002280100a96f00000000 6f00000002280100a96f00000000 - {e=>5446,c=>49,a=>-10,b=>0,d=>3,f=>2} f6ffffff00310300461502000000 f6ffffff00310300461502000000 f6ffffff00310300461502000000 f6ffffff00310300461502000000 - {e=>8086,c=>115,a=>71,b=>1,d=>3,f=>2} 4700000001730300961f02000000 4700000001730300961f02000000 4700000001730300961f02000000 4700000001730300961f02000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>2515,c=>39,a=>-81,g=>1557846639,b=>0,d=>2,f=>0} afffffff00270200d309000000006fdada5c afffffff00270200d309000000006fdada5c afffffff00270200d309000000006fdada5c afffffff00270200d309000000006fdada5c - {e=>24554,c=>76,a=>-55,g=>397475554,b=>0,d=>3,f=>1} c9ffffff004c0300ea5f01000000e2feb017 c9ffffff004c0300ea5f01000000e2feb017 c9ffffff004c0300ea5f01000000e2feb017 c9ffffff004c0300ea5f01000000e2feb017 - {e=>21564,c=>75,a=>-60,g=>1965999580,b=>1,d=>1,f=>0} c4ffffff014b01003c5400000000dcc52e75 c4ffffff014b01003c5400000000dcc52e75 c4ffffff014b01003c5400000000dcc52e75 c4ffffff014b01003c5400000000dcc52e75 - {e=>4819,c=>95,a=>5,g=>1426045861,b=>2,d=>3,f=>0} 05000000025f0300d31200000000a5bbff54 05000000025f0300d31200000000a5bbff54 05000000025f0300d31200000000a5bbff54 05000000025f0300d31200000000a5bbff54 - {e=>9300,c=>73,a=>-128,g=>2026652952,b=>2,d=>2,f=>0} 80ffffff024902005424000000001845cc78 80ffffff024902005424000000001845cc78 80ffffff024902005424000000001845cc78 80ffffff024902005424000000001845cc78 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>21952,a=>-109,d=>2,c=>25,h=>45,b=>2,g=>1114185827,f=>3} 93ffffff02190200c05503000000632069422d00 93ffffff02190200c05503000000632069422d00 93ffffff02190200c05503000000632069422d00 93ffffff02190200c05503000000632069422d00 - {e=>26940,a=>-113,d=>2,c=>52,h=>252,b=>0,g=>1775585392,f=>2} 8fffffff003402003c69020000007048d569fc00 8fffffff003402003c69020000007048d569fc00 8fffffff003402003c69020000007048d569fc00 8fffffff003402003c69020000007048d569fc00 - {e=>15281,a=>-108,d=>2,c=>32,h=>104,b=>0,g=>334972013,f=>0} 94ffffff00200200b13b000000006d44f7136800 94ffffff00200200b13b000000006d44f7136800 94ffffff00200200b13b000000006d44f7136800 94ffffff00200200b13b000000006d44f7136800 - {e=>2768,a=>-8,d=>2,c=>44,h=>179,b=>0,g=>1813704477,f=>2} f8ffffff002c0200d00a020000001def1a6cb300 f8ffffff002c0200d00a020000001def1a6cb300 f8ffffff002c0200d00a020000001def1a6cb300 f8ffffff002c0200d00a020000001def1a6cb300 - {e=>4766,a=>-98,d=>1,c=>110,h=>87,b=>3,g=>1617177070,f=>1} 9effffff036e01009e1201000000ee2964605700 9effffff036e01009e1201000000ee2964605700 9effffff036e01009e1201000000ee2964605700 9effffff036e01009e1201000000ee2964605700 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>2} 02 02 02 02 - {a=>1} 01 01 01 01 - {a=>2} 02 02 02 02 - {a=>3} 03 03 03 03 - {a=>3} 03 03 03 03 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>1,b=>53} 0135 0135 0135 0135 - {a=>1,b=>50} 0132 0132 0132 0132 - {a=>1,b=>123} 017b 017b 017b 017b - {a=>1,b=>14} 010e 010e 010e 010e - {a=>1,b=>30} 011e 011e 011e 011e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>0,b=>46} 002e 002e 002e 002e - {a=>0,b=>81} 0051 0051 0051 0051 - {a=>2,b=>74} 024a 024a 024a 024a - {a=>0,b=>65} 0041 0041 0041 0041 - {a=>2,b=>109} 026d 026d 026d 026d = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>3,a=>2,b=>16} 02100300 02100300 02100300 02100300 - {c=>1,a=>2,b=>62} 023e0100 023e0100 023e0100 023e0100 - {c=>3,a=>1,b=>111} 016f0300 016f0300 016f0300 016f0300 - {c=>1,a=>1,b=>68} 01440100 01440100 01440100 01440100 - {c=>2,a=>2,b=>45} 022d0200 022d0200 022d0200 022d0200 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>3,a=>1,b=>26,d=>16785} 011a03009141 011a03009141 011a03009141 011a03009141 - {c=>1,a=>2,b=>72,d=>27478} 02480100566b 02480100566b 02480100566b 02480100566b - {c=>0,a=>2,b=>38,d=>5575} 02260000c715 02260000c715 02260000c715 02260000c715 - {c=>0,a=>0,b=>9,d=>15309} 00090000cd3b 00090000cd3b 00090000cd3b 00090000cd3b - {c=>1,a=>0,b=>50,d=>15196} 003201005c3b 003201005c3b 003201005c3b 003201005c3b = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>3,a=>0,b=>45,d=>19854} 002d03008e4d0000 002d03008e4d0000 002d03008e4d0000 002d03008e4d0000 - {c=>1,a=>1,b=>98,d=>13023} 01620100df320000 01620100df320000 01620100df320000 01620100df320000 - {c=>0,a=>0,b=>60,d=>21600} 003c000060540000 003c000060540000 003c000060540000 003c000060540000 - {c=>0,a=>3,b=>66,d=>5095} 03420000e7130000 03420000e7130000 03420000e7130000 03420000e7130000 - {c=>1,a=>2,b=>6,d=>28001} 02060100616d0000 02060100616d0000 02060100616d0000 02060100616d0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>3,c=>3,a=>0,b=>58,d=>11881} 003a0300692e000003000000 003a0300692e000003000000 003a0300692e000003000000 003a0300692e000003000000 - {e=>1,c=>2,a=>3,b=>55,d=>28258} 03370200626e000001000000 03370200626e000001000000 03370200626e000001000000 03370200626e000001000000 - {e=>0,c=>2,a=>0,b=>80,d=>21967} 00500200cf55000000000000 00500200cf55000000000000 00500200cf55000000000000 00500200cf55000000000000 - {e=>3,c=>1,a=>2,b=>45,d=>10113} 022d01008127000003000000 022d01008127000003000000 022d01008127000003000000 022d01008127000003000000 - {e=>2,c=>1,a=>1,b=>95,d=>17218} 015f01004243000002000000 015f01004243000002000000 015f01004243000002000000 015f01004243000002000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>0,c=>2,a=>3,b=>80,d=>2111,f=>1422571903} 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 - {e=>2,c=>1,a=>3,b=>64,d=>2000,f=>1965034422} 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 - {e=>2,c=>3,a=>1,b=>54,d=>28927,f=>969485170} 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 - {e=>2,c=>1,a=>3,b=>123,d=>20823,f=>1458057064} 037b01005751000002000000682fe856 037b01005751000002000000682fe856 037b01005751000002000000682fe856 037b01005751000002000000682fe856 - {e=>1,c=>2,a=>0,b=>6,d=>12501,f=>1351383989} 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>0,c=>2,a=>3,g=>84,b=>89,d=>9214,f=>106393136} 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 - {e=>0,c=>1,a=>3,g=>127,b=>82,d=>23276,f=>741050135} 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 - {e=>1,c=>2,a=>3,g=>51,b=>86,d=>27154,f=>843170060} 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 - {e=>2,c=>0,a=>1,g=>50,b=>109,d=>21142,f=>302068161} 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 - {e=>0,c=>0,a=>0,g=>115,b=>39,d=>28818,f=>1653939669} 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>127,b=>3} 7f03 7f03 7f03 7f03 - {a=>80,b=>3} 5003 5003 5003 5003 - {a=>-62,b=>3} c203 c203 c203 c203 - {a=>-100,b=>0} 9c00 9c00 9c00 9c00 - {a=>14,b=>0} 0e00 0e00 0e00 0e00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>39,a=>-40,b=>3} d80327 d80327 d80327 d80327 - {c=>16,a=>1,b=>2} 010210 010210 010210 010210 - {c=>127,a=>117,b=>2} 75027f 75027f 75027f 75027f - {c=>19,a=>-78,b=>3} b20313 b20313 b20313 b20313 - {c=>78,a=>-31,b=>3} e1034e e1034e e1034e e1034e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>49,a=>86,b=>0} 56003100 56003100 56003100 56003100 - {c=>37,a=>-76,b=>0} b4002500 b4002500 b4002500 b4002500 - {c=>41,a=>-78,b=>1} b2012900 b2012900 b2012900 b2012900 - {c=>48,a=>-122,b=>1} 86013000 86013000 86013000 86013000 - {c=>80,a=>38,b=>1} 26015000 26015000 26015000 26015000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>64,a=>67,b=>0,d=>3} 430040000300 430040000300 430040000300 430040000300 - {c=>7,a=>32,b=>0,d=>3} 200007000300 200007000300 200007000300 200007000300 - {c=>48,a=>-66,b=>2,d=>3} be0230000300 be0230000300 be0230000300 be0230000300 - {c=>36,a=>98,b=>1,d=>0} 620124000000 620124000000 620124000000 620124000000 - {c=>52,a=>-93,b=>0,d=>0} a30034000000 a30034000000 a30034000000 a30034000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>26785,c=>119,a=>-1,b=>1,d=>0} ff0177000000a168 ff0177000000a168 ff0177000000a168 ff0177000000a168 - {e=>21340,c=>96,a=>-74,b=>2,d=>0} b602600000005c53 b602600000005c53 b602600000005c53 b602600000005c53 - {e=>28806,c=>61,a=>26,b=>3,d=>1} 1a033d0001008670 1a033d0001008670 1a033d0001008670 1a033d0001008670 - {e=>28589,c=>26,a=>-114,b=>2,d=>2} 8e021a000200ad6f 8e021a000200ad6f 8e021a000200ad6f 8e021a000200ad6f - {e=>26902,c=>48,a=>-95,b=>0,d=>1} a100300001001669 a100300001001669 a100300001001669 a100300001001669 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>3552,c=>17,a=>-7,b=>2,d=>3} f90211000300e00d f90211000300e00d f90211000300e00d f90211000300e00d - {e=>26031,c=>93,a=>25,b=>2,d=>2} 19025d000200af65 19025d000200af65 19025d000200af65 19025d000200af65 - {e=>22073,c=>127,a=>50,b=>3,d=>2} 32037f0002003956 32037f0002003956 32037f0002003956 32037f0002003956 - {e=>2767,c=>28,a=>125,b=>3,d=>0} 7d031c000000cf0a 7d031c000000cf0a 7d031c000000cf0a 7d031c000000cf0a - {e=>13191,c=>78,a=>100,b=>1,d=>0} 64014e0000008733 64014e0000008733 64014e0000008733 64014e0000008733 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>30976,c=>57,a=>34,b=>3,d=>1,f=>2} 220339000100007902000000 220339000100007902000000 220339000100007902000000 220339000100007902000000 - {e=>6346,c=>73,a=>-3,b=>3,d=>2,f=>2} fd0349000200ca1802000000 fd0349000200ca1802000000 fd0349000200ca1802000000 fd0349000200ca1802000000 - {e=>6949,c=>88,a=>-4,b=>0,d=>0,f=>1} fc0058000000251b01000000 fc0058000000251b01000000 fc0058000000251b01000000 fc0058000000251b01000000 - {e=>28006,c=>111,a=>-33,b=>1,d=>1,f=>2} df016f000100666d02000000 df016f000100666d02000000 df016f000100666d02000000 df016f000100666d02000000 - {e=>14019,c=>108,a=>-96,b=>0,d=>2,f=>0} a0006c000200c33600000000 a0006c000200c33600000000 a0006c000200c33600000000 a0006c000200c33600000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>9791,c=>22,a=>-47,g=>647164236,b=>2,d=>2,f=>1} d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 - {e=>27793,c=>21,a=>-62,g=>1814066393,b=>1,d=>3,f=>1} c20115000300916c01000000d974206c c20115000300916c01000000d974206c c20115000300916c01000000d974206c c20115000300916c01000000d974206c - {e=>21047,c=>89,a=>-117,g=>455211358,b=>1,d=>2,f=>2} 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b - {e=>17235,c=>47,a=>-82,g=>2001830733,b=>1,d=>1,f=>0} ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 - {e=>1178,c=>72,a=>-128,g=>1850197261,b=>3,d=>2,f=>2} 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>4992,a=>101,d=>0,c=>45,h=>179,b=>3,g=>1764834428,f=>2} 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 - {e=>28162,a=>-27,d=>2,c=>19,h=>16,b=>1,g=>1368222481,f=>3} e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 - {e=>9500,a=>102,d=>2,c=>48,h=>250,b=>2,g=>153279384,f=>3} 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 - {e=>6190,a=>-9,d=>3,c=>84,h=>49,b=>1,g=>1357610161,f=>0} f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 - {e=>18540,a=>-57,d=>3,c=>110,h=>172,b=>1,g=>1540619102,f=>1} c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>12,b=>0} 0c000000 0c000000 0c000000 0c000000 - {a=>56,b=>0} 38000000 38000000 38000000 38000000 - {a=>-4,b=>1} fcff0100 fcff0100 fcff0100 fcff0100 - {a=>-26,b=>1} e6ff0100 e6ff0100 e6ff0100 e6ff0100 - {a=>108,b=>0} 6c000000 6c000000 6c000000 6c000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>4,a=>-80,b=>3} b0ff0304 b0ff0304 b0ff0304 b0ff0304 - {c=>37,a=>1,b=>1} 01000125 01000125 01000125 01000125 - {c=>79,a=>-80,b=>2} b0ff024f b0ff024f b0ff024f b0ff024f - {c=>19,a=>36,b=>0} 24000013 24000013 24000013 24000013 - {c=>71,a=>74,b=>3} 4a000347 4a000347 4a000347 4a000347 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>100,a=>40,b=>1} 28000164 28000164 28000164 28000164 - {c=>34,a=>-110,b=>1} 92ff0122 92ff0122 92ff0122 92ff0122 - {c=>74,a=>109,b=>2} 6d00024a 6d00024a 6d00024a 6d00024a - {c=>106,a=>85,b=>3} 5500036a 5500036a 5500036a 5500036a - {c=>103,a=>-49,b=>2} cfff0267 cfff0267 cfff0267 cfff0267 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>65,a=>120,b=>3,d=>2} 780003410200 780003410200 780003410200 780003410200 - {c=>0,a=>-65,b=>1,d=>0} bfff01000000 bfff01000000 bfff01000000 bfff01000000 - {c=>45,a=>-28,b=>3,d=>3} e4ff032d0300 e4ff032d0300 e4ff032d0300 e4ff032d0300 - {c=>47,a=>-69,b=>0,d=>1} bbff002f0100 bbff002f0100 bbff002f0100 bbff002f0100 - {c=>58,a=>-126,b=>2,d=>3} 82ff023a0300 82ff023a0300 82ff023a0300 82ff023a0300 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>23184,c=>121,a=>-111,b=>3,d=>2} 91ff03790200905a 91ff03790200905a 91ff03790200905a 91ff03790200905a - {e=>10634,c=>6,a=>0,b=>0,d=>1} 0000000601008a29 0000000601008a29 0000000601008a29 0000000601008a29 - {e=>1052,c=>95,a=>-110,b=>0,d=>3} 92ff005f03001c04 92ff005f03001c04 92ff005f03001c04 92ff005f03001c04 - {e=>30124,c=>4,a=>-80,b=>0,d=>1} b0ff00040100ac75 b0ff00040100ac75 b0ff00040100ac75 b0ff00040100ac75 - {e=>6111,c=>70,a=>-3,b=>0,d=>2} fdff00460200df17 fdff00460200df17 fdff00460200df17 fdff00460200df17 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>27293,c=>0,a=>6,b=>1,d=>1} 0600010001009d6a 0600010001009d6a 0600010001009d6a 0600010001009d6a - {e=>7905,c=>88,a=>-84,b=>2,d=>1} acff02580100e11e acff02580100e11e acff02580100e11e acff02580100e11e - {e=>25121,c=>6,a=>8,b=>1,d=>3} 0800010603002162 0800010603002162 0800010603002162 0800010603002162 - {e=>31153,c=>31,a=>-128,b=>0,d=>1} 80ff001f0100b179 80ff001f0100b179 80ff001f0100b179 80ff001f0100b179 - {e=>26840,c=>3,a=>-81,b=>0,d=>1} afff00030100d868 afff00030100d868 afff00030100d868 afff00030100d868 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>14623,c=>76,a=>81,b=>1,d=>0,f=>0} 5100014c00001f3900000000 5100014c00001f3900000000 5100014c00001f3900000000 5100014c00001f3900000000 - {e=>15019,c=>26,a=>124,b=>1,d=>1,f=>0} 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 - {e=>20293,c=>73,a=>-24,b=>3,d=>1,f=>2} e8ff03490100454f02000000 e8ff03490100454f02000000 e8ff03490100454f02000000 e8ff03490100454f02000000 - {e=>10913,c=>40,a=>116,b=>1,d=>3,f=>3} 740001280300a12a03000000 740001280300a12a03000000 740001280300a12a03000000 740001280300a12a03000000 - {e=>7039,c=>44,a=>-19,b=>1,d=>3,f=>3} edff012c03007f1b03000000 edff012c03007f1b03000000 edff012c03007f1b03000000 edff012c03007f1b03000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>24746,c=>73,a=>96,g=>1050064470,b=>1,d=>2,f=>3} 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e - {e=>3803,c=>22,a=>94,g=>1842484087,b=>1,d=>2,f=>1} 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d - {e=>214,c=>123,a=>77,g=>1848243584,b=>0,d=>3,f=>3} 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e - {e=>26881,c=>70,a=>-34,g=>434815639,b=>2,d=>3,f=>2} deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 - {e=>29110,c=>65,a=>70,g=>1149188362,b=>3,d=>1,f=>1} 460003410100b671010000000a397f44 460003410100b671010000000a397f44 460003410100b671010000000a397f44 460003410100b671010000000a397f44 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>14421,a=>-30,d=>3,c=>26,h=>141,b=>1,g=>4188654,f=>3} e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 - {e=>8456,a=>9,d=>3,c=>14,h=>64,b=>1,g=>622335221,f=>2} 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 - {e=>4776,a=>81,d=>2,c=>60,h=>86,b=>1,g=>767737936,f=>2} 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 - {e=>23388,a=>-75,d=>2,c=>8,h=>15,b=>3,g=>884282703,f=>1} b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 - {e=>12562,a=>25,d=>1,c=>64,h=>193,b=>0,g=>817252271,f=>0} 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>103,b=>3} 6700000003000000 6700000003000000 6700000003000000 6700000003000000 - {a=>40,b=>0} 2800000000000000 2800000000000000 2800000000000000 2800000000000000 - {a=>49,b=>1} 3100000001000000 3100000001000000 3100000001000000 3100000001000000 - {a=>21,b=>0} 1500000000000000 1500000000000000 1500000000000000 1500000000000000 - {a=>111,b=>0} 6f00000000000000 6f00000000000000 6f00000000000000 6f00000000000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>103,a=>-126,b=>1} 82ffffff01670000 82ffffff01670000 82ffffff01670000 82ffffff01670000 - {c=>66,a=>-92,b=>1} a4ffffff01420000 a4ffffff01420000 a4ffffff01420000 a4ffffff01420000 - {c=>11,a=>61,b=>0} 3d000000000b0000 3d000000000b0000 3d000000000b0000 3d000000000b0000 - {c=>87,a=>-84,b=>2} acffffff02570000 acffffff02570000 acffffff02570000 acffffff02570000 - {c=>62,a=>-50,b=>2} ceffffff023e0000 ceffffff023e0000 ceffffff023e0000 ceffffff023e0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>107,a=>0,b=>0} 00000000006b0000 00000000006b0000 00000000006b0000 00000000006b0000 - {c=>118,a=>-118,b=>1} 8affffff01760000 8affffff01760000 8affffff01760000 8affffff01760000 - {c=>69,a=>-37,b=>1} dbffffff01450000 dbffffff01450000 dbffffff01450000 dbffffff01450000 - {c=>30,a=>91,b=>2} 5b000000021e0000 5b000000021e0000 5b000000021e0000 5b000000021e0000 - {c=>29,a=>124,b=>0} 7c000000001d0000 7c000000001d0000 7c000000001d0000 7c000000001d0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>61,a=>67,b=>2,d=>0} 43000000023d0000 43000000023d0000 43000000023d0000 43000000023d0000 - {c=>127,a=>17,b=>2,d=>1} 11000000027f0100 11000000027f0100 11000000027f0100 11000000027f0100 - {c=>119,a=>32,b=>1,d=>1} 2000000001770100 2000000001770100 2000000001770100 2000000001770100 - {c=>65,a=>-115,b=>0,d=>2} 8dffffff00410200 8dffffff00410200 8dffffff00410200 8dffffff00410200 - {c=>83,a=>98,b=>1,d=>1} 6200000001530100 6200000001530100 6200000001530100 6200000001530100 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>5523,c=>25,a=>-32,b=>3,d=>2} e0ffffff0319020093150000 e0ffffff0319020093150000 e0ffffff0319020093150000 e0ffffff0319020093150000 - {e=>17834,c=>17,a=>118,b=>3,d=>1} 7600000003110100aa450000 7600000003110100aa450000 7600000003110100aa450000 7600000003110100aa450000 - {e=>25877,c=>64,a=>-78,b=>2,d=>3} b2ffffff0240030015650000 b2ffffff0240030015650000 b2ffffff0240030015650000 b2ffffff0240030015650000 - {e=>5816,c=>42,a=>71,b=>2,d=>3} 47000000022a0300b8160000 47000000022a0300b8160000 47000000022a0300b8160000 47000000022a0300b8160000 - {e=>29371,c=>34,a=>49,b=>0,d=>0} 3100000000220000bb720000 3100000000220000bb720000 3100000000220000bb720000 3100000000220000bb720000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>24240,c=>104,a=>-100,b=>1,d=>0} 9cffffff01680000b05e0000 9cffffff01680000b05e0000 9cffffff01680000b05e0000 9cffffff01680000b05e0000 - {e=>12831,c=>111,a=>9,b=>1,d=>3} 09000000016f03001f320000 09000000016f03001f320000 09000000016f03001f320000 09000000016f03001f320000 - {e=>30312,c=>91,a=>97,b=>1,d=>2} 61000000015b020068760000 61000000015b020068760000 61000000015b020068760000 61000000015b020068760000 - {e=>10363,c=>58,a=>-82,b=>1,d=>0} aeffffff013a00007b280000 aeffffff013a00007b280000 aeffffff013a00007b280000 aeffffff013a00007b280000 - {e=>29377,c=>72,a=>39,b=>0,d=>0} 2700000000480000c1720000 2700000000480000c1720000 2700000000480000c1720000 2700000000480000c1720000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>17692,c=>26,a=>9,b=>2,d=>0,f=>3} 09000000021a00001c45000003000000 09000000021a00001c45000003000000 09000000021a00001c45000003000000 09000000021a00001c45000003000000 - {e=>27254,c=>68,a=>-9,b=>3,d=>1,f=>2} f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 - {e=>6512,c=>116,a=>59,b=>0,d=>3,f=>0} 3b000000007403007019000000000000 3b000000007403007019000000000000 3b000000007403007019000000000000 3b000000007403007019000000000000 - {e=>1930,c=>119,a=>83,b=>0,d=>0,f=>3} 53000000007700008a07000003000000 53000000007700008a07000003000000 53000000007700008a07000003000000 53000000007700008a07000003000000 - {e=>15816,c=>57,a=>52,b=>1,d=>3,f=>3} 3400000001390300c83d000003000000 3400000001390300c83d000003000000 3400000001390300c83d000003000000 3400000001390300c83d000003000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>30223,c=>33,a=>-100,g=>121180495,b=>1,d=>2,f=>0} 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 - {e=>18201,c=>67,a=>-52,g=>392025226,b=>0,d=>0,f=>2} ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 - {e=>17360,c=>19,a=>-73,g=>394570984,b=>1,d=>1,f=>3} b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 - {e=>10287,c=>34,a=>-106,g=>498558563,b=>2,d=>3,f=>3} 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d - {e=>9740,c=>45,a=>86,g=>1880755291,b=>1,d=>0,f=>2} 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>23079,a=>112,d=>1,c=>76,h=>172,b=>0,g=>635357675,f=>2} 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 - {e=>26130,a=>-73,d=>3,c=>118,h=>116,b=>0,g=>1812500274,f=>1} b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 - {e=>24159,a=>-26,d=>2,c=>104,h=>134,b=>0,g=>700333779,f=>0} e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 - {e=>2660,a=>-41,d=>2,c=>126,h=>49,b=>2,g=>1088641385,f=>0} d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 - {e=>25739,a=>-16,d=>2,c=>114,h=>244,b=>1,g=>1079005221,f=>1} f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>90,b=>1} 5a00000001000000 5a00000001000000 5a00000001000000 5a00000001000000 - {a=>-80,b=>0} b0ffffff00000000 b0ffffff00000000 b0ffffff00000000 b0ffffff00000000 - {a=>68,b=>2} 4400000002000000 4400000002000000 4400000002000000 4400000002000000 - {a=>-83,b=>3} adffffff03000000 adffffff03000000 adffffff03000000 adffffff03000000 - {a=>-41,b=>3} d7ffffff03000000 d7ffffff03000000 d7ffffff03000000 d7ffffff03000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>109,a=>96,b=>1} 60000000016d0000 60000000016d0000 60000000016d0000 60000000016d0000 - {c=>31,a=>-56,b=>2} c8ffffff021f0000 c8ffffff021f0000 c8ffffff021f0000 c8ffffff021f0000 - {c=>61,a=>16,b=>3} 10000000033d0000 10000000033d0000 10000000033d0000 10000000033d0000 - {c=>108,a=>110,b=>1} 6e000000016c0000 6e000000016c0000 6e000000016c0000 6e000000016c0000 - {c=>19,a=>38,b=>3} 2600000003130000 2600000003130000 2600000003130000 2600000003130000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>11,a=>-122,b=>1} 86ffffff010b0000 86ffffff010b0000 86ffffff010b0000 86ffffff010b0000 - {c=>97,a=>16,b=>1} 1000000001610000 1000000001610000 1000000001610000 1000000001610000 - {c=>80,a=>-128,b=>2} 80ffffff02500000 80ffffff02500000 80ffffff02500000 80ffffff02500000 - {c=>14,a=>123,b=>0} 7b000000000e0000 7b000000000e0000 7b000000000e0000 7b000000000e0000 - {c=>103,a=>47,b=>2} 2f00000002670000 2f00000002670000 2f00000002670000 2f00000002670000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>34,a=>-101,b=>0,d=>3} 9bffffff00220300 9bffffff00220300 9bffffff00220300 9bffffff00220300 - {c=>68,a=>-41,b=>0,d=>2} d7ffffff00440200 d7ffffff00440200 d7ffffff00440200 d7ffffff00440200 - {c=>43,a=>8,b=>0,d=>3} 08000000002b0300 08000000002b0300 08000000002b0300 08000000002b0300 - {c=>1,a=>-35,b=>1,d=>1} ddffffff01010100 ddffffff01010100 ddffffff01010100 ddffffff01010100 - {c=>76,a=>104,b=>1,d=>0} 68000000014c0000 68000000014c0000 68000000014c0000 68000000014c0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>24942,c=>46,a=>6,b=>3,d=>1} 06000000032e01006e610000 06000000032e01006e610000 06000000032e01006e610000 06000000032e01006e610000 - {e=>21474,c=>50,a=>-44,b=>1,d=>1} d4ffffff01320100e2530000 d4ffffff01320100e2530000 d4ffffff01320100e2530000 d4ffffff01320100e2530000 - {e=>3529,c=>20,a=>82,b=>2,d=>1} 5200000002140100c90d0000 5200000002140100c90d0000 5200000002140100c90d0000 5200000002140100c90d0000 - {e=>17185,c=>27,a=>101,b=>1,d=>1} 65000000011b010021430000 65000000011b010021430000 65000000011b010021430000 65000000011b010021430000 - {e=>16801,c=>73,a=>65,b=>2,d=>0} 4100000002490000a1410000 4100000002490000a1410000 4100000002490000a1410000 4100000002490000a1410000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>19824,c=>4,a=>-13,b=>0,d=>3} f3ffffff00040300704d0000 f3ffffff00040300704d0000 f3ffffff00040300704d0000 f3ffffff00040300704d0000 - {e=>26529,c=>110,a=>-18,b=>0,d=>0} eeffffff006e0000a1670000 eeffffff006e0000a1670000 eeffffff006e0000a1670000 eeffffff006e0000a1670000 - {e=>19156,c=>80,a=>-61,b=>3,d=>3} c3ffffff03500300d44a0000 c3ffffff03500300d44a0000 c3ffffff03500300d44a0000 c3ffffff03500300d44a0000 - {e=>3691,c=>27,a=>-58,b=>3,d=>1} c6ffffff031b01006b0e0000 c6ffffff031b01006b0e0000 c6ffffff031b01006b0e0000 c6ffffff031b01006b0e0000 - {e=>19252,c=>104,a=>-126,b=>0,d=>3} 82ffffff00680300344b0000 82ffffff00680300344b0000 82ffffff00680300344b0000 82ffffff00680300344b0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>26648,c=>18,a=>21,b=>0,d=>0,f=>3} 15000000001200001868000003000000 15000000001200001868000003000000 15000000001200001868000003000000 15000000001200001868000003000000 - {e=>4058,c=>41,a=>53,b=>2,d=>1,f=>1} 3500000002290100da0f000001000000 3500000002290100da0f000001000000 3500000002290100da0f000001000000 3500000002290100da0f000001000000 - {e=>32076,c=>52,a=>69,b=>0,d=>3,f=>0} 45000000003403004c7d000000000000 45000000003403004c7d000000000000 45000000003403004c7d000000000000 45000000003403004c7d000000000000 - {e=>1444,c=>19,a=>67,b=>0,d=>3,f=>2} 4300000000130300a405000002000000 4300000000130300a405000002000000 4300000000130300a405000002000000 4300000000130300a405000002000000 - {e=>24969,c=>106,a=>-88,b=>3,d=>1,f=>2} a8ffffff036a01008961000002000000 a8ffffff036a01008961000002000000 a8ffffff036a01008961000002000000 a8ffffff036a01008961000002000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16632,c=>60,a=>-40,g=>1817886941,b=>2,d=>3,f=>0} d8ffffff023c0300f840000000000000ddc05a6c d8ffffff023c0300f840000000000000ddc05a6c d8ffffff023c0300f840000000000000ddc05a6c d8ffffff023c0300f840000000000000ddc05a6c - {e=>473,c=>72,a=>-41,g=>52496826,b=>2,d=>0,f=>3} d7ffffff02480000d901000003000000ba092103 d7ffffff02480000d901000003000000ba092103 d7ffffff02480000d901000003000000ba092103 d7ffffff02480000d901000003000000ba092103 - {e=>11344,c=>93,a=>112,g=>612815542,b=>2,d=>3,f=>3} 70000000025d0300502c000003000000b6d28624 70000000025d0300502c000003000000b6d28624 70000000025d0300502c000003000000b6d28624 70000000025d0300502c000003000000b6d28624 - {e=>19196,c=>13,a=>-21,g=>359321552,b=>3,d=>0,f=>1} ebffffff030d0000fc4a000001000000d0cf6a15 ebffffff030d0000fc4a000001000000d0cf6a15 ebffffff030d0000fc4a000001000000d0cf6a15 ebffffff030d0000fc4a000001000000d0cf6a15 - {e=>17883,c=>107,a=>108,g=>578088007,b=>3,d=>0,f=>1} 6c000000036b0000db4500000100000047ec7422 6c000000036b0000db4500000100000047ec7422 6c000000036b0000db4500000100000047ec7422 6c000000036b0000db4500000100000047ec7422 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>12541,a=>64,d=>0,c=>105,h=>135,b=>2,g=>30539544,f=>0} 4000000002690000fd3000000000000018ffd10187000000 4000000002690000fd3000000000000018ffd10187000000 4000000002690000fd3000000000000018ffd10187000000 4000000002690000fd3000000000000018ffd10187000000 - {e=>20492,a=>-87,d=>3,c=>8,h=>213,b=>1,g=>1628818689,f=>3} a9ffffff010803000c5000000300000001cd1561d5000000 a9ffffff010803000c5000000300000001cd1561d5000000 a9ffffff010803000c5000000300000001cd1561d5000000 a9ffffff010803000c5000000300000001cd1561d5000000 - {e=>19965,a=>102,d=>3,c=>44,h=>160,b=>1,g=>1186990891,f=>0} 66000000012c0300fd4d0000000000002b0bc046a0000000 66000000012c0300fd4d0000000000002b0bc046a0000000 66000000012c0300fd4d0000000000002b0bc046a0000000 66000000012c0300fd4d0000000000002b0bc046a0000000 - {e=>4623,a=>123,d=>0,c=>12,h=>32,b=>0,g=>776268733,f=>1} 7b000000000c00000f12000001000000bdeb442e20000000 7b000000000c00000f12000001000000bdeb442e20000000 7b000000000c00000f12000001000000bdeb442e20000000 7b000000000c00000f12000001000000bdeb442e20000000 - {e=>32210,a=>87,d=>3,c=>96,h=>9,b=>0,g=>416850484,f=>1} 5700000000600300d27d00000100000034a2d81809000000 5700000000600300d27d00000100000034a2d81809000000 5700000000600300d27d00000100000034a2d81809000000 5700000000600300d27d00000100000034a2d81809000000 = Convert-Binary-C-0.85/tests/include/0000755000175000001440000000000014677003524016000 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/0000755000175000001440000000000014677003524017235 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/0000755000175000001440000000000014677003524021245 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/time/0000755000175000001440000000000014677003524022203 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/time/asctime_s.c0000644000175000001440000000327214676735310024326 0ustar mhxusers/* asctime_s( char *, rsize_t, const struct tm * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST #include errno_t asctime_s( char * s, rsize_t maxsize, const struct tm * timeptr ) { if ( s == NULL || timeptr == NULL || maxsize < 26 || maxsize > RSIZE_MAX || timeptr->tm_year < -1900 || timeptr->tm_year > 8099 /* TODO: || not normalized */ ) { if ( s != NULL && maxsize > 0 && maxsize <= RSIZE_MAX ) { s[0] = '\0'; } _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } sprintf( s, "%s %s %2d %.2d:%.2d:%.2d %4d\n", _PDCLIB_lc_time_C.day_name_abbr[ timeptr->tm_wday ], _PDCLIB_lc_time_C.month_name_abbr[ timeptr->tm_mon ], timeptr->tm_mday, timeptr->tm_hour, timeptr->tm_min, timeptr->tm_sec, timeptr->tm_year + 1900 ); return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { /* TODO: Constraint handling */ struct tm time; MKTIME( time, 52, 3, 1, 16, 8, 73, 0, 0 ); TESTCASE( strcmp( asctime( &time ), "Sun Sep 16 01:03:52 1973\n" ) == 0 ); MKTIME( time, 0, 0, 0, 1, 0, 0, 0, 0 ); TESTCASE( strcmp( asctime( &time ), "Sun Jan 1 00:00:00 1900\n" ) == 0 ); MKTIME( time, 60, 59, 23, 31, 11, 8099, 6, 0 ); TESTCASE( strcmp( asctime( &time ), "Sat Dec 31 23:59:60 9999\n" ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/time/gmtime.c0000644000175000001440000000225414676735310023640 0ustar mhxusers/* gmtime( const time_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" struct tm * gmtime( const time_t * timer ) { _PDCLIB_gmtcheck(); return _PDCLIB_gmtsub( &_PDCLIB_gmtmem, timer, 0, &_PDCLIB_tm ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { time_t t; struct tm * time; t = -2147483648l; time = gmtime( &t ); TESTCASE( time->tm_sec == 52 ); TESTCASE( time->tm_min == 45 ); TESTCASE( time->tm_hour == 20 ); TESTCASE( time->tm_mday == 13 ); TESTCASE( time->tm_mon == 11 ); TESTCASE( time->tm_year == 1 ); TESTCASE( time->tm_wday == 5 ); TESTCASE( time->tm_yday == 346 ); t = 2147483647l; time = gmtime( &t ); TESTCASE( time->tm_sec == 7 ); TESTCASE( time->tm_min == 14 ); TESTCASE( time->tm_hour == 3 ); TESTCASE( time->tm_mday == 19 ); TESTCASE( time->tm_mon == 0 ); TESTCASE( time->tm_year == 138 ); TESTCASE( time->tm_wday == 2 ); TESTCASE( time->tm_yday == 18 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/time/strftime.c0000644000175000001440000015244614676735310024224 0ustar mhxusers/* strftime( char * restrict, size_t, const char * restrict, const struct tm * restrict ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #include #include #ifndef REGTEST /* TODO: Alternative representations / numerals not supported. Multibyte support missing. */ /* This implementation's code is highly repetitive, but I did not really care for putting it into a number of macros / helper functions. */ enum wstart_t { E_SUNDAY = 0, E_MONDAY = 1, E_ISO_WEEK, E_ISO_YEAR }; #include static int week_calc( const struct tm * timeptr, int wtype ) { int wday; int bias; int week; if ( wtype <= E_MONDAY ) { /* Simple -- first week starting with E_SUNDAY / E_MONDAY, days before that are week 0. */ div_t weeks = div( timeptr->tm_yday, 7 ); wday = ( timeptr->tm_wday + 7 - wtype ) % 7; if ( weeks.rem >= wday ) { ++weeks.quot; } return weeks.quot; } /* calculating ISO week; relies on Sunday == 7 */ wday = timeptr->tm_wday; if ( wday == 0 ) { wday = 7; } /* https://en.wikipedia.org/wiki/ISO_week_date */ week = ( timeptr->tm_yday - wday + 11 ) / 7; if ( week == 53 ) { /* date *may* belong to the *next* year, if: * it is 31.12. and Monday - Wednesday * it is 30.12. and Monday - Tuesday * it is 29.12. and Monday We can safely assume December... */ if ( ( timeptr->tm_yday - wday - _PDCLIB_is_leap( timeptr->tm_year ) ) > 360 ) { week = 1; } } else if ( week == 0 ) { /* date *does* belong to *previous* year, i.e. has week 52 *unless*... * current year started on a Friday, or * previous year is leap and this year started on a Saturday. */ int firstday = timeptr->tm_wday - ( timeptr->tm_yday % 7 ); if ( firstday < 0 ) { firstday += 7; } if ( ( firstday == 5 ) || ( _PDCLIB_is_leap( timeptr->tm_year - 1 ) && firstday == 6 ) ) { week = 53; } else { week = 52; } } if ( wtype == E_ISO_WEEK ) { return week; } /* E_ISO_YEAR -- determine the "week-based year" */ bias = 0; if ( week >= 52 && timeptr->tm_mon == 0 ) { --bias; } else if ( week == 1 && timeptr->tm_mon == 11 ) { ++bias; } return timeptr->tm_year + 1900 + bias; } /* Assuming presence of s, rc, maxsize. Checks index for valid range, target buffer for sufficient remaining capacity, and copies the locale-specific string (or "?" if index out of range). Returns with zero if buffer capacity insufficient. */ #define SPRINTSTR( array, index, max ) \ { \ int ind = (index); \ const char * str = "?"; \ size_t len; \ if ( ind >= 0 && ind <= max ) \ { \ str = array[ ind ]; \ } \ len = strlen( str ); \ if ( rc < ( maxsize - len ) ) \ { \ strcpy( s + rc, str ); \ rc += len; \ } \ else \ { \ return 0; \ } \ } #define SPRINTREC( format ) \ { \ size_t count = strftime( s + rc, maxsize - rc, format, timeptr ); \ if ( count == 0 ) \ { \ return 0; \ } \ else \ { \ rc += count; \ } \ } size_t strftime( char * _PDCLIB_restrict s, size_t maxsize, const char * _PDCLIB_restrict format, const struct tm * _PDCLIB_restrict timeptr ) { size_t rc = 0; while ( rc < maxsize ) { if ( *format != '%' ) { if ( ( s[rc] = *format++ ) == '\0' ) { return rc; } else { ++rc; } } else { /* char flag = 0; */ switch ( *++format ) { case 'E': case 'O': /* flag = *format++; */ break; default: /* EMPTY */ break; } switch ( *format++ ) { case 'a': { /* tm_wday abbreviated */ SPRINTSTR( _PDCLIB_lc_time->day_name_abbr, timeptr->tm_wday, 6 ); break; } case 'A': { /* tm_wday full */ SPRINTSTR( _PDCLIB_lc_time->day_name_full, timeptr->tm_wday, 6 ); break; } case 'b': case 'h': { /* tm_mon abbreviated */ SPRINTSTR( _PDCLIB_lc_time->month_name_abbr, timeptr->tm_mon, 11 ); break; } case 'B': { /* tm_mon full */ SPRINTSTR( _PDCLIB_lc_time->month_name_full, timeptr->tm_mon, 11 ); break; } case 'c': { /* locale's date / time representation, %a %b %e %T %Y for C locale */ /* 'E' for locale's alternative representation */ SPRINTREC( _PDCLIB_lc_time->date_time_format ); break; } case 'C': { /* tm_year divided by 100, truncated to decimal (00-99) */ /* 'E' for base year (period) in locale's alternative representation */ if ( rc < ( maxsize - 2 ) ) { div_t period = div( ( ( timeptr->tm_year + 1900 ) / 100 ), 10 ); s[rc++] = '0' + period.quot; s[rc++] = '0' + period.rem; } else { return 0; } break; } case 'd': { /* tm_mday as decimal (01-31) */ /* 'O' for locale's alternative numeric symbols */ if ( rc < ( maxsize - 2 ) ) { div_t day = div( timeptr->tm_mday, 10 ); s[rc++] = '0' + day.quot; s[rc++] = '0' + day.rem; } else { return 0; } break; } case 'D': { /* %m/%d/%y */ SPRINTREC( "%m/%d/%y" ); break; } case 'e': { /* tm_mday as decimal ( 1-31) */ /* 'O' for locale's alternative numeric symbols */ if ( rc < ( maxsize - 2 ) ) { div_t day = div( timeptr->tm_mday, 10 ); s[rc++] = ( day.quot > 0 ) ? '0' + day.quot : ' '; s[rc++] = '0' + day.rem; } else { return 0; } break; } case 'F': { /* %Y-%m-%d */ SPRINTREC( "%Y-%m-%d" ); break; } case 'g': { /* last 2 digits of the week-based year as decimal (00-99) */ if ( rc < ( maxsize - 2 ) ) { div_t year = div( week_calc( timeptr, E_ISO_YEAR ) % 100, 10 ); s[rc++] = '0' + year.quot; s[rc++] = '0' + year.rem; } else { return 0; } break; } case 'G': { /* week-based year as decimal (e.g. 1997) */ if ( rc < ( maxsize - 4 ) ) { int year = week_calc( timeptr, E_ISO_YEAR ); int i; for ( i = 3; i >= 0; --i ) { div_t digit = div( year, 10 ); s[ rc + i ] = '0' + digit.rem; year = digit.quot; } rc += 4; } else { return 0; } break; } case 'H': { /* tm_hour as 24h decimal (00-23) */ /* 'O' for locale's alternative numeric symbols */ if ( rc < ( maxsize - 2 ) ) { div_t hour = div( timeptr->tm_hour, 10 ); s[rc++] = '0' + hour.quot; s[rc++] = '0' + hour.rem; } else { return 0; } break; } case 'I': { /* tm_hour as 12h decimal (01-12) */ /* 'O' for locale's alternative numeric symbols */ if ( rc < ( maxsize - 2 ) ) { div_t hour = div( ( timeptr->tm_hour + 11 ) % 12 + 1, 10 ); s[rc++] = '0' + hour.quot; s[rc++] = '0' + hour.rem; } else { return 0; } break; } case 'j': { /* tm_yday as decimal (001-366) */ if ( rc < ( maxsize - 3 ) ) { div_t yday = div( timeptr->tm_yday + 1, 100 ); s[rc++] = '0' + yday.quot; s[rc++] = '0' + yday.rem / 10; s[rc++] = '0' + yday.rem % 10; } else { return 0; } break; } case 'm': { /* tm_mon as decimal (01-12) */ /* 'O' for locale's alternative numeric symbols */ if ( rc < ( maxsize - 2 ) ) { div_t mon = div( timeptr->tm_mon + 1, 10 ); s[rc++] = '0' + mon.quot; s[rc++] = '0' + mon.rem; } else { return 0; } break; } case 'M': { /* tm_min as decimal (00-59) */ /* 'O' for locale's alternative numeric symbols */ if ( rc < ( maxsize - 2 ) ) { div_t min = div( timeptr->tm_min, 10 ); s[rc++] = '0' + min.quot; s[rc++] = '0' + min.rem; } else { return 0; } break; } case 'n': { /* newline */ s[rc++] = '\n'; break; } case 'p': { /* tm_hour locale's AM/PM designations */ SPRINTSTR( _PDCLIB_lc_time->am_pm, timeptr->tm_hour > 11, 1 ); break; } case 'r': { /* tm_hour / tm_min / tm_sec as locale's 12-hour clock time, %I:%M:%S %p for C locale */ SPRINTREC( _PDCLIB_lc_time->time_format_12h ); break; } case 'R': { /* %H:%M */ SPRINTREC( "%H:%M" ); break; } case 'S': { /* tm_sec as decimal (00-60) */ /* 'O' for locale's alternative numeric symbols */ if ( rc < ( maxsize - 2 ) ) { div_t sec = div( timeptr->tm_sec, 10 ); s[rc++] = '0' + sec.quot; s[rc++] = '0' + sec.rem; } else { return 0; } break; } case 't': { /* tabulator */ s[rc++] = '\t'; break; } case 'T': { /* %H:%M:%S */ SPRINTREC( "%H:%M:%S" ); break; } case 'u': { /* tm_wday as decimal (1-7) with Monday == 1 */ /* 'O' for locale's alternative numeric symbols */ s[rc++] = ( timeptr->tm_wday == 0 ) ? '7' : '0' + timeptr->tm_wday; break; } case 'U': { /* week number of the year (first Sunday as the first day of week 1) as decimal (00-53) */ /* 'O' for locale's alternative numeric symbols */ if ( rc < ( maxsize - 2 ) ) { div_t week = div( week_calc( timeptr, E_SUNDAY ), 10 ); s[rc++] = '0' + week.quot; s[rc++] = '0' + week.rem; } else { return 0; } break; } case 'V': { /* ISO week number as decimal (01-53) */ /* 'O' for locale's alternative numeric symbols */ if ( rc < ( maxsize - 2 ) ) { div_t week = div( week_calc( timeptr, E_ISO_WEEK ), 10 ); s[rc++] = '0' + week.quot; s[rc++] = '0' + week.rem; } else { return 0; } break; } case 'w': { /* tm_wday as decimal number (0-6) with Sunday == 0 */ /* 'O' for locale's alternative numeric symbols */ s[rc++] = '0' + timeptr->tm_wday; break; } case 'W': { /* week number of the year (first Monday as the first day of week 1) as decimal (00-53) */ /* 'O' for locale's alternative numeric symbols */ if ( rc < ( maxsize - 2 ) ) { div_t week = div( week_calc( timeptr, E_MONDAY ), 10 ); s[rc++] = '0' + week.quot; s[rc++] = '0' + week.rem; } else { return 0; } break; } case 'x': { /* locale's date representation, %m/%d/%y for C locale */ /* 'E' for locale's alternative representation */ SPRINTREC( _PDCLIB_lc_time->date_format ); break; } case 'X': { /* locale's time representation, %T for C locale */ /* 'E' for locale's alternative representation */ SPRINTREC( _PDCLIB_lc_time->time_format ); break; } case 'y': { /* last 2 digits of tm_year as decimal (00-99) */ /* 'E' for offset from %EC (year only) in locale's alternative representation */ /* 'O' for locale's alternative numeric symbols */ if ( rc < ( maxsize - 2 ) ) { div_t year = div( ( timeptr->tm_year % 100 ), 10 ); s[rc++] = '0' + year.quot; s[rc++] = '0' + year.rem; } else { return 0; } break; } case 'Y': { /* tm_year as decimal (e.g. 1997) */ /* 'E' for locale's alternative representation */ if ( rc < ( maxsize - 4 ) ) { int year = timeptr->tm_year + 1900; int i; for ( i = 3; i >= 0; --i ) { div_t digit = div( year, 10 ); s[ rc + i ] = '0' + digit.rem; year = digit.quot; } rc += 4; } else { return 0; } break; } case 'z': { /* tm_isdst / UTC offset in ISO8601 format (e.g. -0430 meaning 4 hours 30 minutes behind Greenwich), or no characters */ /* TODO: 'z' */ break; } case 'Z': { /* tm_isdst / locale's time zone name or abbreviation, or no characters */ /* TODO: 'Z' */ break; } case '%': { /* '%' character */ s[rc++] = '%'; break; } } } } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" /* Test data generated by reference mktime() / strftime(), listing: * tm_year * tm_wday * tm_yday * '%U' result * '%V' result * '%W' result */ int data[1020][6] = { { 70, 4, 0, 0, 1, 0 }, { 70, 5, 1, 0, 1, 0 }, { 70, 6, 2, 0, 1, 0 }, { 70, 0, 3, 1, 1, 0 }, { 70, 1, 4, 1, 2, 1 }, { 70, 2, 5, 1, 2, 1 }, { 70, 3, 6, 1, 2, 1 }, { 70, 4, 357, 51, 52, 51 }, { 70, 5, 358, 51, 52, 51 }, { 70, 6, 359, 51, 52, 51 }, { 70, 0, 360, 52, 52, 51 }, { 70, 1, 361, 52, 53, 52 }, { 70, 2, 362, 52, 53, 52 }, { 70, 3, 363, 52, 53, 52 }, { 70, 4, 364, 52, 53, 52 }, { 71, 5, 0, 0, 53, 0 }, { 71, 6, 1, 0, 53, 0 }, { 71, 0, 2, 1, 53, 0 }, { 71, 1, 3, 1, 1, 1 }, { 71, 2, 4, 1, 1, 1 }, { 71, 3, 5, 1, 1, 1 }, { 71, 4, 6, 1, 1, 1 }, { 71, 5, 357, 51, 51, 51 }, { 71, 6, 358, 51, 51, 51 }, { 71, 0, 359, 52, 51, 51 }, { 71, 1, 360, 52, 52, 52 }, { 71, 2, 361, 52, 52, 52 }, { 71, 3, 362, 52, 52, 52 }, { 71, 4, 363, 52, 52, 52 }, { 71, 5, 364, 52, 52, 52 }, { 72, 6, 0, 0, 52, 0 }, { 72, 0, 1, 1, 52, 0 }, { 72, 1, 2, 1, 1, 1 }, { 72, 2, 3, 1, 1, 1 }, { 72, 3, 4, 1, 1, 1 }, { 72, 4, 5, 1, 1, 1 }, { 72, 5, 6, 1, 1, 1 }, { 72, 0, 358, 52, 51, 51 }, { 72, 1, 359, 52, 52, 52 }, { 72, 2, 360, 52, 52, 52 }, { 72, 3, 361, 52, 52, 52 }, { 72, 4, 362, 52, 52, 52 }, { 72, 5, 363, 52, 52, 52 }, { 72, 6, 364, 52, 52, 52 }, { 72, 0, 365, 53, 52, 52 }, { 73, 1, 0, 0, 1, 1 }, { 73, 2, 1, 0, 1, 1 }, { 73, 3, 2, 0, 1, 1 }, { 73, 4, 3, 0, 1, 1 }, { 73, 5, 4, 0, 1, 1 }, { 73, 6, 5, 0, 1, 1 }, { 73, 0, 6, 1, 1, 1 }, { 73, 1, 357, 51, 52, 52 }, { 73, 2, 358, 51, 52, 52 }, { 73, 3, 359, 51, 52, 52 }, { 73, 4, 360, 51, 52, 52 }, { 73, 5, 361, 51, 52, 52 }, { 73, 6, 362, 51, 52, 52 }, { 73, 0, 363, 52, 52, 52 }, { 73, 1, 364, 52, 1, 53 }, { 74, 2, 0, 0, 1, 0 }, { 74, 3, 1, 0, 1, 0 }, { 74, 4, 2, 0, 1, 0 }, { 74, 5, 3, 0, 1, 0 }, { 74, 6, 4, 0, 1, 0 }, { 74, 0, 5, 1, 1, 0 }, { 74, 1, 6, 1, 2, 1 }, { 74, 2, 357, 51, 52, 51 }, { 74, 3, 358, 51, 52, 51 }, { 74, 4, 359, 51, 52, 51 }, { 74, 5, 360, 51, 52, 51 }, { 74, 6, 361, 51, 52, 51 }, { 74, 0, 362, 52, 52, 51 }, { 74, 1, 363, 52, 1, 52 }, { 74, 2, 364, 52, 1, 52 }, { 75, 3, 0, 0, 1, 0 }, { 75, 4, 1, 0, 1, 0 }, { 75, 5, 2, 0, 1, 0 }, { 75, 6, 3, 0, 1, 0 }, { 75, 0, 4, 1, 1, 0 }, { 75, 1, 5, 1, 2, 1 }, { 75, 2, 6, 1, 2, 1 }, { 75, 3, 357, 51, 52, 51 }, { 75, 4, 358, 51, 52, 51 }, { 75, 5, 359, 51, 52, 51 }, { 75, 6, 360, 51, 52, 51 }, { 75, 0, 361, 52, 52, 51 }, { 75, 1, 362, 52, 1, 52 }, { 75, 2, 363, 52, 1, 52 }, { 75, 3, 364, 52, 1, 52 }, { 76, 4, 0, 0, 1, 0 }, { 76, 5, 1, 0, 1, 0 }, { 76, 6, 2, 0, 1, 0 }, { 76, 0, 3, 1, 1, 0 }, { 76, 1, 4, 1, 2, 1 }, { 76, 2, 5, 1, 2, 1 }, { 76, 3, 6, 1, 2, 1 }, { 76, 5, 358, 51, 52, 51 }, { 76, 6, 359, 51, 52, 51 }, { 76, 0, 360, 52, 52, 51 }, { 76, 1, 361, 52, 53, 52 }, { 76, 2, 362, 52, 53, 52 }, { 76, 3, 363, 52, 53, 52 }, { 76, 4, 364, 52, 53, 52 }, { 76, 5, 365, 52, 53, 52 }, { 77, 6, 0, 0, 53, 0 }, { 77, 0, 1, 1, 53, 0 }, { 77, 1, 2, 1, 1, 1 }, { 77, 2, 3, 1, 1, 1 }, { 77, 3, 4, 1, 1, 1 }, { 77, 4, 5, 1, 1, 1 }, { 77, 5, 6, 1, 1, 1 }, { 77, 6, 357, 51, 51, 51 }, { 77, 0, 358, 52, 51, 51 }, { 77, 1, 359, 52, 52, 52 }, { 77, 2, 360, 52, 52, 52 }, { 77, 3, 361, 52, 52, 52 }, { 77, 4, 362, 52, 52, 52 }, { 77, 5, 363, 52, 52, 52 }, { 77, 6, 364, 52, 52, 52 }, { 78, 0, 0, 1, 52, 0 }, { 78, 1, 1, 1, 1, 1 }, { 78, 2, 2, 1, 1, 1 }, { 78, 3, 3, 1, 1, 1 }, { 78, 4, 4, 1, 1, 1 }, { 78, 5, 5, 1, 1, 1 }, { 78, 6, 6, 1, 1, 1 }, { 78, 0, 357, 52, 51, 51 }, { 78, 1, 358, 52, 52, 52 }, { 78, 2, 359, 52, 52, 52 }, { 78, 3, 360, 52, 52, 52 }, { 78, 4, 361, 52, 52, 52 }, { 78, 5, 362, 52, 52, 52 }, { 78, 6, 363, 52, 52, 52 }, { 78, 0, 364, 53, 52, 52 }, { 79, 1, 0, 0, 1, 1 }, { 79, 2, 1, 0, 1, 1 }, { 79, 3, 2, 0, 1, 1 }, { 79, 4, 3, 0, 1, 1 }, { 79, 5, 4, 0, 1, 1 }, { 79, 6, 5, 0, 1, 1 }, { 79, 0, 6, 1, 1, 1 }, { 79, 1, 357, 51, 52, 52 }, { 79, 2, 358, 51, 52, 52 }, { 79, 3, 359, 51, 52, 52 }, { 79, 4, 360, 51, 52, 52 }, { 79, 5, 361, 51, 52, 52 }, { 79, 6, 362, 51, 52, 52 }, { 79, 0, 363, 52, 52, 52 }, { 79, 1, 364, 52, 1, 53 }, { 80, 2, 0, 0, 1, 0 }, { 80, 3, 1, 0, 1, 0 }, { 80, 4, 2, 0, 1, 0 }, { 80, 5, 3, 0, 1, 0 }, { 80, 6, 4, 0, 1, 0 }, { 80, 0, 5, 1, 1, 0 }, { 80, 1, 6, 1, 2, 1 }, { 80, 3, 358, 51, 52, 51 }, { 80, 4, 359, 51, 52, 51 }, { 80, 5, 360, 51, 52, 51 }, { 80, 6, 361, 51, 52, 51 }, { 80, 0, 362, 52, 52, 51 }, { 80, 1, 363, 52, 1, 52 }, { 80, 2, 364, 52, 1, 52 }, { 80, 3, 365, 52, 1, 52 }, { 81, 4, 0, 0, 1, 0 }, { 81, 5, 1, 0, 1, 0 }, { 81, 6, 2, 0, 1, 0 }, { 81, 0, 3, 1, 1, 0 }, { 81, 1, 4, 1, 2, 1 }, { 81, 2, 5, 1, 2, 1 }, { 81, 3, 6, 1, 2, 1 }, { 81, 4, 357, 51, 52, 51 }, { 81, 5, 358, 51, 52, 51 }, { 81, 6, 359, 51, 52, 51 }, { 81, 0, 360, 52, 52, 51 }, { 81, 1, 361, 52, 53, 52 }, { 81, 2, 362, 52, 53, 52 }, { 81, 3, 363, 52, 53, 52 }, { 81, 4, 364, 52, 53, 52 }, { 82, 5, 0, 0, 53, 0 }, { 82, 6, 1, 0, 53, 0 }, { 82, 0, 2, 1, 53, 0 }, { 82, 1, 3, 1, 1, 1 }, { 82, 2, 4, 1, 1, 1 }, { 82, 3, 5, 1, 1, 1 }, { 82, 4, 6, 1, 1, 1 }, { 82, 5, 357, 51, 51, 51 }, { 82, 6, 358, 51, 51, 51 }, { 82, 0, 359, 52, 51, 51 }, { 82, 1, 360, 52, 52, 52 }, { 82, 2, 361, 52, 52, 52 }, { 82, 3, 362, 52, 52, 52 }, { 82, 4, 363, 52, 52, 52 }, { 82, 5, 364, 52, 52, 52 }, { 83, 6, 0, 0, 52, 0 }, { 83, 0, 1, 1, 52, 0 }, { 83, 1, 2, 1, 1, 1 }, { 83, 2, 3, 1, 1, 1 }, { 83, 3, 4, 1, 1, 1 }, { 83, 4, 5, 1, 1, 1 }, { 83, 5, 6, 1, 1, 1 }, { 83, 6, 357, 51, 51, 51 }, { 83, 0, 358, 52, 51, 51 }, { 83, 1, 359, 52, 52, 52 }, { 83, 2, 360, 52, 52, 52 }, { 83, 3, 361, 52, 52, 52 }, { 83, 4, 362, 52, 52, 52 }, { 83, 5, 363, 52, 52, 52 }, { 83, 6, 364, 52, 52, 52 }, { 84, 0, 0, 1, 52, 0 }, { 84, 1, 1, 1, 1, 1 }, { 84, 2, 2, 1, 1, 1 }, { 84, 3, 3, 1, 1, 1 }, { 84, 4, 4, 1, 1, 1 }, { 84, 5, 5, 1, 1, 1 }, { 84, 6, 6, 1, 1, 1 }, { 84, 1, 358, 52, 52, 52 }, { 84, 2, 359, 52, 52, 52 }, { 84, 3, 360, 52, 52, 52 }, { 84, 4, 361, 52, 52, 52 }, { 84, 5, 362, 52, 52, 52 }, { 84, 6, 363, 52, 52, 52 }, { 84, 0, 364, 53, 52, 52 }, { 84, 1, 365, 53, 1, 53 }, { 85, 2, 0, 0, 1, 0 }, { 85, 3, 1, 0, 1, 0 }, { 85, 4, 2, 0, 1, 0 }, { 85, 5, 3, 0, 1, 0 }, { 85, 6, 4, 0, 1, 0 }, { 85, 0, 5, 1, 1, 0 }, { 85, 1, 6, 1, 2, 1 }, { 85, 2, 357, 51, 52, 51 }, { 85, 3, 358, 51, 52, 51 }, { 85, 4, 359, 51, 52, 51 }, { 85, 5, 360, 51, 52, 51 }, { 85, 6, 361, 51, 52, 51 }, { 85, 0, 362, 52, 52, 51 }, { 85, 1, 363, 52, 1, 52 }, { 85, 2, 364, 52, 1, 52 }, { 86, 3, 0, 0, 1, 0 }, { 86, 4, 1, 0, 1, 0 }, { 86, 5, 2, 0, 1, 0 }, { 86, 6, 3, 0, 1, 0 }, { 86, 0, 4, 1, 1, 0 }, { 86, 1, 5, 1, 2, 1 }, { 86, 2, 6, 1, 2, 1 }, { 86, 3, 357, 51, 52, 51 }, { 86, 4, 358, 51, 52, 51 }, { 86, 5, 359, 51, 52, 51 }, { 86, 6, 360, 51, 52, 51 }, { 86, 0, 361, 52, 52, 51 }, { 86, 1, 362, 52, 1, 52 }, { 86, 2, 363, 52, 1, 52 }, { 86, 3, 364, 52, 1, 52 }, { 87, 4, 0, 0, 1, 0 }, { 87, 5, 1, 0, 1, 0 }, { 87, 6, 2, 0, 1, 0 }, { 87, 0, 3, 1, 1, 0 }, { 87, 1, 4, 1, 2, 1 }, { 87, 2, 5, 1, 2, 1 }, { 87, 3, 6, 1, 2, 1 }, { 87, 4, 357, 51, 52, 51 }, { 87, 5, 358, 51, 52, 51 }, { 87, 6, 359, 51, 52, 51 }, { 87, 0, 360, 52, 52, 51 }, { 87, 1, 361, 52, 53, 52 }, { 87, 2, 362, 52, 53, 52 }, { 87, 3, 363, 52, 53, 52 }, { 87, 4, 364, 52, 53, 52 }, { 88, 5, 0, 0, 53, 0 }, { 88, 6, 1, 0, 53, 0 }, { 88, 0, 2, 1, 53, 0 }, { 88, 1, 3, 1, 1, 1 }, { 88, 2, 4, 1, 1, 1 }, { 88, 3, 5, 1, 1, 1 }, { 88, 4, 6, 1, 1, 1 }, { 88, 6, 358, 51, 51, 51 }, { 88, 0, 359, 52, 51, 51 }, { 88, 1, 360, 52, 52, 52 }, { 88, 2, 361, 52, 52, 52 }, { 88, 3, 362, 52, 52, 52 }, { 88, 4, 363, 52, 52, 52 }, { 88, 5, 364, 52, 52, 52 }, { 88, 6, 365, 52, 52, 52 }, { 89, 0, 0, 1, 52, 0 }, { 89, 1, 1, 1, 1, 1 }, { 89, 2, 2, 1, 1, 1 }, { 89, 3, 3, 1, 1, 1 }, { 89, 4, 4, 1, 1, 1 }, { 89, 5, 5, 1, 1, 1 }, { 89, 6, 6, 1, 1, 1 }, { 89, 0, 357, 52, 51, 51 }, { 89, 1, 358, 52, 52, 52 }, { 89, 2, 359, 52, 52, 52 }, { 89, 3, 360, 52, 52, 52 }, { 89, 4, 361, 52, 52, 52 }, { 89, 5, 362, 52, 52, 52 }, { 89, 6, 363, 52, 52, 52 }, { 89, 0, 364, 53, 52, 52 }, { 90, 1, 0, 0, 1, 1 }, { 90, 2, 1, 0, 1, 1 }, { 90, 3, 2, 0, 1, 1 }, { 90, 4, 3, 0, 1, 1 }, { 90, 5, 4, 0, 1, 1 }, { 90, 6, 5, 0, 1, 1 }, { 90, 0, 6, 1, 1, 1 }, { 90, 1, 357, 51, 52, 52 }, { 90, 2, 358, 51, 52, 52 }, { 90, 3, 359, 51, 52, 52 }, { 90, 4, 360, 51, 52, 52 }, { 90, 5, 361, 51, 52, 52 }, { 90, 6, 362, 51, 52, 52 }, { 90, 0, 363, 52, 52, 52 }, { 90, 1, 364, 52, 1, 53 }, { 91, 2, 0, 0, 1, 0 }, { 91, 3, 1, 0, 1, 0 }, { 91, 4, 2, 0, 1, 0 }, { 91, 5, 3, 0, 1, 0 }, { 91, 6, 4, 0, 1, 0 }, { 91, 0, 5, 1, 1, 0 }, { 91, 1, 6, 1, 2, 1 }, { 91, 2, 357, 51, 52, 51 }, { 91, 3, 358, 51, 52, 51 }, { 91, 4, 359, 51, 52, 51 }, { 91, 5, 360, 51, 52, 51 }, { 91, 6, 361, 51, 52, 51 }, { 91, 0, 362, 52, 52, 51 }, { 91, 1, 363, 52, 1, 52 }, { 91, 2, 364, 52, 1, 52 }, { 92, 3, 0, 0, 1, 0 }, { 92, 4, 1, 0, 1, 0 }, { 92, 5, 2, 0, 1, 0 }, { 92, 6, 3, 0, 1, 0 }, { 92, 0, 4, 1, 1, 0 }, { 92, 1, 5, 1, 2, 1 }, { 92, 2, 6, 1, 2, 1 }, { 92, 4, 358, 51, 52, 51 }, { 92, 5, 359, 51, 52, 51 }, { 92, 6, 360, 51, 52, 51 }, { 92, 0, 361, 52, 52, 51 }, { 92, 1, 362, 52, 53, 52 }, { 92, 2, 363, 52, 53, 52 }, { 92, 3, 364, 52, 53, 52 }, { 92, 4, 365, 52, 53, 52 }, { 93, 5, 0, 0, 53, 0 }, { 93, 6, 1, 0, 53, 0 }, { 93, 0, 2, 1, 53, 0 }, { 93, 1, 3, 1, 1, 1 }, { 93, 2, 4, 1, 1, 1 }, { 93, 3, 5, 1, 1, 1 }, { 93, 4, 6, 1, 1, 1 }, { 93, 5, 357, 51, 51, 51 }, { 93, 6, 358, 51, 51, 51 }, { 93, 0, 359, 52, 51, 51 }, { 93, 1, 360, 52, 52, 52 }, { 93, 2, 361, 52, 52, 52 }, { 93, 3, 362, 52, 52, 52 }, { 93, 4, 363, 52, 52, 52 }, { 93, 5, 364, 52, 52, 52 }, { 94, 6, 0, 0, 52, 0 }, { 94, 0, 1, 1, 52, 0 }, { 94, 1, 2, 1, 1, 1 }, { 94, 2, 3, 1, 1, 1 }, { 94, 3, 4, 1, 1, 1 }, { 94, 4, 5, 1, 1, 1 }, { 94, 5, 6, 1, 1, 1 }, { 94, 6, 357, 51, 51, 51 }, { 94, 0, 358, 52, 51, 51 }, { 94, 1, 359, 52, 52, 52 }, { 94, 2, 360, 52, 52, 52 }, { 94, 3, 361, 52, 52, 52 }, { 94, 4, 362, 52, 52, 52 }, { 94, 5, 363, 52, 52, 52 }, { 94, 6, 364, 52, 52, 52 }, { 95, 0, 0, 1, 52, 0 }, { 95, 1, 1, 1, 1, 1 }, { 95, 2, 2, 1, 1, 1 }, { 95, 3, 3, 1, 1, 1 }, { 95, 4, 4, 1, 1, 1 }, { 95, 5, 5, 1, 1, 1 }, { 95, 6, 6, 1, 1, 1 }, { 95, 0, 357, 52, 51, 51 }, { 95, 1, 358, 52, 52, 52 }, { 95, 2, 359, 52, 52, 52 }, { 95, 3, 360, 52, 52, 52 }, { 95, 4, 361, 52, 52, 52 }, { 95, 5, 362, 52, 52, 52 }, { 95, 6, 363, 52, 52, 52 }, { 95, 0, 364, 53, 52, 52 }, { 96, 1, 0, 0, 1, 1 }, { 96, 2, 1, 0, 1, 1 }, { 96, 3, 2, 0, 1, 1 }, { 96, 4, 3, 0, 1, 1 }, { 96, 5, 4, 0, 1, 1 }, { 96, 6, 5, 0, 1, 1 }, { 96, 0, 6, 1, 1, 1 }, { 96, 2, 358, 51, 52, 52 }, { 96, 3, 359, 51, 52, 52 }, { 96, 4, 360, 51, 52, 52 }, { 96, 5, 361, 51, 52, 52 }, { 96, 6, 362, 51, 52, 52 }, { 96, 0, 363, 52, 52, 52 }, { 96, 1, 364, 52, 1, 53 }, { 96, 2, 365, 52, 1, 53 }, { 97, 3, 0, 0, 1, 0 }, { 97, 4, 1, 0, 1, 0 }, { 97, 5, 2, 0, 1, 0 }, { 97, 6, 3, 0, 1, 0 }, { 97, 0, 4, 1, 1, 0 }, { 97, 1, 5, 1, 2, 1 }, { 97, 2, 6, 1, 2, 1 }, { 97, 3, 357, 51, 52, 51 }, { 97, 4, 358, 51, 52, 51 }, { 97, 5, 359, 51, 52, 51 }, { 97, 6, 360, 51, 52, 51 }, { 97, 0, 361, 52, 52, 51 }, { 97, 1, 362, 52, 1, 52 }, { 97, 2, 363, 52, 1, 52 }, { 97, 3, 364, 52, 1, 52 }, { 98, 4, 0, 0, 1, 0 }, { 98, 5, 1, 0, 1, 0 }, { 98, 6, 2, 0, 1, 0 }, { 98, 0, 3, 1, 1, 0 }, { 98, 1, 4, 1, 2, 1 }, { 98, 2, 5, 1, 2, 1 }, { 98, 3, 6, 1, 2, 1 }, { 98, 4, 357, 51, 52, 51 }, { 98, 5, 358, 51, 52, 51 }, { 98, 6, 359, 51, 52, 51 }, { 98, 0, 360, 52, 52, 51 }, { 98, 1, 361, 52, 53, 52 }, { 98, 2, 362, 52, 53, 52 }, { 98, 3, 363, 52, 53, 52 }, { 98, 4, 364, 52, 53, 52 }, { 99, 5, 0, 0, 53, 0 }, { 99, 6, 1, 0, 53, 0 }, { 99, 0, 2, 1, 53, 0 }, { 99, 1, 3, 1, 1, 1 }, { 99, 2, 4, 1, 1, 1 }, { 99, 3, 5, 1, 1, 1 }, { 99, 4, 6, 1, 1, 1 }, { 99, 5, 357, 51, 51, 51 }, { 99, 6, 358, 51, 51, 51 }, { 99, 0, 359, 52, 51, 51 }, { 99, 1, 360, 52, 52, 52 }, { 99, 2, 361, 52, 52, 52 }, { 99, 3, 362, 52, 52, 52 }, { 99, 4, 363, 52, 52, 52 }, { 99, 5, 364, 52, 52, 52 }, { 100, 6, 0, 0, 52, 0 }, { 100, 0, 1, 1, 52, 0 }, { 100, 1, 2, 1, 1, 1 }, { 100, 2, 3, 1, 1, 1 }, { 100, 3, 4, 1, 1, 1 }, { 100, 4, 5, 1, 1, 1 }, { 100, 5, 6, 1, 1, 1 }, { 100, 0, 358, 52, 51, 51 }, { 100, 1, 359, 52, 52, 52 }, { 100, 2, 360, 52, 52, 52 }, { 100, 3, 361, 52, 52, 52 }, { 100, 4, 362, 52, 52, 52 }, { 100, 5, 363, 52, 52, 52 }, { 100, 6, 364, 52, 52, 52 }, { 100, 0, 365, 53, 52, 52 }, { 101, 1, 0, 0, 1, 1 }, { 101, 2, 1, 0, 1, 1 }, { 101, 3, 2, 0, 1, 1 }, { 101, 4, 3, 0, 1, 1 }, { 101, 5, 4, 0, 1, 1 }, { 101, 6, 5, 0, 1, 1 }, { 101, 0, 6, 1, 1, 1 }, { 101, 1, 357, 51, 52, 52 }, { 101, 2, 358, 51, 52, 52 }, { 101, 3, 359, 51, 52, 52 }, { 101, 4, 360, 51, 52, 52 }, { 101, 5, 361, 51, 52, 52 }, { 101, 6, 362, 51, 52, 52 }, { 101, 0, 363, 52, 52, 52 }, { 101, 1, 364, 52, 1, 53 }, { 102, 2, 0, 0, 1, 0 }, { 102, 3, 1, 0, 1, 0 }, { 102, 4, 2, 0, 1, 0 }, { 102, 5, 3, 0, 1, 0 }, { 102, 6, 4, 0, 1, 0 }, { 102, 0, 5, 1, 1, 0 }, { 102, 1, 6, 1, 2, 1 }, { 102, 2, 357, 51, 52, 51 }, { 102, 3, 358, 51, 52, 51 }, { 102, 4, 359, 51, 52, 51 }, { 102, 5, 360, 51, 52, 51 }, { 102, 6, 361, 51, 52, 51 }, { 102, 0, 362, 52, 52, 51 }, { 102, 1, 363, 52, 1, 52 }, { 102, 2, 364, 52, 1, 52 }, { 103, 3, 0, 0, 1, 0 }, { 103, 4, 1, 0, 1, 0 }, { 103, 5, 2, 0, 1, 0 }, { 103, 6, 3, 0, 1, 0 }, { 103, 0, 4, 1, 1, 0 }, { 103, 1, 5, 1, 2, 1 }, { 103, 2, 6, 1, 2, 1 }, { 103, 3, 357, 51, 52, 51 }, { 103, 4, 358, 51, 52, 51 }, { 103, 5, 359, 51, 52, 51 }, { 103, 6, 360, 51, 52, 51 }, { 103, 0, 361, 52, 52, 51 }, { 103, 1, 362, 52, 1, 52 }, { 103, 2, 363, 52, 1, 52 }, { 103, 3, 364, 52, 1, 52 }, { 104, 4, 0, 0, 1, 0 }, { 104, 5, 1, 0, 1, 0 }, { 104, 6, 2, 0, 1, 0 }, { 104, 0, 3, 1, 1, 0 }, { 104, 1, 4, 1, 2, 1 }, { 104, 2, 5, 1, 2, 1 }, { 104, 3, 6, 1, 2, 1 }, { 104, 5, 358, 51, 52, 51 }, { 104, 6, 359, 51, 52, 51 }, { 104, 0, 360, 52, 52, 51 }, { 104, 1, 361, 52, 53, 52 }, { 104, 2, 362, 52, 53, 52 }, { 104, 3, 363, 52, 53, 52 }, { 104, 4, 364, 52, 53, 52 }, { 104, 5, 365, 52, 53, 52 }, { 105, 6, 0, 0, 53, 0 }, { 105, 0, 1, 1, 53, 0 }, { 105, 1, 2, 1, 1, 1 }, { 105, 2, 3, 1, 1, 1 }, { 105, 3, 4, 1, 1, 1 }, { 105, 4, 5, 1, 1, 1 }, { 105, 5, 6, 1, 1, 1 }, { 105, 6, 357, 51, 51, 51 }, { 105, 0, 358, 52, 51, 51 }, { 105, 1, 359, 52, 52, 52 }, { 105, 2, 360, 52, 52, 52 }, { 105, 3, 361, 52, 52, 52 }, { 105, 4, 362, 52, 52, 52 }, { 105, 5, 363, 52, 52, 52 }, { 105, 6, 364, 52, 52, 52 }, { 106, 0, 0, 1, 52, 0 }, { 106, 1, 1, 1, 1, 1 }, { 106, 2, 2, 1, 1, 1 }, { 106, 3, 3, 1, 1, 1 }, { 106, 4, 4, 1, 1, 1 }, { 106, 5, 5, 1, 1, 1 }, { 106, 6, 6, 1, 1, 1 }, { 106, 0, 357, 52, 51, 51 }, { 106, 1, 358, 52, 52, 52 }, { 106, 2, 359, 52, 52, 52 }, { 106, 3, 360, 52, 52, 52 }, { 106, 4, 361, 52, 52, 52 }, { 106, 5, 362, 52, 52, 52 }, { 106, 6, 363, 52, 52, 52 }, { 106, 0, 364, 53, 52, 52 }, { 107, 1, 0, 0, 1, 1 }, { 107, 2, 1, 0, 1, 1 }, { 107, 3, 2, 0, 1, 1 }, { 107, 4, 3, 0, 1, 1 }, { 107, 5, 4, 0, 1, 1 }, { 107, 6, 5, 0, 1, 1 }, { 107, 0, 6, 1, 1, 1 }, { 107, 1, 357, 51, 52, 52 }, { 107, 2, 358, 51, 52, 52 }, { 107, 3, 359, 51, 52, 52 }, { 107, 4, 360, 51, 52, 52 }, { 107, 5, 361, 51, 52, 52 }, { 107, 6, 362, 51, 52, 52 }, { 107, 0, 363, 52, 52, 52 }, { 107, 1, 364, 52, 1, 53 }, { 108, 2, 0, 0, 1, 0 }, { 108, 3, 1, 0, 1, 0 }, { 108, 4, 2, 0, 1, 0 }, { 108, 5, 3, 0, 1, 0 }, { 108, 6, 4, 0, 1, 0 }, { 108, 0, 5, 1, 1, 0 }, { 108, 1, 6, 1, 2, 1 }, { 108, 3, 358, 51, 52, 51 }, { 108, 4, 359, 51, 52, 51 }, { 108, 5, 360, 51, 52, 51 }, { 108, 6, 361, 51, 52, 51 }, { 108, 0, 362, 52, 52, 51 }, { 108, 1, 363, 52, 1, 52 }, { 108, 2, 364, 52, 1, 52 }, { 108, 3, 365, 52, 1, 52 }, { 109, 4, 0, 0, 1, 0 }, { 109, 5, 1, 0, 1, 0 }, { 109, 6, 2, 0, 1, 0 }, { 109, 0, 3, 1, 1, 0 }, { 109, 1, 4, 1, 2, 1 }, { 109, 2, 5, 1, 2, 1 }, { 109, 3, 6, 1, 2, 1 }, { 109, 4, 357, 51, 52, 51 }, { 109, 5, 358, 51, 52, 51 }, { 109, 6, 359, 51, 52, 51 }, { 109, 0, 360, 52, 52, 51 }, { 109, 1, 361, 52, 53, 52 }, { 109, 2, 362, 52, 53, 52 }, { 109, 3, 363, 52, 53, 52 }, { 109, 4, 364, 52, 53, 52 }, { 110, 5, 0, 0, 53, 0 }, { 110, 6, 1, 0, 53, 0 }, { 110, 0, 2, 1, 53, 0 }, { 110, 1, 3, 1, 1, 1 }, { 110, 2, 4, 1, 1, 1 }, { 110, 3, 5, 1, 1, 1 }, { 110, 4, 6, 1, 1, 1 }, { 110, 5, 357, 51, 51, 51 }, { 110, 6, 358, 51, 51, 51 }, { 110, 0, 359, 52, 51, 51 }, { 110, 1, 360, 52, 52, 52 }, { 110, 2, 361, 52, 52, 52 }, { 110, 3, 362, 52, 52, 52 }, { 110, 4, 363, 52, 52, 52 }, { 110, 5, 364, 52, 52, 52 }, { 111, 6, 0, 0, 52, 0 }, { 111, 0, 1, 1, 52, 0 }, { 111, 1, 2, 1, 1, 1 }, { 111, 2, 3, 1, 1, 1 }, { 111, 3, 4, 1, 1, 1 }, { 111, 4, 5, 1, 1, 1 }, { 111, 5, 6, 1, 1, 1 }, { 111, 6, 357, 51, 51, 51 }, { 111, 0, 358, 52, 51, 51 }, { 111, 1, 359, 52, 52, 52 }, { 111, 2, 360, 52, 52, 52 }, { 111, 3, 361, 52, 52, 52 }, { 111, 4, 362, 52, 52, 52 }, { 111, 5, 363, 52, 52, 52 }, { 111, 6, 364, 52, 52, 52 }, { 112, 0, 0, 1, 52, 0 }, { 112, 1, 1, 1, 1, 1 }, { 112, 2, 2, 1, 1, 1 }, { 112, 3, 3, 1, 1, 1 }, { 112, 4, 4, 1, 1, 1 }, { 112, 5, 5, 1, 1, 1 }, { 112, 6, 6, 1, 1, 1 }, { 112, 1, 358, 52, 52, 52 }, { 112, 2, 359, 52, 52, 52 }, { 112, 3, 360, 52, 52, 52 }, { 112, 4, 361, 52, 52, 52 }, { 112, 5, 362, 52, 52, 52 }, { 112, 6, 363, 52, 52, 52 }, { 112, 0, 364, 53, 52, 52 }, { 112, 1, 365, 53, 1, 53 }, { 113, 2, 0, 0, 1, 0 }, { 113, 3, 1, 0, 1, 0 }, { 113, 4, 2, 0, 1, 0 }, { 113, 5, 3, 0, 1, 0 }, { 113, 6, 4, 0, 1, 0 }, { 113, 0, 5, 1, 1, 0 }, { 113, 1, 6, 1, 2, 1 }, { 113, 2, 357, 51, 52, 51 }, { 113, 3, 358, 51, 52, 51 }, { 113, 4, 359, 51, 52, 51 }, { 113, 5, 360, 51, 52, 51 }, { 113, 6, 361, 51, 52, 51 }, { 113, 0, 362, 52, 52, 51 }, { 113, 1, 363, 52, 1, 52 }, { 113, 2, 364, 52, 1, 52 }, { 114, 3, 0, 0, 1, 0 }, { 114, 4, 1, 0, 1, 0 }, { 114, 5, 2, 0, 1, 0 }, { 114, 6, 3, 0, 1, 0 }, { 114, 0, 4, 1, 1, 0 }, { 114, 1, 5, 1, 2, 1 }, { 114, 2, 6, 1, 2, 1 }, { 114, 3, 357, 51, 52, 51 }, { 114, 4, 358, 51, 52, 51 }, { 114, 5, 359, 51, 52, 51 }, { 114, 6, 360, 51, 52, 51 }, { 114, 0, 361, 52, 52, 51 }, { 114, 1, 362, 52, 1, 52 }, { 114, 2, 363, 52, 1, 52 }, { 114, 3, 364, 52, 1, 52 }, { 115, 4, 0, 0, 1, 0 }, { 115, 5, 1, 0, 1, 0 }, { 115, 6, 2, 0, 1, 0 }, { 115, 0, 3, 1, 1, 0 }, { 115, 1, 4, 1, 2, 1 }, { 115, 2, 5, 1, 2, 1 }, { 115, 3, 6, 1, 2, 1 }, { 115, 4, 357, 51, 52, 51 }, { 115, 5, 358, 51, 52, 51 }, { 115, 6, 359, 51, 52, 51 }, { 115, 0, 360, 52, 52, 51 }, { 115, 1, 361, 52, 53, 52 }, { 115, 2, 362, 52, 53, 52 }, { 115, 3, 363, 52, 53, 52 }, { 115, 4, 364, 52, 53, 52 }, { 116, 5, 0, 0, 53, 0 }, { 116, 6, 1, 0, 53, 0 }, { 116, 0, 2, 1, 53, 0 }, { 116, 1, 3, 1, 1, 1 }, { 116, 2, 4, 1, 1, 1 }, { 116, 3, 5, 1, 1, 1 }, { 116, 4, 6, 1, 1, 1 }, { 116, 6, 358, 51, 51, 51 }, { 116, 0, 359, 52, 51, 51 }, { 116, 1, 360, 52, 52, 52 }, { 116, 2, 361, 52, 52, 52 }, { 116, 3, 362, 52, 52, 52 }, { 116, 4, 363, 52, 52, 52 }, { 116, 5, 364, 52, 52, 52 }, { 116, 6, 365, 52, 52, 52 }, { 117, 0, 0, 1, 52, 0 }, { 117, 1, 1, 1, 1, 1 }, { 117, 2, 2, 1, 1, 1 }, { 117, 3, 3, 1, 1, 1 }, { 117, 4, 4, 1, 1, 1 }, { 117, 5, 5, 1, 1, 1 }, { 117, 6, 6, 1, 1, 1 }, { 117, 0, 357, 52, 51, 51 }, { 117, 1, 358, 52, 52, 52 }, { 117, 2, 359, 52, 52, 52 }, { 117, 3, 360, 52, 52, 52 }, { 117, 4, 361, 52, 52, 52 }, { 117, 5, 362, 52, 52, 52 }, { 117, 6, 363, 52, 52, 52 }, { 117, 0, 364, 53, 52, 52 }, { 118, 1, 0, 0, 1, 1 }, { 118, 2, 1, 0, 1, 1 }, { 118, 3, 2, 0, 1, 1 }, { 118, 4, 3, 0, 1, 1 }, { 118, 5, 4, 0, 1, 1 }, { 118, 6, 5, 0, 1, 1 }, { 118, 0, 6, 1, 1, 1 }, { 118, 1, 357, 51, 52, 52 }, { 118, 2, 358, 51, 52, 52 }, { 118, 3, 359, 51, 52, 52 }, { 118, 4, 360, 51, 52, 52 }, { 118, 5, 361, 51, 52, 52 }, { 118, 6, 362, 51, 52, 52 }, { 118, 0, 363, 52, 52, 52 }, { 118, 1, 364, 52, 1, 53 }, { 119, 2, 0, 0, 1, 0 }, { 119, 3, 1, 0, 1, 0 }, { 119, 4, 2, 0, 1, 0 }, { 119, 5, 3, 0, 1, 0 }, { 119, 6, 4, 0, 1, 0 }, { 119, 0, 5, 1, 1, 0 }, { 119, 1, 6, 1, 2, 1 }, { 119, 2, 357, 51, 52, 51 }, { 119, 3, 358, 51, 52, 51 }, { 119, 4, 359, 51, 52, 51 }, { 119, 5, 360, 51, 52, 51 }, { 119, 6, 361, 51, 52, 51 }, { 119, 0, 362, 52, 52, 51 }, { 119, 1, 363, 52, 1, 52 }, { 119, 2, 364, 52, 1, 52 }, { 120, 3, 0, 0, 1, 0 }, { 120, 4, 1, 0, 1, 0 }, { 120, 5, 2, 0, 1, 0 }, { 120, 6, 3, 0, 1, 0 }, { 120, 0, 4, 1, 1, 0 }, { 120, 1, 5, 1, 2, 1 }, { 120, 2, 6, 1, 2, 1 }, { 120, 4, 358, 51, 52, 51 }, { 120, 5, 359, 51, 52, 51 }, { 120, 6, 360, 51, 52, 51 }, { 120, 0, 361, 52, 52, 51 }, { 120, 1, 362, 52, 53, 52 }, { 120, 2, 363, 52, 53, 52 }, { 120, 3, 364, 52, 53, 52 }, { 120, 4, 365, 52, 53, 52 }, { 121, 5, 0, 0, 53, 0 }, { 121, 6, 1, 0, 53, 0 }, { 121, 0, 2, 1, 53, 0 }, { 121, 1, 3, 1, 1, 1 }, { 121, 2, 4, 1, 1, 1 }, { 121, 3, 5, 1, 1, 1 }, { 121, 4, 6, 1, 1, 1 }, { 121, 5, 357, 51, 51, 51 }, { 121, 6, 358, 51, 51, 51 }, { 121, 0, 359, 52, 51, 51 }, { 121, 1, 360, 52, 52, 52 }, { 121, 2, 361, 52, 52, 52 }, { 121, 3, 362, 52, 52, 52 }, { 121, 4, 363, 52, 52, 52 }, { 121, 5, 364, 52, 52, 52 }, { 122, 6, 0, 0, 52, 0 }, { 122, 0, 1, 1, 52, 0 }, { 122, 1, 2, 1, 1, 1 }, { 122, 2, 3, 1, 1, 1 }, { 122, 3, 4, 1, 1, 1 }, { 122, 4, 5, 1, 1, 1 }, { 122, 5, 6, 1, 1, 1 }, { 122, 6, 357, 51, 51, 51 }, { 122, 0, 358, 52, 51, 51 }, { 122, 1, 359, 52, 52, 52 }, { 122, 2, 360, 52, 52, 52 }, { 122, 3, 361, 52, 52, 52 }, { 122, 4, 362, 52, 52, 52 }, { 122, 5, 363, 52, 52, 52 }, { 122, 6, 364, 52, 52, 52 }, { 123, 0, 0, 1, 52, 0 }, { 123, 1, 1, 1, 1, 1 }, { 123, 2, 2, 1, 1, 1 }, { 123, 3, 3, 1, 1, 1 }, { 123, 4, 4, 1, 1, 1 }, { 123, 5, 5, 1, 1, 1 }, { 123, 6, 6, 1, 1, 1 }, { 123, 0, 357, 52, 51, 51 }, { 123, 1, 358, 52, 52, 52 }, { 123, 2, 359, 52, 52, 52 }, { 123, 3, 360, 52, 52, 52 }, { 123, 4, 361, 52, 52, 52 }, { 123, 5, 362, 52, 52, 52 }, { 123, 6, 363, 52, 52, 52 }, { 123, 0, 364, 53, 52, 52 }, { 124, 1, 0, 0, 1, 1 }, { 124, 2, 1, 0, 1, 1 }, { 124, 3, 2, 0, 1, 1 }, { 124, 4, 3, 0, 1, 1 }, { 124, 5, 4, 0, 1, 1 }, { 124, 6, 5, 0, 1, 1 }, { 124, 0, 6, 1, 1, 1 }, { 124, 2, 358, 51, 52, 52 }, { 124, 3, 359, 51, 52, 52 }, { 124, 4, 360, 51, 52, 52 }, { 124, 5, 361, 51, 52, 52 }, { 124, 6, 362, 51, 52, 52 }, { 124, 0, 363, 52, 52, 52 }, { 124, 1, 364, 52, 1, 53 }, { 124, 2, 365, 52, 1, 53 }, { 125, 3, 0, 0, 1, 0 }, { 125, 4, 1, 0, 1, 0 }, { 125, 5, 2, 0, 1, 0 }, { 125, 6, 3, 0, 1, 0 }, { 125, 0, 4, 1, 1, 0 }, { 125, 1, 5, 1, 2, 1 }, { 125, 2, 6, 1, 2, 1 }, { 125, 3, 357, 51, 52, 51 }, { 125, 4, 358, 51, 52, 51 }, { 125, 5, 359, 51, 52, 51 }, { 125, 6, 360, 51, 52, 51 }, { 125, 0, 361, 52, 52, 51 }, { 125, 1, 362, 52, 1, 52 }, { 125, 2, 363, 52, 1, 52 }, { 125, 3, 364, 52, 1, 52 }, { 126, 4, 0, 0, 1, 0 }, { 126, 5, 1, 0, 1, 0 }, { 126, 6, 2, 0, 1, 0 }, { 126, 0, 3, 1, 1, 0 }, { 126, 1, 4, 1, 2, 1 }, { 126, 2, 5, 1, 2, 1 }, { 126, 3, 6, 1, 2, 1 }, { 126, 4, 357, 51, 52, 51 }, { 126, 5, 358, 51, 52, 51 }, { 126, 6, 359, 51, 52, 51 }, { 126, 0, 360, 52, 52, 51 }, { 126, 1, 361, 52, 53, 52 }, { 126, 2, 362, 52, 53, 52 }, { 126, 3, 363, 52, 53, 52 }, { 126, 4, 364, 52, 53, 52 }, { 127, 5, 0, 0, 53, 0 }, { 127, 6, 1, 0, 53, 0 }, { 127, 0, 2, 1, 53, 0 }, { 127, 1, 3, 1, 1, 1 }, { 127, 2, 4, 1, 1, 1 }, { 127, 3, 5, 1, 1, 1 }, { 127, 4, 6, 1, 1, 1 }, { 127, 5, 357, 51, 51, 51 }, { 127, 6, 358, 51, 51, 51 }, { 127, 0, 359, 52, 51, 51 }, { 127, 1, 360, 52, 52, 52 }, { 127, 2, 361, 52, 52, 52 }, { 127, 3, 362, 52, 52, 52 }, { 127, 4, 363, 52, 52, 52 }, { 127, 5, 364, 52, 52, 52 }, { 128, 6, 0, 0, 52, 0 }, { 128, 0, 1, 1, 52, 0 }, { 128, 1, 2, 1, 1, 1 }, { 128, 2, 3, 1, 1, 1 }, { 128, 3, 4, 1, 1, 1 }, { 128, 4, 5, 1, 1, 1 }, { 128, 5, 6, 1, 1, 1 }, { 128, 0, 358, 52, 51, 51 }, { 128, 1, 359, 52, 52, 52 }, { 128, 2, 360, 52, 52, 52 }, { 128, 3, 361, 52, 52, 52 }, { 128, 4, 362, 52, 52, 52 }, { 128, 5, 363, 52, 52, 52 }, { 128, 6, 364, 52, 52, 52 }, { 128, 0, 365, 53, 52, 52 }, { 129, 1, 0, 0, 1, 1 }, { 129, 2, 1, 0, 1, 1 }, { 129, 3, 2, 0, 1, 1 }, { 129, 4, 3, 0, 1, 1 }, { 129, 5, 4, 0, 1, 1 }, { 129, 6, 5, 0, 1, 1 }, { 129, 0, 6, 1, 1, 1 }, { 129, 1, 357, 51, 52, 52 }, { 129, 2, 358, 51, 52, 52 }, { 129, 3, 359, 51, 52, 52 }, { 129, 4, 360, 51, 52, 52 }, { 129, 5, 361, 51, 52, 52 }, { 129, 6, 362, 51, 52, 52 }, { 129, 0, 363, 52, 52, 52 }, { 129, 1, 364, 52, 1, 53 }, { 130, 2, 0, 0, 1, 0 }, { 130, 3, 1, 0, 1, 0 }, { 130, 4, 2, 0, 1, 0 }, { 130, 5, 3, 0, 1, 0 }, { 130, 6, 4, 0, 1, 0 }, { 130, 0, 5, 1, 1, 0 }, { 130, 1, 6, 1, 2, 1 }, { 130, 2, 357, 51, 52, 51 }, { 130, 3, 358, 51, 52, 51 }, { 130, 4, 359, 51, 52, 51 }, { 130, 5, 360, 51, 52, 51 }, { 130, 6, 361, 51, 52, 51 }, { 130, 0, 362, 52, 52, 51 }, { 130, 1, 363, 52, 1, 52 }, { 130, 2, 364, 52, 1, 52 }, { 131, 3, 0, 0, 1, 0 }, { 131, 4, 1, 0, 1, 0 }, { 131, 5, 2, 0, 1, 0 }, { 131, 6, 3, 0, 1, 0 }, { 131, 0, 4, 1, 1, 0 }, { 131, 1, 5, 1, 2, 1 }, { 131, 2, 6, 1, 2, 1 }, { 131, 3, 357, 51, 52, 51 }, { 131, 4, 358, 51, 52, 51 }, { 131, 5, 359, 51, 52, 51 }, { 131, 6, 360, 51, 52, 51 }, { 131, 0, 361, 52, 52, 51 }, { 131, 1, 362, 52, 1, 52 }, { 131, 2, 363, 52, 1, 52 }, { 131, 3, 364, 52, 1, 52 }, { 132, 4, 0, 0, 1, 0 }, { 132, 5, 1, 0, 1, 0 }, { 132, 6, 2, 0, 1, 0 }, { 132, 0, 3, 1, 1, 0 }, { 132, 1, 4, 1, 2, 1 }, { 132, 2, 5, 1, 2, 1 }, { 132, 3, 6, 1, 2, 1 }, { 132, 5, 358, 51, 52, 51 }, { 132, 6, 359, 51, 52, 51 }, { 132, 0, 360, 52, 52, 51 }, { 132, 1, 361, 52, 53, 52 }, { 132, 2, 362, 52, 53, 52 }, { 132, 3, 363, 52, 53, 52 }, { 132, 4, 364, 52, 53, 52 }, { 132, 5, 365, 52, 53, 52 }, { 133, 6, 0, 0, 53, 0 }, { 133, 0, 1, 1, 53, 0 }, { 133, 1, 2, 1, 1, 1 }, { 133, 2, 3, 1, 1, 1 }, { 133, 3, 4, 1, 1, 1 }, { 133, 4, 5, 1, 1, 1 }, { 133, 5, 6, 1, 1, 1 }, { 133, 6, 357, 51, 51, 51 }, { 133, 0, 358, 52, 51, 51 }, { 133, 1, 359, 52, 52, 52 }, { 133, 2, 360, 52, 52, 52 }, { 133, 3, 361, 52, 52, 52 }, { 133, 4, 362, 52, 52, 52 }, { 133, 5, 363, 52, 52, 52 }, { 133, 6, 364, 52, 52, 52 }, { 134, 0, 0, 1, 52, 0 }, { 134, 1, 1, 1, 1, 1 }, { 134, 2, 2, 1, 1, 1 }, { 134, 3, 3, 1, 1, 1 }, { 134, 4, 4, 1, 1, 1 }, { 134, 5, 5, 1, 1, 1 }, { 134, 6, 6, 1, 1, 1 }, { 134, 0, 357, 52, 51, 51 }, { 134, 1, 358, 52, 52, 52 }, { 134, 2, 359, 52, 52, 52 }, { 134, 3, 360, 52, 52, 52 }, { 134, 4, 361, 52, 52, 52 }, { 134, 5, 362, 52, 52, 52 }, { 134, 6, 363, 52, 52, 52 }, { 134, 0, 364, 53, 52, 52 }, { 135, 1, 0, 0, 1, 1 }, { 135, 2, 1, 0, 1, 1 }, { 135, 3, 2, 0, 1, 1 }, { 135, 4, 3, 0, 1, 1 }, { 135, 5, 4, 0, 1, 1 }, { 135, 6, 5, 0, 1, 1 }, { 135, 0, 6, 1, 1, 1 }, { 135, 1, 357, 51, 52, 52 }, { 135, 2, 358, 51, 52, 52 }, { 135, 3, 359, 51, 52, 52 }, { 135, 4, 360, 51, 52, 52 }, { 135, 5, 361, 51, 52, 52 }, { 135, 6, 362, 51, 52, 52 }, { 135, 0, 363, 52, 52, 52 }, { 135, 1, 364, 52, 1, 53 }, { 136, 2, 0, 0, 1, 0 }, { 136, 3, 1, 0, 1, 0 }, { 136, 4, 2, 0, 1, 0 }, { 136, 5, 3, 0, 1, 0 }, { 136, 6, 4, 0, 1, 0 }, { 136, 0, 5, 1, 1, 0 }, { 136, 1, 6, 1, 2, 1 }, { 136, 3, 358, 51, 52, 51 }, { 136, 4, 359, 51, 52, 51 }, { 136, 5, 360, 51, 52, 51 }, { 136, 6, 361, 51, 52, 51 }, { 136, 0, 362, 52, 52, 51 }, { 136, 1, 363, 52, 1, 52 }, { 136, 2, 364, 52, 1, 52 }, { 136, 3, 365, 52, 1, 52 }, { 137, 4, 0, 0, 1, 0 }, { 137, 5, 1, 0, 1, 0 }, { 137, 6, 2, 0, 1, 0 }, { 137, 0, 3, 1, 1, 0 }, { 137, 1, 4, 1, 2, 1 }, { 137, 2, 5, 1, 2, 1 }, { 137, 3, 6, 1, 2, 1 }, { 137, 4, 357, 51, 52, 51 }, { 137, 5, 358, 51, 52, 51 }, { 137, 6, 359, 51, 52, 51 }, { 137, 0, 360, 52, 52, 51 }, { 137, 1, 361, 52, 53, 52 }, { 137, 2, 362, 52, 53, 52 }, { 137, 3, 363, 52, 53, 52 }, { 137, 4, 364, 52, 53, 52 }, }; static int test_week_calc( void ) { char buffer[100]; int rc = 1; int i; for ( i = 0; i < 1020; ++i ) { #ifdef __cplusplus struct tm t = {}; #else struct tm t = { 0 }; #endif int U, V, W; t.tm_year = data[i][0]; t.tm_wday = data[i][1]; t.tm_yday = data[i][2]; assert( strftime( buffer, 100, "%U %V %W", &t ) == 8 ); assert( sscanf( buffer, "%d %d %d", &U, &V, &W ) == 3 ); if ( data[i][3] != U || data[i][4] != V || data[i][5] != W ) { printf( "Fehler in { %d, %d, %d, %d, %d, %d } (encountered { %d, %d, %d })\n", data[i][0], data[i][1], data[i][2], data[i][3], data[i][4], data[i][5], U, V, W ); rc = 0; } } return rc; } int main( void ) { char buffer[100]; /* Basic functionality */ struct tm timeptr; MKTIME( timeptr, 59, 30, 12, 1, 9, 72, 0, 274 ); TESTCASE( strftime( buffer, 100, "%a ", &timeptr ) == 4 ); TESTCASE( strcmp( buffer, "Sun " ) == 0 ); TESTCASE( strftime( buffer, 100, "%A ", &timeptr ) == 7 ); TESTCASE( strcmp( buffer, "Sunday " ) == 0 ); TESTCASE( strftime( buffer, 100, "%b ", &timeptr ) == 4 ); TESTCASE( strcmp( buffer, "Oct " ) == 0 ); TESTCASE( strftime( buffer, 100, "%h ", &timeptr ) == 4 ); TESTCASE( strcmp( buffer, "Oct " ) == 0 ); TESTCASE( strftime( buffer, 100, "%B ", &timeptr ) == 8 ); TESTCASE( strcmp( buffer, "October " ) == 0 ); TESTCASE( strftime( buffer, 100, "%c ", &timeptr ) == 25 ); TESTCASE( strcmp( buffer, "Sun Oct 1 12:30:59 1972 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%C ", &timeptr ) == 3 ); TESTCASE( strcmp( buffer, "19 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%d ", &timeptr ) == 3 ); TESTCASE( strcmp( buffer, "01 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%D ", &timeptr ) == 9 ); TESTCASE( strcmp( buffer, "10/01/72 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%e ", &timeptr ) == 3 ); TESTCASE( strcmp( buffer, " 1 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%F ", &timeptr ) == 11 ); TESTCASE( strcmp( buffer, "1972-10-01 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%H ", &timeptr ) == 3 ); TESTCASE( strcmp( buffer, "12 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%I ", &timeptr ) == 3 ); TESTCASE( strcmp( buffer, "12 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%j ", &timeptr ) == 4 ); TESTCASE( strcmp( buffer, "275 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%m ", &timeptr ) == 3 ); TESTCASE( strcmp( buffer, "10 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%M ", &timeptr ) == 3 ); TESTCASE( strcmp( buffer, "30 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%p ", &timeptr ) == 3 ); TESTCASE( strcmp( buffer, "PM " ) == 0 ); TESTCASE( strftime( buffer, 100, "%r ", &timeptr ) == 12 ); TESTCASE( strcmp( buffer, "12:30:59 PM " ) == 0 ); TESTCASE( strftime( buffer, 100, "%R ", &timeptr ) == 6 ); TESTCASE( strcmp( buffer, "12:30 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%S ", &timeptr ) == 3 ); TESTCASE( strcmp( buffer, "59 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%T ", &timeptr ) == 9 ); TESTCASE( strcmp( buffer, "12:30:59 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%u ", &timeptr ) == 2 ); TESTCASE( strcmp( buffer, "7 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%w ", &timeptr ) == 2 ); TESTCASE( strcmp( buffer, "0 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%x ", &timeptr ) == 9 ); TESTCASE( strcmp( buffer, "10/01/72 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%X ", &timeptr ) == 9 ); TESTCASE( strcmp( buffer, "12:30:59 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%y ", &timeptr ) == 3 ); TESTCASE( strcmp( buffer, "72 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%Y ", &timeptr ) == 5 ); TESTCASE( strcmp( buffer, "1972 " ) == 0 ); TESTCASE( strftime( buffer, 100, "%% ", &timeptr ) == 2 ); TESTCASE( strcmp( buffer, "% " ) == 0 ); TESTCASE( strftime( buffer, 100, "%n ", &timeptr ) == 2 ); TESTCASE( strcmp( buffer, "\n " ) == 0 ); TESTCASE( strftime( buffer, 100, "%t ", &timeptr ) == 2 ); TESTCASE( strcmp( buffer, "\t " ) == 0 ); TESTCASE( test_week_calc() ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/time/localtime_s.c0000644000175000001440000000306114676735310024646 0ustar mhxusers/* localtime_s( const time_t *, struct tm * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" struct tm * localtime_s( const time_t * _PDCLIB_restrict timer, struct tm * _PDCLIB_restrict result ) { if ( timer == NULL || result == NULL ) { _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return NULL; } return _PDCLIB_localtime_tzset( timer, result, true ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST time_t t; struct tm time; /* TODO: Constraint handling, System Clock DST */ t = -2147483648l; TESTCASE( localtime_s( &t, &time ) != NULL ); TESTCASE( time.tm_sec == 52 ); TESTCASE( time.tm_min == 45 ); TESTCASE( time.tm_hour == 21 ); TESTCASE( time.tm_mday == 13 ); TESTCASE( time.tm_mon == 11 ); TESTCASE( time.tm_year == 1 ); TESTCASE( time.tm_wday == 5 ); TESTCASE( time.tm_yday == 346 ); t = 2147483647l; TESTCASE( localtime_s( &t, &time ) != NULL ); TESTCASE( time.tm_sec == 7 ); TESTCASE( time.tm_min == 14 ); TESTCASE( time.tm_hour == 4 ); TESTCASE( time.tm_mday == 19 ); TESTCASE( time.tm_mon == 0 ); TESTCASE( time.tm_year == 138 ); TESTCASE( time.tm_wday == 2 ); TESTCASE( time.tm_yday == 18 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/time/ctime_s.c0000644000175000001440000000234314676735310024000 0ustar mhxusers/* ctime( const time_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST errno_t ctime_s( char * s, rsize_t maxsize, const time_t * timer ) { struct tm tm; if ( s == NULL || timer == NULL || maxsize < 26 || maxsize > RSIZE_MAX ) { if ( s != NULL && maxsize > 0 && maxsize <= RSIZE_MAX ) { s[0] = '\0'; } _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } return asctime_s( s, maxsize, localtime_s( timer, &tm ) ); } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST /* TODO: System Clock DST */ time_t t; char s[27]; /* TODO: Constraint handling */ t = -2147483648l; TESTCASE( ctime_s( s, 27, &t ) == 0 ); TESTCASE( strcmp( s, "Fri Dec 13 21:45:52 1901\n" ) == 0 ); t = 2147483647l; TESTCASE( ctime_s( s, 27, &t ) == 0 ); TESTCASE( strcmp( s, "Tue Jan 19 04:14:07 2038\n" ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/time/difftime.c0000644000175000001440000000347714676735310024155 0ustar mhxusers/* difftime( time_t, time_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST double difftime( time_t time1, time_t time0 ) { /* If we want to avoid rounding errors and overflows, we need to be careful with the exact type of time_t being unknown to us. The code below is based on tzcode's difftime.c, which is in the public domain, so clarified as of 1996-06-05 by Arthur David Olson. */ /* If double is large enough, simply covert and substract (assuming that the larger type has more precision). */ if ( sizeof( time_t ) < sizeof( double ) ) { return ( double )time1 - ( double )time0; } /* The difference of two unsigned values cannot overflow if the minuend is greater or equal to the subtrahend. */ if ( ! _PDCLIB_TYPE_SIGNED( time_t ) ) { return ( time1 >= time0 ) ? ( double )( time1 - time0 ) : -( double )( time0 - time1 ); } /* Use uintmax_t if wide enough. */ if ( sizeof( time_t ) <= sizeof( _PDCLIB_uintmax_t ) ) { _PDCLIB_uintmax_t t1 = time1, t0 = time0; return ( time1 >= time0 ) ? t1 - t0 : -( double )( t0 - t1 ); } /* If both times have the same sign, their difference cannot overflow. */ if ( ( time1 < 0 ) == ( time0 < 0 ) ) { return time1 - time0; } /* The times have opposite signs, and uintmax_t is too narrow. This suffers from double rounding; attempt to lessen that by using long double temporaries. */ { long double t1 = time1, t0 = time0; return t1 - t0; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( NO_TESTDRIVER ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/time/mktime.c0000644000175000001440000000171214676735310023642 0ustar mhxusers/* mktime( struct tm * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" #ifndef __STDC_NO_THREADS__ #include extern mtx_t _PDCLIB_time_mtx; #endif time_t mktime( struct tm * timeptr ) { time_t t; _PDCLIB_LOCK( _PDCLIB_time_mtx ); _PDCLIB_tzset_unlocked(); t = _PDCLIB_mktime_tzname( &_PDCLIB_lclmem, timeptr, true ); _PDCLIB_UNLOCK( _PDCLIB_time_mtx ); return t; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { /* System Clock DST */ struct tm time; time_t t; MKTIME( time, 52, 45, 21, 13, 11, 1, 0, 0 ); t = mktime( &time ); TESTCASE( t == -2147483648l ); MKTIME( time, 7, 14, 4, 19, 0, 138, 0, 0 ); t = mktime( &time ); TESTCASE( t == 2147483647l ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/time/localtime.c0000644000175000001440000000227514676735310024332 0ustar mhxusers/* localtime( const time_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" struct tm * localtime( const time_t * timer ) { return _PDCLIB_localtime_tzset( timer, &_PDCLIB_tm, true ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* TODO: System Clock DST */ time_t t; struct tm * time; t = -2147483648l; time = localtime( &t ); TESTCASE( time->tm_sec == 52 ); TESTCASE( time->tm_min == 45 ); TESTCASE( time->tm_hour == 21 ); TESTCASE( time->tm_mday == 13 ); TESTCASE( time->tm_mon == 11 ); TESTCASE( time->tm_year == 1 ); TESTCASE( time->tm_wday == 5 ); TESTCASE( time->tm_yday == 346 ); t = 2147483647l; time = localtime( &t ); TESTCASE( time->tm_sec == 7 ); TESTCASE( time->tm_min == 14 ); TESTCASE( time->tm_hour == 4 ); TESTCASE( time->tm_mday == 19 ); TESTCASE( time->tm_mon == 0 ); TESTCASE( time->tm_year == 138 ); TESTCASE( time->tm_wday == 2 ); TESTCASE( time->tm_yday == 18 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/time/gmtime_s.c0000644000175000001440000000306014676735310024156 0ustar mhxusers/* gmtime_s( const time_t *, struct tm * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" struct tm * gmtime_s( const time_t * _PDCLIB_restrict timer, struct tm * _PDCLIB_restrict result ) { if ( timer == NULL || result == NULL ) { _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return NULL; } _PDCLIB_gmtcheck(); return _PDCLIB_gmtsub( &_PDCLIB_gmtmem, timer, 0, result ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST time_t t; struct tm time; /* TODO: Constraint handling */ t = -2147483648l; TESTCASE( gmtime_s( &t, &time ) != NULL ); TESTCASE( time.tm_sec == 52 ); TESTCASE( time.tm_min == 45 ); TESTCASE( time.tm_hour == 20 ); TESTCASE( time.tm_mday == 13 ); TESTCASE( time.tm_mon == 11 ); TESTCASE( time.tm_year == 1 ); TESTCASE( time.tm_wday == 5 ); TESTCASE( time.tm_yday == 346 ); t = 2147483647l; TESTCASE( gmtime_s( &t, &time ) != NULL ); TESTCASE( time.tm_sec == 7 ); TESTCASE( time.tm_min == 14 ); TESTCASE( time.tm_hour == 3 ); TESTCASE( time.tm_mday == 19 ); TESTCASE( time.tm_mon == 0 ); TESTCASE( time.tm_year == 138 ); TESTCASE( time.tm_wday == 2 ); TESTCASE( time.tm_yday == 18 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/time/asctime.c0000644000175000001440000000223614676735310024003 0ustar mhxusers/* asctime( const struct tm * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include char * asctime( const struct tm * timeptr ) { static char rc[26]; sprintf( rc, "%s %s%3d %.2d:%.2d:%.2d %d\n", _PDCLIB_lc_time_C.day_name_abbr[ timeptr->tm_wday ], _PDCLIB_lc_time_C.month_name_abbr[ timeptr->tm_mon ], timeptr->tm_mday, timeptr->tm_hour, timeptr->tm_min, timeptr->tm_sec, timeptr->tm_year + 1900 ); return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { struct tm time; MKTIME( time, 52, 3, 1, 16, 8, 73, 0, 0 ); TESTCASE( strcmp( asctime( &time ), "Sun Sep 16 01:03:52 1973\n" ) == 0 ); MKTIME( time, 0, 0, 0, 1, 0, 0, 0, 0 ); TESTCASE( strcmp( asctime( &time ), "Sun Jan 1 00:00:00 1900\n" ) == 0 ); MKTIME( time, 60, 59, 23, 31, 11, 8099, 6, 0 ); TESTCASE( strcmp( asctime( &time ), "Sat Dec 31 23:59:60 9999\n" ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/time/ctime.c0000644000175000001440000000167114676735310023461 0ustar mhxusers/* ctime( const time_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST char * ctime( const time_t * timer ) { /* Section 4.12.3.2 of X3.159-1989 requires that The ctime function converts the calendar time pointed to by timer to local time in the form of a string. It is equivalent to asctime(localtime(timer)) */ struct tm * tmp = localtime( timer ); return tmp ? asctime( tmp ) : NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { /* TODO: System Clock DST */ time_t t; t = -2147483648l; TESTCASE( strcmp( ctime( &t ), "Fri Dec 13 21:45:52 1901\n" ) == 0 ); puts( ctime( &t ) ); t = 2147483647l; TESTCASE( strcmp( ctime( &t ), "Tue Jan 19 04:14:07 2038\n" ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/0000755000175000001440000000000014677003524022341 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint32.c0000644000175000001440000000165214676735310025312 0ustar mhxusers/* _PDCLIB_bigint32( _PDCLIB_bigint_t *, uint_least32_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #include _PDCLIB_bigint_t * _PDCLIB_bigint32( _PDCLIB_bigint_t * bigint, uint_least32_t value ) { bigint->size = 1; if ( ( bigint->data[0] = value ) == 0 ) { bigint->size = 0; } return bigint; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t big; _PDCLIB_bigint_t * bigptr; bigptr = _PDCLIB_bigint32( &big, 0 ); TESTCASE( bigptr == &big ); TESTCASE( big.size == 0 ); _PDCLIB_bigint32( &big, UINT32_C( 0x12345678 ) ); TESTCASE( big.size == 1 ); TESTCASE( big.data[0] == UINT32_C( 0x12345678 ) ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_prepread.c0000644000175000001440000000213614676735310025471 0ustar mhxusers/* _PDCLIB_prepread( struct _PDCLIB_file_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" int _PDCLIB_prepread( struct _PDCLIB_file_t * stream ) { if ( ( stream->bufidx > stream->bufend ) || ( stream->status & ( _PDCLIB_FWRITE | _PDCLIB_FAPPEND | _PDCLIB_ERRORFLAG | _PDCLIB_WIDESTREAM | _PDCLIB_EOFFLAG ) ) || !( stream->status & ( _PDCLIB_FREAD | _PDCLIB_FRW ) ) ) { /* Function called on illegal (e.g. output) stream. */ *_PDCLIB_errno_func() = _PDCLIB_EBADF; stream->status |= _PDCLIB_ERRORFLAG; return EOF; } stream->status |= _PDCLIB_FREAD | _PDCLIB_BYTESTREAM; if ( ( stream->bufidx == stream->bufend ) && ( stream->ungetidx == 0 ) ) { return _PDCLIB_fillbuffer( stream ); } else { return 0; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_is_leap.c0000644000175000001440000000150314676735310025300 0ustar mhxusers/* _PDCLIB_is_leap( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" int _PDCLIB_is_leap( int year_offset ) { /* year given as offset from 1900, matching tm.tm_year in */ long long year = year_offset + 1900ll; return ( ( year % 4 ) == 0 && ( ( year % 25 ) != 0 || ( year % 400 ) == 0 ) ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST /* 1901 not leap */ TESTCASE( ! _PDCLIB_is_leap( 1 ) ); /* 1904 leap */ TESTCASE( _PDCLIB_is_leap( 4 ) ); /* 1900 not leap */ TESTCASE( ! _PDCLIB_is_leap( 0 ) ); /* 2000 leap */ TESTCASE( _PDCLIB_is_leap( 100 ) ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_collate.c0000644000175000001440000000240114676735310026762 0ustar mhxusers/* _PDCLIB_load_lc_collate( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include #include #include #include "pdclib/_PDCLIB_internal.h" struct _PDCLIB_lc_collate_t * _PDCLIB_load_lc_collate( const char * path, const char * locale ) { struct _PDCLIB_lc_collate_t * rc = NULL; const char * extension = "_collate.dat"; char * file = (char *)malloc( strlen( path ) + strlen( locale ) + strlen( extension ) + 1 ); if ( file ) { FILE * fh; strcpy( file, path ); strcat( file, locale ); strcat( file, extension ); if ( ( fh = fopen( file, "rb" ) ) != NULL ) { if ( ( rc = (struct _PDCLIB_lc_collate_t *)malloc( sizeof( struct _PDCLIB_lc_collate_t ) ) ) != NULL ) { /* TODO: Collation data */ rc->alloced = 1; } fclose( fh ); } free( file ); } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/errno.c0000644000175000001440000000241114676735310023634 0ustar mhxusers/* _PDCLIB_errno This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #if __STDC_VERSION__ >= 201112L _Thread_local int _PDCLIB_errno = 0; #else static int _PDCLIB_errno = 0; #endif int * _PDCLIB_errno_func() { return &_PDCLIB_errno; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include #if ! defined( REGTEST ) && __STDC_VERSION__ >= 201112L #include static int thread_func( void * arg ) { TESTCASE( errno == 0 ); *_PDCLIB_errno_func() = 1; TESTCASE( errno == 1 ); thrd_exit( 0 ); } #endif int main( void ) { errno = 0; TESTCASE( errno == 0 ); errno = EDOM; TESTCASE( errno == EDOM ); errno = ERANGE; TESTCASE( errno == ERANGE ); #if ! defined( REGTEST ) && __STDC_VERSION__ >= 201112L { thrd_t t; struct timespec spec = { 1, 0 }; int rc; TESTCASE( thrd_create( &t, thread_func, NULL ) == thrd_success ); TESTCASE( thrd_sleep( &spec, NULL ) == 0 ); TESTCASE( errno == ERANGE ); TESTCASE( thrd_join( t, &rc ) == thrd_success ); TESTCASE( rc == 0 ); } #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_scan.c0000644000175000001440000005071514676735310024621 0ustar mhxusers/* _PDCLIB_scan( const char *, struct _PDCLIB_status_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #include #include #include #include #include #ifndef REGTEST /* Using an integer's bits as flags for both the conversion flags and length modifiers. */ #define E_suppressed 1<<0 #define E_char 1<<6 #define E_short 1<<7 #define E_long 1<<8 #define E_llong 1<<9 #define E_intmax 1<<10 #define E_size 1<<11 #define E_ptrdiff 1<<12 #define E_pointer 1<<13 #define E_ldouble 1<<14 #define E_unsigned 1<<16 /* Helper function to get a character from the string or stream, whatever is used for input. When reading from a string, returns EOF on end-of-string so that handling of the return value can be uniform for both streams and strings. */ static int GET( struct _PDCLIB_status_t * status ) { int rc = EOF; if ( status->stream != NULL ) { rc = getc( status->stream ); } else { rc = ( *status->s == '\0' ) ? EOF : ( unsigned char ) * ( ( status->s )++ ); } if ( rc != EOF ) { ++( status->i ); ++( status->current ); } return rc; } /* Helper function to put a read character back into the string or stream, whatever is used for input. */ static void UNGET( int c, struct _PDCLIB_status_t * status ) { if ( status->stream != NULL ) { ungetc( c, status->stream ); /* TODO: Error? */ } else { --( status->s ); } --( status->i ); --( status->current ); } /* Helper function to check if a character is part of a given scanset */ static int IN_SCANSET( const char * scanlist, const char * end_scanlist, int rc ) { /* SOLAR */ int previous = -1; while ( scanlist != end_scanlist ) { if ( ( *scanlist == '-' ) && ( previous != -1 ) ) { /* possible scangroup ("a-z") */ if ( ++scanlist == end_scanlist ) { /* '-' at end of scanlist does not describe a scangroup */ return rc == '-'; } while ( ++previous <= ( unsigned char )*scanlist ) { if ( previous == rc ) { return 1; } } previous = -1; } else { /* not a scangroup, check verbatim */ if ( rc == ( unsigned char )*scanlist ) { return 1; } previous = ( unsigned char )( *scanlist++ ); } } return 0; } const char * _PDCLIB_scan( const char * spec, struct _PDCLIB_status_t * status ) { /* generic input character */ int rc; const char * prev_spec; const char * orig_spec = spec; int value_parsed; if ( *( ++spec ) == '%' ) { /* %% -> match single '%' */ rc = GET( status ); switch ( rc ) { case EOF: /* input error */ if ( status->n == 0 ) { status->n = -1; } return NULL; case '%': return ++spec; default: UNGET( rc, status ); break; } } /* Initializing status structure */ status->flags = 0; status->base = -1; status->current = 0; status->width = 0; status->prec = 0; /* '*' suppresses assigning parsed value to variable */ if ( *spec == '*' ) { status->flags |= E_suppressed; ++spec; } /* If a width is given, strtol() will return its value. If not given, strtol() will return zero. In both cases, endptr will point to the rest of the conversion specifier - just what we need. */ prev_spec = spec; status->width = ( int )strtol( spec, ( char ** )&spec, 10 ); if ( spec == prev_spec ) { status->width = SIZE_MAX; } /* Optional length modifier We step one character ahead in any case, and step back only if we find there has been no length modifier (or step ahead another character if it has been "hh" or "ll"). */ switch ( *( spec++ ) ) { case 'h': if ( *spec == 'h' ) { /* hh -> char */ status->flags |= E_char; ++spec; } else { /* h -> short */ status->flags |= E_short; } break; case 'l': if ( *spec == 'l' ) { /* ll -> long long */ status->flags |= E_llong; ++spec; } else { /* l -> long */ status->flags |= E_long; } break; case 'j': /* j -> intmax_t, which might or might not be long long */ status->flags |= E_intmax; break; case 'z': /* z -> size_t, which might or might not be unsigned int */ status->flags |= E_size; break; case 't': /* t -> ptrdiff_t, which might or might not be long */ status->flags |= E_ptrdiff; break; case 'L': /* L -> long double */ status->flags |= E_ldouble; break; default: --spec; break; } /* Conversion specifier */ /* whether valid input had been parsed */ value_parsed = 0; switch ( *spec ) { case 'd': status->base = 10; break; case 'i': status->base = 0; break; case 'o': status->base = 8; status->flags |= E_unsigned; break; case 'u': status->base = 10; status->flags |= E_unsigned; break; case 'x': status->base = 16; status->flags |= E_unsigned; break; case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': case 'a': case 'A': break; case 'c': { char * c = NULL; if ( !( status->flags & E_suppressed ) ) { c = va_arg( status->arg, char * ); } /* for %c, default width is one */ if ( status->width == SIZE_MAX ) { status->width = 1; } /* reading until width reached or input exhausted */ while ( ( status->current < status->width ) && ( ( rc = GET( status ) ) != EOF ) ) { if ( c != NULL ) { *( c++ ) = rc; } value_parsed = 1; } /* width or input exhausted */ if ( value_parsed ) { if ( c != NULL ) { ++status->n; } return ++spec; } else { /* input error, no character read */ if ( status->n == 0 ) { status->n = -1; } return NULL; } } case 's': { char * c = NULL; if ( !( status->flags & E_suppressed ) ) { c = va_arg( status->arg, char * ); } while ( ( status->current < status->width ) && ( ( rc = GET( status ) ) != EOF ) ) { if ( isspace( rc ) ) { UNGET( rc, status ); if ( value_parsed ) { /* matching sequence terminated by whitespace */ if ( c != NULL ) { *c = '\0'; ++status->n; } return ++spec; } else { /* matching error */ return NULL; } } else { /* match */ if ( c != NULL ) { *( c++ ) = rc; } value_parsed = 1; } } /* width or input exhausted */ if ( value_parsed ) { if ( c != NULL ) { *c = '\0'; ++status->n; } return ++spec; } else { /* input error, no character read */ if ( status->n == 0 ) { status->n = -1; } return NULL; } } case '[': { const char * endspec = spec; int negative_scanlist = 0; char * c = NULL; if ( !( status->flags & E_suppressed ) ) { c = va_arg( status->arg, char * ); } if ( *( ++endspec ) == '^' ) { negative_scanlist = 1; ++endspec; } spec = endspec; do { /* TODO: This can run beyond a malformed format string */ ++endspec; } while ( *endspec != ']' ); /* read according to scanlist, equiv. to %s above */ while ( ( status->current < status->width ) && ( ( rc = GET( status ) ) != EOF ) ) { if ( negative_scanlist ) { if ( IN_SCANSET( spec, endspec, rc ) ) { UNGET( rc, status ); break; } } else { if ( ! IN_SCANSET( spec, endspec, rc ) ) { UNGET( rc, status ); break; } } if ( c != NULL ) { *( c++ ) = rc; } value_parsed = 1; } /* width or input exhausted */ if ( value_parsed ) { if ( c != NULL ) { *c = '\0'; ++status->n; } return ++endspec; } else { if ( status->n == 0 ) { status->n = -1; } return NULL; } } case 'p': status->base = 16; status->flags |= E_pointer; break; case 'n': { if ( !( status->flags & E_suppressed ) ) { int * val = va_arg( status->arg, int * ); *val = status->i; } return ++spec; } default: /* No conversion specifier. Bad conversion. */ return orig_spec; } if ( status->base != -1 ) { /* integer conversion */ uintmax_t value = 0; /* absolute value read */ int prefix_parsed = 0; int sign = 0; while ( ( status->current < status->width ) && ( ( rc = GET( status ) ) != EOF ) ) { if ( isspace( rc ) ) { if ( sign ) { /* matching sequence terminated by whitespace */ UNGET( rc, status ); break; } else { /* leading whitespace not counted against width */ status->current--; } } else { if ( ! sign ) { /* no sign parsed yet */ switch ( rc ) { case '-': sign = -1; break; case '+': sign = 1; break; default: /* not a sign; put back character */ sign = 1; UNGET( rc, status ); break; } } else { if ( ! prefix_parsed ) { /* no prefix (0x... for hex, 0... for octal) parsed yet */ prefix_parsed = 1; if ( rc != '0' ) { /* not a prefix; if base not yet set, set to decimal */ if ( status->base == 0 ) { status->base = 10; } UNGET( rc, status ); } else { /* starts with zero, so it might be a prefix. */ /* check what follows next (might be 0x...) */ if ( ( status->current < status->width ) && ( ( rc = GET( status ) ) != EOF ) ) { if ( tolower( rc ) == 'x' ) { /* 0x... would be prefix for hex base... */ if ( ( status->base == 0 ) || ( status->base == 16 ) ) { status->base = 16; } else { /* ...unless already set to other value */ UNGET( rc, status ); value_parsed = 1; } } else { /* 0... but not 0x.... would be octal prefix */ UNGET( rc, status ); if ( status->base == 0 ) { status->base = 8; } /* in any case we have read a zero */ value_parsed = 1; } } else { /* failed to read beyond the initial zero */ value_parsed = 1; break; } } } else { char * digitptr = (char *)memchr( _PDCLIB_digits, tolower( rc ), status->base ); if ( digitptr == NULL ) { /* end of input item */ UNGET( rc, status ); break; } value *= status->base; value += digitptr - _PDCLIB_digits; value_parsed = 1; } } } } /* width or input exhausted, or non-matching character */ if ( ! value_parsed ) { /* out of input before anything could be parsed - input error */ /* FIXME: if first character does not match, value_parsed is not set - but it is NOT an input error */ if ( ( status->n == 0 ) && ( rc == EOF ) ) { status->n = -1; } return NULL; } /* convert value to target type and assign to parameter */ if ( !( status->flags & E_suppressed ) ) { switch ( status->flags & ( E_char | E_short | E_long | E_llong | E_intmax | E_size | E_ptrdiff | E_pointer | E_unsigned ) ) { case E_char: *( va_arg( status->arg, char * ) ) = ( char )( value * sign ); break; case E_char | E_unsigned: *( va_arg( status->arg, unsigned char * ) ) = ( unsigned char )( value * sign ); break; case E_short: *( va_arg( status->arg, short * ) ) = ( short )( value * sign ); break; case E_short | E_unsigned: *( va_arg( status->arg, unsigned short * ) ) = ( unsigned short )( value * sign ); break; case 0: *( va_arg( status->arg, int * ) ) = ( int )( value * sign ); break; case E_unsigned: *( va_arg( status->arg, unsigned int * ) ) = ( unsigned int )( value * sign ); break; case E_long: *( va_arg( status->arg, long * ) ) = ( long )( value * sign ); break; case E_long | E_unsigned: *( va_arg( status->arg, unsigned long * ) ) = ( unsigned long )( value * sign ); break; case E_llong: *( va_arg( status->arg, long long * ) ) = ( long long )( value * sign ); break; case E_llong | E_unsigned: *( va_arg( status->arg, unsigned long long * ) ) = ( unsigned long long )( value * sign ); break; case E_intmax: *( va_arg( status->arg, intmax_t * ) ) = ( intmax_t )( value * sign ); break; case E_intmax | E_unsigned: *( va_arg( status->arg, uintmax_t * ) ) = ( uintmax_t )( value * sign ); break; case E_size: /* E_size always implies unsigned */ *( va_arg( status->arg, size_t * ) ) = ( size_t )( value * sign ); break; case E_ptrdiff: /* E_ptrdiff always implies signed */ *( va_arg( status->arg, ptrdiff_t * ) ) = ( ptrdiff_t )( value * sign ); break; case E_pointer: /* E_pointer always implies unsigned */ *( uintptr_t * )( va_arg( status->arg, void * ) ) = ( uintptr_t )( value * sign ); break; default: fputs( "UNSUPPORTED SCANF FLAG COMBINATIONi\n", stdout ); return NULL; /* behaviour unspecified */ } ++( status->n ); } return ++spec; } /* TODO: Floats. */ return NULL; } #endif #ifdef TEST #define _PDCLIB_FILEID "_PDCLIB/scan.c" #define _PDCLIB_STRINGIO #include "_PDCLIB_test.h" #ifndef REGTEST static int testscanf( const char * s, const char * format, ... ) { struct _PDCLIB_status_t status; status.n = 0; status.i = 0; status.s = ( char * )s; status.stream = NULL; va_start( status.arg, format ); if ( *( _PDCLIB_scan( format, &status ) ) != '\0' ) { printf( "_PDCLIB_scan() did not return end-of-specifier on '%s'.\n", format ); ++TEST_RESULTS; } va_end( status.arg ); return status.n; } #endif #define TEST_CONVERSION_ONLY int main( void ) { #ifndef REGTEST char source[100]; #include "scanf_testcases.h" #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_filemode.c0000644000175000001440000000642014676735310025453 0ustar mhxusers/* _PDCLIB_filemode( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST /* Helper function that parses the C-style mode string passed to fopen() into the PDCLib flags FREAD, FWRITE, FAPPEND, FRW (read-write) and FBIN (binary mode). */ unsigned int _PDCLIB_filemode( const char * const mode ) { unsigned rc = 0; size_t i; if ( mode == NULL ) { return 0; } switch ( mode[0] ) { case 'r': rc |= _PDCLIB_FREAD; break; case 'w': rc |= _PDCLIB_FWRITE; break; case 'a': rc |= _PDCLIB_FAPPEND | _PDCLIB_FWRITE; break; default: /* Other than read, write, or append - invalid */ return 0; } for ( i = 1; i < 4; ++i ) { switch ( mode[i] ) { case '+': if ( rc & _PDCLIB_FRW ) { /* Duplicates are invalid */ return 0; } rc |= _PDCLIB_FRW; break; case 'b': if ( rc & _PDCLIB_FBIN ) { /* Duplicates are invalid */ return 0; } rc |= _PDCLIB_FBIN; break; case '\0': /* End of mode */ return rc; default: /* Other than read/write or binary - invalid. */ return 0; } } /* Longer than three chars - invalid. */ return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( _PDCLIB_filemode( "r" ) == _PDCLIB_FREAD ); TESTCASE( _PDCLIB_filemode( "w" ) == _PDCLIB_FWRITE ); TESTCASE( _PDCLIB_filemode( "a" ) == ( _PDCLIB_FAPPEND | _PDCLIB_FWRITE ) ); TESTCASE( _PDCLIB_filemode( "r+" ) == ( _PDCLIB_FREAD | _PDCLIB_FRW ) ); TESTCASE( _PDCLIB_filemode( "w+" ) == ( _PDCLIB_FWRITE | _PDCLIB_FRW ) ); TESTCASE( _PDCLIB_filemode( "a+" ) == ( _PDCLIB_FAPPEND | _PDCLIB_FWRITE | _PDCLIB_FRW ) ); TESTCASE( _PDCLIB_filemode( "rb" ) == ( _PDCLIB_FREAD | _PDCLIB_FBIN ) ); TESTCASE( _PDCLIB_filemode( "wb" ) == ( _PDCLIB_FWRITE | _PDCLIB_FBIN ) ); TESTCASE( _PDCLIB_filemode( "ab" ) == ( _PDCLIB_FAPPEND | _PDCLIB_FWRITE | _PDCLIB_FBIN ) ); TESTCASE( _PDCLIB_filemode( "r+b" ) == ( _PDCLIB_FREAD | _PDCLIB_FRW | _PDCLIB_FBIN ) ); TESTCASE( _PDCLIB_filemode( "w+b" ) == ( _PDCLIB_FWRITE | _PDCLIB_FRW | _PDCLIB_FBIN ) ); TESTCASE( _PDCLIB_filemode( "a+b" ) == ( _PDCLIB_FAPPEND | _PDCLIB_FWRITE | _PDCLIB_FRW | _PDCLIB_FBIN ) ); TESTCASE( _PDCLIB_filemode( "rb+" ) == ( _PDCLIB_FREAD | _PDCLIB_FRW | _PDCLIB_FBIN ) ); TESTCASE( _PDCLIB_filemode( "wb+" ) == ( _PDCLIB_FWRITE | _PDCLIB_FRW | _PDCLIB_FBIN ) ); TESTCASE( _PDCLIB_filemode( "ab+" ) == ( _PDCLIB_FAPPEND | _PDCLIB_FWRITE | _PDCLIB_FRW | _PDCLIB_FBIN ) ); TESTCASE( _PDCLIB_filemode( "x" ) == 0 ); TESTCASE( _PDCLIB_filemode( "r++" ) == 0 ); TESTCASE( _PDCLIB_filemode( "wbb" ) == 0 ); TESTCASE( _PDCLIB_filemode( "a+bx" ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_add.c0000644000175000001440000000541214676735310025753 0ustar mhxusers/* _PDCLIB_bigint_add( _PDCLIB_bigint_t *, _PDCLIB_bigint_t const * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #include _PDCLIB_bigint_t * _PDCLIB_bigint_add( _PDCLIB_bigint_t * _PDCLIB_restrict lhs, _PDCLIB_bigint_t const * _PDCLIB_restrict rhs ) { _PDCLIB_bigint_t const * smaller; _PDCLIB_bigint_t const * wider; unsigned carry = 0; unsigned newcarry; int i; if ( lhs->size < rhs->size ) { smaller = lhs; wider = rhs; } else { smaller = rhs; wider = lhs; } /* Add up the bigints digit by digit, ensuring no overflow of 32-bit range */ for ( i = 0; i < smaller->size; ++i ) { uint_least32_t l = ( UINT32_C( 0xFFFFFFFF ) - lhs->data[i] ); uint_least32_t r = ( UINT32_C( 0xFFFFFFFF ) - rhs->data[i] ); if ( ( newcarry = ( l < rhs->data[i] ) || ( carry && ( l == rhs->data[i] ) ) ) ) { lhs->data[i] = UINT32_C( 0xFFFFFFFF ) - ( l + r ) - 1 + carry; } else { lhs->data[i] = lhs->data[i] + rhs->data[i] + carry; } carry = newcarry; } for ( ; i < wider->size; ++i ) { if ( ( newcarry = ( ( UINT32_C( 0xFFFFFFFF ) - wider->data[i] ) < carry ) ) ) { lhs->data[i] = 0; } else { lhs->data[i] = wider->data[i] + carry; } carry = newcarry; } /* Possible new digit */ if ( carry ) { lhs->data[i++] = carry; } lhs->size = i; return lhs; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t lhs, rhs; _PDCLIB_bigint32( &lhs, 0 ); _PDCLIB_bigint64( &rhs, 0 ); _PDCLIB_bigint_add( &lhs, &rhs ); TESTCASE( lhs.size == 0 ); _PDCLIB_bigint32( &lhs, UINT32_C( 0x12345678 ) ); _PDCLIB_bigint_add( &lhs, &rhs ); TESTCASE( lhs.size == 1 ); TESTCASE( lhs.data[0] == UINT32_C( 0x12345678 ) ); _PDCLIB_bigint32( &rhs, UINT32_C( 0x11111111 ) ); _PDCLIB_bigint_add( &lhs, &rhs ); TESTCASE( lhs.size == 1 ); TESTCASE( lhs.data[0] == UINT32_C( 0x23456789 ) ); _PDCLIB_bigint64( &rhs, UINT64_C( 0x00000001DCBA9877 ) ); _PDCLIB_bigint_add( &lhs, &rhs ); TESTCASE( lhs.size == 2 ); TESTCASE( lhs.data[0] == 0 ); TESTCASE( lhs.data[1] == 2 ); _PDCLIB_bigint32( &lhs, UINT32_C( 0xFFFFFFFF ) ); _PDCLIB_bigint32( &rhs, UINT32_C( 0xFFFFFFFF ) ); _PDCLIB_bigint_add( &lhs, &rhs ); TESTCASE( lhs.size == 2 ); TESTCASE( lhs.data[0] == UINT32_C( 0xFFFFFFFE ) ); TESTCASE( lhs.data[1] == 1 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lines.c0000644000175000001440000000277314676735310026007 0ustar mhxusers/* _PDCLIB_load_lines( FILE *, size_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST char * _PDCLIB_load_lines( FILE * fh, size_t lines ) { size_t required = 0; long pos = ftell( fh ); char * rc = NULL; int c; /* Count the number of characters */ while ( lines && ( c = fgetc( fh ) ) != EOF ) { if ( c == '\n' ) { --lines; } ++required; } if ( ! feof( fh ) ) { if ( ( rc = (char *)malloc( required ) ) != NULL ) { size_t i; fseek( fh, pos, SEEK_SET ); fread( rc, 1, required, fh ); for ( i = 0; i < required; ++i ) { if ( rc[ i ] == '\n' ) { rc[ i ] = '\0'; } } } } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST FILE * fh = fopen( "test_lines.txt", "w+" ); char * rc; TESTCASE( fh != NULL ); TESTCASE( fputs( "Foo\n\nBar\n", fh ) != EOF ); rewind( fh ); rc = _PDCLIB_load_lines( fh, 3 ); fclose( fh ); remove( "test_lines.txt" ); TESTCASE( rc != NULL ); TESTCASE( strcmp( rc, "Foo" ) == 0 ); TESTCASE( strcmp( rc + 4, "" ) == 0 ); TESTCASE( strcmp( rc + 5, "Bar" ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint10.c0000644000175000001440000000350214676735310025302 0ustar mhxusers/* _PDCLIB_bigint10( _PDCLIB_bigint_t *, unsigned ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #include _PDCLIB_bigint_t * _PDCLIB_bigint10( _PDCLIB_bigint_t * bigint, unsigned n ) { _PDCLIB_bigint_t local1, local2; _PDCLIB_bigint_t * tmp = &local1; _PDCLIB_bigint_t * base = &local2; _PDCLIB_bigint_t * result = bigint; _PDCLIB_bigint_t * swap; _PDCLIB_bigint32( result, UINT32_C( 1 ) ); _PDCLIB_bigint32( base, UINT32_C( 10 ) ); while ( n > 0 ) { if ( n & 1 ) { _PDCLIB_bigint_mul( tmp, result, base ); swap = result; result = tmp; tmp = swap; } n >>= 1; _PDCLIB_bigint_mul( tmp, base, base ); swap = base; base = tmp; tmp = swap; } if ( result != bigint ) { _PDCLIB_bigint( bigint, result ); } return bigint; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t big; _PDCLIB_bigint10( &big, 0 ); TESTCASE( big.size == 1 ); TESTCASE( big.data[0] == 1 ); _PDCLIB_bigint10( &big, 1 ); TESTCASE( big.size == 1 ); TESTCASE( big.data[0] == 10 ); _PDCLIB_bigint10( &big, 9 ); TESTCASE( big.size == 1 ); TESTCASE( big.data[0] == UINT32_C( 1000000000 ) ); _PDCLIB_bigint10( &big, 17 ); TESTCASE( big.size == 2 ); TESTCASE( big.data[0] == UINT32_C( 0x5d8a0000 ) ); TESTCASE( big.data[1] == UINT32_C( 0x01634578 ) ); _PDCLIB_bigint10( &big, 18 ); TESTCASE( big.size == 2 ); TESTCASE( big.data[0] == UINT32_C( 0xa7640000 ) ); TESTCASE( big.data[1] == UINT32_C( 0x0de0b6b3 ) ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_getstream.c0000644000175000001440000000145014676735310025660 0ustar mhxusers/* _PDCLIB_getstream( FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" extern struct _PDCLIB_file_t * _PDCLIB_filelist; int _PDCLIB_getstream( struct _PDCLIB_file_t * stream ) { struct _PDCLIB_file_t * previous; if ( ! _PDCLIB_isstream( stream, &previous ) ) { *_PDCLIB_errno_func() = _PDCLIB_EBADF; return EOF; } if ( previous != NULL ) { previous->next = stream->next; } else { _PDCLIB_filelist = stream->next; } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* No testdriver */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_strtox_prelim.c0000644000175000001440000000526214676735310026605 0ustar mhxusers/* _PDCLIB_strtox_prelim( const char *, char *, int * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #ifndef REGTEST const char * _PDCLIB_strtox_prelim( const char * p, char * sign, int * base ) { /* skipping leading whitespace */ while ( isspace( *p ) ) { ++p; } /* determining / skipping sign */ if ( *p != '+' && *p != '-' ) { *sign = '+'; } else { *sign = *( p++ ); } /* determining base */ if ( *p == '0' ) { ++p; if ( ( *base == 0 || *base == 16 ) && ( *p == 'x' || *p == 'X' ) ) { *base = 16; ++p; /* catching a border case here: "0x" followed by a non-digit should be parsed as the unprefixed zero. We have to "rewind" the parsing; having the base set to 16 if it was zero previously does not hurt, as the result is zero anyway. */ if ( memchr( _PDCLIB_digits, tolower( *p ), *base ) == NULL ) { p -= 2; } } else if ( *base == 0 ) { *base = 8; /* back up one digit, so that a plain zero is decoded correctly (and endptr is set correctly as well). (2019-01-15, Giovanni Mascellani) */ --p; } else { --p; } } else if ( ! *base ) { *base = 10; } return ( ( *base >= 2 ) && ( *base <= 36 ) ) ? p : NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST int base = 0; char sign = '\0'; char test1[] = " 123"; char test2[] = "\t+0123"; char test3[] = "\v-0x123"; TESTCASE( _PDCLIB_strtox_prelim( test1, &sign, &base ) == &test1[2] ); TESTCASE( sign == '+' ); TESTCASE( base == 10 ); base = 0; sign = '\0'; TESTCASE( _PDCLIB_strtox_prelim( test2, &sign, &base ) == &test2[2] ); TESTCASE( sign == '+' ); TESTCASE( base == 8 ); base = 0; sign = '\0'; TESTCASE( _PDCLIB_strtox_prelim( test3, &sign, &base ) == &test3[4] ); TESTCASE( sign == '-' ); TESTCASE( base == 16 ); base = 10; sign = '\0'; TESTCASE( _PDCLIB_strtox_prelim( test3, &sign, &base ) == &test3[2] ); TESTCASE( sign == '-' ); TESTCASE( base == 10 ); base = 1; TESTCASE( _PDCLIB_strtox_prelim( test3, &sign, &base ) == NULL ); base = 37; TESTCASE( _PDCLIB_strtox_prelim( test3, &sign, &base ) == NULL ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_closeall.c0000644000175000001440000000116014676735310025461 0ustar mhxusers/* _PDCLIB_closeall( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST extern struct _PDCLIB_file_t * _PDCLIB_filelist; void _PDCLIB_closeall( void ) { struct _PDCLIB_file_t * stream = _PDCLIB_filelist; struct _PDCLIB_file_t * next; while ( stream != NULL ) { next = stream->next; fclose( stream ); stream = next; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* No testdriver */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_init_file_t.c0000644000175000001440000000300514676735310026150 0ustar mhxusers/* _PDCLIB_init_file_t( _PDCLIB_file_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include #include #include struct _PDCLIB_file_t * _PDCLIB_init_file_t( struct _PDCLIB_file_t * stream ) { struct _PDCLIB_file_t * rc = stream; if ( rc == NULL ) { if ( ( rc = (struct _PDCLIB_file_t *)malloc( sizeof( struct _PDCLIB_file_t ) ) ) == NULL ) { /* No memory */ return NULL; } } if ( ( rc->buffer = (char *)malloc( BUFSIZ ) ) == NULL ) { /* No memory */ free( rc ); return NULL; } rc->bufsize = BUFSIZ; rc->bufidx = 0; rc->bufend = 0; rc->pos.offset = 0; rc->pos.status = 0; rc->ungetidx = 0; rc->status = _PDCLIB_FREEBUFFER; #ifndef __STDC_NO_THREADS if ( stream == NULL ) { /* If called by freopen() (stream not NULL), mutex is already initialized. */ if ( mtx_init( &rc->mtx, mtx_plain | mtx_recursive ) != thrd_success ) { /* could not initialize stream mutex */ free( rc->buffer ); free( rc ); return NULL; } } #endif /* TODO: Setting mbstate */ return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_print.c0000644000175000001440000004733614676735310025036 0ustar mhxusers/* _PDCLIB_print( const char *, struct _PDCLIB_status_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #include #include #include #ifndef REGTEST /* Using an integer's bits as flags for both the conversion flags and length modifiers. */ #define E_minus (INT32_C(1)<<0) #define E_plus (INT32_C(1)<<1) #define E_alt (INT32_C(1)<<2) #define E_space (INT32_C(1)<<3) #define E_zero (INT32_C(1)<<4) #define E_done (INT32_C(1)<<5) #define E_char (INT32_C(1)<<6) #define E_short (INT32_C(1)<<7) #define E_long (INT32_C(1)<<8) #define E_llong (INT32_C(1)<<9) #define E_intmax (INT32_C(1)<<10) #define E_size (INT32_C(1)<<11) #define E_ptrdiff (INT32_C(1)<<12) #define E_pointer (INT32_C(1)<<13) #define E_double (INT32_C(1)<<14) #define E_ldouble (INT32_C(1)<<15) #define E_lower (INT32_C(1)<<16) #define E_unsigned (INT32_C(1)<<17) /* This macro delivers a given character to either a memory buffer or a stream, depending on the contents of 'status' (struct _PDCLIB_status_t). x - the character to be delivered i - pointer to number of characters already delivered in this call n - pointer to maximum number of characters to be delivered in this call s - the buffer into which the character shall be delivered */ #define PUT( x ) \ do { \ int character = x; \ if ( status->i < status->n ) { \ if ( status->stream != NULL ) \ putc( character, status->stream ); \ else \ status->s[status->i] = character; \ } \ ++(status->i); \ } while ( 0 ) static void intformat( intmax_t value, struct _PDCLIB_status_t * status ) { /* At worst, we need two prefix characters (hex prefix). */ char preface[3] = "\0"; size_t preidx = 0; if ( status->prec < 0 ) { status->prec = 1; } if ( ( status->flags & E_alt ) && ( status->base == 16 || status->base == 8 ) && ( value != 0 ) ) { /* Octal / hexadecimal prefix for "%#" conversions */ preface[ preidx++ ] = '0'; if ( status->base == 16 ) { preface[ preidx++ ] = ( status->flags & E_lower ) ? 'x' : 'X'; } } if ( value < 0 ) { /* Negative sign for negative values - at all times. */ preface[ preidx++ ] = '-'; } else if ( !( status->flags & E_unsigned ) ) { /* plus sign / extra space are only for unsigned conversions */ if ( status->flags & E_plus ) { preface[ preidx++ ] = '+'; } else { if ( status->flags & E_space ) { preface[ preidx++ ] = ' '; } } } { /* At this point, status->current has the number of digits queued up. Determine if we have a precision requirement to pad those. */ size_t prec_pads = ( ( _PDCLIB_size_t )status->prec > status->current ) ? ( ( _PDCLIB_size_t )status->prec - status->current ) : 0; if ( !( status->flags & ( E_minus | E_zero ) ) ) { /* Space padding is only done if no zero padding or left alignment is requested. Calculate the number of characters that WILL be printed, including any prefixes determined above. */ /* The number of characters to be printed, plus prefixes if any. */ /* This line contained probably the most stupid, time-wasting bug I've ever perpetrated. Greetings to Samface, DevL, and all sceners at Breakpoint 2006. */ size_t characters = preidx + ( ( status->current > ( _PDCLIB_size_t )status->prec ) ? status->current : ( _PDCLIB_size_t )status->prec ); if ( status->width > characters ) { size_t i; for ( i = 0; i < status->width - characters; ++i ) { PUT( ' ' ); ++( status->current ); } } } /* Now we did the padding, do the prefixes (if any). */ preidx = 0; while ( preface[ preidx ] != '\0' ) { PUT( preface[ preidx++ ] ); ++( status->current ); } /* Do the precision padding if necessary. */ while ( prec_pads-- > 0 ) { PUT( '0' ); ++( status->current ); } if ( ( !( status->flags & E_minus ) ) && ( status->flags & E_zero ) ) { /* If field is not left aligned, and zero padding is requested, do so. */ while ( status->current < status->width ) { PUT( '0' ); ++( status->current ); } } } } /* This function recursively converts a given integer value to a character stream. The conversion is done under the control of a given status struct and written either to a character string or a stream, depending on that same status struct. The status struct also keeps the function from exceeding snprintf() limits, and enables any necessary padding / prefixing of the output once the number of characters to be printed is known, which happens at the lowermost recursion level. */ #define INT2BASE() \ do \ { \ /* Special case: zero value, zero precision -- no output (but padding) */ \ if ( status->current == 0 && value == 0 && status->prec == 0 ) \ { \ intformat( value, status ); \ } \ else \ { \ /* Registering the character being printed at the end of the function here \ already so it will be taken into account when the deepestmost recursion \ does the prefix / padding stuff. \ */ \ ++(status->current); \ if ( ( value / status->base ) != 0 ) \ { \ /* More digits to be done - recurse deeper */ \ int2base( value / status->base, status ); \ } \ else \ { \ /* We reached the last digit, the deepest point of our recursion, and \ only now know how long the number to be printed actually is. Now we \ have to do the sign, prefix, width, and precision padding stuff \ before printing the numbers while we resurface from the recursion. \ */ \ intformat( value, status ); \ } \ /* Recursion tail - print the current digit. */ \ { \ int digit = value % status->base; \ if ( digit < 0 ) \ { \ digit *= -1; \ } \ if ( status->flags & E_lower ) \ { \ /* Lowercase letters. Same array used for strto...(). */ \ PUT( _PDCLIB_digits[ digit ] ); \ } \ else \ { \ /* Uppercase letters. Array only used here, only 0-F. */ \ PUT( _PDCLIB_Xdigits[ digit ] ); \ } \ } \ } \ } while ( 0 ) static void int2base( intmax_t value, struct _PDCLIB_status_t * status ) { INT2BASE(); } static void floatformat( long double value, struct _PDCLIB_status_t * status ) { /* TODO */ } /* Print a "string" (%c, %s) under control of a given status struct. See INT2BASE(). */ static void stringformat( const char * s, struct _PDCLIB_status_t * status ) { if ( status->flags & E_char ) { status->prec = 1; } else { if ( status->prec < 0 ) { status->prec = strlen( s ); } else { int i; for ( i = 0; i < status->prec; ++i ) { if ( s[i] == 0 ) { status->prec = i; break; } } } } if ( !( status->flags & E_minus ) && ( status->width > ( _PDCLIB_size_t )status->prec ) ) { while ( status->current < ( status->width - status->prec ) ) { PUT( ' ' ); ++( status->current ); } } while ( status->prec > 0 ) { PUT( *( s++ ) ); --( status->prec ); ++( status->current ); } if ( status->flags & E_minus ) { while ( status->width > status->current ) { PUT( ' ' ); ++( status->current ); } } } const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status ) { const char * orig_spec = spec; if ( *( ++spec ) == '%' ) { /* %% -> print single '%' */ PUT( *spec ); return ++spec; } /* Initializing status structure */ status->flags = 0; status->base = 0; status->current = 0; status->width = 0; status->prec = EOF; /* First come 0..n flags */ do { switch ( *spec ) { case '-': /* left-aligned output */ status->flags |= E_minus; ++spec; break; case '+': /* positive numbers prefixed with '+' */ status->flags |= E_plus; ++spec; break; case '#': /* alternative format (leading 0x for hex, 0 for octal) */ status->flags |= E_alt; ++spec; break; case ' ': /* positive numbers prefixed with ' ' */ status->flags |= E_space; ++spec; break; case '0': /* right-aligned padding done with '0' instead of ' ' */ status->flags |= E_zero; ++spec; break; default: /* not a flag, exit flag parsing */ status->flags |= E_done; break; } } while ( !( status->flags & E_done ) ); /* Optional field width */ if ( *spec == '*' ) { /* Retrieve width value from argument stack */ int width = va_arg( status->arg, int ); if ( width < 0 ) { status->flags |= E_minus; status->width = abs( width ); } else { status->width = width; } ++spec; } else { /* If a width is given, strtol() will return its value. If not given, strtol() will return zero. In both cases, endptr will point to the rest of the conversion specifier - just what we need. */ status->width = ( int )strtol( spec, ( char ** )&spec, 10 ); } /* Optional precision */ if ( *spec == '.' ) { ++spec; if ( *spec == '*' ) { /* Retrieve precision value from argument stack. A negative value is as if no precision is given - as precision is initalized to EOF (negative), there is no need for testing for negative here. */ status->prec = va_arg( status->arg, int ); ++spec; } else { char * endptr; status->prec = ( int )strtol( spec, &endptr, 10 ); if ( spec == endptr ) { /* Decimal point but no number - equals zero */ status->prec = 0; } spec = endptr; } /* Having a precision cancels out any zero flag. */ status->flags &= ~E_zero; } /* Optional length modifier We step one character ahead in any case, and step back only if we find there has been no length modifier (or step ahead another character if it has been "hh" or "ll"). */ switch ( *( spec++ ) ) { case 'h': if ( *spec == 'h' ) { /* hh -> char */ status->flags |= E_char; ++spec; } else { /* h -> short */ status->flags |= E_short; } break; case 'l': if ( *spec == 'l' ) { /* ll -> long long */ status->flags |= E_llong; ++spec; } else { /* k -> long */ status->flags |= E_long; } break; case 'j': /* j -> intmax_t, which might or might not be long long */ status->flags |= E_intmax; break; case 'z': /* z -> size_t, which might or might not be unsigned int */ status->flags |= E_size; break; case 't': /* t -> ptrdiff_t, which might or might not be long */ status->flags |= E_ptrdiff; break; case 'L': /* L -> long double */ status->flags |= E_ldouble; break; default: --spec; break; } /* Conversion specifier */ switch ( *spec ) { case 'd': /* FALLTHROUGH */ case 'i': status->base = 10; break; case 'o': status->base = 8; status->flags |= E_unsigned; break; case 'u': status->base = 10; status->flags |= E_unsigned; break; case 'x': status->base = 16; status->flags |= ( E_lower | E_unsigned ); break; case 'X': status->base = 16; status->flags |= E_unsigned; break; case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': case 'a': case 'A': status->flags |= E_double; break; case 'c': /* TODO: wide chars. */ { char c[1]; c[0] = ( char )va_arg( status->arg, int ); status->flags |= E_char; stringformat( c, status ); return ++spec; } case 's': /* TODO: wide chars. */ stringformat( va_arg( status->arg, char * ), status ); return ++spec; case 'p': status->base = 16; status->flags |= ( E_lower | E_unsigned | E_alt | E_pointer ); break; case 'n': { int * val = va_arg( status->arg, int * ); *val = status->i; return ++spec; } default: /* No conversion specifier. Bad conversion. */ return orig_spec; } /* Do the actual output based on our findings */ if ( status->base != 0 ) { /* TODO: Check for invalid flag combinations. */ if ( status->flags & E_double ) { /* Floating Point conversions */ long double value; if ( status->flags & E_ldouble ) { value = va_arg( status->arg, long double ); } else { value = va_arg( status->arg, double ); } floatformat( value, status ); } else { if ( status->flags & E_unsigned ) { /* Integer conversions (unsigned) */ uintmax_t value; switch ( status->flags & ( E_char | E_short | E_long | E_llong | E_size | E_pointer | E_intmax ) ) { case E_char: value = ( uintmax_t )( unsigned char )va_arg( status->arg, int ); break; case E_short: value = ( uintmax_t )( unsigned short )va_arg( status->arg, int ); break; case 0: value = ( uintmax_t )va_arg( status->arg, unsigned int ); break; case E_long: value = ( uintmax_t )va_arg( status->arg, unsigned long ); break; case E_llong: value = ( uintmax_t )va_arg( status->arg, unsigned long long ); break; case E_size: value = ( uintmax_t )va_arg( status->arg, size_t ); break; case E_pointer: value = ( uintmax_t )( uintptr_t )va_arg( status->arg, void * ); break; case E_intmax: value = va_arg( status->arg, uintmax_t ); break; default: puts( "UNSUPPORTED PRINTF FLAG COMBINATION" ); return NULL; } INT2BASE(); } else { /* Integer conversions (signed) */ intmax_t value; switch ( status->flags & ( E_char | E_short | E_long | E_llong | E_intmax ) ) { case E_char: value = ( intmax_t )( char )va_arg( status->arg, int ); break; case E_short: value = ( intmax_t )( short )va_arg( status->arg, int ); break; case 0: value = ( intmax_t )va_arg( status->arg, int ); break; case E_long: value = ( intmax_t )va_arg( status->arg, long ); break; case E_llong: value = ( intmax_t )va_arg( status->arg, long long ); break; case E_ptrdiff: value = ( intmax_t )va_arg( status->arg, ptrdiff_t ); break; case E_intmax: value = va_arg( status->arg, intmax_t ); break; default: puts( "UNSUPPORTED PRINTF FLAG COMBINATION" ); return NULL; } INT2BASE(); } } if ( status->flags & E_minus ) { /* Left-aligned filling */ while ( status->current < status->width ) { PUT( ' ' ); ++( status->current ); } } if ( status->i >= status->n && status->n > 0 ) { status->s[status->n - 1] = '\0'; } } return ++spec; } #endif #ifdef TEST #define _PDCLIB_FILEID "_PDCLIB/print.c" #define _PDCLIB_STRINGIO #include "_PDCLIB_test.h" #ifndef REGTEST static int testprintf( char * buffer, const char * format, ... ) { /* Members: base, flags, n, i, current, s, width, prec, stream, arg */ struct _PDCLIB_status_t status; status.base = 0; status.flags = 0; status.n = 100; status.i = 0; status.current = 0; status.s = buffer; status.width = 0; status.prec = EOF; status.stream = NULL; va_start( status.arg, format ); memset( buffer, '\0', 100 ); if ( *( _PDCLIB_print( format, &status ) ) != '\0' ) { printf( "_PDCLIB_print() did not return end-of-specifier on '%s'.\n", format ); ++TEST_RESULTS; } va_end( status.arg ); return status.i; } #endif #define TEST_CONVERSION_ONLY int main( void ) { #ifndef REGTEST char target[100]; #include "printf_testcases.h" #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_numeric.c0000644000175000001440000000411614676735310027006 0ustar mhxusers/* _PDCLIB_load_lc_numeric( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include #include #include #include "pdclib/_PDCLIB_internal.h" struct _PDCLIB_lc_lconv_numeric_t * _PDCLIB_load_lc_numeric( const char * path, const char * locale ) { struct _PDCLIB_lc_lconv_numeric_t * rc = NULL; const char * extension = "_numeric.dat"; char * file = (char *)malloc( strlen( path ) + strlen( locale ) + strlen( extension ) + 1 ); if ( file ) { FILE * fh; strcpy( file, path ); strcat( file, locale ); strcat( file, extension ); if ( ( fh = fopen( file, "rb" ) ) != NULL ) { if ( ( rc = (struct _PDCLIB_lc_lconv_numeric_t *)malloc( sizeof( struct _PDCLIB_lc_lconv_numeric_t ) ) ) != NULL ) { char * data = _PDCLIB_load_lines( fh, 3 ); if ( data != NULL ) { rc->decimal_point = data; data += strlen( data ) + 1; rc->thousands_sep = data; data += strlen( data ) + 1; rc->grouping = data; } else { free( rc ); rc = NULL; } } fclose( fh ); } free( file ); } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST FILE * fh = fopen( "test_numeric.dat", "wb" ); struct _PDCLIB_lc_lconv_numeric_t * lc; TESTCASE( fh != NULL ); TESTCASE( fputs( ",\n.\n\n", fh ) != EOF ); fclose( fh ); TESTCASE( ( lc = _PDCLIB_load_lc_numeric( "./", "test" ) ) ); remove( "test_numeric.dat" ); TESTCASE( strcmp( lc->decimal_point, "," ) == 0 ); TESTCASE( strcmp( lc->thousands_sep, "." ) == 0 ); TESTCASE( strcmp( lc->grouping, "" ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_div32.c0000644000175000001440000000314714676735310026155 0ustar mhxusers/* _PDCLIB_bigint_div32( _PDCLIB_bigint_t *, _PDCLIB_bigint_t const *, uint_least32_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #include _PDCLIB_bigint_t * _PDCLIB_bigint_div32( _PDCLIB_bigint_t * _PDCLIB_restrict lhs, uint_least32_t rhs ) { unsigned i; uint_least32_t digit; uint_least64_t carry = 0; uint_least64_t base = UINT64_C(1)<<32; for ( i = lhs->size; i > 0; --i ) { digit = lhs->data[ i - 1 ]; lhs->data[ i - 1 ] = (uint_least32_t)( ( carry * base + digit ) / rhs ); carry = ( base + digit ) - lhs->data[ i - 1 ] * rhs; } while ( lhs->size > 0 && lhs->data[ lhs->size - 1 ] == 0 ) { --lhs->size; } return lhs; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t lhs; _PDCLIB_bigint32( &lhs, 1 ); _PDCLIB_bigint_div32( &lhs, 2 ); TESTCASE( lhs.size == 0 ); _PDCLIB_bigint32( &lhs, 2 ); _PDCLIB_bigint_div32( &lhs, 2 ); TESTCASE( lhs.size == 1 ); TESTCASE( lhs.data[0] == 1 ); _PDCLIB_bigint64( &lhs, UINT64_C( 0x0000000100000000 ) ); _PDCLIB_bigint_div32( &lhs, 2 ); TESTCASE( lhs.size == 1 ); TESTCASE( lhs.data[0] == UINT32_C( 0x80000000 ) ); _PDCLIB_bigint64( &lhs, UINT64_C( 0x0000000200000000 ) ); _PDCLIB_bigint_div32( &lhs, 2 ); TESTCASE( lhs.data[0] == 0 ); TESTCASE( lhs.data[1] == 1 ); TESTCASE( lhs.size == 2 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint.c0000644000175000001440000000205314676735310025141 0ustar mhxusers/* _PDCLIB_bigint( _PDCLIB_bigint_t *, _PDCLIB_bigint_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" _PDCLIB_bigint_t * _PDCLIB_bigint( _PDCLIB_bigint_t * _PDCLIB_restrict bigint, _PDCLIB_bigint_t const * _PDCLIB_restrict value ) { for ( bigint->size = 0; bigint->size < value->size; ++bigint->size ) { bigint->data[ bigint->size ] = value->data[ bigint->size ]; } return bigint; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t big; _PDCLIB_bigint_t other; _PDCLIB_bigint32( &other, UINT32_C( 0x12345678 ) ); _PDCLIB_bigint( &big, &other ); TESTCASE( _PDCLIB_bigint_cmp( &big, &other ) == 0 ); _PDCLIB_bigint64( &other, UINT64_C( 0x1234567890abcdef ) ); _PDCLIB_bigint( &big, &other ); TESTCASE( _PDCLIB_bigint_cmp( &big, &other ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_strtok.c0000644000175000001440000001120014676735310025205 0ustar mhxusers/* _PDCLIB_strtok( char *, rsize_t *, const char *, char ** ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include char * _PDCLIB_strtok( char * _PDCLIB_restrict s1, rsize_t * _PDCLIB_restrict s1max, const char * _PDCLIB_restrict s2, char ** _PDCLIB_restrict ptr ) { const char * p = s2; if ( s1max == NULL || s2 == NULL || ptr == NULL || ( s1 == NULL && *ptr == NULL ) || *s1max > RSIZE_MAX ) { _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return NULL; } if ( s1 != NULL ) { /* new string */ *ptr = s1; } else { /* old string continued */ if ( *ptr == NULL ) { /* No old string, no new string, nothing to do */ return NULL; } s1 = *ptr; } /* skip leading s2 characters */ while ( *p && *s1 ) { if ( *s1 == *p ) { /* found separator; skip and start over */ if ( *s1max == 0 ) { _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return NULL; } ++s1; --( *s1max ); p = s2; continue; } ++p; } if ( ! *s1 ) { /* no more to parse */ *ptr = s1; return NULL; } /* skipping non-s2 characters */ *ptr = s1; while ( **ptr ) { p = s2; while ( *p ) { if ( **ptr == *p++ ) { /* found separator; overwrite with '\0', position *ptr, return */ if ( *s1max == 0 ) { _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return NULL; } --( *s1max ); *( ( *ptr )++ ) = '\0'; return s1; } } if ( *s1max == 0 ) { _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return NULL; } --( *s1max ); ++( *ptr ); } /* parsed to end of string */ return s1; } #endif #ifdef TEST #include "_PDCLIB_test.h" #ifndef REGTEST static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #ifndef REGTEST /* The original PDCLib strtok() test */ char s[] = "_a_bc__d_"; rsize_t max = strlen( s ); char * p; TESTCASE( _PDCLIB_strtok( s, &max, "_", &p ) == &s[1] ); TESTCASE( max == 6 ); TESTCASE( s[1] == 'a' ); TESTCASE( s[2] == '\0' ); TESTCASE( _PDCLIB_strtok( NULL, &max, "_", &p ) == &s[3] ); TESTCASE( max == 3 ); TESTCASE( s[3] == 'b' ); TESTCASE( s[4] == 'c' ); TESTCASE( s[5] == '\0' ); TESTCASE( _PDCLIB_strtok( NULL, &max, "_", &p ) == &s[7] ); TESTCASE( max == 0 ); TESTCASE( s[6] == '_' ); TESTCASE( s[7] == 'd' ); TESTCASE( s[8] == '\0' ); TESTCASE( _PDCLIB_strtok( NULL, &max, "_", &p ) == NULL ); TESTCASE( max == 0 ); strcpy( s, "ab_cd" ); max = strlen( s ); TESTCASE( _PDCLIB_strtok( s, &max, "_", &p ) == &s[0] ); TESTCASE( s[0] == 'a' ); TESTCASE( s[1] == 'b' ); TESTCASE( s[2] == '\0' ); TESTCASE( _PDCLIB_strtok( NULL, &max, "_", &p ) == &s[3] ); TESTCASE( s[3] == 'c' ); TESTCASE( s[4] == 'd' ); TESTCASE( s[5] == '\0' ); TESTCASE( _PDCLIB_strtok( NULL, &max, "_", &p ) == NULL ); /* Testing the constraint handling */ strcpy( s, "ab.cd" ); max = 2; TESTCASE( set_constraint_handler_s( test_handler ) == abort_handler_s ); TESTCASE( _PDCLIB_strtok( s, &max, ".", &p ) == NULL ); TESTCASE( HANDLER_CALLS == 1 ); { /* The strtok_s() example code from the standard */ char str1[] = "?a???b,,,#c"; char str2[] = "\t \t"; rsize_t max1 = strlen( str1 ); rsize_t max2 = strlen( str2 ); char * ptr1; char * ptr2; TESTCASE( _PDCLIB_strtok( str1, &max1, "?", &ptr1 ) == &str1[1] ); TESTCASE( _PDCLIB_strtok( NULL, &max1, ",", &ptr1 ) == &str1[3] ); TESTCASE( _PDCLIB_strtok( str2, &max2, " \t", &ptr2 ) == NULL ); TESTCASE( _PDCLIB_strtok( NULL, &max1, "#,", &ptr1 ) == &str1[10] ); TESTCASE( _PDCLIB_strtok( NULL, &max1, "?", &ptr1 ) == NULL ); } #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_shl.c0000644000175000001440000000343314676735310026012 0ustar mhxusers/* _PDCLIB_bigint_shl( _PDCLIB_bigint_t *, unsigned ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #include #include _PDCLIB_bigint_t * _PDCLIB_bigint_shl( _PDCLIB_bigint_t * lhs, unsigned rhs ) { unsigned word_shifts = rhs / 32; unsigned bit_shifts = rhs - ( word_shifts * 32 ); uint_least64_t digit; uint_least32_t carry = 0; int i; if ( lhs->size == 0 ) { return lhs; } if ( word_shifts > 0 ) { memmove( lhs->data + word_shifts, lhs->data, sizeof( uint_least32_t ) * lhs->size ); memset( lhs->data, 0, sizeof( uint_least32_t ) * word_shifts ); lhs->size += word_shifts; } for ( i = 0 + word_shifts; i < lhs->size; ++i ) { digit = ( (uint_least64_t)lhs->data[i] << bit_shifts ) | carry; carry = digit >> 32; lhs->data[i] = digit & UINT32_C( 0xFFFFFFFF ); } if ( carry > 0 ) { lhs->data[ lhs->size++ ] = carry; } return lhs; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t lhs; _PDCLIB_bigint32( &lhs, 12 ); _PDCLIB_bigint_shl( &lhs, 2 ); TESTCASE( lhs.size == 1 ); TESTCASE( lhs.data[0] == 48 ); _PDCLIB_bigint32( &lhs, UINT32_C( 0x80000001 ) ); _PDCLIB_bigint_shl( &lhs, 1 ); TESTCASE( lhs.size == 2 ); TESTCASE( lhs.data[0] == 2 ); TESTCASE( lhs.data[1] == 1 ); _PDCLIB_bigint_shl( &lhs, 65 ); TESTCASE( lhs.size == 4 ); TESTCASE( lhs.data[0] == 0 ); TESTCASE( lhs.data[1] == 0 ); TESTCASE( lhs.data[2] == 4 ); TESTCASE( lhs.data[3] == 2 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/assert.c0000644000175000001440000000253714676735310024021 0ustar mhxusers/* _PDCLIB_assert( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #ifndef REGTEST void _PDCLIB_assert99( const char * const message1, const char * const function, const char * const message2 ) { fputs( message1, stderr ); fputs( function, stderr ); fputs( message2, stderr ); abort(); } void _PDCLIB_assert89( const char * const message ) { fputs( message, stderr ); abort(); } #endif #ifdef TEST #include "_PDCLIB_test.h" #include static int EXPECTED_ABORT = 0; static int UNEXPECTED_ABORT = 1; static void aborthandler( int sig ) { TESTCASE( ! EXPECTED_ABORT ); exit( ( signed int )TEST_RESULTS ); } #define NDEBUG #include static int disabled_test( void ) { int i = 0; assert( i == 0 ); /* NDEBUG set, condition met */ assert( i == 1 ); /* NDEBUG set, condition fails */ return i; } #undef NDEBUG #include int main( void ) { TESTCASE( signal( SIGABRT, &aborthandler ) != SIG_ERR ); TESTCASE( disabled_test() == 0 ); assert( UNEXPECTED_ABORT ); /* NDEBUG not set, condition met */ assert( EXPECTED_ABORT ); /* NDEBUG not set, condition fails - should abort */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/stdarg.c0000644000175000001440000000523314676735310024000 0ustar mhxusers/* stdarg This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #ifdef TEST #include "_PDCLIB_test.h" typedef int ( *intfunc_t )( void ); #define TAG_END 0 #define TAG_INT 1 #define TAG_LONG 2 #define TAG_LLONG 3 #define TAG_DBL 4 #define TAG_LDBL 5 #define TAG_INTPTR 6 #define TAG_LDBLPTR 7 #define TAG_FUNCPTR 8 static int dummy( void ) { return INT_MAX; } static int test( int s, ... ) { va_list ap; va_start( ap, s ); for ( ;; ) { switch ( s ) { case TAG_INT: { TESTCASE( va_arg( ap, int ) == INT_MAX ); s = va_arg( ap, int ); break; } case TAG_LONG: { TESTCASE( va_arg( ap, long ) == LONG_MAX ); s = va_arg( ap, int ); break; } case TAG_LLONG: { TESTCASE( va_arg( ap, long long ) == LLONG_MAX ); s = va_arg( ap, int ); break; } case TAG_DBL: { TESTCASE( va_arg( ap, double ) == DBL_MAX ); s = va_arg( ap, int ); break; } case TAG_LDBL: { TESTCASE( va_arg( ap, long double ) == LDBL_MAX ); s = va_arg( ap, int ); break; } case TAG_INTPTR: { TESTCASE( *( va_arg( ap, int * ) ) == INT_MAX ); s = va_arg( ap, int ); break; } case TAG_LDBLPTR: { TESTCASE( *( va_arg( ap, long double * ) ) == LDBL_MAX ); s = va_arg( ap, int ); break; } case TAG_FUNCPTR: { intfunc_t function; TESTCASE( ( function = va_arg( ap, intfunc_t ) ) == dummy ); TESTCASE( function() == INT_MAX ); s = va_arg( ap, int ); break; } case TAG_END: { va_end( ap ); return 0; } } } } int main( void ) { int x = INT_MAX; long double d = LDBL_MAX; test( TAG_END ); test( TAG_INT, INT_MAX, TAG_END ); test( TAG_LONG, LONG_MAX, TAG_LLONG, LLONG_MAX, TAG_END ); test( TAG_DBL, DBL_MAX, TAG_LDBL, LDBL_MAX, TAG_END ); test( TAG_INTPTR, &x, TAG_LDBLPTR, &d, TAG_FUNCPTR, dummy, TAG_END ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_seed.c0000644000175000001440000000047614676735310024614 0ustar mhxusers/* _PDCLIB_seed This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ unsigned long int _PDCLIB_seed = 1; #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* no tests for raw data */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_time.c0000644000175000001440000001276014676735310026306 0ustar mhxusers/* _PDCLIB_load_lc_time( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include #include #include #include #include "pdclib/_PDCLIB_internal.h" struct _PDCLIB_lc_time_t * _PDCLIB_load_lc_time( const char * path, const char * locale ) { struct _PDCLIB_lc_time_t * rc = NULL; const char * extension = "_time.dat"; char * file = (char *)malloc( strlen( path ) + strlen( locale ) + strlen( extension ) + 1 ); if ( file ) { FILE * fh; strcpy( file, path ); strcat( file, locale ); strcat( file, extension ); if ( ( fh = fopen( file, "rb" ) ) != NULL ) { if ( ( rc = (struct _PDCLIB_lc_time_t *)malloc( sizeof( struct _PDCLIB_lc_time_t ) ) ) != NULL ) { char * data = _PDCLIB_load_lines( fh, 44 ); if ( data != NULL ) { size_t i; for ( i = 0; i < 12; ++i ) { rc->month_name_abbr[ i ] = data; data += strlen( data ) + 1; } for ( i = 0; i < 12; ++i ) { rc->month_name_full[ i ] = data; data += strlen( data ) + 1; } for ( i = 0; i < 7; ++i ) { rc->day_name_abbr[ i ] = data; data += strlen( data ) + 1; } for ( i = 0; i < 7; ++i ) { rc->day_name_full[ i ] = data; data += strlen( data ) + 1; } rc->alloced = 1; } else { free( rc ); rc = NULL; } } fclose( fh ); } free( file ); } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST FILE * fh = fopen( "test_time.dat", "wb" ); struct _PDCLIB_lc_time_t * lc; TESTCASE( fh != NULL ); /* month name abbreviation */ TESTCASE( fprintf( fh, "%s\n", "Jan" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "Feb" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "M\xe4r" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "Apr" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "Mai" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "Jun" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "Jul" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "Aug" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "Sep" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "Okt" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "Nov" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "Dez" ) == 4 ); /* month name full */ TESTCASE( fprintf( fh, "%s\n", "Januar" ) == 7 ); TESTCASE( fprintf( fh, "%s\n", "Februar" ) == 8 ); TESTCASE( fprintf( fh, "%s\n", "M\xe4rz" ) == 5 ); TESTCASE( fprintf( fh, "%s\n", "April" ) == 6 ); TESTCASE( fprintf( fh, "%s\n", "Mai" ) == 4 ); TESTCASE( fprintf( fh, "%s\n", "Juni" ) == 5 ); TESTCASE( fprintf( fh, "%s\n", "Juli" ) == 5 ); TESTCASE( fprintf( fh, "%s\n", "August" ) == 7 ); TESTCASE( fprintf( fh, "%s\n", "September" ) == 10 ); TESTCASE( fprintf( fh, "%s\n", "Oktober" ) == 8 ); TESTCASE( fprintf( fh, "%s\n", "November" ) == 9 ); TESTCASE( fprintf( fh, "%s\n", "Dezember" ) == 9 ); /* day name abbreviation */ TESTCASE( fprintf( fh, "%s\n", "So" ) == 3 ); TESTCASE( fprintf( fh, "%s\n", "Mo" ) == 3 ); TESTCASE( fprintf( fh, "%s\n", "Di" ) == 3 ); TESTCASE( fprintf( fh, "%s\n", "Mi" ) == 3 ); TESTCASE( fprintf( fh, "%s\n", "Do" ) == 3 ); TESTCASE( fprintf( fh, "%s\n", "Fr" ) == 3 ); TESTCASE( fprintf( fh, "%s\n", "Sa" ) == 3 ); /* day name full */ TESTCASE( fprintf( fh, "%s\n", "Sonntag" ) == 8 ); TESTCASE( fprintf( fh, "%s\n", "Montag" ) == 7 ); TESTCASE( fprintf( fh, "%s\n", "Dienstag" ) == 9 ); TESTCASE( fprintf( fh, "%s\n", "Mittwoch" ) == 9 ); TESTCASE( fprintf( fh, "%s\n", "Donnerstag" ) == 11 ); TESTCASE( fprintf( fh, "%s\n", "Freitag" ) == 8 ); TESTCASE( fprintf( fh, "%s\n", "Samstag" ) == 8 ); TESTCASE( fprintf( fh, "%s\n", "%a %d %b %Y %T %Z" ) == 18 ); /* date time format (%c) */ TESTCASE( fprintf( fh, "%s\n", "%I:%M:%S" ) == 9 ); /* 12-hour time format (%r) */ TESTCASE( fprintf( fh, "%s\n", "%d.%m.%Y" ) == 9 ); /* date format (%x) */ TESTCASE( fprintf( fh, "%s\n", "%H:%M:%S" ) == 9 ); /* time format (%X) */ TESTCASE( fprintf( fh, "%s\n", "" ) == 1 ); /* AM */ TESTCASE( fprintf( fh, "%s\n", "" ) == 1 ); /* PM */ fclose( fh ); TESTCASE( ( lc = _PDCLIB_load_lc_time( "./", "test" ) ) ); remove( "test_time.dat" ); TESTCASE( strcmp( lc->month_name_abbr[ 0 ], "Jan" ) == 0 ); TESTCASE( strcmp( lc->month_name_abbr[ 11 ], "Dez" ) == 0 ); TESTCASE( strcmp( lc->month_name_full[ 0 ], "Januar" ) == 0 ); TESTCASE( strcmp( lc->month_name_full[ 11 ], "Dezember" ) == 0 ); TESTCASE( strcmp( lc->day_name_abbr[ 0 ], "So" ) == 0 ); TESTCASE( strcmp( lc->day_name_abbr[ 6 ], "Sa" ) == 0 ); TESTCASE( strcmp( lc->day_name_full[ 0 ], "Sonntag" ) == 0 ); TESTCASE( strcmp( lc->day_name_full[ 6 ], "Samstag" ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint2.c0000644000175000001440000000324514676735310025227 0ustar mhxusers/* _PDCLIB_bigint2( _PDCLIB_bigint_t *, unsigned ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" _PDCLIB_bigint_t * _PDCLIB_bigint2( _PDCLIB_bigint_t * bigint, unsigned n ) { int i; bigint->size = ( n / 32 ) + 1; bigint->data[ bigint->size - 1 ] = 1 << ( n - ( bigint->size - 1 ) * 32 ); for ( i = 0; i < bigint->size - 1; ++i ) { bigint->data[ i ] = 0; } return bigint; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t big; _PDCLIB_bigint_t * bigptr; bigptr = _PDCLIB_bigint2( &big, 0 ); TESTCASE( bigptr == &big ); TESTCASE( big.size == 1 ); TESTCASE( big.data[0] == 1 ); _PDCLIB_bigint2( &big, 3 ); TESTCASE( big.size == 1 ); TESTCASE( big.data[0] == 8 ); _PDCLIB_bigint2( &big, 31 ); TESTCASE( big.size == 1 ); TESTCASE( big.data[0] == UINT32_C( 0x80000000 ) ); _PDCLIB_bigint2( &big, 32 ); TESTCASE( big.size == 2 ); TESTCASE( big.data[0] == 0 ); TESTCASE( big.data[1] == 1 ); _PDCLIB_bigint2( &big, 34 ); TESTCASE( big.size == 2 ); TESTCASE( big.data[0] == 0 ); TESTCASE( big.data[1] == 4 ); _PDCLIB_bigint2( &big, 63 ); TESTCASE( big.size == 2 ); TESTCASE( big.data[0] == 0 ); TESTCASE( big.data[1] == UINT32_C( 0x80000000 ) ); _PDCLIB_bigint2( &big, 64 ); TESTCASE( big.size == 3 ); TESTCASE( big.data[0] == 0 ); TESTCASE( big.data[1] == 0 ); TESTCASE( big.data[2] == 1 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/Readme.txt0000644000175000001440000000061014676735310024300 0ustar mhxusersThis directory holds various "internals" of PDCLib: - definitions of helper functions not specified by the standard (hidden in the _PDCLIB_* namespace); - definitions of data objects, both internal (like _PDCLIB_digits) and specified by the standard (_PDCLIB_errno); - test drivers for functionality that does not have its own implementation file to put the test driver in (stdarg). Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_strtox_main.c0000644000175000001440000000506114676735310026236 0ustar mhxusers/* _PDCLIB_strtox_main( const char **, int, _PDCLIB_uintmax_t, _PDCLIB_uintmax_t, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #include #ifndef REGTEST _PDCLIB_uintmax_t _PDCLIB_strtox_main( const char ** p, unsigned int base, uintmax_t error, uintmax_t limval, int limdigit, char * sign ) { _PDCLIB_uintmax_t rc = 0; int digit = -1; const char * x; while ( ( x = (const char *)memchr( _PDCLIB_digits, tolower( **p ), base ) ) != NULL ) { digit = x - _PDCLIB_digits; if ( ( rc < limval ) || ( ( rc == limval ) && ( digit <= limdigit ) ) ) { rc = rc * base + ( unsigned )digit; ++( *p ); } else { errno = ERANGE; /* TODO: Only if endptr != NULL - but do we really want *another* parameter? */ /* TODO: Earlier version was missing tolower() here but was not caught by tests */ while ( memchr( _PDCLIB_digits, tolower( **p ), base ) != NULL ) { ++( *p ); } /* TODO: This is ugly, but keeps caller from negating the error value */ *sign = '+'; return error; } } if ( digit == -1 ) { *p = NULL; return 0; } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST const char * p; char test[] = "123_"; char fail[] = "xxx"; char sign = '-'; /* basic functionality */ p = test; errno = 0; TESTCASE( _PDCLIB_strtox_main( &p, 10u, ( uintmax_t )999, ( uintmax_t )12, 3, &sign ) == 123 ); TESTCASE( errno == 0 ); TESTCASE( p == &test[3] ); /* proper functioning to smaller base */ p = test; TESTCASE( _PDCLIB_strtox_main( &p, 8u, ( uintmax_t )999, ( uintmax_t )12, 3, &sign ) == 0123 ); TESTCASE( errno == 0 ); TESTCASE( p == &test[3] ); /* overflowing subject sequence must still return proper endptr */ p = test; TESTCASE( _PDCLIB_strtox_main( &p, 4u, ( uintmax_t )999, ( uintmax_t )1, 2, &sign ) == 999 ); TESTCASE( errno == ERANGE ); TESTCASE( p == &test[3] ); TESTCASE( sign == '+' ); /* testing conversion failure */ errno = 0; p = fail; sign = '-'; TESTCASE( _PDCLIB_strtox_main( &p, 10u, ( uintmax_t )999, ( uintmax_t )99, 8, &sign ) == 0 ); TESTCASE( p == NULL ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_cmp.c0000644000175000001440000000253014676735310026000 0ustar mhxusers/* _PDCLIB_bigint_cmp( _PDCLIB_bigint_t const *, _PDCLIB_bigint_t const * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" int _PDCLIB_bigint_cmp( _PDCLIB_bigint_t const * _PDCLIB_restrict lhs, _PDCLIB_bigint_t const * _PDCLIB_restrict rhs ) { int i; if ( lhs->size != rhs->size ) { return lhs->size - rhs->size; } for ( i = lhs->size - 1; i >= 0; --i ) { if ( lhs->data[i] != rhs->data[i] ) { return lhs->data[i] - rhs->data[i]; } } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t lhs, rhs; _PDCLIB_bigint32( &lhs, 0 ); _PDCLIB_bigint64( &rhs, 0 ); TESTCASE( _PDCLIB_bigint_cmp( &lhs, &rhs ) == 0 ); _PDCLIB_bigint32( &lhs, 1 ); TESTCASE( _PDCLIB_bigint_cmp( &lhs, &rhs ) > 0 ); _PDCLIB_bigint32( &rhs, UINT32_C( 0x8000000 ) ); TESTCASE( _PDCLIB_bigint_cmp( &lhs, &rhs ) < 0 ); _PDCLIB_bigint64( &lhs, 1 ); TESTCASE( _PDCLIB_bigint_cmp( &lhs, &rhs ) < 0 ); _PDCLIB_bigint64( &lhs, UINT64_C( 0x0000000180000000 ) ); TESTCASE( _PDCLIB_bigint_cmp( &lhs, &rhs ) > 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_sub.c0000644000175000001440000000664314676735310026023 0ustar mhxusers/* _PDCLIB_bigint_sub( _PDCLIB_bigint_t *, _PDCLIB_bigint_t const * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #include #include _PDCLIB_bigint_t * _PDCLIB_bigint_sub( _PDCLIB_bigint_t * _PDCLIB_restrict lhs, _PDCLIB_bigint_t const * _PDCLIB_restrict rhs ) { int i; unsigned carry = 0; assert( _PDCLIB_bigint_cmp( lhs, rhs ) >= 0 ); for ( i = 0; i < rhs->size; ++i ) { int newcarry; if ( ( newcarry = ( lhs->data[i] < rhs->data[i] ) || ( carry && ( lhs->data[i] == rhs->data[i] ) ) ) ) { lhs->data[i] += ( UINT32_C( 0xFFFFFFFF ) - rhs->data[i] ) + ( 1 - carry ); } else { lhs->data[i] -= ( rhs->data[i] + carry ); } carry = newcarry; } for ( ; carry; ++i ) { if ( lhs->data[i] > 0 ) { --lhs->data[i]; carry = 0; } else { lhs->data[i] = UINT32_C( 0xFFFFFFFF ); } } while ( lhs->size > 0 && lhs->data[ lhs->size - 1 ] == 0 ) { --lhs->size; } return lhs; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t lhs, rhs, res; uint_least32_t NUL = 0; uint_least32_t SML = UINT32_C( 0x7FFFFFFF ); uint_least32_t MID = UINT32_C( 0x80000000 ); uint_least32_t LRG = UINT32_C( 0x80000001 ); uint_least32_t MAX = UINT32_C( 0xFFFFFFFF ); /* Building a large number substraction that covers all kinds of cases. From rightmost digit to left: */ /* carry 0, lhs '9', rhs '5', newcarry 0, result '4' */ lhs.data[0] = MAX; rhs.data[0] = MID; res.data[0] = SML; /* carry 0, lhs '0', rhs '0', newcarry 0, result '0' */ lhs.data[1] = NUL; rhs.data[1] = NUL; res.data[1] = NUL; /* carry 0, lhs '0', rhs '6', newcarry 1, result '4' */ lhs.data[2] = NUL; rhs.data[2] = LRG; res.data[2] = SML; /* carry 1, lhs '0', rhs '0', newcarry 1, result '9' */ lhs.data[3] = NUL; rhs.data[3] = NUL; res.data[3] = MAX; /* carry 1, lhs '0', rhs '9', newcarry 1, result '0' */ lhs.data[4] = NUL; rhs.data[4] = MAX; res.data[4] = NUL; /* carry 1, lhs '0', rhs '5', newcarry 1, result '4' */ lhs.data[5] = NUL; rhs.data[5] = MID; res.data[5] = SML; /* carry 1, lhs '4', rhs '9', newcarry 1, result '4' */ lhs.data[6] = SML; rhs.data[6] = MAX; res.data[6] = SML; /* carry 1, lhs '5', rhs '5', newcarry 1, result '9' */ lhs.data[7] = MID; rhs.data[7] = MID; res.data[7] = MAX; /* carry 1, lhs '6', rhs '5', newcarry 0, result '0' */ lhs.data[8] = LRG; rhs.data[8] = MID; res.data[8] = NUL; /* carry 0, lhs '5', rhs '9', newcarry 1, result '6' */ lhs.data[9] = MID; rhs.data[9] = MAX; res.data[9] = LRG; /* carry 1, lhs '5', rhs '0', newcarry 0, result '4' */ lhs.data[10] = MID; rhs.data[10] = NUL; res.data[10] = SML; /* carry 0, lhs '5', rhs '6', newcarry 1, result '9' */ lhs.data[11] = MID; rhs.data[11] = LRG; res.data[11] = MAX; /* carry 1, lhs '6', rhs ---, newcarry 0, result '5' */ lhs.data[12] = LRG; res.data[12] = MID; lhs.size = 13; rhs.size = 12; res.size = 13; TESTCASE( _PDCLIB_bigint_cmp( _PDCLIB_bigint_sub( &lhs, &rhs ), &res ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_messages.c0000644000175000001440000000420014676735310027145 0ustar mhxusers/* _PDCLIB_load_lc_messages( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include #include #include #include "pdclib/_PDCLIB_internal.h" struct _PDCLIB_lc_messages_t * _PDCLIB_load_lc_messages( const char * path, const char * locale ) { struct _PDCLIB_lc_messages_t * rc = NULL; const char * extension = "_messages.dat"; char * file = (char *)malloc( strlen( path ) + strlen( locale ) + strlen( extension ) + 1 ); if ( file ) { FILE * fh; strcpy( file, path ); strcat( file, locale ); strcat( file, extension ); if ( ( fh = fopen( file, "rb" ) ) != NULL ) { if ( ( rc = (struct _PDCLIB_lc_messages_t *)malloc( sizeof( struct _PDCLIB_lc_messages_t ) ) ) != NULL ) { char * data = _PDCLIB_load_lines( fh, _PDCLIB_ERRNO_MAX ); if ( data != NULL ) { size_t i; for ( i = 0; i < _PDCLIB_ERRNO_MAX; ++i ) { rc->errno_texts[ i ] = data; data += strlen( data ) + 1; } rc->alloced = 1; } else { free( rc ); rc = NULL; } } fclose( fh ); } free( file ); } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST FILE * fh = fopen( "test_numeric.dat", "wb" ); struct _PDCLIB_lc_lconv_numeric_t * lc; TESTCASE( fh != NULL ); TESTCASE( fputs( ",\n.\n\n", fh ) != EOF ); fclose( fh ); TESTCASE( ( lc = _PDCLIB_load_lc_numeric( "./", "test" ) ) ); remove( "test_numeric.dat" ); TESTCASE( strcmp( lc->decimal_point, "," ) == 0 ); TESTCASE( strcmp( lc->thousands_sep, "." ) == 0 ); TESTCASE( strcmp( lc->grouping, "" ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_atomax.c0000644000175000001440000000227114676735310025160 0ustar mhxusers/* _PDCLIB_atomax( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST _PDCLIB_intmax_t _PDCLIB_atomax( const char * s ) { _PDCLIB_intmax_t rc = 0; char sign = '+'; const char * x; /* TODO: In other than "C" locale, additional patterns may be defined */ while ( isspace( *s ) ) { ++s; } if ( *s == '+' ) { ++s; } else if ( *s == '-' ) { sign = *( s++ ); } /* TODO: Earlier version was missing tolower() but was not caught by tests */ while ( ( x = (const char *)memchr( _PDCLIB_digits, tolower( *( s++ ) ), 10 ) ) != NULL ) { rc = rc * 10 + ( x - _PDCLIB_digits ); } return ( sign == '+' ) ? rc : -rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST /* basic functionality */ TESTCASE( _PDCLIB_atomax( "123" ) == 123 ); /* testing skipping of leading whitespace and trailing garbage */ TESTCASE( _PDCLIB_atomax( " \n\v\t\f123xyz" ) == 123 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_monetary.c0000644000175000001440000001261514676735310027205 0ustar mhxusers/* _PDCLIB_load_lc_monetary( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include #include #include #include #include "pdclib/_PDCLIB_internal.h" struct _PDCLIB_lc_lconv_monetary_t * _PDCLIB_load_lc_monetary( const char * path, const char * locale ) { struct _PDCLIB_lc_lconv_monetary_t * rc = NULL; const char * extension = "_monetary.dat"; char * file = (char *)malloc( strlen( path ) + strlen( locale ) + strlen( extension ) + 1 ); if ( file ) { FILE * fh; strcpy( file, path ); strcat( file, locale ); strcat( file, extension ); if ( ( fh = fopen( file, "rb" ) ) != NULL ) { if ( ( rc = (struct _PDCLIB_lc_lconv_monetary_t *)malloc( sizeof( struct _PDCLIB_lc_lconv_monetary_t ) ) ) != NULL ) { char buffer[ 14 ]; char * data = _PDCLIB_load_lines( fh, 7 ); if ( data != NULL ) { if ( fread( buffer, 1, 14, fh ) == 14 ) { rc->mon_decimal_point = data; data += strlen( data ) + 1; rc->mon_thousands_sep = data; data += strlen( data ) + 1; rc->mon_grouping = data; data += strlen( data ) + 1; rc->positive_sign = data; data += strlen( data ) + 1; rc->negative_sign = data; data += strlen( data ) + 1; rc->currency_symbol = data; data += strlen( data ) + 1; rc->int_curr_symbol = data; rc->frac_digits = buffer[ 0 ]; rc->p_cs_precedes = buffer[ 1 ]; rc->n_cs_precedes = buffer[ 2 ]; rc->p_sep_by_space = buffer[ 3 ]; rc->n_sep_by_space = buffer[ 4 ]; rc->p_sign_posn = buffer[ 5 ]; rc->n_sign_posn = buffer[ 6 ]; rc->int_frac_digits = buffer[ 7 ]; rc->int_p_cs_precedes = buffer[ 8 ]; rc->int_n_cs_precedes = buffer[ 9 ]; rc->int_p_sep_by_space = buffer[ 10 ]; rc->int_n_sep_by_space = buffer[ 11 ]; rc->int_p_sign_posn = buffer[ 12 ]; rc->int_n_sign_posn = buffer[ 13 ]; } else { free( data ); free( rc ); rc = NULL; } } else { free( rc ); rc = NULL; } } fclose( fh ); } free( file ); } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST FILE * fh = fopen( "test_monetary.dat", "wb" ); struct _PDCLIB_lc_lconv_monetary_t * lc; TESTCASE( fh != NULL ); fprintf( fh, "%s\n", "," ); /* mon_decimal_point */ fprintf( fh, "%s\n", "." ); /* mon_thousands_sep */ fprintf( fh, "%s\n", "3" ); /* mon_grouping */ fprintf( fh, "%s\n", "" ); /* positive_sign */ fprintf( fh, "%s\n", "-" ); /* negative_sign */ fprintf( fh, "%s\n", "\xa4" ); /* currency_symbol */ fprintf( fh, "%s\n", "EUR" ); /* int_curr_symbol */ fputc( 2, fh ); /* frac_digits */ fputc( 0, fh ); /* p_cs_precedes */ fputc( 0, fh ); /* n_cs_precedes */ fputc( 1, fh ); /* p_sep_by_space */ fputc( 1, fh ); /* n_sep_by_space */ fputc( 1, fh ); /* p_sign_posn */ fputc( 1, fh ); /* n_sign_posn */ fputc( 2, fh ); /* int_frac_digits */ fputc( 0, fh ); /* int_p_cs_precedes */ fputc( 0, fh ); /* int_n_cs_precedes */ fputc( 1, fh ); /* int_p_sep_by_space */ fputc( 1, fh ); /* int_n_sep_by_space */ fputc( 1, fh ); /* int_p_sign_posn */ fputc( 1, fh ); /* int_n_sign_posn */ fprintf( fh, "\n" ); fclose( fh ); TESTCASE( ( lc = _PDCLIB_load_lc_monetary( "./", "test" ) ) ); remove( "test_monetary.dat" ); TESTCASE( strcmp( lc->mon_decimal_point, "," ) == 0 ); TESTCASE( strcmp( lc->mon_thousands_sep, "." ) == 0 ); TESTCASE( strcmp( lc->mon_grouping, "3" ) == 0 ); TESTCASE( strcmp( lc->positive_sign, "" ) == 0 ); TESTCASE( strcmp( lc->negative_sign, "-" ) == 0 ); TESTCASE( strcmp( lc->currency_symbol, "\xa4" ) == 0 ); TESTCASE( strcmp( lc->int_curr_symbol, "EUR" ) == 0 ); TESTCASE( lc->frac_digits == 2 ); TESTCASE( lc->p_cs_precedes == 0 ); TESTCASE( lc->n_cs_precedes == 0 ); TESTCASE( lc->p_sep_by_space == 1 ); TESTCASE( lc->n_sep_by_space == 1 ); TESTCASE( lc->p_sign_posn == 1 ); TESTCASE( lc->n_sign_posn == 1 ); TESTCASE( lc->int_frac_digits == 2 ); TESTCASE( lc->int_p_cs_precedes == 0 ); TESTCASE( lc->int_n_cs_precedes == 0 ); TESTCASE( lc->int_p_sep_by_space == 1 ); TESTCASE( lc->int_n_sep_by_space == 1 ); TESTCASE( lc->int_p_sign_posn == 1 ); TESTCASE( lc->int_n_sign_posn == 1 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_log2.c0000644000175000001440000000406714676735310026073 0ustar mhxusers/* _PDCLIB_bigint_log2( _PDCLIB_bigint_t const * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #include unsigned _PDCLIB_bigint_log2( _PDCLIB_bigint_t const * bigint ) { /* DeBruijn lookup, courtesy of https://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn */ static int const lookup[] = { 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31 }; uint_least32_t value; if ( bigint->size == 0 ) { return 0; } value = bigint->data[ bigint->size - 1 ]; value |= value >> 1; value |= value >> 2; value |= value >> 4; value |= value >> 8; value |= value >> 16; return lookup[ ( value * UINT32_C( 0x07C4ACDDU ) ) >> 27 ] + ( bigint->size - 1 ) * 32; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t big; _PDCLIB_bigint2( &big, 0 ); TESTCASE( _PDCLIB_bigint_log2( &big ) == 0 ); _PDCLIB_bigint2( &big, 1 ); TESTCASE( _PDCLIB_bigint_log2( &big ) == 1 ); _PDCLIB_bigint2( &big, 31 ); TESTCASE( _PDCLIB_bigint_log2( &big ) == 31 ); _PDCLIB_bigint2( &big, 32 ); TESTCASE( _PDCLIB_bigint_log2( &big ) == 32 ); _PDCLIB_bigint2( &big, 63 ); TESTCASE( _PDCLIB_bigint_log2( &big ) == 63 ); _PDCLIB_bigint2( &big, 64 ); TESTCASE( _PDCLIB_bigint_log2( &big ) == 64 ); _PDCLIB_bigint32( &big, UINT32_C( 0xFFFFFFFF ) ); TESTCASE( _PDCLIB_bigint_log2( &big ) == 31 ); _PDCLIB_bigint32( &big, UINT32_C( 0x87654321 ) ); TESTCASE( _PDCLIB_bigint_log2( &big ) == 31 ); _PDCLIB_bigint64( &big, UINT64_C( 0xFFFFFFFFFFFFFFFF ) ); TESTCASE( _PDCLIB_bigint_log2( &big ) == 63 ); _PDCLIB_bigint64( &big, UINT64_C( 0xfedcba9087654321 ) ); TESTCASE( _PDCLIB_bigint_log2( &big ) == 63 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_digits.c0000644000175000001440000000126214676735310025151 0ustar mhxusers/* _PDCLIB_digits This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" const char _PDCLIB_digits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; /* For _PDCLIB/print.c only; obsolete with ctype.h */ const char _PDCLIB_Xdigits[] = "0123456789ABCDEF"; #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST TESTCASE( strcmp( _PDCLIB_digits, "0123456789abcdefghijklmnopqrstuvwxyz" ) == 0 ); TESTCASE( strcmp( _PDCLIB_Xdigits, "0123456789ABCDEF" ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_isstream.c0000644000175000001440000000154314676735310025517 0ustar mhxusers/* _PDCLIB_isstream( FILE *, FILE ** ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" extern struct _PDCLIB_file_t * _PDCLIB_filelist; int _PDCLIB_isstream( struct _PDCLIB_file_t * stream, struct _PDCLIB_file_t ** previous ) { struct _PDCLIB_file_t * current = _PDCLIB_filelist; if ( previous != NULL ) { *previous = NULL; } while ( ( current != NULL ) && ( current != stream ) ) { if ( previous != NULL ) { *previous = current; } current = current->next; } return current != NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* No testdriver */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_ctype.c0000644000175000001440000004773014676735310026501 0ustar mhxusers/* _PDCLIB_load_lc_ctype( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include #include #include #include #include #include #include "pdclib/_PDCLIB_internal.h" struct _PDCLIB_lc_ctype_t * _PDCLIB_load_lc_ctype( const char * path, const char * locale ) { struct _PDCLIB_lc_ctype_t * rc = NULL; const char * extension = "_ctype.dat"; char * file = (char *)malloc( strlen( path ) + strlen( locale ) + strlen( extension ) + 1 ); if ( file ) { FILE * fh; strcpy( file, path ); strcat( file, locale ); strcat( file, extension ); if ( ( fh = fopen( file, "rb" ) ) != NULL ) { if ( ( rc = (struct _PDCLIB_lc_ctype_t *)malloc( sizeof( struct _PDCLIB_lc_ctype_t ) ) ) != NULL ) { struct _PDCLIB_lc_ctype_entry_t * entry; if ( ( entry = (struct _PDCLIB_lc_ctype_entry_t *)malloc( sizeof( struct _PDCLIB_lc_ctype_entry_t ) * _PDCLIB_CHARSET_SIZE + 1 ) ) != NULL ) { rc->entry = entry + 1; rc->entry[ -1 ].flags = rc->entry[ -1 ].upper = rc->entry[ -1 ].lower = 0; if ( fscanf( fh, "%x %x %x %x %x %x", &rc->digits_low, &_PDCLIB_lc_ctype->digits_high, &_PDCLIB_lc_ctype->Xdigits_low, &_PDCLIB_lc_ctype->Xdigits_high, &_PDCLIB_lc_ctype->xdigits_low, &_PDCLIB_lc_ctype->xdigits_high ) == 6 ) { size_t i; for ( i = 0; i < _PDCLIB_CHARSET_SIZE; ++i ) { if ( fscanf( fh, "%" SCNx16 " %hhx %hhx", &rc->entry[ i ].flags, &rc->entry[ i ].upper, &rc->entry[ i ].lower ) != 3 ) { fclose( fh ); free( file ); free( rc->entry - 1 ); free( rc ); return NULL; } } } rc->alloced = 1; } else { free( rc ); } } fclose( fh ); } free( file ); } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST FILE * fh = fopen( "test_ctype.dat", "wb" ); TESTCASE( fh != NULL ); /* For test purposes, let's set up a charset that only has the hex digits */ /* 0x00..0x09 - digits */ /* 0x11..0x16 - Xdigits */ /* 0x21..0x26 - xdigits */ TESTCASE( fprintf( fh, "%x %x\n", 0x00, 0x09 ) ); TESTCASE( fprintf( fh, "%x %x %x %x\n", 0x11, 0x16, 0x21, 0x26 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH, 0x00, 0x00 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH, 0x01, 0x01 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH, 0x02, 0x02 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH, 0x03, 0x03 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH, 0x04, 0x04 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH, 0x05, 0x05 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH, 0x06, 0x06 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH, 0x07, 0x07 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH, 0x08, 0x08 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH, 0x09, 0x09 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x0A, 0x0A ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x0B, 0x0B ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x0C, 0x0C ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x0D, 0x0D ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x0E, 0x0E ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x0F, 0x0F ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x10, 0x10 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x11, 0x11 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x12, 0x12 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x13, 0x13 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x14, 0x14 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x15, 0x15 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x16, 0x16 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x17, 0x17 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x18, 0x18 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x19, 0x19 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x1A, 0x1A ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x1B, 0x1B ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x1C, 0x1C ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x1D, 0x1D ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x1E, 0x1E ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x1F, 0x1F ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x20, 0x20 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x21, 0x21 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x22, 0x22 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x23, 0x23 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x24, 0x24 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x25, 0x25 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x26, 0x26 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x27, 0x27 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x28, 0x28 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x29, 0x29 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x2A, 0x2A ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x2B, 0x2B ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x2C, 0x2C ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x2D, 0x2D ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x2E, 0x2E ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x2F, 0x2F ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x30, 0x30 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x31, 0x31 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x32, 0x32 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x33, 0x33 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x34, 0x34 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x35, 0x35 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x36, 0x36 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x37, 0x37 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x38, 0x38 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x39, 0x39 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x3A, 0x3A ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x3B, 0x3B ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x3C, 0x3C ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x3D, 0x3D ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x3E, 0x3E ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x3F, 0x3F ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x40, 0x40 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x41, 0x41 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x42, 0x42 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x43, 0x43 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x44, 0x44 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x45, 0x45 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x46, 0x46 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x47, 0x47 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x48, 0x48 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x49, 0x49 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x4A, 0x4A ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x4B, 0x4B ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x4C, 0x4C ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x4D, 0x4D ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x4E, 0x4E ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x4F, 0x4F ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x50, 0x50 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x51, 0x51 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x52, 0x52 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x53, 0x53 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x54, 0x54 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x55, 0x55 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x56, 0x56 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x57, 0x57 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x58, 0x58 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x59, 0x59 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x5A, 0x5A ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x5B, 0x5B ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x5C, 0x5C ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x5D, 0x5D ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x5E, 0x5E ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x5F, 0x5F ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x60, 0x60 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x61, 0x61 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x62, 0x62 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x63, 0x63 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x64, 0x64 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x65, 0x65 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x66, 0x66 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x67, 0x67 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x68, 0x68 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x69, 0x69 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x6A, 0x6A ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x6B, 0x6B ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x6C, 0x6C ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x6D, 0x6D ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x6E, 0x6E ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x6F, 0x6F ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x70, 0x70 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x71, 0x71 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x72, 0x72 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x73, 0x73 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x74, 0x74 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x75, 0x75 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x76, 0x76 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x77, 0x77 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x78, 0x78 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x79, 0x79 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x7A, 0x7A ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x7B, 0x7B ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x7C, 0x7C ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x7D, 0x7D ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x7E, 0x7E ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x7F, 0x7F ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x80, 0x80 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x81, 0x81 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x82, 0x82 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x83, 0x83 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x84, 0x84 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x85, 0x85 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x86, 0x86 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x87, 0x87 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x88, 0x88 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x89, 0x89 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x8A, 0x8A ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x8B, 0x8B ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x8C, 0x8C ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x8D, 0x8D ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x8E, 0x8E ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x8F, 0x8F ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x90, 0x90 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x91, 0x91 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x92, 0x92 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x93, 0x93 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x94, 0x94 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x95, 0x95 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x96, 0x96 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x97, 0x97 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x98, 0x98 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x99, 0x99 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x9A, 0x9A ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x9B, 0x9B ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x9C, 0x9C ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x9D, 0x9D ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x9E, 0x9E ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0x9F, 0x9F ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xA0, 0xA0 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xA1, 0xA1 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xA2, 0xA2 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xA3, 0xA3 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xA4, 0xA4 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xA5, 0xA5 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xA6, 0xA6 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xA7, 0xA7 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xA8, 0xA8 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xA9, 0xA9 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xAA, 0xAA ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xAB, 0xAB ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xAC, 0xAC ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xAD, 0xAD ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xAE, 0xAE ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xAF, 0xAF ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xB0, 0xB0 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xB1, 0xB1 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xB2, 0xB2 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xB3, 0xB3 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xB4, 0xB4 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xB5, 0xB5 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xB6, 0xB6 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xB7, 0xB7 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xB8, 0xB8 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xB9, 0xB9 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xBA, 0xBA ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xBB, 0xBB ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xBC, 0xBC ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xBD, 0xBD ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xBE, 0xBE ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xBF, 0xBF ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xC0, 0xC0 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xC1, 0xC1 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xC2, 0xC2 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xC3, 0xC3 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xC4, 0xC4 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xC5, 0xC5 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xC6, 0xC6 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xC7, 0xC7 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xC8, 0xC8 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xC9, 0xC9 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xCA, 0xCA ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xCB, 0xCB ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xCC, 0xCC ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xCD, 0xCD ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xCE, 0xCE ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xCF, 0xCF ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xD0, 0xD0 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xD1, 0xD1 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xD2, 0xD2 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xD3, 0xD3 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xD4, 0xD4 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xD5, 0xD5 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xD6, 0xD6 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xD7, 0xD7 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xD8, 0xD8 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xD9, 0xD9 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xDA, 0xDA ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xDB, 0xDB ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xDC, 0xDC ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xDD, 0xDD ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xDE, 0xDE ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xDF, 0xDF ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xE0, 0xE0 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xE1, 0xE1 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xE2, 0xE2 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xE3, 0xE3 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xE4, 0xE4 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xE5, 0xE5 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xE6, 0xE6 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xE7, 0xE7 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xE8, 0xE8 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xE9, 0xE9 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xEA, 0xEA ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xEB, 0xEB ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xEC, 0xEC ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xED, 0xED ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xEE, 0xEE ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xEF, 0xEF ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xF0, 0xF0 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xF1, 0xF1 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xF2, 0xF2 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xF3, 0xF3 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xF4, 0xF4 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xF5, 0xF5 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xF6, 0xF6 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xF7, 0xF7 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xF8, 0xF8 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xF9, 0xF9 ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xFA, 0xFA ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xFB, 0xFB ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xFC, 0xFC ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xFD, 0xFD ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xFE, 0xFE ) ); TESTCASE( fprintf( fh, "%x %x %x\n", 0x00, 0xFF, 0xFF ) ); fclose( fh ); TESTCASE( _PDCLIB_load_lc_ctype( "./", "test" ) != NULL ); remove( "test_ctype.dat" ); /* TESTCASE( isdigit( 0x00 ) && ! isxdigit( 0x00 ) && ! isalpha( 0x00 ) ); TESTCASE( ! isdigit( 0x11 ) && isxdigit( 0x11 ) && isalpha( 0x11 ) && isupper( 0x11 ) && ! islower( 0x11 ) ); TESTCASE( ! isdigit( 0x21 ) && isxdigit( 0x21 ) && isalpha( 0x21 ) && ! isupper( 0x11 ) && islower( 0x11 ) ); */ #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_tostring.c0000644000175000001440000000261314676735310027074 0ustar mhxusers/* _PDCLIB_bigint_tostring( _PDCLIB_bigint_t const *, char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #include #include #include char * _PDCLIB_bigint_tostring( _PDCLIB_bigint_t const * _PDCLIB_restrict value, char * _PDCLIB_restrict buffer ) { char * rc = buffer; strcpy( buffer, "0x" ); buffer += 2; if ( value->size > 0 ) { int i; for ( i = value->size - 1; i >= 0; --i ) { sprintf( buffer, "%08" PRIxLEAST32, value->data[i] ); buffer += 8; } } else { strcpy( buffer, "00000000" ); } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t value; char buffer[ _PDCLIB_BIGINT_CHARS ]; _PDCLIB_bigint32( &value, 0 ); TESTCASE( strcmp( _PDCLIB_bigint_tostring( &value, buffer ), "0x00000000" ) == 0 ); _PDCLIB_bigint32( &value, UINT32_C( 0x12345678 ) ); TESTCASE( strcmp( _PDCLIB_bigint_tostring( &value, buffer ), "0x12345678" ) == 0 ); _PDCLIB_bigint64( &value, UINT64_C( 0x90abcdef12345678 ) ); TESTCASE( strcmp( _PDCLIB_bigint_tostring( &value, buffer ), "0x90abcdef12345678" ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_mul.c0000644000175000001440000000757414676735310026033 0ustar mhxusers/* _PDCLIB_bigint_mul( _PDCLIB_bigint_t *, _PDCLIB_bigint_t const * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #include _PDCLIB_bigint_t * _PDCLIB_bigint_mul( _PDCLIB_bigint_t * _PDCLIB_restrict result, _PDCLIB_bigint_t const * _PDCLIB_restrict lhs, _PDCLIB_bigint_t const * _PDCLIB_restrict rhs ) { _PDCLIB_bigint_t const * smaller; _PDCLIB_bigint_t const * wider; int s, w; /* Largest possible result size */ result->size = lhs->size + rhs->size; /* Zeroing result struct (where it matters) */ for ( w = 0; w < result->size; ++w ) { result->data[w] = 0; } /* Select smaller / wider number so we spend more time in the *inner* loop. */ if ( lhs->size < rhs->size ) { smaller = lhs; wider = rhs; } else { wider = lhs; smaller = rhs; } for ( s = 0; s < smaller->size; ++s ) { uint_least64_t digit; /* Hold intermediary (wide) result. */ uint_least32_t carry = 0; /* Hold overflow. */ for ( w = 0; w < wider->size; ++w ) { /* Add product and carry into intermediate result */ digit = result->data[ w + s ] + ( (uint_least64_t)smaller->data[ s ] * (uint_least64_t)wider->data[ w ] ) + carry; /* Get 32bit carry */ carry = digit >> 32; /* Write lower 32bit back into result */ result->data[ w + s ] = ( digit & UINT32_C( 0xFFFFFFFF ) ); } result->data[ w + s ] += carry; } /* Shrink result size back down if appropriate. */ while ( ( result->size > 0 ) && ( result->data[ result->size - 1 ] == 0 ) ) { --result->size; } return result; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t lhs, rhs, result; _PDCLIB_bigint32( &lhs, 0 ); _PDCLIB_bigint32( &rhs, 0 ); _PDCLIB_bigint_mul( &result, &lhs, &rhs ); TESTCASE( result.size == 0 ); _PDCLIB_bigint32( &rhs, 1 ); _PDCLIB_bigint_mul( &result, &lhs, &rhs ); TESTCASE( result.size == 0 ); _PDCLIB_bigint32( &lhs, 2 ); _PDCLIB_bigint_mul( &result, &lhs, &rhs ); TESTCASE( result.size == 1 ); TESTCASE( result.data[0] == 2 ); _PDCLIB_bigint64( &rhs, UINT64_C( 0x100000000 ) ); _PDCLIB_bigint_mul( &result, &lhs, &rhs ); TESTCASE( result.size == 2 ); TESTCASE( result.data[0] == 0 ); TESTCASE( result.data[1] == 2 ); _PDCLIB_bigint32( &rhs, UINT32_C( 0x80000000 ) ); _PDCLIB_bigint_mul( &result, &lhs, &rhs ); TESTCASE( result.size == 2 ); TESTCASE( result.data[0] == 0 ); TESTCASE( result.data[1] == 1 ); _PDCLIB_bigint( &rhs, &result ); _PDCLIB_bigint( &lhs, &result ); lhs.data[0] = 1; _PDCLIB_bigint_mul( &result, &lhs, &rhs ); TESTCASE( result.size == 3 ); TESTCASE( result.data[0] == 0 ); TESTCASE( result.data[1] == 1 ); TESTCASE( result.data[2] == 1 ); _PDCLIB_bigint( &lhs, &result ); lhs.data[0] = 1; _PDCLIB_bigint32( &rhs, UINT32_C( 0xFFFFFFFF ) ); _PDCLIB_bigint_mul( &result, &lhs, &rhs ); TESTCASE( result.size == 3 ); TESTCASE( result.data[0] == UINT32_C( 0xFFFFFFFF ) ); TESTCASE( result.data[1] == UINT32_C( 0xFFFFFFFF ) ); TESTCASE( result.data[2] == UINT32_C( 0xFFFFFFFF ) ); _PDCLIB_bigint( &rhs, &result ); _PDCLIB_bigint( &lhs, &result ); _PDCLIB_bigint_mul( &result, &lhs, &rhs ); TESTCASE( result.size == 6 ); TESTCASE( result.data[0] == 1 ); TESTCASE( result.data[1] == 0 ); TESTCASE( result.data[2] == 0 ); TESTCASE( result.data[3] == UINT32_C( 0xFFFFFFFE ) ); TESTCASE( result.data[4] == UINT32_C( 0xFFFFFFFF ) ); TESTCASE( result.data[5] == UINT32_C( 0xFFFFFFFF ) ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint64.c0000644000175000001440000000241114676735310025311 0ustar mhxusers/* _PDCLIB_bigint64( _PDCLIB_bigint_t *, uint_least64_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #include _PDCLIB_bigint_t * _PDCLIB_bigint64( _PDCLIB_bigint_t * bigint, uint_least64_t value ) { if ( value == UINT64_C( 0 ) ) { bigint->size = 0; return bigint; } bigint->data[0] = (uint_least32_t)( value & UINT32_C( 0xFFFFFFFF ) ); if ( ( bigint->data[1] = (uint_least32_t)( value >> 32 ) ) > 0 ) { bigint->size = 2; } else { bigint->size = 1; } return bigint; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t big; _PDCLIB_bigint64( &big, 0 ); TESTCASE( big.size == 0 ); _PDCLIB_bigint64( &big, UINT64_C( 0x12345678 ) ); TESTCASE( big.size == 1 ); TESTCASE( big.data[0] == UINT32_C( 0x12345678 ) ); _PDCLIB_bigint64( &big, UINT64_C( 0x1234567890abcdef ) ); TESTCASE( big.size == 2 ); TESTCASE( big.data[0] == UINT32_C( 0x90abcdef ) ); TESTCASE( big.data[1] == UINT32_C( 0x12345678 ) ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_prepwrite.c0000644000175000001440000000167214676735310025714 0ustar mhxusers/* _PDCLIB_prepwrite( struct _PDCLIB_file_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int _PDCLIB_prepwrite( struct _PDCLIB_file_t * stream ) { if ( ( stream->bufidx < stream->bufend ) || ( stream->ungetidx > 0 ) || ( stream->status & ( _PDCLIB_FREAD | _PDCLIB_ERRORFLAG | _PDCLIB_WIDESTREAM | _PDCLIB_EOFFLAG ) ) || !( stream->status & ( _PDCLIB_FWRITE | _PDCLIB_FAPPEND | _PDCLIB_FRW ) ) ) { /* Function called on illegal (e.g. input) stream. */ *_PDCLIB_errno_func() = _PDCLIB_EBADF; stream->status |= _PDCLIB_ERRORFLAG; return EOF; } stream->status |= _PDCLIB_FWRITE | _PDCLIB_BYTESTREAM; return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_mul32.c0000644000175000001440000000341514676735310026166 0ustar mhxusers/* _PDCLIB_bigint_mul32( _PDCLIB_bigint_t *, uint_least32_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_internal.h" #include _PDCLIB_bigint_t * _PDCLIB_bigint_mul32( _PDCLIB_bigint_t * _PDCLIB_restrict lhs, uint_least32_t rhs ) { uint_least64_t digit; /* Hold intermediary (wide) result. */ uint_least32_t carry = 0; /* Hold overflow. */ int i; for ( i = 0; i < lhs->size; ++i ) { /* Add product and carry into intermediate result */ digit = (uint_least64_t)lhs->data[ i ] * (uint_least64_t)rhs + carry; /* Get 32bit carry */ carry = digit >> 32; /* Write lower 32bit back into bigint */ lhs->data[ i ] = ( digit & UINT32_C( 0xFFFFFFFF ) ); } if ( carry > 0 ) { lhs->data[ lhs->size++ ] = carry; } return lhs; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST _PDCLIB_bigint_t lhs; _PDCLIB_bigint32( &lhs, 0 ); _PDCLIB_bigint_mul32( &lhs, 0 ); TESTCASE( lhs.size == 0 ); _PDCLIB_bigint_mul32( &lhs, 1 ); TESTCASE( lhs.size == 0 ); _PDCLIB_bigint32( &lhs, 2 ); _PDCLIB_bigint_mul32( &lhs, 1 ); TESTCASE( lhs.size == 1 ); TESTCASE( lhs.data[0] == 2 ); _PDCLIB_bigint64( &lhs, UINT64_C( 0x100000000 ) ); _PDCLIB_bigint_mul32( &lhs, 2 ); TESTCASE( lhs.size == 2 ); TESTCASE( lhs.data[0] == 0 ); TESTCASE( lhs.data[1] == 2 ); _PDCLIB_bigint_mul32( &lhs, UINT32_C( 0x80000000 ) ); TESTCASE( lhs.size == 3 ); TESTCASE( lhs.data[0] == 0 ); TESTCASE( lhs.data[1] == 0 ); TESTCASE( lhs.data[2] == 1 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/0000755000175000001440000000000014677003524022674 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_timesub.c0000644000175000001440000001044714676735310025676 0ustar mhxusers/* _PDCLIB_timesub( const time_t *, int_fast32_t, const struct state *, struct tm * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" /* Return the number of leap years through the end of the given year where, to make the math easy, the answer for year zero is defined as zero. */ static int leaps_thru_end_of_nonneg( int y ) { return y / 4 - y / 100 + y / 400; } static int leaps_thru_end_of( const int y ) { return ( y < 0 ? -1 - leaps_thru_end_of_nonneg( -1 - y ) : leaps_thru_end_of_nonneg( y ) ); } struct tm * _PDCLIB_timesub( const time_t * timep, int_fast32_t offset, const struct state * sp, struct tm * tmp ) { const struct lsinfo * lp; time_t tdays; int idays; /* unsigned would be so 2003 */ int_fast64_t rem; int y; const int * ip; int_fast64_t corr; bool hit; int i; corr = 0; hit = false; i = ( sp == NULL ) ? 0 : sp->leapcnt; while ( --i >= 0 ) { lp = &sp->lsis[ i ]; if ( *timep >= lp->trans ) { corr = lp->corr; hit = ( *timep == lp->trans && ( i == 0 ? 0 : lp[ -1 ].corr ) < corr ); break; } } y = EPOCH_YEAR; tdays = *timep / SECSPERDAY; rem = *timep % SECSPERDAY; while ( tdays < 0 || tdays >= year_lengths[ _PDCLIB_is_leap( y ) ] ) { int newy; time_t tdelta; int idelta; int leapdays; tdelta = tdays / DAYSPERLYEAR; if ( ! ( ( ! _PDCLIB_TYPE_SIGNED( time_t ) || _PDCLIB_INT_MIN <= tdelta ) && tdelta <= _PDCLIB_INT_MAX ) ) { goto out_of_range; } idelta = tdelta; if ( idelta == 0 ) { idelta = ( tdays < 0 ) ? -1 : 1; } newy = y; if ( _PDCLIB_increment_overflow( &newy, idelta ) ) { goto out_of_range; } leapdays = leaps_thru_end_of( newy - 1 ) - leaps_thru_end_of( y - 1 ); tdays -= ( (time_t)newy - y ) * DAYSPERNYEAR; tdays -= leapdays; y = newy; } /* Given the range, we can now fearlessly cast... */ idays = tdays; rem += offset - corr; while ( rem < 0 ) { rem += SECSPERDAY; --idays; } while ( rem >= SECSPERDAY ) { rem -= SECSPERDAY; ++idays; } while ( idays < 0 ) { if ( _PDCLIB_increment_overflow( &y, -1 ) ) { goto out_of_range; } idays += year_lengths[ _PDCLIB_is_leap( y ) ]; } while ( idays >= year_lengths[ _PDCLIB_is_leap( y ) ] ) { idays -= year_lengths[ _PDCLIB_is_leap( y ) ]; if ( _PDCLIB_increment_overflow( &y, 1 ) ) { goto out_of_range; } } tmp->tm_year = y; if ( _PDCLIB_increment_overflow( &tmp->tm_year, -TM_YEAR_BASE ) ) { goto out_of_range; } tmp->tm_yday = idays; /* The "extra" mods below avoid overflow problems. */ tmp->tm_wday = EPOCH_WDAY + ( ( y - EPOCH_YEAR ) % DAYSPERWEEK ) * ( DAYSPERNYEAR % DAYSPERWEEK ) + leaps_thru_end_of( y - 1 ) - leaps_thru_end_of( EPOCH_YEAR - 1 ) + idays; tmp->tm_wday %= DAYSPERWEEK; if ( tmp->tm_wday < 0 ) { tmp->tm_wday += DAYSPERWEEK; } tmp->tm_hour = (int)( rem / SECSPERHOUR ); rem %= SECSPERHOUR; tmp->tm_min = (int)( rem / SECSPERMIN ); /* A positive leap second requires a special representation. This uses "... ??:59:60" et seq. */ tmp->tm_sec = (int) ( rem % SECSPERMIN ) + hit; ip = mon_lengths[ _PDCLIB_is_leap( y ) ]; for ( tmp->tm_mon = 0; idays >= ip[ tmp->tm_mon ]; ++( tmp->tm_mon ) ) { idays -= ip[ tmp->tm_mon ]; } tmp->tm_mday = (int)( idays + 1 ); tmp->tm_isdst = 0; #ifdef TM_GMTOFF tmp->TM_GMTOFF = offset; #endif /* defined TM_GMTOFF */ return tmp; out_of_range: *_PDCLIB_errno_func() = _PDCLIB_EOVERFLOW; return NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_tzparse.c0000644000175000001440000004657514676735310025731 0ustar mhxusers/* _PDCLIB_tzparse( char const *, struct _PDCLIB_timezone *, bool ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" #include #include /* The DST rules to use if TZ has no rules and we can't load TZDEFRULES. Default to US rules as of 2017-05-07. POSIX does not specify the default DST rules; for historical reasons, US rules are a common default. */ #ifndef TZDEFRULESTRING #define TZDEFRULESTRING ",M3.2.0,M11.1.0" #endif #ifndef TZDEFRULES #define TZDEFRULES "posixrules" #endif enum rule_t { JULIAN_DAY, /* Jn = Julian day */ DAY_OF_YEAR, /* n = day of year */ MONTH_NTH_DAY_OF_WEEK /* Mm.n.d = month, week, day of week */ }; struct rule { enum rule_t type; /* type of rule */ int day; /* day number of rule */ int week; /* week number of rule */ int mon; /* month number of rule */ int_fast32_t time; /* transition time of rule */ }; /* Given a pointer into a timezone string, extract a number from that string. Check that the number is within a specified range; if it is not, return NULL. Otherwise, return a pointer to the first character not part of the number. */ static const char * getnum( const char * strp, int * nump, int min, int max ) { char c; int num; if ( strp == NULL || ! isdigit( (unsigned char)( c = *strp ) ) ) { return NULL; } num = 0; do { num = num * 10 + ( c - '0' ); if ( num > max ) { return NULL; /* illegal value */ } c = *++strp; } while ( isdigit( (unsigned char)c ) ); if ( num < min ) { return NULL; /* illegal value */ } *nump = num; return strp; } /* Given a pointer into a timezone string, extract a number of seconds, in hh[:mm[:ss]] form, from the string. If any error occurs, return NULL. Otherwise, return a pointer to the first character not part of the number of seconds. */ static const char * getsecs( const char * strp, int_fast32_t * secsp ) { int num; /* 'HOURSPERDAY * DAYSPERWEEK - 1' allows quasi-Posix rules like "M10.4.6/26", which does not conform to Posix, but which specifies the equivalent of "02:00 on the first Sunday on or after 23 Oct". */ strp = getnum( strp, &num, 0, HOURSPERDAY * DAYSPERWEEK - 1 ); if ( strp == NULL ) { return NULL; } *secsp = num * (int_fast32_t) SECSPERHOUR; if ( *strp == ':' ) { ++strp; strp = getnum( strp, &num, 0, MINSPERHOUR - 1 ); if ( strp == NULL ) { return NULL; } *secsp += num * SECSPERMIN; if ( *strp == ':' ) { ++strp; /* 'SECSPERMIN' allows for leap seconds. */ strp = getnum( strp, &num, 0, SECSPERMIN ); if ( strp == NULL ) { return NULL; } *secsp += num; } } return strp; } /* Given a pointer into a timezone string, extract an offset, in [+-]hh[:mm[:ss]] form, from the string. If any error occurs, return NULL. Otherwise, return a pointer to the first character not part of the time. */ static const char * getoffset( const char * strp, int_fast32_t * offsetp ) { bool neg = false; if ( *strp == '-' ) { neg = true; ++strp; } else if ( *strp == '+' ) { ++strp; } strp = getsecs( strp, offsetp ); if ( strp == NULL ) { return NULL; /* illegal time */ } if ( neg ) { *offsetp = - *offsetp; } return strp; } /* Given a pointer into a timezone string, extract a rule in the form date[/time]. See POSIX section 8 for the format of "date" and "time". If a valid rule is not found, return NULL. Otherwise, return a pointer to the first character not part of the rule. */ static const char * getrule( const char * strp, struct rule * rulep ) { if ( *strp == 'J' ) { /* Julian day. */ rulep->type = JULIAN_DAY; ++strp; strp = getnum( strp, &rulep->day, 1, DAYSPERNYEAR ); } else if ( *strp == 'M' ) { /* Month, week, day. */ rulep->type = MONTH_NTH_DAY_OF_WEEK; ++strp; strp = getnum( strp, &rulep->mon, 1, MONSPERYEAR ); if ( strp == NULL ) { return NULL; } if ( *strp++ != '.' ) { return NULL; } strp = getnum( strp, &rulep->week, 1, 5 ); if ( strp == NULL ) { return NULL; } if ( *strp++ != '.' ) { return NULL; } strp = getnum( strp, &rulep->day, 0, DAYSPERWEEK - 1 ); } else if ( isdigit( (unsigned char)*strp ) ) { /* Day of year. */ rulep->type = DAY_OF_YEAR; strp = getnum( strp, &rulep->day, 0, DAYSPERLYEAR - 1 ); } else { return NULL; /* invalid format */ } if ( strp == NULL ) { return NULL; } if ( *strp == '/' ) { /* Time specified. */ ++strp; strp = getoffset( strp, &rulep->time ); } else { rulep->time = 2 * SECSPERHOUR; /* default = 2:00:00 */ } return strp; } /* Given a year, a rule, and the offset from UT at the time that rule takes effect, calculate the year-relative time that rule takes effect. */ static int_fast32_t transtime( const int year, struct rule const * rulep, const int_fast32_t offset ) { bool leapyear; int_fast32_t value = 0; int i; int d; int m1; int yy0; int yy1; int yy2; int dow; leapyear = _PDCLIB_is_leap( year ); switch ( rulep->type ) { case JULIAN_DAY: /* Jn - Julian day, 1 == January 1, 60 == March 1 even in leap years. In non-leap years, or if the day number is 59 or less, just add SECSPERDAY times the day number-1 to the time of January 1, midnight, to get the day. */ value = ( rulep->day - 1 ) * SECSPERDAY; if ( leapyear && rulep->day >= 60 ) { value += SECSPERDAY; } break; case DAY_OF_YEAR: /* n - day of year. Just add SECSPERDAY times the day number to the time of January 1, midnight, to get the day. */ value = rulep->day * SECSPERDAY; break; case MONTH_NTH_DAY_OF_WEEK: /* Mm.n.d - nth "dth day" of month m. */ /* Use Zeller's Congruence to get day-of-week of first day of month. */ m1 = ( rulep->mon + 9 ) % 12 + 1; yy0 = ( rulep->mon <= 2 ) ? ( year - 1 ) : year; yy1 = yy0 / 100; yy2 = yy0 % 100; dow = ( ( 26 * m1 - 2 ) / 10 + 1 + yy2 + yy2 / 4 + yy1 / 4 - 2 * yy1 ) % 7; if ( dow < 0 ) { dow += DAYSPERWEEK; } /* "dow" is the day-of-week of the first day of the month. Get the day-of-month (zero-origin) of the first "dow" day of the month. */ d = rulep->day - dow; if ( d < 0 ) { d += DAYSPERWEEK; } for ( i = 1; i < rulep->week; ++i ) { if ( d + DAYSPERWEEK >= mon_lengths[ leapyear ][ rulep->mon - 1 ] ) { break; } d += DAYSPERWEEK; } /* "d" is the day-of-month (zero-origin) of the day we want. */ value = d * SECSPERDAY; for ( i = 0; i < rulep->mon - 1; ++i ) { value += mon_lengths[ leapyear ][ i ] * SECSPERDAY; } break; } /* "value" is the year-relative time of 00:00:00 UT on the day in question. To get the year-relative time of the specified local time on that day, add the transition time and the current offset from UT. */ return value + rulep->time + offset; } /* Given a pointer into a timezone string, scan until a character that is not a valid character in a time zone abbreviation is found. Return a pointer to that character. */ static const char * getzname( const char * strp ) { char c; while ( ( c = *strp ) != '\0' && ! isdigit( (unsigned char)c ) && c != ',' && c != '-' && c != '+' ) { ++strp; } return strp; } /* Given a pointer into an extended timezone string, scan until the ending delimiter of the time zone abbreviation is located. Return a pointer to the delimiter. As with getzname above, the legal character set is actually quite restricted, with other characters producing undefined results. We don't do any checking here; checking is done later in common-case code. */ static const char * getqzname( const char *strp, const int delim ) { int c; while ( ( c = *strp ) != '\0' && c != delim ) { ++strp; } return strp; } static bool increment_overflow_time( time_t * tp, int_fast32_t j ) { /* This is like 'if (! (_PDCLIB_TIME_MIN <= *tp + j && *tp + j <= _PDCLIB_TIME_MAX)) ...', except that it does the right thing even if *tp + j would overflow. */ if ( ! ( j < 0 ? ( _PDCLIB_TYPE_SIGNED( time_t ) ? _PDCLIB_TIME_MIN - j <= *tp : -1 - j < *tp ) : *tp <= _PDCLIB_TIME_MAX - j ) ) { return true; } *tp += j; return false; } /* Given a POSIX section 8-style TZ string, fill in the rule tables as appropriate. */ bool _PDCLIB_tzparse( const char * name, struct state * sp, bool lastditch ) { const char * stdname; const char * dstname; size_t stdlen; size_t dstlen; size_t charcnt; int_fast32_t stdoffset; int_fast32_t dstoffset; char * cp; bool load_ok; stdname = name; if ( lastditch ) { stdlen = sizeof gmt - 1; name += stdlen; stdoffset = 0; } else { if ( *name == '<' ) { name++; stdname = name; name = getqzname( name, '>' ); if ( *name != '>' ) { return false; } stdlen = name - stdname; name++; } else { name = getzname( name ); stdlen = name - stdname; } if ( ! stdlen ) { return false; } name = getoffset( name, &stdoffset ); if ( name == NULL ) { return false; } } charcnt = stdlen + 1; if ( sizeof sp->chars < charcnt ) { return false; } load_ok = _PDCLIB_tzload( TZDEFRULES, sp, false ) == 0; if ( ! load_ok ) { sp->leapcnt = 0; /* so, we're off a little */ } if ( *name != '\0' ) { if ( *name == '<' ) { dstname = ++name; name = getqzname( name, '>' ); if ( *name != '>' ) { return false; } dstlen = name - dstname; name++; } else { dstname = name; name = getzname( name ); dstlen = name - dstname; /* length of DST abbr. */ } if ( ! dstlen ) { return false; } charcnt += dstlen + 1; if ( sizeof sp->chars < charcnt ) { return false; } if ( *name != '\0' && *name != ',' && *name != ';' ) { name = getoffset( name, &dstoffset ); if ( name == NULL ) { return false; } } else { dstoffset = stdoffset - SECSPERHOUR; } if ( *name == '\0' && ! load_ok ) { name = TZDEFRULESTRING; } if ( *name == ',' || *name == ';' ) { struct rule start; struct rule end; int year; int yearlim; int timecnt; time_t janfirst; int_fast32_t janoffset = 0; int yearbeg; ++name; if ( ( name = getrule( name, &start ) ) == NULL ) { return false; } if ( *name++ != ',' ) { return false; } if ( ( name = getrule( name, &end ) ) == NULL ) { return false; } if ( *name != '\0' ) { return false; } sp->typecnt = 2; /* standard time and DST */ /* Two transitions per year, from EPOCH_YEAR forward. */ _PDCLIB_init_ttinfo( &sp->ttis[ 0 ], -stdoffset, false, 0 ); _PDCLIB_init_ttinfo( &sp->ttis[ 1 ], -dstoffset, true, stdlen + 1 ); sp->defaulttype = 0; timecnt = 0; janfirst = 0; yearbeg = EPOCH_YEAR; do { int_fast32_t yearsecs = year_lengths[ _PDCLIB_is_leap( yearbeg - 1 ) ] * SECSPERDAY; yearbeg--; if ( increment_overflow_time( &janfirst, -yearsecs ) ) { janoffset = -yearsecs; break; } } while ( EPOCH_YEAR - YEARSPERREPEAT / 2 < yearbeg ); yearlim = yearbeg + YEARSPERREPEAT + 1; for ( year = yearbeg; year < yearlim; year++ ) { int_fast32_t starttime = transtime( year, &start, stdoffset ), endtime = transtime( year, &end, dstoffset ); int_fast32_t yearsecs = ( year_lengths[ _PDCLIB_is_leap( year ) ] * SECSPERDAY ); bool reversed = endtime < starttime; if ( reversed ) { int_fast32_t swap = starttime; starttime = endtime; endtime = swap; } if ( reversed || ( starttime < endtime && ( endtime - starttime < ( yearsecs + ( stdoffset - dstoffset ) ) ) ) ) { if ( TZ_MAX_TIMES - 2 < timecnt ) { break; } sp->ats[ timecnt ] = janfirst; if ( ! increment_overflow_time( &sp->ats[ timecnt ], janoffset + starttime ) ) { sp->types[ timecnt++ ] = ! reversed; } sp->ats[ timecnt ] = janfirst; if ( ! increment_overflow_time( &sp->ats[ timecnt ], janoffset + endtime ) ) { sp->types[ timecnt++ ] = reversed; yearlim = year + YEARSPERREPEAT + 1; } } if ( increment_overflow_time ( &janfirst, janoffset + yearsecs ) ) { break; } janoffset = 0; } sp->timecnt = timecnt; if ( ! timecnt ) { sp->ttis[ 0 ] = sp->ttis[ 1 ]; sp->typecnt = 1; /* Perpetual DST. */ } else if ( YEARSPERREPEAT < year - yearbeg ) { sp->goback = sp->goahead = true; } } else { int_fast32_t theirstdoffset; int_fast32_t theirdstoffset; int_fast32_t theiroffset; bool isdst; int i; int j; if ( *name != '\0' ) { return false; } /* Initial values of theirstdoffset and theirdstoffset. */ theirstdoffset = 0; for ( i = 0; i < sp->timecnt; ++i ) { j = sp->types[ i ]; if ( ! sp->ttis[ j ].isdst ) { theirstdoffset = - sp->ttis[ j ].utoff; break; } } theirdstoffset = 0; for ( i = 0; i < sp->timecnt; ++i ) { j = sp->types[ i ]; if ( sp->ttis[ j ].isdst ) { theirdstoffset = - sp->ttis[ j ].utoff; break; } } /* Initially we're assumed to be in standard time. */ isdst = false; theiroffset = theirstdoffset; /* Now juggle transition times and types tracking offsets as you do. */ for ( i = 0; i < sp->timecnt; ++i ) { j = sp->types[ i ]; sp->types[ i ] = sp->ttis[ j ].isdst; if ( sp->ttis[ j ].ttisut ) { /* No adjustment to transition time */ } else { /* If daylight saving time is in effect, and the transition time was not specified as standard time, add the daylight saving time offset to the transition time; otherwise, add the standard time offset to the transition time. */ /* Transitions from DST to DDST will effectively disappear since POSIX provides for only one DST offset. */ if ( isdst && ! sp->ttis[ j ].ttisstd ) { sp->ats[ i ] += dstoffset - theirdstoffset; } else { sp->ats[ i ] += stdoffset - theirstdoffset; } } theiroffset = -sp->ttis[ j ].utoff; if ( sp->ttis[ j ].isdst ) { theirdstoffset = theiroffset; } else { theirstdoffset = theiroffset; } } /* Finally, fill in ttis. */ _PDCLIB_init_ttinfo( &sp->ttis[ 0 ], -stdoffset, false, 0 ); _PDCLIB_init_ttinfo( &sp->ttis[ 1 ], -dstoffset, true, stdlen + 1 ); sp->typecnt = 2; sp->defaulttype = 0; } } else { dstlen = 0; sp->typecnt = 1; /* only standard time */ sp->timecnt = 0; _PDCLIB_init_ttinfo( &sp->ttis[ 0 ], -stdoffset, false, 0 ); sp->defaulttype = 0; } sp->charcnt = charcnt; cp = sp->chars; memcpy( cp, stdname, stdlen ); cp += stdlen; *cp++ = '\0'; if ( dstlen != 0 ) { memcpy( cp, dstname, dstlen ); *( cp + dstlen ) = '\0'; } return true; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_tzset_unlocked.c0000644000175000001440000000750414676735310027263 0ustar mhxusers/* _PDCLIB_tzset_unlocked( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" #include #include #ifndef TZ_ABBR_MAX_LEN #define TZ_ABBR_MAX_LEN 16 #endif #ifndef TZ_ABBR_CHAR_SET #define TZ_ABBR_CHAR_SET "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 :+-._" #endif #ifndef TZ_ABBR_ERR_CHAR #define TZ_ABBR_ERR_CHAR '_' #endif /* This string was in the Factory zone through version 2016f. */ #define GRANDPARENTED "Local time zone must be set--see zic manual page" #ifndef TZ_STRLEN_MAX #define TZ_STRLEN_MAX 255 #endif static char lcl_TZname[ TZ_STRLEN_MAX + 1 ]; int lcl_is_set = 0; static void scrub_abbrs( struct state * sp ) { int i; /* First, replace bogus characters. */ for ( i = 0; i < sp->charcnt; ++i ) { if ( strchr( TZ_ABBR_CHAR_SET, sp->chars[ i ] ) == NULL ) { sp->chars[ i ] = TZ_ABBR_ERR_CHAR; } } /* Second, truncate long abbreviations. */ for ( i = 0; i < sp->typecnt; ++i ) { const struct ttinfo * const ttisp = &sp->ttis[ i ]; char * cp = &sp->chars[ ttisp->desigidx ]; if ( strlen( cp ) > TZ_ABBR_MAX_LEN && strcmp( cp, GRANDPARENTED ) != 0 ) { *( cp + TZ_ABBR_MAX_LEN ) = '\0'; } } } /* Initialize *SP to a value appropriate for the TZ setting NAME. Return 0 on success, an errno value on failure. */ static int zoneinit( struct state * sp, char const * name ) { if (name && ! name[0]) { /* User wants it fast rather than right. */ sp->leapcnt = 0; /* so, we're off a little */ sp->timecnt = 0; sp->typecnt = 0; sp->charcnt = 0; sp->goback = sp->goahead = false; _PDCLIB_init_ttinfo( &sp->ttis[ 0 ], 0, false, 0 ); strcpy( sp->chars, gmt ); sp->defaulttype = 0; return 0; } else { int err = _PDCLIB_tzload( name, sp, true ); if ( err != 0 && name && name[ 0 ] != ':' && _PDCLIB_tzparse( name, sp, false ) ) { err = 0; } if ( err == 0 ) { scrub_abbrs( sp ); } return err; } } static void settzname( void ) { struct state * const sp = &_PDCLIB_lclmem; int i; #if HAVE_TZNAME tzname[ 0 ] = tzname[ 1 ] = (char *) ( sp ? wildabbr : gmt ); #endif #if USG_COMPAT daylight = 0; timezone = 0; #endif #if ALTZONE altzone = 0; #endif if ( sp == NULL ) { return; } /* And to get the latest time zone abbreviations into tzname... */ for ( i = 0; i < sp->typecnt; ++i ) { const struct ttinfo * const ttisp = &sp->ttis[ i ]; _PDCLIB_update_tzname_etc( sp, ttisp ); } for ( i = 0; i < sp->timecnt; ++i ) { const struct ttinfo * const ttisp = &sp->ttis[ sp->types[ i ] ]; _PDCLIB_update_tzname_etc( sp, ttisp ); #if USG_COMPAT if ( ttisp->isdst ) { daylight = 1; } #endif } } static void tzsetlcl( char const * name ) { struct state * sp = &_PDCLIB_lclmem; int lcl = name ? strlen( name ) < sizeof lcl_TZname : -1; if ( lcl < 0 ? lcl_is_set < 0 : 0 < lcl_is_set && strcmp( lcl_TZname, name ) == 0 ) { return; } if ( sp ) { if ( zoneinit( sp, name ) != 0 ) { zoneinit( sp, "" ); } if ( 0 < lcl ) { strcpy( lcl_TZname, name ); } } settzname(); lcl_is_set = lcl; } void _PDCLIB_tzset_unlocked( void ) { tzsetlcl( getenv( "TZ" ) ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_init_ttinfo.c0000644000175000001440000000123614676735310026550 0ustar mhxusers/* _PDCLIB_init_ttinfo( struct ttinfo *, int_fast32_t, bool, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" /* Initialize *S to a value based on UTOFF, ISDST, and DESIGIDX. */ void _PDCLIB_init_ttinfo( struct ttinfo * s, int_fast32_t utoff, bool isdst, int desigidx ) { s->utoff = utoff; s->isdst = isdst; s->desigidx = desigidx; s->ttisstd = false; s->ttisut = false; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_gmtcheck.c0000644000175000001440000000147114676735310026010 0ustar mhxusers/* _PDCLIB_gmtcheck( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" #ifndef __STDC_NO_THREADS__ #include extern mtx_t _PDCLIB_time_mtx; #endif static void gmtload( struct state * sp ) { if ( _PDCLIB_tzload( gmt, sp, true ) != 0 ) { _PDCLIB_tzparse( gmt, sp, true ); } } void _PDCLIB_gmtcheck( void ) { static bool gmt_is_set; _PDCLIB_LOCK( _PDCLIB_time_mtx ); if ( ! gmt_is_set ) { gmtload( &_PDCLIB_gmtmem ); gmt_is_set = true; } _PDCLIB_UNLOCK( _PDCLIB_time_mtx ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_update_tzname_etc.c0000644000175000001440000000137214676735310027716 0ustar mhxusers/* _PDCLIB_update_tzname_etc( struct state const *, struct ttinfo const * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" void _PDCLIB_update_tzname_etc( struct state const * sp, struct ttinfo const * ttisp ) { #if HAVE_TZNAME tzname[ ttisp->isdst ] = (char *) &sp->chars[ ttisp->desigidx ]; #endif #if USG_COMPAT if ( ! ttisp->isdst ) { timezone = - ttisp->utoff; } #endif #if ALTZONE if ( ttisp->isdst ) { altzone = - ttisp->utoff; } #endif } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/Readme.txt0000644000175000001440000000054214676735310024637 0ustar mhxusersMajor parts of PDCLib's implementation are based on IANA's reference implementation, tzcode. https://data.iana.org/time-zones/tz-link.html The latest version of tzcode can be downloaded at: https://www.iana.org/time-zones/repository/tzcode-latest.tar.gz At the time of this writing, the latest tzcode version used as basis is 2020a. Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_mktime_tzname.c0000644000175000001440000003107614676735310027073 0ustar mhxusers/* _PDCLIB_mktime_tzname( struct state *, struct tm *, bool ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" /* Adapted from code provided by Robert Elz, who writes: The "best" way to do mktime I think is based on an idea of Bob Kridle's (so its said...) from a long time ago. It does a binary search of the time_t space. Since time_t's are just 32 bits, its a max of 32 iterations (even at 64 bits it would still be very reasonable). */ #ifndef WRONG #define WRONG (-1) #endif /* Normalize logic courtesy Paul Eggert. */ static bool increment_overflow32( int_fast32_t * lp, int m ) { int_fast32_t const l = *lp; if ( ( l >= 0 ) ? ( m > _PDCLIB_INT_FAST32_MAX - l ) : ( m < _PDCLIB_INT_FAST32_MIN - l ) ) { return true; } *lp += m; return false; } static bool normalize_overflow( int * tensptr, int * unitsptr, int base ) { int tensdelta; tensdelta = ( *unitsptr >= 0 ) ? ( *unitsptr / base ) : ( -1 - ( -1 - *unitsptr ) / base ); *unitsptr -= tensdelta * base; return _PDCLIB_increment_overflow( tensptr, tensdelta ); } static bool normalize_overflow32( int_fast32_t * tensptr, int * unitsptr, int base ) { int tensdelta; tensdelta = ( *unitsptr >= 0 ) ? ( *unitsptr / base ) : ( -1 - ( -1 - *unitsptr ) / base ); *unitsptr -= tensdelta * base; return increment_overflow32( tensptr, tensdelta ); } static int tmcomp( const struct tm * atmp, const struct tm * btmp ) { int result; if ( atmp->tm_year != btmp->tm_year ) { return atmp->tm_year < btmp->tm_year ? -1 : 1; } if ( ( result = ( atmp->tm_mon - btmp->tm_mon ) ) == 0 && ( result = ( atmp->tm_mday - btmp->tm_mday ) ) == 0 && ( result = ( atmp->tm_hour - btmp->tm_hour ) ) == 0 && ( result = ( atmp->tm_min - btmp->tm_min ) ) == 0 ) { result = atmp->tm_sec - btmp->tm_sec; } return result; } static time_t time2sub( struct tm * tmp, struct tm *(*funcp)( struct state const *, time_t const *, int_fast32_t, struct tm * ), struct state const * sp, const int_fast32_t offset, bool * okayp, bool do_norm_secs ) { int dir; int i, j; int saved_seconds; int_fast32_t li; time_t lo; time_t hi; int_fast32_t y; time_t newt; time_t t; struct tm yourtm, mytm; *okayp = false; yourtm = *tmp; if ( do_norm_secs ) { if ( normalize_overflow( &yourtm.tm_min, &yourtm.tm_sec, SECSPERMIN ) ) { return WRONG; } } if ( normalize_overflow( &yourtm.tm_hour, &yourtm.tm_min, MINSPERHOUR ) ) { return WRONG; } if ( normalize_overflow( &yourtm.tm_mday, &yourtm.tm_hour, HOURSPERDAY ) ) { return WRONG; } y = yourtm.tm_year; if ( normalize_overflow32( &y, &yourtm.tm_mon, MONSPERYEAR ) ) { return WRONG; } /* Turn y into an actual year number for now. It is converted back to an offset from TM_YEAR_BASE later. */ if ( increment_overflow32( &y, TM_YEAR_BASE ) ) { return WRONG; } while ( yourtm.tm_mday <= 0 ) { if ( increment_overflow32( &y, -1 ) ) { return WRONG; } li = y + ( 1 < yourtm.tm_mon ); yourtm.tm_mday += year_lengths[ _PDCLIB_is_leap( li ) ]; } while ( yourtm.tm_mday > DAYSPERLYEAR ) { li = y + ( 1 < yourtm.tm_mon ); yourtm.tm_mday -= year_lengths[ _PDCLIB_is_leap( li ) ]; if ( increment_overflow32( &y, 1 ) ) { return WRONG; } } for ( ; ; ) { i = mon_lengths[ _PDCLIB_is_leap( y ) ][ yourtm.tm_mon ]; if ( yourtm.tm_mday <= i ) { break; } yourtm.tm_mday -= i; if ( ++yourtm.tm_mon >= MONSPERYEAR ) { yourtm.tm_mon = 0; if ( increment_overflow32( &y, 1 ) ) { return WRONG; } } } if ( increment_overflow32( &y, -TM_YEAR_BASE ) ) { return WRONG; } if ( ! ( _PDCLIB_INT_MIN <= y && y <= _PDCLIB_INT_MAX ) ) { return WRONG; } yourtm.tm_year = y; if ( yourtm.tm_sec >= 0 && yourtm.tm_sec < SECSPERMIN ) { saved_seconds = 0; } else if ( y + TM_YEAR_BASE < EPOCH_YEAR ) { /* We can't set tm_sec to 0, because that might push the time below the minimum representable time. Set tm_sec to 59 instead. This assumes that the minimum representable time is not in the same minute that a leap second was deleted from, which is a safer assumption than using 58 would be. */ if ( _PDCLIB_increment_overflow( &yourtm.tm_sec, 1 - SECSPERMIN ) ) { return WRONG; } saved_seconds = yourtm.tm_sec; yourtm.tm_sec = SECSPERMIN - 1; } else { saved_seconds = yourtm.tm_sec; yourtm.tm_sec = 0; } /* Do a binary search (this works whatever time_t's type is). */ lo = _PDCLIB_TIME_MIN; hi = _PDCLIB_TIME_MAX; for ( ; ; ) { t = lo / 2 + hi / 2; if ( t < lo ) { t = lo; } else if ( t > hi ) { t = hi; } if ( ! funcp( sp, &t, offset, &mytm ) ) { /* Assume that t is too extreme to be represented in a struct tm; arrange things so that it is less extreme on the next pass. */ dir = ( t > 0 ) ? 1 : -1; } else { dir = tmcomp( &mytm, &yourtm ); } if ( dir != 0 ) { if ( t == lo ) { if ( t == _PDCLIB_TIME_MAX ) { return WRONG; } ++t; ++lo; } else if ( t == hi ) { if ( t == _PDCLIB_TIME_MIN ) { return WRONG; } --t; --hi; } if ( lo > hi ) { return WRONG; } if ( dir > 0 ) { hi = t; } else { lo = t; } continue; } #if defined TM_GMTOFF && ! UNINIT_TRAP if ( mytm.TM_GMTOFF != yourtm.TM_GMTOFF && ( yourtm.TM_GMTOFF < 0 ? ( -SECSPERDAY <= yourtm.TM_GMTOFF && ( mytm.TM_GMTOFF <= ( SMALLEST ( _PDCLIB_INT_FAST32_MAX, _PDCLIB_LONG_MAX ) + yourtm.TM_GMTOFF ) ) ) : ( yourtm.TM_GMTOFF <= SECSPERDAY && ( ( BIGGEST ( _PDCLIB_INT_FAST32_MIN, _PDCLIB_LONG_MIN ) + yourtm.TM_GMTOFF ) <= mytm.TM_GMTOFF ) ) ) ) { /* MYTM matches YOURTM except with the wrong UT offset. YOURTM.TM_GMTOFF is plausible, so try it instead. It's OK if YOURTM.TM_GMTOFF contains uninitialized data, since the guess gets checked. */ time_t altt = t; int_fast32_t diff = mytm.TM_GMTOFF - yourtm.TM_GMTOFF; if ( ! increment_overflow_time( &altt, diff ) ) { struct tm alttm; if ( funcp( sp, &altt, offset, &alttm ) && alttm.tm_isdst == mytm.tm_isdst && alttm.TM_GMTOFF == yourtm.TM_GMTOFF && tmcomp( &alttm, &yourtm ) == 0 ) { t = altt; mytm = alttm; } } } #endif if ( yourtm.tm_isdst < 0 || mytm.tm_isdst == yourtm.tm_isdst ) { break; } /* Right time, wrong type. Hunt for right time, right type. It's okay to guess wrong since the guess gets checked. */ if ( sp == NULL ) { return WRONG; } for ( i = sp->typecnt - 1; i >= 0; --i ) { if ( sp->ttis[ i ].isdst != yourtm.tm_isdst ) { continue; } for ( j = sp->typecnt - 1; j >= 0; --j ) { if ( sp->ttis[ j ].isdst == yourtm.tm_isdst ) { continue; } newt = ( t + sp->ttis[ j ].utoff - sp->ttis[ i ].utoff ); if ( ! funcp( sp, &newt, offset, &mytm ) ) { continue; } if ( tmcomp( &mytm, &yourtm ) != 0 ) { continue; } if ( mytm.tm_isdst != yourtm.tm_isdst ) { continue; } /* We have a match. */ t = newt; goto label; } } return WRONG; } label: newt = t + saved_seconds; if ( ( newt < t ) != ( saved_seconds < 0 ) ) { return WRONG; } t = newt; if ( funcp( sp, &t, offset, tmp ) ) { *okayp = true; } return t; } static time_t time2( struct tm * tmp, struct tm *(*funcp)( struct state const *, time_t const *, int_fast32_t, struct tm * ), struct state const * sp, const int_fast32_t offset, bool * okayp ) { time_t t; /* First try without normalization of seconds (in case tm_sec contains a value associated with a leap second). If that fails, try with normalization of seconds. */ t = time2sub( tmp, funcp, sp, offset, okayp, false ); return *okayp ? t : time2sub( tmp, funcp, sp, offset, okayp, true ); } static time_t time1( struct tm * tmp, struct tm *(*funcp)( struct state const *, time_t const *, int_fast32_t, struct tm * ), struct state const * sp, const int_fast32_t offset ) { time_t t; int samei, otheri; int sameind, otherind; int i; int nseen; char seen[TZ_MAX_TYPES]; unsigned char types[TZ_MAX_TYPES]; bool okay; if ( tmp == NULL ) { *_PDCLIB_errno_func() = _PDCLIB_EINVAL; return WRONG; } if ( tmp->tm_isdst > 1 ) { tmp->tm_isdst = 1; } t = time2( tmp, funcp, sp, offset, &okay ); if ( okay ) { return t; } if ( tmp->tm_isdst < 0 ) { #ifdef PCTS /* POSIX Conformance Test Suite code courtesy Grant Sullivan. */ tmp->tm_isdst = 0; /* reset to std and try again */ #else return t; #endif } /* We're supposed to assume that somebody took a time of one type and did some math on it that yielded a "struct tm" that's bad. We try to divine the type they started from and adjust to the type they need. */ if ( sp == NULL ) { return WRONG; } for ( i = 0; i < sp->typecnt; ++i ) { seen[ i ] = false; } nseen = 0; for ( i = sp->timecnt - 1; i >= 0; --i ) { if ( ! seen[ sp->types[ i ] ] ) { seen[ sp->types[ i ] ] = true; types[ nseen++ ] = sp->types[ i ]; } } for ( sameind = 0; sameind < nseen; ++sameind ) { samei = types[ sameind ]; if ( sp->ttis[ samei ].isdst != tmp->tm_isdst ) { continue; } for ( otherind = 0; otherind < nseen; ++otherind ) { otheri = types[ otherind ]; if ( sp->ttis[ otheri ].isdst == tmp->tm_isdst ) { continue; } tmp->tm_sec += ( sp->ttis[ otheri ].utoff - sp->ttis[ samei ].utoff ); tmp->tm_isdst = ! tmp->tm_isdst; t = time2( tmp, funcp, sp, offset, &okay ); if ( okay ) { return t; } tmp->tm_sec -= ( sp->ttis[ otheri ].utoff - sp->ttis[ samei ].utoff ); tmp->tm_isdst = ! tmp->tm_isdst; } } return WRONG; } time_t _PDCLIB_mktime_tzname( struct state * sp, struct tm * tmp, bool setname ) { if ( sp ) { return time1( tmp, _PDCLIB_localsub, sp, setname ); } else { _PDCLIB_gmtcheck(); return time1( tmp, _PDCLIB_gmtsub, &_PDCLIB_gmtmem, 0 ); } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_increment_overflow.c0000644000175000001440000000162014676735310030126 0ustar mhxusers/* _PDCLIB_increment_overflow( int *, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" /* Normalize logic courtesy Paul Eggert. */ bool _PDCLIB_increment_overflow( int * ip, int j ) { int const i = *ip; /* If i >= 0 there can only be overflow if i + j > INT_MAX or if j > INT_MAX - i; given i >= 0, INT_MAX - i cannot overflow. If i < 0 there can only be overflow if i + j < INT_MIN or if j < INT_MIN - i; given i < 0, INT_MIN - i cannot overflow. */ if ( ( i >= 0 ) ? ( j > _PDCLIB_INT_MAX - i ) : ( j < _PDCLIB_INT_MIN - i ) ) { return true; } *ip += j; return false; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_gmtsub.c0000644000175000001440000000171514676735310025525 0ustar mhxusers/* _PDCLIB_gmtsub( struct state const *, time_t const *, int_fast32_t, struct tm * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" /* gmtsub is to gmtime as localsub is to localtime. */ struct tm * _PDCLIB_gmtsub( struct state const * sp, time_t const * timep, int_fast32_t offset, struct tm * tmp ) { struct tm * result; result = _PDCLIB_timesub( timep, offset, &_PDCLIB_gmtmem, tmp ); #ifdef TM_ZONE /* Could get fancy here and deliver something such as "+xx" or "-xx" if offset is non-zero, but this is no time for a treasure hunt. */ tmp->TM_ZONE = ( (char *)( offset ? wildabbr : &_PDCLIB_gmtmem ? _PDCLIB_gmtptr.chars : gmt ) ); #endif return result; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_localsub.c0000644000175000001440000000737514676735310026040 0ustar mhxusers/* _PDCLIB_localsub( struct state const *, time_t const *, int_fast32_t, struct tm * const ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" /* The easy way to behave "as if no library function calls" localtime is to not call it, so we drop its guts into "localsub", which can be freely called. (And no, the PANS doesn't require the above behavior, but it *is* desirable.) If successful and SETNAME is nonzero, set the applicable parts of tzname, timezone and altzone; however, it's OK to omit this step if the timezone is POSIX-compatible, since in that case tzset should have already done this step correctly. SETNAME's type is intfast32_t for compatibility with gmtsub, but it is actually a boolean and its value should be 0 or 1. */ /*ARGSUSED*/ struct tm * _PDCLIB_localsub( struct state const * sp, time_t const * timep, int_fast32_t setname, struct tm * const tmp ) { const struct ttinfo * ttisp; int i; struct tm * result; const time_t t = *timep; if ( sp == NULL ) { /* Don't bother to set tzname etc.; tzset has already done it. */ return _PDCLIB_gmtsub( &_PDCLIB_gmtmem, timep, 0, tmp ); } if ( ( sp->goback && t < sp->ats[ 0 ] ) || ( sp->goahead && t > sp->ats[ sp->timecnt - 1 ] ) ) { time_t newt = t; time_t seconds; time_t years; if ( t < sp->ats[ 0 ] ) { seconds = sp->ats[ 0 ] - t; } else { seconds = t - sp->ats[ sp->timecnt - 1 ]; } --seconds; years = ( seconds / SECSPERREPEAT + 1 ) * YEARSPERREPEAT; seconds = years * AVGSECSPERYEAR; if ( t < sp->ats[ 0 ] ) { newt += seconds; } else { newt -= seconds; } if ( newt < sp->ats[ 0 ] || newt > sp->ats[ sp->timecnt - 1 ] ) { return NULL; /* "cannot happen" */ } result = _PDCLIB_localsub( sp, &newt, setname, tmp ); if ( result ) { int_fast64_t newy; newy = result->tm_year; if ( t < sp->ats[ 0 ] ) { newy -= years; } else { newy += years; } if ( ! ( _PDCLIB_INT_MIN <= newy && newy <= _PDCLIB_INT_MAX ) ) { return NULL; } result->tm_year = newy; } return result; } if ( sp->timecnt == 0 || t < sp->ats[ 0 ] ) { i = sp->defaulttype; } else { int lo = 1; int hi = sp->timecnt; while ( lo < hi ) { int mid = ( lo + hi ) >> 1; if ( t < sp->ats[ mid ] ) { hi = mid; } else { lo = mid + 1; } } i = (int) sp->types[ lo - 1 ]; } ttisp = &sp->ttis[ i ]; /* To get (wrong) behavior that's compatible with System V Release 2.0 you'd replace the statement below with t += ttisp->utoff; timesub( &t, 0L, sp, tmp ); */ result = _PDCLIB_timesub( &t, ttisp->utoff, sp, tmp ); if ( result ) { result->tm_isdst = ttisp->isdst; #ifdef TM_ZONE result->TM_ZONE = (char *) &sp->chars[ ttisp->desigidx ]; #endif /* defined TM_ZONE */ if ( setname ) { _PDCLIB_update_tzname_etc( sp, ttisp ); } } return result; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_localtime_tzset.c0000644000175000001440000000150014676735310027416 0ustar mhxusers/* _PDCLIB_localtime_tzset( time_t const *, struct tm *, bool ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" #ifndef __STDC_NO_THREADS__ #include extern mtx_t _PDCLIB_time_mtx; #endif #include struct tm * _PDCLIB_localtime_tzset( time_t const * timep, struct tm * tmp, bool setname ) { _PDCLIB_LOCK( _PDCLIB_time_mtx ); if ( setname || ! lcl_is_set ) { _PDCLIB_tzset_unlocked(); } tmp = _PDCLIB_localsub( &_PDCLIB_lclmem, timep, setname, tmp ); _PDCLIB_UNLOCK( _PDCLIB_time_mtx ); return tmp; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_tzcode/_PDCLIB_tzload.c0000644000175000001440000004515714676735310025531 0ustar mhxusers/* _PDCLIB_tzload( char const *, struct _PDCLIB_timezone *, bool ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" #include #include #include static int_fast32_t detzcode( const char * codep ) { int_fast32_t result; int i; int_fast32_t one = 1; int_fast32_t halfmaxval = one << ( 32 - 2 ); int_fast32_t maxval = halfmaxval - 1 + halfmaxval; int_fast32_t minval = -1 - maxval; result = codep[ 0 ] & 0x7f; for ( i = 1; i < 4; ++i ) { result = ( result << 8 ) | ( codep[ i ] & 0xff ); } if ( codep[ 0 ] & 0x80 ) { /* Do two's-complement negation even on non-two's-complement machines. If the result would be minval - 1, return minval. */ result -= ! _PDCLIB_TWOS_COMPLEMENT && result != 0; result += minval; } return result; } static int_fast64_t detzcode64( const char * codep ) { uint_fast64_t result; int i; int_fast64_t one = 1; int_fast64_t halfmaxval = one << ( 64 - 2 ); int_fast64_t maxval = halfmaxval - 1 + halfmaxval; int_fast64_t minval = - _PDCLIB_TWOS_COMPLEMENT - maxval; result = codep[ 0 ] & 0x7f; for ( i = 1; i < 8; ++i ) { result = ( result << 8 ) | ( codep[ i ] & 0xff ); } if ( codep[ 0 ] & 0x80 ) { /* Do two's-complement negation even on non-two's-complement machines. If the result would be minval - 1, return minval. */ result -= ! _PDCLIB_TWOS_COMPLEMENT && result != 0; result += minval; } return result; } static bool differ_by_repeat( const time_t t1, const time_t t0 ) { if ( ( sizeof( time_t ) * _PDCLIB_CHAR_BIT ) - _PDCLIB_TYPE_SIGNED( time_t ) < SECSPERREPEAT_BITS ) { return 0; } return ( t1 - t0 ) == SECSPERREPEAT; } static bool typesequiv( const struct state * sp, int a, int b ) { bool result; if ( sp == NULL || a < 0 || a >= sp->typecnt || b < 0 || b >= sp->typecnt ) { result = false; } else { const struct ttinfo * ap = &sp->ttis[ a ]; const struct ttinfo * bp = &sp->ttis[ b ]; result = ( ap->utoff == bp->utoff && ap->isdst == bp->isdst && ap->ttisstd == bp->ttisstd && ap->ttisut == bp->ttisut && ( strcmp( &sp->chars[ ap->desigidx ], &sp->chars[ bp->desigidx ] ) == 0 ) ); } return result; } #define TZ_MAGIC "TZif" struct tzhead { char tzh_magic[ 4 ]; /* TZ_MAGIC */ char tzh_version[ 1 ]; /* '\0' or '2' or '3' as of 2013 */ char tzh_reserved[ 15 ]; /* reserved; must be zero */ char tzh_ttisutcnt[ 4 ]; /* coded number of trans. time flags */ char tzh_ttisstdcnt[ 4 ]; /* coded number of trans. time flags */ char tzh_leapcnt[ 4 ]; /* coded number of leap seconds */ char tzh_timecnt[ 4 ]; /* coded number of transition times */ char tzh_typecnt[ 4 ]; /* coded number of local time types */ char tzh_charcnt[ 4 ]; /* coded number of abbr. chars */ }; /* Input buffer for data read from a compiled tz file. */ union input_buffer { /* The first part of the buffer, interpreted as a header. */ struct tzhead tzhead; /* The entire buffer. */ char buf[ 2 * sizeof ( struct tzhead ) + 2 * sizeof ( struct state ) + 4 * TZ_MAX_TIMES ]; }; /* _PDCLIB_TZDIR with a trailing '/' rather than a trailing '\0'. */ static char const tzdirslash[ sizeof _PDCLIB_TZDIR + 1 ] = _PDCLIB_TZDIR "/"; /* Local storage needed for 'tzloadbody'. */ union local_storage { /* The results of analyzing the file's contents after it is opened. */ struct file_analysis { /* The input buffer. */ union input_buffer u; /* A temporary state used for parsing a TZ string in the file. */ struct state st; } u; /* The file name to be opened. */ char fullname[ BIGGEST ( sizeof ( struct file_analysis ), sizeof tzdirslash + 1024 ) ]; }; static int_fast64_t leapcorr( struct state const * sp, time_t t ) { struct lsinfo const * lp; int i; i = sp->leapcnt; while ( --i >= 0 ) { lp = &sp->lsis[ i ]; if ( t >= lp->trans ) { return lp->corr; } } return 0; } /* Load tz data from the file named NAME into *SP. Read extended format if DOEXTEND. Use *LSP for temporary storage. Return 0 on success, an errno value on failure. */ static int tzloadbody( char const * name, struct state * sp, bool doextend, union local_storage * lsp ) { int i; FILE * fid; int stored; size_t nread; bool doaccess; union input_buffer * up = &lsp->u.u; size_t tzheadsize = sizeof ( struct tzhead ); sp->goback = sp->goahead = false; if ( ! name ) { name = _PDCLIB_TZDEFAULT; if ( ! name ) { return _PDCLIB_EINVAL; } } if ( name[ 0 ] == ':' ) { ++name; } doaccess = name[ 0 ] == '/'; if ( ! doaccess ) { char const * dot; size_t namelen = strlen( name ); if ( sizeof lsp->fullname - sizeof tzdirslash <= namelen ) { return _PDCLIB_ENAMETOOLONG; } /* Create a string "TZDIR/NAME". Using sprintf here would pull in stdio (and would fail if the resulting string length exceeded INT_MAX!). */ memcpy( lsp->fullname, tzdirslash, sizeof tzdirslash ); strcpy( lsp->fullname + sizeof tzdirslash, name ); /* Set doaccess if NAME contains a ".." file name component, as such a name could read a file outside the TZDIR virtual subtree. */ for ( dot = name; ( dot = strchr( dot, '.' ) ); ++dot ) { if ( ( dot == name || dot[ -1 ] == '/' ) && dot[ 1 ] == '.' && ( dot[ 2 ] == '/' || ! dot[ 2 ] ) ) { doaccess = true; break; } } name = lsp->fullname; } fid = fopen( name, "rb" ); if ( fid == NULL ) { return errno; } nread = fread( up->buf, 1, sizeof up->buf, fid ); if ( nread < tzheadsize ) { int err = errno; if ( ! ferror( fid ) ) { err = _PDCLIB_EINVAL; } fclose( fid ); return err; } if ( fclose( fid ) == EOF ) { return errno; } for ( stored = 4; stored <= 8; stored *= 2 ) { int_fast32_t ttisstdcnt = detzcode( up->tzhead.tzh_ttisstdcnt ); int_fast32_t ttisutcnt = detzcode( up->tzhead.tzh_ttisutcnt ); int_fast64_t prevtr = 0; int_fast32_t prevcorr = 0; int_fast32_t leapcnt = detzcode( up->tzhead.tzh_leapcnt ); int_fast32_t timecnt = detzcode( up->tzhead.tzh_timecnt ); int_fast32_t typecnt = detzcode( up->tzhead.tzh_typecnt ); int_fast32_t charcnt = detzcode( up->tzhead.tzh_charcnt ); char const *p = up->buf + tzheadsize; /* Although tzfile(5) currently requires typecnt to be nonzero, support future formats that may allow zero typecnt in files that have a TZ string and no transitions. */ if ( ! ( 0 <= leapcnt && leapcnt < TZ_MAX_LEAPS && 0 <= typecnt && typecnt < TZ_MAX_TYPES && 0 <= timecnt && timecnt < TZ_MAX_TIMES && 0 <= charcnt && charcnt < TZ_MAX_CHARS && ( ttisstdcnt == typecnt || ttisstdcnt == 0 ) && ( ttisutcnt == typecnt || ttisutcnt == 0 ) ) ) { return _PDCLIB_EINVAL; } if ( nread < ( tzheadsize /* struct tzhead */ + timecnt * stored /* ats */ + timecnt /* types */ + typecnt * 6 /* ttinfos */ + charcnt /* chars */ + leapcnt * ( stored + 4 ) /* lsinfos */ + ttisstdcnt /* ttisstds */ + ttisutcnt ) ) /* ttisuts */ { return _PDCLIB_EINVAL; } sp->leapcnt = leapcnt; sp->timecnt = timecnt; sp->typecnt = typecnt; sp->charcnt = charcnt; /* Read transitions, discarding those out of time_t range. But pretend the last transition before _PDCLIB_TIME_MIN occurred at _PDCLIB_TIME_MIN. */ timecnt = 0; for ( i = 0; i < sp->timecnt; ++i ) { int_fast64_t at = stored == 4 ? detzcode( p ) : detzcode64( p ); sp->types[ i ] = at <= _PDCLIB_TIME_MAX; if ( sp->types[ i ] ) { time_t attime = ( ( _PDCLIB_TYPE_SIGNED( time_t ) ? at < _PDCLIB_TIME_MIN : at < 0 ) ? _PDCLIB_TIME_MIN : at ); if ( timecnt && attime <= sp->ats[ timecnt - 1 ] ) { if ( attime < sp->ats[ timecnt - 1 ] ) { return _PDCLIB_EINVAL; } sp->types[ i - 1 ] = 0; timecnt--; } sp->ats[ timecnt++ ] = attime; } p += stored; } timecnt = 0; for ( i = 0; i < sp->timecnt; ++i ) { unsigned char typ = *p++; if ( sp->typecnt <= typ ) { return _PDCLIB_EINVAL; } if ( sp->types[ i ] ) { sp->types[ timecnt++ ] = typ; } } sp->timecnt = timecnt; for ( i = 0; i < sp->typecnt; ++i ) { struct ttinfo * ttisp; unsigned char isdst, desigidx; ttisp = &sp->ttis[ i ]; ttisp->utoff = detzcode( p ); p += 4; isdst = *p++; if ( ! ( isdst < 2 ) ) { return _PDCLIB_EINVAL; } ttisp->isdst = isdst; desigidx = *p++; if ( ! ( desigidx < sp->charcnt ) ) { return _PDCLIB_EINVAL; } ttisp->desigidx = desigidx; } for ( i = 0; i < sp->charcnt; ++i ) { sp->chars[ i ] = *p++; } sp->chars[ i ] = '\0'; /* ensure '\0' at end */ /* Read leap seconds, discarding those out of time_t range. */ leapcnt = 0; for ( i = 0; i < sp->leapcnt; ++i ) { int_fast64_t tr = stored == 4 ? detzcode( p ) : detzcode64( p ); int_fast32_t corr = detzcode( p + stored ); p += stored + 4; /* Leap seconds cannot occur before the Epoch. */ if ( tr < 0 ) { return _PDCLIB_EINVAL; } if ( tr <= _PDCLIB_TIME_MAX ) { /* Leap seconds cannot occur more than once per UTC month, and UTC months are at least 28 days long (minus 1 second for a negative leap second). Each leap second's correction must differ from the previous one's by 1 second. */ if ( tr - prevtr < 28 * SECSPERDAY - 1 || ( corr != prevcorr - 1 && corr != prevcorr + 1 ) ) { return _PDCLIB_EINVAL; } sp->lsis[ leapcnt ].trans = prevtr = tr; sp->lsis[ leapcnt ].corr = prevcorr = corr; ++leapcnt; } } sp->leapcnt = leapcnt; for ( i = 0; i < sp->typecnt; ++i ) { struct ttinfo * ttisp; ttisp = &sp->ttis[ i ]; if ( ttisstdcnt == 0 ) { ttisp->ttisstd = false; } else { if ( *p != true && *p != false ) { return _PDCLIB_EINVAL; } ttisp->ttisstd = *p++; } } for ( i = 0; i < sp->typecnt; ++i ) { struct ttinfo * ttisp; ttisp = &sp->ttis[ i ]; if ( ttisutcnt == 0 ) { ttisp->ttisut = false; } else { if ( *p != true && *p != false ) { return _PDCLIB_EINVAL; } ttisp->ttisut = *p++; } } /* If this is an old file, we're done. */ if ( up->tzhead.tzh_version[ 0 ] == '\0' ) { break; } nread -= p - up->buf; memmove( up->buf, p, nread ); } if ( doextend && nread > 2 && up->buf[ 0 ] == '\n' && up->buf[ nread - 1 ] == '\n' && sp->typecnt + 2 <= TZ_MAX_TYPES ) { struct state *ts = &lsp->u.st; up->buf[ nread - 1 ] = '\0'; if ( _PDCLIB_tzparse( &up->buf[ 1 ], ts, false ) ) { /* Attempt to reuse existing abbreviations. Without this, America/Anchorage would be right on the edge after 2037 when TZ_MAX_CHARS is 50, as sp->charcnt equals 40 (for LMT AST AWT APT AHST AHDT YST AKDT AKST) and ts->charcnt equals 10 (for AKST AKDT). Reusing means sp->charcnt can stay 40 in this example. */ int gotabbr = 0; int charcnt = sp->charcnt; for ( i = 0; i < ts->typecnt; ++i ) { char * tsabbr = ts->chars + ts->ttis[ i ].desigidx; int j; for ( j = 0; j < charcnt; ++j ) { if ( strcmp( sp->chars + j, tsabbr ) == 0 ) { ts->ttis[ i ].desigidx = j; ++gotabbr; break; } } if ( ! ( j < charcnt ) ) { int tsabbrlen = strlen( tsabbr ); if ( j + tsabbrlen < TZ_MAX_CHARS ) { strcpy( sp->chars + j, tsabbr ); charcnt = j + tsabbrlen + 1; ts->ttis[ i ].desigidx = j; ++gotabbr; } } } if ( gotabbr == ts->typecnt ) { sp->charcnt = charcnt; /* Ignore any trailing, no-op transitions generated by zic as they don't help here and can run afoul of bugs in zic 2016j or earlier. */ while ( 1 < sp->timecnt && ( sp->types[ sp->timecnt - 1 ] == sp->types[ sp->timecnt - 2 ] ) ) { sp->timecnt--; } for ( i = 0; i < ts->timecnt; ++i ) { if ( sp->timecnt == 0 || ( sp->ats[ sp->timecnt - 1 ] < ts->ats[ i ] + leapcorr( sp, ts->ats[ i ] ) ) ) { break; } } while ( i < ts->timecnt && sp->timecnt < TZ_MAX_TIMES ) { sp->ats[ sp->timecnt ] = ts->ats[ i ] + leapcorr( sp, ts->ats[ i ] ); sp->types[ sp->timecnt ] = ( sp->typecnt + ts->types[ i ] ); sp->timecnt++; ++i; } for ( i = 0; i < ts->typecnt; ++i ) { sp->ttis[ sp->typecnt++ ] = ts->ttis[ i ]; } } } } if ( sp->typecnt == 0 ) { return _PDCLIB_EINVAL; } if ( sp->timecnt > 1 ) { for ( i = 1; i < sp->timecnt; ++i ) { if ( typesequiv( sp, sp->types[ i ], sp->types[ 0 ] ) && differ_by_repeat( sp->ats[ i ], sp->ats[ 0 ] ) ) { sp->goback = true; break; } } for ( i = sp->timecnt - 2; i >= 0; --i ) { if ( typesequiv( sp, sp->types[ sp->timecnt - 1 ], sp->types[ i ] ) && differ_by_repeat( sp->ats[ sp->timecnt - 1 ], sp->ats[ i ] ) ) { sp->goahead = true; break; } } } /* Infer sp->defaulttype from the data. Although this default type is always zero for data from recent tzdb releases, things are trickier for data from tzdb 2018e or earlier. The first set of heuristics work around bugs in 32-bit data generated by tzdb 2013c or earlier. The workaround is for zones like Australia/Macquarie where timestamps before the first transition have a time type that is not the earliest standard-time type. See: https://mm.icann.org/pipermail/tz/2013-May/019368.html */ /* If type 0 is unused in transitions, it's the type to use for early times. */ for ( i = 0; i < sp->timecnt; ++i ) { if ( sp->types[ i ] == 0 ) { break; } } i = i < sp->timecnt ? -1 : 0; /* Absent the above, if there are transition times and the first transition is to a daylight time find the standard type less than and closest to the type of the first transition. */ if ( i < 0 && sp->timecnt > 0 && sp->ttis[ sp->types[ 0 ] ].isdst ) { i = sp->types[ 0 ]; while ( --i >= 0 ) { if ( ! sp->ttis[ i ].isdst ) { break; } } } /* The next heuristics are for data generated by tzdb 2018e or earlier, for zones like EST5EDT where the first transition is to DST. */ /* If no result yet, find the first standard type. If there is none, punt to type zero. */ if ( i < 0 ) { i = 0; while ( sp->ttis[ i ].isdst ) { if ( ++i >= sp->typecnt ) { i = 0; break; } } } /* A simple 'sp->defaulttype = 0;' would suffice here if we didn't have to worry about 2018e-or-earlier data. Even simpler would be to remove the defaulttype member and just use 0 in its place. */ sp->defaulttype = i; return 0; } /* Load tz data from the file named NAME into *SP. Read extended format if DOEXTEND. Return 0 on success, an errno value on failure. */ int _PDCLIB_tzload( char const * name, struct state * sp, bool doextend ) { union local_storage ls; return tzloadbody( name, sp, doextend, &ls ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/0000755000175000001440000000000014677003524022553 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/string/strncat.c0000644000175000001440000000236214676735310024404 0ustar mhxusers/* strncat( char *, const char *, size_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST char * strncat( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2, size_t n ) { char * rc = s1; while ( *s1 ) { ++s1; } while ( n && ( *s1++ = *s2++ ) ) { --n; } if ( n == 0 ) { *s1 = '\0'; } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char s[] = "xx\0xxxxxx"; TESTCASE( strncat( s, abcde, 10 ) == s ); TESTCASE( s[2] == 'a' ); TESTCASE( s[6] == 'e' ); TESTCASE( s[7] == '\0' ); TESTCASE( s[8] == 'x' ); s[0] = '\0'; TESTCASE( strncat( s, abcdx, 10 ) == s ); TESTCASE( s[4] == 'x' ); TESTCASE( s[5] == '\0' ); TESTCASE( strncat( s, "\0", 10 ) == s ); TESTCASE( s[5] == '\0' ); TESTCASE( s[6] == 'e' ); TESTCASE( strncat( s, abcde, 0 ) == s ); TESTCASE( s[5] == '\0' ); TESTCASE( s[6] == 'e' ); TESTCASE( strncat( s, abcde, 3 ) == s ); TESTCASE( s[5] == 'a' ); TESTCASE( s[7] == 'c' ); TESTCASE( s[8] == '\0' ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strtok.c0000644000175000001440000000264314676735310024256 0ustar mhxusers/* strtok( char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #define __STDC_WANT_LIB_EXT1__ 1 #endif #include #ifndef REGTEST char * strtok( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2 ) { static char * tmp = NULL; static rsize_t max; if ( s1 != NULL ) { /* new string */ tmp = s1; max = strlen( tmp ); } return _PDCLIB_strtok( s1, &max, s2, &tmp ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char s[] = "_a_bc__d_"; TESTCASE( strtok( s, "_" ) == &s[1] ); TESTCASE( s[1] == 'a' ); TESTCASE( s[2] == '\0' ); TESTCASE( strtok( NULL, "_" ) == &s[3] ); TESTCASE( s[3] == 'b' ); TESTCASE( s[4] == 'c' ); TESTCASE( s[5] == '\0' ); TESTCASE( strtok( NULL, "_" ) == &s[7] ); TESTCASE( s[6] == '_' ); TESTCASE( s[7] == 'd' ); TESTCASE( s[8] == '\0' ); TESTCASE( strtok( NULL, "_" ) == NULL ); strcpy( s, "ab_cd" ); TESTCASE( strtok( s, "_" ) == &s[0] ); TESTCASE( s[0] == 'a' ); TESTCASE( s[1] == 'b' ); TESTCASE( s[2] == '\0' ); TESTCASE( strtok( NULL, "_" ) == &s[3] ); TESTCASE( s[3] == 'c' ); TESTCASE( s[4] == 'd' ); TESTCASE( s[5] == '\0' ); TESTCASE( strtok( NULL, "_" ) == NULL ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strrchr.c0000644000175000001440000000145114676735310024413 0ustar mhxusers/* strrchr( const char *, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST char * strrchr( const char * s, int c ) { size_t i = 0; while ( s[i++] ) { /* EMPTY */ } do { if ( s[--i] == ( char ) c ) { return ( char * ) s + i; } } while ( i ); return NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char abccd[] = "abccd"; TESTCASE( strrchr( abcde, '\0' ) == &abcde[5] ); TESTCASE( strrchr( abcde, 'e' ) == &abcde[4] ); TESTCASE( strrchr( abcde, 'a' ) == &abcde[0] ); TESTCASE( strrchr( abccd, 'c' ) == &abccd[3] ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/memset_s.c0000644000175000001440000000303314676735310024536 0ustar mhxusers/* memset_s( void *, rsize_t, int, rsize_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST errno_t memset_s( void * s, rsize_t smax, int c, rsize_t n ) { unsigned char * p = ( unsigned char * ) s; if ( s == NULL || smax > RSIZE_MAX || n > RSIZE_MAX || n > smax ) { if ( s != NULL && smax <= RSIZE_MAX ) { memset( s, c, smax ); } _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } while ( n-- ) { *p++ = ( unsigned char ) c; } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) char s[] = "xxxxxxxxx"; set_constraint_handler_s( test_handler ); TESTCASE( memset_s( s, 10, 'o', 10 ) == 0 ); TESTCASE( s[9] == 'o' ); TESTCASE( memset_s( s, 10, '_', ( 0 ) ) == 0 ); TESTCASE( s[0] == 'o' ); TESTCASE( memset_s( s, 10, '_', 1 ) == 0 ); TESTCASE( s[0] == '_' ); TESTCASE( s[1] == 'o' ); TESTCASE( HANDLER_CALLS == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strerror.c0000644000175000001440000000127114676735310024606 0ustar mhxusers/* strerror( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include /* TODO: Doing this via a static array is not the way to do it. */ char * strerror( int errnum ) { if ( errnum >= _PDCLIB_ERRNO_MAX || errnum < 0 ) { return _PDCLIB_EUNKNOWN_TEXT; } else { return _PDCLIB_lc_messages->errno_texts[errnum]; } } #endif #ifdef TEST #include "_PDCLIB_test.h" #include #include int main( void ) { TESTCASE( strerror( ERANGE ) != strerror( EDOM ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/memmove_s.c0000644000175000001440000000341714676735310024717 0ustar mhxusers/* memmove_s( void *, rsize_t, const void *, rsize_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST errno_t memmove_s( void * s1, rsize_t s1max, const void * s2, rsize_t n ) { char * dest = ( char * ) s1; const char * src = ( const char * ) s2; if ( s1 == NULL || s2 == NULL || s1max > RSIZE_MAX || n > RSIZE_MAX || n > s1max ) { if ( s1 != NULL && s1max <= RSIZE_MAX ) { memset( s1, 0, s1max ); } _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } while ( n ) { if ( dest == s2 || src == s1 ) { src += n; dest += n; while ( n-- ) { *--dest = *--src; } return 0; } *dest++ = *src++; --n; } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) char s[] = "xxxxabcde"; set_constraint_handler_s( test_handler ); TESTCASE( memmove_s( s, 10, s + 4, 5 ) == 0 ); TESTCASE( s[0] == 'a' ); TESTCASE( s[4] == 'e' ); TESTCASE( s[5] == 'b' ); TESTCASE( memmove_s( s + 4, 6, s, 5 ) == 0 ); TESTCASE( s[4] == 'a' ); TESTCASE( HANDLER_CALLS == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strchr.c0000644000175000001440000000140314676735310024226 0ustar mhxusers/* strchr( const char *, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST char * strchr( const char * s, int c ) { do { if ( *s == ( char ) c ) { return ( char * ) s; } } while ( *s++ ); return NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char abccd[] = "abccd"; TESTCASE( strchr( abccd, 'x' ) == NULL ); TESTCASE( strchr( abccd, 'a' ) == &abccd[0] ); TESTCASE( strchr( abccd, 'd' ) == &abccd[4] ); TESTCASE( strchr( abccd, '\0' ) == &abccd[5] ); TESTCASE( strchr( abccd, 'c' ) == &abccd[2] ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strcpy_s.c0000644000175000001440000000364614676735310024602 0ustar mhxusers/* strcpy_s( char *, rsize_t, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST errno_t strcpy_s( char * _PDCLIB_restrict s1, rsize_t s1max, const char * _PDCLIB_restrict s2 ) { char * dest = s1; const char * src = s2; if ( s1 != NULL && s2 != NULL && s1max <= RSIZE_MAX && s1max != 0 ) { while ( s1max-- ) { if ( dest == s2 || src == s1 ) { goto runtime_constraint_violation; } if ( ( *dest++ = *src++ ) == '\0' ) { return 0; } } } runtime_constraint_violation: if ( s1 != NULL && s1max > 0 && s1max <= RSIZE_MAX ) { s1[0] = '\0'; } _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } #endif #ifdef TEST #include "_PDCLIB_test.h" #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) char s[] = "xxxxx"; set_constraint_handler_s( test_handler ); TESTCASE( strcpy_s( s, 6, "" ) == 0 ); TESTCASE( s[0] == '\0' ); TESTCASE( s[1] == 'x' ); TESTCASE( strcpy_s( s, 6, abcde ) == 0 ); TESTCASE( s[0] == 'a' ); TESTCASE( s[4] == 'e' ); TESTCASE( s[5] == '\0' ); /* Overrun. */ TESTCASE( strcpy_s( s, 6, "abcdef" ) != 0 ); /* Overlapping. */ TESTCASE( strcpy_s( s, 3, s + 2 ) != 0 ); TESTCASE( strcpy_s( s + 2, 3, s ) != 0 ); TESTCASE( HANDLER_CALLS == 3 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strcpy.c0000644000175000001440000000135314676735310024251 0ustar mhxusers/* strcpy( char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST char * strcpy( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2 ) { char * rc = s1; while ( ( *s1++ = *s2++ ) ) { /* EMPTY */ } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char s[] = "xxxxx"; TESTCASE( strcpy( s, "" ) == s ); TESTCASE( s[0] == '\0' ); TESTCASE( s[1] == 'x' ); TESTCASE( strcpy( s, abcde ) == s ); TESTCASE( s[0] == 'a' ); TESTCASE( s[4] == 'e' ); TESTCASE( s[5] == '\0' ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strcmp.c0000644000175000001440000000155414676735310024240 0ustar mhxusers/* strcmp( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int strcmp( const char * s1, const char * s2 ) { while ( ( *s1 ) && ( *s1 == *s2 ) ) { ++s1; ++s2; } return ( *( unsigned char * )s1 - * ( unsigned char * )s2 ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char cmpabcde[] = "abcde"; char cmpabcd_[] = "abcd\xfc"; char empty[] = ""; TESTCASE( strcmp( abcde, cmpabcde ) == 0 ); TESTCASE( strcmp( abcde, abcdx ) < 0 ); TESTCASE( strcmp( abcdx, abcde ) > 0 ); TESTCASE( strcmp( empty, abcde ) < 0 ); TESTCASE( strcmp( abcde, empty ) > 0 ); TESTCASE( strcmp( abcde, cmpabcd_ ) < 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strcat_s.c0000644000175000001440000000451114676735310024546 0ustar mhxusers/* strcat_s( char *, rsize_t, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST errno_t strcat_s( char * _PDCLIB_restrict s1, rsize_t s1max, const char * _PDCLIB_restrict s2 ) { char * dest = s1; const char * src = s2; if ( s1 != NULL && s2 != NULL && s1max <= RSIZE_MAX && s1max != 0 ) { while ( *dest ) { if ( s1max-- == 0 || dest++ == s2 ) { goto runtime_constraint_violation; } } do { if ( s1max-- == 0 || dest == s2 || src == s1 ) { goto runtime_constraint_violation; } } while ( ( *dest++ = *src++ ) ); return 0; } runtime_constraint_violation: if ( s1 != NULL && s1max > 0 && s1max <= RSIZE_MAX ) { s1[0] = '\0'; } _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } #endif #ifdef TEST #include "_PDCLIB_test.h" #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) char s[] = "xx\0xxxxxx"; set_constraint_handler_s( test_handler ); TESTCASE( strcat_s( s, 10, abcde ) == 0 ); TESTCASE( s[2] == 'a' ); TESTCASE( s[6] == 'e' ); TESTCASE( s[7] == '\0' ); TESTCASE( s[8] == 'x' ); s[0] = '\0'; TESTCASE( strcat_s( s, 10, abcdx ) == 0 ); TESTCASE( s[4] == 'x' ); TESTCASE( s[5] == '\0' ); TESTCASE( strcat_s( s, 10, "\0" ) == 0 ); TESTCASE( s[5] == '\0' ); TESTCASE( s[6] == 'e' ); TESTCASE( strcat_s( s, 6, "" ) == 0 ); TESTCASE( strcat_s( s, 5, "" ) != 0 ); TESTCASE( strcat_s( s, 7, "x" ) == 0 ); TESTCASE( s[5] == 'x' ); TESTCASE( s[6] == '\0' ); /* Overlapping */ TESTCASE( strcat_s( s, 7, s + 6 ) != 0 ); s[3] = '\0'; TESTCASE( strcat_s( s + 3, 4, s ) != 0 ); TESTCASE( HANDLER_CALLS == 3 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strstr.c0000644000175000001440000000174214676735310024270 0ustar mhxusers/* strstr( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST char * strstr( const char * s1, const char * s2 ) { const char * p1 = s1; const char * p2; while ( *s1 ) { p2 = s2; while ( *p2 && ( *p1 == *p2 ) ) { ++p1; ++p2; } if ( ! *p2 ) { return ( char * ) s1; } ++s1; p1 = s1; } return NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char s[] = "abcabcabcdabcde"; TESTCASE( strstr( s, "x" ) == NULL ); TESTCASE( strstr( s, "xyz" ) == NULL ); TESTCASE( strstr( s, "a" ) == &s[0] ); TESTCASE( strstr( s, "abc" ) == &s[0] ); TESTCASE( strstr( s, "abcd" ) == &s[6] ); TESTCASE( strstr( s, "abcde" ) == &s[10] ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strncpy.c0000644000175000001440000000247014676735310024430 0ustar mhxusers/* strncpy( char *, const char *, size_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST char * strncpy( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2, size_t n ) { char * rc = s1; while ( n && ( *s1++ = *s2++ ) ) { /* Cannot do "n--" in the conditional as size_t is unsigned and we have to check it again for >0 in the next loop below, so we must not risk underflow. */ --n; } /* Checking against 1 as we missed the last --n in the loop above. */ while ( n-- > 1 ) { *s1++ = '\0'; } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char s[] = "xxxxxxx"; TESTCASE( strncpy( s, "", 1 ) == s ); TESTCASE( s[0] == '\0' ); TESTCASE( s[1] == 'x' ); TESTCASE( strncpy( s, abcde, 6 ) == s ); TESTCASE( s[0] == 'a' ); TESTCASE( s[4] == 'e' ); TESTCASE( s[5] == '\0' ); TESTCASE( s[6] == 'x' ); TESTCASE( strncpy( s, abcde, 7 ) == s ); TESTCASE( s[6] == '\0' ); TESTCASE( strncpy( s, "xxxx", 3 ) == s ); TESTCASE( s[0] == 'x' ); TESTCASE( s[2] == 'x' ); TESTCASE( s[3] == 'd' ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/memchr.c0000644000175000001440000000152214676735310024176 0ustar mhxusers/* memchr( const void *, int, size_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST void * memchr( const void * s, int c, size_t n ) { const unsigned char * p = ( const unsigned char * ) s; while ( n-- ) { if ( *p == ( unsigned char ) c ) { return ( void * ) p; } ++p; } return NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( memchr( abcde, 'c', 5 ) == &abcde[2] ); TESTCASE( memchr( abcde, 'a', 1 ) == &abcde[0] ); TESTCASE( memchr( abcde, 'a', 0 ) == NULL ); TESTCASE( memchr( abcde, '\0', 5 ) == NULL ); TESTCASE( memchr( abcde, '\0', 6 ) == &abcde[5] ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strspn.c0000644000175000001440000000151214676735310024253 0ustar mhxusers/* strspn( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST size_t strspn( const char * s1, const char * s2 ) { size_t len = 0; const char * p; while ( s1[ len ] ) { p = s2; while ( *p ) { if ( s1[len] == *p ) { break; } ++p; } if ( ! *p ) { return len; } ++len; } return len; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( strspn( abcde, "abc" ) == 3 ); TESTCASE( strspn( abcde, "b" ) == 0 ); TESTCASE( strspn( abcde, abcde ) == 5 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/memset.c0000644000175000001440000000137414676735310024222 0ustar mhxusers/* memset( void *, int, size_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST void * memset( void * s, int c, size_t n ) { unsigned char * p = ( unsigned char * ) s; while ( n-- ) { *p++ = ( unsigned char ) c; } return s; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char s[] = "xxxxxxxxx"; TESTCASE( memset( s, 'o', 10 ) == s ); TESTCASE( s[9] == 'o' ); TESTCASE( memset( s, '_', ( 0 ) ) == s ); TESTCASE( s[0] == 'o' ); TESTCASE( memset( s, '_', 1 ) == s ); TESTCASE( s[0] == '_' ); TESTCASE( s[1] == 'o' ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strtok_s.c0000644000175000001440000000424614676735310024601 0ustar mhxusers/* strtok_s( char *, rsize_t *, const char *, char ** ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #ifndef REGTEST char * strtok_s( char * _PDCLIB_restrict s1, rsize_t * _PDCLIB_restrict s1max, const char * _PDCLIB_restrict s2, char ** _PDCLIB_restrict ptr ) { return _PDCLIB_strtok( s1, s1max, s2, ptr ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) char s[] = "_a_bc__d_"; char str1[] = "?a???b,,,#c"; char str2[] = "\t \t"; rsize_t max = sizeof( s ); rsize_t max1 = sizeof( str1 ); rsize_t max2 = sizeof( str2 ); char * p; char * ptr1; char * ptr2; TESTCASE( _PDCLIB_strtok( s, &max, "_", &p ) == &s[1] ); TESTCASE( s[1] == 'a' ); TESTCASE( s[2] == '\0' ); TESTCASE( _PDCLIB_strtok( NULL, &max, "_", &p ) == &s[3] ); TESTCASE( s[3] == 'b' ); TESTCASE( s[4] == 'c' ); TESTCASE( s[5] == '\0' ); TESTCASE( _PDCLIB_strtok( NULL, &max, "_", &p ) == &s[7] ); TESTCASE( s[6] == '_' ); TESTCASE( s[7] == 'd' ); TESTCASE( s[8] == '\0' ); TESTCASE( _PDCLIB_strtok( NULL, &max, "_", &p ) == NULL ); strcpy( s, "ab_cd" ); max = strlen( s ); TESTCASE( _PDCLIB_strtok( s, &max, "_", &p ) == &s[0] ); TESTCASE( s[0] == 'a' ); TESTCASE( s[1] == 'b' ); TESTCASE( s[2] == '\0' ); TESTCASE( _PDCLIB_strtok( NULL, &max, "_", &p ) == &s[3] ); TESTCASE( s[3] == 'c' ); TESTCASE( s[4] == 'd' ); TESTCASE( s[5] == '\0' ); TESTCASE( _PDCLIB_strtok( NULL, &max, "_", &p ) == NULL ); TESTCASE( _PDCLIB_strtok( str1, &max1, "?", &ptr1 ) == &str1[1] ); TESTCASE( _PDCLIB_strtok( NULL, &max1, ",", &ptr1 ) == &str1[3] ); TESTCASE( _PDCLIB_strtok( str2, &max2, " \t", &ptr2 ) == NULL ); TESTCASE( _PDCLIB_strtok( NULL, &max1, "#,", &ptr1 ) == &str1[10] ); TESTCASE( _PDCLIB_strtok( NULL, &max1, "?", &ptr1 ) == NULL ); #else /* Most libraries do not implement this function. */ TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strncat_s.c0000644000175000001440000000552714676735310024734 0ustar mhxusers/* strncat_s( char *, rsize_t, const char *, rsize_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST errno_t strncat_s( char * _PDCLIB_restrict s1, rsize_t s1max, const char * _PDCLIB_restrict s2, rsize_t n ) { char * dest = s1; const char * src = s2; if ( s1 != NULL && s2 != NULL && s1max <= RSIZE_MAX && n <= RSIZE_MAX && s1max != 0 ) { while ( *dest ) { if ( --s1max == 0 || dest++ == s2 ) { goto runtime_constraint_violation; } } do { if ( n-- == 0 ) { *dest = '\0'; return 0; } if ( s1max-- == 0 || dest == s2 || src == s1 ) { goto runtime_constraint_violation; } } while ( ( *dest++ = *src++ ) ); return 0; } runtime_constraint_violation: if ( s1 != NULL && s1max > 0 && s1max <= RSIZE_MAX ) { s1[0] = '\0'; } _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } #endif #ifdef TEST #include "_PDCLIB_test.h" #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) char s[] = "xx\0xxxxxx"; set_constraint_handler_s( test_handler ); TESTCASE( strncat_s( s, 10, abcde, 10 ) == 0 ); TESTCASE( s[2] == 'a' ); TESTCASE( s[6] == 'e' ); TESTCASE( s[7] == '\0' ); TESTCASE( s[8] == 'x' ); s[0] = '\0'; TESTCASE( strncat_s( s, 10, abcdx, 10 ) == 0 ); TESTCASE( s[4] == 'x' ); TESTCASE( s[5] == '\0' ); TESTCASE( strncat_s( s, 10, "\0", 10 ) == 0 ); TESTCASE( s[5] == '\0' ); TESTCASE( s[6] == 'e' ); TESTCASE( strncat_s( s, 10, abcde, 0 ) == 0 ); TESTCASE( s[5] == '\0' ); TESTCASE( s[6] == 'e' ); TESTCASE( strncat_s( s, 10, abcde, 3 ) == 0 ); TESTCASE( s[5] == 'a' ); TESTCASE( s[7] == 'c' ); TESTCASE( s[8] == '\0' ); TESTCASE( strncat_s( s, 9, "", 0 ) == 0 ); TESTCASE( strncat_s( s, 8, "", 0 ) != 0 ); TESTCASE( strncat_s( s, 8, "x", 0 ) != 0 ); TESTCASE( strncat_s( s, 9, "x", 0 ) == 0 ); TESTCASE( strncat_s( s, 10, "x", 1 ) == 0 ); TESTCASE( s[8] == 'x' ); TESTCASE( s[9] == '\0' ); /* Overlapping */ TESTCASE( strcat_s( s, 7, s + 6 ) != 0 ); s[3] = '\0'; TESTCASE( strcat_s( s + 3, 4, s ) != 0 ); TESTCASE( HANDLER_CALLS == 4 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/memcmp.c0000644000175000001440000000155314676735310024205 0ustar mhxusers/* memcmp( const void *, const void *, size_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int memcmp( const void * s1, const void * s2, size_t n ) { const unsigned char * p1 = ( const unsigned char * ) s1; const unsigned char * p2 = ( const unsigned char * ) s2; while ( n-- ) { if ( *p1 != *p2 ) { return *p1 - *p2; } ++p1; ++p2; } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { const char xxxxx[] = "xxxxx"; TESTCASE( memcmp( abcde, abcdx, 5 ) < 0 ); TESTCASE( memcmp( abcde, abcdx, 4 ) == 0 ); TESTCASE( memcmp( abcde, xxxxx, 0 ) == 0 ); TESTCASE( memcmp( xxxxx, abcde, 1 ) > 0 ); return 0; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strpbrk.c0000644000175000001440000000204514676735310024413 0ustar mhxusers/* strpbrk( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST char * strpbrk( const char * s1, const char * s2 ) { const char * p1 = s1; const char * p2; while ( *p1 ) { p2 = s2; while ( *p2 ) { if ( *p1 == *p2++ ) { return ( char * ) p1; } } ++p1; } return NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( strpbrk( abcde, "x" ) == NULL ); TESTCASE( strpbrk( abcde, "xyz" ) == NULL ); TESTCASE( strpbrk( abcdx, "x" ) == &abcdx[4] ); TESTCASE( strpbrk( abcdx, "xyz" ) == &abcdx[4] ); TESTCASE( strpbrk( abcdx, "zyx" ) == &abcdx[4] ); TESTCASE( strpbrk( abcde, "a" ) == &abcde[0] ); TESTCASE( strpbrk( abcde, "abc" ) == &abcde[0] ); TESTCASE( strpbrk( abcde, "cba" ) == &abcde[0] ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strcoll.c0000644000175000001440000000136514676735310024412 0ustar mhxusers/* strcoll( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int strcoll( const char * s1, const char * s2 ) { /* FIXME: This should access _PDCLIB_lc_collate. */ return strcmp( s1, s2 ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char cmpabcde[] = "abcde"; char empty[] = ""; TESTCASE( strcmp( abcde, cmpabcde ) == 0 ); TESTCASE( strcmp( abcde, abcdx ) < 0 ); TESTCASE( strcmp( abcdx, abcde ) > 0 ); TESTCASE( strcmp( empty, abcde ) < 0 ); TESTCASE( strcmp( abcde, empty ) > 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strncpy_s.c0000644000175000001440000000434514676735310024755 0ustar mhxusers/* strncpy_s( char *, rsize_t, const char *, rsize_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST errno_t strncpy_s( char * _PDCLIB_restrict s1, rsize_t s1max, const char * _PDCLIB_restrict s2, rsize_t n ) { char * dest = s1; const char * src = s2; if ( s1 != NULL && s2 != NULL && s1max <= RSIZE_MAX && n <= RSIZE_MAX && s1max != 0 ) { while ( s1max-- ) { if ( dest == s2 || src == s1 ) { goto runtime_constraint_violation; } if ( n-- == 0 || ( *dest++ = *src++ ) == '\0' ) { return 0; } } } runtime_constraint_violation: if ( s1 != NULL && s1max > 0 && s1max <= RSIZE_MAX ) { s1[0] = '\0'; } _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } #endif #ifdef TEST #include "_PDCLIB_test.h" #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) char s[] = "xxxxxxx"; set_constraint_handler_s( test_handler ); TESTCASE( strncpy_s( s, 8, "", 1 ) == 0 ); TESTCASE( s[0] == '\0' ); TESTCASE( s[1] == 'x' ); TESTCASE( strncpy_s( s, 8, abcde, 6 ) == 0 ); TESTCASE( s[0] == 'a' ); TESTCASE( s[4] == 'e' ); TESTCASE( s[5] == '\0' ); TESTCASE( s[6] == 'x' ); TESTCASE( strncpy_s( s, 8, abcde, 7 ) == 0 ); /* Different from strncpy()! */ TESTCASE( s[5] == '\0' ); TESTCASE( s[6] == 'x' ); TESTCASE( strncpy_s( s, 8, "xxxx", 3 ) == 0 ); TESTCASE( s[0] == 'x' ); TESTCASE( s[2] == 'x' ); TESTCASE( s[3] == 'd' ); /* Overrun. */ TESTCASE( strncpy_s( s, 8, "abcdefgh", 9 ) != 0 ); TESTCASE( strncpy_s( s, 8, "abcdefgh", 9 ) != 0 ); TESTCASE( HANDLER_CALLS == 2 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strerror_s.c0000644000175000001440000000260514676735310025132 0ustar mhxusers/* strerror_s( char *, rsize_t, errno_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #include #ifndef REGTEST #include errno_t strerror_s( char * s, rsize_t maxsize, errno_t errnum ) { size_t len = strerrorlen_s( errnum ); if ( s == NULL || maxsize > RSIZE_MAX || maxsize == 0 ) { _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } if ( len < maxsize ) { strcpy( s, strerror( errnum ) ); } else { strncpy( s, strerror( errnum ), maxsize - 1 ); if ( maxsize > 3 ) { strcpy( &s[ maxsize - 4 ], "..." ); } else { s[ maxsize - 1 ] = '\0'; } } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include #include int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) char s[14]; TESTCASE( strerror_s( s, 14, _PDCLIB_ERRNO_MAX ) == 0 ); TESTCASE( strcmp( s, "unknown error" ) == 0 ); TESTCASE( strerror_s( s, 13, _PDCLIB_ERRNO_MAX ) == 0 ); TESTCASE( strcmp( s, "unknown e..." ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strcat.c0000644000175000001440000000174414676735310024231 0ustar mhxusers/* strcat( char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST char * strcat( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2 ) { char * rc = s1; if ( *s1 ) { while ( *++s1 ) { /* EMPTY */ } } while ( ( *s1++ = *s2++ ) ) { /* EMPTY */ } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char s[] = "xx\0xxxxxx"; TESTCASE( strcat( s, abcde ) == s ); TESTCASE( s[2] == 'a' ); TESTCASE( s[6] == 'e' ); TESTCASE( s[7] == '\0' ); TESTCASE( s[8] == 'x' ); s[0] = '\0'; TESTCASE( strcat( s, abcdx ) == s ); TESTCASE( s[4] == 'x' ); TESTCASE( s[5] == '\0' ); TESTCASE( strcat( s, "\0" ) == s ); TESTCASE( s[5] == '\0' ); TESTCASE( s[6] == 'e' ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strerrorlen_s.c0000644000175000001440000000071614676735310025632 0ustar mhxusers/* strerrorlen_s( errno_t error ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #ifndef REGTEST size_t strerrorlen_s( errno_t errnum ) { return strlen( strerror( errnum ) ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( NO_TESTDRIVER ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/memcpy_s.c0000644000175000001440000000407514676735310024545 0ustar mhxusers/* memcpy_s( void *, rsize_t, const void *, rsize_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST errno_t memcpy_s( void * _PDCLIB_restrict s1, rsize_t s1max, const void * _PDCLIB_restrict s2, rsize_t n ) { char * dest = ( char * ) s1; const char * src = ( const char * ) s2; if ( s1 != NULL && s2 != NULL && s1max <= RSIZE_MAX && n <= RSIZE_MAX && n <= s1max ) { while ( n-- ) { if ( dest == s2 || src == s1 ) { goto runtime_constraint_violation; } *dest++ = *src++; } return 0; } runtime_constraint_violation: if ( s1 != NULL && s1max <= RSIZE_MAX ) { memset( s1, 0, s1max ); } _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } #endif #ifdef TEST #include "_PDCLIB_test.h" #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) char s[] = "xxxxxxxxxxx"; set_constraint_handler_s( test_handler ); TESTCASE( memcpy_s( s, 11, abcde, 6 ) == 0 ); TESTCASE( s[4] == 'e' ); TESTCASE( s[5] == '\0' ); TESTCASE( memcpy_s( s + 5, 6, abcde, 5 ) == 0 ); TESTCASE( s[9] == 'e' ); TESTCASE( s[10] == 'x' ); s[5] = 'x'; TESTCASE( memcpy_s( s, 5, abcde, 6 ) != 0 ); TESTCASE( memcmp( s, "\0\0\0\0\0x", 6 ) == 0 ); TESTCASE( memcpy_s( s, 3, s + 2, 3 ) != 0 ); TESTCASE( memcpy_s( s + 2, 3, s, 3 ) != 0 ); /* Overlapping */ TESTCASE( memcpy_s( s, 4, s + 3, 4 ) != 0 ); TESTCASE( memcpy_s( s + 3, 4, s, 4 ) != 0 ); TESTCASE( HANDLER_CALLS == 5 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strxfrm.c0000644000175000001440000000227114676735310024432 0ustar mhxusers/* strxfrm( char *, const char *, size_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include size_t strxfrm( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2, size_t n ) { size_t len = strlen( s2 ); if ( len < n ) { /* Cannot use strncpy() here as the filling of s1 with '\0' is not part of the spec. */ /* FIXME: This should access _PDCLIB_lc_collate. */ while ( n-- && ( *s1++ = ( unsigned char )*s2++ ) ) { /* EMPTY */ } } return len; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char s[] = "xxxxxxxxxxx"; TESTCASE( strxfrm( NULL, "123456789012", 0 ) == 12 ); TESTCASE( strxfrm( s, "123456789012", 12 ) == 12 ); /* The following test case is true in *this* implementation, but doesn't have to. TESTCASE( s[0] == 'x' ); */ TESTCASE( strxfrm( s, "1234567890", 11 ) == 10 ); TESTCASE( s[0] == '1' ); TESTCASE( s[9] == '0' ); TESTCASE( s[10] == '\0' ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strncmp.c0000644000175000001440000000230714676735310024413 0ustar mhxusers/* strncmp( const char *, const char *, size_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int strncmp( const char * s1, const char * s2, size_t n ) { while ( n && *s1 && ( *s1 == *s2 ) ) { ++s1; ++s2; --n; } if ( n == 0 ) { return 0; } else { return ( *( unsigned char * )s1 - * ( unsigned char * )s2 ); } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char cmpabcde[] = "abcde\0f"; char cmpabcd_[] = "abcde\xfc"; char empty[] = ""; char x[] = "x"; TESTCASE( strncmp( abcde, cmpabcde, 5 ) == 0 ); TESTCASE( strncmp( abcde, cmpabcde, 10 ) == 0 ); TESTCASE( strncmp( abcde, abcdx, 5 ) < 0 ); TESTCASE( strncmp( abcdx, abcde, 5 ) > 0 ); TESTCASE( strncmp( empty, abcde, 5 ) < 0 ); TESTCASE( strncmp( abcde, empty, 5 ) > 0 ); TESTCASE( strncmp( abcde, abcdx, 4 ) == 0 ); TESTCASE( strncmp( abcde, x, 0 ) == 0 ); TESTCASE( strncmp( abcde, x, 1 ) < 0 ); TESTCASE( strncmp( abcde, cmpabcd_, 10 ) < 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strlen.c0000644000175000001440000000076114676735310024236 0ustar mhxusers/* strlen( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST size_t strlen( const char * s ) { size_t rc = 0; while ( s[rc] ) { ++rc; } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( strlen( abcde ) == 5 ); TESTCASE( strlen( "" ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/strcspn.c0000644000175000001440000000202114676735310024412 0ustar mhxusers/* strcspn( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST size_t strcspn( const char * s1, const char * s2 ) { size_t len = 0; const char * p; while ( s1[len] ) { p = s2; while ( *p ) { if ( s1[len] == *p++ ) { return len; } } ++len; } return len; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( strcspn( abcde, "x" ) == 5 ); TESTCASE( strcspn( abcde, "xyz" ) == 5 ); TESTCASE( strcspn( abcde, "zyx" ) == 5 ); TESTCASE( strcspn( abcdx, "x" ) == 4 ); TESTCASE( strcspn( abcdx, "xyz" ) == 4 ); TESTCASE( strcspn( abcdx, "zyx" ) == 4 ); TESTCASE( strcspn( abcde, "a" ) == 0 ); TESTCASE( strcspn( abcde, "abc" ) == 0 ); TESTCASE( strcspn( abcde, "cba" ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/memcpy.c0000644000175000001440000000145014676735310024215 0ustar mhxusers/* memcpy( void *, const void *, size_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST void * memcpy( void * _PDCLIB_restrict s1, const void * _PDCLIB_restrict s2, size_t n ) { char * dest = ( char * ) s1; const char * src = ( const char * ) s2; while ( n-- ) { *dest++ = *src++; } return s1; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char s[] = "xxxxxxxxxxx"; TESTCASE( memcpy( s, abcde, 6 ) == s ); TESTCASE( s[4] == 'e' ); TESTCASE( s[5] == '\0' ); TESTCASE( memcpy( s + 5, abcde, 5 ) == s + 5 ); TESTCASE( s[9] == 'e' ); TESTCASE( s[10] == 'x' ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/string/memmove.c0000644000175000001440000000167014676735310024374 0ustar mhxusers/* memmove( void *, const void *, size_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST void * memmove( void * s1, const void * s2, size_t n ) { char * dest = ( char * ) s1; const char * src = ( const char * ) s2; if ( dest <= src ) { while ( n-- ) { *dest++ = *src++; } } else { src += n; dest += n; while ( n-- ) { *--dest = *--src; } } return s1; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { char s[] = "xxxxabcde"; TESTCASE( memmove( s, s + 4, 5 ) == s ); TESTCASE( s[0] == 'a' ); TESTCASE( s[4] == 'e' ); TESTCASE( s[5] == 'b' ); TESTCASE( memmove( s + 4, s, 5 ) == s + 4 ); TESTCASE( s[4] == 'a' ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/0000755000175000001440000000000014677003524022367 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/stdio/puts.c0000644000175000001440000000323214676735310023532 0ustar mhxusers/* puts( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include #endif int puts( const char * s ) { _PDCLIB_LOCK( stdout->mtx ); if ( _PDCLIB_prepwrite( stdout ) == EOF ) { _PDCLIB_UNLOCK( stdout->mtx ); return EOF; } while ( *s != '\0' ) { stdout->buffer[ stdout->bufidx++ ] = *s++; if ( stdout->bufidx == stdout->bufsize ) { if ( _PDCLIB_flushbuffer( stdout ) == EOF ) { _PDCLIB_UNLOCK( stdout->mtx ); return EOF; } } } stdout->buffer[ stdout->bufidx++ ] = '\n'; if ( ( stdout->bufidx == stdout->bufsize ) || ( stdout->status & ( _IOLBF | _IONBF ) ) ) { int rc = _PDCLIB_flushbuffer( stdout ); _PDCLIB_UNLOCK( stdout->mtx ); return rc; } else { _PDCLIB_UNLOCK( stdout->mtx ); return 0; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { FILE * fh; const char * message = "SUCCESS testing puts()"; char buffer[23]; buffer[22] = 'x'; TESTCASE( ( fh = freopen( testfile, "wb+", stdout ) ) != NULL ); TESTCASE( puts( message ) >= 0 ); rewind( fh ); TESTCASE( fread( buffer, 1, 22, fh ) == 22 ); TESTCASE( memcmp( buffer, message, 22 ) == 0 ); TESTCASE( buffer[22] == 'x' ); TESTCASE( fclose( fh ) == 0 ); TESTCASE( remove( testfile ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fwrite.c0000644000175000001440000000634114676735310024043 0ustar mhxusers/* fwrite( const void *, size_t, size_t, FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include #endif size_t fwrite( const void * _PDCLIB_restrict ptr, size_t size, size_t nmemb, struct _PDCLIB_file_t * _PDCLIB_restrict stream ) { _PDCLIB_size_t offset = 0; /* TODO: lineend */ /* int lineend = 0; */ size_t nmemb_i; _PDCLIB_LOCK( stream->mtx ); if ( _PDCLIB_prepwrite( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return 0; } for ( nmemb_i = 0; nmemb_i < nmemb; ++nmemb_i ) { size_t size_i; for ( size_i = 0; size_i < size; ++size_i ) { if ( ( stream->buffer[ stream->bufidx++ ] = ( ( char * )ptr )[ nmemb_i * size + size_i ] ) == '\n' ) { /* Remember last newline, in case we have to do a partial line-buffered flush */ offset = stream->bufidx; /* lineend = true; */ } if ( stream->bufidx == stream->bufsize ) { if ( _PDCLIB_flushbuffer( stream ) == EOF ) { /* Returning number of objects completely buffered */ _PDCLIB_UNLOCK( stream->mtx ); return nmemb_i; } offset = 0; /* lineend = false; */ } } } /* Fully-buffered streams are OK. Non-buffered streams must be flushed, line-buffered streams only if there's a newline in the buffer. */ switch ( stream->status & ( _IONBF | _IOLBF ) ) { case _IONBF: if ( _PDCLIB_flushbuffer( stream ) == EOF ) { /* We are in a pinch here. We have an error, which requires a return value < nmemb. On the other hand, all objects have been written to buffer, which means all the caller had to do was removing the error cause, and re-flush the stream... Catch 22. We'll return a value one short, to indicate the error, and can't really do anything about the inconsistency. */ _PDCLIB_UNLOCK( stream->mtx ); return nmemb_i - 1; } break; case _IOLBF: if ( offset > 0 ) { size_t bufidx = stream->bufidx; stream->bufidx = offset; if ( _PDCLIB_flushbuffer( stream ) == EOF ) { /* See comment above. */ stream->bufidx = bufidx; _PDCLIB_UNLOCK( stream->mtx ); return nmemb_i - 1; } stream->bufidx = bufidx - offset; memmove( stream->buffer, stream->buffer + offset, stream->bufidx ); } } _PDCLIB_UNLOCK( stream->mtx ); return nmemb_i; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by fread(). */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/setvbuf.c0000644000175000001440000001046214676735310024220 0ustar mhxusers/* setvbuf( FILE *, char *, int, size_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #ifndef REGTEST #ifndef __STDC_NO_THREADS__ #include #endif int setvbuf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf, int mode, size_t size ) { switch ( mode ) { case _IONBF: /* When unbuffered I/O is requested, we keep the buffer anyway, as we don't want to e.g. flush the stream for every character of a stream being printed. */ _PDCLIB_LOCK( stream->mtx ); break; case _IOFBF: case _IOLBF: if ( size > INT_MAX || size == 0 ) { /* PDCLib only supports buffers up to INT_MAX in size. A size of zero doesn't make sense. */ return -1; } if ( buf != NULL ) { /* User provided buffer. Deallocate existing buffer, and mark the stream so that fclose() does not try to deallocate the user's buffer. */ if ( stream->status & _PDCLIB_FREEBUFFER ) { free( stream->buffer ); } stream->status &= ~_PDCLIB_FREEBUFFER; } else { /* User requested buffer size, but leaves it to library to allocate the buffer. */ /* If current buffer is big enough for requested size, but not over twice as big (and wasting memory space), we use the current buffer (i.e., do nothing), to save the malloc() / free() overhead. */ _PDCLIB_LOCK( stream->mtx ); if ( ( stream->bufsize < size ) || ( stream->bufsize > ( size << 1 ) ) ) { /* Buffer too small, or much too large - allocate. */ if ( ( buf = ( char * ) malloc( size ) ) == NULL ) { /* Out of memory error. */ _PDCLIB_UNLOCK( stream->mtx ); return -1; } if ( stream->status & _PDCLIB_FREEBUFFER ) { free( stream->buffer ); } /* This buffer must be free()d on fclose() */ stream->status |= _PDCLIB_FREEBUFFER; } } stream->buffer = buf; stream->bufsize = size; break; default: /* If mode is something else than _IOFBF, _IOLBF or _IONBF -> exit */ return -1; } /* Deleting current buffer mode */ stream->status &= ~( _IOFBF | _IOLBF | _IONBF ); /* Set user-defined mode */ stream->status |= mode; _PDCLIB_UNLOCK( stream->mtx ); return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include #define BUFFERSIZE 500 int main( void ) { #ifndef REGTEST char buffer[ BUFFERSIZE ]; FILE * fh; /* full buffered, user-supplied buffer */ TESTCASE( ( fh = tmpfile() ) != NULL ); TESTCASE( setvbuf( fh, buffer, _IOFBF, BUFFERSIZE ) == 0 ); TESTCASE( fh->buffer == buffer ); TESTCASE( fh->bufsize == BUFFERSIZE ); TESTCASE( ( fh->status & ( _IOFBF | _IONBF | _IOLBF ) ) == _IOFBF ); TESTCASE( fclose( fh ) == 0 ); /* line buffered, lib-supplied buffer */ TESTCASE( ( fh = tmpfile() ) != NULL ); TESTCASE( setvbuf( fh, NULL, _IOLBF, BUFFERSIZE ) == 0 ); TESTCASE( fh->buffer != NULL ); TESTCASE( fh->bufsize == BUFFERSIZE ); TESTCASE( ( fh->status & ( _IOFBF | _IONBF | _IOLBF ) ) == _IOLBF ); TESTCASE( fclose( fh ) == 0 ); /* not buffered, user-supplied buffer */ TESTCASE( ( fh = tmpfile() ) != NULL ); TESTCASE( setvbuf( fh, buffer, _IONBF, BUFFERSIZE ) == 0 ); TESTCASE( ( fh->status & ( _IOFBF | _IONBF | _IOLBF ) ) == _IONBF ); TESTCASE( fclose( fh ) == 0 ); #else puts( " NOTEST setvbuf() test driver is PDCLib-specific." ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/ftell.c0000644000175000001440000000743214676735310023653 0ustar mhxusers/* ftell( FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #ifndef __STDC_NO_THREADS__ #include #endif long int ftell( struct _PDCLIB_file_t * stream ) { /* ftell() must take into account: - the actual *physical* offset of the file, i.e. the offset as recognized by the operating system (and stored in stream->pos.offset); and - any buffers held by PDCLib, which - in case of unwritten buffers, count in *addition* to the offset; or - in case of unprocessed pre-read buffers, count in *substraction* to the offset. (Remember to count ungetidx into this number.) Conveniently, the calculation ( ( bufend - bufidx ) + ungetidx ) results in just the right number in both cases: - in case of unwritten buffers, ( ( 0 - unwritten ) + 0 ) i.e. unwritten bytes as negative number - in case of unprocessed pre-read, ( ( preread - processed ) + unget ) i.e. unprocessed bytes as positive number. That is how the somewhat obscure return-value calculation works. */ /* If offset is too large for return type, report error instead of wrong offset value. */ long int rc; _PDCLIB_LOCK( stream->mtx ); if ( ( stream->pos.offset - stream->bufend ) > ( LONG_MAX - ( stream->bufidx - stream->ungetidx ) ) ) { /* integer overflow */ _PDCLIB_UNLOCK( stream->mtx ); *_PDCLIB_errno_func() = _PDCLIB_ERANGE; return -1; } rc = ( stream->pos.offset - ( ( ( int )stream->bufend - ( int )stream->bufidx ) + stream->ungetidx ) ); _PDCLIB_UNLOCK( stream->mtx ); return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { /* Testing all the basic I/O functions individually would result in lots of duplicated code, so I took the liberty of lumping it all together here. */ /* The following functions delegate their tests to here: fgetc fflush rewind fputc ungetc fseek flushbuffer seek fillbuffer prepread prepwrite */ char * buffer = ( char * )malloc( 4 ); FILE * fh; TESTCASE( ( fh = tmpfile() ) != NULL ); TESTCASE( setvbuf( fh, buffer, _IOLBF, 4 ) == 0 ); /* Testing ungetc() at offset 0 */ rewind( fh ); TESTCASE( ungetc( 'x', fh ) == 'x' ); TESTCASE( ftell( fh ) == -1l ); rewind( fh ); TESTCASE( ftell( fh ) == 0l ); /* Commence "normal" tests */ TESTCASE( fputc( '1', fh ) == '1' ); TESTCASE( fputc( '2', fh ) == '2' ); TESTCASE( fputc( '3', fh ) == '3' ); /* Positions incrementing as expected? */ TESTCASE( ftell( fh ) == 3l ); TESTCASE_NOREG( fh->pos.offset == 0l ); TESTCASE_NOREG( fh->bufidx == 3l ); /* Buffer properly flushed when full? */ TESTCASE( fputc( '4', fh ) == '4' ); TESTCASE_NOREG( fh->pos.offset == 4l ); TESTCASE_NOREG( fh->bufidx == 0 ); /* fflush() resetting positions as expected? */ TESTCASE( fputc( '5', fh ) == '5' ); TESTCASE( fflush( fh ) == 0 ); TESTCASE( ftell( fh ) == 5l ); TESTCASE_NOREG( fh->pos.offset == 5l ); TESTCASE_NOREG( fh->bufidx == 0l ); /* rewind() resetting positions as expected? */ rewind( fh ); TESTCASE( ftell( fh ) == 0l ); TESTCASE_NOREG( fh->pos.offset == 0 ); TESTCASE_NOREG( fh->bufidx == 0 ); /* Reading back first character after rewind for basic read check */ TESTCASE( fgetc( fh ) == '1' ); /* Check that SEEK_CUR actually uses internal position */ TESTCASE( fseek( fh, 1l, SEEK_CUR ) == 0 ); TESTCASE( ftell( fh ) == 2l ); /* TODO: t.b.c. */ TESTCASE( fclose( fh ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/getc.c0000644000175000001440000000063114676735310023461 0ustar mhxusers/* getc( FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int getc( struct _PDCLIB_file_t * stream ) { return fgetc( stream ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/tmpfile_s.c0000644000175000001440000000337614676735310024532 0ustar mhxusers/* tmpfile_s( FILE * * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST errno_t tmpfile_s( FILE * _PDCLIB_restrict * _PDCLIB_restrict streamptr ) { if ( streamptr == NULL ) { _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } *streamptr = tmpfile(); if ( *streamptr == NULL ) { assert( *_PDCLIB_errno_func() != 0 ); return *_PDCLIB_errno_func(); } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) FILE * fh; char filename[ L_tmpnam ]; FILE * fhtest; set_constraint_handler_s( test_handler ); TESTCASE( ( tmpfile_s( &fh ) ) == 0 ); TESTCASE( fputc( 'x', fh ) == 'x' ); /* Checking that file is actually there */ TESTCASE_NOREG( strcpy( filename, fh->filename ) == filename ); TESTCASE_NOREG( ( fhtest = fopen( filename, "r" ) ) != NULL ); TESTCASE_NOREG( fclose( fhtest ) == 0 ); /* Closing tmpfile */ TESTCASE( fclose( fh ) == 0 ); /* Checking that file was deleted */ TESTCASE_NOREG( fopen( filename, "r" ) == NULL ); /* Constraint violation */ TESTCASE( ( tmpfile_s( NULL ) ) != 0 ); TESTCASE( HANDLER_CALLS == 1 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/vfprintf.c0000644000175000001440000000462114676735310024400 0ustar mhxusers/* vfprintf( FILE *, const char *, va_list ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include #endif int vfprintf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, va_list arg ) { /* TODO: This function should interpret format as multibyte characters. */ struct _PDCLIB_status_t status; status.base = 0; status.flags = 0; status.n = SIZE_MAX; status.i = 0; status.current = 0; status.s = NULL; status.width = 0; status.prec = EOF; status.stream = stream; _PDCLIB_LOCK( stream->mtx ); if ( _PDCLIB_prepwrite( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } va_copy( status.arg, arg ); while ( *format != '\0' ) { const char * rc; if ( ( *format != '%' ) || ( ( rc = _PDCLIB_print( format, &status ) ) == format ) ) { /* No conversion specifier, print verbatim */ stream->buffer[ stream->bufidx++ ] = *format; if ( ( stream->bufidx == stream->bufsize ) || ( ( stream->status & _IOLBF ) && ( *format == '\n' ) ) || ( stream->status & _IONBF ) ) { if ( _PDCLIB_flushbuffer( stream ) != 0 ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } } ++format; status.i++; } else { /* Continue parsing after conversion specifier */ format = rc; } } va_end( status.arg ); _PDCLIB_UNLOCK( stream->mtx ); return status.i; } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/vfprintf.c" #define _PDCLIB_FILEIO #include #include "_PDCLIB_test.h" static int testprintf( FILE * stream, const char * format, ... ) { int i; va_list arg; va_start( arg, format ); i = vfprintf( stream, format, arg ); va_end( arg ); return i; } int main( void ) { FILE * target; TESTCASE( ( target = tmpfile() ) != NULL ); #include "printf_testcases.h" TESTCASE( fclose( target ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/ungetc.c0000644000175000001440000000432414676735310024027 0ustar mhxusers/* ungetc( int, FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #ifndef __STDC_NO_THREADS__ #include #endif int ungetc( int c, struct _PDCLIB_file_t * stream ) { int rc; _PDCLIB_LOCK( stream->mtx ); if ( c == EOF || stream->ungetidx == _PDCLIB_UNGETCBUFSIZE ) { rc = -1; } else { rc = stream->ungetbuf[stream->ungetidx++] = ( unsigned char ) c; } _PDCLIB_UNLOCK( stream->mtx ); return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { char buffer[4]; char input[1]; FILE * fh; int read; fpos_t pos; TESTCASE( ( fh = tmpfile() ) != NULL ); TESTCASE( setvbuf( fh, buffer, _IOLBF, 4 ) == 0 ); rewind( fh ); TESTCASE( fprintf( fh, "123" ) == 3 ); TESTCASE( ftell( fh ) == 3 ); rewind( fh ); TESTCASE( fscanf( fh, "12%n", &read ) == 0 ); TESTCASE( read == 2 ); TESTCASE( ftell( fh ) == 2 ); TESTCASE( ungetc( 'x', fh ) == 'x' ); TESTCASE( ftell( fh ) == 1 ); read = 0; TESTCASE( fscanf( fh, "x3%n", &read ) == 0 ); TESTCASE( ftell( fh ) == 3 ); TESTCASE( read == 2 ); TESTCASE( ungetc( 'y', fh ) == 'y' ); TESTCASE( ftell( fh ) == 2 ); TESTCASE( fread( input, 1, 1, fh ) == 1 ); TESTCASE( ftell( fh ) == 3 ); TESTCASE( input[0] == 'y' ); rewind( fh ); TESTCASE( ungetc( 'z', fh ) == 'z' ); TESTCASE( ftell( fh ) == -1 ); TESTCASE( fread( input, 1, 4, fh ) == 4 ); TESTCASE( memcmp( input, "z123", 4 ) == 0 ); rewind( fh ); TESTCASE( ungetc( 'z', fh ) == 'z' ); TESTCASE( ftell( fh ) == -1 ); TESTCASE( fscanf( fh, "%4c", input ) == 1 ); TESTCASE( memcmp( input, "z123", 4 ) == 0 ); rewind( fh ); TESTCASE( fgetc( fh ) == '1' ); TESTCASE( ftell( fh ) == 1 ); TESTCASE( ungetc( 'z', fh ) == 'z' ); TESTCASE( ftell( fh ) == 0 ); TESTCASE( fgetpos( fh, &pos ) == 0 ); TESTCASE( fsetpos( fh, &pos ) == 0 ); TESTCASE( ftell( fh ) == 0 ); TESTCASE( fgetc( fh ) == '1' ); TESTCASE( fclose( fh ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/vsprintf.c0000644000175000001440000000161114676735310024411 0ustar mhxusers/* vsprintf( char *, const char *, va_list ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #ifndef REGTEST int vsprintf( char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, va_list arg ) { return vsnprintf( s, SIZE_MAX, format, arg ); /* TODO: Replace with a non-checking call */ } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/vsprintf.c" #define _PDCLIB_STRINGIO #include #include #include "_PDCLIB_test.h" static int testprintf( char * s, const char * format, ... ) { int i; va_list arg; va_start( arg, format ); i = vsprintf( s, format, arg ); va_end( arg ); return i; } int main( void ) { char target[100]; #include "printf_testcases.h" return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/getchar.c0000644000175000001440000000060214676735310024152 0ustar mhxusers/* getchar( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int getchar( void ) { return fgetc( stdin ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fputs.c0000644000175000001440000000342514676735310023704 0ustar mhxusers/* fputs( const char *, FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include #endif int fputs( const char * _PDCLIB_restrict s, struct _PDCLIB_file_t * _PDCLIB_restrict stream ) { _PDCLIB_LOCK( stream->mtx ); if ( _PDCLIB_prepwrite( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } while ( *s != '\0' ) { /* Unbuffered and line buffered streams get flushed when fputs() does write the terminating end-of-line. All streams get flushed if the buffer runs full. */ stream->buffer[ stream->bufidx++ ] = *s; if ( ( stream->bufidx == stream->bufsize ) || ( ( stream->status & _IOLBF ) && *s == '\n' ) ) { if ( _PDCLIB_flushbuffer( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } } ++s; } if ( stream->status & _IONBF ) { if ( _PDCLIB_flushbuffer( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } } _PDCLIB_UNLOCK( stream->mtx ); return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { const char * const message = "SUCCESS testing fputs()"; FILE * fh; size_t i; TESTCASE( ( fh = tmpfile() ) != NULL ); TESTCASE( fputs( message, fh ) >= 0 ); rewind( fh ); for ( i = 0; i < 23; ++i ) { TESTCASE( fgetc( fh ) == message[i] ); } TESTCASE( fclose( fh ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/sprintf.c0000644000175000001440000000146414676735310024231 0ustar mhxusers/* sprintf( char *, const char *, ... ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #ifndef REGTEST int sprintf( char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, ... ) { int rc; va_list ap; va_start( ap, format ); rc = vsnprintf( s, SIZE_MAX, format, ap ); /* TODO: replace with non-checking call */ va_end( ap ); return rc; } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/sprintf.c" #define _PDCLIB_STRINGIO #include #include "_PDCLIB_test.h" #define testprintf( s, ... ) sprintf( s, __VA_ARGS__ ) int main( void ) { char target[100]; #include "printf_testcases.h" return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/rename.c0000644000175000001440000000544514676735310024016 0ustar mhxusers/* rename( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #include #ifndef __STDC_NO_THREADS__ #include extern mtx_t _PDCLIB_filelist_mtx; #endif extern struct _PDCLIB_file_t * _PDCLIB_filelist; int rename( const char * oldpath, const char * newpath ) { _PDCLIB_LOCK( _PDCLIB_filelist_mtx ); { struct _PDCLIB_file_t * current = _PDCLIB_filelist; while ( current != NULL ) { if ( ( current->filename != NULL ) && ( strcmp( current->filename, oldpath ) == 0 ) ) { /* File of that name currently open. Do not rename. */ _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return EOF; } current = current->next; } } _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return _PDCLIB_rename( oldpath, newpath ); } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { FILE * file; remove( testfile1 ); remove( testfile2 ); /* make sure that neither file exists */ TESTCASE( fopen( testfile1, "r" ) == NULL ); TESTCASE( fopen( testfile2, "r" ) == NULL ); /* rename file 1 to file 2 - expected to fail */ TESTCASE( rename( testfile1, testfile2 ) == -1 ); /* create file 1 */ TESTCASE( ( file = fopen( testfile1, "w" ) ) != NULL ); TESTCASE( fputs( "x", file ) != EOF ); TESTCASE( fclose( file ) == 0 ); /* check that file 1 exists */ TESTCASE( ( file = fopen( testfile1, "r" ) ) != NULL ); TESTCASE( fclose( file ) == 0 ); /* rename file 1 to file 2 */ TESTCASE( rename( testfile1, testfile2 ) == 0 ); /* check that file 2 exists, file 1 does not */ TESTCASE( fopen( testfile1, "r" ) == NULL ); TESTCASE( ( file = fopen( testfile2, "r" ) ) != NULL ); TESTCASE( fclose( file ) == 0 ); /* create another file 1 */ TESTCASE( ( file = fopen( testfile1, "w" ) ) != NULL ); TESTCASE( fputs( "x", file ) != EOF ); TESTCASE( fclose( file ) == 0 ); /* check that file 1 exists */ TESTCASE( ( file = fopen( testfile1, "r" ) ) != NULL ); TESTCASE( fclose( file ) == 0 ); /* rename file 1 to file 2 - expected to fail, see comment in _PDCLIB_rename() itself. */ /* NOREG as glibc overwrites existing destination file. */ TESTCASE_NOREG( rename( testfile1, testfile2 ) == -1 ); /* remove both files */ TESTCASE( remove( testfile1 ) == 0 ); TESTCASE( remove( testfile2 ) == 0 ); /* check that they're gone */ TESTCASE( fopen( testfile1, "r" ) == NULL ); TESTCASE( fopen( testfile2, "r" ) == NULL ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fprintf.c0000644000175000001440000000156514676735310024216 0ustar mhxusers/* fprintf( FILE *, const char *, ... ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST int fprintf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, ... ) { int rc; va_list ap; va_start( ap, format ); rc = vfprintf( stream, format, ap ); va_end( ap ); return rc; } #endif #ifdef TEST #include #include #define _PDCLIB_FILEID "stdio/fprintf.c" #define _PDCLIB_FILEIO #include "_PDCLIB_test.h" #define testprintf( stream, ... ) fprintf( stream, __VA_ARGS__ ) int main( void ) { FILE * target; TESTCASE( ( target = tmpfile() ) != NULL ); #include "printf_testcases.h" TESTCASE( fclose( target ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/snprintf.c0000644000175000001440000000160314676735310024402 0ustar mhxusers/* snprintf( char *, size_t, const char *, ... ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST int snprintf( char * _PDCLIB_restrict s, size_t n, const char * _PDCLIB_restrict format, ... ) { int rc; va_list ap; va_start( ap, format ); rc = vsnprintf( s, n, format, ap ); va_end( ap ); return rc; } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/snprintf.c" #define _PDCLIB_STRINGIO #include #include #include "_PDCLIB_test.h" #define testprintf( s, ... ) snprintf( s, 100, __VA_ARGS__ ) int main( void ) { char target[100]; #include "printf_testcases.h" TESTCASE( snprintf( NULL, 0, "foo" ) == 3 ); TESTCASE( snprintf( NULL, 0, "%d", 100 ) == 3 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/vsnprintf.c0000644000175000001440000000337514676735310024600 0ustar mhxusers/* vsnprintf( char *, size_t, const char *, va_list ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST int vsnprintf( char * _PDCLIB_restrict s, size_t n, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ) { /* TODO: This function should interpret format as multibyte characters. */ struct _PDCLIB_status_t status; status.base = 0; status.flags = 0; status.n = n; status.i = 0; status.current = 0; status.s = s; status.width = 0; status.prec = EOF; status.stream = NULL; va_copy( status.arg, arg ); while ( *format != '\0' ) { const char * rc; if ( ( *format != '%' ) || ( ( rc = _PDCLIB_print( format, &status ) ) == format ) ) { /* No conversion specifier, print verbatim */ if ( status.i < n ) { s[ status.i ] = *format; } status.i++; format++; } else { /* Continue parsing after conversion specifier */ format = rc; } } if ( status.i < n ) { s[ status.i ] = '\0'; } va_end( status.arg ); return status.i; } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/vsnprintf.c" #define _PDCLIB_STRINGIO #include #include #include "_PDCLIB_test.h" static int testprintf( char * s, const char * format, ... ) { int i; va_list arg; va_start( arg, format ); i = vsnprintf( s, 100, format, arg ); va_end( arg ); return i; } int main( void ) { char target[100]; #include "printf_testcases.h" return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fscanf.c0000644000175000001440000000152414676735310024001 0ustar mhxusers/* fscanf( FILE *, const char *, ... ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST int fscanf( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, ... ) { int rc; va_list ap; va_start( ap, format ); rc = vfscanf( stream, format, ap ); va_end( ap ); return rc; } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/fscanf.c" #define _PDCLIB_FILEIO #include "_PDCLIB_test.h" #define testscanf( stream, format, ... ) fscanf( stream, format, __VA_ARGS__ ) int main( void ) { FILE * source; TESTCASE( ( source = fopen( testfile, "wb+" ) ) != NULL ); #include "scanf_testcases.h" TESTCASE( fclose( source ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/vfscanf.c0000644000175000001440000000643514676735310024175 0ustar mhxusers/* vfscanf( FILE *, const char *, va_list ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include #endif int vfscanf( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, va_list arg ) { /* TODO: This function should interpret format as multibyte characters. */ struct _PDCLIB_status_t status; status.base = 0; status.flags = 0; status.n = 0; status.i = 0; status.current = 0; status.s = NULL; status.width = 0; status.prec = EOF; status.stream = stream; _PDCLIB_LOCK( stream->mtx ); if ( _PDCLIB_prepread( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } va_copy( status.arg, arg ); while ( *format != '\0' ) { const char * rc; if ( ( *format != '%' ) || ( ( rc = _PDCLIB_scan( format, &status ) ) == format ) ) { int c; /* No conversion specifier, match verbatim */ if ( isspace( *format ) ) { /* Whitespace char in format string: Skip all whitespaces */ /* No whitespaces in input does not result in matching error */ while ( isspace( c = getc( stream ) ) ) { ++status.i; } if ( ! feof( stream ) ) { ungetc( c, stream ); } } else { /* Non-whitespace char in format string: Match verbatim */ if ( ( ( c = getc( stream ) ) != *format ) || feof( stream ) ) { /* Matching error */ if ( ! feof( stream ) && ! ferror( stream ) ) { ungetc( c, stream ); } else if ( status.n == 0 ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } _PDCLIB_UNLOCK( stream->mtx ); return status.n; } else { ++status.i; } } ++format; } else { /* NULL return code indicates matching error */ if ( rc == NULL ) { break; } /* Continue parsing after conversion specifier */ format = rc; } } va_end( status.arg ); _PDCLIB_UNLOCK( stream->mtx ); return status.n; } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/vfscanf.c" #define _PDCLIB_FILEIO #include "_PDCLIB_test.h" static int testscanf( FILE * stream, const char * format, ... ) { va_list ap; int result; va_start( ap, format ); result = vfscanf( stream, format, ap ); va_end( ap ); return result; } int main( void ) { FILE * source; TESTCASE( ( source = fopen( testfile, "wb+" ) ) != NULL ); #include "scanf_testcases.h" TESTCASE( fclose( source ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fclose.c0000644000175000001440000000531014676735310024011 0ustar mhxusers/* fclose( FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include extern mtx_t _PDCLIB_filelist_mtx; #endif extern struct _PDCLIB_file_t * _PDCLIB_filelist; int fclose( struct _PDCLIB_file_t * stream ) { _PDCLIB_LOCK( _PDCLIB_filelist_mtx ); _PDCLIB_LOCK( stream->mtx ); /* Flush buffer */ if ( stream->status & _PDCLIB_FWRITE ) { if ( _PDCLIB_flushbuffer( stream ) == EOF ) { /* Flush failed, errno already set */ _PDCLIB_UNLOCK( stream->mtx ); _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return EOF; } } /* Close handle */ _PDCLIB_close( stream->handle ); /* Remove stream from list */ if ( _PDCLIB_getstream( stream ) ) { _PDCLIB_UNLOCK( stream->mtx ); _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return EOF; } /* Delete tmpfile() */ if ( stream->status & _PDCLIB_DELONCLOSE ) { _PDCLIB_remove( stream->filename ); } /* Free buffer */ if ( stream->status & _PDCLIB_FREEBUFFER ) { free( stream->buffer ); } /* Free filename (standard streams do not have one, but free( NULL ) is a valid no-op) */ free( stream->filename ); _PDCLIB_UNLOCK( stream->mtx ); #ifndef __STDC_NO_THREADS__ mtx_destroy( &stream->mtx ); #endif /* Free stream */ if ( stream != stdin && stream != stdout && stream != stderr ) { free( stream ); } _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST struct _PDCLIB_file_t * file1; struct _PDCLIB_file_t * file2; remove( testfile1 ); remove( testfile2 ); TESTCASE( _PDCLIB_filelist == stdin ); TESTCASE( ( file1 = fopen( testfile1, "w" ) ) != NULL ); TESTCASE( _PDCLIB_filelist == file1 ); TESTCASE( ( file2 = fopen( testfile2, "w" ) ) != NULL ); TESTCASE( _PDCLIB_filelist == file2 ); TESTCASE( fclose( file2 ) == 0 ); TESTCASE( _PDCLIB_filelist == file1 ); TESTCASE( ( file2 = fopen( testfile2, "w" ) ) != NULL ); TESTCASE( _PDCLIB_filelist == file2 ); TESTCASE( fclose( file1 ) == 0 ); TESTCASE( _PDCLIB_filelist == file2 ); TESTCASE( fclose( file2 ) == 0 ); TESTCASE( _PDCLIB_filelist == stdin ); TESTCASE( remove( testfile1 ) == 0 ); TESTCASE( remove( testfile2 ) == 0 ); #else puts( " NOTEST fclose() test driver is PDCLib-specific." ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fopen_s.c0000644000175000001440000000401714676735310024172 0ustar mhxusers/* fopen_s( FILE **, const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #ifndef REGTEST errno_t fopen_s( FILE * _PDCLIB_restrict * _PDCLIB_restrict streamptr, const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode ) { if ( streamptr == NULL || filename == NULL || mode == NULL ) { if ( streamptr != NULL ) { *streamptr = NULL; } _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } if ( ( *streamptr = fopen( filename, mode ) ) == NULL ) { return *_PDCLIB_errno_func(); } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) /* Some of the tests are not executed for regression tests, as the libc on my system is at once less forgiving (segfaults on mode NULL) and more forgiving (accepts undefined modes). */ FILE * fh; remove( testfile ); set_constraint_handler_s( test_handler ); TESTCASE( fopen_s( NULL, NULL, NULL ) != 0 ); TESTCASE( fopen_s( &fh, NULL, "w" ) != 0 ); TESTCASE( fopen_s( &fh, "", "w" ) != 0 ); TESTCASE( fopen_s( &fh, testfile, "" ) != 0 ); TESTCASE( fopen_s( &fh, testfile, NULL ) != 0 ); TESTCASE( fopen_s( &fh, testfile, "wq" ) != 0 ); TESTCASE( fopen_s( &fh, testfile, "wr" ) != 0 ); TESTCASE( fopen_s( &fh, testfile, "w" ) == 0 ); TESTCASE( fclose( fh ) == 0 ); TESTCASE( remove( testfile ) == 0 ); TESTCASE( HANDLER_CALLS == 3 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fflush.c0000644000175000001440000000254614676735310024035 0ustar mhxusers/* fflush( FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include extern mtx_t _PDCLIB_filelist_mtx; #endif extern struct _PDCLIB_file_t * _PDCLIB_filelist; int fflush( struct _PDCLIB_file_t * stream ) { int rc = 0; if ( stream == NULL ) { _PDCLIB_LOCK( _PDCLIB_filelist_mtx ); stream = _PDCLIB_filelist; /* TODO: Check what happens when fflush( NULL ) encounters write errors, in other libs */ while ( stream != NULL ) { _PDCLIB_LOCK( stream->mtx ); if ( stream->status & _PDCLIB_FWRITE ) { if ( _PDCLIB_flushbuffer( stream ) == EOF ) { rc = EOF; } } _PDCLIB_UNLOCK( stream->mtx ); stream = stream->next; } _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); } else { _PDCLIB_LOCK( stream->mtx ); rc = _PDCLIB_flushbuffer( stream ); _PDCLIB_UNLOCK( stream->mtx ); } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fopen.c0000644000175000001440000000517614676735310023657 0ustar mhxusers/* fopen( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #include #ifndef __STDC_NO_THREADS__ #include extern mtx_t _PDCLIB_filelist_mtx; #endif extern struct _PDCLIB_file_t * _PDCLIB_filelist; struct _PDCLIB_file_t * fopen( const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode ) { struct _PDCLIB_file_t * rc; unsigned int filemode = _PDCLIB_filemode( mode ); if ( filemode == 0 ) { /* mode invalid */ return NULL; } if ( filename == NULL || filename[0] == '\0' ) { /* filename invalid */ return NULL; } /* See tmpfile(), which does much of the same. */ if ( ( rc = _PDCLIB_init_file_t( NULL ) ) == NULL ) { /* initializing FILE structure failed */ return NULL; } /* Setting buffer to _IOLBF because "when opened, a stream is fully buffered if and only if it can be determined not to refer to an interactive device." */ rc->status |= filemode | _IOLBF; if ( ( rc->handle = _PDCLIB_open( filename, rc->status ) ) == _PDCLIB_NOHANDLE ) { /* OS open() failed */ #ifndef __STDC_NO_THREADS mtx_destroy( &rc->mtx ); #endif free( rc->buffer ); free( rc ); return NULL; } /* Getting absolute filename (for potential freopen()) */ rc->filename = _PDCLIB_realpath( filename ); /* Adding to list of open files */ _PDCLIB_LOCK( _PDCLIB_filelist_mtx ); rc->next = _PDCLIB_filelist; _PDCLIB_filelist = rc; _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Some of the tests are not executed for regression tests, as the libc on my system is at once less forgiving (segfaults on mode NULL) and more forgiving (accepts undefined modes). */ FILE * fh; remove( testfile ); TESTCASE_NOREG( fopen( NULL, NULL ) == NULL ); TESTCASE( fopen( NULL, "w" ) == NULL ); TESTCASE_NOREG( fopen( "", NULL ) == NULL ); TESTCASE( fopen( "", "w" ) == NULL ); TESTCASE( fopen( testfile, "" ) == NULL ); TESTCASE_NOREG( fopen( testfile, "wq" ) == NULL ); /* Undefined mode */ TESTCASE_NOREG( fopen( testfile, "wr" ) == NULL ); /* Undefined mode */ TESTCASE( ( fh = fopen( testfile, "w" ) ) != NULL ); TESTCASE( fclose( fh ) == 0 ); TESTCASE( remove( testfile ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/rewind.c0000644000175000001440000000072014676735310024026 0ustar mhxusers/* rewind( FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST void rewind( struct _PDCLIB_file_t * stream ) { stream->status &= ~ _PDCLIB_ERRORFLAG; fseek( stream, 0L, SEEK_SET ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fgetpos.c0000644000175000001440000000233514676735310024211 0ustar mhxusers/* fgetpos( FILE * , fpos_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #ifndef __STDC_NO_THREADS__ #include #endif int fgetpos( struct _PDCLIB_file_t * _PDCLIB_restrict stream, struct _PDCLIB_fpos_t * _PDCLIB_restrict pos ) { _PDCLIB_LOCK( stream->mtx ); pos->offset = ( stream->pos.offset - ( ( ( int )stream->bufend - ( int )stream->bufidx ) + stream->ungetidx ) ); pos->status = stream->pos.status; /* TODO: Add mbstate. */ _PDCLIB_UNLOCK( stream->mtx ); return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { FILE * fh; fpos_t pos1, pos2; TESTCASE( ( fh = tmpfile() ) != NULL ); TESTCASE( fgetpos( fh, &pos1 ) == 0 ); TESTCASE( fwrite( teststring, 1, strlen( teststring ), fh ) == strlen( teststring ) ); TESTCASE( fgetpos( fh, &pos2 ) == 0 ); TESTCASE( fsetpos( fh, &pos1 ) == 0 ); TESTCASE( ftell( fh ) == 0 ); TESTCASE( fsetpos( fh, &pos2 ) == 0 ); TESTCASE( ( size_t )ftell( fh ) == strlen( teststring ) ); TESTCASE( fclose( fh ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/tmpnam.c0000644000175000001440000000121114676735310024026 0ustar mhxusers/* tmpnam( char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #include char * tmpnam( char * s ) { static char filename[ L_tmpnam ]; FILE * file = tmpfile(); if ( s == NULL ) { s = filename; } strcpy( s, file->filename ); fclose( file ); return s; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { TESTCASE( strlen( tmpnam( NULL ) ) < L_tmpnam ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/putc.c0000644000175000001440000000065014676735310023513 0ustar mhxusers/* putc( int, FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int putc( int c, struct _PDCLIB_file_t * stream ) { return fputc( c, stream ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/perror.c0000644000175000001440000000260614676735310024054 0ustar mhxusers/* perror( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #ifndef REGTEST #ifndef __STDC_NO_THREADS__ #include #endif /* TODO: Doing this via a static array is not the way to do it. */ void perror( const char * s ) { _PDCLIB_LOCK( stderr->mtx ); if ( ( s != NULL ) && ( s[0] != '\n' ) ) { fprintf( stderr, "%s: ", s ); } if ( errno >= _PDCLIB_ERRNO_MAX || errno < 0 ) { fprintf( stderr, "%s\n", _PDCLIB_EUNKNOWN_TEXT ); } else { fprintf( stderr, "%s\n", _PDCLIB_lc_messages->errno_texts[errno] ); } _PDCLIB_UNLOCK( stderr->mtx ); return; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include #include #include int main( void ) { FILE * fh; unsigned long long max = ULLONG_MAX; char buffer[100]; sprintf( buffer, "%llu", max ); TESTCASE( ( fh = freopen( testfile, "wb+", stderr ) ) != NULL ); TESTCASE( strtol( buffer, NULL, 10 ) == LONG_MAX ); perror( "Test" ); rewind( fh ); TESTCASE( fread( buffer, 1, 7, fh ) == 7 ); TESTCASE( memcmp( buffer, "Test: ", 6 ) == 0 ); TESTCASE( fclose( fh ) == 0 ); TESTCASE( remove( testfile ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fread.c0000644000175000001440000000540014676735310023617 0ustar mhxusers/* fread( void *, size_t, size_t, struct * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include #endif size_t fread( void * _PDCLIB_restrict ptr, size_t size, size_t nmemb, struct _PDCLIB_file_t * _PDCLIB_restrict stream ) { char * dest = ( char * )ptr; size_t nmemb_i; _PDCLIB_LOCK( stream->mtx ); if ( _PDCLIB_prepread( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return 0; } for ( nmemb_i = 0; nmemb_i < nmemb; ++nmemb_i ) { size_t size_i; /* TODO: For better performance, move from stream buffer to destination block-wise, not byte-wise. */ for ( size_i = 0; size_i < size; ++size_i ) { if ( stream->ungetidx > 0 ) { dest[ nmemb_i * size + size_i ] = stream->ungetbuf[ --( stream->ungetidx ) ]; } else { if ( stream->bufidx == stream->bufend ) { if ( _PDCLIB_fillbuffer( stream ) == EOF ) { /* Could not read requested data */ _PDCLIB_UNLOCK( stream->mtx ); return nmemb_i; } } dest[ nmemb_i * size + size_i ] = stream->buffer[ stream->bufidx++ ]; } } } _PDCLIB_UNLOCK( stream->mtx ); return nmemb_i; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { FILE * fh; const char * message = "Testing fwrite()...\n"; char buffer[21]; buffer[20] = 'x'; TESTCASE( ( fh = tmpfile() ) != NULL ); /* fwrite() / readback */ TESTCASE( fwrite( message, 1, 20, fh ) == 20 ); rewind( fh ); TESTCASE( fread( buffer, 1, 20, fh ) == 20 ); TESTCASE( memcmp( buffer, message, 20 ) == 0 ); TESTCASE( buffer[20] == 'x' ); /* same, different nmemb / size settings */ rewind( fh ); TESTCASE( memset( buffer, '\0', 20 ) == buffer ); TESTCASE( fwrite( message, 5, 4, fh ) == 4 ); rewind( fh ); TESTCASE( fread( buffer, 5, 4, fh ) == 4 ); TESTCASE( memcmp( buffer, message, 20 ) == 0 ); TESTCASE( buffer[20] == 'x' ); /* same... */ rewind( fh ); TESTCASE( memset( buffer, '\0', 20 ) == buffer ); TESTCASE( fwrite( message, 20, 1, fh ) == 1 ); rewind( fh ); TESTCASE( fread( buffer, 20, 1, fh ) == 1 ); TESTCASE( memcmp( buffer, message, 20 ) == 0 ); TESTCASE( buffer[20] == 'x' ); /* Done. */ TESTCASE( fclose( fh ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/freopen_s.c0000644000175000001440000000434214676735310024522 0ustar mhxusers/* freopen_s( FILE **, const char *, const char *, FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #ifndef REGTEST _PDCLIB_PUBLIC errno_t freopen_s( FILE * _PDCLIB_restrict * _PDCLIB_restrict newstreamptr, const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode, FILE * _PDCLIB_restrict stream ) { if ( newstreamptr == NULL || mode == NULL || stream == NULL ) { if ( newstreamptr != NULL ) { *newstreamptr = NULL; } _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } if ( ( *newstreamptr = freopen( filename, mode, stream ) ) == NULL ) { return *_PDCLIB_errno_func(); } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) FILE * fin; FILE * fout; FILE * dummy; set_constraint_handler_s( test_handler ); TESTCASE( ( fin = fopen( testfile1, "wb+" ) ) != NULL ); TESTCASE( fputc( 'x', fin ) == 'x' ); TESTCASE( fclose( fin ) == 0 ); TESTCASE( freopen_s( &fin, testfile1, "rb", stdin ) == 0 ); TESTCASE( getchar() == 'x' ); TESTCASE( freopen_s( &fout, testfile2, "wb+", stdout ) == 0 ); TESTCASE( putchar( 'x' ) == 'x' ); rewind( fout ); TESTCASE( fgetc( fout ) == 'x' ); dummy = fin; TESTCASE( freopen_s( &dummy, testfile1, "rb", NULL ) != 0 ); dummy = fin; TESTCASE( freopen_s( &dummy, testfile1, NULL, stdin ) != 0 ); TESTCASE( freopen_s( NULL, testfile1, "rb", fin ) != 0 ); TESTCASE( fclose( fin ) == 0 ); TESTCASE( fclose( fout ) == 0 ); TESTCASE( remove( testfile1 ) == 0 ); TESTCASE( remove( testfile2 ) == 0 ); TESTCASE( HANDLER_CALLS == 3 ); #else TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/setbuf.c0000644000175000001440000000234414676735310024032 0ustar mhxusers/* setbuf( FILE *, char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST void setbuf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf ) { if ( buf == NULL ) { setvbuf( stream, buf, _IONBF, BUFSIZ ); } else { setvbuf( stream, buf, _IOFBF, BUFSIZ ); } } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { /* TODO: Extend testing once setvbuf() is finished. */ #ifndef REGTEST char buffer[ BUFSIZ + 1 ]; FILE * fh; /* full buffered */ TESTCASE( ( fh = tmpfile() ) != NULL ); setbuf( fh, buffer ); TESTCASE( fh->buffer == buffer ); TESTCASE( fh->bufsize == BUFSIZ ); TESTCASE( ( fh->status & ( _IOFBF | _IONBF | _IOLBF ) ) == _IOFBF ); TESTCASE( fclose( fh ) == 0 ); /* not buffered */ TESTCASE( ( fh = tmpfile() ) != NULL ); setbuf( fh, NULL ); TESTCASE( ( fh->status & ( _IOFBF | _IONBF | _IOLBF ) ) == _IONBF ); TESTCASE( fclose( fh ) == 0 ); #else puts( " NOTEST setbuf() test driver is PDCLib-specific." ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/printf.c0000644000175000001440000000156214676735310024045 0ustar mhxusers/* printf( const char *, ... ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST int printf( const char * _PDCLIB_restrict format, ... ) { int rc; va_list ap; va_start( ap, format ); rc = vfprintf( stdout, format, ap ); va_end( ap ); return rc; } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/printf.c" #define _PDCLIB_FILEIO #include #include #include "_PDCLIB_test.h" #define testprintf( stream, ... ) printf( __VA_ARGS__ ) int main( void ) { FILE * target; TESTCASE( ( target = freopen( testfile, "wb+", stdout ) ) != NULL ); #include "printf_testcases.h" TESTCASE( fclose( target ) == 0 ); TESTCASE( remove( testfile ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/vsscanf.c0000644000175000001440000000537614676735310024215 0ustar mhxusers/* vsscanf( const char *, const char *, va_list ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #ifndef REGTEST int vsscanf( const char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, va_list arg ) { /* TODO: This function should interpret format as multibyte characters. */ struct _PDCLIB_status_t status; status.base = 0; status.flags = 0; status.n = 0; status.i = 0; status.current = 0; status.s = ( char * ) s; status.width = 0; status.prec = EOF; status.stream = NULL; va_copy( status.arg, arg ); while ( *format != '\0' ) { const char * rc; if ( ( *format != '%' ) || ( ( rc = _PDCLIB_scan( format, &status ) ) == format ) ) { /* No conversion specifier, match verbatim */ if ( isspace( *format ) ) { /* Whitespace char in format string: Skip all whitespaces */ /* No whitespaces in input do not result in matching error */ while ( isspace( *status.s ) ) { ++status.s; ++status.i; } } else { /* Non-whitespace char in format string: Match verbatim */ if ( *status.s != *format ) { if ( *status.s == '\0' && status.n == 0 ) { /* Early input error */ return EOF; } /* Matching error */ return status.n; } else { ++status.s; ++status.i; } } ++format; } else { /* NULL return code indicates error */ if ( rc == NULL ) { if ( ( *status.s == '\n' ) && ( status.n == 0 ) ) { status.n = EOF; } break; } /* Continue parsing after conversion specifier */ format = rc; } } va_end( status.arg ); return status.n; } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/vsscanf.c" #define _PDCLIB_STRINGIO #include "_PDCLIB_test.h" static int testscanf( const char * stream, const char * format, ... ) { va_list ap; int result; va_start( ap, format ); result = vsscanf( stream, format, ap ); va_end( ap ); return result; } int main( void ) { char source[100]; #include "scanf_testcases.h" return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/feof.c0000644000175000001440000000065614676735310023465 0ustar mhxusers/* feof( FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int feof( struct _PDCLIB_file_t * stream ) { return stream->status & _PDCLIB_EOFFLAG; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by clearerr(). */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fputc.c0000644000175000001440000000214714676735310023664 0ustar mhxusers/* fputc( int, FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include #endif int fputc( int c, struct _PDCLIB_file_t * stream ) { _PDCLIB_LOCK( stream->mtx ); if ( _PDCLIB_prepwrite( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } stream->buffer[stream->bufidx++] = ( char )c; if ( ( stream->bufidx == stream->bufsize ) /* _IOFBF */ || ( ( stream->status & _IOLBF ) && ( ( char )c == '\n' ) ) /* _IOLBF */ || ( stream->status & _IONBF ) /* _IONBF */ ) { /* buffer filled, unbuffered stream, or end-of-line. */ c = ( _PDCLIB_flushbuffer( stream ) == 0 ) ? c : EOF; } _PDCLIB_UNLOCK( stream->mtx ); return c; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/clearerr.c0000644000175000001440000000237614676735310024346 0ustar mhxusers/* clearerr( FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST void clearerr( struct _PDCLIB_file_t * stream ) { stream->status &= ~( _PDCLIB_ERRORFLAG | _PDCLIB_EOFFLAG ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { FILE * fh; TESTCASE( ( fh = tmpfile() ) != NULL ); /* Flags should be clear */ TESTCASE( ! ferror( fh ) ); TESTCASE( ! feof( fh ) ); /* Reading from empty stream - should provoke EOF */ rewind( fh ); TESTCASE( fgetc( fh ) == EOF ); TESTCASE( ! ferror( fh ) ); TESTCASE( feof( fh ) ); /* clearerr() should clear flags */ clearerr( fh ); TESTCASE( ! ferror( fh ) ); TESTCASE( ! feof( fh ) ); /* reopen() the file write-only */ TESTCASE( ( fh = freopen( NULL, "w", fh ) ) != NULL ); /* Reading from write-only stream - should provoke error */ TESTCASE( fgetc( fh ) == EOF ); TESTCASE( ferror( fh ) ); TESTCASE( ! feof( fh ) ); /* clearerr() should clear flags */ clearerr( fh ); TESTCASE( ! ferror( fh ) ); TESTCASE( ! feof( fh ) ); TESTCASE( fclose( fh ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/freopen.c0000644000175000001440000001527614676735310024210 0ustar mhxusers/* freopen( const char *, const char *, FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include extern mtx_t _PDCLIB_filelist_mtx; #endif extern struct _PDCLIB_file_t * _PDCLIB_filelist; struct _PDCLIB_file_t * freopen( const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode, struct _PDCLIB_file_t * _PDCLIB_restrict stream ) { unsigned int filemode = _PDCLIB_filemode( mode ); if ( stream == NULL ) { errno = EBADF; return NULL; } _PDCLIB_LOCK( _PDCLIB_filelist_mtx ); if ( _PDCLIB_isstream( stream, NULL ) ) { /* May lock only after established that stream is valid */ _PDCLIB_LOCK( stream->mtx ); /* Flush buffer */ if ( stream->status & _PDCLIB_FWRITE ) { _PDCLIB_flushbuffer( stream ); } if ( filename == NULL ) { /* Attempt to change mode without closing stream */ switch ( _PDCLIB_changemode( stream, filemode ) ) { case INT_MIN: /* fail completely */ _PDCLIB_UNLOCK( stream->mtx ); _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return NULL; case 0: /* fail; try close / reopen */ filename = stream->filename; /* Setting to NULL to make the free() below a non-op. */ stream->filename = NULL; break; default: /* success */ _PDCLIB_UNLOCK( stream->mtx ); _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return stream; } } /* Close handle */ _PDCLIB_close( stream->handle ); /* Remove stream from list */ _PDCLIB_getstream( stream ); /* Delete tmpfile() */ if ( stream->status & _PDCLIB_DELONCLOSE ) { /* Have to switch here; stream->filename may have moved to filename after failed in-place mode change above. */ _PDCLIB_remove( ( stream->filename == NULL ) ? filename : stream->filename ); stream->status &= ~_PDCLIB_DELONCLOSE; } /* Free buffer */ if ( stream->status & _PDCLIB_FREEBUFFER ) { free( stream->buffer ); } if ( filename == NULL ) { /* Input was filename NULL, stream->filename NULL. No filename means there is nothing to reopen. In-place mode change was already attempted (and failed) above. */ return NULL; } else { /* We have a filename, either from input or (if filename was NULL) from stream. We will attempt the re-open with that, and will retrieve _PDCLIB_realpath() from that. So stream->filename is no longer needed. */ free( stream->filename ); } } else { /* Not a valid stream. As _PDCLIB_init_file_t() cannot tell the difference, only knows that it has been called by freopen() (by the non-NULL parameter), we need to initialize the mutex here (so that either way, _PDCLIB_init_file_t() gets a pre- initialized mutex). */ #ifndef __STDC_NO_THREADS__ if ( mtx_init( &stream->mtx, mtx_plain | mtx_recursive ) != thrd_success ) { /* Could not initialize stream mutex */ _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return NULL; } #endif /* Locking the mutex, so we come out of the if-else with a locked mutex either way. */ _PDCLIB_LOCK( stream->mtx ); } /* Stream is closed, or never was open (even though its mutex exists and is locked) at this point. Now we check if we have the whereabouts to open it. */ if ( filemode == 0 ) { /* Mode invalid */ _PDCLIB_UNLOCK( stream->mtx ); #ifndef __STDC_NO_THREADS__ mtx_destroy( &stream->mtx ); #endif free( stream->filename ); free( stream ); _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return NULL; } if ( filename == NULL || filename[0] == '\0' ) { /* No filename available (standard stream?) */ _PDCLIB_UNLOCK( stream->mtx ); #ifndef __STDC_NO_THREADS__ mtx_destroy( &stream->mtx ); #endif free( stream->filename ); free( stream ); _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return NULL; } /* (Re-)initializing the structure. */ if ( _PDCLIB_init_file_t( stream ) == NULL ) { /* Re-init failed. */ _PDCLIB_UNLOCK( stream->mtx ); #ifndef __STDC_NO_THREADS__ mtx_destroy( &stream->mtx ); #endif free( stream->filename ); free( stream ); _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return NULL; } /* Resetting buffer mode and filemode */ stream->status |= filemode | _IOLBF; /* Attempt open */ if ( ( stream->handle = _PDCLIB_open( filename, stream->status ) ) == _PDCLIB_NOHANDLE ) { /* OS open() failed */ _PDCLIB_UNLOCK( stream->mtx ); #ifndef __STDC_NO_THREADS__ mtx_destroy( &stream->mtx ); #endif free( stream->filename ); free( stream->buffer ); free( stream ); _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return NULL; } /* Getting absolute filename */ stream->filename = _PDCLIB_realpath( filename ); /* Adding to list of open files */ stream->next = _PDCLIB_filelist; _PDCLIB_filelist = stream; _PDCLIB_UNLOCK( stream->mtx ); _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return stream; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { FILE * fin; FILE * fout; TESTCASE( ( fin = fopen( testfile1, "wb+" ) ) != NULL ); TESTCASE( fputc( 'x', fin ) == 'x' ); TESTCASE( fclose( fin ) == 0 ); TESTCASE( ( fin = freopen( testfile1, "rb", stdin ) ) != NULL ); TESTCASE( getchar() == 'x' ); TESTCASE( ( fout = freopen( testfile2, "wb+", stdout ) ) != NULL ); TESTCASE( putchar( 'x' ) == 'x' ); rewind( fout ); TESTCASE( fgetc( fout ) == 'x' ); TESTCASE( fclose( fin ) == 0 ); TESTCASE( fclose( fout ) == 0 ); TESTCASE( remove( testfile1 ) == 0 ); TESTCASE( remove( testfile2 ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/remove.c0000644000175000001440000000222514676735310024035 0ustar mhxusers/* remove( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example implementation of remove() fit for use with POSIX kernels. */ #include #ifndef REGTEST #include #include "/usr/include/errno.h" extern struct _PDCLIB_file_t * _PDCLIB_filelist; #ifdef __cplusplus extern "C" { #endif extern int unlink( const char * pathname ); #ifdef __cplusplus } #endif int remove( const char * pathname ) { int rc; struct _PDCLIB_file_t * current = _PDCLIB_filelist; while ( current != NULL ) { if ( ( current->filename != NULL ) && ( strcmp( current->filename, pathname ) == 0 ) ) { return EOF; } current = current->next; } if ( ( rc = unlink( pathname ) ) == -1 ) { /* The 1:1 mapping in _PDCLIB_config.h ensures this works. */ *_PDCLIB_errno_func() = errno; } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c (and several others) */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fgets.c0000644000175000001440000000510314676735310023646 0ustar mhxusers/* fgets( char *, int, FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include #endif char * fgets( char * _PDCLIB_restrict s, int size, struct _PDCLIB_file_t * _PDCLIB_restrict stream ) { char * dest = s; if ( size == 0 ) { return NULL; } if ( size == 1 ) { *s = '\0'; return s; } _PDCLIB_LOCK( stream->mtx ); if ( _PDCLIB_prepread( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return NULL; } while ( ( ( *dest++ = stream->buffer[stream->bufidx++] ) != '\n' ) && --size > 0 ) { if ( stream->bufidx == stream->bufend ) { if ( _PDCLIB_fillbuffer( stream ) == EOF ) { /* In case of error / EOF before a character is read, this will lead to a \0 be written anyway. Since the results are "indeterminate" by definition, this does not hurt. */ break; } } } _PDCLIB_UNLOCK( stream->mtx ); *dest = '\0'; return ( dest == s ) ? NULL : s; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { FILE * fh; char buffer[10]; const char * fgets_test = "foo\nbar\0baz\nweenie"; TESTCASE( ( fh = fopen( testfile, "wb+" ) ) != NULL ); TESTCASE( fwrite( fgets_test, 1, 18, fh ) == 18 ); rewind( fh ); TESTCASE( fgets( buffer, 10, fh ) == buffer ); TESTCASE( strcmp( buffer, "foo\n" ) == 0 ); TESTCASE( fgets( buffer, 10, fh ) == buffer ); TESTCASE( memcmp( buffer, "bar\0baz\n", 8 ) == 0 ); TESTCASE( fgets( buffer, 10, fh ) == buffer ); TESTCASE( strcmp( buffer, "weenie" ) == 0 ); TESTCASE( feof( fh ) ); TESTCASE( fseek( fh, -1, SEEK_END ) == 0 ); TESTCASE( fgets( buffer, 1, fh ) == buffer ); TESTCASE( strcmp( buffer, "" ) == 0 ); TESTCASE( fgets( buffer, 0, fh ) == NULL ); TESTCASE( ! feof( fh ) ); TESTCASE( fgets( buffer, 1, fh ) == buffer ); TESTCASE( strcmp( buffer, "" ) == 0 ); TESTCASE( ! feof( fh ) ); TESTCASE( fgets( buffer, 2, fh ) == buffer ); TESTCASE( strcmp( buffer, "e" ) == 0 ); TESTCASE( fseek( fh, 0, SEEK_END ) == 0 ); TESTCASE( fgets( buffer, 2, fh ) == NULL ); TESTCASE( feof( fh ) ); TESTCASE( fclose( fh ) == 0 ); TESTCASE( remove( testfile ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fsetpos.c0000644000175000001440000000200314676735310024215 0ustar mhxusers/* fsetpos( FILE *, const fpos_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include #endif int fsetpos( struct _PDCLIB_file_t * stream, const struct _PDCLIB_fpos_t * pos ) { _PDCLIB_LOCK( stream->mtx ); if ( stream->status & _PDCLIB_FWRITE ) { if ( _PDCLIB_flushbuffer( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } } if ( _PDCLIB_seek( stream, pos->offset, SEEK_SET ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } stream->pos.status = pos->status; /* TODO: Add mbstate. */ _PDCLIB_UNLOCK( stream->mtx ); return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* fsetpos() tested together with fsetpos(). */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/ferror.c0000644000175000001440000000066414676735310024044 0ustar mhxusers/* ferror( FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int ferror( struct _PDCLIB_file_t * stream ) { return stream->status & _PDCLIB_ERRORFLAG; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by clearerr(). */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/scanf.c0000644000175000001440000000144614676735310023636 0ustar mhxusers/* scanf( const char *, ... ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST int scanf( const char * _PDCLIB_restrict format, ... ) { va_list ap; va_start( ap, format ); return vfscanf( stdin, format, ap ); } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/scanf.c" #define _PDCLIB_FILEIO #include "_PDCLIB_test.h" #define testscanf( stream, format, ... ) scanf( format, __VA_ARGS__ ) int main( void ) { FILE * source; TESTCASE( ( source = freopen( testfile, "wb+", stdin ) ) != NULL ); #include "scanf_testcases.h" TESTCASE( fclose( source ) == 0 ); TESTCASE( remove( testfile ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/vprintf.c0000644000175000001440000000167114676735310024234 0ustar mhxusers/* vprintf( const char *, va_list ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST int vprintf( const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ) { return vfprintf( stdout, format, arg ); } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/vprintf.c" #define _PDCLIB_FILEIO #include #include #include "_PDCLIB_test.h" static int testprintf( FILE * stream, const char * format, ... ) { int i; va_list arg; va_start( arg, format ); i = vprintf( format, arg ); va_end( arg ); return i; } int main( void ) { FILE * target; TESTCASE( ( target = freopen( testfile, "wb+", stdout ) ) != NULL ); #include "printf_testcases.h" TESTCASE( fclose( target ) == 0 ); TESTCASE( remove( testfile ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fgetc.c0000644000175000001440000000157514676735310023637 0ustar mhxusers/* fgetc( FILE * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include #endif int fgetc( struct _PDCLIB_file_t * stream ) { int rc; _PDCLIB_LOCK( stream->mtx ); if ( _PDCLIB_prepread( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } if ( stream->ungetidx > 0 ) { rc = ( unsigned char )stream->ungetbuf[ --( stream->ungetidx ) ]; } else { rc = ( unsigned char )stream->buffer[stream->bufidx++]; } _PDCLIB_UNLOCK( stream->mtx ); return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/sscanf.c0000644000175000001440000000135314676735310024016 0ustar mhxusers/* sscanf( const char *, const char *, ... ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST int sscanf( const char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, ... ) { int rc; va_list ap; va_start( ap, format ); rc = vsscanf( s, format, ap ); va_end( ap ); return rc; } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/sscanf.c" #define _PDCLIB_STRINGIO #include "_PDCLIB_test.h" #define testscanf( s, format, ... ) sscanf( s, format, __VA_ARGS__ ) int main( void ) { char source[100]; #include "scanf_testcases.h" return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/vscanf.c0000644000175000001440000000161114676735310024016 0ustar mhxusers/* vscanf( const char *, va_list ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST int vscanf( const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ) { return vfscanf( stdin, format, arg ); } #endif #ifdef TEST #define _PDCLIB_FILEID "stdio/vscanf.c" #define _PDCLIB_FILEIO #include "_PDCLIB_test.h" static int testscanf( FILE * stream, const char * format, ... ) { int i; va_list arg; va_start( arg, format ); i = vscanf( format, arg ); va_end( arg ); return i; } int main( void ) { FILE * source; TESTCASE( ( source = freopen( testfile, "wb+", stdin ) ) != NULL ); #include "scanf_testcases.h" TESTCASE( fclose( source ) == 0 ); TESTCASE( remove( testfile ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/fseek.c0000644000175000001440000000556614676735310023650 0ustar mhxusers/* fseek( FILE *, long, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifndef __STDC_NO_THREADS__ #include #endif int fseek( struct _PDCLIB_file_t * stream, long offset, int whence ) { int rc; _PDCLIB_LOCK( stream->mtx ); if ( stream->status & _PDCLIB_FWRITE ) { if ( _PDCLIB_flushbuffer( stream ) == EOF ) { _PDCLIB_UNLOCK( stream->mtx ); return EOF; } } stream->status &= ~ _PDCLIB_EOFFLAG; if ( stream->status & _PDCLIB_FRW ) { stream->status &= ~( _PDCLIB_FREAD | _PDCLIB_FWRITE ); } if ( whence == SEEK_CUR ) { offset -= ( ( ( int )stream->bufend - ( int )stream->bufidx ) + stream->ungetidx ); } rc = ( _PDCLIB_seek( stream, offset, whence ) != EOF ) ? 0 : EOF; _PDCLIB_UNLOCK( stream->mtx ); return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { FILE * fh; TESTCASE( ( fh = tmpfile() ) != NULL ); TESTCASE( fwrite( teststring, 1, strlen( teststring ), fh ) == strlen( teststring ) ); /* General functionality */ TESTCASE( fseek( fh, -1, SEEK_END ) == 0 ); TESTCASE( ( size_t )ftell( fh ) == strlen( teststring ) - 1 ); TESTCASE( fseek( fh, 0, SEEK_END ) == 0 ); TESTCASE( ( size_t )ftell( fh ) == strlen( teststring ) ); TESTCASE( fseek( fh, 0, SEEK_SET ) == 0 ); TESTCASE( ftell( fh ) == 0 ); TESTCASE( fseek( fh, 5, SEEK_CUR ) == 0 ); TESTCASE( ftell( fh ) == 5 ); TESTCASE( fseek( fh, -3, SEEK_CUR ) == 0 ); TESTCASE( ftell( fh ) == 2 ); /* Checking behaviour around EOF */ TESTCASE( fseek( fh, 0, SEEK_END ) == 0 ); TESTCASE( ! feof( fh ) ); TESTCASE( fgetc( fh ) == EOF ); TESTCASE( feof( fh ) ); TESTCASE( fseek( fh, 0, SEEK_END ) == 0 ); TESTCASE( ! feof( fh ) ); /* Checking undo of ungetc() */ TESTCASE( fseek( fh, 0, SEEK_SET ) == 0 ); TESTCASE( fgetc( fh ) == teststring[0] ); TESTCASE( fgetc( fh ) == teststring[1] ); TESTCASE( fgetc( fh ) == teststring[2] ); TESTCASE( ftell( fh ) == 3 ); TESTCASE( ungetc( teststring[2], fh ) == teststring[2] ); TESTCASE( ftell( fh ) == 2 ); TESTCASE( fgetc( fh ) == teststring[2] ); TESTCASE( ftell( fh ) == 3 ); TESTCASE( ungetc( 'x', fh ) == 'x' ); TESTCASE( ftell( fh ) == 2 ); TESTCASE( fgetc( fh ) == 'x' ); TESTCASE( ungetc( 'x', fh ) == 'x' ); TESTCASE( ftell( fh ) == 2 ); TESTCASE( fseek( fh, 2, SEEK_SET ) == 0 ); TESTCASE( fgetc( fh ) == teststring[2] ); /* Checking error handling */ TESTCASE( fseek( fh, -5, SEEK_SET ) == -1 ); TESTCASE( fseek( fh, 0, SEEK_END ) == 0 ); TESTCASE( fclose( fh ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdio/putchar.c0000644000175000001440000000063214676735310024206 0ustar mhxusers/* putchar( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int putchar( int c ) { return fputc( c, stdout ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ putchar( 'x' ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/0000755000175000001440000000000014677003524022371 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/ctype/ispunct.c0000644000175000001440000000131614676735310024227 0ustar mhxusers/* ispunct( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int ispunct( int c ) { return ( _PDCLIB_lc_ctype->entry[c].flags & _PDCLIB_CTYPE_PUNCT ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( ! ispunct( 'a' ) ); TESTCASE( ! ispunct( 'z' ) ); TESTCASE( ! ispunct( 'A' ) ); TESTCASE( ! ispunct( 'Z' ) ); TESTCASE( ispunct( '@' ) ); TESTCASE( ispunct( '.' ) ); TESTCASE( ! ispunct( '\t' ) ); TESTCASE( ! ispunct( '\0' ) ); TESTCASE( ! ispunct( ' ' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/tolower.c0000644000175000001440000000115614676735310024237 0ustar mhxusers/* tolower( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int tolower( int c ) { return _PDCLIB_lc_ctype->entry[c].lower; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( tolower( 'A' ) == 'a' ); TESTCASE( tolower( 'Z' ) == 'z' ); TESTCASE( tolower( 'a' ) == 'a' ); TESTCASE( tolower( 'z' ) == 'z' ); TESTCASE( tolower( '@' ) == '@' ); TESTCASE( tolower( '[' ) == '[' ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/isspace.c0000644000175000001440000000120514676735310024166 0ustar mhxusers/* isspace( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int isspace( int c ) { return ( _PDCLIB_lc_ctype->entry[c].flags & _PDCLIB_CTYPE_SPACE ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( isspace( ' ' ) ); TESTCASE( isspace( '\f' ) ); TESTCASE( isspace( '\n' ) ); TESTCASE( isspace( '\r' ) ); TESTCASE( isspace( '\t' ) ); TESTCASE( isspace( '\v' ) ); TESTCASE( ! isspace( 'a' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/islower.c0000644000175000001440000000114614676735310024227 0ustar mhxusers/* islower( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int islower( int c ) { return ( _PDCLIB_lc_ctype->entry[c].flags & _PDCLIB_CTYPE_LOWER ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( islower( 'a' ) ); TESTCASE( islower( 'z' ) ); TESTCASE( ! islower( 'A' ) ); TESTCASE( ! islower( 'Z' ) ); TESTCASE( ! islower( ' ' ) ); TESTCASE( ! islower( '@' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/isalnum.c0000644000175000001440000000125314676735310024212 0ustar mhxusers/* isalnum( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int isalnum( int c ) { return ( isdigit( c ) || isalpha( c ) ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( isalnum( 'a' ) ); TESTCASE( isalnum( 'z' ) ); TESTCASE( isalnum( 'A' ) ); TESTCASE( isalnum( 'Z' ) ); TESTCASE( isalnum( '0' ) ); TESTCASE( isalnum( '9' ) ); TESTCASE( ! isalnum( ' ' ) ); TESTCASE( ! isalnum( '\n' ) ); TESTCASE( ! isalnum( '@' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/toupper.c0000644000175000001440000000115614676735310024242 0ustar mhxusers/* toupper( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int toupper( int c ) { return _PDCLIB_lc_ctype->entry[c].upper; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( toupper( 'a' ) == 'A' ); TESTCASE( toupper( 'z' ) == 'Z' ); TESTCASE( toupper( 'A' ) == 'A' ); TESTCASE( toupper( 'Z' ) == 'Z' ); TESTCASE( toupper( '@' ) == '@' ); TESTCASE( toupper( '[' ) == '[' ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/isxdigit.c0000644000175000001440000000161714676735310024372 0ustar mhxusers/* isxdigit( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int isxdigit( int c ) { return ( isdigit( c ) || ( c >= _PDCLIB_lc_ctype->Xdigits_low && c <= _PDCLIB_lc_ctype->Xdigits_high ) || ( c >= _PDCLIB_lc_ctype->xdigits_low && c <= _PDCLIB_lc_ctype->xdigits_high ) ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( isxdigit( '0' ) ); TESTCASE( isxdigit( '9' ) ); TESTCASE( isxdigit( 'a' ) ); TESTCASE( isxdigit( 'f' ) ); TESTCASE( ! isxdigit( 'g' ) ); TESTCASE( isxdigit( 'A' ) ); TESTCASE( isxdigit( 'F' ) ); TESTCASE( ! isxdigit( 'G' ) ); TESTCASE( ! isxdigit( '@' ) ); TESTCASE( ! isxdigit( ' ' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/iscntrl.c0000644000175000001440000000104314676735310024215 0ustar mhxusers/* iscntrl( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int iscntrl( int c ) { return ( _PDCLIB_lc_ctype->entry[c].flags & _PDCLIB_CTYPE_CNTRL ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( iscntrl( '\a' ) ); TESTCASE( iscntrl( '\b' ) ); TESTCASE( iscntrl( '\n' ) ); TESTCASE( ! iscntrl( ' ' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/isdigit.c0000644000175000001440000000112514676735310024174 0ustar mhxusers/* isdigit( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int isdigit( int c ) { return ( c >= _PDCLIB_lc_ctype->digits_low && c <= _PDCLIB_lc_ctype->digits_high ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( isdigit( '0' ) ); TESTCASE( isdigit( '9' ) ); TESTCASE( ! isdigit( ' ' ) ); TESTCASE( ! isdigit( 'a' ) ); TESTCASE( ! isdigit( '@' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/isblank.c0000644000175000001440000000115114676735310024162 0ustar mhxusers/* isblank( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int isblank( int c ) { return ( _PDCLIB_lc_ctype->entry[c].flags & _PDCLIB_CTYPE_BLANK ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( isblank( ' ' ) ); TESTCASE( isblank( '\t' ) ); TESTCASE( ! isblank( '\v' ) ); TESTCASE( ! isblank( '\r' ) ); TESTCASE( ! isblank( 'x' ) ); TESTCASE( ! isblank( '@' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/isprint.c0000644000175000001440000000137514676735310024237 0ustar mhxusers/* isprint( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int isprint( int c ) { /* FIXME: Space as of current locale charset, not source charset. */ return ( _PDCLIB_lc_ctype->entry[c].flags & _PDCLIB_CTYPE_GRAPH ) || ( c == ' ' ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( isprint( 'a' ) ); TESTCASE( isprint( 'z' ) ); TESTCASE( isprint( 'A' ) ); TESTCASE( isprint( 'Z' ) ); TESTCASE( isprint( '@' ) ); TESTCASE( ! isprint( '\t' ) ); TESTCASE( ! isprint( '\0' ) ); TESTCASE( isprint( ' ' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/isupper.c0000644000175000001440000000114614676735310024232 0ustar mhxusers/* isupper( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int isupper( int c ) { return ( _PDCLIB_lc_ctype->entry[c].flags & _PDCLIB_CTYPE_UPPER ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( isupper( 'A' ) ); TESTCASE( isupper( 'Z' ) ); TESTCASE( ! isupper( 'a' ) ); TESTCASE( ! isupper( 'z' ) ); TESTCASE( ! isupper( ' ' ) ); TESTCASE( ! isupper( '@' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/isalpha.c0000644000175000001440000000110414676735310024156 0ustar mhxusers/* isalpha( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int isalpha( int c ) { return ( _PDCLIB_lc_ctype->entry[c].flags & _PDCLIB_CTYPE_ALPHA ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( isalpha( 'a' ) ); TESTCASE( isalpha( 'z' ) ); TESTCASE( ! isalpha( ' ' ) ); TESTCASE( ! isalpha( '1' ) ); TESTCASE( ! isalpha( '@' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/ctype/isgraph.c0000644000175000001440000000124614676735310024201 0ustar mhxusers/* isgraph( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include int isgraph( int c ) { return ( _PDCLIB_lc_ctype->entry[c].flags & _PDCLIB_CTYPE_GRAPH ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( isgraph( 'a' ) ); TESTCASE( isgraph( 'z' ) ); TESTCASE( isgraph( 'A' ) ); TESTCASE( isgraph( 'Z' ) ); TESTCASE( isgraph( '@' ) ); TESTCASE( ! isgraph( '\t' ) ); TESTCASE( ! isgraph( '\0' ) ); TESTCASE( ! isgraph( ' ' ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/0000755000175000001440000000000014677003524022526 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/quick_exit.c0000644000175000001440000000142114676735310025041 0ustar mhxusers/* quick_exit( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST /* TODO - "...except that a function is called after any previously registered functions that had already been called at the time it was registered." */ void ( *_PDCLIB_quickexitstack[ _PDCLIB_ATEXIT_SLOTS ] )( void ); size_t _PDCLIB_quickexitptr = 0; void quick_exit( int status ) { while ( _PDCLIB_quickexitptr != 0 ) { _PDCLIB_quickexitstack[ --_PDCLIB_quickexitptr ](); } _Exit( status ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Unwinding of regstack tested in at_quick_exit(). */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/ldiv.c0000644000175000001440000000157614676735310023645 0ustar mhxusers/* ldiv( long int, long int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST ldiv_t ldiv( long int numer, long int denom ) { ldiv_t rc; rc.quot = numer / denom; rc.rem = numer % denom; /* TODO: pre-C99 compilers might require modulus corrections */ return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { ldiv_t result; result = ldiv( 5, 2 ); TESTCASE( result.quot == 2 && result.rem == 1 ); result = ldiv( -5, 2 ); TESTCASE( result.quot == -2 && result.rem == -1 ); result = ldiv( 5, -2 ); TESTCASE( result.quot == -2 && result.rem == 1 ); TESTCASE( sizeof( result.quot ) == sizeof( long ) ); TESTCASE( sizeof( result.rem ) == sizeof( long ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/_Exit.c0000644000175000001440000000100014676735310023735 0ustar mhxusers/* _Exit( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" void _Exit( int status ) { _PDCLIB_closeall(); _PDCLIB_Exit( status ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { int UNEXPECTED_RETURN = 0; _Exit( 0 ); TESTCASE( UNEXPECTED_RETURN ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/atexit.c0000644000175000001440000000201414676735310024171 0ustar mhxusers/* atexit( void (*)( void ) ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST extern void ( *_PDCLIB_exitstack[] )( void ); extern size_t _PDCLIB_exitptr; int atexit( void ( *func )( void ) ) { if ( _PDCLIB_exitptr == _PDCLIB_ATEXIT_SLOTS ) { return -1; } else { _PDCLIB_exitstack[ _PDCLIB_exitptr++ ] = func; return 0; } } #endif #ifdef TEST #include "_PDCLIB_test.h" #include static int flags[ 32 ]; static void counthandler( void ) { static int count = 0; flags[ count ] = count; ++count; } static void checkhandler( void ) { int i; for ( i = 0; i < 32; ++i ) { assert( flags[ i ] == i ); } } int main( void ) { int i; TESTCASE( atexit( &checkhandler ) == 0 ); for ( i = 0; i < 32; ++i ) { TESTCASE( atexit( &counthandler ) == 0 ); } return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/labs.c0000644000175000001440000000101214676735310023611 0ustar mhxusers/* labs( long int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST long int labs( long int j ) { return ( j >= 0 ) ? j : -j; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { TESTCASE( labs( 0 ) == 0 ); TESTCASE( labs( LONG_MAX ) == LONG_MAX ); TESTCASE( labs( LONG_MIN + 1 ) == -( LONG_MIN + 1 ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/set_constraint_handler_s.c0000644000175000001440000000214614676735310027757 0ustar mhxusers/* set_constraint_handler_s( constraint_handler_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #ifndef REGTEST constraint_handler_t _PDCLIB_constraint_handler = abort_handler_s; constraint_handler_t set_constraint_handler_s( constraint_handler_t handler ) { constraint_handler_t previous = _PDCLIB_constraint_handler; if ( handler == NULL ) { _PDCLIB_constraint_handler = abort_handler_s; } else { _PDCLIB_constraint_handler = handler; } return previous; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( _PDCLIB_constraint_handler == abort_handler_s ); TESTCASE( set_constraint_handler_s( ignore_handler_s ) == abort_handler_s ); TESTCASE( _PDCLIB_constraint_handler == ignore_handler_s ); TESTCASE( set_constraint_handler_s( NULL ) == ignore_handler_s ); TESTCASE( _PDCLIB_constraint_handler == abort_handler_s ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/at_quick_exit.c0000644000175000001440000000230114676735310025523 0ustar mhxusers/* at_quick_exit( void (*)( void ) ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST extern void ( *_PDCLIB_quickexitstack[] )( void ); extern size_t _PDCLIB_quickexitptr; int at_quick_exit( void ( *func )( void ) ) { if ( _PDCLIB_quickexitptr == _PDCLIB_ATEXIT_SLOTS ) { return -1; } else { _PDCLIB_quickexitstack[ _PDCLIB_quickexitptr++ ] = func; return 0; } } #endif #ifdef TEST #include "_PDCLIB_test.h" #include #if ! defined( REGTEST ) || __STDC_VERSION__ >= 201112L static int flags[ 32 ]; static void counthandler( void ) { static int count = 0; flags[ count ] = count; ++count; } static void checkhandler( void ) { int i; for ( i = 0; i < 32; ++i ) { assert( flags[ i ] == i ); } } #endif int main( void ) { #if ! defined( REGTEST ) || __STDC_VERSION__ >= 201112L int i; TESTCASE( at_quick_exit( &checkhandler ) == 0 ); for ( i = 0; i < 32; ++i ) { TESTCASE( at_quick_exit( &counthandler ) == 0 ); } #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/strtol.c0000644000175000001440000001153514676735310024232 0ustar mhxusers/* strtol( const char *, char **, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #include long int strtol( const char * s, char ** endptr, int base ) { long int rc; char sign = '+'; const char * p = _PDCLIB_strtox_prelim( s, &sign, &base ); if ( base < 2 || base > 36 ) { return 0; } if ( sign == '+' ) { rc = ( long int )_PDCLIB_strtox_main( &p, ( unsigned )base, ( uintmax_t )LONG_MAX, ( uintmax_t )( LONG_MAX / base ), ( int )( LONG_MAX % base ), &sign ); } else { rc = ( long int )_PDCLIB_strtox_main( &p, ( unsigned )base, ( uintmax_t )LONG_MIN, ( uintmax_t )( LONG_MIN / -base ), ( int )( -( LONG_MIN % base ) ), &sign ); } if ( endptr != NULL ) { *endptr = ( p != NULL ) ? ( char * ) p : ( char * ) s; } return ( sign == '+' ) ? rc : -rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { char * endptr; /* this, to base 36, overflows even a 256 bit integer */ char overflow[] = "-ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ_"; /* tricky border case */ char tricky[] = "+0xz"; errno = 0; /* basic functionality */ TESTCASE( strtol( "123", NULL, 10 ) == 123 ); /* proper detecting of default base 10 */ TESTCASE( strtol( "456", NULL, 0 ) == 456 ); /* proper functioning to smaller base */ TESTCASE( strtol( "14", NULL, 8 ) == 12 ); /* proper autodetecting of octal */ TESTCASE( strtol( "016", NULL, 0 ) == 14 ); /* proper autodetecting of hexadecimal, lowercase 'x' */ TESTCASE( strtol( "0xFF", NULL, 0 ) == 255 ); /* proper autodetecting of hexadecimal, uppercase 'X' */ TESTCASE( strtol( "0Xa1", NULL, 0 ) == 161 ); /* proper handling of border case: 0x followed by non-hexdigit */ TESTCASE( strtol( tricky, &endptr, 0 ) == 0 ); TESTCASE( endptr == tricky + 2 ); /* proper handling of border case: 0 followed by non-octdigit */ TESTCASE( strtol( tricky, &endptr, 8 ) == 0 ); TESTCASE( endptr == tricky + 2 ); /* errno should still be 0 */ TESTCASE( errno == 0 ); /* correctly decoding zero */ TESTCASE( strtol( "0", &endptr, 0 ) == 0 ); TESTCASE( *endptr == '\0' ); TESTCASE( errno == 0 ); /* overflowing subject sequence must still return proper endptr */ TESTCASE( strtol( overflow, &endptr, 36 ) == LONG_MIN ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* same for positive */ errno = 0; TESTCASE( strtol( overflow + 1, &endptr, 36 ) == LONG_MAX ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* testing skipping of leading whitespace */ TESTCASE( strtol( " \n\v\t\f789", NULL, 0 ) == 789 ); /* testing conversion failure */ TESTCASE( strtol( overflow, &endptr, 10 ) == 0 ); TESTCASE( endptr == overflow ); endptr = NULL; TESTCASE( strtol( overflow, &endptr, 0 ) == 0 ); TESTCASE( endptr == overflow ); /* TODO: These tests assume two-complement, but conversion should work */ /* for one-complement and signed magnitude just as well. Anyone having */ /* a platform to test this on? */ errno = 0; #if LONG_MAX >> 30 == 1 /* testing "even" overflow, i.e. base is power of two */ TESTCASE( strtol( "2147483647", NULL, 0 ) == 0x7fffffff ); TESTCASE( errno == 0 ); errno = 0; TESTCASE( strtol( "2147483648", NULL, 0 ) == LONG_MAX ); TESTCASE( errno == ERANGE ); errno = 0; TESTCASE( strtol( "-2147483647", NULL, 0 ) == ( long )0x80000001 ); TESTCASE( errno == 0 ); errno = 0; TESTCASE( strtol( "-2147483648", NULL, 0 ) == LONG_MIN ); TESTCASE( errno == 0 ); errno = 0; TESTCASE( strtol( "-2147483649", NULL, 0 ) == LONG_MIN ); TESTCASE( errno == ERANGE ); /* TODO: test "odd" overflow, i.e. base is not power of two */ #elif LONG_MAX >> 62 == 1 /* testing "even" overflow, i.e. base is power of two */ TESTCASE( strtol( "9223372036854775807", NULL, 0 ) == 0x7fffffffffffffff ); TESTCASE( errno == 0 ); errno = 0; TESTCASE( strtol( "9223372036854775808", NULL, 0 ) == LONG_MAX ); TESTCASE( errno == ERANGE ); errno = 0; TESTCASE( strtol( "-9223372036854775807", NULL, 0 ) == ( long )0x8000000000000001 ); TESTCASE( errno == 0 ); errno = 0; TESTCASE( strtol( "-9223372036854775808", NULL, 0 ) == LONG_MIN ); TESTCASE( errno == 0 ); errno = 0; TESTCASE( strtol( "-9223372036854775809", NULL, 0 ) == LONG_MIN ); TESTCASE( errno == ERANGE ); /* TODO: test "odd" overflow, i.e. base is not power of two */ #else #error Unsupported width of 'long' (neither 32 nor 64 bit). #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/qsort_s.c0000644000175000001440000001400114676735310024364 0ustar mhxusers/* qsort( void *, size_t, size_t, int(*)( const void *, const void * ) ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #ifndef REGTEST /* This implementation is taken from Paul Edward's PDPCLIB. Original code is credited to Raymond Gardner, Englewood CO. Minor mods are credited to Paul Edwards. Some reformatting and simplification done by Martin Baute. All code is still Public Domain. */ /* Wrapper for _PDCLIB_memswp protects against multiple argument evaluation. */ static _PDCLIB_inline void memswp( char * i, char * j, size_t size ) { _PDCLIB_memswp( i, j, size ); } /* For small sets, insertion sort is faster than quicksort. T is the threshold below which insertion sort will be used. Must be 3 or larger. */ #define T 7 /* Macros for handling the QSort stack */ #define PREPARE_STACK char * stack[STACKSIZE]; char ** stackptr = stack #define PUSH( base, limit ) stackptr[0] = base; stackptr[1] = limit; stackptr += 2 #define POP( base, limit ) stackptr -= 2; base = stackptr[0]; limit = stackptr[1] /* TODO: Stack usage is log2( nmemb ) (minus what T shaves off the worst case). Worst-case nmemb is platform dependent and should probably be configured through _PDCLIB_config.h. */ #define STACKSIZE 64 errno_t qsort_s( void * base, rsize_t nmemb, rsize_t size, int ( *compar )( const void *, const void *, void * ), void * context ) { char * i; char * j; _PDCLIB_size_t thresh = T * size; char * base_ = ( char * )base; char * limit = base_ + nmemb * size; PREPARE_STACK; if ( nmemb > RSIZE_MAX || size > RSIZE_MAX || ( nmemb > 0 && ( base == NULL || compar == NULL ) ) ) { _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } for ( ;; ) { if ( ( size_t )( limit - base_ ) > thresh ) /* QSort for more than T elements. */ { /* We work from second to last - first will be pivot element. */ i = base_ + size; j = limit - size; /* We swap first with middle element, then sort that with second and last element so that eventually first element is the median of the three - avoiding pathological pivots. TODO: Instead of middle element, chose one randomly. */ memswp( ( ( ( ( size_t )( limit - base_ ) ) / size ) / 2 ) * size + base_, base_, size ); if ( compar( i, j, context ) > 0 ) { memswp( i, j, size ); } if ( compar( base_, j, context ) > 0 ) { memswp( base_, j, size ); } if ( compar( i, base_, context ) > 0 ) { memswp( i, base_, size ); } /* Now we have the median for pivot element, entering main Quicksort. */ for ( ;; ) { do { /* move i right until *i >= pivot */ i += size; } while ( compar( i, base_, context ) < 0 ); do { /* move j left until *j <= pivot */ j -= size; } while ( compar( j, base_, context ) > 0 ); if ( i > j ) { /* break loop if pointers crossed */ break; } /* else swap elements, keep scanning */ memswp( i, j, size ); } /* move pivot into correct place */ memswp( base_, j, size ); /* larger subfile base / limit to stack, sort smaller */ if ( j - base_ > limit - i ) { /* left is larger */ PUSH( base_, j ); base_ = i; } else { /* right is larger */ PUSH( i, limit ); limit = j; } } else /* insertion sort for less than T elements */ { for ( j = base_, i = j + size; i < limit; j = i, i += size ) { for ( ; compar( j, j + size, context ) > 0; j -= size ) { memswp( j, j + size, size ); if ( j == base_ ) { break; } } } if ( stackptr != stack ) /* if any entries on stack */ { POP( base_, limit ); } else /* else stack empty, done */ { break; } } } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include #include #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int compare( const void * left, const void * right, void * context ) { return *( ( unsigned char * )left ) - *( ( unsigned char * )right ); } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) char presort[] = { "shreicnyjqpvozxmbt" }; char sorted1[] = { "bcehijmnopqrstvxyz" }; char sorted2[] = { "bticjqnyozpvreshxm" }; char s[19]; strcpy( s, presort ); qsort_s( s, 18, 1, compare, NULL ); TESTCASE( strcmp( s, sorted1 ) == 0 ); strcpy( s, presort ); qsort_s( s, 9, 2, compare, NULL ); TESTCASE( strcmp( s, sorted2 ) == 0 ); strcpy( s, presort ); qsort_s( s, 1, 1, compare, NULL ); TESTCASE( strcmp( s, presort ) == 0 ); #if defined( REGTEST ) && ( defined( __BSD_VISIBLE ) || defined( __APPLE__ ) ) puts( "qsort_s.c: Skipping test #4 for BSD as it goes into endless loop here." ); #else qsort_s( s, 100, 0, compare, NULL ); TESTCASE( strcmp( s, presort ) == 0 ); #endif #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/abort.c0000644000175000001440000000116214676735310024005 0ustar mhxusers/* abort( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST void abort( void ) { raise( SIGABRT ); exit( EXIT_FAILURE ); } #endif #ifdef TEST #include "_PDCLIB_test.h" #include static void aborthandler( int sig ) { exit( 0 ); } int main( void ) { int UNEXPECTED_RETURN_FROM_ABORT = 0; TESTCASE( signal( SIGABRT, &aborthandler ) != SIG_ERR ); abort(); TESTCASE( UNEXPECTED_RETURN_FROM_ABORT ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/bsearch.c0000644000175000001440000000331114676735310024303 0ustar mhxusers/* bsearch( const void *, const void *, size_t, size_t, int(*)( const void *, const void * ) ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST void * bsearch( const void * key, const void * base, size_t nmemb, size_t size, int ( *compar )( const void *, const void * ) ) { const void * pivot; int rc; size_t corr; while ( nmemb ) { /* algorithm needs -1 correction if remaining elements are an even number. */ corr = nmemb % 2; nmemb /= 2; pivot = ( const char * )base + ( nmemb * size ); rc = compar( key, pivot ); if ( rc > 0 ) { base = ( const char * )pivot + size; /* applying correction */ nmemb -= ( 1 - corr ); } else if ( rc == 0 ) { return ( void * )pivot; } } return NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" static int compare( const void * left, const void * right ) { return *( ( unsigned char * )left ) - *( ( unsigned char * )right ); } int main( void ) { TESTCASE( bsearch( "e", abcde, 4, 1, compare ) == NULL ); TESTCASE( bsearch( "e", abcde, 5, 1, compare ) == &abcde[4] ); TESTCASE( bsearch( "a", abcde + 1, 4, 1, compare ) == NULL ); TESTCASE( bsearch( "0", abcde, 1, 1, compare ) == NULL ); TESTCASE( bsearch( "a", abcde, 1, 1, compare ) == &abcde[0] ); TESTCASE( bsearch( "a", abcde, 0, 1, compare ) == NULL ); TESTCASE( bsearch( "e", abcde, 3, 2, compare ) == &abcde[4] ); TESTCASE( bsearch( "b", abcde, 3, 2, compare ) == NULL ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/llabs.c0000644000175000001440000000103714676735310023774 0ustar mhxusers/* llabs( long int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST long long int llabs( long long int j ) { return ( j >= 0 ) ? j : -j; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { TESTCASE( llabs( 0ll ) == 0 ); TESTCASE( llabs( LLONG_MAX ) == LLONG_MAX ); TESTCASE( llabs( LLONG_MIN + 1 ) == -( LLONG_MIN + 1 ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/strtoll.c0000644000175000001440000001200714676735310024401 0ustar mhxusers/* strtoll( const char *, char **, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #include long long int strtoll( const char * s, char ** endptr, int base ) { long long int rc; char sign = '+'; const char * p = _PDCLIB_strtox_prelim( s, &sign, &base ); if ( base < 2 || base > 36 ) { return 0; } if ( sign == '+' ) { rc = ( long long int )_PDCLIB_strtox_main( &p, ( unsigned )base, ( uintmax_t )LLONG_MAX, ( uintmax_t )( LLONG_MAX / base ), ( int )( LLONG_MAX % base ), &sign ); } else { rc = ( long long int )_PDCLIB_strtox_main( &p, ( unsigned )base, ( uintmax_t )LLONG_MIN, ( uintmax_t )( LLONG_MIN / -base ), ( int )( -( LLONG_MIN % base ) ), &sign ); } if ( endptr != NULL ) { *endptr = ( p != NULL ) ? ( char * ) p : ( char * ) s; } return ( sign == '+' ) ? rc : -rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { char * endptr; /* this, to base 36, overflows even a 256 bit integer */ char overflow[] = "-ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ_"; /* tricky border case */ char tricky[] = "+0xz"; errno = 0; /* basic functionality */ TESTCASE( strtoll( "123", NULL, 10 ) == 123 ); /* proper detecting of default base 10 */ TESTCASE( strtoll( "456", NULL, 0 ) == 456 ); /* proper functioning to smaller base */ TESTCASE( strtoll( "14", NULL, 8 ) == 12 ); /* proper autodetecting of octal */ TESTCASE( strtoll( "016", NULL, 0 ) == 14 ); /* proper autodetecting of hexadecimal, lowercase 'x' */ TESTCASE( strtoll( "0xFF", NULL, 0 ) == 255 ); /* proper autodetecting of hexadecimal, uppercase 'X' */ TESTCASE( strtoll( "0Xa1", NULL, 0 ) == 161 ); /* proper handling of border case: 0x followed by non-hexdigit */ TESTCASE( strtoll( tricky, &endptr, 0 ) == 0 ); TESTCASE( endptr == tricky + 2 ); /* proper handling of border case: 0 followed by non-octdigit */ TESTCASE( strtoll( tricky, &endptr, 8 ) == 0 ); TESTCASE( endptr == tricky + 2 ); /* errno should still be 0 */ TESTCASE( errno == 0 ); /* correctly decoding zero */ TESTCASE( strtoll( "0", &endptr, 0 ) == 0 ); TESTCASE( *endptr == '\0' ); TESTCASE( errno == 0 ); /* overflowing subject sequence must still return proper endptr */ TESTCASE( strtoll( overflow, &endptr, 36 ) == LLONG_MIN ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* same for positive */ errno = 0; TESTCASE( strtoll( overflow + 1, &endptr, 36 ) == LLONG_MAX ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* testing skipping of leading whitespace */ TESTCASE( strtoll( " \n\v\t\f789", NULL, 0 ) == 789 ); /* testing conversion failure */ TESTCASE( strtoll( overflow, &endptr, 10 ) == 0 ); TESTCASE( endptr == overflow ); endptr = NULL; TESTCASE( strtoll( overflow, &endptr, 0 ) == 0 ); TESTCASE( endptr == overflow ); /* TODO: These tests assume two-complement, but conversion should work */ /* for one-complement and signed magnitude just as well. Anyone having */ /* a platform to test this on? */ errno = 0; #if LLONG_MAX >> 62 == 1 /* testing "even" overflow, i.e. base is power of two */ TESTCASE( strtoll( "9223372036854775807", NULL, 0 ) == 0x7fffffffffffffff ); TESTCASE( errno == 0 ); TESTCASE( strtoll( "9223372036854775808", NULL, 0 ) == LLONG_MAX ); TESTCASE( errno == ERANGE ); errno = 0; TESTCASE( strtoll( "-9223372036854775807", NULL, 0 ) == ( long long )0x8000000000000001 ); TESTCASE( errno == 0 ); TESTCASE( strtoll( "-9223372036854775808", NULL, 0 ) == LLONG_MIN ); TESTCASE( errno == 0 ); TESTCASE( strtoll( "-9223372036854775809", NULL, 0 ) == LLONG_MIN ); TESTCASE( errno == ERANGE ); /* TODO: test "odd" overflow, i.e. base is not power of two */ #elif LLONG_MAX >> 126 == 1 /* testing "even" overflow, i.e. base is power of two */ TESTCASE( strtoll( "170141183460469231731687303715884105728", NULL, 0 ) == 0x7fffffffffffffffffffffffffffffff ); TESTCASE( errno == 0 ); TESTCASE( strtoll( "170141183460469231731687303715884105729", NULL, 0 ) == LLONG_MAX ); TESTCASE( errno == ERANGE ); errno = 0; TESTCASE( strtoll( "-170141183460469231731687303715884105728", NULL, 0 ) == -0x80000000000000000000000000000001 ); TESTCASE( errno == 0 ); TESTCASE( strtoll( "-170141183460469231731687303715884105729", NULL, 0 ) == LLONG_MIN ); TESTCASE( errno == 0 ); TESTCASE( strtoll( "-170141183460469231731687303715884105730", NULL, 0 ) == LLONG_MIN ); TESTCASE( errno == ERANGE ); /* TODO: test "odd" overflow, i.e. base is not power of two */ #else #error Unsupported width of 'long long' (neither 64 nor 128 bit). #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/strtoul.c0000644000175000001440000001004414676735310024411 0ustar mhxusers/* strtoul( const char *, char **, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #include unsigned long int strtoul( const char * s, char ** endptr, int base ) { unsigned long int rc; char sign = '+'; const char * p = _PDCLIB_strtox_prelim( s, &sign, &base ); if ( base < 2 || base > 36 ) { return 0; } rc = ( unsigned long int )_PDCLIB_strtox_main( &p, ( unsigned )base, ( uintmax_t )ULONG_MAX, ( uintmax_t )( ULONG_MAX / base ), ( int )( ULONG_MAX % base ), &sign ); if ( endptr != NULL ) { *endptr = ( p != NULL ) ? ( char * ) p : ( char * ) s; } return ( sign == '+' ) ? rc : -rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { char * endptr; /* this, to base 36, overflows even a 256 bit integer */ char overflow[] = "-ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ_"; /* tricky border case */ char tricky[] = "+0xz"; errno = 0; /* basic functionality */ TESTCASE( strtoul( "123", NULL, 10 ) == 123 ); /* proper detecting of default base 10 */ TESTCASE( strtoul( "456", NULL, 0 ) == 456 ); /* proper functioning to smaller base */ TESTCASE( strtoul( "14", NULL, 8 ) == 12 ); /* proper autodetecting of octal */ TESTCASE( strtoul( "016", NULL, 0 ) == 14 ); /* proper autodetecting of hexadecimal, lowercase 'x' */ TESTCASE( strtoul( "0xFF", NULL, 0 ) == 255 ); /* proper autodetecting of hexadecimal, uppercase 'X' */ TESTCASE( strtoul( "0Xa1", NULL, 0 ) == 161 ); /* proper handling of border case: 0x followed by non-hexdigit */ TESTCASE( strtoul( tricky, &endptr, 0 ) == 0 ); TESTCASE( endptr == tricky + 2 ); /* proper handling of border case: 0 followed by non-octdigit */ TESTCASE( strtoul( tricky, &endptr, 8 ) == 0 ); TESTCASE( endptr == tricky + 2 ); /* errno should still be 0 */ TESTCASE( errno == 0 ); /* correctly decoding zero */ TESTCASE( strtoul( "0", &endptr, 0 ) == 0 ); TESTCASE( *endptr == '\0' ); TESTCASE( errno == 0 ); /* overflowing subject sequence must still return proper endptr */ TESTCASE( strtoul( overflow, &endptr, 36 ) == ULONG_MAX ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* same for positive */ errno = 0; TESTCASE( strtoul( overflow + 1, &endptr, 36 ) == ULONG_MAX ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* testing skipping of leading whitespace */ TESTCASE( strtoul( " \n\v\t\f789", NULL, 0 ) == 789 ); /* testing conversion failure */ TESTCASE( strtoul( overflow, &endptr, 10 ) == 0 ); TESTCASE( endptr == overflow ); endptr = NULL; TESTCASE( strtoul( overflow, &endptr, 0 ) == 0 ); TESTCASE( endptr == overflow ); /* TODO: These tests assume two-complement, but conversion should work */ /* for one-complement and signed magnitude just as well. Anyone having */ /* a platform to test this on? */ errno = 0; /* long -> 32 bit */ #if ULONG_MAX >> 31 == 1 /* testing "even" overflow, i.e. base is power of two */ TESTCASE( strtoul( "4294967295", NULL, 0 ) == ULONG_MAX ); TESTCASE( errno == 0 ); errno = 0; TESTCASE( strtoul( "4294967296", NULL, 0 ) == ULONG_MAX ); TESTCASE( errno == ERANGE ); /* TODO: test "odd" overflow, i.e. base is not power of two */ /* long -> 64 bit */ #elif ULONG_MAX >> 63 == 1 /* testing "even" overflow, i.e. base is power of two */ TESTCASE( strtoul( "18446744073709551615", NULL, 0 ) == ULONG_MAX ); TESTCASE( errno == 0 ); errno = 0; TESTCASE( strtoul( "18446744073709551616", NULL, 0 ) == ULONG_MAX ); TESTCASE( errno == ERANGE ); /* TODO: test "odd" overflow, i.e. base is not power of two */ #else #error Unsupported width of 'long' (neither 32 nor 64 bit). #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/srand.c0000644000175000001440000000061114676735310024003 0ustar mhxusers/* srand( unsigned int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST void srand( unsigned int seed ) { _PDCLIB_seed = seed; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* tested in rand.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/exit.c0000644000175000001440000000134514676735310023652 0ustar mhxusers/* exit( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST /* TODO - "...except that a function is called after any previously registered functions that had already been called at the time it was registered." */ void ( *_PDCLIB_exitstack[ _PDCLIB_ATEXIT_SLOTS ] )( void ); size_t _PDCLIB_exitptr = 0; void exit( int status ) { while ( _PDCLIB_exitptr != 0 ) { _PDCLIB_exitstack[ --_PDCLIB_exitptr ](); } _Exit( status ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Unwinding of regstack tested in atexit(). */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/bsearch_s.c0000644000175000001440000000434414676735310024634 0ustar mhxusers/* bsearch( const void *, const void *, size_t, size_t, int(*)( const void *, const void * ) ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #ifndef REGTEST void * bsearch_s( const void * key, const void * base, rsize_t nmemb, rsize_t size, int ( *compar )( const void *, const void *, void * ), void * context ) { const void * pivot; int rc; size_t corr; if ( nmemb > RSIZE_MAX || size > RSIZE_MAX || ( nmemb > 0 && ( key == NULL || base == NULL || compar == NULL ) ) ) { _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return NULL; } while ( nmemb ) { /* algorithm needs -1 correction if remaining elements are an even number. */ corr = nmemb % 2; nmemb /= 2; pivot = ( const char * )base + ( nmemb * size ); rc = compar( key, pivot, context ); if ( rc > 0 ) { base = ( const char * )pivot + size; /* applying correction */ nmemb -= ( 1 - corr ); } else if ( rc == 0 ) { return ( void * )pivot; } } return NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int compare( const void * left, const void * right, void * context ) { return *( ( unsigned char * )left ) - *( ( unsigned char * )right ); } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) TESTCASE( bsearch_s( "e", abcde, 4, 1, compare, NULL ) == NULL ); TESTCASE( bsearch_s( "e", abcde, 5, 1, compare, NULL ) == &abcde[4] ); TESTCASE( bsearch_s( "a", abcde + 1, 4, 1, compare, NULL ) == NULL ); TESTCASE( bsearch_s( "0", abcde, 1, 1, compare, NULL ) == NULL ); TESTCASE( bsearch_s( "a", abcde, 1, 1, compare, NULL ) == &abcde[0] ); TESTCASE( bsearch_s( "a", abcde, 0, 1, compare, NULL ) == NULL ); TESTCASE( bsearch_s( "e", abcde, 3, 2, compare, NULL ) == &abcde[4] ); TESTCASE( bsearch_s( "b", abcde, 3, 2, compare, NULL ) == NULL ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/abort_handler_s.c0000644000175000001440000000112214676735310026020 0ustar mhxusers/* abort_handler_s( const char *, void *, errno_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #ifndef REGTEST #include void abort_handler_s( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t errno ) { fprintf( stderr, "abort handler called:\n%s\n", msg ); abort(); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( NO_TESTDRIVER ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/atoll.c0000644000175000001440000000066514676735310024020 0ustar mhxusers/* atoll( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST long long int atoll( const char * s ) { return ( long long int ) _PDCLIB_atomax( s ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* no tests for a simple wrapper */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/strtoull.c0000644000175000001440000000757414676735310024603 0ustar mhxusers/* strtoull( const char *, char **, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #include unsigned long long int strtoull( const char * s, char ** endptr, int base ) { unsigned long long int rc; char sign = '+'; const char * p = _PDCLIB_strtox_prelim( s, &sign, &base ); if ( base < 2 || base > 36 ) { return 0; } rc = _PDCLIB_strtox_main( &p, ( unsigned )base, ( uintmax_t )ULLONG_MAX, ( uintmax_t )( ULLONG_MAX / base ), ( int )( ULLONG_MAX % base ), &sign ); if ( endptr != NULL ) { *endptr = ( p != NULL ) ? ( char * ) p : ( char * ) s; } return ( sign == '+' ) ? rc : -rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { char * endptr; /* this, to base 36, overflows even a 256 bit integer */ char overflow[] = "-ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ_"; /* tricky border case */ char tricky[] = "+0xz"; errno = 0; /* basic functionality */ TESTCASE( strtoull( "123", NULL, 10 ) == 123 ); /* proper detecting of default base 10 */ TESTCASE( strtoull( "456", NULL, 0 ) == 456 ); /* proper functioning to smaller base */ TESTCASE( strtoull( "14", NULL, 8 ) == 12 ); /* proper autodetecting of octal */ TESTCASE( strtoull( "016", NULL, 0 ) == 14 ); /* proper autodetecting of hexadecimal, lowercase 'x' */ TESTCASE( strtoull( "0xFF", NULL, 0 ) == 255 ); /* proper autodetecting of hexadecimal, uppercase 'X' */ TESTCASE( strtoull( "0Xa1", NULL, 0 ) == 161 ); /* proper handling of border case: 0x followed by non-hexdigit */ TESTCASE( strtoull( tricky, &endptr, 0 ) == 0 ); TESTCASE( endptr == tricky + 2 ); /* proper handling of border case: 0 followed by non-octdigit */ TESTCASE( strtoull( tricky, &endptr, 8 ) == 0 ); TESTCASE( endptr == tricky + 2 ); /* errno should still be 0 */ TESTCASE( errno == 0 ); /* correctly decoding zero */ TESTCASE( strtoull( "0", &endptr, 0 ) == 0 ); TESTCASE( *endptr == '\0' ); TESTCASE( errno == 0 ); /* overflowing subject sequence must still return proper endptr */ TESTCASE( strtoull( overflow, &endptr, 36 ) == ULLONG_MAX ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* same for positive */ errno = 0; TESTCASE( strtoull( overflow + 1, &endptr, 36 ) == ULLONG_MAX ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* testing skipping of leading whitespace */ TESTCASE( strtoull( " \n\v\t\f789", NULL, 0 ) == 789 ); /* testing conversion failure */ TESTCASE( strtoull( overflow, &endptr, 10 ) == 0 ); TESTCASE( endptr == overflow ); endptr = NULL; TESTCASE( strtoull( overflow, &endptr, 0 ) == 0 ); TESTCASE( endptr == overflow ); errno = 0; /* long long -> 64 bit */ #if ULLONG_MAX >> 63 == 1 /* testing "even" overflow, i.e. base is power of two */ TESTCASE( strtoull( "18446744073709551615", NULL, 0 ) == ULLONG_MAX ); TESTCASE( errno == 0 ); TESTCASE( strtoull( "18446744073709551616", NULL, 0 ) == ULLONG_MAX ); TESTCASE( errno == ERANGE ); /* TODO: test "odd" overflow, i.e. base is not power of two */ /* long long -> 128 bit */ #elif ULLONG_MAX >> 127 == 1 /* testing "even" overflow, i.e. base is power of two */ TESTCASE( strtoull( "340282366920938463463374607431768211455", NULL, 0 ) == ULLONG_MAX ); TESTCASE( errno == 0 ); TESTCASE( strtoull( "340282366920938463463374607431768211456", NULL, 0 ) == ULLONG_MAX ); TESTCASE( errno == ERANGE ); /* TODO: test "odd" overflow, i.e. base is not power of two */ #else #error Unsupported width of 'long long' (neither 64 nor 128 bit). #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/div.c0000644000175000001440000000154014676735310023460 0ustar mhxusers/* div( int, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST div_t div( int numer, int denom ) { div_t rc; rc.quot = numer / denom; rc.rem = numer % denom; /* TODO: pre-C99 compilers might require modulus corrections */ return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { div_t result; result = div( 5, 2 ); TESTCASE( result.quot == 2 && result.rem == 1 ); result = div( -5, 2 ); TESTCASE( result.quot == -2 && result.rem == -1 ); result = div( 5, -2 ); TESTCASE( result.quot == -2 && result.rem == 1 ); TESTCASE( sizeof( result.quot ) == sizeof( int ) ); TESTCASE( sizeof( result.rem ) == sizeof( int ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/atoi.c0000644000175000001440000000063714676735310023640 0ustar mhxusers/* atoi( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int atoi( const char * s ) { return ( int ) _PDCLIB_atomax( s ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* no tests for a simple wrapper */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/rand.c0000644000175000001440000000114714676735310023625 0ustar mhxusers/* rand( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int rand( void ) { _PDCLIB_seed = _PDCLIB_seed * 1103515245 + 12345; return ( int )( _PDCLIB_seed / 65536 ) % 32768; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { int rnd1, rnd2; TESTCASE( ( rnd1 = rand() ) < RAND_MAX ); TESTCASE( ( rnd2 = rand() ) < RAND_MAX ); srand( 1 ); TESTCASE( rand() == rnd1 ); TESTCASE( rand() == rnd2 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/atol.c0000644000175000001440000000065114676735310023637 0ustar mhxusers/* atol( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST long int atol( const char * s ) { return ( long int ) _PDCLIB_atomax( s ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* no tests for a simple wrapper */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/lldiv.c0000644000175000001440000000166014676735310024013 0ustar mhxusers/* lldiv( long long int, long long int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST lldiv_t lldiv( long long int numer, long long int denom ) { lldiv_t rc; rc.quot = numer / denom; rc.rem = numer % denom; /* TODO: pre-C99 compilers might require modulus corrections */ return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { lldiv_t result; result = lldiv( 5ll, 2ll ); TESTCASE( result.quot == 2 && result.rem == 1 ); result = lldiv( -5ll, 2ll ); TESTCASE( result.quot == -2 && result.rem == -1 ); result = lldiv( 5ll, -2ll ); TESTCASE( result.quot == -2 && result.rem == 1 ); TESTCASE( sizeof( result.quot ) == sizeof( long long ) ); TESTCASE( sizeof( result.rem ) == sizeof( long long ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/abs.c0000644000175000001440000000076214676735310023450 0ustar mhxusers/* abs( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST int abs( int j ) { return ( j >= 0 ) ? j : -j; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { TESTCASE( abs( 0 ) == 0 ); TESTCASE( abs( INT_MAX ) == INT_MAX ); TESTCASE( abs( INT_MIN + 1 ) == -( INT_MIN + 1 ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/qsort.c0000644000175000001440000001271214676735310024051 0ustar mhxusers/* qsort( void *, size_t, size_t, int(*)( const void *, const void * ) ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST /* This implementation is taken from Paul Edward's PDPCLIB. Original code is credited to Raymond Gardner, Englewood CO. Minor mods are credited to Paul Edwards. Some reformatting and simplification done by Martin Baute. All code is still Public Domain. */ /* Wrapper for _PDCLIB_memswp protects against multiple argument evaluation. */ static _PDCLIB_inline void memswp( char * i, char * j, size_t size ) { _PDCLIB_memswp( i, j, size ); } /* For small sets, insertion sort is faster than quicksort. T is the threshold below which insertion sort will be used. Must be 3 or larger. */ #define T 7 /* Macros for handling the QSort stack */ #define PREPARE_STACK char * stack[STACKSIZE]; char ** stackptr = stack #define PUSH( base, limit ) stackptr[0] = base; stackptr[1] = limit; stackptr += 2 #define POP( base, limit ) stackptr -= 2; base = stackptr[0]; limit = stackptr[1] /* TODO: Stack usage is log2( nmemb ) (minus what T shaves off the worst case). Worst-case nmemb is platform dependent and should probably be configured through _PDCLIB_config.h. */ #define STACKSIZE 64 void qsort( void * base, size_t nmemb, size_t size, int ( *compar )( const void *, const void * ) ) { char * i; char * j; _PDCLIB_size_t thresh = T * size; char * base_ = ( char * )base; char * limit = base_ + nmemb * size; PREPARE_STACK; for ( ;; ) { if ( ( size_t )( limit - base_ ) > thresh ) /* QSort for more than T elements. */ { /* We work from second to last - first will be pivot element. */ i = base_ + size; j = limit - size; /* We swap first with middle element, then sort that with second and last element so that eventually first element is the median of the three - avoiding pathological pivots. TODO: Instead of middle element, chose one randomly. */ memswp( ( ( ( ( size_t )( limit - base_ ) ) / size ) / 2 ) * size + base_, base_, size ); if ( compar( i, j ) > 0 ) { memswp( i, j, size ); } if ( compar( base_, j ) > 0 ) { memswp( base_, j, size ); } if ( compar( i, base_ ) > 0 ) { memswp( i, base_, size ); } /* Now we have the median for pivot element, entering main Quicksort. */ for ( ;; ) { do { /* move i right until *i >= pivot */ i += size; } while ( compar( i, base_ ) < 0 ); do { /* move j left until *j <= pivot */ j -= size; } while ( compar( j, base_ ) > 0 ); if ( i > j ) { /* break loop if pointers crossed */ break; } /* else swap elements, keep scanning */ memswp( i, j, size ); } /* move pivot into correct place */ memswp( base_, j, size ); /* larger subfile base / limit to stack, sort smaller */ if ( j - base_ > limit - i ) { /* left is larger */ PUSH( base_, j ); base_ = i; } else { /* right is larger */ PUSH( i, limit ); limit = j; } } else /* insertion sort for less than T elements */ { for ( j = base_, i = j + size; i < limit; j = i, i += size ) { for ( ; compar( j, j + size ) > 0; j -= size ) { memswp( j, j + size, size ); if ( j == base_ ) { break; } } } if ( stackptr != stack ) /* if any entries on stack */ { POP( base_, limit ); } else /* else stack empty, done */ { break; } } } } #endif #ifdef TEST #include "_PDCLIB_test.h" #include #include static int compare( const void * left, const void * right ) { return *( ( unsigned char * )left ) - *( ( unsigned char * )right ); } int main( void ) { char presort[] = { "shreicnyjqpvozxmbt" }; char sorted1[] = { "bcehijmnopqrstvxyz" }; char sorted2[] = { "bticjqnyozpvreshxm" }; char s[19]; strcpy( s, presort ); qsort( s, 18, 1, compare ); TESTCASE( strcmp( s, sorted1 ) == 0 ); strcpy( s, presort ); qsort( s, 9, 2, compare ); TESTCASE( strcmp( s, sorted2 ) == 0 ); strcpy( s, presort ); qsort( s, 1, 1, compare ); TESTCASE( strcmp( s, presort ) == 0 ); #if defined( REGTEST ) && ( defined( __BSD_VISIBLE ) || defined( __APPLE__ ) ) puts( "qsort.c: Skipping test #4 for BSD as it goes into endless loop here." ); #else qsort( s, 100, 0, compare ); TESTCASE( strcmp( s, presort ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/stdlib/ignore_handler_s.c0000644000175000001440000000103014676735310026172 0ustar mhxusers/* ignore_handler_s( const char *, void *, errno_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #ifndef REGTEST #include void ignore_handler_s( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t errno ) { return; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( NO_TESTDRIVER ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/inttypes/0000755000175000001440000000000014677003524023124 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/inttypes/strtoimax.c0000644000175000001440000001411014676735310025323 0ustar mhxusers/* strtoimax( const char *, char **, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #include intmax_t strtoimax( const char * _PDCLIB_restrict nptr, char ** _PDCLIB_restrict endptr, int base ) { intmax_t rc; char sign = '+'; const char * p = _PDCLIB_strtox_prelim( nptr, &sign, &base ); if ( base < 2 || base > 36 ) { return 0; } if ( sign == '+' ) { rc = ( intmax_t )_PDCLIB_strtox_main( &p, ( unsigned )base, ( uintmax_t )INTMAX_MAX, ( uintmax_t )( INTMAX_MAX / base ), ( int )( INTMAX_MAX % base ), &sign ); } else { rc = ( intmax_t )_PDCLIB_strtox_main( &p, ( unsigned )base, ( uintmax_t )INTMAX_MIN, ( uintmax_t )( INTMAX_MIN / -base ), ( int )( -( INTMAX_MIN % base ) ), &sign ); } if ( endptr != NULL ) { *endptr = ( p != NULL ) ? ( char * ) p : ( char * ) nptr; } return ( sign == '+' ) ? rc : -rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { char * endptr; /* this, to base 36, overflows even a 256 bit integer */ char overflow[] = "-ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ_"; /* tricky border case */ char tricky[] = "+0xz"; errno = 0; /* basic functionality */ TESTCASE( strtoimax( "123", NULL, 10 ) == 123 ); /* proper detecting of default base 10 */ TESTCASE( strtoimax( "456", NULL, 0 ) == 456 ); /* proper functioning to smaller base */ TESTCASE( strtoimax( "14", NULL, 8 ) == 12 ); /* proper autodetecting of octal */ TESTCASE( strtoimax( "016", NULL, 0 ) == 14 ); /* proper autodetecting of hexadecimal, lowercase 'x' */ TESTCASE( strtoimax( "0xFF", NULL, 0 ) == 255 ); /* proper autodetecting of hexadecimal, uppercase 'X' */ TESTCASE( strtoimax( "0Xa1", NULL, 0 ) == 161 ); /* proper handling of border case: 0x followed by non-hexdigit */ TESTCASE( strtoimax( tricky, &endptr, 0 ) == 0 ); TESTCASE_NOREG( endptr == tricky + 2 ); /* proper handling of border case: 0 followed by non-octdigit */ TESTCASE( strtoimax( tricky, &endptr, 8 ) == 0 ); TESTCASE( endptr == tricky + 2 ); /* errno should still be 0 */ TESTCASE( errno == 0 ); /* overflowing subject sequence must still return proper endptr */ TESTCASE( strtoimax( overflow, &endptr, 36 ) == INTMAX_MIN ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* same for positive */ errno = 0; TESTCASE( strtoimax( overflow + 1, &endptr, 36 ) == INTMAX_MAX ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* testing skipping of leading whitespace */ TESTCASE( strtoimax( " \n\v\t\f789", NULL, 0 ) == 789 ); /* testing conversion failure */ TESTCASE( strtoimax( overflow, &endptr, 10 ) == 0 ); TESTCASE( endptr == overflow ); endptr = NULL; TESTCASE( strtoimax( overflow, &endptr, 0 ) == 0 ); TESTCASE( endptr == overflow ); /* These tests assume two-complement, but conversion should work for */ /* one-complement and signed magnitude just as well. Anyone having a */ /* platform to test this on? */ errno = 0; #if INTMAX_MAX >> 62 == 1 /* testing "odd" overflow, i.e. base is not a power of two */ TESTCASE( strtoimax( "9223372036854775807", NULL, 0 ) == INTMAX_MAX ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "9223372036854775808", NULL, 0 ) == INTMAX_MAX ); TESTCASE( errno == ERANGE ); errno = 0; TESTCASE( strtoimax( "-9223372036854775807", NULL, 0 ) == ( INTMAX_MIN + 1 ) ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "-9223372036854775808", NULL, 0 ) == INTMAX_MIN ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "-9223372036854775809", NULL, 0 ) == INTMAX_MIN ); TESTCASE( errno == ERANGE ); /* testing "even" overflow, i.e. base is power of two */ errno = 0; TESTCASE( strtoimax( "0x7fffffffffffffff", NULL, 0 ) == INTMAX_MAX ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "0x8000000000000000", NULL, 0 ) == INTMAX_MAX ); TESTCASE( errno == ERANGE ); errno = 0; TESTCASE( strtoimax( "-0x7fffffffffffffff", NULL, 0 ) == ( INTMAX_MIN + 1 ) ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "-0x8000000000000000", NULL, 0 ) == INTMAX_MIN ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "-0x8000000000000001", NULL, 0 ) == INTMAX_MIN ); TESTCASE( errno == ERANGE ); #elif LLONG_MAX >> 126 == 1 /* testing "odd" overflow, i.e. base is not a power of two */ TESTCASE( strtoimax( "170141183460469231731687303715884105728", NULL, 0 ) == INTMAX_MAX ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "170141183460469231731687303715884105729", NULL, 0 ) == INTMAX_MAX ); TESTCASE( errno == ERANGE ); errno = 0; TESTCASE( strtoimax( "-170141183460469231731687303715884105728", NULL, 0 ) == ( INTMAX_MIN + 1 ) ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "-170141183460469231731687303715884105729", NULL, 0 ) == INTMAX_MIN ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "-170141183460469231731687303715884105730", NULL, 0 ) == INTMAX_MIN ); TESTCASE( errno == ERANGE ); /* testing "even" overflow, i.e. base is power of two */ errno = 0; TESTCASE( strtoimax( "0x7fffffffffffffffffffffffffffffff", NULL, 0 ) == INTMAX_MAX ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "0x80000000000000000000000000000000", NULL, 0 ) == INTMAX_MAX ); TESTCASE( errno == ERANGE ); errno = 0; TESTCASE( strtoimax( "-0x7fffffffffffffffffffffffffffffff", NULL, 0 ) == ( INTMAX_MIN + 1 ) ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "-0x80000000000000000000000000000000", NULL, 0 ) == INTMAX_MIN ); TESTCASE( errno == 0 ); TESTCASE( strtoimax( "-0x80000000000000000000000000000001", NULL, 0 ) == INTMAX_MIN ); TESTCASE( errno == ERANGE ); #else #error Unsupported width of 'intmax_t' (neither 64 nor 128 bit). #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/inttypes/imaxabs.c0000644000175000001440000000105714676735310024723 0ustar mhxusers/* imaxabs( intmax_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST intmax_t imaxabs( intmax_t j ) { return ( j >= 0 ) ? j : -j; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { TESTCASE( imaxabs( ( intmax_t )0 ) == 0 ); TESTCASE( imaxabs( INTMAX_MAX ) == INTMAX_MAX ); TESTCASE( imaxabs( INTMAX_MIN + 1 ) == -( INTMAX_MIN + 1 ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/inttypes/strtoumax.c0000644000175000001440000001042414676735310025343 0ustar mhxusers/* strtoumax( const char *, char **, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #ifndef REGTEST #include uintmax_t strtoumax( const char * _PDCLIB_restrict nptr, char ** _PDCLIB_restrict endptr, int base ) { uintmax_t rc; char sign = '+'; const char * p = _PDCLIB_strtox_prelim( nptr, &sign, &base ); if ( base < 2 || base > 36 ) { return 0; } rc = _PDCLIB_strtox_main( &p, ( unsigned )base, ( uintmax_t )UINTMAX_MAX, ( uintmax_t )( UINTMAX_MAX / base ), ( int )( UINTMAX_MAX % base ), &sign ); if ( endptr != NULL ) { *endptr = ( p != NULL ) ? ( char * ) p : ( char * ) nptr; } return ( sign == '+' ) ? rc : -rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { char * endptr; /* this, to base 36, overflows even a 256 bit integer */ char overflow[] = "-ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ_"; /* tricky border case */ char tricky[] = "+0xz"; errno = 0; /* basic functionality */ TESTCASE( strtoumax( "123", NULL, 10 ) == 123 ); /* proper detecting of default base 10 */ TESTCASE( strtoumax( "456", NULL, 0 ) == 456 ); /* proper functioning to smaller base */ TESTCASE( strtoumax( "14", NULL, 8 ) == 12 ); /* proper autodetecting of octal */ TESTCASE( strtoumax( "016", NULL, 0 ) == 14 ); /* proper autodetecting of hexadecimal, lowercase 'x' */ TESTCASE( strtoumax( "0xFF", NULL, 0 ) == 255 ); /* proper autodetecting of hexadecimal, uppercase 'X' */ TESTCASE( strtoumax( "0Xa1", NULL, 0 ) == 161 ); /* proper handling of border case: 0x followed by non-hexdigit */ TESTCASE( strtoumax( tricky, &endptr, 0 ) == 0 ); TESTCASE_NOREG( endptr == tricky + 2 ); /* proper handling of border case: 0 followed by non-octdigit */ TESTCASE( strtoumax( tricky, &endptr, 8 ) == 0 ); TESTCASE( endptr == tricky + 2 ); /* errno should still be 0 */ TESTCASE( errno == 0 ); /* overflowing subject sequence must still return proper endptr */ TESTCASE( strtoumax( overflow, &endptr, 36 ) == UINTMAX_MAX ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* same for positive */ errno = 0; TESTCASE( strtoumax( overflow + 1, &endptr, 36 ) == UINTMAX_MAX ); TESTCASE( errno == ERANGE ); TESTCASE( ( endptr - overflow ) == 53 ); /* testing skipping of leading whitespace */ TESTCASE( strtoumax( " \n\v\t\f789", NULL, 0 ) == 789 ); /* testing conversion failure */ TESTCASE( strtoumax( overflow, &endptr, 10 ) == 0 ); TESTCASE( endptr == overflow ); endptr = NULL; TESTCASE( strtoumax( overflow, &endptr, 0 ) == 0 ); TESTCASE( endptr == overflow ); errno = 0; /* uintmax_t -> long long -> 64 bit */ #if UINTMAX_MAX >> 63 == 1 /* testing "odd" overflow, i.e. base is not power of two */ TESTCASE( strtoumax( "18446744073709551615", NULL, 0 ) == UINTMAX_MAX ); TESTCASE( errno == 0 ); TESTCASE( strtoumax( "18446744073709551616", NULL, 0 ) == UINTMAX_MAX ); TESTCASE( errno == ERANGE ); /* testing "even" overflow, i.e. base is power of two */ errno = 0; TESTCASE( strtoumax( "0xFFFFFFFFFFFFFFFF", NULL, 0 ) == UINTMAX_MAX ); TESTCASE( errno == 0 ); TESTCASE( strtoumax( "0x10000000000000000", NULL, 0 ) == UINTMAX_MAX ); TESTCASE( errno == ERANGE ); /* uintmax_t -> long long -> 128 bit */ #elif UINTMAX_MAX >> 127 == 1 /* testing "odd" overflow, i.e. base is not power of two */ TESTCASE( strtoumax( "340282366920938463463374607431768211455", NULL, 0 ) == UINTMAX_MAX ); TESTCASE( errno == 0 ); TESTCASE( strtoumax( "340282366920938463463374607431768211456", NULL, 0 ) == UINTMAX_MAX ); TESTCASE( errno == ERANGE ); /* testing "even" everflow, i.e. base is power of two */ errno = 0; TESTCASE( strtoumax( "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", NULL, 0 ) == UINTMAX_MAX ); TESTCASE( errno == 0 ); TESTCASE( strtoumax( "0x100000000000000000000000000000000", NULL, 0 ) == UINTMAX_MAX ); TESTCASE( errno == ERANGE ); #else #error Unsupported width of 'uintmax_t' (neither 64 nor 128 bit). #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/inttypes/imaxdiv.c0000644000175000001440000000165414676735310024743 0ustar mhxusers/* lldiv( long long int, long long int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST imaxdiv_t imaxdiv( intmax_t numer, intmax_t denom ) { imaxdiv_t rc; rc.quot = numer / denom; rc.rem = numer % denom; return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { imaxdiv_t result; result = imaxdiv( ( intmax_t )5, ( intmax_t )2 ); TESTCASE( result.quot == 2 && result.rem == 1 ); result = imaxdiv( ( intmax_t )-5, ( intmax_t )2 ); TESTCASE( result.quot == -2 && result.rem == -1 ); result = imaxdiv( ( intmax_t )5, ( intmax_t )-2 ); TESTCASE( result.quot == -2 && result.rem == 1 ); TESTCASE( sizeof( result.quot ) == sizeof( intmax_t ) ); TESTCASE( sizeof( result.rem ) == sizeof( intmax_t ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/locale/0000755000175000001440000000000014677003524022504 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/locale/localeconv.c0000644000175000001440000000116514676735310025004 0ustar mhxusers/* localeconv( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST struct lconv * localeconv( void ) { return _PDCLIB_lc_numeric_monetary.lconv; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { struct lconv * lconv; TESTCASE( ( lconv = localeconv() ) != NULL ); TESTCASE( strcmp( lconv->decimal_point, "." ) == 0 ); TESTCASE( strcmp( lconv->thousands_sep, "" ) == 0 ); TESTCASE( strcmp( lconv->grouping, "" ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/locale/setlocale.c0000644000175000001440000002047214676735310024634 0ustar mhxusers/* setlocale( int, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #ifndef REGTEST #if 0 static const char * _PDCLIB_LC_category_name[ _PDCLIB_LC_COUNT ] = { NULL, "LC_COLLATE", "LC_CTYPE", "LC_MONETARY", "LC_NUMERIC", "LC_TIME", "LC_MESSAGES" }; static const char * _PDCLIB_default_locale( int category ) { const char * s; /* The standard states (7.22.4.6 (3), "the implementation shall behave as if no library function calls the getenv function." That is, however, in context of the previous paragraph stating that getenv "need not avoid data races with other threads of execution that modify the environment list". PDCLib does not provide means of modifying the environment list. */ if ( ( s = getenv( "LC_ALL" ) ) == NULL ) { if ( category == LC_ALL || ( s = getenv( _PDCLIB_LC_category_name[ category ] ) ) == NULL ) { if ( ( s = getenv( "LANG" ) ) == NULL ) { s = "C"; } } } return s; } #endif char * setlocale( int category, const char * locale ) { /* All below is very much work-in-progress, so we do a dumb-dummy return here. */ if ( locale == NULL || ! strcmp( locale, "C" ) ) { return ( char * )"C"; } else { return NULL; } #if 0 /* Path to locale data files - _PDCLIB_LOCALE_PATH unless overruled by the environment variable whose name is defined by preprocessor symbol _PDCLIB_LOCALE_PATH_ENV (defaulting to PDCLIB_I18N). Both of these definitions are set in _PDCLIB_config.h. */ const char * path = _PDCLIB_LOCALE_PATH; struct _PDCLIB_lc_lconv_numeric_t * numeric = NULL; struct _PDCLIB_lc_lconv_monetary_t * monetary = NULL; struct _PDCLIB_lc_collate_t * collate = NULL; struct _PDCLIB_lc_ctype_t * ctype = NULL; struct _PDCLIB_lc_messages_t * messages = NULL; struct _PDCLIB_lc_time_t * time = NULL; char * rc = ( char * )locale; if ( category < 0 || category >= _PDCLIB_LC_COUNT ) { /* Bad category */ return NULL; } if ( locale == NULL ) { /* NULL - Return current locale settings */ /* TODO */ } if ( strlen( locale ) == 0 ) { /* "" - Use default locale */ locale = _PDCLIB_default_locale( category ); } if ( getenv( _PDCLIB_value2string( _PDCLIB_LOCALE_PATH_ENV ) ) != NULL ) { path = getenv( _PDCLIB_value2string( _PDCLIB_LOCALE_PATH_ENV ) ); } /* We have to do this in two runs. As we might be facing LC_ALL, we need to be certain all the loads are successful before we start to overwrite the current locale settings, because there is no way this function could report a _partial_ success. */ /* Run One -- get all the data for the new locale setting */ if ( category == LC_COLLATE || category == LC_ALL ) { if ( !( collate = _PDCLIB_load_lc_collate( path, locale ) ) ) { rc = NULL; } } if ( category == LC_CTYPE || category == LC_ALL ) { if ( !( ctype = _PDCLIB_load_lc_ctype( path, locale ) ) ) { rc = NULL; } } if ( category == LC_MONETARY || category == LC_ALL ) { if ( !( monetary = _PDCLIB_load_lc_monetary( path, locale ) ) ) { rc = NULL; } } if ( category == LC_NUMERIC || category == LC_ALL ) { if ( !( numeric = _PDCLIB_load_lc_numeric( path, locale ) ) ) { rc = NULL; } } if ( category == LC_TIME || category == LC_ALL ) { if ( !( time = _PDCLIB_load_lc_time( path, locale ) ) ) { rc = NULL; } } if ( category == LC_MESSAGES || category == LC_ALL ) { if ( !( messages = _PDCLIB_load_lc_messages( path, locale ) ) ) { rc = NULL; } } /* Run Two -- continue or release resources */ if ( rc != NULL ) { if ( category == LC_COLLATE || category == LC_ALL ) { if ( _PDCLIB_lc_collate->alloced ) { /* free resources */ } *_PDCLIB_lc_collate = *collate; free( collate ); } if ( category == LC_CTYPE || category == LC_ALL ) { if ( _PDCLIB_lc_ctype->alloced ) { free( _PDCLIB_lc_ctype->entry - 1 ); } *_PDCLIB_lc_ctype = *ctype; free( ctype ); } if ( category == LC_MONETARY || category == LC_ALL ) { if ( _PDCLIB_lc_numeric_monetary.monetary_alloced ) { free( _PDCLIB_lc_numeric_monetary.lconv->mon_decimal_point ); } _PDCLIB_lc_numeric_monetary.lconv->mon_decimal_point = monetary->mon_decimal_point; _PDCLIB_lc_numeric_monetary.lconv->mon_thousands_sep = monetary->mon_thousands_sep; _PDCLIB_lc_numeric_monetary.lconv->mon_grouping = monetary->mon_grouping; _PDCLIB_lc_numeric_monetary.lconv->positive_sign = monetary->positive_sign; _PDCLIB_lc_numeric_monetary.lconv->negative_sign = monetary->negative_sign; _PDCLIB_lc_numeric_monetary.lconv->currency_symbol = monetary->currency_symbol; _PDCLIB_lc_numeric_monetary.lconv->int_curr_symbol = monetary->int_curr_symbol; _PDCLIB_lc_numeric_monetary.lconv->frac_digits = monetary->frac_digits; _PDCLIB_lc_numeric_monetary.lconv->p_cs_precedes = monetary->p_cs_precedes; _PDCLIB_lc_numeric_monetary.lconv->n_cs_precedes = monetary->n_cs_precedes; _PDCLIB_lc_numeric_monetary.lconv->p_sep_by_space = monetary->p_sep_by_space; _PDCLIB_lc_numeric_monetary.lconv->n_sep_by_space = monetary->n_sep_by_space; _PDCLIB_lc_numeric_monetary.lconv->p_sign_posn = monetary->p_sign_posn; _PDCLIB_lc_numeric_monetary.lconv->n_sign_posn = monetary->n_sign_posn; _PDCLIB_lc_numeric_monetary.lconv->int_frac_digits = monetary->int_frac_digits; _PDCLIB_lc_numeric_monetary.lconv->int_p_cs_precedes = monetary->int_p_cs_precedes; _PDCLIB_lc_numeric_monetary.lconv->int_n_cs_precedes = monetary->int_n_cs_precedes; _PDCLIB_lc_numeric_monetary.lconv->int_p_sep_by_space = monetary->int_p_sep_by_space; _PDCLIB_lc_numeric_monetary.lconv->int_n_sep_by_space = monetary->int_n_sep_by_space; _PDCLIB_lc_numeric_monetary.lconv->int_p_sign_posn = monetary->int_p_sign_posn; _PDCLIB_lc_numeric_monetary.lconv->int_n_sign_posn = monetary->int_n_sign_posn; _PDCLIB_lc_numeric_monetary.monetary_alloced = 1; free( monetary ); } if ( category == LC_NUMERIC || category == LC_ALL ) { if ( _PDCLIB_lc_numeric_monetary.numeric_alloced ) { free( _PDCLIB_lc_numeric_monetary.lconv->decimal_point ); } _PDCLIB_lc_numeric_monetary.lconv->decimal_point = numeric->decimal_point; _PDCLIB_lc_numeric_monetary.lconv->thousands_sep = numeric->thousands_sep; _PDCLIB_lc_numeric_monetary.lconv->grouping = numeric->grouping; _PDCLIB_lc_numeric_monetary.numeric_alloced = 1; free( numeric ); } if ( category == LC_TIME || category == LC_ALL ) { if ( _PDCLIB_lc_time->alloced ) { free( _PDCLIB_lc_time->month_name_abbr[ 0 ] ); } *_PDCLIB_lc_time = *time; free( time ); } if ( category == LC_MESSAGES || category == LC_ALL ) { if ( _PDCLIB_lc_messages->alloced ) { free( _PDCLIB_lc_messages->errno_texts[ 0 ] ); } *_PDCLIB_lc_messages = *messages; free( messages ); } } return NULL; #endif } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( strcmp( setlocale( LC_ALL, "C" ), "C" ) == 0 ); #ifndef REGTEST TESTCASE( setlocale( LC_ALL, "" ) == NULL ); #endif TESTCASE( strcmp( setlocale( LC_ALL, NULL ), "C" ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/functions/_dlmalloc/0000755000175000001440000000000014677003524023173 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/functions/_dlmalloc/malloc.c0000644000175000001440000066351514676735310024632 0ustar mhxusers/* malloc( size_t ) calloc( size_t, size_t ) realloc( void *, size_t ) aligned_alloc( size_t, size_t ) free( void * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. It is a slightly modified copy of Doug Lea's malloc(), retrieved from ftp://gee.cs.oswego.edu/pub/misc/malloc.c at version 2.8.6, which is released under CC0 license just as PDCLib. */ /* Declared implicitly by dlmalloc. This declaration avoids the warning. */ #include void * sbrk( intptr_t ); #ifndef REGTEST #include "_PDCLIB_config.h" /* Have all functions herein use the dl* prefix */ #define USE_DL_PREFIX 1 /* Thread safety */ #define USE_LOCKS 1 /* Hide all functions herein as internal to the library */ #define DLMALLOC_EXPORT _PDCLIB_LOCAL /* Unhide the standard functions. (Their declarations with the DLMALLOC_EXPORT modifier below has been commented out; they are declared _PDCLIB_PUBLIC in , marking them exported from the library.) */ #define dlmalloc malloc #define dlcalloc calloc #define dlrealloc realloc #define dlfree free #if __STDC_VERSION__ >= 201112L #define dlmemalign aligned_alloc #endif #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( NO_TESTDRIVER ); return TEST_RESULTS; } #endif /* ------------------------------------------------------------------- */ /* This is a version (aka dlmalloc) of malloc/free/realloc written by Doug Lea and released to the public domain, as explained at http://creativecommons.org/publicdomain/zero/1.0/ Send questions, comments, complaints, performance data, etc to dl@cs.oswego.edu * Version 2.8.6 Wed Aug 29 06:57:58 2012 Doug Lea Note: There may be an updated version of this malloc obtainable at ftp://gee.cs.oswego.edu/pub/misc/malloc.c Check before installing! * Quickstart This library is all in one file to simplify the most common usage: ftp it, compile it (-O3), and link it into another program. All of the compile-time options default to reasonable values for use on most platforms. You might later want to step through various compile-time and dynamic tuning options. For convenience, an include file for code using this malloc is at: ftp://gee.cs.oswego.edu/pub/misc/malloc-2.8.6.h You don't really need this .h file unless you call functions not defined in your system include files. The .h file contains only the excerpts from this file needed for using this malloc on ANSI C/C++ systems, so long as you haven't changed compile-time options about naming and tuning parameters. If you do, then you can create your own malloc.h that does include all settings by cutting at the point indicated below. Note that you may already by default be using a C library containing a malloc that is based on some version of this malloc (for example in linux). You might still want to use the one in this file to customize settings or to avoid overheads associated with library versions. * Vital statistics: Supported pointer/size_t representation: 4 or 8 bytes size_t MUST be an unsigned type of the same width as pointers. (If you are using an ancient system that declares size_t as a signed type, or need it to be a different width than pointers, you can use a previous release of this malloc (e.g. 2.7.2) supporting these.) Alignment: 8 bytes (minimum) This suffices for nearly all current machines and C compilers. However, you can define MALLOC_ALIGNMENT to be wider than this if necessary (up to 128bytes), at the expense of using more space. Minimum overhead per allocated chunk: 4 or 8 bytes (if 4byte sizes) 8 or 16 bytes (if 8byte sizes) Each malloced chunk has a hidden word of overhead holding size and status information, and additional cross-check word if FOOTERS is defined. Minimum allocated size: 4-byte ptrs: 16 bytes (including overhead) 8-byte ptrs: 32 bytes (including overhead) Even a request for zero bytes (i.e., malloc(0)) returns a pointer to something of the minimum allocatable size. The maximum overhead wastage (i.e., number of extra bytes allocated than were requested in malloc) is less than or equal to the minimum size, except for requests >= mmap_threshold that are serviced via mmap(), where the worst case wastage is about 32 bytes plus the remainder from a system page (the minimal mmap unit); typically 4096 or 8192 bytes. Security: static-safe; optionally more or less The "security" of malloc refers to the ability of malicious code to accentuate the effects of errors (for example, freeing space that is not currently malloc'ed or overwriting past the ends of chunks) in code that calls malloc. This malloc guarantees not to modify any memory locations below the base of heap, i.e., static variables, even in the presence of usage errors. The routines additionally detect most improper frees and reallocs. All this holds as long as the static bookkeeping for malloc itself is not corrupted by some other means. This is only one aspect of security -- these checks do not, and cannot, detect all possible programming errors. If FOOTERS is defined nonzero, then each allocated chunk carries an additional check word to verify that it was malloced from its space. These check words are the same within each execution of a program using malloc, but differ across executions, so externally crafted fake chunks cannot be freed. This improves security by rejecting frees/reallocs that could corrupt heap memory, in addition to the checks preventing writes to statics that are always on. This may further improve security at the expense of time and space overhead. (Note that FOOTERS may also be worth using with MSPACES.) By default detected errors cause the program to abort (calling "abort()"). You can override this to instead proceed past errors by defining PROCEED_ON_ERROR. In this case, a bad free has no effect, and a malloc that encounters a bad address caused by user overwrites will ignore the bad address by dropping pointers and indices to all known memory. This may be appropriate for programs that should continue if at all possible in the face of programming errors, although they may run out of memory because dropped memory is never reclaimed. If you don't like either of these options, you can define CORRUPTION_ERROR_ACTION and USAGE_ERROR_ACTION to do anything else. And if if you are sure that your program using malloc has no errors or vulnerabilities, you can define INSECURE to 1, which might (or might not) provide a small performance improvement. It is also possible to limit the maximum total allocatable space, using malloc_set_footprint_limit. This is not designed as a security feature in itself (calls to set limits are not screened or privileged), but may be useful as one aspect of a secure implementation. Thread-safety: NOT thread-safe unless USE_LOCKS defined non-zero When USE_LOCKS is defined, each public call to malloc, free, etc is surrounded with a lock. By default, this uses a plain pthread mutex, win32 critical section, or a spin-lock if if available for the platform and not disabled by setting USE_SPIN_LOCKS=0. However, if USE_RECURSIVE_LOCKS is defined, recursive versions are used instead (which are not required for base functionality but may be needed in layered extensions). Using a global lock is not especially fast, and can be a major bottleneck. It is designed only to provide minimal protection in concurrent environments, and to provide a basis for extensions. If you are using malloc in a concurrent program, consider instead using nedmalloc (http://www.nedprod.com/programs/portable/nedmalloc/) or ptmalloc (See http://www.malloc.de), which are derived from versions of this malloc. System requirements: Any combination of MORECORE and/or MMAP/MUNMAP This malloc can use unix sbrk or any emulation (invoked using the CALL_MORECORE macro) and/or mmap/munmap or any emulation (invoked using CALL_MMAP/CALL_MUNMAP) to get and release system memory. On most unix systems, it tends to work best if both MORECORE and MMAP are enabled. On Win32, it uses emulations based on VirtualAlloc. It also uses common C library functions like memset. Compliance: I believe it is compliant with the Single Unix Specification (See http://www.unix.org). Also SVID/XPG, ANSI C, and probably others as well. * Overview of algorithms This is not the fastest, most space-conserving, most portable, or most tunable malloc ever written. However it is among the fastest while also being among the most space-conserving, portable and tunable. Consistent balance across these factors results in a good general-purpose allocator for malloc-intensive programs. In most ways, this malloc is a best-fit allocator. Generally, it chooses the best-fitting existing chunk for a request, with ties broken in approximately least-recently-used order. (This strategy normally maintains low fragmentation.) However, for requests less than 256bytes, it deviates from best-fit when there is not an exactly fitting available chunk by preferring to use space adjacent to that used for the previous small request, as well as by breaking ties in approximately most-recently-used order. (These enhance locality of series of small allocations.) And for very large requests (>= 256Kb by default), it relies on system memory mapping facilities, if supported. (This helps avoid carrying around and possibly fragmenting memory used only for large chunks.) All operations (except malloc_stats and mallinfo) have execution times that are bounded by a constant factor of the number of bits in a size_t, not counting any clearing in calloc or copying in realloc, or actions surrounding MORECORE and MMAP that have times proportional to the number of non-contiguous regions returned by system allocation routines, which is often just 1. In real-time applications, you can optionally suppress segment traversals using NO_SEGMENT_TRAVERSAL, which assures bounded execution even when system allocators return non-contiguous spaces, at the typical expense of carrying around more memory and increased fragmentation. The implementation is not very modular and seriously overuses macros. Perhaps someday all C compilers will do as good a job inlining modular code as can now be done by brute-force expansion, but now, enough of them seem not to. Some compilers issue a lot of warnings about code that is dead/unreachable only on some platforms, and also about intentional uses of negation on unsigned types. All known cases of each can be ignored. For a longer but out of date high-level description, see http://gee.cs.oswego.edu/dl/html/malloc.html * MSPACES If MSPACES is defined, then in addition to malloc, free, etc., this file also defines mspace_malloc, mspace_free, etc. These are versions of malloc routines that take an "mspace" argument obtained using create_mspace, to control all internal bookkeeping. If ONLY_MSPACES is defined, only these versions are compiled. So if you would like to use this allocator for only some allocations, and your system malloc for others, you can compile with ONLY_MSPACES and then do something like... static mspace mymspace = create_mspace(0,0); // for example #define mymalloc(bytes) mspace_malloc(mymspace, bytes) (Note: If you only need one instance of an mspace, you can instead use "USE_DL_PREFIX" to relabel the global malloc.) You can similarly create thread-local allocators by storing mspaces as thread-locals. For example: static __thread mspace tlms = 0; void* tlmalloc(size_t bytes) { if (tlms == 0) tlms = create_mspace(0, 0); return mspace_malloc(tlms, bytes); } void tlfree(void* mem) { mspace_free(tlms, mem); } Unless FOOTERS is defined, each mspace is completely independent. You cannot allocate from one and free to another (although conformance is only weakly checked, so usage errors are not always caught). If FOOTERS is defined, then each chunk carries around a tag indicating its originating mspace, and frees are directed to their originating spaces. Normally, this requires use of locks. ------------------------- Compile-time options --------------------------- Be careful in setting #define values for numerical constants of type size_t. On some systems, literal values are not automatically extended to size_t precision unless they are explicitly casted. You can also use the symbolic values MAX_SIZE_T, SIZE_T_ONE, etc below. WIN32 default: defined if _WIN32 defined Defining WIN32 sets up defaults for MS environment and compilers. Otherwise defaults are for unix. Beware that there seem to be some cases where this malloc might not be a pure drop-in replacement for Win32 malloc: Random-looking failures from Win32 GDI API's (eg; SetDIBits()) may be due to bugs in some video driver implementations when pixel buffers are malloc()ed, and the region spans more than one VirtualAlloc()ed region. Because dlmalloc uses a small (64Kb) default granularity, pixel buffers may straddle virtual allocation regions more often than when using the Microsoft allocator. You can avoid this by using VirtualAlloc() and VirtualFree() for all pixel buffers rather than using malloc(). If this is not possible, recompile this malloc with a larger DEFAULT_GRANULARITY. Note: in cases where MSC and gcc (cygwin) are known to differ on WIN32, conditions use _MSC_VER to distinguish them. DLMALLOC_EXPORT default: extern Defines how public APIs are declared. If you want to export via a Windows DLL, you might define this as #define DLMALLOC_EXPORT extern __declspec(dllexport) If you want a POSIX ELF shared object, you might use #define DLMALLOC_EXPORT extern __attribute__((visibility("default"))) MALLOC_ALIGNMENT default: (size_t)(2 * sizeof(void *)) Controls the minimum alignment for malloc'ed chunks. It must be a power of two and at least 8, even on machines for which smaller alignments would suffice. It may be defined as larger than this though. Note however that code and data structures are optimized for the case of 8-byte alignment. MSPACES default: 0 (false) If true, compile in support for independent allocation spaces. This is only supported if HAVE_MMAP is true. ONLY_MSPACES default: 0 (false) If true, only compile in mspace versions, not regular versions. USE_LOCKS default: 0 (false) Causes each call to each public routine to be surrounded with pthread or WIN32 mutex lock/unlock. (If set true, this can be overridden on a per-mspace basis for mspace versions.) If set to a non-zero value other than 1, locks are used, but their implementation is left out, so lock functions must be supplied manually, as described below. USE_SPIN_LOCKS default: 1 iff USE_LOCKS and spin locks available If true, uses custom spin locks for locking. This is currently supported only gcc >= 4.1, older gccs on x86 platforms, and recent MS compilers. Otherwise, posix locks or win32 critical sections are used. USE_RECURSIVE_LOCKS default: not defined If defined nonzero, uses recursive (aka reentrant) locks, otherwise uses plain mutexes. This is not required for malloc proper, but may be needed for layered allocators such as nedmalloc. LOCK_AT_FORK default: not defined If defined nonzero, performs pthread_atfork upon initialization to initialize child lock while holding parent lock. The implementation assumes that pthread locks (not custom locks) are being used. In other cases, you may need to customize the implementation. FOOTERS default: 0 If true, provide extra checking and dispatching by placing information in the footers of allocated chunks. This adds space and time overhead. INSECURE default: 0 If true, omit checks for usage errors and heap space overwrites. USE_DL_PREFIX default: NOT defined Causes compiler to prefix all public routines with the string 'dl'. This can be useful when you only want to use this malloc in one part of a program, using your regular system malloc elsewhere. MALLOC_INSPECT_ALL default: NOT defined If defined, compiles malloc_inspect_all and mspace_inspect_all, that perform traversal of all heap space. Unless access to these functions is otherwise restricted, you probably do not want to include them in secure implementations. ABORT default: defined as abort() Defines how to abort on failed checks. On most systems, a failed check cannot die with an "assert" or even print an informative message, because the underlying print routines in turn call malloc, which will fail again. Generally, the best policy is to simply call abort(). It's not very useful to do more than this because many errors due to overwriting will show up as address faults (null, odd addresses etc) rather than malloc-triggered checks, so will also abort. Also, most compilers know that abort() does not return, so can better optimize code conditionally calling it. PROCEED_ON_ERROR default: defined as 0 (false) Controls whether detected bad addresses cause them to bypassed rather than aborting. If set, detected bad arguments to free and realloc are ignored. And all bookkeeping information is zeroed out upon a detected overwrite of freed heap space, thus losing the ability to ever return it from malloc again, but enabling the application to proceed. If PROCEED_ON_ERROR is defined, the static variable malloc_corruption_error_count is compiled in and can be examined to see if errors have occurred. This option generates slower code than the default abort policy. DEBUG default: NOT defined The DEBUG setting is mainly intended for people trying to modify this code or diagnose problems when porting to new platforms. However, it may also be able to better isolate user errors than just using runtime checks. The assertions in the check routines spell out in more detail the assumptions and invariants underlying the algorithms. The checking is fairly extensive, and will slow down execution noticeably. Calling malloc_stats or mallinfo with DEBUG set will attempt to check every non-mmapped allocated and free chunk in the course of computing the summaries. ABORT_ON_ASSERT_FAILURE default: defined as 1 (true) Debugging assertion failures can be nearly impossible if your version of the assert macro causes malloc to be called, which will lead to a cascade of further failures, blowing the runtime stack. ABORT_ON_ASSERT_FAILURE cause assertions failures to call abort(), which will usually make debugging easier. MALLOC_FAILURE_ACTION default: sets errno to ENOMEM, or no-op on win32 The action to take before "return 0" when malloc fails to be able to return memory because there is none available. HAVE_MORECORE default: 1 (true) unless win32 or ONLY_MSPACES True if this system supports sbrk or an emulation of it. MORECORE default: sbrk The name of the sbrk-style system routine to call to obtain more memory. See below for guidance on writing custom MORECORE functions. The type of the argument to sbrk/MORECORE varies across systems. It cannot be size_t, because it supports negative arguments, so it is normally the signed type of the same width as size_t (sometimes declared as "intptr_t"). It doesn't much matter though. Internally, we only call it with arguments less than half the max value of a size_t, which should work across all reasonable possibilities, although sometimes generating compiler warnings. MORECORE_CONTIGUOUS default: 1 (true) if HAVE_MORECORE If true, take advantage of fact that consecutive calls to MORECORE with positive arguments always return contiguous increasing addresses. This is true of unix sbrk. It does not hurt too much to set it true anyway, since malloc copes with non-contiguities. Setting it false when definitely non-contiguous saves time and possibly wasted space it would take to discover this though. MORECORE_CANNOT_TRIM default: NOT defined True if MORECORE cannot release space back to the system when given negative arguments. This is generally necessary only if you are using a hand-crafted MORECORE function that cannot handle negative arguments. NO_SEGMENT_TRAVERSAL default: 0 If non-zero, suppresses traversals of memory segments returned by either MORECORE or CALL_MMAP. This disables merging of segments that are contiguous, and selectively releasing them to the OS if unused, but bounds execution times. HAVE_MMAP default: 1 (true) True if this system supports mmap or an emulation of it. If so, and HAVE_MORECORE is not true, MMAP is used for all system allocation. If set and HAVE_MORECORE is true as well, MMAP is primarily used to directly allocate very large blocks. It is also used as a backup strategy in cases where MORECORE fails to provide space from system. Note: A single call to MUNMAP is assumed to be able to unmap memory that may have be allocated using multiple calls to MMAP, so long as they are adjacent. HAVE_MREMAP default: 1 on linux, else 0 If true realloc() uses mremap() to re-allocate large blocks and extend or shrink allocation spaces. MMAP_CLEARS default: 1 except on WINCE. True if mmap clears memory so calloc doesn't need to. This is true for standard unix mmap using /dev/zero and on WIN32 except for WINCE. USE_BUILTIN_FFS default: 0 (i.e., not used) Causes malloc to use the builtin ffs() function to compute indices. Some compilers may recognize and intrinsify ffs to be faster than the supplied C version. Also, the case of x86 using gcc is special-cased to an asm instruction, so is already as fast as it can be, and so this setting has no effect. Similarly for Win32 under recent MS compilers. (On most x86s, the asm version is only slightly faster than the C version.) malloc_getpagesize default: derive from system includes, or 4096. The system page size. To the extent possible, this malloc manages memory from the system in page-size units. This may be (and usually is) a function rather than a constant. This is ignored if WIN32, where page size is determined using getSystemInfo during initialization. USE_DEV_RANDOM default: 0 (i.e., not used) Causes malloc to use /dev/random to initialize secure magic seed for stamping footers. Otherwise, the current time is used. NO_MALLINFO default: 0 If defined, don't compile "mallinfo". This can be a simple way of dealing with mismatches between system declarations and those in this file. MALLINFO_FIELD_TYPE default: size_t The type of the fields in the mallinfo struct. This was originally defined as "int" in SVID etc, but is more usefully defined as size_t. The value is used only if HAVE_USR_INCLUDE_MALLOC_H is not set NO_MALLOC_STATS default: 0 If defined, don't compile "malloc_stats". This avoids calls to fprintf and bringing in stdio dependencies you might not want. REALLOC_ZERO_BYTES_FREES default: not defined This should be set if a call to realloc with zero bytes should be the same as a call to free. Some people think it should. Otherwise, since this malloc returns a unique pointer for malloc(0), so does realloc(p, 0). LACKS_UNISTD_H, LACKS_FCNTL_H, LACKS_SYS_PARAM_H, LACKS_SYS_MMAN_H LACKS_STRINGS_H, LACKS_STRING_H, LACKS_SYS_TYPES_H, LACKS_ERRNO_H LACKS_STDLIB_H LACKS_SCHED_H LACKS_TIME_H default: NOT defined unless on WIN32 Define these if your system does not have these header files. You might need to manually insert some of the declarations they provide. DEFAULT_GRANULARITY default: page size if MORECORE_CONTIGUOUS, system_info.dwAllocationGranularity in WIN32, otherwise 64K. Also settable using mallopt(M_GRANULARITY, x) The unit for allocating and deallocating memory from the system. On most systems with contiguous MORECORE, there is no reason to make this more than a page. However, systems with MMAP tend to either require or encourage larger granularities. You can increase this value to prevent system allocation functions to be called so often, especially if they are slow. The value must be at least one page and must be a power of two. Setting to 0 causes initialization to either page size or win32 region size. (Note: In previous versions of malloc, the equivalent of this option was called "TOP_PAD") DEFAULT_TRIM_THRESHOLD default: 2MB Also settable using mallopt(M_TRIM_THRESHOLD, x) The maximum amount of unused top-most memory to keep before releasing via malloc_trim in free(). Automatic trimming is mainly useful in long-lived programs using contiguous MORECORE. Because trimming via sbrk can be slow on some systems, and can sometimes be wasteful (in cases where programs immediately afterward allocate more large chunks) the value should be high enough so that your overall system performance would improve by releasing this much memory. As a rough guide, you might set to a value close to the average size of a process (program) running on your system. Releasing this much memory would allow such a process to run in memory. Generally, it is worth tuning trim thresholds when a program undergoes phases where several large chunks are allocated and released in ways that can reuse each other's storage, perhaps mixed with phases where there are no such chunks at all. The trim value must be greater than page size to have any useful effect. To disable trimming completely, you can set to MAX_SIZE_T. Note that the trick some people use of mallocing a huge space and then freeing it at program startup, in an attempt to reserve system memory, doesn't have the intended effect under automatic trimming, since that memory will immediately be returned to the system. DEFAULT_MMAP_THRESHOLD default: 256K Also settable using mallopt(M_MMAP_THRESHOLD, x) The request size threshold for using MMAP to directly service a request. Requests of at least this size that cannot be allocated using already-existing space will be serviced via mmap. (If enough normal freed space already exists it is used instead.) Using mmap segregates relatively large chunks of memory so that they can be individually obtained and released from the host system. A request serviced through mmap is never reused by any other request (at least not directly; the system may just so happen to remap successive requests to the same locations). Segregating space in this way has the benefits that: Mmapped space can always be individually released back to the system, which helps keep the system level memory demands of a long-lived program low. Also, mapped memory doesn't become `locked' between other chunks, as can happen with normally allocated chunks, which means that even trimming via malloc_trim would not release them. However, it has the disadvantage that the space cannot be reclaimed, consolidated, and then used to service later requests, as happens with normal chunks. The advantages of mmap nearly always outweigh disadvantages for "large" chunks, but the value of "large" may vary across systems. The default is an empirically derived value that works well in most systems. You can disable mmap by setting to MAX_SIZE_T. MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP The number of consolidated frees between checks to release unused segments when freeing. When using non-contiguous segments, especially with multiple mspaces, checking only for topmost space doesn't always suffice to trigger trimming. To compensate for this, free() will, with a period of MAX_RELEASE_CHECK_RATE (or the current number of segments, if greater) try to release unused segments to the OS when freeing chunks that result in consolidation. The best value for this parameter is a compromise between slowing down frees with relatively costly checks that rarely trigger versus holding on to unused memory. To effectively disable, set to MAX_SIZE_T. This may lead to a very slight speed improvement at the expense of carrying around more memory. */ /* Version identifier to allow people to support multiple versions */ #ifndef DLMALLOC_VERSION #define DLMALLOC_VERSION 20806 #endif /* DLMALLOC_VERSION */ #ifndef DLMALLOC_EXPORT #define DLMALLOC_EXPORT extern #endif #ifndef WIN32 #ifdef _WIN32 #define WIN32 1 #endif /* _WIN32 */ #ifdef _WIN32_WCE #define LACKS_FCNTL_H #define WIN32 1 #endif /* _WIN32_WCE */ #endif /* WIN32 */ #ifdef WIN32 #define WIN32_LEAN_AND_MEAN #include #include #define HAVE_MMAP 1 #define HAVE_MORECORE 0 #define LACKS_UNISTD_H #define LACKS_SYS_PARAM_H #define LACKS_SYS_MMAN_H #define LACKS_STRING_H #define LACKS_STRINGS_H #define LACKS_SYS_TYPES_H #define LACKS_ERRNO_H #define LACKS_SCHED_H #ifndef MALLOC_FAILURE_ACTION #define MALLOC_FAILURE_ACTION #endif /* MALLOC_FAILURE_ACTION */ #ifndef MMAP_CLEARS #ifdef _WIN32_WCE /* WINCE reportedly does not clear */ #define MMAP_CLEARS 0 #else #define MMAP_CLEARS 1 #endif /* _WIN32_WCE */ #endif /*MMAP_CLEARS */ #endif /* WIN32 */ #if defined(DARWIN) || defined(_DARWIN) /* Mac OSX docs advise not to use sbrk; it seems better to use mmap */ #ifndef HAVE_MORECORE #define HAVE_MORECORE 0 #define HAVE_MMAP 1 /* OSX allocators provide 16 byte alignment */ #ifndef MALLOC_ALIGNMENT #define MALLOC_ALIGNMENT ((size_t)16U) #endif #endif /* HAVE_MORECORE */ #endif /* DARWIN */ #ifndef LACKS_SYS_TYPES_H #include /* For size_t */ #endif /* LACKS_SYS_TYPES_H */ /* The maximum possible size_t value has all bits set */ #define MAX_SIZE_T (~(size_t)0) #ifndef USE_LOCKS /* ensure true if spin or recursive locks set */ /* defined() in the expansion of a macro is non-portable behavior and runs afoul of -Wextra. */ #if ((defined(USE_SPIN_LOCKS) && USE_SPIN_LOCKS != 0) || \ (defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0)) #define USE_LOCKS 1 #else #define USE_LOCKS 0 #endif #endif /* USE_LOCKS */ #if USE_LOCKS /* Spin locks for gcc >= 4.1, older gcc on x86, MSC >= 1310 */ #if ((defined(__GNUC__) && \ ((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) || \ defined(__i386__) || defined(__x86_64__))) || \ (defined(_MSC_VER) && _MSC_VER>=1310)) #ifndef USE_SPIN_LOCKS #define USE_SPIN_LOCKS 1 #endif /* USE_SPIN_LOCKS */ #elif USE_SPIN_LOCKS #error "USE_SPIN_LOCKS defined without implementation" #endif /* ... locks available... */ #elif !defined(USE_SPIN_LOCKS) #define USE_SPIN_LOCKS 0 #endif /* USE_LOCKS */ #ifndef ONLY_MSPACES #define ONLY_MSPACES 0 #endif /* ONLY_MSPACES */ #ifndef MSPACES #if ONLY_MSPACES #define MSPACES 1 #else /* ONLY_MSPACES */ #define MSPACES 0 #endif /* ONLY_MSPACES */ #endif /* MSPACES */ #ifndef MALLOC_ALIGNMENT #define MALLOC_ALIGNMENT ((size_t)(2 * sizeof(void *))) #endif /* MALLOC_ALIGNMENT */ #ifndef FOOTERS #define FOOTERS 0 #endif /* FOOTERS */ #ifndef ABORT #define ABORT abort() #endif /* ABORT */ #ifndef ABORT_ON_ASSERT_FAILURE #define ABORT_ON_ASSERT_FAILURE 1 #endif /* ABORT_ON_ASSERT_FAILURE */ #ifndef PROCEED_ON_ERROR #define PROCEED_ON_ERROR 0 #endif /* PROCEED_ON_ERROR */ #ifndef INSECURE #define INSECURE 0 #endif /* INSECURE */ #ifndef MALLOC_INSPECT_ALL #define MALLOC_INSPECT_ALL 0 #endif /* MALLOC_INSPECT_ALL */ #ifndef HAVE_MMAP #define HAVE_MMAP 1 #endif /* HAVE_MMAP */ #ifndef MMAP_CLEARS #define MMAP_CLEARS 1 #endif /* MMAP_CLEARS */ #ifndef HAVE_MREMAP #ifdef linux #define HAVE_MREMAP 1 #define _GNU_SOURCE /* Turns on mremap() definition */ #else /* linux */ #define HAVE_MREMAP 0 #endif /* linux */ #endif /* HAVE_MREMAP */ #ifndef MALLOC_FAILURE_ACTION #define MALLOC_FAILURE_ACTION errno = ENOMEM; #endif /* MALLOC_FAILURE_ACTION */ #ifndef HAVE_MORECORE #if ONLY_MSPACES #define HAVE_MORECORE 0 #else /* ONLY_MSPACES */ #define HAVE_MORECORE 1 #endif /* ONLY_MSPACES */ #endif /* HAVE_MORECORE */ #if !HAVE_MORECORE #define MORECORE_CONTIGUOUS 0 #else /* !HAVE_MORECORE */ #define MORECORE_DEFAULT sbrk #ifndef MORECORE_CONTIGUOUS #define MORECORE_CONTIGUOUS 1 #endif /* MORECORE_CONTIGUOUS */ #endif /* HAVE_MORECORE */ #ifndef DEFAULT_GRANULARITY #if (MORECORE_CONTIGUOUS || defined(WIN32)) #define DEFAULT_GRANULARITY (0) /* 0 means to compute in init_mparams */ #else /* MORECORE_CONTIGUOUS */ #define DEFAULT_GRANULARITY ((size_t)64U * (size_t)1024U) #endif /* MORECORE_CONTIGUOUS */ #endif /* DEFAULT_GRANULARITY */ #ifndef DEFAULT_TRIM_THRESHOLD #ifndef MORECORE_CANNOT_TRIM #define DEFAULT_TRIM_THRESHOLD ((size_t)2U * (size_t)1024U * (size_t)1024U) #else /* MORECORE_CANNOT_TRIM */ #define DEFAULT_TRIM_THRESHOLD MAX_SIZE_T #endif /* MORECORE_CANNOT_TRIM */ #endif /* DEFAULT_TRIM_THRESHOLD */ #ifndef DEFAULT_MMAP_THRESHOLD #if HAVE_MMAP #define DEFAULT_MMAP_THRESHOLD ((size_t)256U * (size_t)1024U) #else /* HAVE_MMAP */ #define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T #endif /* HAVE_MMAP */ #endif /* DEFAULT_MMAP_THRESHOLD */ #ifndef MAX_RELEASE_CHECK_RATE #if HAVE_MMAP #define MAX_RELEASE_CHECK_RATE 4095 #else #define MAX_RELEASE_CHECK_RATE MAX_SIZE_T #endif /* HAVE_MMAP */ #endif /* MAX_RELEASE_CHECK_RATE */ #ifndef USE_BUILTIN_FFS #define USE_BUILTIN_FFS 0 #endif /* USE_BUILTIN_FFS */ #ifndef USE_DEV_RANDOM #define USE_DEV_RANDOM 0 #endif /* USE_DEV_RANDOM */ #ifndef NO_MALLINFO #define NO_MALLINFO 0 #endif /* NO_MALLINFO */ #ifndef MALLINFO_FIELD_TYPE #define MALLINFO_FIELD_TYPE size_t #endif /* MALLINFO_FIELD_TYPE */ #ifndef NO_MALLOC_STATS #define NO_MALLOC_STATS 0 #endif /* NO_MALLOC_STATS */ #ifndef NO_SEGMENT_TRAVERSAL #define NO_SEGMENT_TRAVERSAL 0 #endif /* NO_SEGMENT_TRAVERSAL */ /* mallopt tuning options. SVID/XPG defines four standard parameter numbers for mallopt, normally defined in malloc.h. None of these are used in this malloc, so setting them has no effect. But this malloc does support the following options. */ #define M_TRIM_THRESHOLD (-1) #define M_GRANULARITY (-2) #define M_MMAP_THRESHOLD (-3) /* ------------------------ Mallinfo declarations ------------------------ */ #if !NO_MALLINFO /* This version of malloc supports the standard SVID/XPG mallinfo routine that returns a struct containing usage properties and statistics. It should work on any system that has a /usr/include/malloc.h defining struct mallinfo. The main declaration needed is the mallinfo struct that is returned (by-copy) by mallinfo(). The malloinfo struct contains a bunch of fields that are not even meaningful in this version of malloc. These fields are are instead filled by mallinfo() with other numbers that might be of interest. HAVE_USR_INCLUDE_MALLOC_H should be set if you have a /usr/include/malloc.h file that includes a declaration of struct mallinfo. If so, it is included; else a compliant version is declared below. These must be precisely the same for mallinfo() to work. The original SVID version of this struct, defined on most systems with mallinfo, declares all fields as ints. But some others define as unsigned long. If your system defines the fields using a type of different width than listed here, you MUST #include your system version and #define HAVE_USR_INCLUDE_MALLOC_H. */ /* #define HAVE_USR_INCLUDE_MALLOC_H */ #ifdef HAVE_USR_INCLUDE_MALLOC_H #include "/usr/include/malloc.h" #else /* HAVE_USR_INCLUDE_MALLOC_H */ #ifndef STRUCT_MALLINFO_DECLARED /* HP-UX (and others?) redefines mallinfo unless _STRUCT_MALLINFO is defined */ #define _STRUCT_MALLINFO #define STRUCT_MALLINFO_DECLARED 1 struct mallinfo { MALLINFO_FIELD_TYPE arena; /* non-mmapped space allocated from system */ MALLINFO_FIELD_TYPE ordblks; /* number of free chunks */ MALLINFO_FIELD_TYPE smblks; /* always 0 */ MALLINFO_FIELD_TYPE hblks; /* always 0 */ MALLINFO_FIELD_TYPE hblkhd; /* space in mmapped regions */ MALLINFO_FIELD_TYPE usmblks; /* maximum total allocated space */ MALLINFO_FIELD_TYPE fsmblks; /* always 0 */ MALLINFO_FIELD_TYPE uordblks; /* total allocated space */ MALLINFO_FIELD_TYPE fordblks; /* total free space */ MALLINFO_FIELD_TYPE keepcost; /* releasable (via malloc_trim) space */ }; #endif /* STRUCT_MALLINFO_DECLARED */ #endif /* HAVE_USR_INCLUDE_MALLOC_H */ #endif /* NO_MALLINFO */ /* Try to persuade compilers to inline. The most critical functions for inlining are defined as macros, so these aren't used for them. */ #ifndef FORCEINLINE #if defined(__GNUC__) #define FORCEINLINE __inline __attribute__ ((always_inline)) #elif defined(_MSC_VER) #define FORCEINLINE __forceinline #endif #endif #ifndef NOINLINE #if defined(__GNUC__) #define NOINLINE __attribute__ ((noinline)) #elif defined(_MSC_VER) #define NOINLINE __declspec(noinline) #else #define NOINLINE #endif #endif #ifdef __cplusplus extern "C" { #ifndef FORCEINLINE #define FORCEINLINE inline #endif #endif /* __cplusplus */ #ifndef FORCEINLINE #define FORCEINLINE #endif #if !ONLY_MSPACES /* ------------------- Declarations of public routines ------------------- */ #ifndef USE_DL_PREFIX #define dlcalloc calloc #define dlfree free #define dlmalloc malloc #define dlmemalign memalign #define dlposix_memalign posix_memalign #define dlrealloc realloc #define dlrealloc_in_place realloc_in_place #define dlvalloc valloc #define dlpvalloc pvalloc #define dlmallinfo mallinfo #define dlmallopt mallopt #define dlmalloc_trim malloc_trim #define dlmalloc_stats malloc_stats #define dlmalloc_usable_size malloc_usable_size #define dlmalloc_footprint malloc_footprint #define dlmalloc_max_footprint malloc_max_footprint #define dlmalloc_footprint_limit malloc_footprint_limit #define dlmalloc_set_footprint_limit malloc_set_footprint_limit #define dlmalloc_inspect_all malloc_inspect_all #define dlindependent_calloc independent_calloc #define dlindependent_comalloc independent_comalloc #define dlbulk_free bulk_free #endif /* USE_DL_PREFIX */ /* malloc(size_t n) Returns a pointer to a newly allocated chunk of at least n bytes, or null if no space is available, in which case errno is set to ENOMEM on ANSI C systems. If n is zero, malloc returns a minimum-sized chunk. (The minimum size is 16 bytes on most 32bit systems, and 32 bytes on 64bit systems.) Note that size_t is an unsigned type, so calls with arguments that would be negative if signed are interpreted as requests for huge amounts of space, which will often fail. The maximum supported value of n differs across systems, but is in all cases less than the maximum representable value of a size_t. */ /*DLMALLOC_EXPORT void* dlmalloc(size_t);*/ /* free(void* p) Releases the chunk of memory pointed to by p, that had been previously allocated using malloc or a related routine such as realloc. It has no effect if p is null. If p was not malloced or already freed, free(p) will by default cause the current program to abort. */ /*DLMALLOC_EXPORT void dlfree(void*);*/ /* calloc(size_t n_elements, size_t element_size); Returns a pointer to n_elements * element_size bytes, with all locations set to zero. */ /*DLMALLOC_EXPORT void* dlcalloc(size_t, size_t);*/ /* realloc(void* p, size_t n) Returns a pointer to a chunk of size n that contains the same data as does chunk p up to the minimum of (n, p's size) bytes, or null if no space is available. The returned pointer may or may not be the same as p. The algorithm prefers extending p in most cases when possible, otherwise it employs the equivalent of a malloc-copy-free sequence. If p is null, realloc is equivalent to malloc. If space is not available, realloc returns null, errno is set (if on ANSI) and p is NOT freed. if n is for fewer bytes than already held by p, the newly unused space is lopped off and freed if possible. realloc with a size argument of zero (re)allocates a minimum-sized chunk. The old unix realloc convention of allowing the last-free'd chunk to be used as an argument to realloc is not supported. */ /*DLMALLOC_EXPORT void* dlrealloc(void*, size_t);*/ /* realloc_in_place(void* p, size_t n) Resizes the space allocated for p to size n, only if this can be done without moving p (i.e., only if there is adjacent space available if n is greater than p's current allocated size, or n is less than or equal to p's size). This may be used instead of plain realloc if an alternative allocation strategy is needed upon failure to expand space; for example, reallocation of a buffer that must be memory-aligned or cleared. You can use realloc_in_place to trigger these alternatives only when needed. Returns p if successful; otherwise null. */ DLMALLOC_EXPORT void* dlrealloc_in_place(void*, size_t); /* memalign(size_t alignment, size_t n); Returns a pointer to a newly allocated chunk of n bytes, aligned in accord with the alignment argument. The alignment argument should be a power of two. If the argument is not a power of two, the nearest greater power is used. 8-byte alignment is guaranteed by normal malloc calls, so don't bother calling memalign with an argument of 8 or less. Overreliance on memalign is a sure way to fragment space. */ DLMALLOC_EXPORT void* dlmemalign(size_t, size_t); /* int posix_memalign(void** pp, size_t alignment, size_t n); Allocates a chunk of n bytes, aligned in accord with the alignment argument. Differs from memalign only in that it (1) assigns the allocated memory to *pp rather than returning it, (2) fails and returns EINVAL if the alignment is not a power of two (3) fails and returns ENOMEM if memory cannot be allocated. */ DLMALLOC_EXPORT int dlposix_memalign(void**, size_t, size_t); /* valloc(size_t n); Equivalent to memalign(pagesize, n), where pagesize is the page size of the system. If the pagesize is unknown, 4096 is used. */ DLMALLOC_EXPORT void* dlvalloc(size_t); /* mallopt(int parameter_number, int parameter_value) Sets tunable parameters The format is to provide a (parameter-number, parameter-value) pair. mallopt then sets the corresponding parameter to the argument value if it can (i.e., so long as the value is meaningful), and returns 1 if successful else 0. To workaround the fact that mallopt is specified to use int, not size_t parameters, the value -1 is specially treated as the maximum unsigned size_t value. SVID/XPG/ANSI defines four standard param numbers for mallopt, normally defined in malloc.h. None of these are use in this malloc, so setting them has no effect. But this malloc also supports other options in mallopt. See below for details. Briefly, supported parameters are as follows (listed defaults are for "typical" configurations). Symbol param # default allowed param values M_TRIM_THRESHOLD -1 2*1024*1024 any (-1 disables) M_GRANULARITY -2 page size any power of 2 >= page size M_MMAP_THRESHOLD -3 256*1024 any (or 0 if no MMAP support) */ DLMALLOC_EXPORT int dlmallopt(int, int); /* malloc_footprint(); Returns the number of bytes obtained from the system. The total number of bytes allocated by malloc, realloc etc., is less than this value. Unlike mallinfo, this function returns only a precomputed result, so can be called frequently to monitor memory consumption. Even if locks are otherwise defined, this function does not use them, so results might not be up to date. */ DLMALLOC_EXPORT size_t dlmalloc_footprint(void); /* malloc_max_footprint(); Returns the maximum number of bytes obtained from the system. This value will be greater than current footprint if deallocated space has been reclaimed by the system. The peak number of bytes allocated by malloc, realloc etc., is less than this value. Unlike mallinfo, this function returns only a precomputed result, so can be called frequently to monitor memory consumption. Even if locks are otherwise defined, this function does not use them, so results might not be up to date. */ DLMALLOC_EXPORT size_t dlmalloc_max_footprint(void); /* malloc_footprint_limit(); Returns the number of bytes that the heap is allowed to obtain from the system, returning the last value returned by malloc_set_footprint_limit, or the maximum size_t value if never set. The returned value reflects a permission. There is no guarantee that this number of bytes can actually be obtained from the system. */ DLMALLOC_EXPORT size_t dlmalloc_footprint_limit(void); /* malloc_set_footprint_limit(); Sets the maximum number of bytes to obtain from the system, causing failure returns from malloc and related functions upon attempts to exceed this value. The argument value may be subject to page rounding to an enforceable limit; this actual value is returned. Using an argument of the maximum possible size_t effectively disables checks. If the argument is less than or equal to the current malloc_footprint, then all future allocations that require additional system memory will fail. However, invocation cannot retroactively deallocate existing used memory. */ DLMALLOC_EXPORT size_t dlmalloc_set_footprint_limit(size_t bytes); #if MALLOC_INSPECT_ALL /* malloc_inspect_all(void(*handler)(void *start, void *end, size_t used_bytes, void* callback_arg), void* arg); Traverses the heap and calls the given handler for each managed region, skipping all bytes that are (or may be) used for bookkeeping purposes. Traversal does not include include chunks that have been directly memory mapped. Each reported region begins at the start address, and continues up to but not including the end address. The first used_bytes of the region contain allocated data. If used_bytes is zero, the region is unallocated. The handler is invoked with the given callback argument. If locks are defined, they are held during the entire traversal. It is a bad idea to invoke other malloc functions from within the handler. For example, to count the number of in-use chunks with size greater than 1000, you could write: static int count = 0; void count_chunks(void* start, void* end, size_t used, void* arg) { if (used >= 1000) ++count; } then: malloc_inspect_all(count_chunks, NULL); malloc_inspect_all is compiled only if MALLOC_INSPECT_ALL is defined. */ DLMALLOC_EXPORT void dlmalloc_inspect_all(void(*handler)(void*, void *, size_t, void*), void* arg); #endif /* MALLOC_INSPECT_ALL */ #if !NO_MALLINFO /* mallinfo() Returns (by copy) a struct containing various summary statistics: arena: current total non-mmapped bytes allocated from system ordblks: the number of free chunks smblks: always zero. hblks: current number of mmapped regions hblkhd: total bytes held in mmapped regions usmblks: the maximum total allocated space. This will be greater than current total if trimming has occurred. fsmblks: always zero uordblks: current total allocated space (normal or mmapped) fordblks: total free space keepcost: the maximum number of bytes that could ideally be released back to system via malloc_trim. ("ideally" means that it ignores page restrictions etc.) Because these fields are ints, but internal bookkeeping may be kept as longs, the reported values may wrap around zero and thus be inaccurate. */ DLMALLOC_EXPORT struct mallinfo dlmallinfo(void); #endif /* NO_MALLINFO */ /* independent_calloc(size_t n_elements, size_t element_size, void* chunks[]); independent_calloc is similar to calloc, but instead of returning a single cleared space, it returns an array of pointers to n_elements independent elements that can hold contents of size elem_size, each of which starts out cleared, and can be independently freed, realloc'ed etc. The elements are guaranteed to be adjacently allocated (this is not guaranteed to occur with multiple callocs or mallocs), which may also improve cache locality in some applications. The "chunks" argument is optional (i.e., may be null, which is probably the most typical usage). If it is null, the returned array is itself dynamically allocated and should also be freed when it is no longer needed. Otherwise, the chunks array must be of at least n_elements in length. It is filled in with the pointers to the chunks. In either case, independent_calloc returns this pointer array, or null if the allocation failed. If n_elements is zero and "chunks" is null, it returns a chunk representing an array with zero elements (which should be freed if not wanted). Each element must be freed when it is no longer needed. This can be done all at once using bulk_free. independent_calloc simplifies and speeds up implementations of many kinds of pools. It may also be useful when constructing large data structures that initially have a fixed number of fixed-sized nodes, but the number is not known at compile time, and some of the nodes may later need to be freed. For example: struct Node { int item; struct Node* next; }; struct Node* build_list() { struct Node** pool; int n = read_number_of_nodes_needed(); if (n <= 0) return 0; pool = (struct Node**)(independent_calloc(n, sizeof(struct Node), 0); if (pool == 0) die(); // organize into a linked list... struct Node* first = pool[0]; for (i = 0; i < n-1; ++i) pool[i]->next = pool[i+1]; free(pool); // Can now free the array (or not, if it is needed later) return first; } */ DLMALLOC_EXPORT void** dlindependent_calloc(size_t, size_t, void**); /* independent_comalloc(size_t n_elements, size_t sizes[], void* chunks[]); independent_comalloc allocates, all at once, a set of n_elements chunks with sizes indicated in the "sizes" array. It returns an array of pointers to these elements, each of which can be independently freed, realloc'ed etc. The elements are guaranteed to be adjacently allocated (this is not guaranteed to occur with multiple callocs or mallocs), which may also improve cache locality in some applications. The "chunks" argument is optional (i.e., may be null). If it is null the returned array is itself dynamically allocated and should also be freed when it is no longer needed. Otherwise, the chunks array must be of at least n_elements in length. It is filled in with the pointers to the chunks. In either case, independent_comalloc returns this pointer array, or null if the allocation failed. If n_elements is zero and chunks is null, it returns a chunk representing an array with zero elements (which should be freed if not wanted). Each element must be freed when it is no longer needed. This can be done all at once using bulk_free. independent_comallac differs from independent_calloc in that each element may have a different size, and also that it does not automatically clear elements. independent_comalloc can be used to speed up allocation in cases where several structs or objects must always be allocated at the same time. For example: struct Head { ... } struct Foot { ... } void send_message(char* msg) { int msglen = strlen(msg); size_t sizes[3] = { sizeof(struct Head), msglen, sizeof(struct Foot) }; void* chunks[3]; if (independent_comalloc(3, sizes, chunks) == 0) die(); struct Head* head = (struct Head*)(chunks[0]); char* body = (char*)(chunks[1]); struct Foot* foot = (struct Foot*)(chunks[2]); // ... } In general though, independent_comalloc is worth using only for larger values of n_elements. For small values, you probably won't detect enough difference from series of malloc calls to bother. Overuse of independent_comalloc can increase overall memory usage, since it cannot reuse existing noncontiguous small chunks that might be available for some of the elements. */ DLMALLOC_EXPORT void** dlindependent_comalloc(size_t, size_t*, void**); /* bulk_free(void* array[], size_t n_elements) Frees and clears (sets to null) each non-null pointer in the given array. This is likely to be faster than freeing them one-by-one. If footers are used, pointers that have been allocated in different mspaces are not freed or cleared, and the count of all such pointers is returned. For large arrays of pointers with poor locality, it may be worthwhile to sort this array before calling bulk_free. */ DLMALLOC_EXPORT size_t dlbulk_free(void**, size_t n_elements); /* pvalloc(size_t n); Equivalent to valloc(minimum-page-that-holds(n)), that is, round up n to nearest pagesize. */ DLMALLOC_EXPORT void* dlpvalloc(size_t); /* malloc_trim(size_t pad); If possible, gives memory back to the system (via negative arguments to sbrk) if there is unused memory at the `high' end of the malloc pool or in unused MMAP segments. You can call this after freeing large blocks of memory to potentially reduce the system-level memory requirements of a program. However, it cannot guarantee to reduce memory. Under some allocation patterns, some large free blocks of memory will be locked between two used chunks, so they cannot be given back to the system. The `pad' argument to malloc_trim represents the amount of free trailing space to leave untrimmed. If this argument is zero, only the minimum amount of memory to maintain internal data structures will be left. Non-zero arguments can be supplied to maintain enough trailing space to service future expected allocations without having to re-obtain memory from the system. Malloc_trim returns 1 if it actually released any memory, else 0. */ DLMALLOC_EXPORT int dlmalloc_trim(size_t); /* malloc_stats(); Prints on stderr the amount of space obtained from the system (both via sbrk and mmap), the maximum amount (which may be more than current if malloc_trim and/or munmap got called), and the current number of bytes allocated via malloc (or realloc, etc) but not yet freed. Note that this is the number of bytes allocated, not the number requested. It will be larger than the number requested because of alignment and bookkeeping overhead. Because it includes alignment wastage as being in use, this figure may be greater than zero even when no user-level chunks are allocated. The reported current and maximum system memory can be inaccurate if a program makes other calls to system memory allocation functions (normally sbrk) outside of malloc. malloc_stats prints only the most commonly interesting statistics. More information can be obtained by calling mallinfo. */ DLMALLOC_EXPORT void dlmalloc_stats(void); /* malloc_usable_size(void* p); Returns the number of bytes you can actually use in an allocated chunk, which may be more than you requested (although often not) due to alignment and minimum size constraints. You can use this many bytes without worrying about overwriting other allocated objects. This is not a particularly great programming practice. malloc_usable_size can be more useful in debugging and assertions, for example: p = malloc(n); assert(malloc_usable_size(p) >= 256); */ size_t dlmalloc_usable_size(void*); #endif /* ONLY_MSPACES */ #if MSPACES /* mspace is an opaque type representing an independent region of space that supports mspace_malloc, etc. */ typedef void* mspace; /* create_mspace creates and returns a new independent space with the given initial capacity, or, if 0, the default granularity size. It returns null if there is no system memory available to create the space. If argument locked is non-zero, the space uses a separate lock to control access. The capacity of the space will grow dynamically as needed to service mspace_malloc requests. You can control the sizes of incremental increases of this space by compiling with a different DEFAULT_GRANULARITY or dynamically setting with mallopt(M_GRANULARITY, value). */ DLMALLOC_EXPORT mspace create_mspace(size_t capacity, int locked); /* destroy_mspace destroys the given space, and attempts to return all of its memory back to the system, returning the total number of bytes freed. After destruction, the results of access to all memory used by the space become undefined. */ DLMALLOC_EXPORT size_t destroy_mspace(mspace msp); /* create_mspace_with_base uses the memory supplied as the initial base of a new mspace. Part (less than 128*sizeof(size_t) bytes) of this space is used for bookkeeping, so the capacity must be at least this large. (Otherwise 0 is returned.) When this initial space is exhausted, additional memory will be obtained from the system. Destroying this space will deallocate all additionally allocated space (if possible) but not the initial base. */ DLMALLOC_EXPORT mspace create_mspace_with_base(void* base, size_t capacity, int locked); /* mspace_track_large_chunks controls whether requests for large chunks are allocated in their own untracked mmapped regions, separate from others in this mspace. By default large chunks are not tracked, which reduces fragmentation. However, such chunks are not necessarily released to the system upon destroy_mspace. Enabling tracking by setting to true may increase fragmentation, but avoids leakage when relying on destroy_mspace to release all memory allocated using this space. The function returns the previous setting. */ DLMALLOC_EXPORT int mspace_track_large_chunks(mspace msp, int enable); /* mspace_malloc behaves as malloc, but operates within the given space. */ DLMALLOC_EXPORT void* mspace_malloc(mspace msp, size_t bytes); /* mspace_free behaves as free, but operates within the given space. If compiled with FOOTERS==1, mspace_free is not actually needed. free may be called instead of mspace_free because freed chunks from any space are handled by their originating spaces. */ DLMALLOC_EXPORT void mspace_free(mspace msp, void* mem); /* mspace_realloc behaves as realloc, but operates within the given space. If compiled with FOOTERS==1, mspace_realloc is not actually needed. realloc may be called instead of mspace_realloc because realloced chunks from any space are handled by their originating spaces. */ DLMALLOC_EXPORT void* mspace_realloc(mspace msp, void* mem, size_t newsize); /* mspace_calloc behaves as calloc, but operates within the given space. */ DLMALLOC_EXPORT void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size); /* mspace_memalign behaves as memalign, but operates within the given space. */ DLMALLOC_EXPORT void* mspace_memalign(mspace msp, size_t alignment, size_t bytes); /* mspace_independent_calloc behaves as independent_calloc, but operates within the given space. */ DLMALLOC_EXPORT void** mspace_independent_calloc(mspace msp, size_t n_elements, size_t elem_size, void* chunks[]); /* mspace_independent_comalloc behaves as independent_comalloc, but operates within the given space. */ DLMALLOC_EXPORT void** mspace_independent_comalloc(mspace msp, size_t n_elements, size_t sizes[], void* chunks[]); /* mspace_footprint() returns the number of bytes obtained from the system for this space. */ DLMALLOC_EXPORT size_t mspace_footprint(mspace msp); /* mspace_max_footprint() returns the peak number of bytes obtained from the system for this space. */ DLMALLOC_EXPORT size_t mspace_max_footprint(mspace msp); #if !NO_MALLINFO /* mspace_mallinfo behaves as mallinfo, but reports properties of the given space. */ DLMALLOC_EXPORT struct mallinfo mspace_mallinfo(mspace msp); #endif /* NO_MALLINFO */ /* malloc_usable_size(void* p) behaves the same as malloc_usable_size; */ DLMALLOC_EXPORT size_t mspace_usable_size(const void* mem); /* mspace_malloc_stats behaves as malloc_stats, but reports properties of the given space. */ DLMALLOC_EXPORT void mspace_malloc_stats(mspace msp); /* mspace_trim behaves as malloc_trim, but operates within the given space. */ DLMALLOC_EXPORT int mspace_trim(mspace msp, size_t pad); /* An alias for mallopt. */ DLMALLOC_EXPORT int mspace_mallopt(int, int); #endif /* MSPACES */ #ifdef __cplusplus } /* end of extern "C" */ #endif /* __cplusplus */ /* ======================================================================== To make a fully customizable malloc.h header file, cut everything above this line, put into file malloc.h, edit to suit, and #include it on the next line, as well as in programs that use this malloc. ======================================================================== */ /* #include "malloc.h" */ /*------------------------------ internal #includes ---------------------- */ #ifdef _MSC_VER #pragma warning( disable : 4146 ) /* no "unsigned" warnings */ #endif /* _MSC_VER */ #if !NO_MALLOC_STATS #include /* for printing in malloc_stats */ #endif /* NO_MALLOC_STATS */ #ifndef LACKS_ERRNO_H #include /* for MALLOC_FAILURE_ACTION */ #endif /* LACKS_ERRNO_H */ #ifdef DEBUG #if ABORT_ON_ASSERT_FAILURE #undef assert #define assert(x) if(!(x)) ABORT #else /* ABORT_ON_ASSERT_FAILURE */ #include #endif /* ABORT_ON_ASSERT_FAILURE */ #else /* DEBUG */ #ifndef assert #define assert(x) #endif #define DEBUG 0 #endif /* DEBUG */ #if !defined(WIN32) && !defined(LACKS_TIME_H) #include /* for magic initialization */ #endif /* WIN32 */ #ifndef LACKS_STDLIB_H #include /* for abort() */ #endif /* LACKS_STDLIB_H */ #ifndef LACKS_STRING_H #include /* for memset etc */ #endif /* LACKS_STRING_H */ #if USE_BUILTIN_FFS #ifndef LACKS_STRINGS_H #include /* for ffs */ #endif /* LACKS_STRINGS_H */ #endif /* USE_BUILTIN_FFS */ #if HAVE_MMAP #ifndef LACKS_SYS_MMAN_H /* On some versions of linux, mremap decl in mman.h needs __USE_GNU set */ #if (defined(linux) && !defined(__USE_GNU)) #define __USE_GNU 1 #include /* for mmap */ #undef __USE_GNU #else #include /* for mmap */ #endif /* linux */ #endif /* LACKS_SYS_MMAN_H */ #ifndef LACKS_FCNTL_H #include #endif /* LACKS_FCNTL_H */ #endif /* HAVE_MMAP */ #ifndef LACKS_UNISTD_H #include /* for sbrk, sysconf */ #else /* LACKS_UNISTD_H */ #if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) extern void* sbrk(ptrdiff_t); #endif /* FreeBSD etc */ #endif /* LACKS_UNISTD_H */ /* Declarations for locking */ #if USE_LOCKS #ifndef WIN32 #if defined (__SVR4) && defined (__sun) /* solaris */ #include #elif !defined(LACKS_SCHED_H) #include #endif /* solaris or LACKS_SCHED_H */ #if (defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0) || !USE_SPIN_LOCKS #include #endif /* USE_RECURSIVE_LOCKS ... */ #elif defined(_MSC_VER) #ifndef _M_AMD64 /* These are already defined on AMD64 builds */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ LONG __cdecl _InterlockedCompareExchange(LONG volatile *Dest, LONG Exchange, LONG Comp); LONG __cdecl _InterlockedExchange(LONG volatile *Target, LONG Value); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* _M_AMD64 */ #pragma intrinsic (_InterlockedCompareExchange) #pragma intrinsic (_InterlockedExchange) #define interlockedcompareexchange _InterlockedCompareExchange #define interlockedexchange _InterlockedExchange #elif defined(WIN32) && defined(__GNUC__) #define interlockedcompareexchange(a, b, c) __sync_val_compare_and_swap(a, c, b) #define interlockedexchange __sync_lock_test_and_set #endif /* Win32 */ #else /* USE_LOCKS */ #endif /* USE_LOCKS */ #ifndef LOCK_AT_FORK #define LOCK_AT_FORK 0 #endif /* Declarations for bit scanning on win32 */ #if defined(_MSC_VER) && _MSC_VER>=1300 #ifndef BitScanForward /* Try to avoid pulling in WinNT.h */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ unsigned char _BitScanForward(unsigned long *index, unsigned long mask); unsigned char _BitScanReverse(unsigned long *index, unsigned long mask); #ifdef __cplusplus } #endif /* __cplusplus */ #define BitScanForward _BitScanForward #define BitScanReverse _BitScanReverse #pragma intrinsic(_BitScanForward) #pragma intrinsic(_BitScanReverse) #endif /* BitScanForward */ #endif /* defined(_MSC_VER) && _MSC_VER>=1300 */ #ifndef WIN32 #ifndef malloc_getpagesize # ifdef _SC_PAGESIZE /* some SVR4 systems omit an underscore */ # ifndef _SC_PAGE_SIZE # define _SC_PAGE_SIZE _SC_PAGESIZE # endif # endif # ifdef _SC_PAGE_SIZE # define malloc_getpagesize sysconf(_SC_PAGE_SIZE) # else # if defined(BSD) || defined(DGUX) || defined(HAVE_GETPAGESIZE) extern size_t getpagesize(); # define malloc_getpagesize getpagesize() # else # ifdef WIN32 /* use supplied emulation of getpagesize */ # define malloc_getpagesize getpagesize() # else # ifndef LACKS_SYS_PARAM_H # include # endif # ifdef EXEC_PAGESIZE # define malloc_getpagesize EXEC_PAGESIZE # else # ifdef NBPG # ifndef CLSIZE # define malloc_getpagesize NBPG # else # define malloc_getpagesize (NBPG * CLSIZE) # endif # else # ifdef NBPC # define malloc_getpagesize NBPC # else # ifdef PAGESIZE # define malloc_getpagesize PAGESIZE # else /* just guess */ # define malloc_getpagesize ((size_t)4096U) # endif # endif # endif # endif # endif # endif # endif #endif #endif /* ------------------- size_t and alignment properties -------------------- */ /* The byte and bit size of a size_t */ #define SIZE_T_SIZE (sizeof(size_t)) #define SIZE_T_BITSIZE (sizeof(size_t) << 3) /* Some constants coerced to size_t */ /* Annoying but necessary to avoid errors on some platforms */ #define SIZE_T_ZERO ((size_t)0) #define SIZE_T_ONE ((size_t)1) #define SIZE_T_TWO ((size_t)2) #define SIZE_T_FOUR ((size_t)4) #define TWO_SIZE_T_SIZES (SIZE_T_SIZE<<1) #define FOUR_SIZE_T_SIZES (SIZE_T_SIZE<<2) #define SIX_SIZE_T_SIZES (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES) #define HALF_MAX_SIZE_T (MAX_SIZE_T / 2U) /* The bit mask value corresponding to MALLOC_ALIGNMENT */ #define CHUNK_ALIGN_MASK (MALLOC_ALIGNMENT - SIZE_T_ONE) /* True if address a has acceptable alignment */ #define is_aligned(A) (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0) /* the number of bytes to offset an address to align it */ #define align_offset(A)\ ((((size_t)(A) & CHUNK_ALIGN_MASK) == 0)? 0 :\ ((MALLOC_ALIGNMENT - ((size_t)(A) & CHUNK_ALIGN_MASK)) & CHUNK_ALIGN_MASK)) /* -------------------------- MMAP preliminaries ------------------------- */ /* If HAVE_MORECORE or HAVE_MMAP are false, we just define calls and checks to fail so compiler optimizer can delete code rather than using so many "#if"s. */ /* MORECORE and MMAP must return MFAIL on failure */ #define MFAIL ((void*)(MAX_SIZE_T)) #define CMFAIL ((char*)(MFAIL)) /* defined for convenience */ #if HAVE_MMAP #ifndef WIN32 #define MUNMAP_DEFAULT(a, s) munmap((a), (s)) #define MMAP_PROT (PROT_READ|PROT_WRITE) #if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) #define MAP_ANONYMOUS MAP_ANON #endif /* MAP_ANON */ #ifdef MAP_ANONYMOUS #define MMAP_FLAGS (MAP_PRIVATE|MAP_ANONYMOUS) #define MMAP_DEFAULT(s) mmap(0, (s), MMAP_PROT, MMAP_FLAGS, -1, 0) #else /* MAP_ANONYMOUS */ /* Nearly all versions of mmap support MAP_ANONYMOUS, so the following is unlikely to be needed, but is supplied just in case. */ #define MMAP_FLAGS (MAP_PRIVATE) static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */ #define MMAP_DEFAULT(s) ((dev_zero_fd < 0) ? \ (dev_zero_fd = open("/dev/zero", O_RDWR), \ mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) : \ mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) #endif /* MAP_ANONYMOUS */ #define DIRECT_MMAP_DEFAULT(s) MMAP_DEFAULT(s) #else /* WIN32 */ /* Win32 MMAP via VirtualAlloc */ static FORCEINLINE void* win32mmap(size_t size) { void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE); return (ptr != 0)? ptr: MFAIL; } /* For direct MMAP, use MEM_TOP_DOWN to minimize interference */ static FORCEINLINE void* win32direct_mmap(size_t size) { void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN, PAGE_READWRITE); return (ptr != 0)? ptr: MFAIL; } /* This function supports releasing coalesed segments */ static FORCEINLINE int win32munmap(void* ptr, size_t size) { MEMORY_BASIC_INFORMATION minfo; char* cptr = (char*)ptr; while (size) { if (VirtualQuery(cptr, &minfo, sizeof(minfo)) == 0) return -1; if (minfo.BaseAddress != cptr || minfo.AllocationBase != cptr || minfo.State != MEM_COMMIT || minfo.RegionSize > size) return -1; if (VirtualFree(cptr, 0, MEM_RELEASE) == 0) return -1; cptr += minfo.RegionSize; size -= minfo.RegionSize; } return 0; } #define MMAP_DEFAULT(s) win32mmap(s) #define MUNMAP_DEFAULT(a, s) win32munmap((a), (s)) #define DIRECT_MMAP_DEFAULT(s) win32direct_mmap(s) #endif /* WIN32 */ #endif /* HAVE_MMAP */ #if HAVE_MREMAP #ifndef WIN32 #define MREMAP_DEFAULT(addr, osz, nsz, mv) mremap((addr), (osz), (nsz), (mv)) #endif /* WIN32 */ #endif /* HAVE_MREMAP */ /** * Define CALL_MORECORE */ #if HAVE_MORECORE #ifdef MORECORE #define CALL_MORECORE(S) MORECORE(S) #else /* MORECORE */ #define CALL_MORECORE(S) MORECORE_DEFAULT(S) #endif /* MORECORE */ #else /* HAVE_MORECORE */ #define CALL_MORECORE(S) MFAIL #endif /* HAVE_MORECORE */ /** * Define CALL_MMAP/CALL_MUNMAP/CALL_DIRECT_MMAP */ #if HAVE_MMAP #define USE_MMAP_BIT (SIZE_T_ONE) #ifdef MMAP #define CALL_MMAP(s) MMAP(s) #else /* MMAP */ #define CALL_MMAP(s) MMAP_DEFAULT(s) #endif /* MMAP */ #ifdef MUNMAP #define CALL_MUNMAP(a, s) MUNMAP((a), (s)) #else /* MUNMAP */ #define CALL_MUNMAP(a, s) MUNMAP_DEFAULT((a), (s)) #endif /* MUNMAP */ #ifdef DIRECT_MMAP #define CALL_DIRECT_MMAP(s) DIRECT_MMAP(s) #else /* DIRECT_MMAP */ #define CALL_DIRECT_MMAP(s) DIRECT_MMAP_DEFAULT(s) #endif /* DIRECT_MMAP */ #else /* HAVE_MMAP */ #define USE_MMAP_BIT (SIZE_T_ZERO) #define MMAP(s) MFAIL #define MUNMAP(a, s) (-1) #define DIRECT_MMAP(s) MFAIL #define CALL_DIRECT_MMAP(s) DIRECT_MMAP(s) #define CALL_MMAP(s) MMAP(s) #define CALL_MUNMAP(a, s) MUNMAP((a), (s)) #endif /* HAVE_MMAP */ /** * Define CALL_MREMAP */ #if HAVE_MMAP && HAVE_MREMAP #ifdef MREMAP #define CALL_MREMAP(addr, osz, nsz, mv) MREMAP((addr), (osz), (nsz), (mv)) #else /* MREMAP */ #define CALL_MREMAP(addr, osz, nsz, mv) MREMAP_DEFAULT((addr), (osz), (nsz), (mv)) #endif /* MREMAP */ #else /* HAVE_MMAP && HAVE_MREMAP */ #define CALL_MREMAP(addr, osz, nsz, mv) MFAIL #endif /* HAVE_MMAP && HAVE_MREMAP */ /* mstate bit set if continguous morecore disabled or failed */ #define USE_NONCONTIGUOUS_BIT (4U) /* segment bit set in create_mspace_with_base */ #define EXTERN_BIT (8U) /* --------------------------- Lock preliminaries ------------------------ */ /* When locks are defined, there is one global lock, plus one per-mspace lock. The global lock_ensures that mparams.magic and other unique mparams values are initialized only once. It also protects sequences of calls to MORECORE. In many cases sys_alloc requires two calls, that should not be interleaved with calls by other threads. This does not protect against direct calls to MORECORE by other threads not using this lock, so there is still code to cope the best we can on interference. Per-mspace locks surround calls to malloc, free, etc. By default, locks are simple non-reentrant mutexes. Because lock-protected regions generally have bounded times, it is OK to use the supplied simple spinlocks. Spinlocks are likely to improve performance for lightly contended applications, but worsen performance under heavy contention. If USE_LOCKS is > 1, the definitions of lock routines here are bypassed, in which case you will need to define the type MLOCK_T, and at least INITIAL_LOCK, DESTROY_LOCK, ACQUIRE_LOCK, RELEASE_LOCK and TRY_LOCK. You must also declare a static MLOCK_T malloc_global_mutex = { initialization values };. */ #if !USE_LOCKS #define USE_LOCK_BIT (0U) #define INITIAL_LOCK(l) (0) #define DESTROY_LOCK(l) (0) #define ACQUIRE_MALLOC_GLOBAL_LOCK() #define RELEASE_MALLOC_GLOBAL_LOCK() #else #if USE_LOCKS > 1 /* ----------------------- User-defined locks ------------------------ */ /* Define your own lock implementation here */ /* #define INITIAL_LOCK(lk) ... */ /* #define DESTROY_LOCK(lk) ... */ /* #define ACQUIRE_LOCK(lk) ... */ /* #define RELEASE_LOCK(lk) ... */ /* #define TRY_LOCK(lk) ... */ /* static MLOCK_T malloc_global_mutex = ... */ #elif USE_SPIN_LOCKS /* First, define CAS_LOCK and CLEAR_LOCK on ints */ /* Note CAS_LOCK defined to return 0 on success */ #if defined(__GNUC__)&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) #define CAS_LOCK(sl) __sync_lock_test_and_set(sl, 1) #define CLEAR_LOCK(sl) __sync_lock_release(sl) #elif (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))) /* Custom spin locks for older gcc on x86 */ static FORCEINLINE int x86_cas_lock(int *sl) { int ret; int val = 1; int cmp = 0; __asm__ __volatile__ ("lock; cmpxchgl %1, %2" : "=a" (ret) : "r" (val), "m" (*(sl)), "0"(cmp) : "memory", "cc"); return ret; } static FORCEINLINE void x86_clear_lock(int* sl) { assert(*sl != 0); int prev = 0; int ret; __asm__ __volatile__ ("lock; xchgl %0, %1" : "=r" (ret) : "m" (*(sl)), "0"(prev) : "memory"); } #define CAS_LOCK(sl) x86_cas_lock(sl) #define CLEAR_LOCK(sl) x86_clear_lock(sl) #else /* Win32 MSC */ #define CAS_LOCK(sl) interlockedexchange(sl, (LONG)1) #define CLEAR_LOCK(sl) interlockedexchange (sl, (LONG)0) #endif /* ... gcc spins locks ... */ /* How to yield for a spin lock */ #define SPINS_PER_YIELD 63 #if defined(_MSC_VER) #define SLEEP_EX_DURATION 50 /* delay for yield/sleep */ #define SPIN_LOCK_YIELD SleepEx(SLEEP_EX_DURATION, FALSE) #elif defined (__SVR4) && defined (__sun) /* solaris */ #define SPIN_LOCK_YIELD thr_yield(); #elif !defined(LACKS_SCHED_H) #define SPIN_LOCK_YIELD sched_yield(); #else #define SPIN_LOCK_YIELD #endif /* ... yield ... */ #if !defined(USE_RECURSIVE_LOCKS) || USE_RECURSIVE_LOCKS == 0 /* Plain spin locks use single word (embedded in malloc_states) */ static int spin_acquire_lock(int *sl) { int spins = 0; while (*(volatile int *)sl != 0 || CAS_LOCK(sl)) { if ((++spins & SPINS_PER_YIELD) == 0) { SPIN_LOCK_YIELD; } } return 0; } #define MLOCK_T int #define TRY_LOCK(sl) !CAS_LOCK(sl) #define RELEASE_LOCK(sl) CLEAR_LOCK(sl) #define ACQUIRE_LOCK(sl) (CAS_LOCK(sl)? spin_acquire_lock(sl) : 0) #define INITIAL_LOCK(sl) (*sl = 0) #define DESTROY_LOCK(sl) (0) static MLOCK_T malloc_global_mutex = 0; #else /* USE_RECURSIVE_LOCKS */ /* types for lock owners */ #ifdef WIN32 #define THREAD_ID_T DWORD #define CURRENT_THREAD GetCurrentThreadId() #define EQ_OWNER(X,Y) ((X) == (Y)) #else /* Note: the following assume that pthread_t is a type that can be initialized to (casted) zero. If this is not the case, you will need to somehow redefine these or not use spin locks. */ #define THREAD_ID_T pthread_t #define CURRENT_THREAD pthread_self() #define EQ_OWNER(X,Y) pthread_equal(X, Y) #endif struct malloc_recursive_lock { int sl; unsigned int c; THREAD_ID_T threadid; }; #define MLOCK_T struct malloc_recursive_lock static MLOCK_T malloc_global_mutex = { 0, 0, (THREAD_ID_T)0}; static FORCEINLINE void recursive_release_lock(MLOCK_T *lk) { assert(lk->sl != 0); if (--lk->c == 0) { CLEAR_LOCK(&lk->sl); } } static FORCEINLINE int recursive_acquire_lock(MLOCK_T *lk) { THREAD_ID_T mythreadid = CURRENT_THREAD; int spins = 0; for (;;) { if (*((volatile int *)(&lk->sl)) == 0) { if (!CAS_LOCK(&lk->sl)) { lk->threadid = mythreadid; lk->c = 1; return 0; } } else if (EQ_OWNER(lk->threadid, mythreadid)) { ++lk->c; return 0; } if ((++spins & SPINS_PER_YIELD) == 0) { SPIN_LOCK_YIELD; } } } static FORCEINLINE int recursive_try_lock(MLOCK_T *lk) { THREAD_ID_T mythreadid = CURRENT_THREAD; if (*((volatile int *)(&lk->sl)) == 0) { if (!CAS_LOCK(&lk->sl)) { lk->threadid = mythreadid; lk->c = 1; return 1; } } else if (EQ_OWNER(lk->threadid, mythreadid)) { ++lk->c; return 1; } return 0; } #define RELEASE_LOCK(lk) recursive_release_lock(lk) #define TRY_LOCK(lk) recursive_try_lock(lk) #define ACQUIRE_LOCK(lk) recursive_acquire_lock(lk) #define INITIAL_LOCK(lk) ((lk)->threadid = (THREAD_ID_T)0, (lk)->sl = 0, (lk)->c = 0) #define DESTROY_LOCK(lk) (0) #endif /* USE_RECURSIVE_LOCKS */ #elif defined(WIN32) /* Win32 critical sections */ #define MLOCK_T CRITICAL_SECTION #define ACQUIRE_LOCK(lk) (EnterCriticalSection(lk), 0) #define RELEASE_LOCK(lk) LeaveCriticalSection(lk) #define TRY_LOCK(lk) TryEnterCriticalSection(lk) #define INITIAL_LOCK(lk) (!InitializeCriticalSectionAndSpinCount((lk), 0x80000000|4000)) #define DESTROY_LOCK(lk) (DeleteCriticalSection(lk), 0) #define NEED_GLOBAL_LOCK_INIT static MLOCK_T malloc_global_mutex; static volatile LONG malloc_global_mutex_status; /* Use spin loop to initialize global lock */ static void init_malloc_global_mutex() { for (;;) { long stat = malloc_global_mutex_status; if (stat > 0) return; /* transition to < 0 while initializing, then to > 0) */ if (stat == 0 && interlockedcompareexchange(&malloc_global_mutex_status, (LONG)-1, (LONG)0) == 0) { InitializeCriticalSection(&malloc_global_mutex); interlockedexchange(&malloc_global_mutex_status, (LONG)1); return; } SleepEx(0, FALSE); } } #else /* pthreads-based locks */ #define MLOCK_T pthread_mutex_t #define ACQUIRE_LOCK(lk) pthread_mutex_lock(lk) #define RELEASE_LOCK(lk) pthread_mutex_unlock(lk) #define TRY_LOCK(lk) (!pthread_mutex_trylock(lk)) #define INITIAL_LOCK(lk) pthread_init_lock(lk) #define DESTROY_LOCK(lk) pthread_mutex_destroy(lk) #if defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0 && defined(linux) && !defined(PTHREAD_MUTEX_RECURSIVE) /* Cope with old-style linux recursive lock initialization by adding */ /* skipped internal declaration from pthread.h */ extern int pthread_mutexattr_setkind_np __P ((pthread_mutexattr_t *__attr, int __kind)); #define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP #define pthread_mutexattr_settype(x,y) pthread_mutexattr_setkind_np(x,y) #endif /* USE_RECURSIVE_LOCKS ... */ static MLOCK_T malloc_global_mutex = PTHREAD_MUTEX_INITIALIZER; static int pthread_init_lock (MLOCK_T *lk) { pthread_mutexattr_t attr; if (pthread_mutexattr_init(&attr)) return 1; #if defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0 if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE)) return 1; #endif if (pthread_mutex_init(lk, &attr)) return 1; if (pthread_mutexattr_destroy(&attr)) return 1; return 0; } #endif /* ... lock types ... */ /* Common code for all lock types */ #define USE_LOCK_BIT (2U) #ifndef ACQUIRE_MALLOC_GLOBAL_LOCK #define ACQUIRE_MALLOC_GLOBAL_LOCK() ACQUIRE_LOCK(&malloc_global_mutex); #endif #ifndef RELEASE_MALLOC_GLOBAL_LOCK #define RELEASE_MALLOC_GLOBAL_LOCK() RELEASE_LOCK(&malloc_global_mutex); #endif #endif /* USE_LOCKS */ /* ----------------------- Chunk representations ------------------------ */ /* (The following includes lightly edited explanations by Colin Plumb.) The malloc_chunk declaration below is misleading (but accurate and necessary). It declares a "view" into memory allowing access to necessary fields at known offsets from a given base. Chunks of memory are maintained using a `boundary tag' method as originally described by Knuth. (See the paper by Paul Wilson ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps for a survey of such techniques.) Sizes of free chunks are stored both in the front of each chunk and at the end. This makes consolidating fragmented chunks into bigger chunks fast. The head fields also hold bits representing whether chunks are free or in use. Here are some pictures to make it clearer. They are "exploded" to show that the state of a chunk can be thought of as extending from the high 31 bits of the head field of its header through the prev_foot and PINUSE_BIT bit of the following chunk header. A chunk that's in use looks like: chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of previous chunk (if P = 0) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| | Size of this chunk 1| +-+ mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +- -+ | | +- -+ | : +- size - sizeof(size_t) available payload bytes -+ : | chunk-> +- -+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1| | Size of next chunk (may or may not be in use) | +-+ mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ And if it's free, it looks like this: chunk-> +- -+ | User payload (must be in use, or we would have merged!) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| | Size of this chunk 0| +-+ mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Prev pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | : +- size - sizeof(struct chunk) unused bytes -+ : | chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of this chunk | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| | Size of next chunk (must be in use, or we would have merged)| +-+ mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | : +- User payload -+ : | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| +-+ Note that since we always merge adjacent free chunks, the chunks adjacent to a free chunk must be in use. Given a pointer to a chunk (which can be derived trivially from the payload pointer) we can, in O(1) time, find out whether the adjacent chunks are free, and if so, unlink them from the lists that they are on and merge them with the current chunk. Chunks always begin on even word boundaries, so the mem portion (which is returned to the user) is also on an even word boundary, and thus at least double-word aligned. The P (PINUSE_BIT) bit, stored in the unused low-order bit of the chunk size (which is always a multiple of two words), is an in-use bit for the *previous* chunk. If that bit is *clear*, then the word before the current chunk size contains the previous chunk size, and can be used to find the front of the previous chunk. The very first chunk allocated always has this bit set, preventing access to non-existent (or non-owned) memory. If pinuse is set for any given chunk, then you CANNOT determine the size of the previous chunk, and might even get a memory addressing fault when trying to do so. The C (CINUSE_BIT) bit, stored in the unused second-lowest bit of the chunk size redundantly records whether the current chunk is inuse (unless the chunk is mmapped). This redundancy enables usage checks within free and realloc, and reduces indirection when freeing and consolidating chunks. Each freshly allocated chunk must have both cinuse and pinuse set. That is, each allocated chunk borders either a previously allocated and still in-use chunk, or the base of its memory arena. This is ensured by making all allocations from the `lowest' part of any found chunk. Further, no free chunk physically borders another one, so each free chunk is known to be preceded and followed by either inuse chunks or the ends of memory. Note that the `foot' of the current chunk is actually represented as the prev_foot of the NEXT chunk. This makes it easier to deal with alignments etc but can be very confusing when trying to extend or adapt this code. The exceptions to all this are 1. The special chunk `top' is the top-most available chunk (i.e., the one bordering the end of available memory). It is treated specially. Top is never included in any bin, is used only if no other chunk is available, and is released back to the system if it is very large (see M_TRIM_THRESHOLD). In effect, the top chunk is treated as larger (and thus less well fitting) than any other available chunk. The top chunk doesn't update its trailing size field since there is no next contiguous chunk that would have to index off it. However, space is still allocated for it (TOP_FOOT_SIZE) to enable separation or merging when space is extended. 3. Chunks allocated via mmap, have both cinuse and pinuse bits cleared in their head fields. Because they are allocated one-by-one, each must carry its own prev_foot field, which is also used to hold the offset this chunk has within its mmapped region, which is needed to preserve alignment. Each mmapped chunk is trailed by the first two fields of a fake next-chunk for sake of usage checks. */ struct malloc_chunk { size_t prev_foot; /* Size of previous chunk (if free). */ size_t head; /* Size and inuse bits. */ struct malloc_chunk* fd; /* double links -- used only if free. */ struct malloc_chunk* bk; }; typedef struct malloc_chunk mchunk; typedef struct malloc_chunk* mchunkptr; typedef struct malloc_chunk* sbinptr; /* The type of bins of chunks */ typedef unsigned int bindex_t; /* Described below */ typedef unsigned int binmap_t; /* Described below */ typedef unsigned int flag_t; /* The type of various bit flag sets */ /* ------------------- Chunks sizes and alignments ----------------------- */ #define MCHUNK_SIZE (sizeof(mchunk)) #if FOOTERS #define CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) #else /* FOOTERS */ #define CHUNK_OVERHEAD (SIZE_T_SIZE) #endif /* FOOTERS */ /* MMapped chunks need a second word of overhead ... */ #define MMAP_CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) /* ... and additional padding for fake next-chunk at foot */ #define MMAP_FOOT_PAD (FOUR_SIZE_T_SIZES) /* The smallest size we can malloc is an aligned minimal chunk */ #define MIN_CHUNK_SIZE\ ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) /* conversion from malloc headers to user pointers, and back */ #define chunk2mem(p) ((void*)((char*)(p) + TWO_SIZE_T_SIZES)) #define mem2chunk(mem) ((mchunkptr)((char*)(mem) - TWO_SIZE_T_SIZES)) /* chunk associated with aligned address A */ #define align_as_chunk(A) (mchunkptr)((A) + align_offset(chunk2mem(A))) /* Bounds on request (not chunk) sizes. */ #define MAX_REQUEST ((-MIN_CHUNK_SIZE) << 2) #define MIN_REQUEST (MIN_CHUNK_SIZE - CHUNK_OVERHEAD - SIZE_T_ONE) /* pad request bytes into a usable size */ #define pad_request(req) \ (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) /* pad request, checking for minimum (but not maximum) */ #define request2size(req) \ (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req)) /* ------------------ Operations on head and foot fields ----------------- */ /* The head field of a chunk is or'ed with PINUSE_BIT when previous adjacent chunk in use, and or'ed with CINUSE_BIT if this chunk is in use, unless mmapped, in which case both bits are cleared. FLAG4_BIT is not used by this malloc, but might be useful in extensions. */ #define PINUSE_BIT (SIZE_T_ONE) #define CINUSE_BIT (SIZE_T_TWO) #define FLAG4_BIT (SIZE_T_FOUR) #define INUSE_BITS (PINUSE_BIT|CINUSE_BIT) #define FLAG_BITS (PINUSE_BIT|CINUSE_BIT|FLAG4_BIT) /* Head value for fenceposts */ #define FENCEPOST_HEAD (INUSE_BITS|SIZE_T_SIZE) /* extraction of fields from head words */ #define cinuse(p) ((p)->head & CINUSE_BIT) #define pinuse(p) ((p)->head & PINUSE_BIT) #define flag4inuse(p) ((p)->head & FLAG4_BIT) #define is_inuse(p) (((p)->head & INUSE_BITS) != PINUSE_BIT) #define is_mmapped(p) (((p)->head & INUSE_BITS) == 0) #define chunksize(p) ((p)->head & ~(FLAG_BITS)) #define clear_pinuse(p) ((p)->head &= ~PINUSE_BIT) #define set_flag4(p) ((p)->head |= FLAG4_BIT) #define clear_flag4(p) ((p)->head &= ~FLAG4_BIT) /* Treat space at ptr +/- offset as a chunk */ #define chunk_plus_offset(p, s) ((mchunkptr)(((char*)(p)) + (s))) #define chunk_minus_offset(p, s) ((mchunkptr)(((char*)(p)) - (s))) /* Ptr to next or previous physical malloc_chunk. */ #define next_chunk(p) ((mchunkptr)( ((char*)(p)) + ((p)->head & ~FLAG_BITS))) #define prev_chunk(p) ((mchunkptr)( ((char*)(p)) - ((p)->prev_foot) )) /* extract next chunk's pinuse bit */ #define next_pinuse(p) ((next_chunk(p)->head) & PINUSE_BIT) /* Get/set size at footer */ #define get_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot) #define set_foot(p, s) (((mchunkptr)((char*)(p) + (s)))->prev_foot = (s)) /* Set size, pinuse bit, and foot */ #define set_size_and_pinuse_of_free_chunk(p, s)\ ((p)->head = (s|PINUSE_BIT), set_foot(p, s)) /* Set size, pinuse bit, foot, and clear next pinuse */ #define set_free_with_pinuse(p, s, n)\ (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s)) /* Get the internal overhead associated with chunk p */ #define overhead_for(p)\ (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD) /* Return true if malloced space is not necessarily cleared */ #if MMAP_CLEARS #define calloc_must_clear(p) (!is_mmapped(p)) #else /* MMAP_CLEARS */ #define calloc_must_clear(p) (1) #endif /* MMAP_CLEARS */ /* ---------------------- Overlaid data structures ----------------------- */ /* When chunks are not in use, they are treated as nodes of either lists or trees. "Small" chunks are stored in circular doubly-linked lists, and look like this: chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of previous chunk | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ `head:' | Size of chunk, in bytes |P| mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Forward pointer to next chunk in list | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Back pointer to previous chunk in list | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Unused space (may be 0 bytes long) . . . . | nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ `foot:' | Size of chunk, in bytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Larger chunks are kept in a form of bitwise digital trees (aka tries) keyed on chunksizes. Because malloc_tree_chunks are only for free chunks greater than 256 bytes, their size doesn't impose any constraints on user chunk sizes. Each node looks like: chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Size of previous chunk | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ `head:' | Size of chunk, in bytes |P| mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Forward pointer to next chunk of same size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Back pointer to previous chunk of same size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Pointer to left child (child[0]) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Pointer to right child (child[1]) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Pointer to parent | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | bin index of this chunk | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Unused space . . | nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ `foot:' | Size of chunk, in bytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Each tree holding treenodes is a tree of unique chunk sizes. Chunks of the same size are arranged in a circularly-linked list, with only the oldest chunk (the next to be used, in our FIFO ordering) actually in the tree. (Tree members are distinguished by a non-null parent pointer.) If a chunk with the same size an an existing node is inserted, it is linked off the existing node using pointers that work in the same way as fd/bk pointers of small chunks. Each tree contains a power of 2 sized range of chunk sizes (the smallest is 0x100 <= x < 0x180), which is is divided in half at each tree level, with the chunks in the smaller half of the range (0x100 <= x < 0x140 for the top nose) in the left subtree and the larger half (0x140 <= x < 0x180) in the right subtree. This is, of course, done by inspecting individual bits. Using these rules, each node's left subtree contains all smaller sizes than its right subtree. However, the node at the root of each subtree has no particular ordering relationship to either. (The dividing line between the subtree sizes is based on trie relation.) If we remove the last chunk of a given size from the interior of the tree, we need to replace it with a leaf node. The tree ordering rules permit a node to be replaced by any leaf below it. The smallest chunk in a tree (a common operation in a best-fit allocator) can be found by walking a path to the leftmost leaf in the tree. Unlike a usual binary tree, where we follow left child pointers until we reach a null, here we follow the right child pointer any time the left one is null, until we reach a leaf with both child pointers null. The smallest chunk in the tree will be somewhere along that path. The worst case number of steps to add, find, or remove a node is bounded by the number of bits differentiating chunks within bins. Under current bin calculations, this ranges from 6 up to 21 (for 32 bit sizes) or up to 53 (for 64 bit sizes). The typical case is of course much better. */ struct malloc_tree_chunk { /* The first four fields must be compatible with malloc_chunk */ size_t prev_foot; size_t head; struct malloc_tree_chunk* fd; struct malloc_tree_chunk* bk; struct malloc_tree_chunk* child[2]; struct malloc_tree_chunk* parent; bindex_t index; }; typedef struct malloc_tree_chunk tchunk; typedef struct malloc_tree_chunk* tchunkptr; typedef struct malloc_tree_chunk* tbinptr; /* The type of bins of trees */ /* A little helper macro for trees */ #define leftmost_child(t) ((t)->child[0] != 0? (t)->child[0] : (t)->child[1]) /* ----------------------------- Segments -------------------------------- */ /* Each malloc space may include non-contiguous segments, held in a list headed by an embedded malloc_segment record representing the top-most space. Segments also include flags holding properties of the space. Large chunks that are directly allocated by mmap are not included in this list. They are instead independently created and destroyed without otherwise keeping track of them. Segment management mainly comes into play for spaces allocated by MMAP. Any call to MMAP might or might not return memory that is adjacent to an existing segment. MORECORE normally contiguously extends the current space, so this space is almost always adjacent, which is simpler and faster to deal with. (This is why MORECORE is used preferentially to MMAP when both are available -- see sys_alloc.) When allocating using MMAP, we don't use any of the hinting mechanisms (inconsistently) supported in various implementations of unix mmap, or distinguish reserving from committing memory. Instead, we just ask for space, and exploit contiguity when we get it. It is probably possible to do better than this on some systems, but no general scheme seems to be significantly better. Management entails a simpler variant of the consolidation scheme used for chunks to reduce fragmentation -- new adjacent memory is normally prepended or appended to an existing segment. However, there are limitations compared to chunk consolidation that mostly reflect the fact that segment processing is relatively infrequent (occurring only when getting memory from system) and that we don't expect to have huge numbers of segments: * Segments are not indexed, so traversal requires linear scans. (It would be possible to index these, but is not worth the extra overhead and complexity for most programs on most platforms.) * New segments are only appended to old ones when holding top-most memory; if they cannot be prepended to others, they are held in different segments. Except for the top-most segment of an mstate, each segment record is kept at the tail of its segment. Segments are added by pushing segment records onto the list headed by &mstate.seg for the containing mstate. Segment flags control allocation/merge/deallocation policies: * If EXTERN_BIT set, then we did not allocate this segment, and so should not try to deallocate or merge with others. (This currently holds only for the initial segment passed into create_mspace_with_base.) * If USE_MMAP_BIT set, the segment may be merged with other surrounding mmapped segments and trimmed/de-allocated using munmap. * If neither bit is set, then the segment was obtained using MORECORE so can be merged with surrounding MORECORE'd segments and deallocated/trimmed using MORECORE with negative arguments. */ struct malloc_segment { char* base; /* base address */ size_t size; /* allocated size */ struct malloc_segment* next; /* ptr to next segment */ flag_t sflags; /* mmap and extern flag */ }; #define is_mmapped_segment(S) ((S)->sflags & USE_MMAP_BIT) #define is_extern_segment(S) ((S)->sflags & EXTERN_BIT) typedef struct malloc_segment msegment; typedef struct malloc_segment* msegmentptr; /* ---------------------------- malloc_state ----------------------------- */ /* A malloc_state holds all of the bookkeeping for a space. The main fields are: Top The topmost chunk of the currently active segment. Its size is cached in topsize. The actual size of topmost space is topsize+TOP_FOOT_SIZE, which includes space reserved for adding fenceposts and segment records if necessary when getting more space from the system. The size at which to autotrim top is cached from mparams in trim_check, except that it is disabled if an autotrim fails. Designated victim (dv) This is the preferred chunk for servicing small requests that don't have exact fits. It is normally the chunk split off most recently to service another small request. Its size is cached in dvsize. The link fields of this chunk are not maintained since it is not kept in a bin. SmallBins An array of bin headers for free chunks. These bins hold chunks with sizes less than MIN_LARGE_SIZE bytes. Each bin contains chunks of all the same size, spaced 8 bytes apart. To simplify use in double-linked lists, each bin header acts as a malloc_chunk pointing to the real first node, if it exists (else pointing to itself). This avoids special-casing for headers. But to avoid waste, we allocate only the fd/bk pointers of bins, and then use repositioning tricks to treat these as the fields of a chunk. TreeBins Treebins are pointers to the roots of trees holding a range of sizes. There are 2 equally spaced treebins for each power of two from TREE_SHIFT to TREE_SHIFT+16. The last bin holds anything larger. Bin maps There is one bit map for small bins ("smallmap") and one for treebins ("treemap). Each bin sets its bit when non-empty, and clears the bit when empty. Bit operations are then used to avoid bin-by-bin searching -- nearly all "search" is done without ever looking at bins that won't be selected. The bit maps conservatively use 32 bits per map word, even if on 64bit system. For a good description of some of the bit-based techniques used here, see Henry S. Warren Jr's book "Hacker's Delight" (and supplement at http://hackersdelight.org/). Many of these are intended to reduce the branchiness of paths through malloc etc, as well as to reduce the number of memory locations read or written. Segments A list of segments headed by an embedded malloc_segment record representing the initial space. Address check support The least_addr field is the least address ever obtained from MORECORE or MMAP. Attempted frees and reallocs of any address less than this are trapped (unless INSECURE is defined). Magic tag A cross-check field that should always hold same value as mparams.magic. Max allowed footprint The maximum allowed bytes to allocate from system (zero means no limit) Flags Bits recording whether to use MMAP, locks, or contiguous MORECORE Statistics Each space keeps track of current and maximum system memory obtained via MORECORE or MMAP. Trim support Fields holding the amount of unused topmost memory that should trigger trimming, and a counter to force periodic scanning to release unused non-topmost segments. Locking If USE_LOCKS is defined, the "mutex" lock is acquired and released around every public call using this mspace. Extension support A void* pointer and a size_t field that can be used to help implement extensions to this malloc. */ /* Bin types, widths and sizes */ #define NSMALLBINS (32U) #define NTREEBINS (32U) #define SMALLBIN_SHIFT (3U) #define SMALLBIN_WIDTH (SIZE_T_ONE << SMALLBIN_SHIFT) #define TREEBIN_SHIFT (8U) #define MIN_LARGE_SIZE (SIZE_T_ONE << TREEBIN_SHIFT) #define MAX_SMALL_SIZE (MIN_LARGE_SIZE - SIZE_T_ONE) #define MAX_SMALL_REQUEST (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD) struct malloc_state { binmap_t smallmap; binmap_t treemap; size_t dvsize; size_t topsize; char* least_addr; mchunkptr dv; mchunkptr top; size_t trim_check; size_t release_checks; size_t magic; mchunkptr smallbins[(NSMALLBINS+1)*2]; tbinptr treebins[NTREEBINS]; size_t footprint; size_t max_footprint; size_t footprint_limit; /* zero means no limit */ flag_t mflags; #if USE_LOCKS MLOCK_T mutex; /* locate lock among fields that rarely change */ #endif /* USE_LOCKS */ msegment seg; void* extp; /* Unused but available for extensions */ size_t exts; }; typedef struct malloc_state* mstate; /* ------------- Global malloc_state and malloc_params ------------------- */ /* malloc_params holds global properties, including those that can be dynamically set using mallopt. There is a single instance, mparams, initialized in init_mparams. Note that the non-zeroness of "magic" also serves as an initialization flag. */ struct malloc_params { size_t magic; size_t page_size; size_t granularity; size_t mmap_threshold; size_t trim_threshold; flag_t default_mflags; }; static struct malloc_params mparams; /* Ensure mparams initialized */ #define ensure_initialization() (void)(mparams.magic != 0 || init_mparams()) #if !ONLY_MSPACES /* The global malloc_state used for all non-"mspace" calls */ static struct malloc_state _gm_; #define gm (&_gm_) #define is_global(M) ((M) == &_gm_) #endif /* !ONLY_MSPACES */ #define is_initialized(M) ((M)->top != 0) /* -------------------------- system alloc setup ------------------------- */ /* Operations on mflags */ #define use_lock(M) ((M)->mflags & USE_LOCK_BIT) #define enable_lock(M) ((M)->mflags |= USE_LOCK_BIT) #if USE_LOCKS #define disable_lock(M) ((M)->mflags &= ~USE_LOCK_BIT) #else #define disable_lock(M) #endif #define use_mmap(M) ((M)->mflags & USE_MMAP_BIT) #define enable_mmap(M) ((M)->mflags |= USE_MMAP_BIT) #if HAVE_MMAP #define disable_mmap(M) ((M)->mflags &= ~USE_MMAP_BIT) #else #define disable_mmap(M) #endif #define use_noncontiguous(M) ((M)->mflags & USE_NONCONTIGUOUS_BIT) #define disable_contiguous(M) ((M)->mflags |= USE_NONCONTIGUOUS_BIT) #define set_lock(M,L)\ ((M)->mflags = (L)?\ ((M)->mflags | USE_LOCK_BIT) :\ ((M)->mflags & ~USE_LOCK_BIT)) /* page-align a size */ #define page_align(S)\ (((S) + (mparams.page_size - SIZE_T_ONE)) & ~(mparams.page_size - SIZE_T_ONE)) /* granularity-align a size */ #define granularity_align(S)\ (((S) + (mparams.granularity - SIZE_T_ONE))\ & ~(mparams.granularity - SIZE_T_ONE)) /* For mmap, use granularity alignment on windows, else page-align */ #ifdef WIN32 #define mmap_align(S) granularity_align(S) #else #define mmap_align(S) page_align(S) #endif /* For sys_alloc, enough padding to ensure can malloc request on success */ #define SYS_ALLOC_PADDING (TOP_FOOT_SIZE + MALLOC_ALIGNMENT) #define is_page_aligned(S)\ (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0) #define is_granularity_aligned(S)\ (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0) /* True if segment S holds address A */ #define segment_holds(S, A)\ ((char*)(A) >= S->base && (char*)(A) < S->base + S->size) /* Return segment holding given address */ static msegmentptr segment_holding(mstate m, char* addr) { msegmentptr sp = &m->seg; for (;;) { if (addr >= sp->base && addr < sp->base + sp->size) return sp; if ((sp = sp->next) == 0) return 0; } } /* Return true if segment contains a segment link */ static int has_segment_link(mstate m, msegmentptr ss) { msegmentptr sp = &m->seg; for (;;) { if ((char*)sp >= ss->base && (char*)sp < ss->base + ss->size) return 1; if ((sp = sp->next) == 0) return 0; } } #ifndef MORECORE_CANNOT_TRIM #define should_trim(M,s) ((s) > (M)->trim_check) #else /* MORECORE_CANNOT_TRIM */ #define should_trim(M,s) (0) #endif /* MORECORE_CANNOT_TRIM */ /* TOP_FOOT_SIZE is padding at the end of a segment, including space that may be needed to place segment records and fenceposts when new noncontiguous segments are added. */ #define TOP_FOOT_SIZE\ (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE) /* ------------------------------- Hooks -------------------------------- */ /* PREACTION should be defined to return 0 on success, and nonzero on failure. If you are not using locking, you can redefine these to do anything you like. */ #if USE_LOCKS #define PREACTION(M) ((use_lock(M))? ACQUIRE_LOCK(&(M)->mutex) : 0) #define POSTACTION(M) { if (use_lock(M)) RELEASE_LOCK(&(M)->mutex); } #else /* USE_LOCKS */ #ifndef PREACTION #define PREACTION(M) (0) #endif /* PREACTION */ #ifndef POSTACTION #define POSTACTION(M) #endif /* POSTACTION */ #endif /* USE_LOCKS */ /* CORRUPTION_ERROR_ACTION is triggered upon detected bad addresses. USAGE_ERROR_ACTION is triggered on detected bad frees and reallocs. The argument p is an address that might have triggered the fault. It is ignored by the two predefined actions, but might be useful in custom actions that try to help diagnose errors. */ #if PROCEED_ON_ERROR /* A count of the number of corruption errors causing resets */ int malloc_corruption_error_count; /* default corruption action */ static void reset_on_error(mstate m); #define CORRUPTION_ERROR_ACTION(m) reset_on_error(m) #define USAGE_ERROR_ACTION(m, p) #else /* PROCEED_ON_ERROR */ #ifndef CORRUPTION_ERROR_ACTION #define CORRUPTION_ERROR_ACTION(m) ABORT #endif /* CORRUPTION_ERROR_ACTION */ #ifndef USAGE_ERROR_ACTION #define USAGE_ERROR_ACTION(m,p) ABORT #endif /* USAGE_ERROR_ACTION */ #endif /* PROCEED_ON_ERROR */ /* -------------------------- Debugging setup ---------------------------- */ #if ! DEBUG #define check_free_chunk(M,P) #define check_inuse_chunk(M,P) #define check_malloced_chunk(M,P,N) #define check_mmapped_chunk(M,P) #define check_malloc_state(M) #define check_top_chunk(M,P) #else /* DEBUG */ #define check_free_chunk(M,P) do_check_free_chunk(M,P) #define check_inuse_chunk(M,P) do_check_inuse_chunk(M,P) #define check_top_chunk(M,P) do_check_top_chunk(M,P) #define check_malloced_chunk(M,P,N) do_check_malloced_chunk(M,P,N) #define check_mmapped_chunk(M,P) do_check_mmapped_chunk(M,P) #define check_malloc_state(M) do_check_malloc_state(M) static void do_check_any_chunk(mstate m, mchunkptr p); static void do_check_top_chunk(mstate m, mchunkptr p); static void do_check_mmapped_chunk(mstate m, mchunkptr p); static void do_check_inuse_chunk(mstate m, mchunkptr p); static void do_check_free_chunk(mstate m, mchunkptr p); static void do_check_malloced_chunk(mstate m, void* mem, size_t s); static void do_check_tree(mstate m, tchunkptr t); static void do_check_treebin(mstate m, bindex_t i); static void do_check_smallbin(mstate m, bindex_t i); static void do_check_malloc_state(mstate m); static int bin_find(mstate m, mchunkptr x); static size_t traverse_and_check(mstate m); #endif /* DEBUG */ /* ---------------------------- Indexing Bins ---------------------------- */ #define is_small(s) (((s) >> SMALLBIN_SHIFT) < NSMALLBINS) #define small_index(s) (bindex_t)((s) >> SMALLBIN_SHIFT) #define small_index2size(i) ((i) << SMALLBIN_SHIFT) #define MIN_SMALL_INDEX (small_index(MIN_CHUNK_SIZE)) /* addressing by index. See above about smallbin repositioning */ #define smallbin_at(M, i) ((sbinptr)((char*)&((M)->smallbins[(i)<<1]))) #define treebin_at(M,i) (&((M)->treebins[i])) /* assign tree index for size S to variable I. Use x86 asm if possible */ #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) #define compute_tree_index(S, I)\ {\ unsigned int X = S >> TREEBIN_SHIFT;\ if (X == 0)\ I = 0;\ else if (X > 0xFFFF)\ I = NTREEBINS-1;\ else {\ unsigned int K = (unsigned) sizeof(X)*__CHAR_BIT__ - 1 - (unsigned) __builtin_clz(X); \ I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ }\ } #elif defined (__INTEL_COMPILER) #define compute_tree_index(S, I)\ {\ size_t X = S >> TREEBIN_SHIFT;\ if (X == 0)\ I = 0;\ else if (X > 0xFFFF)\ I = NTREEBINS-1;\ else {\ unsigned int K = _bit_scan_reverse (X); \ I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ }\ } #elif defined(_MSC_VER) && _MSC_VER>=1300 #define compute_tree_index(S, I)\ {\ size_t X = S >> TREEBIN_SHIFT;\ if (X == 0)\ I = 0;\ else if (X > 0xFFFF)\ I = NTREEBINS-1;\ else {\ unsigned int K;\ _BitScanReverse((DWORD *) &K, (DWORD) X);\ I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ }\ } #else /* GNUC */ #define compute_tree_index(S, I)\ {\ size_t X = S >> TREEBIN_SHIFT;\ if (X == 0)\ I = 0;\ else if (X > 0xFFFF)\ I = NTREEBINS-1;\ else {\ unsigned int Y = (unsigned int)X;\ unsigned int N = ((Y - 0x100) >> 16) & 8;\ unsigned int K = (((Y <<= N) - 0x1000) >> 16) & 4;\ N += K;\ N += K = (((Y <<= K) - 0x4000) >> 16) & 2;\ K = 14 - N + ((Y <<= K) >> 15);\ I = (K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1));\ }\ } #endif /* GNUC */ /* Bit representing maximum resolved size in a treebin at i */ #define bit_for_tree_index(i) \ (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2) /* Shift placing maximum resolved bit in a treebin at i as sign bit */ #define leftshift_for_tree_index(i) \ ((i == NTREEBINS-1)? 0 : \ ((SIZE_T_BITSIZE-SIZE_T_ONE) - (((i) >> 1) + TREEBIN_SHIFT - 2))) /* The size of the smallest chunk held in bin with index i */ #define minsize_for_tree_index(i) \ ((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) | \ (((size_t)((i) & SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1))) /* ------------------------ Operations on bin maps ----------------------- */ /* bit corresponding to given index */ #define idx2bit(i) ((binmap_t)(1) << (i)) /* Mark/Clear bits with given index */ #define mark_smallmap(M,i) ((M)->smallmap |= idx2bit(i)) #define clear_smallmap(M,i) ((M)->smallmap &= ~idx2bit(i)) #define smallmap_is_marked(M,i) ((M)->smallmap & idx2bit(i)) #define mark_treemap(M,i) ((M)->treemap |= idx2bit(i)) #define clear_treemap(M,i) ((M)->treemap &= ~idx2bit(i)) #define treemap_is_marked(M,i) ((M)->treemap & idx2bit(i)) /* isolate the least set bit of a bitmap */ #define least_bit(x) ((x) & -(x)) /* mask with all bits to left of least bit of x on */ #define left_bits(x) ((x<<1) | -(x<<1)) /* mask with all bits to left of or equal to least bit of x on */ #define same_or_left_bits(x) ((x) | -(x)) /* index corresponding to given bit. Use x86 asm if possible */ #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) #define compute_bit2idx(X, I)\ {\ unsigned int J;\ J = __builtin_ctz(X); \ I = (bindex_t)J;\ } #elif defined (__INTEL_COMPILER) #define compute_bit2idx(X, I)\ {\ unsigned int J;\ J = _bit_scan_forward (X); \ I = (bindex_t)J;\ } #elif defined(_MSC_VER) && _MSC_VER>=1300 #define compute_bit2idx(X, I)\ {\ unsigned int J;\ _BitScanForward((DWORD *) &J, X);\ I = (bindex_t)J;\ } #elif USE_BUILTIN_FFS #define compute_bit2idx(X, I) I = ffs(X)-1 #else #define compute_bit2idx(X, I)\ {\ unsigned int Y = X - 1;\ unsigned int K = Y >> (16-4) & 16;\ unsigned int N = K; Y >>= K;\ N += K = Y >> (8-3) & 8; Y >>= K;\ N += K = Y >> (4-2) & 4; Y >>= K;\ N += K = Y >> (2-1) & 2; Y >>= K;\ N += K = Y >> (1-0) & 1; Y >>= K;\ I = (bindex_t)(N + Y);\ } #endif /* GNUC */ /* ----------------------- Runtime Check Support ------------------------- */ /* For security, the main invariant is that malloc/free/etc never writes to a static address other than malloc_state, unless static malloc_state itself has been corrupted, which cannot occur via malloc (because of these checks). In essence this means that we believe all pointers, sizes, maps etc held in malloc_state, but check all of those linked or offsetted from other embedded data structures. These checks are interspersed with main code in a way that tends to minimize their run-time cost. When FOOTERS is defined, in addition to range checking, we also verify footer fields of inuse chunks, which can be used guarantee that the mstate controlling malloc/free is intact. This is a streamlined version of the approach described by William Robertson et al in "Run-time Detection of Heap-based Overflows" LISA'03 http://www.usenix.org/events/lisa03/tech/robertson.html The footer of an inuse chunk holds the xor of its mstate and a random seed, that is checked upon calls to free() and realloc(). This is (probabalistically) unguessable from outside the program, but can be computed by any code successfully malloc'ing any chunk, so does not itself provide protection against code that has already broken security through some other means. Unlike Robertson et al, we always dynamically check addresses of all offset chunks (previous, next, etc). This turns out to be cheaper than relying on hashes. */ #if !INSECURE /* Check if address a is at least as high as any from MORECORE or MMAP */ #define ok_address(M, a) ((char*)(a) >= (M)->least_addr) /* Check if address of next chunk n is higher than base chunk p */ #define ok_next(p, n) ((char*)(p) < (char*)(n)) /* Check if p has inuse status */ #define ok_inuse(p) is_inuse(p) /* Check if p has its pinuse bit on */ #define ok_pinuse(p) pinuse(p) #else /* !INSECURE */ #define ok_address(M, a) (1) #define ok_next(b, n) (1) #define ok_inuse(p) (1) #define ok_pinuse(p) (1) #endif /* !INSECURE */ #if (FOOTERS && !INSECURE) /* Check if (alleged) mstate m has expected magic field */ #define ok_magic(M) ((M)->magic == mparams.magic) #else /* (FOOTERS && !INSECURE) */ #define ok_magic(M) (1) #endif /* (FOOTERS && !INSECURE) */ /* In gcc, use __builtin_expect to minimize impact of checks */ #if !INSECURE #if defined(__GNUC__) && __GNUC__ >= 3 #define RTCHECK(e) __builtin_expect(e, 1) #else /* GNUC */ #define RTCHECK(e) (e) #endif /* GNUC */ #else /* !INSECURE */ #define RTCHECK(e) (1) #endif /* !INSECURE */ /* macros to set up inuse chunks with or without footers */ #if !FOOTERS #define mark_inuse_foot(M,p,s) /* Macros for setting head/foot of non-mmapped chunks */ /* Set cinuse bit and pinuse bit of next chunk */ #define set_inuse(M,p,s)\ ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) /* Set cinuse and pinuse of this chunk and pinuse of next chunk */ #define set_inuse_and_pinuse(M,p,s)\ ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) /* Set size, cinuse and pinuse bit of this chunk */ #define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ ((p)->head = (s|PINUSE_BIT|CINUSE_BIT)) #else /* FOOTERS */ /* Set foot of inuse chunk to be xor of mstate and seed */ #define mark_inuse_foot(M,p,s)\ (((mchunkptr)((char*)(p) + (s)))->prev_foot = ((size_t)(M) ^ mparams.magic)) #define get_mstate_for(p)\ ((mstate)(((mchunkptr)((char*)(p) +\ (chunksize(p))))->prev_foot ^ mparams.magic)) #define set_inuse(M,p,s)\ ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT), \ mark_inuse_foot(M,p,s)) #define set_inuse_and_pinuse(M,p,s)\ ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT),\ mark_inuse_foot(M,p,s)) #define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ mark_inuse_foot(M, p, s)) #endif /* !FOOTERS */ /* ---------------------------- setting mparams -------------------------- */ #if LOCK_AT_FORK static void pre_fork(void) { ACQUIRE_LOCK(&(gm)->mutex); } static void post_fork_parent(void) { RELEASE_LOCK(&(gm)->mutex); } static void post_fork_child(void) { INITIAL_LOCK(&(gm)->mutex); } #endif /* LOCK_AT_FORK */ /* Initialize mparams */ static int init_mparams(void) { #ifdef NEED_GLOBAL_LOCK_INIT if (malloc_global_mutex_status <= 0) init_malloc_global_mutex(); #endif ACQUIRE_MALLOC_GLOBAL_LOCK(); if (mparams.magic == 0) { size_t magic; size_t psize; size_t gsize; #ifndef WIN32 psize = malloc_getpagesize; gsize = ((DEFAULT_GRANULARITY != 0)? DEFAULT_GRANULARITY : psize); #else /* WIN32 */ { SYSTEM_INFO system_info; GetSystemInfo(&system_info); psize = system_info.dwPageSize; gsize = ((DEFAULT_GRANULARITY != 0)? DEFAULT_GRANULARITY : system_info.dwAllocationGranularity); } #endif /* WIN32 */ /* Sanity-check configuration: size_t must be unsigned and as wide as pointer type. ints must be at least 4 bytes. alignment must be at least 8. Alignment, min chunk size, and page size must all be powers of 2. */ if ((sizeof(size_t) != sizeof(char*)) || (MAX_SIZE_T < MIN_CHUNK_SIZE) || (sizeof(int) < 4) || (MALLOC_ALIGNMENT < (size_t)8U) || ((MALLOC_ALIGNMENT & (MALLOC_ALIGNMENT-SIZE_T_ONE)) != 0) || ((MCHUNK_SIZE & (MCHUNK_SIZE-SIZE_T_ONE)) != 0) || ((gsize & (gsize-SIZE_T_ONE)) != 0) || ((psize & (psize-SIZE_T_ONE)) != 0)) ABORT; mparams.granularity = gsize; mparams.page_size = psize; mparams.mmap_threshold = DEFAULT_MMAP_THRESHOLD; mparams.trim_threshold = DEFAULT_TRIM_THRESHOLD; #if MORECORE_CONTIGUOUS mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT; #else /* MORECORE_CONTIGUOUS */ mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT|USE_NONCONTIGUOUS_BIT; #endif /* MORECORE_CONTIGUOUS */ #if !ONLY_MSPACES /* Set up lock for main malloc area */ gm->mflags = mparams.default_mflags; (void)INITIAL_LOCK(&gm->mutex); #endif #if LOCK_AT_FORK pthread_atfork(&pre_fork, &post_fork_parent, &post_fork_child); #endif { #if USE_DEV_RANDOM int fd; unsigned char buf[sizeof(size_t)]; /* Try to use /dev/urandom, else fall back on using time */ if ((fd = open("/dev/urandom", O_RDONLY)) >= 0 && read(fd, buf, sizeof(buf)) == sizeof(buf)) { magic = *((size_t *) buf); close(fd); } else #endif /* USE_DEV_RANDOM */ #ifdef WIN32 magic = (size_t)(GetTickCount() ^ (size_t)0x55555555U); #elif defined(LACKS_TIME_H) magic = (size_t)&magic ^ (size_t)0x55555555U; #else magic = (size_t)(time(0) ^ (size_t)0x55555555U); #endif magic |= (size_t)8U; /* ensure nonzero */ magic &= ~(size_t)7U; /* improve chances of fault for bad values */ /* Until memory modes commonly available, use volatile-write */ (*(volatile size_t *)(&(mparams.magic))) = magic; } } RELEASE_MALLOC_GLOBAL_LOCK(); return 1; } /* support for mallopt */ static int change_mparam(int param_number, int value) { size_t val; ensure_initialization(); val = (value == -1)? MAX_SIZE_T : (size_t)value; switch(param_number) { case M_TRIM_THRESHOLD: mparams.trim_threshold = val; return 1; case M_GRANULARITY: if (val >= mparams.page_size && ((val & (val-1)) == 0)) { mparams.granularity = val; return 1; } else return 0; case M_MMAP_THRESHOLD: mparams.mmap_threshold = val; return 1; default: return 0; } } #if DEBUG /* ------------------------- Debugging Support --------------------------- */ /* Check properties of any chunk, whether free, inuse, mmapped etc */ static void do_check_any_chunk(mstate m, mchunkptr p) { assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); assert(ok_address(m, p)); } /* Check properties of top chunk */ static void do_check_top_chunk(mstate m, mchunkptr p) { msegmentptr sp = segment_holding(m, (char*)p); size_t sz = p->head & ~INUSE_BITS; /* third-lowest bit can be set! */ assert(sp != 0); assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); assert(ok_address(m, p)); assert(sz == m->topsize); assert(sz > 0); assert(sz == ((sp->base + sp->size) - (char*)p) - TOP_FOOT_SIZE); assert(pinuse(p)); assert(!pinuse(chunk_plus_offset(p, sz))); } /* Check properties of (inuse) mmapped chunks */ static void do_check_mmapped_chunk(mstate m, mchunkptr p) { size_t sz = chunksize(p); size_t len = (sz + (p->prev_foot) + MMAP_FOOT_PAD); assert(is_mmapped(p)); assert(use_mmap(m)); assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); assert(ok_address(m, p)); assert(!is_small(sz)); assert((len & (mparams.page_size-SIZE_T_ONE)) == 0); assert(chunk_plus_offset(p, sz)->head == FENCEPOST_HEAD); assert(chunk_plus_offset(p, sz+SIZE_T_SIZE)->head == 0); } /* Check properties of inuse chunks */ static void do_check_inuse_chunk(mstate m, mchunkptr p) { do_check_any_chunk(m, p); assert(is_inuse(p)); assert(next_pinuse(p)); /* If not pinuse and not mmapped, previous chunk has OK offset */ assert(is_mmapped(p) || pinuse(p) || next_chunk(prev_chunk(p)) == p); if (is_mmapped(p)) do_check_mmapped_chunk(m, p); } /* Check properties of free chunks */ static void do_check_free_chunk(mstate m, mchunkptr p) { size_t sz = chunksize(p); mchunkptr next = chunk_plus_offset(p, sz); do_check_any_chunk(m, p); assert(!is_inuse(p)); assert(!next_pinuse(p)); assert (!is_mmapped(p)); if (p != m->dv && p != m->top) { if (sz >= MIN_CHUNK_SIZE) { assert((sz & CHUNK_ALIGN_MASK) == 0); assert(is_aligned(chunk2mem(p))); assert(next->prev_foot == sz); assert(pinuse(p)); assert (next == m->top || is_inuse(next)); assert(p->fd->bk == p); assert(p->bk->fd == p); } else /* markers are always of size SIZE_T_SIZE */ assert(sz == SIZE_T_SIZE); } } /* Check properties of malloced chunks at the point they are malloced */ static void do_check_malloced_chunk(mstate m, void* mem, size_t s) { if (mem != 0) { mchunkptr p = mem2chunk(mem); size_t sz = p->head & ~INUSE_BITS; do_check_inuse_chunk(m, p); assert((sz & CHUNK_ALIGN_MASK) == 0); assert(sz >= MIN_CHUNK_SIZE); assert(sz >= s); /* unless mmapped, size is less than MIN_CHUNK_SIZE more than request */ assert(is_mmapped(p) || sz < (s + MIN_CHUNK_SIZE)); } } /* Check a tree and its subtrees. */ static void do_check_tree(mstate m, tchunkptr t) { tchunkptr head = 0; tchunkptr u = t; bindex_t tindex = t->index; size_t tsize = chunksize(t); bindex_t idx; compute_tree_index(tsize, idx); assert(tindex == idx); assert(tsize >= MIN_LARGE_SIZE); assert(tsize >= minsize_for_tree_index(idx)); assert((idx == NTREEBINS-1) || (tsize < minsize_for_tree_index((idx+1)))); do { /* traverse through chain of same-sized nodes */ do_check_any_chunk(m, ((mchunkptr)u)); assert(u->index == tindex); assert(chunksize(u) == tsize); assert(!is_inuse(u)); assert(!next_pinuse(u)); assert(u->fd->bk == u); assert(u->bk->fd == u); if (u->parent == 0) { assert(u->child[0] == 0); assert(u->child[1] == 0); } else { assert(head == 0); /* only one node on chain has parent */ head = u; assert(u->parent != u); assert (u->parent->child[0] == u || u->parent->child[1] == u || *((tbinptr*)(u->parent)) == u); if (u->child[0] != 0) { assert(u->child[0]->parent == u); assert(u->child[0] != u); do_check_tree(m, u->child[0]); } if (u->child[1] != 0) { assert(u->child[1]->parent == u); assert(u->child[1] != u); do_check_tree(m, u->child[1]); } if (u->child[0] != 0 && u->child[1] != 0) { assert(chunksize(u->child[0]) < chunksize(u->child[1])); } } u = u->fd; } while (u != t); assert(head != 0); } /* Check all the chunks in a treebin. */ static void do_check_treebin(mstate m, bindex_t i) { tbinptr* tb = treebin_at(m, i); tchunkptr t = *tb; int empty = (m->treemap & (1U << i)) == 0; if (t == 0) assert(empty); if (!empty) do_check_tree(m, t); } /* Check all the chunks in a smallbin. */ static void do_check_smallbin(mstate m, bindex_t i) { sbinptr b = smallbin_at(m, i); mchunkptr p = b->bk; unsigned int empty = (m->smallmap & (1U << i)) == 0; if (p == b) assert(empty); if (!empty) { for (; p != b; p = p->bk) { size_t size = chunksize(p); mchunkptr q; /* each chunk claims to be free */ do_check_free_chunk(m, p); /* chunk belongs in bin */ assert(small_index(size) == i); assert(p->bk == b || chunksize(p->bk) == chunksize(p)); /* chunk is followed by an inuse chunk */ q = next_chunk(p); if (q->head != FENCEPOST_HEAD) do_check_inuse_chunk(m, q); } } } /* Find x in a bin. Used in other check functions. */ static int bin_find(mstate m, mchunkptr x) { size_t size = chunksize(x); if (is_small(size)) { bindex_t sidx = small_index(size); sbinptr b = smallbin_at(m, sidx); if (smallmap_is_marked(m, sidx)) { mchunkptr p = b; do { if (p == x) return 1; } while ((p = p->fd) != b); } } else { bindex_t tidx; compute_tree_index(size, tidx); if (treemap_is_marked(m, tidx)) { tchunkptr t = *treebin_at(m, tidx); size_t sizebits = size << leftshift_for_tree_index(tidx); while (t != 0 && chunksize(t) != size) { t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; sizebits <<= 1; } if (t != 0) { tchunkptr u = t; do { if (u == (tchunkptr)x) return 1; } while ((u = u->fd) != t); } } } return 0; } /* Traverse each chunk and check it; return total */ static size_t traverse_and_check(mstate m) { size_t sum = 0; if (is_initialized(m)) { msegmentptr s = &m->seg; sum += m->topsize + TOP_FOOT_SIZE; while (s != 0) { mchunkptr q = align_as_chunk(s->base); mchunkptr lastq = 0; assert(pinuse(q)); while (segment_holds(s, q) && q != m->top && q->head != FENCEPOST_HEAD) { sum += chunksize(q); if (is_inuse(q)) { assert(!bin_find(m, q)); do_check_inuse_chunk(m, q); } else { assert(q == m->dv || bin_find(m, q)); assert(lastq == 0 || is_inuse(lastq)); /* Not 2 consecutive free */ do_check_free_chunk(m, q); } lastq = q; q = next_chunk(q); } s = s->next; } } return sum; } /* Check all properties of malloc_state. */ static void do_check_malloc_state(mstate m) { bindex_t i; size_t total; /* check bins */ for (i = 0; i < NSMALLBINS; ++i) do_check_smallbin(m, i); for (i = 0; i < NTREEBINS; ++i) do_check_treebin(m, i); if (m->dvsize != 0) { /* check dv chunk */ do_check_any_chunk(m, m->dv); assert(m->dvsize == chunksize(m->dv)); assert(m->dvsize >= MIN_CHUNK_SIZE); assert(bin_find(m, m->dv) == 0); } if (m->top != 0) { /* check top chunk */ do_check_top_chunk(m, m->top); /*assert(m->topsize == chunksize(m->top)); redundant */ assert(m->topsize > 0); assert(bin_find(m, m->top) == 0); } total = traverse_and_check(m); assert(total <= m->footprint); assert(m->footprint <= m->max_footprint); } #endif /* DEBUG */ /* ----------------------------- statistics ------------------------------ */ #if !NO_MALLINFO static struct mallinfo internal_mallinfo(mstate m) { struct mallinfo nm = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; ensure_initialization(); if (!PREACTION(m)) { check_malloc_state(m); if (is_initialized(m)) { size_t nfree = SIZE_T_ONE; /* top always free */ size_t mfree = m->topsize + TOP_FOOT_SIZE; size_t sum = mfree; msegmentptr s = &m->seg; while (s != 0) { mchunkptr q = align_as_chunk(s->base); while (segment_holds(s, q) && q != m->top && q->head != FENCEPOST_HEAD) { size_t sz = chunksize(q); sum += sz; if (!is_inuse(q)) { mfree += sz; ++nfree; } q = next_chunk(q); } s = s->next; } nm.arena = sum; nm.ordblks = nfree; nm.hblkhd = m->footprint - sum; nm.usmblks = m->max_footprint; nm.uordblks = m->footprint - mfree; nm.fordblks = mfree; nm.keepcost = m->topsize; } POSTACTION(m); } return nm; } #endif /* !NO_MALLINFO */ #if !NO_MALLOC_STATS static void internal_malloc_stats(mstate m) { ensure_initialization(); if (!PREACTION(m)) { size_t maxfp = 0; size_t fp = 0; size_t used = 0; check_malloc_state(m); if (is_initialized(m)) { msegmentptr s = &m->seg; maxfp = m->max_footprint; fp = m->footprint; used = fp - (m->topsize + TOP_FOOT_SIZE); while (s != 0) { mchunkptr q = align_as_chunk(s->base); while (segment_holds(s, q) && q != m->top && q->head != FENCEPOST_HEAD) { if (!is_inuse(q)) used -= chunksize(q); q = next_chunk(q); } s = s->next; } } POSTACTION(m); /* drop lock */ fprintf(stderr, "max system bytes = %10lu\n", (unsigned long)(maxfp)); fprintf(stderr, "system bytes = %10lu\n", (unsigned long)(fp)); fprintf(stderr, "in use bytes = %10lu\n", (unsigned long)(used)); } } #endif /* NO_MALLOC_STATS */ /* ----------------------- Operations on smallbins ----------------------- */ /* Various forms of linking and unlinking are defined as macros. Even the ones for trees, which are very long but have very short typical paths. This is ugly but reduces reliance on inlining support of compilers. */ /* Link a free chunk into a smallbin */ #define insert_small_chunk(M, P, S) {\ bindex_t I = small_index(S);\ mchunkptr B = smallbin_at(M, I);\ mchunkptr F = B;\ assert(S >= MIN_CHUNK_SIZE);\ if (!smallmap_is_marked(M, I))\ mark_smallmap(M, I);\ else if (RTCHECK(ok_address(M, B->fd)))\ F = B->fd;\ else {\ CORRUPTION_ERROR_ACTION(M);\ }\ B->fd = P;\ F->bk = P;\ P->fd = F;\ P->bk = B;\ } /* Unlink a chunk from a smallbin */ #define unlink_small_chunk(M, P, S) {\ mchunkptr F = P->fd;\ mchunkptr B = P->bk;\ bindex_t I = small_index(S);\ assert(P != B);\ assert(P != F);\ assert(chunksize(P) == small_index2size(I));\ if (RTCHECK(F == smallbin_at(M,I) || (ok_address(M, F) && F->bk == P))) { \ if (B == F) {\ clear_smallmap(M, I);\ }\ else if (RTCHECK(B == smallbin_at(M,I) ||\ (ok_address(M, B) && B->fd == P))) {\ F->bk = B;\ B->fd = F;\ }\ else {\ CORRUPTION_ERROR_ACTION(M);\ }\ }\ else {\ CORRUPTION_ERROR_ACTION(M);\ }\ } /* Unlink the first chunk from a smallbin */ #define unlink_first_small_chunk(M, B, P, I) {\ mchunkptr F = P->fd;\ assert(P != B);\ assert(P != F);\ assert(chunksize(P) == small_index2size(I));\ if (B == F) {\ clear_smallmap(M, I);\ }\ else if (RTCHECK(ok_address(M, F) && F->bk == P)) {\ F->bk = B;\ B->fd = F;\ }\ else {\ CORRUPTION_ERROR_ACTION(M);\ }\ } /* Replace dv node, binning the old one */ /* Used only when dvsize known to be small */ #define replace_dv(M, P, S) {\ size_t DVS = M->dvsize;\ assert(is_small(DVS));\ if (DVS != 0) {\ mchunkptr DV = M->dv;\ insert_small_chunk(M, DV, DVS);\ }\ M->dvsize = S;\ M->dv = P;\ } /* ------------------------- Operations on trees ------------------------- */ /* Insert chunk into tree */ #define insert_large_chunk(M, X, S) {\ tbinptr* H;\ bindex_t I;\ compute_tree_index(S, I);\ H = treebin_at(M, I);\ X->index = I;\ X->child[0] = X->child[1] = 0;\ if (!treemap_is_marked(M, I)) {\ mark_treemap(M, I);\ *H = X;\ X->parent = (tchunkptr)H;\ X->fd = X->bk = X;\ }\ else {\ tchunkptr T = *H;\ size_t K = S << leftshift_for_tree_index(I);\ for (;;) {\ if (chunksize(T) != S) {\ tchunkptr* C = &(T->child[(K >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]);\ K <<= 1;\ if (*C != 0)\ T = *C;\ else if (RTCHECK(ok_address(M, C))) {\ *C = X;\ X->parent = T;\ X->fd = X->bk = X;\ break;\ }\ else {\ CORRUPTION_ERROR_ACTION(M);\ break;\ }\ }\ else {\ tchunkptr F = T->fd;\ if (RTCHECK(ok_address(M, T) && ok_address(M, F))) {\ T->fd = F->bk = X;\ X->fd = F;\ X->bk = T;\ X->parent = 0;\ break;\ }\ else {\ CORRUPTION_ERROR_ACTION(M);\ break;\ }\ }\ }\ }\ } /* Unlink steps: 1. If x is a chained node, unlink it from its same-sized fd/bk links and choose its bk node as its replacement. 2. If x was the last node of its size, but not a leaf node, it must be replaced with a leaf node (not merely one with an open left or right), to make sure that lefts and rights of descendents correspond properly to bit masks. We use the rightmost descendent of x. We could use any other leaf, but this is easy to locate and tends to counteract removal of leftmosts elsewhere, and so keeps paths shorter than minimally guaranteed. This doesn't loop much because on average a node in a tree is near the bottom. 3. If x is the base of a chain (i.e., has parent links) relink x's parent and children to x's replacement (or null if none). */ #define unlink_large_chunk(M, X) {\ tchunkptr XP = X->parent;\ tchunkptr R;\ if (X->bk != X) {\ tchunkptr F = X->fd;\ R = X->bk;\ if (RTCHECK(ok_address(M, F) && F->bk == X && R->fd == X)) {\ F->bk = R;\ R->fd = F;\ }\ else {\ CORRUPTION_ERROR_ACTION(M);\ }\ }\ else {\ tchunkptr* RP;\ if (((R = *(RP = &(X->child[1]))) != 0) ||\ ((R = *(RP = &(X->child[0]))) != 0)) {\ tchunkptr* CP;\ while ((*(CP = &(R->child[1])) != 0) ||\ (*(CP = &(R->child[0])) != 0)) {\ R = *(RP = CP);\ }\ if (RTCHECK(ok_address(M, RP)))\ *RP = 0;\ else {\ CORRUPTION_ERROR_ACTION(M);\ }\ }\ }\ if (XP != 0) {\ tbinptr* H = treebin_at(M, X->index);\ if (X == *H) {\ if ((*H = R) == 0) \ clear_treemap(M, X->index);\ }\ else if (RTCHECK(ok_address(M, XP))) {\ if (XP->child[0] == X) \ XP->child[0] = R;\ else \ XP->child[1] = R;\ }\ else\ CORRUPTION_ERROR_ACTION(M);\ if (R != 0) {\ if (RTCHECK(ok_address(M, R))) {\ tchunkptr C0, C1;\ R->parent = XP;\ if ((C0 = X->child[0]) != 0) {\ if (RTCHECK(ok_address(M, C0))) {\ R->child[0] = C0;\ C0->parent = R;\ }\ else\ CORRUPTION_ERROR_ACTION(M);\ }\ if ((C1 = X->child[1]) != 0) {\ if (RTCHECK(ok_address(M, C1))) {\ R->child[1] = C1;\ C1->parent = R;\ }\ else\ CORRUPTION_ERROR_ACTION(M);\ }\ }\ else\ CORRUPTION_ERROR_ACTION(M);\ }\ }\ } /* Relays to large vs small bin operations */ #define insert_chunk(M, P, S)\ if (is_small(S)) insert_small_chunk(M, P, S)\ else { tchunkptr TP = (tchunkptr)(P); insert_large_chunk(M, TP, S); } #define unlink_chunk(M, P, S)\ if (is_small(S)) unlink_small_chunk(M, P, S)\ else { tchunkptr TP = (tchunkptr)(P); unlink_large_chunk(M, TP); } /* Relays to internal calls to malloc/free from realloc, memalign etc */ #if ONLY_MSPACES #define internal_malloc(m, b) mspace_malloc(m, b) #define internal_free(m, mem) mspace_free(m,mem); #else /* ONLY_MSPACES */ #if MSPACES #define internal_malloc(m, b)\ ((m == gm)? dlmalloc(b) : mspace_malloc(m, b)) #define internal_free(m, mem)\ if (m == gm) dlfree(mem); else mspace_free(m,mem); #else /* MSPACES */ #define internal_malloc(m, b) dlmalloc(b) #define internal_free(m, mem) dlfree(mem) #endif /* MSPACES */ #endif /* ONLY_MSPACES */ /* ----------------------- Direct-mmapping chunks ----------------------- */ /* Directly mmapped chunks are set up with an offset to the start of the mmapped region stored in the prev_foot field of the chunk. This allows reconstruction of the required argument to MUNMAP when freed, and also allows adjustment of the returned chunk to meet alignment requirements (especially in memalign). */ /* Malloc using mmap */ static void* mmap_alloc(mstate m, size_t nb) { size_t mmsize = mmap_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); if (m->footprint_limit != 0) { size_t fp = m->footprint + mmsize; if (fp <= m->footprint || fp > m->footprint_limit) return 0; } if (mmsize > nb) { /* Check for wrap around 0 */ char* mm = (char*)(CALL_DIRECT_MMAP(mmsize)); if (mm != CMFAIL) { size_t offset = align_offset(chunk2mem(mm)); size_t psize = mmsize - offset - MMAP_FOOT_PAD; mchunkptr p = (mchunkptr)(mm + offset); p->prev_foot = offset; p->head = psize; mark_inuse_foot(m, p, psize); chunk_plus_offset(p, psize)->head = FENCEPOST_HEAD; chunk_plus_offset(p, psize+SIZE_T_SIZE)->head = 0; if (m->least_addr == 0 || mm < m->least_addr) m->least_addr = mm; if ((m->footprint += mmsize) > m->max_footprint) m->max_footprint = m->footprint; assert(is_aligned(chunk2mem(p))); check_mmapped_chunk(m, p); return chunk2mem(p); } } return 0; } /* Realloc using mmap */ static mchunkptr mmap_resize(mstate m, mchunkptr oldp, size_t nb, int flags) { size_t oldsize = chunksize(oldp); (void)flags; /* placate people compiling -Wunused */ if (is_small(nb)) /* Can't shrink mmap regions below small size */ return 0; /* Keep old chunk if big enough but not too big */ if (oldsize >= nb + SIZE_T_SIZE && (oldsize - nb) <= (mparams.granularity << 1)) return oldp; else { size_t offset = oldp->prev_foot; size_t oldmmsize = oldsize + offset + MMAP_FOOT_PAD; size_t newmmsize = mmap_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); char* cp = (char*)CALL_MREMAP((char*)oldp - offset, oldmmsize, newmmsize, flags); if (cp != CMFAIL) { mchunkptr newp = (mchunkptr)(cp + offset); size_t psize = newmmsize - offset - MMAP_FOOT_PAD; newp->head = psize; mark_inuse_foot(m, newp, psize); chunk_plus_offset(newp, psize)->head = FENCEPOST_HEAD; chunk_plus_offset(newp, psize+SIZE_T_SIZE)->head = 0; if (cp < m->least_addr) m->least_addr = cp; if ((m->footprint += newmmsize - oldmmsize) > m->max_footprint) m->max_footprint = m->footprint; check_mmapped_chunk(m, newp); return newp; } } return 0; } /* -------------------------- mspace management -------------------------- */ /* Initialize top chunk and its size */ static void init_top(mstate m, mchunkptr p, size_t psize) { /* Ensure alignment */ size_t offset = align_offset(chunk2mem(p)); p = (mchunkptr)((char*)p + offset); psize -= offset; m->top = p; m->topsize = psize; p->head = psize | PINUSE_BIT; /* set size of fake trailing chunk holding overhead space only once */ chunk_plus_offset(p, psize)->head = TOP_FOOT_SIZE; m->trim_check = mparams.trim_threshold; /* reset on each update */ } /* Initialize bins for a new mstate that is otherwise zeroed out */ static void init_bins(mstate m) { /* Establish circular links for smallbins */ bindex_t i; for (i = 0; i < NSMALLBINS; ++i) { sbinptr bin = smallbin_at(m,i); bin->fd = bin->bk = bin; } } #if PROCEED_ON_ERROR /* default corruption action */ static void reset_on_error(mstate m) { int i; ++malloc_corruption_error_count; /* Reinitialize fields to forget about all memory */ m->smallmap = m->treemap = 0; m->dvsize = m->topsize = 0; m->seg.base = 0; m->seg.size = 0; m->seg.next = 0; m->top = m->dv = 0; for (i = 0; i < NTREEBINS; ++i) *treebin_at(m, i) = 0; init_bins(m); } #endif /* PROCEED_ON_ERROR */ /* Allocate chunk and prepend remainder with chunk in successor base. */ static void* prepend_alloc(mstate m, char* newbase, char* oldbase, size_t nb) { mchunkptr p = align_as_chunk(newbase); mchunkptr oldfirst = align_as_chunk(oldbase); size_t psize = (char*)oldfirst - (char*)p; mchunkptr q = chunk_plus_offset(p, nb); size_t qsize = psize - nb; set_size_and_pinuse_of_inuse_chunk(m, p, nb); assert((char*)oldfirst > (char*)q); assert(pinuse(oldfirst)); assert(qsize >= MIN_CHUNK_SIZE); /* consolidate remainder with first chunk of old base */ if (oldfirst == m->top) { size_t tsize = m->topsize += qsize; m->top = q; q->head = tsize | PINUSE_BIT; check_top_chunk(m, q); } else if (oldfirst == m->dv) { size_t dsize = m->dvsize += qsize; m->dv = q; set_size_and_pinuse_of_free_chunk(q, dsize); } else { if (!is_inuse(oldfirst)) { size_t nsize = chunksize(oldfirst); unlink_chunk(m, oldfirst, nsize); oldfirst = chunk_plus_offset(oldfirst, nsize); qsize += nsize; } set_free_with_pinuse(q, qsize, oldfirst); insert_chunk(m, q, qsize); check_free_chunk(m, q); } check_malloced_chunk(m, chunk2mem(p), nb); return chunk2mem(p); } /* Add a segment to hold a new noncontiguous region */ static void add_segment(mstate m, char* tbase, size_t tsize, flag_t mmapped) { /* Determine locations and sizes of segment, fenceposts, old top */ char* old_top = (char*)m->top; msegmentptr oldsp = segment_holding(m, old_top); char* old_end = oldsp->base + oldsp->size; size_t ssize = pad_request(sizeof(struct malloc_segment)); char* rawsp = old_end - (ssize + FOUR_SIZE_T_SIZES + CHUNK_ALIGN_MASK); size_t offset = align_offset(chunk2mem(rawsp)); char* asp = rawsp + offset; char* csp = (asp < (old_top + MIN_CHUNK_SIZE))? old_top : asp; mchunkptr sp = (mchunkptr)csp; msegmentptr ss = (msegmentptr)(chunk2mem(sp)); mchunkptr tnext = chunk_plus_offset(sp, ssize); mchunkptr p = tnext; int nfences = 0; /* reset top to new space */ init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); /* Set up segment record */ assert(is_aligned(ss)); set_size_and_pinuse_of_inuse_chunk(m, sp, ssize); *ss = m->seg; /* Push current record */ m->seg.base = tbase; m->seg.size = tsize; m->seg.sflags = mmapped; m->seg.next = ss; /* Insert trailing fenceposts */ for (;;) { mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE); p->head = FENCEPOST_HEAD; ++nfences; if ((char*)(&(nextp->head)) < old_end) p = nextp; else break; } assert(nfences >= 2); /* Insert the rest of old top into a bin as an ordinary free chunk */ if (csp != old_top) { mchunkptr q = (mchunkptr)old_top; size_t psize = csp - old_top; mchunkptr tn = chunk_plus_offset(q, psize); set_free_with_pinuse(q, psize, tn); insert_chunk(m, q, psize); } check_top_chunk(m, m->top); } /* -------------------------- System allocation -------------------------- */ /* Get memory from system using MORECORE or MMAP */ static void* sys_alloc(mstate m, size_t nb) { char* tbase = CMFAIL; size_t tsize = 0; flag_t mmap_flag = 0; size_t asize; /* allocation size */ ensure_initialization(); /* Directly map large chunks, but only if already initialized */ if (use_mmap(m) && nb >= mparams.mmap_threshold && m->topsize != 0) { void* mem = mmap_alloc(m, nb); if (mem != 0) return mem; } asize = granularity_align(nb + SYS_ALLOC_PADDING); if (asize <= nb) return 0; /* wraparound */ if (m->footprint_limit != 0) { size_t fp = m->footprint + asize; if (fp <= m->footprint || fp > m->footprint_limit) return 0; } /* Try getting memory in any of three ways (in most-preferred to least-preferred order): 1. A call to MORECORE that can normally contiguously extend memory. (disabled if not MORECORE_CONTIGUOUS or not HAVE_MORECORE or or main space is mmapped or a previous contiguous call failed) 2. A call to MMAP new space (disabled if not HAVE_MMAP). Note that under the default settings, if MORECORE is unable to fulfill a request, and HAVE_MMAP is true, then mmap is used as a noncontiguous system allocator. This is a useful backup strategy for systems with holes in address spaces -- in this case sbrk cannot contiguously expand the heap, but mmap may be able to find space. 3. A call to MORECORE that cannot usually contiguously extend memory. (disabled if not HAVE_MORECORE) In all cases, we need to request enough bytes from system to ensure we can malloc nb bytes upon success, so pad with enough space for top_foot, plus alignment-pad to make sure we don't lose bytes if not on boundary, and round this up to a granularity unit. */ if (MORECORE_CONTIGUOUS && !use_noncontiguous(m)) { char* br = CMFAIL; size_t ssize = asize; /* sbrk call size */ msegmentptr ss = (m->top == 0)? 0 : segment_holding(m, (char*)m->top); ACQUIRE_MALLOC_GLOBAL_LOCK(); if (ss == 0) { /* First time through or recovery */ char* base = (char*)CALL_MORECORE(0); if (base != CMFAIL) { size_t fp; /* Adjust to end on a page boundary */ if (!is_page_aligned(base)) ssize += (page_align((size_t)base) - (size_t)base); fp = m->footprint + ssize; /* recheck limits */ if (ssize > nb && ssize < HALF_MAX_SIZE_T && (m->footprint_limit == 0 || (fp > m->footprint && fp <= m->footprint_limit)) && (br = (char*)(CALL_MORECORE(ssize))) == base) { tbase = base; tsize = ssize; } } } else { /* Subtract out existing available top space from MORECORE request. */ ssize = granularity_align(nb - m->topsize + SYS_ALLOC_PADDING); /* Use mem here only if it did continuously extend old space */ if (ssize < HALF_MAX_SIZE_T && (br = (char*)(CALL_MORECORE(ssize))) == ss->base+ss->size) { tbase = br; tsize = ssize; } } if (tbase == CMFAIL) { /* Cope with partial failure */ if (br != CMFAIL) { /* Try to use/extend the space we did get */ if (ssize < HALF_MAX_SIZE_T && ssize < nb + SYS_ALLOC_PADDING) { size_t esize = granularity_align(nb + SYS_ALLOC_PADDING - ssize); if (esize < HALF_MAX_SIZE_T) { char* end = (char*)CALL_MORECORE(esize); if (end != CMFAIL) ssize += esize; else { /* Can't use; try to release */ (void) CALL_MORECORE(-ssize); br = CMFAIL; } } } } if (br != CMFAIL) { /* Use the space we did get */ tbase = br; tsize = ssize; } else disable_contiguous(m); /* Don't try contiguous path in the future */ } RELEASE_MALLOC_GLOBAL_LOCK(); } if (HAVE_MMAP && tbase == CMFAIL) { /* Try MMAP */ char* mp = (char*)(CALL_MMAP(asize)); if (mp != CMFAIL) { tbase = mp; tsize = asize; mmap_flag = USE_MMAP_BIT; } } if (HAVE_MORECORE && tbase == CMFAIL) { /* Try noncontiguous MORECORE */ if (asize < HALF_MAX_SIZE_T) { char* br = CMFAIL; char* end = CMFAIL; ACQUIRE_MALLOC_GLOBAL_LOCK(); br = (char*)(CALL_MORECORE(asize)); end = (char*)(CALL_MORECORE(0)); RELEASE_MALLOC_GLOBAL_LOCK(); if (br != CMFAIL && end != CMFAIL && br < end) { size_t ssize = end - br; if (ssize > nb + TOP_FOOT_SIZE) { tbase = br; tsize = ssize; } } } } if (tbase != CMFAIL) { if ((m->footprint += tsize) > m->max_footprint) m->max_footprint = m->footprint; if (!is_initialized(m)) { /* first-time initialization */ if (m->least_addr == 0 || tbase < m->least_addr) m->least_addr = tbase; m->seg.base = tbase; m->seg.size = tsize; m->seg.sflags = mmap_flag; m->magic = mparams.magic; m->release_checks = MAX_RELEASE_CHECK_RATE; init_bins(m); #if !ONLY_MSPACES if (is_global(m)) init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); else #endif { /* Offset top by embedded malloc_state */ mchunkptr mn = next_chunk(mem2chunk(m)); init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) -TOP_FOOT_SIZE); } } else { /* Try to merge with an existing segment */ msegmentptr sp = &m->seg; /* Only consider most recent segment if traversal suppressed */ while (sp != 0 && tbase != sp->base + sp->size) sp = (NO_SEGMENT_TRAVERSAL) ? 0 : sp->next; if (sp != 0 && !is_extern_segment(sp) && (sp->sflags & USE_MMAP_BIT) == mmap_flag && segment_holds(sp, m->top)) { /* append */ sp->size += tsize; init_top(m, m->top, m->topsize + tsize); } else { if (tbase < m->least_addr) m->least_addr = tbase; sp = &m->seg; while (sp != 0 && sp->base != tbase + tsize) sp = (NO_SEGMENT_TRAVERSAL) ? 0 : sp->next; if (sp != 0 && !is_extern_segment(sp) && (sp->sflags & USE_MMAP_BIT) == mmap_flag) { char* oldbase = sp->base; sp->base = tbase; sp->size += tsize; return prepend_alloc(m, tbase, oldbase, nb); } else add_segment(m, tbase, tsize, mmap_flag); } } if (nb < m->topsize) { /* Allocate from new or extended top space */ size_t rsize = m->topsize -= nb; mchunkptr p = m->top; mchunkptr r = m->top = chunk_plus_offset(p, nb); r->head = rsize | PINUSE_BIT; set_size_and_pinuse_of_inuse_chunk(m, p, nb); check_top_chunk(m, m->top); check_malloced_chunk(m, chunk2mem(p), nb); return chunk2mem(p); } } MALLOC_FAILURE_ACTION; return 0; } /* ----------------------- system deallocation -------------------------- */ /* Unmap and unlink any mmapped segments that don't contain used chunks */ static size_t release_unused_segments(mstate m) { size_t released = 0; int nsegs = 0; msegmentptr pred = &m->seg; msegmentptr sp = pred->next; while (sp != 0) { char* base = sp->base; size_t size = sp->size; msegmentptr next = sp->next; ++nsegs; if (is_mmapped_segment(sp) && !is_extern_segment(sp)) { mchunkptr p = align_as_chunk(base); size_t psize = chunksize(p); /* Can unmap if first chunk holds entire segment and not pinned */ if (!is_inuse(p) && (char*)p + psize >= base + size - TOP_FOOT_SIZE) { tchunkptr tp = (tchunkptr)p; assert(segment_holds(sp, (char*)sp)); if (p == m->dv) { m->dv = 0; m->dvsize = 0; } else { unlink_large_chunk(m, tp); } if (CALL_MUNMAP(base, size) == 0) { released += size; m->footprint -= size; /* unlink obsoleted record */ sp = pred; sp->next = next; } else { /* back out if cannot unmap */ insert_large_chunk(m, tp, psize); } } } if (NO_SEGMENT_TRAVERSAL) /* scan only first segment */ break; pred = sp; sp = next; } /* Reset check counter */ m->release_checks = (((size_t) nsegs > (size_t) MAX_RELEASE_CHECK_RATE)? (size_t) nsegs : (size_t) MAX_RELEASE_CHECK_RATE); return released; } static int sys_trim(mstate m, size_t pad) { size_t released = 0; ensure_initialization(); if (pad < MAX_REQUEST && is_initialized(m)) { pad += TOP_FOOT_SIZE; /* ensure enough room for segment overhead */ if (m->topsize > pad) { /* Shrink top space in granularity-size units, keeping at least one */ size_t unit = mparams.granularity; size_t extra = ((m->topsize - pad + (unit - SIZE_T_ONE)) / unit - SIZE_T_ONE) * unit; msegmentptr sp = segment_holding(m, (char*)m->top); if (!is_extern_segment(sp)) { if (is_mmapped_segment(sp)) { if (HAVE_MMAP && sp->size >= extra && !has_segment_link(m, sp)) { /* can't shrink if pinned */ size_t newsize = sp->size - extra; (void)newsize; /* placate people compiling -Wunused-variable */ /* Prefer mremap, fall back to munmap */ if ((CALL_MREMAP(sp->base, sp->size, newsize, 0) != MFAIL) || (CALL_MUNMAP(sp->base + newsize, extra) == 0)) { released = extra; } } } else if (HAVE_MORECORE) { if (extra >= HALF_MAX_SIZE_T) /* Avoid wrapping negative */ extra = (HALF_MAX_SIZE_T) + SIZE_T_ONE - unit; ACQUIRE_MALLOC_GLOBAL_LOCK(); { /* Make sure end of memory is where we last set it. */ char* old_br = (char*)(CALL_MORECORE(0)); if (old_br == sp->base + sp->size) { char* rel_br = (char*)(CALL_MORECORE(-extra)); char* new_br = (char*)(CALL_MORECORE(0)); if (rel_br != CMFAIL && new_br < old_br) released = old_br - new_br; } } RELEASE_MALLOC_GLOBAL_LOCK(); } } if (released != 0) { sp->size -= released; m->footprint -= released; init_top(m, m->top, m->topsize - released); check_top_chunk(m, m->top); } } /* Unmap any unused mmapped segments */ if (HAVE_MMAP) released += release_unused_segments(m); /* On failure, disable autotrim to avoid repeated failed future calls */ if (released == 0 && m->topsize > m->trim_check) m->trim_check = MAX_SIZE_T; } return (released != 0)? 1 : 0; } /* Consolidate and bin a chunk. Differs from exported versions of free mainly in that the chunk need not be marked as inuse. */ static void dispose_chunk(mstate m, mchunkptr p, size_t psize) { mchunkptr next = chunk_plus_offset(p, psize); if (!pinuse(p)) { mchunkptr prev; size_t prevsize = p->prev_foot; if (is_mmapped(p)) { psize += prevsize + MMAP_FOOT_PAD; if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) m->footprint -= psize; return; } prev = chunk_minus_offset(p, prevsize); psize += prevsize; p = prev; if (RTCHECK(ok_address(m, prev))) { /* consolidate backward */ if (p != m->dv) { unlink_chunk(m, p, prevsize); } else if ((next->head & INUSE_BITS) == INUSE_BITS) { m->dvsize = psize; set_free_with_pinuse(p, psize, next); return; } } else { CORRUPTION_ERROR_ACTION(m); return; } } if (RTCHECK(ok_address(m, next))) { if (!cinuse(next)) { /* consolidate forward */ if (next == m->top) { size_t tsize = m->topsize += psize; m->top = p; p->head = tsize | PINUSE_BIT; if (p == m->dv) { m->dv = 0; m->dvsize = 0; } return; } else if (next == m->dv) { size_t dsize = m->dvsize += psize; m->dv = p; set_size_and_pinuse_of_free_chunk(p, dsize); return; } else { size_t nsize = chunksize(next); psize += nsize; unlink_chunk(m, next, nsize); set_size_and_pinuse_of_free_chunk(p, psize); if (p == m->dv) { m->dvsize = psize; return; } } } else { set_free_with_pinuse(p, psize, next); } insert_chunk(m, p, psize); } else { CORRUPTION_ERROR_ACTION(m); } } /* ---------------------------- malloc --------------------------- */ /* allocate a large request from the best fitting chunk in a treebin */ static void* tmalloc_large(mstate m, size_t nb) { tchunkptr v = 0; size_t rsize = -nb; /* Unsigned negation */ tchunkptr t; bindex_t idx; compute_tree_index(nb, idx); if ((t = *treebin_at(m, idx)) != 0) { /* Traverse tree for this bin looking for node with size == nb */ size_t sizebits = nb << leftshift_for_tree_index(idx); tchunkptr rst = 0; /* The deepest untaken right subtree */ for (;;) { tchunkptr rt; size_t trem = chunksize(t) - nb; if (trem < rsize) { v = t; if ((rsize = trem) == 0) break; } rt = t->child[1]; t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; if (rt != 0 && rt != t) rst = rt; if (t == 0) { t = rst; /* set t to least subtree holding sizes > nb */ break; } sizebits <<= 1; } } if (t == 0 && v == 0) { /* set t to root of next non-empty treebin */ binmap_t leftbits = left_bits(idx2bit(idx)) & m->treemap; if (leftbits != 0) { bindex_t i; binmap_t leastbit = least_bit(leftbits); compute_bit2idx(leastbit, i); t = *treebin_at(m, i); } } while (t != 0) { /* find smallest of tree or subtree */ size_t trem = chunksize(t) - nb; if (trem < rsize) { rsize = trem; v = t; } t = leftmost_child(t); } /* If dv is a better fit, return 0 so malloc will use it */ if (v != 0 && rsize < (size_t)(m->dvsize - nb)) { if (RTCHECK(ok_address(m, v))) { /* split */ mchunkptr r = chunk_plus_offset(v, nb); assert(chunksize(v) == rsize + nb); if (RTCHECK(ok_next(v, r))) { unlink_large_chunk(m, v); if (rsize < MIN_CHUNK_SIZE) set_inuse_and_pinuse(m, v, (rsize + nb)); else { set_size_and_pinuse_of_inuse_chunk(m, v, nb); set_size_and_pinuse_of_free_chunk(r, rsize); insert_chunk(m, r, rsize); } return chunk2mem(v); } } CORRUPTION_ERROR_ACTION(m); } return 0; } /* allocate a small request from the best fitting chunk in a treebin */ static void* tmalloc_small(mstate m, size_t nb) { tchunkptr t, v; size_t rsize; bindex_t i; binmap_t leastbit = least_bit(m->treemap); compute_bit2idx(leastbit, i); v = t = *treebin_at(m, i); rsize = chunksize(t) - nb; while ((t = leftmost_child(t)) != 0) { size_t trem = chunksize(t) - nb; if (trem < rsize) { rsize = trem; v = t; } } if (RTCHECK(ok_address(m, v))) { mchunkptr r = chunk_plus_offset(v, nb); assert(chunksize(v) == rsize + nb); if (RTCHECK(ok_next(v, r))) { unlink_large_chunk(m, v); if (rsize < MIN_CHUNK_SIZE) set_inuse_and_pinuse(m, v, (rsize + nb)); else { set_size_and_pinuse_of_inuse_chunk(m, v, nb); set_size_and_pinuse_of_free_chunk(r, rsize); replace_dv(m, r, rsize); } return chunk2mem(v); } } CORRUPTION_ERROR_ACTION(m); return 0; } #if !ONLY_MSPACES void* dlmalloc(size_t bytes) { /* Basic algorithm: If a small request (< 256 bytes minus per-chunk overhead): 1. If one exists, use a remainderless chunk in associated smallbin. (Remainderless means that there are too few excess bytes to represent as a chunk.) 2. If it is big enough, use the dv chunk, which is normally the chunk adjacent to the one used for the most recent small request. 3. If one exists, split the smallest available chunk in a bin, saving remainder in dv. 4. If it is big enough, use the top chunk. 5. If available, get memory from system and use it Otherwise, for a large request: 1. Find the smallest available binned chunk that fits, and use it if it is better fitting than dv chunk, splitting if necessary. 2. If better fitting than any binned chunk, use the dv chunk. 3. If it is big enough, use the top chunk. 4. If request size >= mmap threshold, try to directly mmap this chunk. 5. If available, get memory from system and use it The ugly goto's here ensure that postaction occurs along all paths. */ #if USE_LOCKS ensure_initialization(); /* initialize in sys_alloc if not using locks */ #endif if (!PREACTION(gm)) { void* mem; size_t nb; if (bytes <= MAX_SMALL_REQUEST) { bindex_t idx; binmap_t smallbits; nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); idx = small_index(nb); smallbits = gm->smallmap >> idx; if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ mchunkptr b, p; idx += ~smallbits & 1; /* Uses next bin if idx empty */ b = smallbin_at(gm, idx); p = b->fd; assert(chunksize(p) == small_index2size(idx)); unlink_first_small_chunk(gm, b, p, idx); set_inuse_and_pinuse(gm, p, small_index2size(idx)); mem = chunk2mem(p); check_malloced_chunk(gm, mem, nb); goto postaction; } else if (nb > gm->dvsize) { if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ mchunkptr b, p, r; size_t rsize; bindex_t i; binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); binmap_t leastbit = least_bit(leftbits); compute_bit2idx(leastbit, i); b = smallbin_at(gm, i); p = b->fd; assert(chunksize(p) == small_index2size(i)); unlink_first_small_chunk(gm, b, p, i); rsize = small_index2size(i) - nb; /* Fit here cannot be remainderless if 4byte sizes */ if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) set_inuse_and_pinuse(gm, p, small_index2size(i)); else { set_size_and_pinuse_of_inuse_chunk(gm, p, nb); r = chunk_plus_offset(p, nb); set_size_and_pinuse_of_free_chunk(r, rsize); replace_dv(gm, r, rsize); } mem = chunk2mem(p); check_malloced_chunk(gm, mem, nb); goto postaction; } else if (gm->treemap != 0 && (mem = tmalloc_small(gm, nb)) != 0) { check_malloced_chunk(gm, mem, nb); goto postaction; } } } else if (bytes >= MAX_REQUEST) nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ else { nb = pad_request(bytes); if (gm->treemap != 0 && (mem = tmalloc_large(gm, nb)) != 0) { check_malloced_chunk(gm, mem, nb); goto postaction; } } if (nb <= gm->dvsize) { size_t rsize = gm->dvsize - nb; mchunkptr p = gm->dv; if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ mchunkptr r = gm->dv = chunk_plus_offset(p, nb); gm->dvsize = rsize; set_size_and_pinuse_of_free_chunk(r, rsize); set_size_and_pinuse_of_inuse_chunk(gm, p, nb); } else { /* exhaust dv */ size_t dvs = gm->dvsize; gm->dvsize = 0; gm->dv = 0; set_inuse_and_pinuse(gm, p, dvs); } mem = chunk2mem(p); check_malloced_chunk(gm, mem, nb); goto postaction; } else if (nb < gm->topsize) { /* Split top */ size_t rsize = gm->topsize -= nb; mchunkptr p = gm->top; mchunkptr r = gm->top = chunk_plus_offset(p, nb); r->head = rsize | PINUSE_BIT; set_size_and_pinuse_of_inuse_chunk(gm, p, nb); mem = chunk2mem(p); check_top_chunk(gm, gm->top); check_malloced_chunk(gm, mem, nb); goto postaction; } mem = sys_alloc(gm, nb); postaction: POSTACTION(gm); return mem; } return 0; } /* ---------------------------- free --------------------------- */ void dlfree(void* mem) { /* Consolidate freed chunks with preceeding or succeeding bordering free chunks, if they exist, and then place in a bin. Intermixed with special cases for top, dv, mmapped chunks, and usage errors. */ if (mem != 0) { mchunkptr p = mem2chunk(mem); #if FOOTERS mstate fm = get_mstate_for(p); if (!ok_magic(fm)) { USAGE_ERROR_ACTION(fm, p); return; } #else /* FOOTERS */ #define fm gm #endif /* FOOTERS */ if (!PREACTION(fm)) { check_inuse_chunk(fm, p); if (RTCHECK(ok_address(fm, p) && ok_inuse(p))) { size_t psize = chunksize(p); mchunkptr next = chunk_plus_offset(p, psize); if (!pinuse(p)) { size_t prevsize = p->prev_foot; if (is_mmapped(p)) { psize += prevsize + MMAP_FOOT_PAD; if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) fm->footprint -= psize; goto postaction; } else { mchunkptr prev = chunk_minus_offset(p, prevsize); psize += prevsize; p = prev; if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ if (p != fm->dv) { unlink_chunk(fm, p, prevsize); } else if ((next->head & INUSE_BITS) == INUSE_BITS) { fm->dvsize = psize; set_free_with_pinuse(p, psize, next); goto postaction; } } else goto erroraction; } } if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { if (!cinuse(next)) { /* consolidate forward */ if (next == fm->top) { size_t tsize = fm->topsize += psize; fm->top = p; p->head = tsize | PINUSE_BIT; if (p == fm->dv) { fm->dv = 0; fm->dvsize = 0; } if (should_trim(fm, tsize)) sys_trim(fm, 0); goto postaction; } else if (next == fm->dv) { size_t dsize = fm->dvsize += psize; fm->dv = p; set_size_and_pinuse_of_free_chunk(p, dsize); goto postaction; } else { size_t nsize = chunksize(next); psize += nsize; unlink_chunk(fm, next, nsize); set_size_and_pinuse_of_free_chunk(p, psize); if (p == fm->dv) { fm->dvsize = psize; goto postaction; } } } else set_free_with_pinuse(p, psize, next); if (is_small(psize)) { insert_small_chunk(fm, p, psize); check_free_chunk(fm, p); } else { tchunkptr tp = (tchunkptr)p; insert_large_chunk(fm, tp, psize); check_free_chunk(fm, p); if (--fm->release_checks == 0) release_unused_segments(fm); } goto postaction; } } erroraction: USAGE_ERROR_ACTION(fm, p); postaction: POSTACTION(fm); } } #if !FOOTERS #undef fm #endif /* FOOTERS */ } void* dlcalloc(size_t n_elements, size_t elem_size) { void* mem; size_t req = 0; if (n_elements != 0) { req = n_elements * elem_size; if (((n_elements | elem_size) & ~(size_t)0xffff) && (req / n_elements != elem_size)) req = MAX_SIZE_T; /* force downstream failure on overflow */ } mem = dlmalloc(req); if (mem != 0 && calloc_must_clear(mem2chunk(mem))) memset(mem, 0, req); return mem; } #endif /* !ONLY_MSPACES */ /* ------------ Internal support for realloc, memalign, etc -------------- */ /* Try to realloc; only in-place unless can_move true */ static mchunkptr try_realloc_chunk(mstate m, mchunkptr p, size_t nb, int can_move) { mchunkptr newp = 0; size_t oldsize = chunksize(p); mchunkptr next = chunk_plus_offset(p, oldsize); if (RTCHECK(ok_address(m, p) && ok_inuse(p) && ok_next(p, next) && ok_pinuse(next))) { if (is_mmapped(p)) { newp = mmap_resize(m, p, nb, can_move); } else if (oldsize >= nb) { /* already big enough */ size_t rsize = oldsize - nb; if (rsize >= MIN_CHUNK_SIZE) { /* split off remainder */ mchunkptr r = chunk_plus_offset(p, nb); set_inuse(m, p, nb); set_inuse(m, r, rsize); dispose_chunk(m, r, rsize); } newp = p; } else if (next == m->top) { /* extend into top */ if (oldsize + m->topsize > nb) { size_t newsize = oldsize + m->topsize; size_t newtopsize = newsize - nb; mchunkptr newtop = chunk_plus_offset(p, nb); set_inuse(m, p, nb); newtop->head = newtopsize |PINUSE_BIT; m->top = newtop; m->topsize = newtopsize; newp = p; } } else if (next == m->dv) { /* extend into dv */ size_t dvs = m->dvsize; if (oldsize + dvs >= nb) { size_t dsize = oldsize + dvs - nb; if (dsize >= MIN_CHUNK_SIZE) { mchunkptr r = chunk_plus_offset(p, nb); mchunkptr n = chunk_plus_offset(r, dsize); set_inuse(m, p, nb); set_size_and_pinuse_of_free_chunk(r, dsize); clear_pinuse(n); m->dvsize = dsize; m->dv = r; } else { /* exhaust dv */ size_t newsize = oldsize + dvs; set_inuse(m, p, newsize); m->dvsize = 0; m->dv = 0; } newp = p; } } else if (!cinuse(next)) { /* extend into next free chunk */ size_t nextsize = chunksize(next); if (oldsize + nextsize >= nb) { size_t rsize = oldsize + nextsize - nb; unlink_chunk(m, next, nextsize); if (rsize < MIN_CHUNK_SIZE) { size_t newsize = oldsize + nextsize; set_inuse(m, p, newsize); } else { mchunkptr r = chunk_plus_offset(p, nb); set_inuse(m, p, nb); set_inuse(m, r, rsize); dispose_chunk(m, r, rsize); } newp = p; } } } else { USAGE_ERROR_ACTION(m, chunk2mem(p)); } return newp; } static void* internal_memalign(mstate m, size_t alignment, size_t bytes) { void* mem = 0; if (alignment < MIN_CHUNK_SIZE) /* must be at least a minimum chunk size */ alignment = MIN_CHUNK_SIZE; if ((alignment & (alignment-SIZE_T_ONE)) != 0) {/* Ensure a power of 2 */ size_t a = MALLOC_ALIGNMENT << 1; while (a < alignment) a <<= 1; alignment = a; } if (bytes >= MAX_REQUEST - alignment) { if (m != 0) { /* Test isn't needed but avoids compiler warning */ MALLOC_FAILURE_ACTION; } } else { size_t nb = request2size(bytes); size_t req = nb + alignment + MIN_CHUNK_SIZE - CHUNK_OVERHEAD; mem = internal_malloc(m, req); if (mem != 0) { mchunkptr p = mem2chunk(mem); if (PREACTION(m)) return 0; if ((((size_t)(mem)) & (alignment - 1)) != 0) { /* misaligned */ /* Find an aligned spot inside chunk. Since we need to give back leading space in a chunk of at least MIN_CHUNK_SIZE, if the first calculation places us at a spot with less than MIN_CHUNK_SIZE leader, we can move to the next aligned spot. We've allocated enough total room so that this is always possible. */ char* br = (char*)mem2chunk((size_t)(((size_t)((char*)mem + alignment - SIZE_T_ONE)) & -alignment)); char* pos = ((size_t)(br - (char*)(p)) >= MIN_CHUNK_SIZE)? br : br+alignment; mchunkptr newp = (mchunkptr)pos; size_t leadsize = pos - (char*)(p); size_t newsize = chunksize(p) - leadsize; if (is_mmapped(p)) { /* For mmapped chunks, just adjust offset */ newp->prev_foot = p->prev_foot + leadsize; newp->head = newsize; } else { /* Otherwise, give back leader, use the rest */ set_inuse(m, newp, newsize); set_inuse(m, p, leadsize); dispose_chunk(m, p, leadsize); } p = newp; } /* Give back spare room at the end */ if (!is_mmapped(p)) { size_t size = chunksize(p); if (size > nb + MIN_CHUNK_SIZE) { size_t remainder_size = size - nb; mchunkptr remainder = chunk_plus_offset(p, nb); set_inuse(m, p, nb); set_inuse(m, remainder, remainder_size); dispose_chunk(m, remainder, remainder_size); } } mem = chunk2mem(p); assert (chunksize(p) >= nb); assert(((size_t)mem & (alignment - 1)) == 0); check_inuse_chunk(m, p); POSTACTION(m); } } return mem; } /* Common support for independent_X routines, handling all of the combinations that can result. The opts arg has: bit 0 set if all elements are same size (using sizes[0]) bit 1 set if elements should be zeroed */ static void** ialloc(mstate m, size_t n_elements, size_t* sizes, int opts, void* chunks[]) { size_t element_size; /* chunksize of each element, if all same */ size_t contents_size; /* total size of elements */ size_t array_size; /* request size of pointer array */ void* mem; /* malloced aggregate space */ mchunkptr p; /* corresponding chunk */ size_t remainder_size; /* remaining bytes while splitting */ void** marray; /* either "chunks" or malloced ptr array */ mchunkptr array_chunk; /* chunk for malloced ptr array */ flag_t was_enabled; /* to disable mmap */ size_t size; size_t i; ensure_initialization(); /* compute array length, if needed */ if (chunks != 0) { if (n_elements == 0) return chunks; /* nothing to do */ marray = chunks; array_size = 0; } else { /* if empty req, must still return chunk representing empty array */ if (n_elements == 0) return (void**)internal_malloc(m, 0); marray = 0; array_size = request2size(n_elements * (sizeof(void*))); } /* compute total element size */ if (opts & 0x1) { /* all-same-size */ element_size = request2size(*sizes); contents_size = n_elements * element_size; } else { /* add up all the sizes */ element_size = 0; contents_size = 0; for (i = 0; i != n_elements; ++i) contents_size += request2size(sizes[i]); } size = contents_size + array_size; /* Allocate the aggregate chunk. First disable direct-mmapping so malloc won't use it, since we would not be able to later free/realloc space internal to a segregated mmap region. */ was_enabled = use_mmap(m); disable_mmap(m); mem = internal_malloc(m, size - CHUNK_OVERHEAD); if (was_enabled) enable_mmap(m); if (mem == 0) return 0; if (PREACTION(m)) return 0; p = mem2chunk(mem); remainder_size = chunksize(p); assert(!is_mmapped(p)); if (opts & 0x2) { /* optionally clear the elements */ memset((size_t*)mem, 0, remainder_size - SIZE_T_SIZE - array_size); } /* If not provided, allocate the pointer array as final part of chunk */ if (marray == 0) { size_t array_chunk_size; array_chunk = chunk_plus_offset(p, contents_size); array_chunk_size = remainder_size - contents_size; marray = (void**) (chunk2mem(array_chunk)); set_size_and_pinuse_of_inuse_chunk(m, array_chunk, array_chunk_size); remainder_size = contents_size; } /* split out elements */ for (i = 0; ; ++i) { marray[i] = chunk2mem(p); if (i != n_elements-1) { if (element_size != 0) size = element_size; else size = request2size(sizes[i]); remainder_size -= size; set_size_and_pinuse_of_inuse_chunk(m, p, size); p = chunk_plus_offset(p, size); } else { /* the final element absorbs any overallocation slop */ set_size_and_pinuse_of_inuse_chunk(m, p, remainder_size); break; } } #if DEBUG if (marray != chunks) { /* final element must have exactly exhausted chunk */ if (element_size != 0) { assert(remainder_size == element_size); } else { assert(remainder_size == request2size(sizes[i])); } check_inuse_chunk(m, mem2chunk(marray)); } for (i = 0; i != n_elements; ++i) check_inuse_chunk(m, mem2chunk(marray[i])); #endif /* DEBUG */ POSTACTION(m); return marray; } /* Try to free all pointers in the given array. Note: this could be made faster, by delaying consolidation, at the price of disabling some user integrity checks, We still optimize some consolidations by combining adjacent chunks before freeing, which will occur often if allocated with ialloc or the array is sorted. */ static size_t internal_bulk_free(mstate m, void* array[], size_t nelem) { size_t unfreed = 0; if (!PREACTION(m)) { void** a; void** fence = &(array[nelem]); for (a = array; a != fence; ++a) { void* mem = *a; if (mem != 0) { mchunkptr p = mem2chunk(mem); size_t psize = chunksize(p); #if FOOTERS if (get_mstate_for(p) != m) { ++unfreed; continue; } #endif check_inuse_chunk(m, p); *a = 0; if (RTCHECK(ok_address(m, p) && ok_inuse(p))) { void ** b = a + 1; /* try to merge with next chunk */ mchunkptr next = next_chunk(p); if (b != fence && *b == chunk2mem(next)) { size_t newsize = chunksize(next) + psize; set_inuse(m, p, newsize); *b = chunk2mem(p); } else dispose_chunk(m, p, psize); } else { CORRUPTION_ERROR_ACTION(m); break; } } } if (should_trim(m, m->topsize)) sys_trim(m, 0); POSTACTION(m); } return unfreed; } /* Traversal */ #if MALLOC_INSPECT_ALL static void internal_inspect_all(mstate m, void(*handler)(void *start, void *end, size_t used_bytes, void* callback_arg), void* arg) { if (is_initialized(m)) { mchunkptr top = m->top; msegmentptr s; for (s = &m->seg; s != 0; s = s->next) { mchunkptr q = align_as_chunk(s->base); while (segment_holds(s, q) && q->head != FENCEPOST_HEAD) { mchunkptr next = next_chunk(q); size_t sz = chunksize(q); size_t used; void* start; if (is_inuse(q)) { used = sz - CHUNK_OVERHEAD; /* must not be mmapped */ start = chunk2mem(q); } else { used = 0; if (is_small(sz)) { /* offset by possible bookkeeping */ start = (void*)((char*)q + sizeof(struct malloc_chunk)); } else { start = (void*)((char*)q + sizeof(struct malloc_tree_chunk)); } } if (start < (void*)next) /* skip if all space is bookkeeping */ handler(start, next, used, arg); if (q == top) break; q = next; } } } } #endif /* MALLOC_INSPECT_ALL */ /* ------------------ Exported realloc, memalign, etc -------------------- */ #if !ONLY_MSPACES void* dlrealloc(void* oldmem, size_t bytes) { void* mem = 0; if (oldmem == 0) { mem = dlmalloc(bytes); } else if (bytes >= MAX_REQUEST) { MALLOC_FAILURE_ACTION; } #ifdef REALLOC_ZERO_BYTES_FREES else if (bytes == 0) { dlfree(oldmem); } #endif /* REALLOC_ZERO_BYTES_FREES */ else { size_t nb = request2size(bytes); mchunkptr oldp = mem2chunk(oldmem); #if ! FOOTERS mstate m = gm; #else /* FOOTERS */ mstate m = get_mstate_for(oldp); if (!ok_magic(m)) { USAGE_ERROR_ACTION(m, oldmem); return 0; } #endif /* FOOTERS */ if (!PREACTION(m)) { mchunkptr newp = try_realloc_chunk(m, oldp, nb, 1); POSTACTION(m); if (newp != 0) { check_inuse_chunk(m, newp); mem = chunk2mem(newp); } else { mem = internal_malloc(m, bytes); if (mem != 0) { size_t oc = chunksize(oldp) - overhead_for(oldp); memcpy(mem, oldmem, (oc < bytes)? oc : bytes); internal_free(m, oldmem); } } } } return mem; } void* dlrealloc_in_place(void* oldmem, size_t bytes) { void* mem = 0; if (oldmem != 0) { if (bytes >= MAX_REQUEST) { MALLOC_FAILURE_ACTION; } else { size_t nb = request2size(bytes); mchunkptr oldp = mem2chunk(oldmem); #if ! FOOTERS mstate m = gm; #else /* FOOTERS */ mstate m = get_mstate_for(oldp); if (!ok_magic(m)) { USAGE_ERROR_ACTION(m, oldmem); return 0; } #endif /* FOOTERS */ if (!PREACTION(m)) { mchunkptr newp = try_realloc_chunk(m, oldp, nb, 0); POSTACTION(m); if (newp == oldp) { check_inuse_chunk(m, newp); mem = oldmem; } } } } return mem; } void* dlmemalign(size_t alignment, size_t bytes) { if (alignment <= MALLOC_ALIGNMENT) { return dlmalloc(bytes); } return internal_memalign(gm, alignment, bytes); } int dlposix_memalign(void** pp, size_t alignment, size_t bytes) { void* mem = 0; if (alignment == MALLOC_ALIGNMENT) mem = dlmalloc(bytes); else { size_t d = alignment / sizeof(void*); size_t r = alignment % sizeof(void*); if (r != 0 || d == 0 || (d & (d-SIZE_T_ONE)) != 0) return EINVAL; else if (bytes <= MAX_REQUEST - alignment) { if (alignment < MIN_CHUNK_SIZE) alignment = MIN_CHUNK_SIZE; mem = internal_memalign(gm, alignment, bytes); } } if (mem == 0) return ENOMEM; else { *pp = mem; return 0; } } void* dlvalloc(size_t bytes) { size_t pagesz; ensure_initialization(); pagesz = mparams.page_size; return dlmemalign(pagesz, bytes); } void* dlpvalloc(size_t bytes) { size_t pagesz; ensure_initialization(); pagesz = mparams.page_size; return dlmemalign(pagesz, (bytes + pagesz - SIZE_T_ONE) & ~(pagesz - SIZE_T_ONE)); } void** dlindependent_calloc(size_t n_elements, size_t elem_size, void* chunks[]) { size_t sz = elem_size; /* serves as 1-element array */ return ialloc(gm, n_elements, &sz, 3, chunks); } void** dlindependent_comalloc(size_t n_elements, size_t sizes[], void* chunks[]) { return ialloc(gm, n_elements, sizes, 0, chunks); } size_t dlbulk_free(void* array[], size_t nelem) { return internal_bulk_free(gm, array, nelem); } #if MALLOC_INSPECT_ALL void dlmalloc_inspect_all(void(*handler)(void *start, void *end, size_t used_bytes, void* callback_arg), void* arg) { ensure_initialization(); if (!PREACTION(gm)) { internal_inspect_all(gm, handler, arg); POSTACTION(gm); } } #endif /* MALLOC_INSPECT_ALL */ int dlmalloc_trim(size_t pad) { int result = 0; ensure_initialization(); if (!PREACTION(gm)) { result = sys_trim(gm, pad); POSTACTION(gm); } return result; } size_t dlmalloc_footprint(void) { return gm->footprint; } size_t dlmalloc_max_footprint(void) { return gm->max_footprint; } size_t dlmalloc_footprint_limit(void) { size_t maf = gm->footprint_limit; return maf == 0 ? MAX_SIZE_T : maf; } size_t dlmalloc_set_footprint_limit(size_t bytes) { size_t result; /* invert sense of 0 */ if (bytes == 0) result = granularity_align(1); /* Use minimal size */ if (bytes == MAX_SIZE_T) result = 0; /* disable */ else result = granularity_align(bytes); return gm->footprint_limit = result; } #if !NO_MALLINFO struct mallinfo dlmallinfo(void) { return internal_mallinfo(gm); } #endif /* NO_MALLINFO */ #if !NO_MALLOC_STATS void dlmalloc_stats() { internal_malloc_stats(gm); } #endif /* NO_MALLOC_STATS */ int dlmallopt(int param_number, int value) { return change_mparam(param_number, value); } size_t dlmalloc_usable_size(void* mem) { if (mem != 0) { mchunkptr p = mem2chunk(mem); if (is_inuse(p)) return chunksize(p) - overhead_for(p); } return 0; } #endif /* !ONLY_MSPACES */ /* ----------------------------- user mspaces ---------------------------- */ #if MSPACES static mstate init_user_mstate(char* tbase, size_t tsize) { size_t msize = pad_request(sizeof(struct malloc_state)); mchunkptr mn; mchunkptr msp = align_as_chunk(tbase); mstate m = (mstate)(chunk2mem(msp)); memset(m, 0, msize); (void)INITIAL_LOCK(&m->mutex); msp->head = (msize|INUSE_BITS); m->seg.base = m->least_addr = tbase; m->seg.size = m->footprint = m->max_footprint = tsize; m->magic = mparams.magic; m->release_checks = MAX_RELEASE_CHECK_RATE; m->mflags = mparams.default_mflags; m->extp = 0; m->exts = 0; disable_contiguous(m); init_bins(m); mn = next_chunk(mem2chunk(m)); init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) - TOP_FOOT_SIZE); check_top_chunk(m, m->top); return m; } mspace create_mspace(size_t capacity, int locked) { mstate m = 0; size_t msize; ensure_initialization(); msize = pad_request(sizeof(struct malloc_state)); if (capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { size_t rs = ((capacity == 0)? mparams.granularity : (capacity + TOP_FOOT_SIZE + msize)); size_t tsize = granularity_align(rs); char* tbase = (char*)(CALL_MMAP(tsize)); if (tbase != CMFAIL) { m = init_user_mstate(tbase, tsize); m->seg.sflags = USE_MMAP_BIT; set_lock(m, locked); } } return (mspace)m; } mspace create_mspace_with_base(void* base, size_t capacity, int locked) { mstate m = 0; size_t msize; ensure_initialization(); msize = pad_request(sizeof(struct malloc_state)); if (capacity > msize + TOP_FOOT_SIZE && capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { m = init_user_mstate((char*)base, capacity); m->seg.sflags = EXTERN_BIT; set_lock(m, locked); } return (mspace)m; } int mspace_track_large_chunks(mspace msp, int enable) { int ret = 0; mstate ms = (mstate)msp; if (!PREACTION(ms)) { if (!use_mmap(ms)) { ret = 1; } if (!enable) { enable_mmap(ms); } else { disable_mmap(ms); } POSTACTION(ms); } return ret; } size_t destroy_mspace(mspace msp) { size_t freed = 0; mstate ms = (mstate)msp; if (ok_magic(ms)) { msegmentptr sp = &ms->seg; (void)DESTROY_LOCK(&ms->mutex); /* destroy before unmapped */ while (sp != 0) { char* base = sp->base; size_t size = sp->size; flag_t flag = sp->sflags; (void)base; /* placate people compiling -Wunused-variable */ sp = sp->next; if ((flag & USE_MMAP_BIT) && !(flag & EXTERN_BIT) && CALL_MUNMAP(base, size) == 0) freed += size; } } else { USAGE_ERROR_ACTION(ms,ms); } return freed; } /* mspace versions of routines are near-clones of the global versions. This is not so nice but better than the alternatives. */ void* mspace_malloc(mspace msp, size_t bytes) { mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); return 0; } if (!PREACTION(ms)) { void* mem; size_t nb; if (bytes <= MAX_SMALL_REQUEST) { bindex_t idx; binmap_t smallbits; nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); idx = small_index(nb); smallbits = ms->smallmap >> idx; if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ mchunkptr b, p; idx += ~smallbits & 1; /* Uses next bin if idx empty */ b = smallbin_at(ms, idx); p = b->fd; assert(chunksize(p) == small_index2size(idx)); unlink_first_small_chunk(ms, b, p, idx); set_inuse_and_pinuse(ms, p, small_index2size(idx)); mem = chunk2mem(p); check_malloced_chunk(ms, mem, nb); goto postaction; } else if (nb > ms->dvsize) { if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ mchunkptr b, p, r; size_t rsize; bindex_t i; binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); binmap_t leastbit = least_bit(leftbits); compute_bit2idx(leastbit, i); b = smallbin_at(ms, i); p = b->fd; assert(chunksize(p) == small_index2size(i)); unlink_first_small_chunk(ms, b, p, i); rsize = small_index2size(i) - nb; /* Fit here cannot be remainderless if 4byte sizes */ if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) set_inuse_and_pinuse(ms, p, small_index2size(i)); else { set_size_and_pinuse_of_inuse_chunk(ms, p, nb); r = chunk_plus_offset(p, nb); set_size_and_pinuse_of_free_chunk(r, rsize); replace_dv(ms, r, rsize); } mem = chunk2mem(p); check_malloced_chunk(ms, mem, nb); goto postaction; } else if (ms->treemap != 0 && (mem = tmalloc_small(ms, nb)) != 0) { check_malloced_chunk(ms, mem, nb); goto postaction; } } } else if (bytes >= MAX_REQUEST) nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ else { nb = pad_request(bytes); if (ms->treemap != 0 && (mem = tmalloc_large(ms, nb)) != 0) { check_malloced_chunk(ms, mem, nb); goto postaction; } } if (nb <= ms->dvsize) { size_t rsize = ms->dvsize - nb; mchunkptr p = ms->dv; if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ mchunkptr r = ms->dv = chunk_plus_offset(p, nb); ms->dvsize = rsize; set_size_and_pinuse_of_free_chunk(r, rsize); set_size_and_pinuse_of_inuse_chunk(ms, p, nb); } else { /* exhaust dv */ size_t dvs = ms->dvsize; ms->dvsize = 0; ms->dv = 0; set_inuse_and_pinuse(ms, p, dvs); } mem = chunk2mem(p); check_malloced_chunk(ms, mem, nb); goto postaction; } else if (nb < ms->topsize) { /* Split top */ size_t rsize = ms->topsize -= nb; mchunkptr p = ms->top; mchunkptr r = ms->top = chunk_plus_offset(p, nb); r->head = rsize | PINUSE_BIT; set_size_and_pinuse_of_inuse_chunk(ms, p, nb); mem = chunk2mem(p); check_top_chunk(ms, ms->top); check_malloced_chunk(ms, mem, nb); goto postaction; } mem = sys_alloc(ms, nb); postaction: POSTACTION(ms); return mem; } return 0; } void mspace_free(mspace msp, void* mem) { if (mem != 0) { mchunkptr p = mem2chunk(mem); #if FOOTERS mstate fm = get_mstate_for(p); (void)msp; /* placate people compiling -Wunused */ #else /* FOOTERS */ mstate fm = (mstate)msp; #endif /* FOOTERS */ if (!ok_magic(fm)) { USAGE_ERROR_ACTION(fm, p); return; } if (!PREACTION(fm)) { check_inuse_chunk(fm, p); if (RTCHECK(ok_address(fm, p) && ok_inuse(p))) { size_t psize = chunksize(p); mchunkptr next = chunk_plus_offset(p, psize); if (!pinuse(p)) { size_t prevsize = p->prev_foot; if (is_mmapped(p)) { psize += prevsize + MMAP_FOOT_PAD; if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) fm->footprint -= psize; goto postaction; } else { mchunkptr prev = chunk_minus_offset(p, prevsize); psize += prevsize; p = prev; if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ if (p != fm->dv) { unlink_chunk(fm, p, prevsize); } else if ((next->head & INUSE_BITS) == INUSE_BITS) { fm->dvsize = psize; set_free_with_pinuse(p, psize, next); goto postaction; } } else goto erroraction; } } if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { if (!cinuse(next)) { /* consolidate forward */ if (next == fm->top) { size_t tsize = fm->topsize += psize; fm->top = p; p->head = tsize | PINUSE_BIT; if (p == fm->dv) { fm->dv = 0; fm->dvsize = 0; } if (should_trim(fm, tsize)) sys_trim(fm, 0); goto postaction; } else if (next == fm->dv) { size_t dsize = fm->dvsize += psize; fm->dv = p; set_size_and_pinuse_of_free_chunk(p, dsize); goto postaction; } else { size_t nsize = chunksize(next); psize += nsize; unlink_chunk(fm, next, nsize); set_size_and_pinuse_of_free_chunk(p, psize); if (p == fm->dv) { fm->dvsize = psize; goto postaction; } } } else set_free_with_pinuse(p, psize, next); if (is_small(psize)) { insert_small_chunk(fm, p, psize); check_free_chunk(fm, p); } else { tchunkptr tp = (tchunkptr)p; insert_large_chunk(fm, tp, psize); check_free_chunk(fm, p); if (--fm->release_checks == 0) release_unused_segments(fm); } goto postaction; } } erroraction: USAGE_ERROR_ACTION(fm, p); postaction: POSTACTION(fm); } } } void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size) { void* mem; size_t req = 0; mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); return 0; } if (n_elements != 0) { req = n_elements * elem_size; if (((n_elements | elem_size) & ~(size_t)0xffff) && (req / n_elements != elem_size)) req = MAX_SIZE_T; /* force downstream failure on overflow */ } mem = internal_malloc(ms, req); if (mem != 0 && calloc_must_clear(mem2chunk(mem))) memset(mem, 0, req); return mem; } void* mspace_realloc(mspace msp, void* oldmem, size_t bytes) { void* mem = 0; if (oldmem == 0) { mem = mspace_malloc(msp, bytes); } else if (bytes >= MAX_REQUEST) { MALLOC_FAILURE_ACTION; } #ifdef REALLOC_ZERO_BYTES_FREES else if (bytes == 0) { mspace_free(msp, oldmem); } #endif /* REALLOC_ZERO_BYTES_FREES */ else { size_t nb = request2size(bytes); mchunkptr oldp = mem2chunk(oldmem); #if ! FOOTERS mstate m = (mstate)msp; #else /* FOOTERS */ mstate m = get_mstate_for(oldp); if (!ok_magic(m)) { USAGE_ERROR_ACTION(m, oldmem); return 0; } #endif /* FOOTERS */ if (!PREACTION(m)) { mchunkptr newp = try_realloc_chunk(m, oldp, nb, 1); POSTACTION(m); if (newp != 0) { check_inuse_chunk(m, newp); mem = chunk2mem(newp); } else { mem = mspace_malloc(m, bytes); if (mem != 0) { size_t oc = chunksize(oldp) - overhead_for(oldp); memcpy(mem, oldmem, (oc < bytes)? oc : bytes); mspace_free(m, oldmem); } } } } return mem; } void* mspace_realloc_in_place(mspace msp, void* oldmem, size_t bytes) { void* mem = 0; if (oldmem != 0) { if (bytes >= MAX_REQUEST) { MALLOC_FAILURE_ACTION; } else { size_t nb = request2size(bytes); mchunkptr oldp = mem2chunk(oldmem); #if ! FOOTERS mstate m = (mstate)msp; #else /* FOOTERS */ mstate m = get_mstate_for(oldp); (void)msp; /* placate people compiling -Wunused */ if (!ok_magic(m)) { USAGE_ERROR_ACTION(m, oldmem); return 0; } #endif /* FOOTERS */ if (!PREACTION(m)) { mchunkptr newp = try_realloc_chunk(m, oldp, nb, 0); POSTACTION(m); if (newp == oldp) { check_inuse_chunk(m, newp); mem = oldmem; } } } } return mem; } void* mspace_memalign(mspace msp, size_t alignment, size_t bytes) { mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); return 0; } if (alignment <= MALLOC_ALIGNMENT) return mspace_malloc(msp, bytes); return internal_memalign(ms, alignment, bytes); } void** mspace_independent_calloc(mspace msp, size_t n_elements, size_t elem_size, void* chunks[]) { size_t sz = elem_size; /* serves as 1-element array */ mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); return 0; } return ialloc(ms, n_elements, &sz, 3, chunks); } void** mspace_independent_comalloc(mspace msp, size_t n_elements, size_t sizes[], void* chunks[]) { mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); return 0; } return ialloc(ms, n_elements, sizes, 0, chunks); } size_t mspace_bulk_free(mspace msp, void* array[], size_t nelem) { return internal_bulk_free((mstate)msp, array, nelem); } #if MALLOC_INSPECT_ALL void mspace_inspect_all(mspace msp, void(*handler)(void *start, void *end, size_t used_bytes, void* callback_arg), void* arg) { mstate ms = (mstate)msp; if (ok_magic(ms)) { if (!PREACTION(ms)) { internal_inspect_all(ms, handler, arg); POSTACTION(ms); } } else { USAGE_ERROR_ACTION(ms,ms); } } #endif /* MALLOC_INSPECT_ALL */ int mspace_trim(mspace msp, size_t pad) { int result = 0; mstate ms = (mstate)msp; if (ok_magic(ms)) { if (!PREACTION(ms)) { result = sys_trim(ms, pad); POSTACTION(ms); } } else { USAGE_ERROR_ACTION(ms,ms); } return result; } #if !NO_MALLOC_STATS void mspace_malloc_stats(mspace msp) { mstate ms = (mstate)msp; if (ok_magic(ms)) { internal_malloc_stats(ms); } else { USAGE_ERROR_ACTION(ms,ms); } } #endif /* NO_MALLOC_STATS */ size_t mspace_footprint(mspace msp) { size_t result = 0; mstate ms = (mstate)msp; if (ok_magic(ms)) { result = ms->footprint; } else { USAGE_ERROR_ACTION(ms,ms); } return result; } size_t mspace_max_footprint(mspace msp) { size_t result = 0; mstate ms = (mstate)msp; if (ok_magic(ms)) { result = ms->max_footprint; } else { USAGE_ERROR_ACTION(ms,ms); } return result; } size_t mspace_footprint_limit(mspace msp) { size_t result = 0; mstate ms = (mstate)msp; if (ok_magic(ms)) { size_t maf = ms->footprint_limit; result = (maf == 0) ? MAX_SIZE_T : maf; } else { USAGE_ERROR_ACTION(ms,ms); } return result; } size_t mspace_set_footprint_limit(mspace msp, size_t bytes) { size_t result = 0; mstate ms = (mstate)msp; if (ok_magic(ms)) { if (bytes == 0) result = granularity_align(1); /* Use minimal size */ if (bytes == MAX_SIZE_T) result = 0; /* disable */ else result = granularity_align(bytes); ms->footprint_limit = result; } else { USAGE_ERROR_ACTION(ms,ms); } return result; } #if !NO_MALLINFO struct mallinfo mspace_mallinfo(mspace msp) { mstate ms = (mstate)msp; if (!ok_magic(ms)) { USAGE_ERROR_ACTION(ms,ms); } return internal_mallinfo(ms); } #endif /* NO_MALLINFO */ size_t mspace_usable_size(const void* mem) { if (mem != 0) { mchunkptr p = mem2chunk(mem); if (is_inuse(p)) return chunksize(p) - overhead_for(p); } return 0; } int mspace_mallopt(int param_number, int value) { return change_mparam(param_number, value); } #endif /* MSPACES */ /* -------------------- Alternative MORECORE functions ------------------- */ /* Guidelines for creating a custom version of MORECORE: * For best performance, MORECORE should allocate in multiples of pagesize. * MORECORE may allocate more memory than requested. (Or even less, but this will usually result in a malloc failure.) * MORECORE must not allocate memory when given argument zero, but instead return one past the end address of memory from previous nonzero call. * For best performance, consecutive calls to MORECORE with positive arguments should return increasing addresses, indicating that space has been contiguously extended. * Even though consecutive calls to MORECORE need not return contiguous addresses, it must be OK for malloc'ed chunks to span multiple regions in those cases where they do happen to be contiguous. * MORECORE need not handle negative arguments -- it may instead just return MFAIL when given negative arguments. Negative arguments are always multiples of pagesize. MORECORE must not misinterpret negative args as large positive unsigned args. You can suppress all such calls from even occurring by defining MORECORE_CANNOT_TRIM, As an example alternative MORECORE, here is a custom allocator kindly contributed for pre-OSX macOS. It uses virtually but not necessarily physically contiguous non-paged memory (locked in, present and won't get swapped out). You can use it by uncommenting this section, adding some #includes, and setting up the appropriate defines above: #define MORECORE osMoreCore There is also a shutdown routine that should somehow be called for cleanup upon program exit. #define MAX_POOL_ENTRIES 100 #define MINIMUM_MORECORE_SIZE (64 * 1024U) static int next_os_pool; void *our_os_pools[MAX_POOL_ENTRIES]; void *osMoreCore(int size) { void *ptr = 0; static void *sbrk_top = 0; if (size > 0) { if (size < MINIMUM_MORECORE_SIZE) size = MINIMUM_MORECORE_SIZE; if (CurrentExecutionLevel() == kTaskLevel) ptr = PoolAllocateResident(size + RM_PAGE_SIZE, 0); if (ptr == 0) { return (void *) MFAIL; } // save ptrs so they can be freed during cleanup our_os_pools[next_os_pool] = ptr; next_os_pool++; ptr = (void *) ((((size_t) ptr) + RM_PAGE_MASK) & ~RM_PAGE_MASK); sbrk_top = (char *) ptr + size; return ptr; } else if (size < 0) { // we don't currently support shrink behavior return (void *) MFAIL; } else { return sbrk_top; } } // cleanup any allocated memory pools // called as last thing before shutting down driver void osCleanupMem(void) { void **ptr; for (ptr = our_os_pools; ptr < &our_os_pools[MAX_POOL_ENTRIES]; ptr++) if (*ptr) { PoolDeallocate(*ptr); *ptr = 0; } } */ /* ----------------------------------------------------------------------- History: v2.8.6 Wed Aug 29 06:57:58 2012 Doug Lea * fix bad comparison in dlposix_memalign * don't reuse adjusted asize in sys_alloc * add LOCK_AT_FORK -- thanks to Kirill Artamonov for the suggestion * reduce compiler warnings -- thanks to all who reported/suggested these v2.8.5 Sun May 22 10:26:02 2011 Doug Lea (dl at gee) * Always perform unlink checks unless INSECURE * Add posix_memalign. * Improve realloc to expand in more cases; expose realloc_in_place. Thanks to Peter Buhr for the suggestion. * Add footprint_limit, inspect_all, bulk_free. Thanks to Barry Hayes and others for the suggestions. * Internal refactorings to avoid calls while holding locks * Use non-reentrant locks by default. Thanks to Roland McGrath for the suggestion. * Small fixes to mspace_destroy, reset_on_error. * Various configuration extensions/changes. Thanks to all who contributed these. V2.8.4a Thu Apr 28 14:39:43 2011 (dl at gee.cs.oswego.edu) * Update Creative Commons URL V2.8.4 Wed May 27 09:56:23 2009 Doug Lea (dl at gee) * Use zeros instead of prev foot for is_mmapped * Add mspace_track_large_chunks; thanks to Jean Brouwers * Fix set_inuse in internal_realloc; thanks to Jean Brouwers * Fix insufficient sys_alloc padding when using 16byte alignment * Fix bad error check in mspace_footprint * Adaptations for ptmalloc; thanks to Wolfram Gloger. * Reentrant spin locks; thanks to Earl Chew and others * Win32 improvements; thanks to Niall Douglas and Earl Chew * Add NO_SEGMENT_TRAVERSAL and MAX_RELEASE_CHECK_RATE options * Extension hook in malloc_state * Various small adjustments to reduce warnings on some compilers * Various configuration extensions/changes for more platforms. Thanks to all who contributed these. V2.8.3 Thu Sep 22 11:16:32 2005 Doug Lea (dl at gee) * Add max_footprint functions * Ensure all appropriate literals are size_t * Fix conditional compilation problem for some #define settings * Avoid concatenating segments with the one provided in create_mspace_with_base * Rename some variables to avoid compiler shadowing warnings * Use explicit lock initialization. * Better handling of sbrk interference. * Simplify and fix segment insertion, trimming and mspace_destroy * Reinstate REALLOC_ZERO_BYTES_FREES option from 2.7.x * Thanks especially to Dennis Flanagan for help on these. V2.8.2 Sun Jun 12 16:01:10 2005 Doug Lea (dl at gee) * Fix memalign brace error. V2.8.1 Wed Jun 8 16:11:46 2005 Doug Lea (dl at gee) * Fix improper #endif nesting in C++ * Add explicit casts needed for C++ V2.8.0 Mon May 30 14:09:02 2005 Doug Lea (dl at gee) * Use trees for large bins * Support mspaces * Use segments to unify sbrk-based and mmap-based system allocation, removing need for emulation on most platforms without sbrk. * Default safety checks * Optional footer checks. Thanks to William Robertson for the idea. * Internal code refactoring * Incorporate suggestions and platform-specific changes. Thanks to Dennis Flanagan, Colin Plumb, Niall Douglas, Aaron Bachmann, Emery Berger, and others. * Speed up non-fastbin processing enough to remove fastbins. * Remove useless cfree() to avoid conflicts with other apps. * Remove internal memcpy, memset. Compilers handle builtins better. * Remove some options that no one ever used and rename others. V2.7.2 Sat Aug 17 09:07:30 2002 Doug Lea (dl at gee) * Fix malloc_state bitmap array misdeclaration V2.7.1 Thu Jul 25 10:58:03 2002 Doug Lea (dl at gee) * Allow tuning of FIRST_SORTED_BIN_SIZE * Use PTR_UINT as type for all ptr->int casts. Thanks to John Belmonte. * Better detection and support for non-contiguousness of MORECORE. Thanks to Andreas Mueller, Conal Walsh, and Wolfram Gloger * Bypass most of malloc if no frees. Thanks To Emery Berger. * Fix freeing of old top non-contiguous chunk im sysmalloc. * Raised default trim and map thresholds to 256K. * Fix mmap-related #defines. Thanks to Lubos Lunak. * Fix copy macros; added LACKS_FCNTL_H. Thanks to Neal Walfield. * Branch-free bin calculation * Default trim and mmap thresholds now 256K. V2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee) * Introduce independent_comalloc and independent_calloc. Thanks to Michael Pachos for motivation and help. * Make optional .h file available * Allow > 2GB requests on 32bit systems. * new WIN32 sbrk, mmap, munmap, lock code from . Thanks also to Andreas Mueller , and Anonymous. * Allow override of MALLOC_ALIGNMENT (Thanks to Ruud Waij for helping test this.) * memalign: check alignment arg * realloc: don't try to shift chunks backwards, since this leads to more fragmentation in some programs and doesn't seem to help in any others. * Collect all cases in malloc requiring system memory into sysmalloc * Use mmap as backup to sbrk * Place all internal state in malloc_state * Introduce fastbins (although similar to 2.5.1) * Many minor tunings and cosmetic improvements * Introduce USE_PUBLIC_MALLOC_WRAPPERS, USE_MALLOC_LOCK * Introduce MALLOC_FAILURE_ACTION, MORECORE_CONTIGUOUS Thanks to Tony E. Bennett and others. * Include errno.h to support default failure action. V2.6.6 Sun Dec 5 07:42:19 1999 Doug Lea (dl at gee) * return null for negative arguments * Added Several WIN32 cleanups from Martin C. Fong * Add 'LACKS_SYS_PARAM_H' for those systems without 'sys/param.h' (e.g. WIN32 platforms) * Cleanup header file inclusion for WIN32 platforms * Cleanup code to avoid Microsoft Visual C++ compiler complaints * Add 'USE_DL_PREFIX' to quickly allow co-existence with existing memory allocation routines * Set 'malloc_getpagesize' for WIN32 platforms (needs more work) * Use 'assert' rather than 'ASSERT' in WIN32 code to conform to usage of 'assert' in non-WIN32 code * Improve WIN32 'sbrk()' emulation's 'findRegion()' routine to avoid infinite loop * Always call 'fREe()' rather than 'free()' V2.6.5 Wed Jun 17 15:57:31 1998 Doug Lea (dl at gee) * Fixed ordering problem with boundary-stamping V2.6.3 Sun May 19 08:17:58 1996 Doug Lea (dl at gee) * Added pvalloc, as recommended by H.J. Liu * Added 64bit pointer support mainly from Wolfram Gloger * Added anonymously donated WIN32 sbrk emulation * Malloc, calloc, getpagesize: add optimizations from Raymond Nijssen * malloc_extend_top: fix mask error that caused wastage after foreign sbrks * Add linux mremap support code from HJ Liu V2.6.2 Tue Dec 5 06:52:55 1995 Doug Lea (dl at gee) * Integrated most documentation with the code. * Add support for mmap, with help from Wolfram Gloger (Gloger@lrz.uni-muenchen.de). * Use last_remainder in more cases. * Pack bins using idea from colin@nyx10.cs.du.edu * Use ordered bins instead of best-fit threshhold * Eliminate block-local decls to simplify tracing and debugging. * Support another case of realloc via move into top * Fix error occuring when initial sbrk_base not word-aligned. * Rely on page size for units instead of SBRK_UNIT to avoid surprises about sbrk alignment conventions. * Add mallinfo, mallopt. Thanks to Raymond Nijssen (raymond@es.ele.tue.nl) for the suggestion. * Add `pad' argument to malloc_trim and top_pad mallopt parameter. * More precautions for cases where other routines call sbrk, courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de). * Added macros etc., allowing use in linux libc from H.J. Lu (hjl@gnu.ai.mit.edu) * Inverted this history list V2.6.1 Sat Dec 2 14:10:57 1995 Doug Lea (dl at gee) * Re-tuned and fixed to behave more nicely with V2.6.0 changes. * Removed all preallocation code since under current scheme the work required to undo bad preallocations exceeds the work saved in good cases for most test programs. * No longer use return list or unconsolidated bins since no scheme using them consistently outperforms those that don't given above changes. * Use best fit for very large chunks to prevent some worst-cases. * Added some support for debugging V2.6.0 Sat Nov 4 07:05:23 1995 Doug Lea (dl at gee) * Removed footers when chunks are in use. Thanks to Paul Wilson (wilson@cs.texas.edu) for the suggestion. V2.5.4 Wed Nov 1 07:54:51 1995 Doug Lea (dl at gee) * Added malloc_trim, with help from Wolfram Gloger (wmglo@Dent.MED.Uni-Muenchen.DE). V2.5.3 Tue Apr 26 10:16:01 1994 Doug Lea (dl at g) V2.5.2 Tue Apr 5 16:20:40 1994 Doug Lea (dl at g) * realloc: try to expand in both directions * malloc: swap order of clean-bin strategy; * realloc: only conditionally expand backwards * Try not to scavenge used bins * Use bin counts as a guide to preallocation * Occasionally bin return list chunks in first scan * Add a few optimizations from colin@nyx10.cs.du.edu V2.5.1 Sat Aug 14 15:40:43 1993 Doug Lea (dl at g) * faster bin computation & slightly different binning * merged all consolidations to one part of malloc proper (eliminating old malloc_find_space & malloc_clean_bin) * Scan 2 returns chunks (not just 1) * Propagate failure in realloc if malloc returns 0 * Add stuff to allow compilation on non-ANSI compilers from kpv@research.att.com V2.5 Sat Aug 7 07:41:59 1993 Doug Lea (dl at g.oswego.edu) * removed potential for odd address access in prev_chunk * removed dependency on getpagesize.h * misc cosmetics and a bit more internal documentation * anticosmetics: mangled names in macros to evade debugger strangeness * tested on sparc, hp-700, dec-mips, rs6000 with gcc & native cc (hp, dec only) allowing Detlefs & Zorn comparison study (in SIGPLAN Notices.) Trial version Fri Aug 28 13:14:29 1992 Doug Lea (dl at g.oswego.edu) * Based loosely on libg++-1.2X malloc. (It retains some of the overall structure of old version, but most details differ.) */ Convert-Binary-C-0.85/tests/include/pdclib/functions/_dlmalloc/malloc-2.8.6.patch0000644000175000001440000000733614676735310026151 0ustar mhxusers--- malloc-2.8.6.c 2016-05-23 13:25:14.000000000 +0100 +++ malloc.c 2019-04-28 14:42:16.225706331 +0100 @@ -1,3 +1,62 @@ +/* malloc( size_t ) + calloc( size_t, size_t ) + realloc( void *, size_t ) + aligned_alloc( size_t, size_t ) + free( void * ) + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. + + It is a slightly modified copy of Doug Lea's malloc(), retrieved from + ftp://gee.cs.oswego.edu/pub/misc/malloc.c + at version 2.8.6, which is released under CC0 license just as PDCLib. +*/ + +/* Declared implicitly by dlmalloc. This declaration avoids the warning. */ +#include +void * sbrk( intptr_t ); + +#ifndef REGTEST + +#include "_PDCLIB_config.h" + +/* Have all functions herein use the dl* prefix */ +#define USE_DL_PREFIX 1 + +/* Thread safety */ +#define USE_LOCKS 1 + +/* Hide all functions herein as internal to the library */ +#define DLMALLOC_EXPORT _PDCLIB_LOCAL + +/* Unhide the standard functions. (Their declarations with the + DLMALLOC_EXPORT modifier below has been commented out; they + are declared _PDCLIB_PUBLIC in , marking them + exported from the library.) +*/ +#define dlmalloc malloc +#define dlcalloc calloc +#define dlrealloc realloc +#define dlfree free +#if __STDC_VERSION__ >= 201112L +#define dlmemalign aligned_alloc +#endif + +#endif + +#ifdef TEST + +#include "_PDCLIB_test.h" + +int main( void ) +{ + TESTCASE( NO_TESTDRIVER ); + return TEST_RESULTS; +} + +#endif + +/* ------------------------------------------------------------------- */ /* This is a version (aka dlmalloc) of malloc/free/realloc written by Doug Lea and released to the public domain, as explained at @@ -585,8 +644,15 @@ #define MAX_SIZE_T (~(size_t)0) #ifndef USE_LOCKS /* ensure true if spin or recursive locks set */ -#define USE_LOCKS ((defined(USE_SPIN_LOCKS) && USE_SPIN_LOCKS != 0) || \ - (defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0)) +/* defined() in the expansion of a macro is non-portable behavior + and runs afoul of -Wextra. +*/ +#if ((defined(USE_SPIN_LOCKS) && USE_SPIN_LOCKS != 0) || \ + (defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0)) +#define USE_LOCKS 1 +#else +#define USE_LOCKS 0 +#endif #endif /* USE_LOCKS */ #if USE_LOCKS /* Spin locks for gcc >= 4.1, older gcc on x86, MSC >= 1310 */ @@ -851,7 +917,7 @@ maximum supported value of n differs across systems, but is in all cases less than the maximum representable value of a size_t. */ -DLMALLOC_EXPORT void* dlmalloc(size_t); +/*DLMALLOC_EXPORT void* dlmalloc(size_t);*/ /* free(void* p) @@ -860,14 +926,14 @@ It has no effect if p is null. If p was not malloced or already freed, free(p) will by default cause the current program to abort. */ -DLMALLOC_EXPORT void dlfree(void*); +/*DLMALLOC_EXPORT void dlfree(void*);*/ /* calloc(size_t n_elements, size_t element_size); Returns a pointer to n_elements * element_size bytes, with all locations set to zero. */ -DLMALLOC_EXPORT void* dlcalloc(size_t, size_t); +/*DLMALLOC_EXPORT void* dlcalloc(size_t, size_t);*/ /* realloc(void* p, size_t n) @@ -891,7 +957,7 @@ The old unix realloc convention of allowing the last-free'd chunk to be used as an argument to realloc is not supported. */ -DLMALLOC_EXPORT void* dlrealloc(void*, size_t); +/*DLMALLOC_EXPORT void* dlrealloc(void*, size_t);*/ /* realloc_in_place(void* p, size_t n) @@ -996,7 +1062,7 @@ guarantee that this number of bytes can actually be obtained from the system. */ -DLMALLOC_EXPORT size_t dlmalloc_footprint_limit(); +DLMALLOC_EXPORT size_t dlmalloc_footprint_limit(void); /* malloc_set_footprint_limit(); Convert-Binary-C-0.85/tests/include/pdclib/platform/0000755000175000001440000000000014677003524021061 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/platform/example/0000755000175000001440000000000014677003524022514 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/platform/example/include/0000755000175000001440000000000014677003524024137 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/platform/example/include/threads.h0000644000175000001440000002010714676735310025746 0ustar mhxusers/* Threads This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This header does not include any platform-specific information, but as a whole is optional (depending on whether threads are supported or not, ref. __STDC_NO_THREADS__), which is why it is located in the example platform instead of the general include directory. */ #ifndef _PDCLIB_THREADS_H #define _PDCLIB_THREADS_H _PDCLIB_THREADS_H #ifdef __cplusplus extern "C" { #endif #include #if __STDC_NO_THREADS__ == 1 #error __STDC_NO_THREADS__ defined but included. Something is wrong about your setup. #endif #if __STDC_VERSION__ >= 201112L /* The rest of can work with a pre-C11 compiler just fine. */ #define thread_local _Thread_local #endif /* Initializing value for an object of type once_flag */ #define ONCE_FLAG_INIT _PDCLIB_ONCE_FLAG_INIT /* Maximum number of times destructors are called on thread termination */ #define TSS_DTOR_ITERATIONS _PDCLIB_TSS_DTOR_ITERATIONS /* Condition variable */ typedef _PDCLIB_cnd_t cnd_t; /* Thread */ typedef _PDCLIB_thrd_t thrd_t; /* Thread-specific storage */ typedef _PDCLIB_tss_t tss_t; /* Mutex */ typedef _PDCLIB_mtx_t mtx_t; /* TSS destructor */ typedef void ( *tss_dtor_t )( void * ); /* Thread start function */ typedef int ( *thrd_start_t )( void * ); /* Flag for use with call_once() */ typedef _PDCLIB_once_flag once_flag; /* TODO: Documentation. */ enum { mtx_plain, mtx_recursive, mtx_timed }; /* TODO: Documentation. */ enum { thrd_timedout, thrd_success, thrd_busy, thrd_error, thrd_nomem }; /* Initialization functions */ /* Ensure that func is called only the first time call_once() is called for a given flag. */ _PDCLIB_PUBLIC void call_once( once_flag * flag, void ( *func )( void ) ); /* Condition variable functions */ /* Unblock threads waiting on given condition. Returns thrd_success if successful, thrd_error if the request could not be honored. */ _PDCLIB_PUBLIC int cnd_broadcast( cnd_t * cond ); /* Destroy condition variable. No threads may be waiting on a condition when it is destroyed. */ _PDCLIB_PUBLIC void cnd_destroy( cnd_t * cond ); /* Initialize condition variable. Returns thrd_success if successful, thrd_nomem if out of memory, and thrd_error if the request could not be honored. Initializes the variable in a way that a thread calling cnd_wait() on it would block. */ _PDCLIB_PUBLIC int cnd_init( cnd_t * cond ); /* Unblock one thread waiting on the condition variable. Returns thrd_success if successful, thrd_error if the request could not be honored. */ _PDCLIB_PUBLIC int cnd_signal( cnd_t * cond ); /* TODO: Documentation. Returns thrd_success if successful, thrd_timedout if the specified time is reached without acquiring the resource, or thrd_error if the request could not be honored. */ _PDCLIB_PUBLIC int cnd_timedwait( cnd_t * _PDCLIB_restrict cond, mtx_t * _PDCLIB_restrict mtx, const struct timespec * _PDCLIB_restrict ts ); /* TODO: Documentation. Returns thrd_success if successful, thrd_error if the request could not be honored. */ int cnd_wait( cnd_t * cond, mtx_t * mtx ); /* Mutex functions */ /* Destroy mutex variable. No threads may be waiting on a mutex when it is destroyed. */ _PDCLIB_PUBLIC void mtx_destroy( mtx_t * mtx ); /* Initialize mutex variable. Returns thrd_success if successful, thrd_error if the request could not be honored. Type must have one of the following values: mtx_plain -- non-recursive mutex mtx_timed -- non-recursive mutex supporting timeout mtx_plain | mtx_recursive -- recursive mutex mtx_timed | mtx_recursive -- recursive mutex supporting timeout */ _PDCLIB_PUBLIC int mtx_init( mtx_t * mtx, int type ); /* Try to lock the given mutex (blocking). Returns thrd_success if successful, thrd_error if the request could not be honored. If the given mutex is non-recursive, it must not be already locked by the calling thread. */ _PDCLIB_PUBLIC int mtx_lock( mtx_t * mtx ); /* TODO: Documentation. Returns thrd_success if successful, thrd_timedout if the specified time is reached without acquiring the resource, or thrd_error if the request could not be honored. */ _PDCLIB_PUBLIC int mtx_timedlock( mtx_t * _PDCLIB_restrict mtx, const struct timespec * _PDCLIB_restrict ts ); /* Try to lock the given mutex (non-blocking). Returns thrd_success if successful, thrd_busy if the resource is already locked, or thrd_error if the request could not be honored. */ _PDCLIB_PUBLIC int mtx_trylock( mtx_t * mtx ); /* Unlock the given mutex. Returns thrd_success if successful, thrd_error if the request could not be honored. The given mutex must be locked by the calling thread. */ _PDCLIB_PUBLIC int mtx_unlock( mtx_t * mtx ); /* Thread functions */ /* Create a new thread. Returns thrd_success if successful, thrd_nomem if out of memory, and thrd_error if the request could not be honored. Create a new thread executing func( arg ), and sets thr to identify the created thread. (Identifiers may be reused afer a thread exited and was either detached or joined.) */ _PDCLIB_PUBLIC int thrd_create( thrd_t * thr, thrd_start_t func, void * arg ); /* Identify the calling thread. Returns the identifier of the calling thread. */ _PDCLIB_PUBLIC thrd_t thrd_current( void ); /* Notify the OS to destroy all resources of a given thread once it terminates. Returns thrd_success if successful, thrd_error if the request could not be honored. The given thread must not been previously detached or joined. */ _PDCLIB_PUBLIC int thrd_detach( thrd_t thr ); /* Compare two thread identifiers for equality. Returns nonzero if both parameters identify the same thread, zero otherwise. */ _PDCLIB_PUBLIC int thrd_equal( thrd_t thr0, thrd_t thr1 ); /* Terminate calling thread, set result code to res. When the last thread of a program terminates the program shall terminate normally as if by exit( EXIT_SUCCESS ). FIXME: The result code setting is NOT implemented correctly at this point. The value is indeterminate. */ _PDCLIB_PUBLIC _PDCLIB_Noreturn void thrd_exit( int res ) _PDCLIB_NORETURN; /* Join the given thread with the calling thread. Returns thrd_success if successful, thrd_error if the request could not be honored. Function blocks until the given thread terminates. If res is not NULL, the given thread's result code will be stored at that address. */ _PDCLIB_PUBLIC int thrd_join( thrd_t thr, int * res ); /* Suspend the calling thread for the given duration or until a signal not being ignored is received. Returns zero if the requested time has elapsed, -1 if interrupted by a signal, negative if the request failed. If remaining is not NULL, and the sleeping thread received a signal that is not being ignored, the remaining time (duration minus actually elapsed time) shall be stored at that address. */ _PDCLIB_PUBLIC int thrd_sleep( const struct timespec * duration, struct timespec * remaining ); /* Permit other threads to run. */ _PDCLIB_PUBLIC void thrd_yield( void ); /* Thread-specific storage functions */ /* Initialize thread-specific storage, with optional destructor Returns thrd_success if successful, thrd_error otherwise (in this case key is set to an undefined value). */ _PDCLIB_PUBLIC int tss_create( tss_t * key, tss_dtor_t dtor ); /* Release all resources of a given thread-specific storage. */ _PDCLIB_PUBLIC void tss_delete( tss_t key ); /* Returns the value for the current thread associated with the given key. */ _PDCLIB_PUBLIC void * tss_get( tss_t key ); /* Sets the value associated with the given key for the current thread. Returns thrd_success if successful, thrd_error if the request could not be honored. */ _PDCLIB_PUBLIC int tss_set( tss_t key, void * val ); /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_THREADS_H #include _PDCLIB_EXTEND_THREADS_H #endif #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/include/pdclib/0000755000175000001440000000000014677003524025374 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/platform/example/include/pdclib/_PDCLIB_config.h0000644000175000001440000010733614676735310030204 0ustar mhxusers/* Internal PDCLib configuration <_PDCLIB_config.h> ("Example" platform target, for PDCLib development) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_CONFIG_H #define _PDCLIB_CONFIG_H _PDCLIB_CONFIG_H /* -------------------------------------------------------------------------- */ /* Misc */ /* -------------------------------------------------------------------------- */ /* The character (sequence) your platform uses as newline. */ #define _PDCLIB_endl "\n" /* Helper macros also documented in _PDCLIB_internal.h, but defined here as */ /* they are needed in this file already. */ /* _PDCLIB_cc( x, y ) concatenates two preprocessor tokens without extending. */ /* _PDCLIB_concat( x, y ) concatenates two preprocessor tokens with extending */ #define _PDCLIB_cc( x, y ) x ## y #define _PDCLIB_concat( x, y ) _PDCLIB_cc( x, y ) /* exit() can signal success to the host environment by the value of zero or */ /* the constant EXIT_SUCCESS. Failure is signaled by EXIT_FAILURE. Note that */ /* any other return value is "implementation-defined", i.e. your environment */ /* is not required to handle it gracefully. Set your definitions here. */ #define _PDCLIB_SUCCESS 0 #define _PDCLIB_FAILURE -1 /* qsort() in requires a function that swaps two memory areas. */ /* Below is a naive implementation that can be improved significantly for */ /* specific platforms, e.g. by swapping int instead of char. */ #define _PDCLIB_memswp( i, j, size ) \ char tmp; \ do { \ tmp = *i; \ *i++ = *j; \ *j++ = tmp; \ } while ( --size ); /* Define this to some compiler directive that can be written after the */ /* parameter list of a function declaration to indicate the function does */ /* never return. If your compiler does not support such a directive, define */ /* to nothing. (This is to avoid warnings with the exit functions under GCC */ /* when compiling with C99/C++ settings, where C11 _Noreturn is unavailable.) */ #define _PDCLIB_NORETURN __attribute__(( noreturn )) /* -------------------------------------------------------------------------- */ /* Symbol Visibility */ /* -------------------------------------------------------------------------- */ /* This defines _PDCLIB_PUBLIC to indicate external linkage, and _PDCLIB_LOCAL to indicate local linkage. */ #ifdef _PDCLIB_STATIC_DEFINE #define _PDCLIB_PUBLIC #define _PDCLIB_LOCAL #else #if defined _WIN32 || defined __CYGWIN__ #ifdef _PDCLIB_BUILD #ifdef __GNUC__ #define _PDCLIB_PUBLIC __attribute__ ((dllexport)) #else #define _PDCLIB_PUBLIC __declspec(dllexport) #endif #else #ifdef __GNUC__ #define _PDCLIB_PUBLIC __attribute__ ((dllimport)) #else #define _PDCLIB_PUBLIC __declspec(dllimport) #endif #endif #define _PDCLIB_LOCAL #else #if __GNUC__ >= 4 #define _PDCLIB_PUBLIC __attribute__ ((visibility ("default"))) #define _PDCLIB_LOCAL __attribute__ ((visibility ("hidden"))) #else #define _PDCLIB_PUBLIC #define _PDCLIB_LOCAL #endif #endif #endif /* -------------------------------------------------------------------------- */ /* Integers */ /* -------------------------------------------------------------------------- */ /* The defines below make use of predefines offered by GCC and clang. If you */ /* adapt PDCLib for a different compiler family, you will have to use what */ /* that compiler provides, or enter actual values. */ /* -------------------------------------------------------------------------- */ /* At the point of writing, PDCLib makes no provisions for, nor has it been */ /* tested, on a platform that uses signed magnitude or one's complement to */ /* encode its integers. Most importantly, there are no guarantees that the */ /* negative zero of those encodings is in any form handled gracefully. */ #define _PDCLIB_TWOS_COMPLEMENT 1 /* Calculation of a minimum value from a given maximum for two's complement. */ #define _PDCLIB_MIN_CALC( max ) ( ( - max ) - 1 ) /* Now, introducting the various predefines to the _PDCLIB_* namespace, so */ /* the rest of PDCLib can work with that and adapting to a different compiler */ /* will require changes only in this one file. */ #define _PDCLIB_CHAR_BIT __CHAR_BIT__ #define _PDCLIB_SCHAR_MAX __SCHAR_MAX__ #define _PDCLIB_SCHAR_MIN _PDCLIB_MIN_CALC( __SCHAR_MAX__ ) #define _PDCLIB_UCHAR_MAX ( __SCHAR_MAX__ * 2 + 1 ) /* Whether the 'char' type is unsigned */ #ifdef __CHAR_UNSIGNED__ #define _PDCLIB_CHAR_MAX _PDCLIB_UCHAR_MAX #define _PDCLIB_CHAR_MIN 0 #else #define _PDCLIB_CHAR_MAX _PDCLIB_SCHAR_MAX #define _PDCLIB_CHAR_MIN _PDCLIB_SCHAR_MIN #endif #define _PDCLIB_SHRT_MAX __SHRT_MAX__ #define _PDCLIB_SHRT_MIN _PDCLIB_MIN_CALC( __SHRT_MAX__ ) #define _PDCLIB_USHRT_MAX ( __SHRT_MAX__ * 2u + 1 ) #define _PDCLIB_INT_MAX __INT_MAX__ #define _PDCLIB_INT_MIN _PDCLIB_MIN_CALC( __INT_MAX__ ) #define _PDCLIB_UINT_MAX ( __INT_MAX__ * 2u + 1 ) #define _PDCLIB_LONG_MAX __LONG_MAX__ #define _PDCLIB_LONG_MIN _PDCLIB_MIN_CALC( __LONG_MAX__ ) #define _PDCLIB_ULONG_MAX ( __LONG_MAX__ * 2ul + 1 ) #define _PDCLIB_LLONG_MAX __LONG_LONG_MAX__ #define _PDCLIB_LLONG_MIN _PDCLIB_MIN_CALC( __LONG_LONG_MAX__ ) #define _PDCLIB_ULLONG_MAX ( __LONG_LONG_MAX__ * 2ull + 1 ) /* -------------------------------------------------------------------------- */ /* defines a set of integer types that are of a minimum width, and */ /* "usually fastest" on the system. (If, for example, accessing a single char */ /* requires the CPU to access a complete int and then mask out the char, the */ /* "usually fastest" type of at least 8 bits would be int, not char.) */ /* If you do not have information on the relative performance of the types, */ /* the standard allows you to define any type that meets minimum width and */ /* signedness requirements. */ /* The first define is the appropriate basic type (e.g. "long int"), second */ /* its max value, the third its min value, and the fourth the width in bits */ /* (not bytes!). */ /* The minimum width types have a fifth define, a macro taking a value and */ /* expanding to an integer constant of that value, and the corresponding */ /* minimum width type. */ /* There *are* predefines provided for the printf()/scanf() length specifiers */ /* but tunneling them through here would have added many lines of repetitive */ /* and mostly redundant defines. They are determined in <_PDCLIB_internal.h>. */ /* -------------------------------------------------------------------------- */ #define _PDCLIB_int_fast8_t __INT_FAST8_TYPE__ #define _PDCLIB_INT_FAST8_MAX __INT_FAST8_MAX__ #define _PDCLIB_INT_FAST8_MIN _PDCLIB_MIN_CALC( __INT_FAST8_MAX__ ) #define _PDCLIB_uint_fast8_t __UINT_FAST8_TYPE__ #define _PDCLIB_UINT_FAST8_MAX __UINT_FAST8_MAX__ #define _PDCLIB_int_least8_t __INT_LEAST8_TYPE__ #define _PDCLIB_INT_LEAST8_MAX __INT_LEAST8_MAX__ #define _PDCLIB_INT_LEAST8_MIN _PDCLIB_MIN_CALC( __INT_LEAST8_MAX__ ) #define _PDCLIB_uint_least8_t __UINT_LEAST8_TYPE__ #define _PDCLIB_UINT_LEAST8_MAX __UINT_LEAST8_MAX__ #define _PDCLIB_int_fast16_t __INT_FAST16_TYPE__ #define _PDCLIB_INT_FAST16_MAX __INT_FAST16_MAX__ #define _PDCLIB_INT_FAST16_MIN _PDCLIB_MIN_CALC( __INT_FAST16_MAX__ ) #define _PDCLIB_uint_fast16_t __UINT_FAST16_TYPE__ #define _PDCLIB_UINT_FAST16_MAX __UINT_FAST16_MAX__ #define _PDCLIB_int_least16_t __INT_LEAST16_TYPE__ #define _PDCLIB_INT_LEAST16_MAX __INT_LEAST16_MAX__ #define _PDCLIB_INT_LEAST16_MIN _PDCLIB_MIN_CALC( __INT_LEAST16_MAX__ ) #define _PDCLIB_uint_least16_t __UINT_LEAST16_TYPE__ #define _PDCLIB_UINT_LEAST16_MAX __UINT_LEAST16_MAX__ #define _PDCLIB_int_fast32_t __INT_FAST32_TYPE__ #define _PDCLIB_INT_FAST32_MAX __INT_FAST32_MAX__ #define _PDCLIB_INT_FAST32_MIN _PDCLIB_MIN_CALC( __INT_FAST32_MAX__ ) #define _PDCLIB_uint_fast32_t __UINT_FAST32_TYPE__ #define _PDCLIB_UINT_FAST32_MAX __UINT_FAST32_MAX__ #define _PDCLIB_int_least32_t __INT_LEAST32_TYPE__ #define _PDCLIB_INT_LEAST32_MAX __INT_LEAST32_MAX__ #define _PDCLIB_INT_LEAST32_MIN _PDCLIB_MIN_CALC( __INT_LEAST32_MAX__ ) #define _PDCLIB_uint_least32_t __UINT_LEAST32_TYPE__ #define _PDCLIB_UINT_LEAST32_MAX __UINT_LEAST32_MAX__ #define _PDCLIB_int_fast64_t __INT_FAST64_TYPE__ #define _PDCLIB_INT_FAST64_MAX __INT_FAST64_MAX__ #define _PDCLIB_INT_FAST64_MIN _PDCLIB_MIN_CALC( __INT_FAST64_MAX__ ) #define _PDCLIB_uint_fast64_t __UINT_FAST64_TYPE__ #define _PDCLIB_UINT_FAST64_MAX __UINT_FAST64_MAX__ #define _PDCLIB_int_least64_t __INT_LEAST64_TYPE__ #define _PDCLIB_INT_LEAST64_MAX __INT_LEAST64_MAX__ #define _PDCLIB_INT_LEAST64_MIN _PDCLIB_MIN_CALC( __INT_LEAST64_MAX__ ) #define _PDCLIB_uint_least64_t __UINT_LEAST64_TYPE__ #define _PDCLIB_UINT_LEAST64_MAX __UINT_LEAST64_MAX__ #if defined( __INT8_C ) #define _PDCLIB_INT_LEAST8_C __INT8_C #define _PDCLIB_UINT_LEAST8_C __UINT8_C #define _PDCLIB_INT_LEAST16_C __INT16_C #define _PDCLIB_UINT_LEAST16_C __UINT16_C #define _PDCLIB_INT_LEAST32_C __INT32_C #define _PDCLIB_UINT_LEAST32_C __UINT32_C #define _PDCLIB_INT_LEAST64_C __INT64_C #define _PDCLIB_UINT_LEAST64_C __UINT64_C #elif defined( __INT8_C_SUFFIX__ ) #define _PDCLIB_INT_LEAST8_C(c) _PDCLIB_concat( c, __INT8_C_SUFFIX__ ) #define _PDCLIB_UINT_LEAST8_C(c) _PDCLIB_concat( c, __UINT8_C_SUFFIX__ ) #define _PDCLIB_INT_LEAST16_C(c) _PDCLIB_concat( c, __INT16_C_SUFFIX__ ) #define _PDCLIB_UINT_LEAST16_C(c) _PDCLIB_concat( c, __UINT16_C_SUFFIX__ ) #define _PDCLIB_INT_LEAST32_C(c) _PDCLIB_concat( c, __INT32_C_SUFFIX__ ) #define _PDCLIB_UINT_LEAST32_C(c) _PDCLIB_concat( c, __UINT32_C_SUFFIX__ ) #define _PDCLIB_INT_LEAST64_C(c) _PDCLIB_concat( c, __INT64_C_SUFFIX__ ) #define _PDCLIB_UINT_LEAST64_C(c) _PDCLIB_concat( c, __UINT64_C_SUFFIX__ ) #else #error Please provide macros for defining least-width integer constants. #endif /* defines the div() function family that allows taking quotient */ /* and remainder of an integer division in one operation. Many platforms */ /* support this in hardware / opcode, and the standard permits ordering of */ /* the return structure in any way to fit the hardware. That is why those */ /* structs can be configured here. */ struct _PDCLIB_div_t { int quot; int rem; }; struct _PDCLIB_ldiv_t { long int quot; long int rem; }; struct _PDCLIB_lldiv_t { long long int quot; long long int rem; }; /* -------------------------------------------------------------------------- */ /* What follows are a couple of "special" typedefs and their limits. */ /* -------------------------------------------------------------------------- */ /* The result type of substracting two pointers */ #define _PDCLIB_ptrdiff_t __PTRDIFF_TYPE__ #define _PDCLIB_PTRDIFF_MAX __PTRDIFF_MAX__ #define _PDCLIB_PTRDIFF_MIN _PDCLIB_MIN_CALC( __PTRDIFF_MAX__ ) #define _PDCLIB_PTR_CONV l /* An integer type that can be accessed as atomic entity (think asynchronous */ /* interrupts). In a freestanding environment, the type itself need not be */ /* defined, but its limits must. (Don't ask.) GCC is so kind to predefine it, */ /* but clang is only giving us its MAX value, so we use that to identify the */ /* type in _PDCLIB_int.h if the type definition is unavailable. */ #ifdef __SIG_ATOMIC_TYPE__ #define _PDCLIB_sig_atomic_t __SIG_ATOMIC_TYPE__ #endif #define _PDCLIB_SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__ #define _PDCLIB_SIG_ATOMIC_MIN _PDCLIB_MIN_CALC( __SIG_ATOMIC_MAX__ ) /* Result type of the 'sizeof' operator (must be unsigned). */ /* Note: In , this is taken as the base for RSIZE_MAX, the limit */ /* for the bounds-checking interfaces of Annex K. The recommendation by the */ /* standard is to use ( SIZE_MAX >> 1 ) when "targeting machines with large */ /* addess spaces", whereas small address spaces should use SIZE_MAX directly. */ #define _PDCLIB_size_t __SIZE_TYPE__ #define _PDCLIB_SIZE_MAX __SIZE_MAX__ /* Large enough an integer to hold all character codes of the widest */ /* supported locale. */ #define _PDCLIB_wchar_t __WCHAR_TYPE__ #define _PDCLIB_WCHAR_MAX __WCHAR_MAX__ #define _PDCLIB_WCHAR_MIN __WCHAR_MIN__ /* Large enough an integer to hold all character codes of the widest */ /* supported locale plus WEOF (which needs not to be equal to EOF, nor needs */ /* to be of negative value). */ #define _PDCLIB_wint_t __WINT_TYPE__ #define _PDCLIB_WINT_MAX __WINT_MAX__ #define _PDCLIB_WINT_MIN __WINT_MIN__ /* Integer types capable of taking the (cast) value of a void *, and having */ /* the value cast back to void *, comparing equal to the original. */ #define _PDCLIB_intptr_t __INTPTR_TYPE__ #define _PDCLIB_INTPTR_MAX __INTPTR_MAX__ #define _PDCLIB_INTPTR_MIN _PDCLIB_MIN_CALC( __INTPTR_MAX__ ) #define _PDCLIB_uintptr_t __UINTPTR_TYPE__ #define _PDCLIB_UINTPTR_MAX __UINTPTR_MAX__ /* Largest supported integer type. Implementation note: see _PDCLIB_atomax(). */ #define _PDCLIB_intmax_t __INTMAX_TYPE__ #define _PDCLIB_INTMAX_MAX __INTMAX_MAX__ #define _PDCLIB_INTMAX_MIN _PDCLIB_MIN_CALC( __INTMAX_MAX__ ) #define _PDCLIB_INTMAX_C __INTMAX_C #define _PDCLIB_uintmax_t __UINTMAX_TYPE__ #define _PDCLIB_UINTMAX_MAX __UINTMAX_MAX__ #define _PDCLIB_UINTMAX_C __UINTMAX_C /* defines imaxdiv(), which is equivalent to the div() function */ /* family (see further above) with intmax_t as basis. */ struct _PDCLIB_imaxdiv_t { _PDCLIB_intmax_t quot; _PDCLIB_intmax_t rem; }; /* -------------------------------------------------------------------------- */ /* Time types, limits, constants, and paths */ /* -------------------------------------------------------------------------- */ /* _PDCLIB_time is the type for type_t; _PDCLIB_clock for clock_t. Both types */ /* are defined as "real types capable of representing times". The "range and */ /* precision of times representable" is implementation-defined. */ /* For clock_t, the standard defines that dividing the result of clock() by */ /* CLOCKS_PER_SEC gives the seconds elapsed. */ #ifdef __CYGWIN__ #define _PDCLIB_clock_t unsigned long #else #define _PDCLIB_clock_t long #endif #define _PDCLIB_CLOCKS_PER_SEC 1000000 /* For time_t, no such divider exists. Most implementations use a count of */ /* seconds since a specified epoch. While PDCLib really should support other */ /* encodings as well, for now "count of seconds" is the only supported one. */ /* MIN / MAX values for time_t are not required by the standard (and they are */ /* not "exported" from the _PDCLIB namespace), but they are useful in support */ /* of the _tzcode implementation. */ #ifdef __MINGW64__ #define _PDCLIB_time_t long long #define _PDCLIB_TIME_MAX __LONG_LONG_MAX__ #define _PDCLIB_TIME_MIN _PDCLIB_MIN_CALC( __LONG_LONG_MAX__ ) #else #define _PDCLIB_time_t long #define _PDCLIB_TIME_MAX __LONG_MAX__ #define _PDCLIB_TIME_MIN _PDCLIB_MIN_CALC( __LONG_MAX__ ) #endif /* "Unix time" uses 1970-01-01T00:00:00 as "epoch". If your system uses a */ /* different "zero point" for its timestamps, set this to the offset between */ /* your epoch and Unix epoch. (For example, NTP uses 1900-01-01T00:00:00 as */ /* epoch, giving an offset of (70 * 365 + 17) * 86400 = 220898800 seconds.) */ #define _PDCLIB_EPOCH_BIAS INT64_C( 0 ) /* Leave this alone for now. */ #define _PDCLIB_TIME_UTC 1 /* Path to TZ data. */ /* IMPORTANT: *Must* end with separator character! */ /* It does make it much easier for the time data handling code if this detail */ /* can be relied upon and need not be handled in code. */ #define _PDCLIB_TZDIR "/usr/share/zoneinfo/" /* Path to default (local) timezone */ #define _PDCLIB_TZDEFAULT "/etc/localtime" /* -------------------------------------------------------------------------- */ /* Floating Point */ /* -------------------------------------------------------------------------- */ /* Whether the implementation rounds toward zero (0), to nearest (1), toward */ /* positive infinity (2), or toward negative infinity (3). (-1) signifies */ /* indeterminable rounding, any other value implementation-specific rounding. */ #define _PDCLIB_FLT_ROUNDS -1 /* Whether the implementation uses exact-width precision (0), promotes float */ /* to double (1), or promotes float and double to long double (2). */ /* (-1) signifies indeterminable behaviour, any other value implementation- */ /* specific behaviour. */ #define _PDCLIB_FLT_EVAL_METHOD -1 /* "Number of the decimal digits (n), such that any floating-point number in */ /* the widest supported floating type with p(max) radix (b) digits can be */ /* rounded to a floating-point number with (n) decimal digits and back again */ /* without change to the value p(max) log(10)b if (b) is a power of 10, */ /* [1 + p(max) log(10)b] otherwise." */ /* 64bit IEC 60559 double format (53bit mantissa) is DECIMAL_DIG 17. */ /* 80bit IEC 60559 double-extended format (64bit mantissa) is DECIMAL_DIG 21. */ #define _PDCLIB_DECIMAL_DIG 17 /* -------------------------------------------------------------------------- */ /* Platform-dependent macros defined by the standard headers. */ /* -------------------------------------------------------------------------- */ /* The offsetof macro */ /* Contract: Expand to an integer constant expression of type size_t, which */ /* represents the offset in bytes to the structure member from the beginning */ /* of the structure. If the specified member is a bitfield, behaviour is */ /* undefined. */ /* There is no standard-compliant way to do this. */ /* This implementation casts an integer zero to 'pointer to type', and then */ /* takes the address of member. This is undefined behaviour but should work */ /* on most compilers. */ #define _PDCLIB_offsetof( type, member ) ( (size_t) &( ( (type *) 0 )->member ) ) /* Variable Length Parameter List Handling () */ /* The macros defined by are highly dependent on the calling */ /* conventions used, and you probably have to replace them with builtins of */ /* your compiler. */ #if defined( __i386 ) /* The following generic implementation works only for pure */ /* stack-based architectures, and only if arguments are aligned to pointer */ /* type. Credits to Michael Moody, who contributed this to the Public Domain. */ /* Internal helper macro. va_round is not part of . */ #define _PDCLIB_va_round( type ) ( (sizeof(type) + sizeof(void *) - 1) & ~(sizeof(void *) - 1) ) typedef char * _PDCLIB_va_list; #define _PDCLIB_va_arg( ap, type ) ( (ap) += (_PDCLIB_va_round(type)), ( *(type*) ( (ap) - (_PDCLIB_va_round(type)) ) ) ) #define _PDCLIB_va_copy( dest, src ) ( (dest) = (src), (void)0 ) #define _PDCLIB_va_end( ap ) ( (ap) = (void *)0, (void)0 ) #define _PDCLIB_va_start( ap, parmN ) ( (ap) = (char *) &parmN + ( _PDCLIB_va_round(parmN) ), (void)0 ) #elif defined( __x86_64 ) || defined( __arm__ ) || defined( __ARM_NEON ) /* No way to cover x86_64 or arm with a generic implementation, as it uses */ /* register-based parameter passing. Using compiler builtins here. */ typedef __builtin_va_list _PDCLIB_va_list; #define _PDCLIB_va_arg( ap, type ) ( __builtin_va_arg( ap, type ) ) #define _PDCLIB_va_copy( dest, src ) ( __builtin_va_copy( dest, src ) ) #define _PDCLIB_va_end( ap ) ( __builtin_va_end( ap ) ) #define _PDCLIB_va_start( ap, parmN ) ( __builtin_va_start( ap, parmN ) ) #else #error Please create your own _PDCLIB_config.h. Using the existing one as-is will not work. #endif /* -------------------------------------------------------------------------- */ /* OS "glue", part 1 */ /* These are values and data type definitions that you would have to adapt to */ /* the capabilities and requirements of your OS. */ /* The actual *functions* of the OS interface are declared in _PDCLIB_glue.h. */ /* -------------------------------------------------------------------------- */ /* I/O ---------------------------------------------------------------------- */ /* The type of the file descriptor returned by _PDCLIB_open(), i.e. whatever */ /* the underlying kernel uses for stream identification. */ typedef int _PDCLIB_fd_t; /* The value of type _PDCLIB_fd_t returned by _PDCLIB_open() if the operation */ /* failed. */ #define _PDCLIB_NOHANDLE ( (_PDCLIB_fd_t) -1 ) /* The default size for file buffers. Must be at least 256. */ #define _PDCLIB_BUFSIZ 1024 /* The minimum number of files the implementation guarantees can opened */ /* simultaneously. Must be at least 8. Depends largely on how the platform */ /* does the bookkeeping in whatever is called by _PDCLIB_open(). PDCLib puts */ /* no further limits on the number of open files other than available memory. */ #define _PDCLIB_FOPEN_MAX 8 /* Length of the longest filename the implementation guarantees to support. */ #define _PDCLIB_FILENAME_MAX 128 /* Maximum length of filenames generated by tmpnam(). (See tmpfile.c.) */ #define _PDCLIB_L_tmpnam 46 /* Number of distinct file names that can be generated by tmpnam(). */ #define _PDCLIB_TMP_MAX 50 /* The values of SEEK_SET, SEEK_CUR and SEEK_END, used by fseek(). */ /* Since at least one platform (POSIX) uses the same symbols for its own */ /* "seek" function, you should use whatever the host defines (if it does */ /* define them). */ #define _PDCLIB_SEEK_SET 0 #define _PDCLIB_SEEK_CUR 1 #define _PDCLIB_SEEK_END 2 /* The number of characters that can be buffered with ungetc(). The standard */ /* guarantees only one (1); PDCLib supports larger values, but applications */ /* relying on this would rely on implementation-defined behaviour (not good). */ #define _PDCLIB_UNGETCBUFSIZE 1 /* The number of functions that can be registered with atexit(). Needs to be */ /* at least 33 (32 guaranteed by the standard, plus _PDCLIB_closeall() which */ /* is used internally by PDCLib to close all open streams). */ /* TODO: Should expand dynamically. */ #define _PDCLIB_ATEXIT_SLOTS 40 /* errno -------------------------------------------------------------------- */ /* These are the values that _PDCLIB_errno can be set to by the library. */ /* */ /* By keeping PDCLib's errno in the _PDCLIB_* namespace, the library is */ /* capable of "translating" between errno values used by the hosting OS and */ /* those used and passed out by the library. */ /* */ /* Example: In the example platform, the remove() function uses the unlink() */ /* system call as backend. Linux sets its errno to EISDIR if you try to */ /* unlink() a directory, but POSIX demands EPERM. Within the remove() */ /* function, you can catch 'errno == EISDIR', and set '*_PDCLIB_errno_func() */ /* = _PDCLIB_EPERM'. Anyone using PDCLib's will "see" EPERM instead */ /* of EISDIR. */ /* */ /* If you do not want that kind of translation, you might want to "match" the */ /* values used by PDCLib with those used by the host OS, to avoid confusion. */ /* auxiliary/errno/errno_readout.c provides a convenience program to read */ /* those errno values mandated by the standard from a platform's , */ /* giving output that can readily be pasted here. */ /* Either way, note that the list below, the list in PDCLib's , and */ /* the list in _PDCLIB_stdinit.h, need to be kept in sync. */ /* */ /* The values below are read from a Linux system. */ /* Argument list too long */ #define _PDCLIB_E2BIG 7 /* Permission denied */ #define _PDCLIB_EACCES 13 /* Address in use */ #define _PDCLIB_EADDRINUSE 98 /* Address not available */ #define _PDCLIB_EADDRNOTAVAIL 99 /* Address family not supported */ #define _PDCLIB_EAFNOSUPPORT 97 /* Resource unavailable, try again */ #define _PDCLIB_EAGAIN 11 /* Connection already in progress */ #define _PDCLIB_EALREADY 114 /* Bad file descriptor */ #define _PDCLIB_EBADF 9 /* Bad message */ #define _PDCLIB_EBADMSG 74 /* Device or resource busy */ #define _PDCLIB_EBUSY 16 /* Operation canceled */ #define _PDCLIB_ECANCELED 125 /* No child processes */ #define _PDCLIB_ECHILD 10 /* Connection aborted */ #define _PDCLIB_ECONNABORTED 103 /* Connection refused */ #define _PDCLIB_ECONNREFUSED 111 /* Connection reset */ #define _PDCLIB_ECONNRESET 104 /* Resource deadlock would occur */ #define _PDCLIB_EDEADLK 35 /* Destination address required */ #define _PDCLIB_EDESTADDRREQ 89 /* Mathematics argument out of domain of function */ #define _PDCLIB_EDOM 33 /* File exists */ #define _PDCLIB_EEXIST 17 /* Bad address */ #define _PDCLIB_EFAULT 14 /* File too large */ #define _PDCLIB_EFBIG 27 /* Host is unreachable */ #define _PDCLIB_EHOSTUNREACH 113 /* Identifier removed */ #define _PDCLIB_EIDRM 43 /* Illegal byte sequence */ #define _PDCLIB_EILSEQ 84 /* Operation in progress */ #define _PDCLIB_EINPROGRESS 115 /* Interrupted function */ #define _PDCLIB_EINTR 4 /* Invalid argument */ #define _PDCLIB_EINVAL 22 /* I/O error */ #define _PDCLIB_EIO 5 /* Socket is connected */ #define _PDCLIB_EISCONN 106 /* Is a directory */ #define _PDCLIB_EISDIR 21 /* Too many levels of symbolic links */ #define _PDCLIB_ELOOP 40 /* File descriptor value too large */ #define _PDCLIB_EMFILE 24 /* Too many links */ #define _PDCLIB_EMLINK 31 /* Message too large */ #define _PDCLIB_EMSGSIZE 90 /* Filename too long */ #define _PDCLIB_ENAMETOOLONG 36 /* Network is down */ #define _PDCLIB_ENETDOWN 100 /* Connection aborted by network */ #define _PDCLIB_ENETRESET 102 /* Network unreachable */ #define _PDCLIB_ENETUNREACH 101 /* Too many files open in system */ #define _PDCLIB_ENFILE 23 /* No buffer space available */ #define _PDCLIB_ENOBUFS 105 /* No message is available on the STREAM head read queue */ #define _PDCLIB_ENODATA 61 /* No such device */ #define _PDCLIB_ENODEV 19 /* No such file or directory */ #define _PDCLIB_ENOENT 2 /* Executable file format error */ #define _PDCLIB_ENOEXEC 8 /* No locks available */ #define _PDCLIB_ENOLCK 37 /* Link has been severed */ #define _PDCLIB_ENOLINK 67 /* Not enough space */ #define _PDCLIB_ENOMEM 12 /* No message of the desired type */ #define _PDCLIB_ENOMSG 42 /* Protocol not available */ #define _PDCLIB_ENOPROTOOPT 92 /* No space left on device */ #define _PDCLIB_ENOSPC 28 /* No STREAM resources */ #define _PDCLIB_ENOSR 63 /* Not a STREAM */ #define _PDCLIB_ENOSTR 60 /* Function not supported */ #define _PDCLIB_ENOSYS 38 /* The socket is not connected */ #define _PDCLIB_ENOTCONN 107 /* Not a directory */ #define _PDCLIB_ENOTDIR 20 /* Directory not empty */ #define _PDCLIB_ENOTEMPTY 39 /* State not recoverable */ #define _PDCLIB_ENOTRECOVERABLE 131 /* Not a socket */ #define _PDCLIB_ENOTSOCK 88 /* Not supported */ #define _PDCLIB_ENOTSUP 95 /* Inappropriate I/O control operation */ #define _PDCLIB_ENOTTY 25 /* No such device or address */ #define _PDCLIB_ENXIO 6 /* Operation not supported on socket */ #define _PDCLIB_EOPNOTSUPP 95 /* Value too large to be stored in data type */ #define _PDCLIB_EOVERFLOW 75 /* Previous owner died */ #define _PDCLIB_EOWNERDEAD 130 /* Operation not permitted */ #define _PDCLIB_EPERM 1 /* Broken pipe */ #define _PDCLIB_EPIPE 32 /* Protocol error */ #define _PDCLIB_EPROTO 71 /* Protocol not supported */ #define _PDCLIB_EPROTONOSUPPORT 93 /* Protocol wrong type for socket */ #define _PDCLIB_EPROTOTYPE 91 /* Result too large */ #define _PDCLIB_ERANGE 34 /* Read-only file system */ #define _PDCLIB_EROFS 30 /* Invalid seek */ #define _PDCLIB_ESPIPE 29 /* No such process */ #define _PDCLIB_ESRCH 3 /* Stream ioctl() timeout */ #define _PDCLIB_ETIME 62 /* Connection timed out */ #define _PDCLIB_ETIMEDOUT 110 /* Text file busy */ #define _PDCLIB_ETXTBSY 26 /* Operation would block */ #define _PDCLIB_EWOULDBLOCK 11 /* Cross-device link */ #define _PDCLIB_EXDEV 18 /* The highest defined errno value, plus one. This is used to set the size */ /* of the array in struct _PDCLIB_lc_text_t holding error messages for the */ /* strerror() and perror() functions. (If you change this value because you */ /* are using additional errno values, you *HAVE* to provide appropriate error */ /* messages for *ALL* locales.) */ #define _PDCLIB_ERRNO_MAX 132 /* The error message used for unknown error codes (generated by errno_readout */ /* for consistency between the 'holes' in the list of defined error messages */ /* and the text generated by e.g. strerror() for out-of-range error values.) */ #define _PDCLIB_EUNKNOWN_TEXT (char*)"unknown error" /* locale data -------------------------------------------------------------- */ /* The default path where PDCLib should look for its locale data. */ /* Must end with the appropriate separator character. */ #define _PDCLIB_LOCALE_PATH "/usr/share/pdclib/i18n" /* The name of the environment variable that can be used to override that */ /* path setting. */ #define _PDCLIB_LOCALE_PATH_ENV PDCLIB_I18N #ifdef __CYGWIN__ typedef unsigned int wint_t; #endif /* threads ------------------------------------------------------------------ */ /* This is relying on underlying implementation to provide thread */ /* support. */ /* The problem here is we cannot just #include and access the */ /* original definitions. The standard library must not drag identifiers into */ /* the user's namespace, so we have to set our own definitions. Which are, */ /* obviously, platform-specific. */ /* If you do NOT want to provide threads support, define __STDC_NO_THREADS__ */ /* to 1 and simply delete the threads.h header and the corresponding files in */ /* functions/threads/. This makes PDCLib not thread-safe (obviously), as all */ /* all the safeguards against race conditions (e.g. in ) will be */ /* omitted. */ /* auxiliary/pthread/pthread_readout.c provides a convenience program to read */ /* appropriate definitions from a platform's , giving output that */ /* can readily be pasted here. */ typedef unsigned long int _PDCLIB_thrd_t; typedef union { unsigned char _PDCLIB_cnd_t_data[ 48 ]; long long int _PDCLIB_cnd_t_align; } _PDCLIB_cnd_t; #if defined( __arm__ ) || defined( __ARM_NEON ) typedef union { unsigned char _PDCLIB_mtx_t_data[ 24 ]; long int _PDCLIB_mtx_t_align; } _PDCLIB_mtx_t; #else typedef union { unsigned char _PDCLIB_mtx_t_data[ 40 ]; long int _PDCLIB_mtx_t_align; } _PDCLIB_mtx_t; #endif typedef unsigned int _PDCLIB_tss_t; typedef int _PDCLIB_once_flag; #define _PDCLIB_ONCE_FLAG_INIT 0 #define _PDCLIB_RECURSIVE_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER /* This one is actually hidden in , and only if __USE_POSIX is */ /* defined prior to #include (PTHREAD_DESTRUCTOR_ITERATIONS). */ #define _PDCLIB_TSS_DTOR_ITERATIONS 4 /* The following are not made public in any header, but used internally for */ /* interfacing with the pthread API. */ typedef union { unsigned char _PDCLIB_cnd_attr_t_data[ 4 ]; int _PDCLIB_cnd_attr_t_align; } _PDCLIB_cnd_attr_t; typedef union { unsigned char _PDCLIB_mtx_attr_t_data[ 4 ]; int _PDCLIB_mtx_attr_t_align; } _PDCLIB_mtx_attr_t; #if defined( __arm__ ) || defined( __ARM_NEON ) typedef union { unsigned char _PDCLIB_thrd_attr_t_data[ 36 ]; long int _PDCLIB_thrd_attr_t_align; } _PDCLIB_thrd_attr_t; #else typedef union { unsigned char _PDCLIB_thrd_attr_t_data[ 56 ]; long int _PDCLIB_thrd_attr_t_align; } _PDCLIB_thrd_attr_t; #endif /* Static initialization of recursive mutex. */ #if defined( __arm__ ) || defined( __ARM_NEON ) #define _PDCLIB_MTX_RECURSIVE_INIT { {\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } /* Static initialization of plain / timeout mutex (identical with pthread). */ #define _PDCLIB_MTX_PLAIN_INIT { {\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } #else #define _PDCLIB_MTX_RECURSIVE_INIT { {\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } /* Static initialization of plain / timeout mutex (identical with pthread). */ #define _PDCLIB_MTX_PLAIN_INIT { {\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/include/pdclib/_PDCLIB_defguard.h0000644000175000001440000000146714676735310030516 0ustar mhxusers/* Definition guard <_PDCLIB_defguard.h> This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_DEFGUARD_H #define _PDCLIB_DEFGUARD_H _PDCLIB_DEFGUARD_H #if defined( __ANDROID__ ) /* typedef sigset_t */ #include "bits/signal_types.h" #endif /* Linux defines its own version of struct timespec (from ) in some internal header (depending on clib implementation), which leads to problems when accessing e.g. sys/time.h (type redefinition). The solution is to set the Linux header's include guard (to avoid Linux' definition), and to include PDCLib's to define the type unambiguously. */ #define _TIMESPEC_DEFINED #define _SYS__TIMESPEC_H_ #define _STRUCT_TIMESPEC #include #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/include/float.h0000644000175000001440000000636314676735310025431 0ustar mhxusers/* Characteristics of floating types This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_FLOAT_H #define _PDCLIB_FLOAT_H _PDCLIB_FLOAT_H #include "pdclib/_PDCLIB_config.h" #define FLT_ROUNDS _PDCLIB_FLT_ROUNDS #define FLT_EVAL_METHOD _PDCLIB_FLT_EVAL_METHOD #define DECIMAL_DIG _PDCLIB_DECIMAL_DIG /* Radix of exponent representation */ #define FLT_RADIX __FLT_RADIX__ /* Number of base-FLT_RADIX digits in the significand of a float */ #define FLT_MANT_DIG __FLT_MANT_DIG__ /* Number of decimal digits of precision in a float */ #define FLT_DIG __FLT_DIG__ /* Difference between 1.0 and the minimum float greater than 1.0 */ #define FLT_EPSILON __FLT_EPSILON__ /* Minimum int x such that FLT_RADIX**(x-1) is a normalised float */ #define FLT_MIN_EXP __FLT_MIN_EXP__ /* Minimum normalised float */ #define FLT_MIN __FLT_MIN__ /* Minimum int x such that 10**x is a normalised float */ #define FLT_MIN_10_EXP __FLT_MIN_10_EXP__ /* Maximum int x such that FLT_RADIX**(x-1) is a representable float */ #define FLT_MAX_EXP __FLT_MAX_EXP__ /* Maximum float */ #define FLT_MAX __FLT_MAX__ /* Maximum int x such that 10**x is a representable float */ #define FLT_MAX_10_EXP __FLT_MAX_10_EXP__ /* Number of base-FLT_RADIX digits in the significand of a double */ #define DBL_MANT_DIG __DBL_MANT_DIG__ /* Number of decimal digits of precision in a double */ #define DBL_DIG __DBL_DIG__ /* Difference between 1.0 and the minimum double greater than 1.0 */ #define DBL_EPSILON __DBL_EPSILON__ /* Minimum int x such that FLT_RADIX**(x-1) is a normalised double */ #define DBL_MIN_EXP __DBL_MIN_EXP__ /* Minimum normalised double */ #define DBL_MIN __DBL_MIN__ /* Minimum int x such that 10**x is a normalised double */ #define DBL_MIN_10_EXP __DBL_MIN_10_EXP__ /* Maximum int x such that FLT_RADIX**(x-1) is a representable double */ #define DBL_MAX_EXP __DBL_MAX_EXP__ /* Maximum double */ #define DBL_MAX __DBL_MAX__ /* Maximum int x such that 10**x is a representable double */ #define DBL_MAX_10_EXP __DBL_MAX_10_EXP__ /* Number of base-FLT_RADIX digits in the significand of a long double */ #define LDBL_MANT_DIG __LDBL_MANT_DIG__ /* Number of decimal digits of precision in a long double */ #define LDBL_DIG __LDBL_DIG__ /* Difference between 1.0 and the minimum long double greater than 1.0 */ #define LDBL_EPSILON __LDBL_EPSILON__ /* Minimum int x such that FLT_RADIX**(x-1) is a normalised long double */ #define LDBL_MIN_EXP __LDBL_MIN_EXP__ /* Minimum normalised long double */ #define LDBL_MIN __LDBL_MIN__ /* Minimum int x such that 10**x is a normalised long double */ #define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__ /* Maximum int x such that FLT_RADIX**(x-1) is a representable long double */ #define LDBL_MAX_EXP __LDBL_MAX_EXP__ /* Maximum long double */ #define LDBL_MAX __LDBL_MAX__ /* Maximum int x such that 10**x is a representable long double */ #define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__ /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_FLOAT_H #include _PDCLIB_EXTEND_FLOAT_H #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/include/signal.h0000644000175000001440000000656114676735310025601 0ustar mhxusers/* Signal handling This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_SIGNAL_H #define _PDCLIB_SIGNAL_H _PDCLIB_SIGNAL_H #include "pdclib/_PDCLIB_internal.h" /* Signals ------------------------------------------------------------------ */ /* A word on signals, to the people using PDCLib in their OS projects. The definitions of the C standard leave about everything that *could* be useful to be "implementation defined". Without additional, non-standard arrangements, it is not possible to turn them into a useful tool. This example implementation chose to "not generate any of these signals, except as a result of explicit calls to the raise function", which is allowed by the standard but of course does nothing for the usefulness of . A useful signal handling would: 1) make signal() a system call that registers the signal handler with the OS 2) make raise() a system call triggering an OS signal to the running process 3) make provisions that further signals of the same type are blocked until the signal handler returns (optional for SIGILL) */ /* These are the values used by Linux. */ /* Abnormal termination / abort() */ #define SIGABRT 6 /* Arithmetic exception / division by zero / overflow */ #define SIGFPE 8 /* Illegal instruction */ #define SIGILL 4 /* Interactive attention signal */ #define SIGINT 2 /* Invalid memory access */ #define SIGSEGV 11 /* Termination request */ #define SIGTERM 15 /* The following should be defined to pointer values that could NEVER point to a valid signal handler function. (They are used as special arguments to signal().) Again, these are the values used by Linux. */ #define SIG_DFL (void (*)( int ))0 #define SIG_ERR (void (*)( int ))-1 #define SIG_IGN (void (*)( int ))1 typedef _PDCLIB_sig_atomic_t sig_atomic_t; /* Installs a signal handler "func" for the given signal. A signal handler is a function that takes an integer as argument (the signal number) and returns void. Note that a signal handler can do very little else than: 1) assign a value to a static object of type "volatile sig_atomic_t", 2) call signal() with the value of sig equal to the signal received, 3) call _Exit(), 4) call abort(). Virtually everything else is undefind. The signal() function returns the previous installed signal handler, which at program start may be SIG_DFL or SIG_ILL. (This implementation uses SIG_DFL for all handlers.) If the request cannot be honored, SIG_ERR is returned and errno is set to an unspecified positive value. */ _PDCLIB_PUBLIC void ( *signal( int sig, void ( *func )( int ) ) )( int ); /* Raises the given signal (executing the registered signal handler with the given signal number as parameter). This implementation does not prevent further signals of the same time from occuring, but executes signal( sig, SIG_DFL ) before entering the signal handler (i.e., a second signal before the signal handler re-registers itself or SIG_IGN will end the program). Returns zero if successful, nonzero otherwise. */ _PDCLIB_PUBLIC int raise( int sig ); /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_SIGNAL_H #include _PDCLIB_EXTEND_SIGNAL_H #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/0000755000175000001440000000000014677003524024524 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/time/0000755000175000001440000000000014677003524025462 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/time/timespec_get.c0000644000175000001440000000152414676735310030304 0ustar mhxusers/* timespec_get( struct timespec *, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_defguard.h" #include "sys/time.h" int timespec_get( struct timespec * ts, int base ) { if ( base == TIME_UTC ) { /* We can make do with a really thin wrapper here. */ struct timeval tv; if ( gettimeofday( &tv, NULL ) == 0 ) { ts->tv_sec = tv.tv_sec; ts->tv_nsec = tv.tv_usec * 1000; return base; } } /* Not supporting any other time base than TIME_UTC for now. */ return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( NO_TESTDRIVER ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/time/time.c0000644000175000001440000000136114676735310026571 0ustar mhxusers/* time( time_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_defguard.h" #include "sys/time.h" /* See comments in _PDCLIB_config.h on the semantics of time_t. */ time_t time( time_t * timer ) { struct timeval tv; if ( gettimeofday( &tv, NULL ) == 0 ) { if ( timer != NULL ) { *timer = tv.tv_sec; } return tv.tv_sec; } return -1; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { time_t t = time( NULL ); printf( "%d\n", (int)t ); TESTCASE( NO_TESTDRIVER ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/time/clock.c0000644000175000001440000000100114676735310026715 0ustar mhxusers/* clock( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include "sys/times.h" clock_t clock( void ) { struct tms buf; if ( times( &buf ) != ( clock_t )-1 ) { return buf.tms_utime + buf.tms_stime; } return -1; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( NO_TESTDRIVER ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/0000755000175000001440000000000014677003524026156 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/thrd_exit.c0000644000175000001440000000110014676735310030310 0ustar mhxusers/* thrd_exit( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include #ifdef __cplusplus extern "C" { #endif extern void pthread_exit( void * ) _PDCLIB_NORETURN; #ifdef __cplusplus } #endif void thrd_exit( int res ) { pthread_exit( ( void * )( uintptr_t )res ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/cnd_broadcast.c0000644000175000001440000000126514676735310031120 0ustar mhxusers/* cnd_broadcast( cnd_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameter. */ extern int pthread_cond_broadcast( cnd_t * ); #ifdef __cplusplus } #endif int cnd_broadcast( cnd_t * cond ) { if ( pthread_cond_broadcast( cond ) == 0 ) { return thrd_success; } else { return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/tss_set.c0000644000175000001440000000131014676735310030005 0ustar mhxusers/* tss_set( tss_t, void * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the first parameter. */ extern int pthread_setspecific( tss_t, const void * ); #ifdef __cplusplus } #endif int tss_set( tss_t key, void * val ) { if ( pthread_setspecific( key, val ) == 0 ) { return thrd_success; } else { return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/thrd_sleep.c0000644000175000001440000000153414676735310030462 0ustar mhxusers/* thrd_sleep( const struct timespec *, struct timespec * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include "/usr/include/errno.h" #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameters. */ extern int nanosleep( const struct timespec *, struct timespec * ); #ifdef __cplusplus } #endif int thrd_sleep( const struct timespec * duration, struct timespec * remaining ) { errno = 0; if ( nanosleep( duration, remaining ) == 0 ) { return 0; } if ( errno == EINTR ) { return -1; } return -2; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/thrd_detach.c0000644000175000001440000000123314676735310030576 0ustar mhxusers/* thrd_detach( thrd_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameter */ extern int pthread_detach( thrd_t ); #ifdef __cplusplus } #endif int thrd_detach( thrd_t thr ) { if ( pthread_detach( thr ) == 0 ) { return thrd_success; } else { return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/cnd_init.c0000644000175000001440000000130314676735310030112 0ustar mhxusers/* cnd_init( cnd_t * cond ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameters. */ extern int pthread_cond_init( cnd_t *, _PDCLIB_cnd_attr_t * ); #ifdef __cplusplus } #endif int cnd_init( cnd_t * cond ) { if ( pthread_cond_init( cond, NULL ) == 0 ) { return thrd_success; } else { return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/thrd_current.c0000644000175000001440000000207114676735310031031 0ustar mhxusers/* thrd_current( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the return type. */ extern thrd_t pthread_self( void ); #ifdef __cplusplus } #endif thrd_t thrd_current( void ) { return ( thrd_t )pthread_self(); } #endif #ifdef TEST #include "_PDCLIB_test.h" #ifndef REGTEST #define COUNT 10 thrd_t g_thread[COUNT]; unsigned g_index[COUNT] = { 0u, 1u, 2u, 3u, 4u, 5u, 6u, 7u, 8u, 9u }; static int func( void * arg ) { TESTCASE( thrd_equal( g_thread[ *( unsigned * )arg ], thrd_current() ) != 0 ); return 0; } #endif int main( void ) { #ifndef REGTEST for ( unsigned i = 0; i < COUNT; ++i ) { TESTCASE( thrd_create( &g_thread[i], func, &g_index[i] ) == thrd_success ); } for ( unsigned i = 0; i < COUNT; ++i ) { TESTCASE( thrd_join( g_thread[i], NULL ) == thrd_success ); } #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/call_once.c0000644000175000001440000000120614676735310030244 0ustar mhxusers/* call_once( once_flag *, void (*)( void ) ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameter. */ extern int pthread_once( once_flag *, void ( * )( void ) ); #ifdef __cplusplus } #endif void call_once( once_flag * flag, void ( *func )( void ) ) { pthread_once( flag, func ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/mtx_timedlock.c0000644000175000001440000000164014676735310031172 0ustar mhxusers/* mtx_timedlock( mtx_t *, const struct timespec * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include "/usr/include/errno.h" #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the first parameters. */ extern int pthread_mutex_timedlock( mtx_t *, const struct timespec * ); #ifdef __cplusplus } #endif int mtx_timedlock( mtx_t * _PDCLIB_restrict mtx, const struct timespec * _PDCLIB_restrict ts ) { switch ( pthread_mutex_timedlock( mtx, ts ) ) { case 0: return thrd_success; case ETIMEDOUT: return thrd_timedout; default: return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/mtx_init.c0000644000175000001440000000256514676735310030171 0ustar mhxusers/* mtx_init( mtx_t *, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include int mtx_init( mtx_t * mtx, int type ) { /* As far as I could figure out from Pthread documentation, there is no special requirement for a Pthread mutex to support timeout (the default "fast" mutex already supports that). So the only thing we check for in type is whether the mutex shall be recursive or not. */ if ( type & mtx_recursive ) { _PDCLIB_mtx_t recursive_mutex = _PDCLIB_MTX_RECURSIVE_INIT; *mtx = recursive_mutex; } else { _PDCLIB_mtx_t plain_mutex = _PDCLIB_MTX_PLAIN_INIT; *mtx = plain_mutex; } return thrd_success; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST mtx_t plain; mtx_t plain_test = _PDCLIB_MTX_PLAIN_INIT; mtx_t recursive; mtx_t recursive_test = _PDCLIB_MTX_RECURSIVE_INIT; TESTCASE( mtx_init( &plain, mtx_plain ) == thrd_success ); TESTCASE( memcmp( &plain, &plain_test, sizeof( mtx_t ) ) == 0 ); TESTCASE( mtx_init( &recursive, mtx_recursive ) == thrd_success ); TESTCASE( memcmp( &recursive, &recursive_test, sizeof( mtx_t ) ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/mtx_destroy.c0000644000175000001440000000111214676735310030702 0ustar mhxusers/* mtx_destroy( mtx_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameter. */ extern int pthread_mutex_destroy( mtx_t * ); #ifdef __cplusplus } #endif void mtx_destroy( mtx_t * mtx ) { pthread_mutex_destroy( mtx ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/cnd_destroy.c0000644000175000001440000000115414676735310030644 0ustar mhxusers/* cnd_destroy( cnd_t * cond ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameter. */ extern int pthread_cond_destroy( cnd_t * ); #ifdef __cplusplus } #endif void cnd_destroy( cnd_t * cond ) { /* Could return EBUsY */ pthread_cond_destroy( cond ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/cnd_wait.c0000644000175000001440000000130614676735310030116 0ustar mhxusers/* cnd_wait( cnd_t *, mtx_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameters. */ extern int pthread_cond_wait( cnd_t *, mtx_t * ); #ifdef __cplusplus } #endif int cnd_wait( cnd_t * cond, mtx_t * mtx ) { if ( pthread_cond_wait( cond, mtx ) == 0 ) { return thrd_success; } else { return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/cnd_timedwait.c0000644000175000001440000000171414676735310031144 0ustar mhxusers/* cnd_timedwait( cnd_t *, mtx_t, const struct timespec * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include "/usr/include/errno.h" #ifdef __cplusplus extern "C" { #endif /* Implicitly casing the parameters. */ extern int pthread_cond_timedwait( cnd_t *, mtx_t *, const struct timespec * ); #ifdef __cplusplus } #endif int cnd_timedwait( cnd_t * _PDCLIB_restrict cond, mtx_t * _PDCLIB_restrict mtx, const struct timespec * _PDCLIB_restrict ts ) { switch ( pthread_cond_timedwait( cond, mtx, ts ) ) { case 0: return thrd_success; case ETIMEDOUT: return thrd_timedout; default: return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/mtx_trylock.c0000644000175000001440000000142414676735310030706 0ustar mhxusers/* mtx_trylock( mtx_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include "/usr/include/errno.h" #ifdef __cplusplus extern "C" { #endif /* Implicity casting the parameter. */ extern int pthread_mutex_trylock( mtx_t * ); #ifdef __cplusplus } #endif int mtx_trylock( mtx_t * mtx ) { switch ( pthread_mutex_trylock( mtx ) ) { case 0: return thrd_success; case EBUSY: return thrd_busy; default: return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/tss_get.c0000644000175000001440000000110414676735310027772 0ustar mhxusers/* tss_get( tss_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameter. */ extern void * pthread_getspecific( tss_t ); #ifdef __cplusplus } #endif void * tss_get( tss_t key ) { return pthread_getspecific( key ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/thrd_create.c0000644000175000001440000000230314676735310030610 0ustar mhxusers/* thrd_create( thrd_t *, thrd_start_t, void * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the first parameters. */ extern int pthread_create( thrd_t *, const _PDCLIB_thrd_attr_t *, thrd_start_t, void * ); #ifdef __cplusplus } #endif int thrd_create( thrd_t * thr, thrd_start_t func, void * arg ) { if ( pthread_create( thr, NULL, func, arg ) == 0 ) { return thrd_success; } else { return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" #ifndef REGTEST #define COUNT 10 thrd_t g_thread[ COUNT ] = {0}; int g_count = 0; static int func( void * arg ) { ++g_count; return 0; } #endif int main( void ) { #ifndef REGTEST for ( unsigned i = 0; i < COUNT; ++i ) { TESTCASE( thrd_create( &g_thread[i], func, NULL ) == thrd_success ); } for ( unsigned i = 0; i < COUNT; ++i ) { TESTCASE( thrd_join( g_thread[i], NULL ) == thrd_success ); } TESTCASE( g_count == COUNT ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/thrd_equal.c0000644000175000001440000000113114676735310030452 0ustar mhxusers/* thrd_equal( thrd_t, thrd_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameters. */ extern int pthread_equal( thrd_t, thrd_t ); #ifdef __cplusplus } #endif int thrd_equal( thrd_t thr0, thrd_t thr1 ) { return pthread_equal( thr0, thr1 ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Tested by thrd_current test driver. */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/tss_delete.c0000644000175000001440000000107414676735310030463 0ustar mhxusers/* tss_delete( tss_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameter. */ extern int pthread_key_delete( tss_t ); #ifdef __cplusplus } #endif void tss_delete( tss_t key ) { pthread_key_delete( key ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/mtx_lock.c0000644000175000001440000000230514676735310030146 0ustar mhxusers/* mtx_lock( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameter. */ extern int pthread_mutex_lock( mtx_t * ); #ifdef __cplusplus } #endif int mtx_lock( mtx_t * mtx ) { if ( pthread_mutex_lock( mtx ) == 0 ) { return thrd_success; } else { return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" #ifndef REGTEST #define COUNT 10 thrd_t g_thread[COUNT]; mtx_t g_mutex; static int func( void * arg ) { TESTCASE( mtx_lock( &g_mutex ) == thrd_success ); thrd_yield(); TESTCASE( mtx_unlock( &g_mutex ) == thrd_success ); return 0; } #endif int main( void ) { #ifndef REGTEST TESTCASE( mtx_init( &g_mutex, mtx_plain ) == thrd_success ); for ( unsigned i = 0; i < COUNT; ++i ) { TESTCASE( thrd_create( &g_thread[i], func, NULL ) == thrd_success ); } for ( unsigned i = 0; i < COUNT; ++i ) { TESTCASE( thrd_join( g_thread[i], NULL ) == thrd_success ); } #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/cnd_signal.c0000644000175000001440000000125614676735310030433 0ustar mhxusers/* cnd_signal( cnd_t * cond ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameter. */ extern int pthread_cond_signal( cnd_t * ); #ifdef __cplusplus } #endif int cnd_signal( cnd_t * cond ) { if ( pthread_cond_signal( cond ) == 0 ) { return thrd_success; } else { return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/thrd_yield.c0000644000175000001440000000077614676735310030467 0ustar mhxusers/* thrd_yield( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif extern int pthread_yield( void ); #ifdef __cplusplus } #endif void thrd_yield( void ) { pthread_yield(); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/mtx_unlock.c0000644000175000001440000000124414676735310030512 0ustar mhxusers/* mtx_unlock( mtx_t * mtx ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicity casting the parameter. */ extern int pthread_mutex_unlock( mtx_t * ); #ifdef __cplusplus } #endif int mtx_unlock( mtx_t * mtx ) { if ( pthread_mutex_unlock( mtx ) == 0 ) { return thrd_success; } else { return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Tested by the mtx_lock test driver. */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/thrd_join.c0000644000175000001440000000150614676735310030310 0ustar mhxusers/* thrd_join( thrd_t, int * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the first parameter. */ extern int pthread_join( thrd_t, void ** ); #ifdef __cplusplus } #endif int thrd_join( thrd_t thr, int * res ) { void * result; int rc = pthread_join( thr, &result ); if ( res != NULL ) { *res = ( int )( uintptr_t )result; } if ( rc == 0 ) { return thrd_success; } else { return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/threads/tss_create.c0000644000175000001440000000132514676735310030463 0ustar mhxusers/* tss_create( tss_t *, tss_dtor_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include #ifdef __cplusplus extern "C" { #endif /* Implicitly casting the parameters. */ extern int pthread_key_create( tss_t *, tss_dtor_t ); #ifdef __cplusplus } #endif int tss_create( tss_t * key, tss_dtor_t dtor ) { if ( pthread_key_create( key, dtor ) == 0 ) { return thrd_success; } else { return thrd_error; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST TESTCASE( NO_TESTDRIVER ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/stdlib/0000755000175000001440000000000014677003524026005 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/stdlib/getenv_s.c0000644000175000001440000000543214676735310027773 0ustar mhxusers/* getenv_s( size_t *, char *, rsize_t, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example implementation of getenv() fit for use with POSIX kernels. */ #define __STDC_WANT_LIB_EXT1__ 1 #include #include #include #ifndef REGTEST extern char ** environ; /* The standard states (7.22.4.6 (3), "the implementation shall behave as if no library function calls the getenv function." That is, however, in context of the previous paragraph stating that getenv "need not avoid data races with other threads of execution that modify the environment list". PDCLib does not provide means of modifying the environment list. */ errno_t getenv_s( size_t * _PDCLIB_restrict len, char * _PDCLIB_restrict value, rsize_t maxsize, const char * _PDCLIB_restrict name ) { size_t nlen; size_t index = 0; size_t vlen = 0; char const * environ_value = ""; errno_t rc = -1; if ( name == NULL || maxsize == 0 || maxsize > RSIZE_MAX || value == NULL ) { _PDCLIB_constraint_handler( _PDCLIB_CONSTRAINT_VIOLATION( _PDCLIB_EINVAL ) ); return _PDCLIB_EINVAL; } nlen = strlen( name ); while ( environ[ index ] != NULL ) { if ( strncmp( environ[ index ], name, nlen ) == 0 ) { environ_value = environ[ index ] + nlen + 1; vlen = strlen( environ_value ); rc = 0; break; } index++; } if ( len != NULL ) { *len = vlen; } if ( vlen < maxsize ) { strcpy( value, environ_value ); } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) static int HANDLER_CALLS = 0; static void test_handler( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ) { ++HANDLER_CALLS; } #endif int main( void ) { #if ! defined( REGTEST ) || defined( __STDC_LIB_EXT1__ ) size_t len; char value[20]; set_constraint_handler_s( test_handler ); TESTCASE( getenv_s( &len, value, 20, "SHELL" ) == 0 ); TESTCASE( strcmp( value, "/bin/bash" ) == 0 ); /* TESTCASE( strcmp( value, "/bin/sh" ) == 0 ); */ /* constraint violations */ TESTCASE( getenv_s( &len, NULL, 20, "SHELL" ) != 0 ); TESTCASE( getenv_s( &len, value, 0, "SHELL" ) != 0 ); TESTCASE( getenv_s( &len, value, RSIZE_MAX + 1, "SHELL" ) != 0 ); TESTCASE( getenv_s( &len, value, 20, NULL ) != 0 ); /* non-existing (hopefully), != 0 but not constraint violation */ TESTCASE( getenv_s( &len, value, 20, "supercalifragilisticexpialidocius" ) != 0 ); TESTCASE( HANDLER_CALLS == 4 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/stdlib/getenv.c0000644000175000001440000000234314676735310027447 0ustar mhxusers/* getenv( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example implementation of getenv() fit for use with POSIX kernels. */ #include #include #ifndef REGTEST extern char ** environ; /* The standard states (7.22.4.6 (3), "the implementation shall behave as if no library function calls the getenv function." That is, however, in context of the previous paragraph stating that getenv "need not avoid data races with other threads of execution that modify the environment list". PDCLib does not provide means of modifying the environment list. */ char * getenv( const char * name ) { size_t len = strlen( name ); size_t index = 0; while ( environ[ index ] != NULL ) { if ( strncmp( environ[ index ], name, len ) == 0 ) { return environ[ index ] + len + 1; } index++; } return NULL; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { TESTCASE( strcmp( getenv( "SHELL" ), "/bin/bash" ) == 0 ); /* TESTCASE( strcmp( getenv( "SHELL" ), "/bin/sh" ) == 0 ); */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/stdlib/system.c0000644000175000001440000000273514676735310027510 0ustar mhxusers/* system( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include /* This is an example implementation of system() fit for use with POSIX kernels. */ #ifdef __cplusplus extern "C" { #endif extern int fork( void ); extern int execve( const char * filename, char * const argv[], char * const envp[] ); extern int wait( int * status ); #ifdef __cplusplus } #endif int system( const char * string ) { const char * argv[] = { "sh", "-c", NULL, NULL }; argv[2] = string; if ( string != NULL ) { int pid = fork(); if ( pid == 0 ) { execve( "/bin/sh", ( char * const *)argv, NULL ); } else if ( pid > 0 ) { while ( wait( NULL ) != pid ) { /* EMPTY */ } } } return -1; } #ifdef TEST #include "_PDCLIB_test.h" #define SHELLCOMMAND "echo 'SUCCESS testing system()'" int main( void ) { FILE * fh; char buffer[25]; buffer[24] = 'x'; TESTCASE( ( fh = freopen( testfile, "wb+", stdout ) ) != NULL ); TESTCASE( system( SHELLCOMMAND ) ); rewind( fh ); TESTCASE( fread( buffer, 1, 24, fh ) == 24 ); TESTCASE( memcmp( buffer, "SUCCESS testing system()", 24 ) == 0 ); TESTCASE( buffer[24] == 'x' ); TESTCASE( fclose( fh ) == 0 ); TESTCASE( remove( testfile ) == 0 ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/0000755000175000001440000000000014677003524025620 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_rename.c0000644000175000001440000000563114676735310030420 0ustar mhxusers/* _PDCLIB_rename( const char *, const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example implementation of _PDCLIB_rename() fit for use with POSIX kernels. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #include "/usr/include/errno.h" #ifdef __cplusplus extern "C" { #endif extern int unlink( const char * pathname ); extern int link( const char * oldpath, const char * newpath ); #ifdef __cplusplus } #endif int _PDCLIB_rename( const char * oldpath, const char * newpath ) { /* Note that the behaviour if new file exists is implementation-defined. There is nothing wrong with either overwriting it or failing the operation, but you might want to document whichever you chose. This example fails if new file exists. */ if ( link( oldpath, newpath ) == 0 ) { if ( unlink( oldpath ) == EOF ) { /* The 1:1 mapping in _PDCLIB_config.h ensures this works. */ *_PDCLIB_errno_func() = errno; return -1; } else { return 0; } } else { /* The 1:1 mapping in _PDCLIB_config.h ensures this works. */ *_PDCLIB_errno_func() = errno; return EOF; } } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { #ifndef REGTEST FILE * file; remove( testfile1 ); remove( testfile2 ); /* check that neither file exists */ TESTCASE( fopen( testfile1, "r" ) == NULL ); TESTCASE( fopen( testfile2, "r" ) == NULL ); /* rename file 1 to file 2 - expected to fail */ TESTCASE( _PDCLIB_rename( testfile1, testfile2 ) == -1 ); /* create file 1 */ TESTCASE( ( file = fopen( testfile1, "w" ) ) != NULL ); TESTCASE( fputc( 'x', file ) == 'x' ); TESTCASE( fclose( file ) == 0 ); /* check that file 1 exists */ TESTCASE( ( file = fopen( testfile1, "r" ) ) != NULL ); TESTCASE( fclose( file ) == 0 ); /* rename file 1 to file 2 */ TESTCASE( _PDCLIB_rename( testfile1, testfile2 ) == 0 ); /* check that file 2 exists, file 1 does not */ TESTCASE( fopen( testfile1, "r" ) == NULL ); TESTCASE( ( file = fopen( testfile2, "r" ) ) != NULL ); TESTCASE( fclose( file ) == 0 ); /* create another file 1 */ TESTCASE( ( file = fopen( testfile1, "w" ) ) != NULL ); TESTCASE( fputc( 'x', file ) == 'x' ); TESTCASE( fclose( file ) == 0 ); /* check that file 1 exists */ TESTCASE( ( file = fopen( testfile1, "r" ) ) != NULL ); TESTCASE( fclose( file ) == 0 ); /* rename file 1 to file 2 - expected to fail, see comment in _PDCLIB_rename() itself. */ TESTCASE( _PDCLIB_rename( testfile1, testfile2 ) == -1 ); /* remove both files */ remove( testfile1 ); remove( testfile2 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_open.c0000644000175000001440000001145514676735310030113 0ustar mhxusers/* _PDCLIB_open( const char * const, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example implementation of _PDCLIB_open() fit for use with POSIX kernels. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #include "pdclib/_PDCLIB_defguard.h" #include "sys/stat.h" #include "sys/types.h" #include "fcntl.h" #include "unistd.h" #include "/usr/include/errno.h" _PDCLIB_fd_t _PDCLIB_open( const char * const filename, unsigned int mode ) { /* This is an example implementation of _PDCLIB_open() fit for use with POSIX kernels. */ int osmode; _PDCLIB_fd_t rc; switch ( mode & ( _PDCLIB_FREAD | _PDCLIB_FWRITE | _PDCLIB_FAPPEND | _PDCLIB_FRW ) ) { case _PDCLIB_FREAD: /* "r" */ osmode = O_RDONLY; break; case _PDCLIB_FWRITE: /* "w" */ osmode = O_WRONLY | O_CREAT | O_TRUNC; break; case _PDCLIB_FAPPEND: /* "a" */ osmode = O_WRONLY | O_APPEND | O_CREAT; break; case _PDCLIB_FREAD | _PDCLIB_FRW: /* "r+" */ osmode = O_RDWR; break; case _PDCLIB_FWRITE | _PDCLIB_FRW: /* "w+" */ osmode = O_RDWR | O_CREAT | O_TRUNC; break; case _PDCLIB_FAPPEND | _PDCLIB_FRW: /* "a+" */ osmode = O_RDWR | O_APPEND | O_CREAT; break; default: /* Invalid mode */ return _PDCLIB_NOHANDLE; } if ( osmode & O_CREAT ) { rc = open( filename, osmode, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH ); } else { rc = open( filename, osmode ); } if ( rc == _PDCLIB_NOHANDLE ) { /* The 1:1 mapping in _PDCLIB_config.h ensures this works. */ *_PDCLIB_errno_func() = errno; } return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include #include int main( void ) { #ifndef REGTEST /* This testdriver assumes POSIX, i.e. _PDCLIB_fd_t being int and being incremented by one on each successful open. */ _PDCLIB_fd_t fh; char buffer[ 10 ]; remove( testfile ); /* Trying to read non-existent file. */ TESTCASE( _PDCLIB_open( testfile, _PDCLIB_FREAD ) == _PDCLIB_NOHANDLE ); /* Writing to file, trying to read from it. */ TESTCASE( ( fh = _PDCLIB_open( testfile, _PDCLIB_FWRITE ) ) != _PDCLIB_NOHANDLE ); puts( strerror( errno ) ); TESTCASE( write( fh, "test", 4 ) == 4 ); TESTCASE( lseek( fh, 0, SEEK_SET ) == 0 ); TESTCASE( read( fh, buffer, 4 ) == -1 ); TESTCASE( _PDCLIB_close( fh ) == 0 ); /* Reading from file, trying to write to it. */ TESTCASE( ( fh = _PDCLIB_open( testfile, _PDCLIB_FREAD ) ) != _PDCLIB_NOHANDLE ); TESTCASE( write( fh, "test", 4 ) == -1 ); TESTCASE( _PDCLIB_close( fh ) == 0 ); /* Appending to file, trying to read from it. */ TESTCASE( ( fh = _PDCLIB_open( testfile, _PDCLIB_FAPPEND ) ) != _PDCLIB_NOHANDLE ); TESTCASE( write( fh, "app", 3 ) == 3 ); TESTCASE( lseek( fh, 0, SEEK_SET ) == 0 ); TESTCASE( read( fh, buffer, 10 ) == -1 ); TESTCASE( write( fh, "end", 3 ) == 3 ); TESTCASE( _PDCLIB_close( fh ) == 0 ); /* Reading and writing from file ("r+"). */ TESTCASE( ( fh = _PDCLIB_open( testfile, _PDCLIB_FREAD | _PDCLIB_FRW ) ) != _PDCLIB_NOHANDLE ); TESTCASE( read( fh, buffer, 10 ) == 10 ); TESTCASE( memcmp( buffer, "testappend", 10 ) == 0 ); TESTCASE( lseek( fh, 0, SEEK_SET ) == 0 ); TESTCASE( write( fh, "wedo", 4 ) == 4 ); TESTCASE( lseek( fh, 0, SEEK_SET ) == 0 ); TESTCASE( read( fh, buffer, 10 ) == 10 ); TESTCASE( memcmp( buffer, "wedoappend", 10 ) == 0 ); TESTCASE( _PDCLIB_close( fh ) == 0 ); /* Writing and reading from file ("w+"). */ TESTCASE( ( fh = _PDCLIB_open( testfile, _PDCLIB_FWRITE | _PDCLIB_FRW ) ) != _PDCLIB_NOHANDLE ); TESTCASE( write( fh, "test", 4 ) == 4 ); TESTCASE( lseek( fh, 1, SEEK_SET ) == 1 ); TESTCASE( read( fh, buffer, 2 ) == 2 ); TESTCASE( memcmp( buffer, "es", 2 ) == 0 ); TESTCASE( write( fh, "sie", 3 ) == 3 ); TESTCASE( lseek( fh, 0, SEEK_SET ) == 0 ); TESTCASE( read( fh, buffer, 6 ) == 6 ); TESTCASE( memcmp( buffer, "tessie", 6 ) == 0 ); TESTCASE( _PDCLIB_close( fh ) == 0 ); /* Appending and reading from file ("a+"). */ TESTCASE( ( fh = _PDCLIB_open( testfile, _PDCLIB_FAPPEND | _PDCLIB_FRW ) ) != _PDCLIB_NOHANDLE ); TESTCASE( write( fh, "baby", 4 ) == 4 ); TESTCASE( lseek( fh, 0, SEEK_SET ) == 0 ); TESTCASE( read( fh, buffer, 10 ) == 10 ); TESTCASE( memcmp( buffer, "tessiebaby", 10 ) == 0 ); TESTCASE( _PDCLIB_close( fh ) == 0 ); /* Cleaning up. */ TESTCASE( remove( testfile ) == 0 ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_close.c0000644000175000001440000000122114676735310030245 0ustar mhxusers/* _PDCLIB_close( _PDCLIB_fd_t ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example implementation of _PDCLIB_close() fit for use with POSIX kernels. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifdef __cplusplus extern "C" { #endif extern int close( int fd ); #ifdef __cplusplus } #endif int _PDCLIB_close( int fd ) { return close( fd ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* No testdriver; tested in driver for _PDCLIB_open(). */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_changemode.c0000644000175000001440000000426414676735310031244 0ustar mhxusers/* _PDCLIB_changemode( FILE * stream, int mode ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is a utility function used by freopen, to allow for a rather specific bit of trickery. ISO/IEC 9899:2011 (i.e., the ISO C standard) is ambiguous in the case of the filename argument being NULL. It states that the mode of the open stream could be _changed_ in implementation-defined circumstances. While it goes on to state that freopen will "first attempt to close any file that is associated with the specified stream", it is not quite clear if the "implementation-defined circumstances" mentioned earlier would include changing the mode without actually closing the file. IEEE Std 1003.1, 2004 Edition (POSIX) on the other hand is less ambiguous, as it states that "the file descriptor associated with the stream need not be closed if the call to freopen() succeeds" for the same case (filename being NULL). This function gets called by PDCLib's freopen() in just that case, allowing you to perform whatever mode changes YOUR implementation decides to support. Return zero if the change requested is not supported and freopen() should attempt the close-and-open-again way. Return INT_MIN if the change request is not supported and freopen() should fail. Return any other value if the requested mode change was supported and successful. */ /* This is a dummy implementation of _PDCLIB_open() not supporting any mode changes. */ #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #include #include int _PDCLIB_changemode( struct _PDCLIB_file_t * stream, unsigned int mode ) { if ( mode == 0 ) { return INT_MIN; } /* Attempt mode change without closing the stream */ if ( stream->filename == NULL ) { /* Standard stream, no filename for reopen */ return INT_MIN; } else { /* Stream with file associated, attempt reopen */ return 0; } } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* No test drivers. */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_fillbuffer.c0000644000175000001440000000276614676735310031277 0ustar mhxusers/* _PDCLIB_fillbuffer( struct _PDCLIB_file_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example implementation of _PDCLIB_fillbuffer() fit for use with POSIX kernels. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #include "/usr/include/errno.h" #ifdef __cplusplus extern "C" { #endif typedef long ssize_t; extern ssize_t read( int fd, void * buf, size_t count ); #ifdef __cplusplus } #endif int _PDCLIB_fillbuffer( struct _PDCLIB_file_t * stream ) { /* No need to handle buffers > INT_MAX, as PDCLib doesn't allow them */ ssize_t rc = read( stream->handle, stream->buffer, stream->bufsize ); if ( rc > 0 ) { /* Reading successful. */ if ( !( stream->status & _PDCLIB_FBIN ) ) { /* TODO: Text stream conversion here */ } stream->pos.offset += rc; stream->bufend = rc; stream->bufidx = 0; return 0; } if ( rc < 0 ) { /* The 1:1 mapping done in _PDCLIB_config.h ensures this works. */ *_PDCLIB_errno_func() = errno; /* Flag the stream */ stream->status |= _PDCLIB_ERRORFLAG; return EOF; } /* End-of-File */ stream->status |= _PDCLIB_EOFFLAG; return EOF; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_seek.c0000644000175000001440000000307514676735310030100 0ustar mhxusers/* int_least64_t _PDCLIB_seek( FILE *, int_least64_t, int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example implementation of _PDCLIB_seek() fit for use with POSIX kernels. */ #ifndef REGTEST #include #include #include "pdclib/_PDCLIB_glue.h" #include "/usr/include/errno.h" #ifdef __cplusplus extern "C" { #endif extern int64_t lseek64( int fd, _PDCLIB_int_least64_t offset, int whence ); extern long lseek( int fd, long offset, int whence ); #ifdef __cplusplus } #endif _PDCLIB_int_least64_t _PDCLIB_seek( struct _PDCLIB_file_t * stream, _PDCLIB_int_least64_t offset, int whence ) { _PDCLIB_int_least64_t rc; switch ( whence ) { case SEEK_SET: case SEEK_CUR: case SEEK_END: /* EMPTY - OK */ break; default: *_PDCLIB_errno_func() = _PDCLIB_EINVAL; return EOF; break; } #ifdef __CYGWIN__ rc = lseek( stream->handle, offset, whence ); #else rc = lseek64( stream->handle, offset, whence ); #endif if ( rc != EOF ) { stream->ungetidx = 0; stream->bufidx = 0; stream->bufend = 0; stream->pos.offset = rc; return rc; } /* The 1:1 mapping in _PDCLIB_config.h ensures that this works. */ *_PDCLIB_errno_func() = errno; return EOF; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_flushbuffer.c0000644000175000001440000000515414676735310031464 0ustar mhxusers/* _PDCLIB_flushbuffer( struct _PDCLIB_file_t * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example implementation of _PDCLIB_flushbuffer() fit for use with POSIX kernels. */ #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #include "/usr/include/errno.h" #ifdef __cplusplus extern "C" { #endif typedef long ssize_t; extern ssize_t write( int fd, const void * buf, size_t count ); #ifdef __cplusplus } #endif /* The number of attempts of output buffer flushing before giving up. */ #define _PDCLIB_IO_RETRIES 1 /* What the system should do after an I/O operation did not succeed, before */ /* trying again. (Empty by default.) */ #define _PDCLIB_IO_RETRY_OP( stream ) int _PDCLIB_flushbuffer( struct _PDCLIB_file_t * stream ) { /* No need to handle buffers > INT_MAX, as PDCLib doesn't allow them */ _PDCLIB_size_t written = 0; int rc; unsigned int retries; if ( !( stream->status & _PDCLIB_FBIN ) ) { /* TODO: Text stream conversion here */ } /* Keep trying to write data until everything is written, an error occurs, or the configured number of retries is exceeded. */ for ( retries = _PDCLIB_IO_RETRIES; retries > 0; --retries ) { rc = ( int )write( stream->handle, stream->buffer + written, stream->bufidx - written ); if ( rc < 0 ) { /* The 1:1 mapping done in _PDCLIB_config.h ensures this works. */ *_PDCLIB_errno_func() = errno; /* Flag the stream */ stream->status |= _PDCLIB_ERRORFLAG; /* Move unwritten remains to begin of buffer. */ stream->bufidx -= written; memmove( stream->buffer, stream->buffer + written, stream->bufidx ); return EOF; } written += ( _PDCLIB_size_t )rc; stream->pos.offset += rc; if ( written == stream->bufidx ) { /* Buffer written completely. */ stream->bufidx = 0; return 0; } } /* Number of retries exceeded. */ *_PDCLIB_errno_func() = _PDCLIB_EAGAIN; stream->status |= _PDCLIB_ERRORFLAG; /* Move unwritten remains to begin of buffer. */ stream->bufidx -= written; memmove( stream->buffer, stream->buffer + written, stream->bufidx ); return EOF; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_realpath.c0000644000175000001440000000114014676735310030740 0ustar mhxusers/* _PDCLIB_realpath( const char * path ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #include #ifdef __cplusplus extern "C" { #endif extern char * realpath( const char * file_name, char * resolved_name ); #ifdef __cplusplus } #endif char * _PDCLIB_realpath( const char * path ) { return realpath( path, NULL ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* No test drivers. */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_Exit.c0000644000175000001440000000132014676735310030051 0ustar mhxusers/* _PDCLIB_Exit( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example implementation of _PDCLIB_Exit() fit for use with POSIX kernels. */ #include #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifdef __cplusplus extern "C" { #endif extern void _exit( int status ) _PDCLIB_NORETURN; #ifdef __cplusplus } #endif void _PDCLIB_Exit( int status ) { _exit( status ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { #ifndef REGTEST int UNEXPECTED_RETURN = 0; _PDCLIB_Exit( 0 ); TESTCASE( UNEXPECTED_RETURN ); #endif return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_stdinit.c0000644000175000001440000007325714676735310030640 0ustar mhxusers/* _PDCLIB_stdinit This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example initialization of stdin, stdout and stderr to the integer file descriptors 0, 1, and 2, respectively. This applies for a great variety of operating systems, including POSIX compliant ones. */ #include #include #include #ifndef REGTEST #include "pdclib/_PDCLIB_tzcode.h" /* In a POSIX system, stdin / stdout / stderr are equivalent to the (int) file descriptors 0, 1, and 2 respectively. */ /* TODO: This is proof-of-concept, requires finetuning. */ static char _PDCLIB_sin_buffer[BUFSIZ]; static char _PDCLIB_sout_buffer[BUFSIZ]; static char _PDCLIB_serr_buffer[BUFSIZ]; static struct _PDCLIB_file_t _PDCLIB_serr = { 2, _PDCLIB_serr_buffer, BUFSIZ, 0, 0, { 0, 0 }, 0, { 0 }, _IONBF | _PDCLIB_FWRITE, #ifndef __STDC_NO_THREADS__ _PDCLIB_MTX_RECURSIVE_INIT, #endif NULL, NULL }; static struct _PDCLIB_file_t _PDCLIB_sout = { 1, _PDCLIB_sout_buffer, BUFSIZ, 0, 0, { 0, 0 }, 0, { 0 }, _IOLBF | _PDCLIB_FWRITE, #ifndef __STDC_NO_THREADS__ _PDCLIB_MTX_RECURSIVE_INIT, #endif NULL, &_PDCLIB_serr }; static struct _PDCLIB_file_t _PDCLIB_sin = { 0, _PDCLIB_sin_buffer, BUFSIZ, 0, 0, { 0, 0 }, 0, { 0 }, _IOLBF | _PDCLIB_FREAD, #ifndef __STDC_NO_THREADS__ _PDCLIB_MTX_RECURSIVE_INIT, #endif NULL, &_PDCLIB_sout }; struct _PDCLIB_file_t * stdin = &_PDCLIB_sin; struct _PDCLIB_file_t * stdout = &_PDCLIB_sout; struct _PDCLIB_file_t * stderr = &_PDCLIB_serr; /* FIXME: This approach is a possible attack vector. */ struct _PDCLIB_file_t * _PDCLIB_filelist = &_PDCLIB_sin; #ifndef __STDC_NO_THREADS__ _PDCLIB_mtx_t _PDCLIB_filelist_mtx = _PDCLIB_MTX_PLAIN_INIT; _PDCLIB_mtx_t _PDCLIB_time_mtx = _PDCLIB_MTX_PLAIN_INIT; #endif /* "C" locale - defaulting to ASCII-7. 1 kByte (+ 4 byte) of data. Each line: flags, lowercase, uppercase. */ static struct _PDCLIB_lc_ctype_entry_t _ctype_entries_C[ _PDCLIB_CHARSET_SIZE + 1 ] = { { /* EOF */ 0, 0, 0 }, { /* NUL */ _PDCLIB_CTYPE_CNTRL, 0x00, 0x00 }, { /* SOH */ _PDCLIB_CTYPE_CNTRL, 0x01, 0x01 }, { /* STX */ _PDCLIB_CTYPE_CNTRL, 0x02, 0x02 }, { /* ETX */ _PDCLIB_CTYPE_CNTRL, 0x03, 0x03 }, { /* EOT */ _PDCLIB_CTYPE_CNTRL, 0x04, 0x04 }, { /* ENQ */ _PDCLIB_CTYPE_CNTRL, 0x05, 0x05 }, { /* ACK */ _PDCLIB_CTYPE_CNTRL, 0x06, 0x06 }, { /* BEL */ _PDCLIB_CTYPE_CNTRL, 0x07, 0x07 }, { /* BS */ _PDCLIB_CTYPE_CNTRL, 0x08, 0x08 }, { /* HT */ _PDCLIB_CTYPE_CNTRL | _PDCLIB_CTYPE_BLANK | _PDCLIB_CTYPE_SPACE, 0x09, 0x09 }, { /* LF */ _PDCLIB_CTYPE_CNTRL | _PDCLIB_CTYPE_SPACE, 0x0A, 0x0A }, { /* VT */ _PDCLIB_CTYPE_CNTRL | _PDCLIB_CTYPE_SPACE, 0x0B, 0x0B }, { /* FF */ _PDCLIB_CTYPE_CNTRL | _PDCLIB_CTYPE_SPACE, 0x0C, 0x0C }, { /* CR */ _PDCLIB_CTYPE_CNTRL | _PDCLIB_CTYPE_SPACE, 0x0D, 0x0D }, { /* SO */ _PDCLIB_CTYPE_CNTRL, 0x0E, 0x0E }, { /* SI */ _PDCLIB_CTYPE_CNTRL, 0x0F, 0x0F }, { /* DLE */ _PDCLIB_CTYPE_CNTRL, 0x10, 0x10 }, { /* DC1 */ _PDCLIB_CTYPE_CNTRL, 0x11, 0x11 }, { /* DC2 */ _PDCLIB_CTYPE_CNTRL, 0x12, 0x12 }, { /* DC3 */ _PDCLIB_CTYPE_CNTRL, 0x13, 0x13 }, { /* DC4 */ _PDCLIB_CTYPE_CNTRL, 0x14, 0x14 }, { /* NAK */ _PDCLIB_CTYPE_CNTRL, 0x15, 0x15 }, { /* SYN */ _PDCLIB_CTYPE_CNTRL, 0x16, 0x16 }, { /* ETB */ _PDCLIB_CTYPE_CNTRL, 0x17, 0x17 }, { /* CAN */ _PDCLIB_CTYPE_CNTRL, 0x18, 0x18 }, { /* EM */ _PDCLIB_CTYPE_CNTRL, 0x19, 0x19 }, { /* SUB */ _PDCLIB_CTYPE_CNTRL, 0x1A, 0x1A }, { /* ESC */ _PDCLIB_CTYPE_CNTRL, 0x1B, 0x1B }, { /* FS */ _PDCLIB_CTYPE_CNTRL, 0x1C, 0x1C }, { /* GS */ _PDCLIB_CTYPE_CNTRL, 0x1D, 0x1D }, { /* RS */ _PDCLIB_CTYPE_CNTRL, 0x1E, 0x1E }, { /* US */ _PDCLIB_CTYPE_CNTRL, 0x1F, 0x1F }, { /* SP */ _PDCLIB_CTYPE_BLANK | _PDCLIB_CTYPE_SPACE, 0x20, 0x20 }, { /* '!' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x21, 0x21 }, { /* '"' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x22, 0x22 }, { /* '#' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x23, 0x23 }, { /* '$' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x24, 0x24 }, { /* '%' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x25, 0x25 }, { /* '&' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x26, 0x26 }, { /* ''' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x27, 0x27 }, { /* '(' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x28, 0x28 }, { /* ')' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x29, 0x29 }, { /* '*' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x2A, 0x2A }, { /* '+' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x2B, 0x2B }, { /* ',' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x2C, 0x2C }, { /* '-' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x2D, 0x2D }, { /* '.' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x2E, 0x2E }, { /* '/' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x2F, 0x2F }, { /* '0' */ _PDCLIB_CTYPE_GRAPH, 0x30, 0x30 }, { /* '1' */ _PDCLIB_CTYPE_GRAPH, 0x31, 0x31 }, { /* '2' */ _PDCLIB_CTYPE_GRAPH, 0x32, 0x32 }, { /* '3' */ _PDCLIB_CTYPE_GRAPH, 0x33, 0x33 }, { /* '4' */ _PDCLIB_CTYPE_GRAPH, 0x34, 0x34 }, { /* '5' */ _PDCLIB_CTYPE_GRAPH, 0x35, 0x35 }, { /* '6' */ _PDCLIB_CTYPE_GRAPH, 0x36, 0x36 }, { /* '7' */ _PDCLIB_CTYPE_GRAPH, 0x37, 0x37 }, { /* '8' */ _PDCLIB_CTYPE_GRAPH, 0x38, 0x38 }, { /* '9' */ _PDCLIB_CTYPE_GRAPH, 0x39, 0x39 }, { /* ':' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x3A, 0x3A }, { /* ';' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x3B, 0x3B }, { /* '<' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x3C, 0x3C }, { /* '=' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x3D, 0x3D }, { /* '>' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x3E, 0x3E }, { /* '?' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x3F, 0x3F }, { /* '@' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x40, 0x40 }, { /* 'A' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x41, 0x61 }, { /* 'B' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x42, 0x62 }, { /* 'C' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x43, 0x63 }, { /* 'D' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x44, 0x64 }, { /* 'E' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x45, 0x65 }, { /* 'F' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x46, 0x66 }, { /* 'G' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x47, 0x67 }, { /* 'H' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x48, 0x68 }, { /* 'I' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x49, 0x69 }, { /* 'J' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x4A, 0x6A }, { /* 'K' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x4B, 0x6B }, { /* 'L' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x4C, 0x6C }, { /* 'M' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x4D, 0x6D }, { /* 'N' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x4E, 0x6E }, { /* 'O' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x4F, 0x6F }, { /* 'P' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x50, 0x70 }, { /* 'Q' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x51, 0x71 }, { /* 'R' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x52, 0x72 }, { /* 'S' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x53, 0x73 }, { /* 'T' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x54, 0x74 }, { /* 'U' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x55, 0x75 }, { /* 'V' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x56, 0x76 }, { /* 'W' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x57, 0x77 }, { /* 'X' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x58, 0x78 }, { /* 'Y' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x59, 0x79 }, { /* 'Z' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_UPPER, 0x5A, 0x7A }, { /* '[' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x5B, 0x5B }, { /* '\' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x5C, 0x5C }, { /* ']' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x5D, 0x5D }, { /* '^' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x5E, 0x5E }, { /* '_' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x5F, 0x5F }, { /* '`' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x60, 0x60 }, { /* 'a' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x41, 0x61 }, { /* 'b' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x42, 0x62 }, { /* 'c' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x43, 0x63 }, { /* 'd' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x44, 0x64 }, { /* 'e' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x45, 0x65 }, { /* 'f' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x46, 0x66 }, { /* 'g' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x47, 0x67 }, { /* 'h' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x48, 0x68 }, { /* 'i' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x49, 0x69 }, { /* 'j' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x4A, 0x6A }, { /* 'k' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x4B, 0x6B }, { /* 'l' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x4C, 0x6C }, { /* 'm' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x4D, 0x6D }, { /* 'n' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x4E, 0x6E }, { /* 'o' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x4F, 0x6F }, { /* 'p' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x50, 0x70 }, { /* 'q' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x51, 0x71 }, { /* 'r' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x52, 0x72 }, { /* 's' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x53, 0x73 }, { /* 't' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x54, 0x74 }, { /* 'u' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x55, 0x75 }, { /* 'v' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x56, 0x76 }, { /* 'w' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x57, 0x77 }, { /* 'x' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x58, 0x78 }, { /* 'y' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x59, 0x79 }, { /* 'z' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_ALPHA | _PDCLIB_CTYPE_LOWER, 0x5A, 0x7A }, { /* '{' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x7B, 0x7B }, { /* '|' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x7C, 0x7C }, { /* '}' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x7D, 0x7D }, { /* '~' */ _PDCLIB_CTYPE_GRAPH | _PDCLIB_CTYPE_PUNCT, 0x7E, 0x7E }, { /* DEL */ _PDCLIB_CTYPE_CNTRL, 0x7F, 0x7F }, { 0x00, 0x80, 0x80 }, { 0x00, 0x81, 0x81 }, { 0x00, 0x82, 0x82 }, { 0x00, 0x83, 0x83 }, { 0x00, 0x84, 0x84 }, { 0x00, 0x85, 0x85 }, { 0x00, 0x86, 0x86 }, { 0x00, 0x87, 0x87 }, { 0x00, 0x88, 0x88 }, { 0x00, 0x89, 0x89 }, { 0x00, 0x8A, 0x8A }, { 0x00, 0x8B, 0x8B }, { 0x00, 0x8C, 0x8C }, { 0x00, 0x8D, 0x8D }, { 0x00, 0x8E, 0x8E }, { 0x00, 0x8F, 0x8F }, { 0x00, 0x90, 0x90 }, { 0x00, 0x91, 0x91 }, { 0x00, 0x92, 0x92 }, { 0x00, 0x93, 0x93 }, { 0x00, 0x94, 0x94 }, { 0x00, 0x95, 0x95 }, { 0x00, 0x96, 0x96 }, { 0x00, 0x97, 0x97 }, { 0x00, 0x98, 0x98 }, { 0x00, 0x99, 0x99 }, { 0x00, 0x9A, 0x9A }, { 0x00, 0x9B, 0x9B }, { 0x00, 0x9C, 0x9C }, { 0x00, 0x9D, 0x9D }, { 0x00, 0x9E, 0x9E }, { 0x00, 0x9F, 0x9F }, { 0x00, 0xA0, 0xA0 }, { 0x00, 0xA1, 0xA1 }, { 0x00, 0xA2, 0xA2 }, { 0x00, 0xA3, 0xA3 }, { 0x00, 0xA4, 0xA4 }, { 0x00, 0xA5, 0xA5 }, { 0x00, 0xA6, 0xA6 }, { 0x00, 0xA7, 0xA7 }, { 0x00, 0xA8, 0xA8 }, { 0x00, 0xA9, 0xA9 }, { 0x00, 0xAA, 0xAA }, { 0x00, 0xAB, 0xAB }, { 0x00, 0xAC, 0xAC }, { 0x00, 0xAD, 0xAD }, { 0x00, 0xAE, 0xAE }, { 0x00, 0xAF, 0xAF }, { 0x00, 0xB0, 0xB0 }, { 0x00, 0xB1, 0xB1 }, { 0x00, 0xB2, 0xB2 }, { 0x00, 0xB3, 0xB3 }, { 0x00, 0xB4, 0xB4 }, { 0x00, 0xB5, 0xB5 }, { 0x00, 0xB6, 0xB6 }, { 0x00, 0xB7, 0xB7 }, { 0x00, 0xB8, 0xB8 }, { 0x00, 0xB9, 0xB9 }, { 0x00, 0xBA, 0xBA }, { 0x00, 0xBB, 0xBB }, { 0x00, 0xBC, 0xBC }, { 0x00, 0xBD, 0xBD }, { 0x00, 0xBE, 0xBE }, { 0x00, 0xBF, 0xBF }, { 0x00, 0xC0, 0xC0 }, { 0x00, 0xC1, 0xC1 }, { 0x00, 0xC2, 0xC2 }, { 0x00, 0xC3, 0xC3 }, { 0x00, 0xC4, 0xC4 }, { 0x00, 0xC5, 0xC5 }, { 0x00, 0xC6, 0xC6 }, { 0x00, 0xC7, 0xC7 }, { 0x00, 0xC8, 0xC8 }, { 0x00, 0xC9, 0xC9 }, { 0x00, 0xCA, 0xCA }, { 0x00, 0xCB, 0xCB }, { 0x00, 0xCC, 0xCC }, { 0x00, 0xCD, 0xCD }, { 0x00, 0xCE, 0xCE }, { 0x00, 0xCF, 0xCF }, { 0x00, 0xD0, 0xD0 }, { 0x00, 0xD1, 0xD1 }, { 0x00, 0xD2, 0xD2 }, { 0x00, 0xD3, 0xD3 }, { 0x00, 0xD4, 0xD4 }, { 0x00, 0xD5, 0xD5 }, { 0x00, 0xD6, 0xD6 }, { 0x00, 0xD7, 0xD7 }, { 0x00, 0xD8, 0xD8 }, { 0x00, 0xD9, 0xD9 }, { 0x00, 0xDA, 0xDA }, { 0x00, 0xDB, 0xDB }, { 0x00, 0xDC, 0xDC }, { 0x00, 0xDD, 0xDD }, { 0x00, 0xDE, 0xDE }, { 0x00, 0xDF, 0xDF }, { 0x00, 0xE0, 0xE0 }, { 0x00, 0xE1, 0xE1 }, { 0x00, 0xE2, 0xE2 }, { 0x00, 0xE3, 0xE3 }, { 0x00, 0xE4, 0xE4 }, { 0x00, 0xE5, 0xE5 }, { 0x00, 0xE6, 0xE6 }, { 0x00, 0xE7, 0xE7 }, { 0x00, 0xE8, 0xE8 }, { 0x00, 0xE9, 0xE9 }, { 0x00, 0xEA, 0xEA }, { 0x00, 0xEB, 0xEB }, { 0x00, 0xEC, 0xEC }, { 0x00, 0xED, 0xED }, { 0x00, 0xEE, 0xEE }, { 0x00, 0xEF, 0xEF }, { 0x00, 0xF0, 0xF0 }, { 0x00, 0xF1, 0xF1 }, { 0x00, 0xF2, 0xF2 }, { 0x00, 0xF3, 0xF3 }, { 0x00, 0xF4, 0xF4 }, { 0x00, 0xF5, 0xF5 }, { 0x00, 0xF6, 0xF6 }, { 0x00, 0xF7, 0xF7 }, { 0x00, 0xF8, 0xF8 }, { 0x00, 0xF9, 0xF9 }, { 0x00, 0xFA, 0xFA }, { 0x00, 0xFB, 0xFB }, { 0x00, 0xFC, 0xFC }, { 0x00, 0xFD, 0xFD }, { 0x00, 0xFE, 0xFE }, { 0x00, 0xFF, 0xFF } }; struct _PDCLIB_lc_ctype_t _PDCLIB_lc_ctype_C = { 0, 0x30, 0x39, 0x41, 0x46, 0x61, 0x66, &_ctype_entries_C[1] }; struct _PDCLIB_lc_ctype_t * _PDCLIB_lc_ctype = &_PDCLIB_lc_ctype_C; struct _PDCLIB_lc_collate_t _PDCLIB_lc_collate_C = { 0 }; struct _PDCLIB_lc_collate_t * _PDCLIB_lc_collate = &_PDCLIB_lc_collate_C; struct lconv _PDCLIB_lconv = { /* decimal_point */ ( char * )".", /* thousands_sep */ ( char * )"", /* grouping */ ( char * )"", /* mon_decimal_point */ ( char * )"", /* mon_thousands_sep */ ( char * )"", /* mon_grouping */ ( char * )"", /* positive_sign */ ( char * )"", /* negative_sign */ ( char * )"", /* currency_symbol */ ( char * )"", /* int_curr_symbol */ ( char * )"", /* frac_digits */ CHAR_MAX, /* p_cs_precedes */ CHAR_MAX, /* n_cs_precedes */ CHAR_MAX, /* p_sep_by_space */ CHAR_MAX, /* n_sep_by_space */ CHAR_MAX, /* p_sign_posn */ CHAR_MAX, /* n_sign_posn */ CHAR_MAX, /* int_frac_digits */ CHAR_MAX, /* int_p_cs_precedes */ CHAR_MAX, /* int_n_cs_precedes */ CHAR_MAX, /* int_p_sep_by_space */ CHAR_MAX, /* int_n_sep_by_space */ CHAR_MAX, /* int_p_sign_posn */ CHAR_MAX, /* int_n_sign_posn */ CHAR_MAX }; struct _PDCLIB_lc_numeric_monetary_t _PDCLIB_lc_numeric_monetary = { &_PDCLIB_lconv, 0, /* numeric_allocated */ 0 /* monetary_allocated */ }; struct _PDCLIB_lc_messages_t _PDCLIB_lc_messages_C = { 0, /* _PDCLIB_errno_texts */ { /* unknown error */ ( char * )"unknown error", /* EPERM */ ( char * )"EPERM (Operation not permitted)", /* ENOENT */ ( char * )"ENOENT (No such file or directory)", /* ESRCH */ ( char * )"ESRCH (No such process)", /* EINTR */ ( char * )"EINTR (Interrupted function)", /* EIO */ ( char * )"EIO (I/O error)", /* ENXIO */ ( char * )"ENXIO (No such device or address)", /* E2BIG */ ( char * )"E2BIG (Argument list too long)", /* ENOEXEC */ ( char * )"ENOEXEC (Executable file format error)", /* EBADF */ ( char * )"EBADF (Bad file descriptor)", /* ECHILD */ ( char * )"ECHILD (No child processes)", /* EAGAIN */ ( char * )"EAGAIN (Resource unavailable, try again)", /* ENOMEM */ ( char * )"ENOMEM (Not enough space)", /* EACCES */ ( char * )"EACCES (Permission denied)", /* EFAULT */ ( char * )"EFAULT (Bad address)", /* unknown error */ ( char * )"unknown error", /* EBUSY */ ( char * )"EBUSY (Device or resource busy)", /* EEXIST */ ( char * )"EEXIST (File exists)", /* EXDEV */ ( char * )"EXDEV (Cross-device link)", /* ENODEV */ ( char * )"ENODEV (No such device)", /* ENOTDIR */ ( char * )"ENOTDIR (Not a directory)", /* EISDIR */ ( char * )"EISDIR (Is a directory)", /* EINVAL */ ( char * )"EINVAL (Invalid argument)", /* ENFILE */ ( char * )"ENFILE (Too many files open in system)", /* EMFILE */ ( char * )"EMFILE (File descriptor value too large)", /* ENOTTY */ ( char * )"ENOTTY (Inappropriate I/O control operation)", /* ETXTBSY */ ( char * )"ETXTBSY (Text file busy)", /* EFBIG */ ( char * )"EFBIG (File too large)", /* ENOSPC */ ( char * )"ENOSPC (No space left on device)", /* ESPIPE */ ( char * )"ESPIPE (Invalid seek)", /* EROFS */ ( char * )"EROFS (Read-only file system)", /* EMLINK */ ( char * )"EMLINK (Too many links)", /* EPIPE */ ( char * )"EPIPE (Broken pipe)", /* EDOM */ ( char * )"EDOM (Mathematics argument out of domain of function)", /* ERANGE */ ( char * )"ERANGE (Result too large)", /* EDEADLK */ ( char * )"EDEADLK (Resource deadlock would occur)", /* ENAMETOOLONG */ ( char * )"ENAMETOOLONG (Filename too long)", /* ENOLCK */ ( char * )"ENOLCK (No locks available)", /* ENOSYS */ ( char * )"ENOSYS (Function not supported)", /* ENOTEMPTY */ ( char * )"ENOTEMPTY (Directory not empty)", /* ELOOP */ ( char * )"ELOOP (Too many levels of symbolic links)", /* unknown error */ ( char * )"unknown error", /* ENOMSG */ ( char * )"ENOMSG (No message of the desired type)", /* EIDRM */ ( char * )"EIDRM (Identifier removed)", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* ENOSTR */ ( char * )"ENOSTR (Not a STREAM)", /* ENODATA */ ( char * )"ENODATA (No message is available on the STREAM head read queue)", /* ETIME */ ( char * )"ETIME (Stream ioctl() timeout)", /* ENOSR */ ( char * )"ENOSR (No STREAM resources)", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* ENOLINK */ ( char * )"ENOLINK (Link has been severed)", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* EPROTO */ ( char * )"EPROTO (Protocol error)", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* EBADMSG */ ( char * )"EBADMSG (Bad message)", /* EOVERFLOW */ ( char * )"EOVERFLOW (Value too large to be stored in data type)", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* EILSEQ */ ( char * )"EILSEQ (Illegal byte sequence)", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* ENOTSOCK */ ( char * )"ENOTSOCK (Not a socket)", /* EDESTADDRREQ */ ( char * )"EDESTADDRREQ (Destination address required)", /* EMSGSIZE */ ( char * )"EMSGSIZE (Message too large)", /* EPROTOTYPE */ ( char * )"EPROTOTYPE (Protocol wrong type for socket)", /* ENOPROTOOPT */ ( char * )"ENOPROTOOPT (Protocol not available)", /* EPROTONOSUPPORT */ ( char * )"EPROTONOSUPPORT (Protocol not supported)", /* unknown error */ ( char * )"unknown error", /* ENOTSUP */ ( char * )"ENOTSUP (Not supported)", /* unknown error */ ( char * )"unknown error", /* EAFNOSUPPORT */ ( char * )"EAFNOSUPPORT (Address family not supported)", /* EADDRINUSE */ ( char * )"EADDRINUSE (Address in use)", /* EADDRNOTAVAIL */ ( char * )"EADDRNOTAVAIL (Address not available)", /* ENETDOWN */ ( char * )"ENETDOWN (Network is down)", /* ENETUNREACH */ ( char * )"ENETUNREACH (Network unreachable)", /* ENETRESET */ ( char * )"ENETRESET (Connection aborted by network)", /* ECONNABORTED */ ( char * )"ECONNABORTED (Connection aborted)", /* ECONNRESET */ ( char * )"ECONNRESET (Connection reset)", /* ENOBUFS */ ( char * )"ENOBUFS (No buffer space available)", /* EISCONN */ ( char * )"EISCONN (Socket is connected)", /* ENOTCONN */ ( char * )"ENOTCONN (The socket is not connected)", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* ETIMEDOUT */ ( char * )"ETIMEDOUT (Connection timed out)", /* ECONNREFUSED */ ( char * )"ECONNREFUSED (Connection refused)", /* unknown error */ ( char * )"unknown error", /* EHOSTUNREACH */ ( char * )"EHOSTUNREACH (Host is unreachable)", /* EALREADY */ ( char * )"EALREADY (Connection already in progress)", /* EINPROGRESS */ ( char * )"EINPROGRESS (Operation in progress)", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* ECANCELED */ ( char * )"ECANCELED (Operation canceled)", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* unknown error */ ( char * )"unknown error", /* EOWNERDEAD */ ( char * )"EOWNERDEAD (Previous owner died)", /* ENOTRECOVERABLE */ ( char * )"ENOTRECOVERABLE (State not recoverable)", } }; struct _PDCLIB_lc_messages_t * _PDCLIB_lc_messages = &_PDCLIB_lc_messages_C; struct _PDCLIB_lc_time_t _PDCLIB_lc_time_C = { 0, /* _PDCLIB_month_name_abbr */ { ( char * )"Jan", ( char * )"Feb", ( char * )"Mar", ( char * )"Apr", ( char * )"May", ( char * )"Jun", ( char * )"Jul", ( char * )"Aug", ( char * )"Sep", ( char * )"Oct", ( char * )"Now", ( char * )"Dec" }, /* _PDCLIB_month_name_full */ { ( char * )"January", ( char * )"February", ( char * )"March", ( char * )"April", ( char * )"May", ( char * )"June", ( char * )"July", ( char * )"August", ( char * )"September", ( char * )"October", ( char * )"November", ( char * )"December" }, /* _PDCLIB_day_name_abbr */ { ( char * )"Sun", ( char * )"Mon", ( char * )"Tue", ( char * )"Wed", ( char * )"Thu", ( char * )"Fri", ( char * )"Sat" }, /* _PDCLIB_day_name_full */ { ( char * )"Sunday", ( char * )"Monday", ( char * )"Tuesday", ( char * )"Wednesday", ( char * )"Thursday", ( char * )"Friday", ( char * )"Saturday" }, /* date / time format */ ( char * )"%a %b %e %T %Y", /* 12h time format */ ( char * )"%I:%M:%S %p", /* date format */ ( char * )"%m/%d/%y", /* time format */ ( char * )"%T", /* AM / PM designation */ { ( char * )"AM", ( char * )"PM" } }; struct _PDCLIB_lc_time_t * _PDCLIB_lc_time = &_PDCLIB_lc_time_C; struct state _PDCLIB_lclmem; struct state _PDCLIB_gmtmem; /* Section 4.12.3 of X3.159-1989 requires that Except for the strftime function, these functions [asctime, ctime, gmtime, localtime] return values in one of two static objects: a broken-down time structure and an array of char. Thanks to Paul Eggert for noting this. */ struct tm _PDCLIB_tm; #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by several other testdrivers using stdin / stdout / stderr. */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_remove.c0000644000175000001440000000123114676735310030436 0ustar mhxusers/* _PDCLIB_remove( const char * ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* This is an example implementation of _PDCLIB_remove() fit for use with POSIX kernels. */ #ifndef REGTEST #include "pdclib/_PDCLIB_glue.h" #ifdef __cplusplus extern "C" { #endif extern int unlink( const char * ); #ifdef __cplusplus } #endif int _PDCLIB_remove( const char * pathname ) { return unlink( pathname ); } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by ftell.c (and several others) */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/stdio/0000755000175000001440000000000014677003524025646 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/stdio/tmpfile.c0000644000175000001440000000675114676735310027467 0ustar mhxusers/* tmpfile( void ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #ifndef __STDC_NO_THREADS__ #include extern mtx_t _PDCLIB_filelist_mtx; #endif #include "pdclib/_PDCLIB_glue.h" #include "pdclib/_PDCLIB_defguard.h" #include #include #include "sys/types.h" #include "sys/stat.h" #include "fcntl.h" #include "unistd.h" extern struct _PDCLIB_file_t * _PDCLIB_filelist; /* This is an example implementation of tmpfile() fit for use with POSIX kernels. */ struct _PDCLIB_file_t * tmpfile( void ) { FILE * rc; /* This is the chosen way to get high-quality randomness. Replace as appropriate. */ int randomsource = open( "/dev/urandom", O_RDONLY ); /* Working under the assumption that the tempfile location is canonical (absolute), and does not require going through _PDCLIB_realpath(). */ char * filename = ( char * )malloc( L_tmpnam ); _PDCLIB_fd_t fd; if ( randomsource == -1 ) { return NULL; } for ( ;; ) { /* Get a filename candidate. What constitutes a valid filename and where temporary files are usually located is platform-dependent, which is one reason why this function is located in the platform overlay. The other reason is that a *good* implementation should use high-quality randomness instead of a pseudo-random sequence to generate the filename candidate, which is *also* platform-dependent. */ unsigned int random; read( randomsource, (void *)&random, sizeof( unsigned int ) ); sprintf( filename, "/tmp/%u.tmp", random ); /* Check if file of this name exists. Note that fopen() is a very weak check, which does not take e.g. access permissions into account (file might exist but not readable). Replace with something more appropriate. */ fd = open( filename, O_CREAT | O_EXCL | O_RDWR, S_IRUSR | S_IWUSR ); if ( fd != -1 ) { /* Found a file that does not exist yet */ break; } close( fd ); } close( randomsource ); /* See fopen(), which does much of the same. */ if ( ( rc = _PDCLIB_init_file_t( NULL ) ) == NULL ) { /* initializing FILE structure failed */ close( fd ); return NULL; } rc->status |= _PDCLIB_filemode( "wb+" ) | _IOLBF | _PDCLIB_DELONCLOSE; rc->handle = fd; /* Filename (for potential freopen()) */ rc->filename = filename; /* Adding to list of open files */ _PDCLIB_LOCK( _PDCLIB_filelist_mtx ); rc->next = _PDCLIB_filelist; _PDCLIB_filelist = rc; _PDCLIB_UNLOCK( _PDCLIB_filelist_mtx ); return rc; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include int main( void ) { FILE * fh; #ifndef REGTEST char filename[ L_tmpnam ]; FILE * fhtest; #endif TESTCASE( ( fh = tmpfile() ) != NULL ); TESTCASE( fputc( 'x', fh ) == 'x' ); /* Checking that file is actually there */ TESTCASE_NOREG( strcpy( filename, fh->filename ) == filename ); TESTCASE_NOREG( ( fhtest = fopen( filename, "r" ) ) != NULL ); TESTCASE_NOREG( fclose( fhtest ) == 0 ); /* Closing tmpfile */ TESTCASE( fclose( fh ) == 0 ); /* Checking that file was deleted */ TESTCASE_NOREG( fopen( filename, "r" ) == NULL ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/signal/0000755000175000001440000000000014677003524026001 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/signal/signal.c0000644000175000001440000000343114676735310027427 0ustar mhxusers/* signal( int, void (*)( int ) ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include void ( *_PDCLIB_sigabrt )( int ) = SIG_DFL; void ( *_PDCLIB_sigfpe )( int ) = SIG_DFL; void ( *_PDCLIB_sigill )( int ) = SIG_DFL; void ( *_PDCLIB_sigint )( int ) = SIG_DFL; void ( *_PDCLIB_sigsegv )( int ) = SIG_DFL; void ( *_PDCLIB_sigterm )( int ) = SIG_DFL; void ( *signal( int sig, void ( *func )( int ) ) )( int ) { void ( *oldhandler )( int ); if ( sig <= 0 || func == SIG_ERR ) { return SIG_ERR; } switch ( sig ) { case SIGABRT: oldhandler = _PDCLIB_sigabrt; _PDCLIB_sigabrt = func; break; case SIGFPE: oldhandler = _PDCLIB_sigfpe; _PDCLIB_sigfpe = func; break; case SIGILL: oldhandler = _PDCLIB_sigill; _PDCLIB_sigill = func; break; case SIGINT: oldhandler = _PDCLIB_sigint; _PDCLIB_sigint = func; break; case SIGSEGV: oldhandler = _PDCLIB_sigsegv; _PDCLIB_sigsegv = func; break; case SIGTERM: oldhandler = _PDCLIB_sigterm; _PDCLIB_sigterm = func; break; default: /* The standard calls for an unspecified "positive value". Copying Linux' behaviour of setting EINVAL. */ *_PDCLIB_errno_func() = _PDCLIB_EINVAL; return SIG_ERR; } return oldhandler; } #endif #ifdef TEST #include "_PDCLIB_test.h" int main( void ) { /* Testing covered by raise.c */ return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/functions/signal/raise.c0000644000175000001440000000661414676735310027263 0ustar mhxusers/* raise( int ) This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #ifndef REGTEST #include #include extern void ( *_PDCLIB_sigabrt )( int ); extern void ( *_PDCLIB_sigfpe )( int ); extern void ( *_PDCLIB_sigill )( int ); extern void ( *_PDCLIB_sigint )( int ); extern void ( *_PDCLIB_sigsegv )( int ); extern void ( *_PDCLIB_sigterm )( int ); int raise( int sig ) { void ( *sighandler )( int ); const char * message; switch ( sig ) { case SIGABRT: sighandler = _PDCLIB_sigabrt; message = "Abnormal termination (SIGABRT)"; break; case SIGFPE: sighandler = _PDCLIB_sigfpe; message = "Arithmetic exception (SIGFPE)"; break; case SIGILL: sighandler = _PDCLIB_sigill; message = "Illegal instruction (SIGILL)"; break; case SIGINT: sighandler = _PDCLIB_sigint; message = "Interactive attention signal (SIGINT)"; break; case SIGSEGV: sighandler = _PDCLIB_sigsegv; message = "Invalid memory access (SIGSEGV)"; break; case SIGTERM: sighandler = _PDCLIB_sigterm; message = "Termination request (SIGTERM)"; break; default: fprintf( stderr, "Unknown signal #%d\n", sig ); _Exit( EXIT_FAILURE ); } if ( sighandler == SIG_DFL ) { fputs( message, stderr ); _Exit( EXIT_FAILURE ); } else if ( sighandler != SIG_IGN ) { /* FIXME: "The implementation shall behave as if no library function calls the signal function." */ sighandler = signal( sig, SIG_DFL ); sighandler( sig ); } return 0; } #endif #ifdef TEST #include "_PDCLIB_test.h" #include static volatile sig_atomic_t flag = 0; static int expected_signal = 0; static void test_handler( int sig ) { TESTCASE( sig == expected_signal ); flag = 1; } int main( void ) { void ( *sighandler )( int ); /* Could be other than SIG_DFL if you changed the implementation. */ sighandler = signal( SIGABRT, SIG_IGN ); #ifndef REGTEST TESTCASE( sighandler == SIG_DFL ); #endif /* Should be ignored. */ TESTCASE( raise( SIGABRT ) == 0 ); /* Installing test handler, old handler should be returned */ TESTCASE( signal( SIGABRT, test_handler ) == SIG_IGN ); /* Raising and checking SIGABRT */ expected_signal = SIGABRT; TESTCASE( raise( SIGABRT ) == 0 ); TESTCASE( flag == 1 ); /* Re-installing test handler, should have been reset to default */ /* Could be other than SIG_DFL if you changed the implementation. */ sighandler = signal( SIGABRT, test_handler ); #ifndef REGTEST TESTCASE( sighandler == SIG_DFL ); #endif /* Raising and checking SIGABRT */ flag = 0; TESTCASE( raise( SIGABRT ) == 0 ); TESTCASE( flag == 1 ); /* Installing test handler for different signal... */ TESTCASE( signal( SIGTERM, test_handler ) == SIG_DFL ); /* Raising and checking SIGTERM */ expected_signal = SIGTERM; TESTCASE( raise( SIGTERM ) == 0 ); TESTCASE( flag == 1 ); /* void expression to avoid "unused" warning in regtest */ (void)sighandler; return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/platform/example/Readme.txt0000644000175000001440000000220214676735310024452 0ustar mhxusers"Example" Platform Overlay ========================== This is an example platform overlay, as described in the main Readme.txt of this archive. For ease of development, it applies (and tests) correctly on the machine of the author; no other guarantees can be given. It should give you a good idea of what is REQUIRED to make a copy of PDCLib work. There is a lot more you could do, and even some things you SHOULD do, in order to experience anything but abysmal performance: - Read / write operations on binary streams, and even on text streams for machines that do not do any text conversion, can be made much more efficient by using some sort of page buffer instead of the linear buffer implemented here. It requires some special and platform-dependent manipulations, though, which is why it is not done by default. - Anything relating to floating point logic is written in generic C. While this is (hopefully) highly portable and should get you started on your platform of choice, it is also highly inefficient and should be replaced by inline assembly. Just make sure that your assembly keeps all the promises the C library makes. Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/0000755000175000001440000000000014677003524021244 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/0000755000175000001440000000000014677003524022555 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/Makefile0000644000175000001440000000320214676735310024216 0ustar mhxusersTARGET := get-uctypes # All source files of the project SRCFILES := $(wildcard *.c) # All header files of the project HDRFILES := $(wildcard *.h) # All object files in the project OBJFILES := $(patsubst %.c,%.o,$(SRCFILES)) # All test drivers (_t) TSTFILES := $(patsubst %.c,%_t,$(SRCFILES)) # All dependency files (.d) DEPFILES := $(patsubst %.c,%.d,$(SRCFILES)) # All test driver dependency files (_t.d) TSTDEPFILES := $(patsubst %,%.d,$(TSTFILES)) # All test driver dependency files (_t.d) WARNINGS := -Wall -Wextra -pedantic -Wno-unused-parameter -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wuninitialized -Wstrict-prototypes -Wdeclaration-after-statement CFLAGS := -g -std=c99 $(WARNINGS) $(USERFLAGS) -I. .PHONY: all clean tests all: $(TARGET) $(TARGET): $(OBJFILES) @echo " CC $@" @$(CC) $^ -o $@ @echo tests: testdrivers -@rc=0; count=0; failed=""; for file in $(TSTFILES); do echo " TST $$file"; ./$$file; test=$$?; if [ $$test != 0 ]; then rc=`expr $$rc + $$test`; failed="$$failed $$file"; fi; count=`expr $$count + 1`; done; echo; echo "Tests executed: $$count Tests failed: $$rc"; echo; for file in $$failed; do echo "Failed: $$file"; done; echo testdrivers: $(TSTFILES) @echo -include $(DEPFILES) $(TSTDEPFILES) clean: -@$(RM) $(wildcard $(OBJFILES) $(DEPFILES) $(TSTFILES) $(TSTDEPFILES) $(TARGET) aux.a) %.o: %.c Makefile @echo " CC $@" @$(CC) $(CFLAGS) -MMD -MP -c $< -o $@ %_t: %.c Makefile aux.a @echo " CC $@" @$(CC) $(CFLAGS) -MMD -MP -DTEST $< aux.a -o $@ aux.a: $(OBJFILES) @ar rc $@ $^ Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/text_utilities.h0000644000175000001440000000513714676735310026017 0ustar mhxusers/* text utilities This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef TEXT_UTILITIES_H #define TEXT_UTILITIES_H TEXT_UTILITIES_H #include #include /* Trim leading and trailing whitespace from a given string. Will return a pointer beyond leading whitespace, and overwrite trailing whitespace with null bytes. */ char * trim( char * s ); /* A function similar to strtok(), that returns the next token in a string, up to the next separator character (which is replaced with a null byte) or up to end-of-string. As opposed to strtok(), which treats consecutive separators as one, this function will work "correctly" for those as well, returning a (pointer to an) empty string in those cases. Pass the string as first parameter IN THE FIRST CALL ONLY, and NULL in subsequent calls. The function holds an internal, static pointer to the string being processed. This, of course, means the function is not thread- safe. */ char * next_token( char * s, char delim ); /* When processing a file with delimited-values, there are a couple of things you want to be sure about before parsing it: - the number of lines (data records) in the file; - that all lines of the file will fit the intended line buffer size; - that all records in the file indeed have the expected number of fields; - that none of the fields for which you are assuming a given size exceeds that size. (For line buffer size, consider that the buffer must be large enough for the line contents, the newline (to check that the line was actually read in full), and the null terminator.) This function does all that for you in a single pass. The parameters are: - FILE handle to the file (function will rewind the file before checking, and rewind again when it is done); - the intended line buffer size; - the field delimiter; - the expected number of fields; - a pointer to an array holding the expected maximum width for each field, with a negative value indicating that this field's width need not be checked. The function will return the number of lines in the file, or (size_t)-1 if one of the checks failed. The reason for the failed check will be written to stderr. (The file will not be rewound in this case.) This requires reading and tokenizing the file twice, but removes lots of error checking from the actual parsing, making for cleaner code. */ size_t check_file( FILE * fh, size_t max_line_length, char delim, size_t fields, int const * widths ); #endif Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/unicode_data.c0000644000175000001440000001722314676735310025351 0ustar mhxusers/* unicode data This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #include "text_utilities.h" #include "unicode_data.h" #define LINE_BUFFER_SIZE 500u struct unicode_data_t * read_unicode_data( const char * filename ) { FILE * fh; char buffer[ LINE_BUFFER_SIZE ]; struct unicode_data_t * ud = NULL; size_t lines; if ( ( fh = fopen( filename, "r" ) ) == NULL ) { fprintf( stderr, "Could not open '%s' for reading.\n", filename ); return NULL; } if ( ( lines = check_file( fh, LINE_BUFFER_SIZE, ';', sizeof( unicode_record_fields ) / sizeof( int ), unicode_record_fields ) ) != ( size_t )-1 ) { if ( ( ud = malloc( sizeof( struct unicode_data_t ) ) ) ) { ud->size = lines; if ( ( ud->records = calloc( lines, sizeof( struct unicode_record_t ) ) ) ) { size_t i; for ( i = 0; i < lines; ++i ) { char * p; fgets( buffer, LINE_BUFFER_SIZE, fh ); ud->records[ i ].code_point = strtoul( next_token( buffer, ';' ), NULL, 16 ); p = next_token( NULL, ';' ); if ( *p ) { ud->records[ i ].name = malloc( strlen( p ) + 1 ); strcpy( ud->records[ i ].name, p ); } strcpy( ud->records[ i ].general_category, next_token( NULL, ';' ) ); p = next_token( NULL, ';' ); ud->records[ i ].canonical_combining_class = ( *p ) ? strtol( p, NULL, 10 ) : -1l; strcpy( ud->records[ i ].bidi_class, next_token( NULL, ';' ) ); p = next_token( NULL, ';' ); if ( *p ) { ud->records[ i ].decomposition = malloc( strlen( p ) + 1 ); strcpy( ud->records[ i ].decomposition, p ); } p = next_token( NULL, ';' ); ud->records[ i ].numeric_type = ( *p ) ? strtol( p, NULL, 10 ) : -1l; p = next_token( NULL, ';' ); ud->records[ i ].numeric_digit = ( *p ) ? strtol( p, NULL, 10 ) : -1l; p = next_token( NULL, ';' ); if ( *p ) { ud->records[ i ].numeric_value = malloc( strlen( p ) + 1 ); strcpy( ud->records[ i ].numeric_value, p ); } p = next_token( NULL, ';' ); ud->records[ i ].bidi_mirrored = ( *p ) ? *p : '\0'; next_token( NULL, ';' ); /* Unicode_1_Name */ next_token( NULL, ';' ); /* ISO_Comment */ ud->records[ i ].simple_uppercase_mapping = strtoul( next_token( NULL, ';' ), NULL, 16 ); ud->records[ i ].simple_lowercase_mapping = strtoul( next_token( NULL, ';' ), NULL, 16 ); ud->records[ i ].simple_titlecase_mapping = strtoul( next_token( NULL, ';' ), NULL, 16 ); } } else { fprintf( stderr, "Memory allocation failure.\n" ); free( ud ); ud = NULL; } } else { fprintf( stderr, "Memory allocation failure.\n" ); } } fclose( fh ); return ud; } int has_name( struct unicode_record_t * ur, const char * name ) { return strcmp( ur->name, name ) == 0; } int name_ends_with( struct unicode_record_t * ur, const char * name ) { return strstr( ur->name, name ) == ( ur->name + ( strlen( ur->name ) - strlen( name ) ) ); } int is_general_category( struct unicode_record_t * ur, const char * category ) { return strcmp( ur->general_category, category ) == 0; } int decomposition_contains( struct unicode_record_t * ur, const char * substring ) { return ur->decomposition && strstr( ur->decomposition, substring ) != NULL; } int towupper_differs( struct unicode_record_t * ur, size_t codepoint ) { return ur->simple_uppercase_mapping && ( ur->simple_uppercase_mapping != codepoint ); } int towlower_differs( struct unicode_record_t * ur, size_t codepoint ) { return ur->simple_lowercase_mapping && ( ur->simple_lowercase_mapping != codepoint ); } void release_unicode_data( struct unicode_data_t * ud ) { size_t i; for ( i = 0; i < ud->size; ++i ) { free( ud->records[i].name ); free( ud->records[i].decomposition ); free( ud->records[i].numeric_value ); } free( ud->records ); free( ud ); } #ifdef TEST #include "test.h" #include int main( void ) { FILE * fh = fopen( "test.txt", "w" ); struct unicode_data_t * ud; int rc; TESTCASE( fh != NULL ); TESTCASE( fprintf( fh, "%04x;%s;%s;%d;%s;;;;;%c;%s;;;;\n", 0, "", "Cc", 0, "BN", 'N', "NULL" ) == 38 ); TESTCASE( ( rc = fprintf( fh, "%04x;%s;%s;%d;%s;%s;;;%s;%c;;;%04x;;%04x\n", 0x2170, "SMALL ROMAN NUMERAL ONE", "Nl", 0, "L", " 0069", "1", 'N', 0x2160, 0x2160 ) ) == 69 ); fclose( fh ); ud = read_unicode_data( "test.txt" ); remove( "test.txt" ); TESTCASE( ud != NULL ); TESTCASE( ud->size == 2 ); TESTCASE( ud->records[0].code_point == 0 ); TESTCASE( strcmp( ud->records[0].name, "" ) == 0 ); TESTCASE( strcmp( ud->records[0].general_category, "Cc" ) == 0 ); TESTCASE( ud->records[0].canonical_combining_class == 0 ); TESTCASE( strcmp( ud->records[0].bidi_class, "BN" ) == 0 ); TESTCASE( ud->records[0].decomposition == NULL ); TESTCASE( ud->records[0].numeric_type == -1 ); TESTCASE( ud->records[0].numeric_digit == -1 ); TESTCASE( ud->records[0].numeric_value == NULL ); TESTCASE( ud->records[0].bidi_mirrored == 'N' ); TESTCASE( ud->records[0].simple_uppercase_mapping == 0 ); TESTCASE( ud->records[0].simple_lowercase_mapping == 0 ); TESTCASE( ud->records[0].simple_titlecase_mapping == 0 ); TESTCASE( ud->records[1].code_point == 0x2170 ); TESTCASE( strcmp( ud->records[1].name, "SMALL ROMAN NUMERAL ONE" ) == 0 ); TESTCASE( strcmp( ud->records[1].general_category, "Nl" ) == 0 ); TESTCASE( ud->records[1].canonical_combining_class == 0 ); TESTCASE( strcmp( ud->records[1].bidi_class, "L" ) == 0 ); TESTCASE( strcmp( ud->records[1].decomposition, " 0069" ) == 0 ); TESTCASE( ud->records[1].numeric_type == -1 ); TESTCASE( ud->records[1].numeric_digit == -1 ); TESTCASE( strcmp( ud->records[1].numeric_value, "1" ) == 0 ); TESTCASE( ud->records[1].bidi_mirrored == 'N' ); TESTCASE( ud->records[1].simple_uppercase_mapping == 0x2160 ); TESTCASE( ud->records[1].simple_lowercase_mapping == 0 ); TESTCASE( ud->records[1].simple_titlecase_mapping == 0x2160 ); TESTCASE( is_general_category( &( ud->records[0] ), "Cc" ) ); TESTCASE( ! is_general_category( &( ud->records[0] ), "" ) ); TESTCASE( is_general_category( &( ud->records[1] ), "Nl" ) ); TESTCASE( ! is_general_category( &( ud->records[1] ), "Foo" ) ); TESTCASE( decomposition_contains( &( ud->records[1] ), "" ) ); TESTCASE( ! decomposition_contains( &( ud->records[1] ), "Foo" ) ); TESTCASE( ! towupper_differs( &( ud->records[0] ), 0 ) ); TESTCASE( ! towlower_differs( &( ud->records[0] ), 0 ) ); TESTCASE( towupper_differs( &( ud->records[1] ), 0x2170 ) ); TESTCASE( ! towlower_differs( &( ud->records[1] ), 0x2170 ) ); release_unicode_data( ud ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/uctype.c0000644000175000001440000000563714676735310024251 0ustar mhxusers/* uctype This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include "uctype.h" size_t get_towupper( size_t codepoint, struct unicode_record_t * ur ) { return towupper_differs( ur, codepoint ) ? ur->simple_uppercase_mapping : codepoint; } size_t get_towlower( size_t codepoint, struct unicode_record_t * ur ) { return towlower_differs( ur, codepoint ) ? ur->simple_lowercase_mapping : codepoint; } size_t get_iswupper( size_t codepoint, struct unicode_record_t * ur, struct derived_properties_t * core ) { return towlower_differs( ur, codepoint ) || lookup_property( core, "Uppercase", codepoint ); } size_t get_iswlower( size_t codepoint, struct unicode_record_t * ur, struct derived_properties_t * core ) { return towupper_differs( ur, codepoint ) || lookup_property( core, "Lowercase", codepoint ); } size_t get_iswalpha( size_t codepoint, struct unicode_record_t * ur, struct derived_properties_t * core ) { return lookup_property( core, "Alphabetic", codepoint ) || ( is_general_category( ur, "Nd" ) && ! get_iswdigit( codepoint ) ); } size_t get_iswdigit( size_t codepoint ) { return codepoint >= 0x0030 && codepoint <= 0x0039; } size_t get_iswxdigit( size_t codepoint ) { return get_iswdigit( codepoint ) || ( codepoint >= 0x0041 && codepoint <= 0x0046 ) || ( codepoint >= 0x0061 && codepoint <= 0x0066 ); } size_t get_iswblank( size_t codepoint, struct unicode_record_t * ur ) { return ( codepoint == 0x0009 ) || ( is_general_category( ur, "Zs" ) && ! decomposition_contains( ur, "" ) ); } size_t get_iswspace( size_t codepoint, struct unicode_record_t * ur ) { return is_general_category( ur, "Zl" ) || is_general_category( ur, "Zp" ) || ( is_general_category( ur, "Zs" ) && ! decomposition_contains( ur, "" ) ) || ( codepoint == 0x0020 ) || ( codepoint >= 0x0009 && codepoint <= 0x000D ); } size_t get_iswcntrl( size_t codepoint, struct unicode_record_t * ur ) { return is_general_category( ur, "Zl" ) || is_general_category( ur, "Zp" ) || has_name( ur, "" ); } size_t get_iswgraph( size_t codepoint, struct unicode_record_t * ur ) { return ! is_general_category( ur, "Cs" ) && ! has_name( ur, "" ) && ! get_iswspace( codepoint, ur ); } size_t get_iswprint( size_t codepoint, struct unicode_record_t * ur ) { return ! is_general_category( ur, "Zp" ) && ! is_general_category( ur, "Zl" ) && ! is_general_category( ur, "Cs" ) && ! has_name( ur, "" ); } size_t get_iswpunct( size_t codepoint, struct unicode_record_t * ur, struct derived_properties_t * core ) { return ! get_iswalpha( codepoint, ur, core ) && ! get_iswdigit( codepoint ) && ( ! has_name( ur, "" ) && ! get_iswspace( codepoint, ur ) ) && ! is_general_category( ur, "Cs" ); } #ifdef TEST #include "test.h" int main( void ) { TESTCASE( NO_TESTDRIVER ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/derived_properties.h0000644000175000001440000000151414676735310026631 0ustar mhxusers/* derived properties This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef DERIVED_PROPERTIES #define DERIVED_PROPERTIES DERIVED_PROPERTIES #include /* https://www.unicode.org/reports/tr44/#DerivedCoreProperties.txt */ struct derived_properties_t { size_t count; char ** name; size_t * begin; size_t * end; size_t * code_points; }; static const int derived_properties_fields[] = { -1, /* code point or code point range */ -1 /* property name */ }; struct derived_properties_t * read_derived_properties( const char * filename ); int lookup_property( struct derived_properties_t * dp, const char * property, size_t codepoint ); void release_derived_properties( struct derived_properties_t * dp ); #endif Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/derived_properties.c0000644000175000001440000002447714676735310026641 0ustar mhxusers/* derived properties This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #include #include "text_utilities.h" #include "derived_properties.h" #define LINE_BUFFER_SIZE 500u struct derived_properties_t * read_derived_properties( const char * filename ) { FILE * fh; char buffer[ LINE_BUFFER_SIZE ]; struct derived_properties_t * dp = NULL; size_t code_points = 0; size_t properties = 0; const char * code_point_count = "# Total code points: "; if ( ( fh = fopen( filename, "r" ) ) == NULL ) { fprintf( stderr, "Could not open '%s' for reading.\n", filename ); return NULL; } if ( ( check_file( fh, LINE_BUFFER_SIZE, ';', sizeof( derived_properties_fields ) / sizeof( int ), derived_properties_fields ) ) != ( size_t )-1 ) { while ( fgets( buffer, LINE_BUFFER_SIZE, fh ) ) { if ( strstr( buffer, code_point_count ) != NULL ) { size_t count = strtoul( buffer + strlen( code_point_count ), NULL, 10 ); if ( ( SIZE_MAX - count ) < code_points ) { fprintf( stderr, "Summing up total code points in '%s' would overflow.\n", filename ); fclose( fh ); return NULL; } code_points += count; ++properties; } } rewind( fh ); if ( ( dp = malloc( sizeof( struct derived_properties_t ) ) ) ) { dp->count = properties; if ( ( dp->name = calloc( properties, sizeof( char * ) ) ) ) { if ( ( dp->begin = calloc( properties, sizeof( size_t ) ) ) ) { if ( ( dp->end = calloc( properties, sizeof( size_t ) ) ) ) { if ( ( dp->code_points = malloc( code_points * sizeof( size_t ) ) ) ) { char * p; char * range; properties = 0; /* Re-using the variable */ code_points = 0; /* Re-using the variable */ while ( fgets( buffer, LINE_BUFFER_SIZE, fh ) ) { /* Remove comments */ if ( ( p = strchr( buffer, '#' ) ) != NULL ) { *p = '\0'; } /* > 0 because of newline */ if ( strlen( buffer ) > 1 ) { size_t first; size_t last; range = next_token( buffer, ';' ); p = next_token( NULL, ';' ); if ( ! range || ! p ) { size_t i; fprintf( stderr, "Parse error, malformed input.\n" ); for ( i = 0; i < properties; ++i ) { free( dp->name[ i ] ); } free( dp->name ); free( dp->begin ); free( dp->end ); free( dp->code_points ); free( dp ); return NULL; } /* If we got to a new property (except the first) */ if ( dp->name[ properties ] && strcmp( p, dp->name[ properties ] ) ) { /* Index into ->code_points where the previous property ends */ dp->end[ properties ] = code_points; ++properties; } /* If we got to a new property, even the first */ if ( dp->name[ properties ] == NULL ) { dp->name[ properties ] = malloc( strlen( p ) + 1 ); strcpy( dp->name[ properties ], p ); /* Index into ->code_points where this property begins */ dp->begin[ properties ] = code_points; } /* Re-using p, as we have done everything related to the property name at this point. */ first = strtoul( range, &p, 16 ); if ( *p == '\0' ) { last = first; } else { while ( *p && ! isxdigit( *p ) ) { ++p; } last = strtoul( p, NULL, 16 ); if ( last <= first ) { size_t i; fprintf( stderr, "Parse error, malformed input.\n" ); for ( i = 0; i < properties; ++i ) { free( dp->name[ i ] ); } free( dp->name ); free( dp->begin ); free( dp->end ); free( dp->code_points ); free( dp ); return NULL; } } for ( ; first <= last; ++first ) { dp->code_points[ code_points++ ] = first; } } } /* Have to end the last property as well */ dp->end[ properties ] = code_points; } else { fprintf( stderr, "Memory allocation failure.\n" ); free( dp->name ); free( dp->begin ); free( dp->end ); free( dp ); dp = NULL; } } else { fprintf( stderr, "Memory allocation failure.\n" ); free( dp->name ); free( dp->begin ); free( dp ); dp = NULL; } } else { fprintf( stderr, "Memory allocation failure.\n" ); free( dp->name ); free( dp ); dp = NULL; } } else { fprintf( stderr, "Memory allocation failure.\n" ); free( dp ); dp = NULL; } } else { fprintf( stderr, "Memory allocation failure.\n" ); } } fclose( fh ); return dp; } static int comp( const void * l, const void * r ) { const size_t * lhs = l; const size_t * rhs = r; return ( *lhs < *rhs ) ? -1 : ( *lhs > *rhs ) ? 1 : 0; } int lookup_property( struct derived_properties_t * dp, const char * property, size_t codepoint ) { size_t i; for ( i = 0; i < dp->count; ++i ) { /* Look for the requested property */ if ( strcmp( dp->name[ i ], property ) == 0 ) { size_t cp = dp->begin[ i ]; return bsearch( &codepoint, dp->code_points + cp, dp->end[ i ] - cp, sizeof( size_t ), comp ) != NULL; } } return 0; } void release_derived_properties( struct derived_properties_t * dp ) { size_t i; for ( i = 0; i < dp->count; ++i ) { free( dp->name[ i ] ); } free( dp->name ); free( dp->begin ); free( dp->end ); free( dp->code_points ); free( dp ); } #ifdef TEST #include "test.h" int main( void ) { FILE * fh = fopen( "test.txt", "wb+" ); struct derived_properties_t * dp; TESTCASE( fh != NULL ); TESTCASE( fprintf( fh, "0000..0006 ; Test1 \n" ) == 20 ); TESTCASE( fprintf( fh, "# Total code points: 7\n" ) == 23 ); TESTCASE( fprintf( fh, "0001;Test2\n" ) == 11 ); TESTCASE( fprintf( fh, "# Total code points: 1\n" ) == 23 ); fclose( fh ); dp = read_derived_properties( "test.txt" ); TESTCASE( dp != NULL ); TESTCASE( dp->count == 2 ); TESTCASE( ! strcmp( dp->name[0], "Test1" ) ); TESTCASE( ! strcmp( dp->name[1], "Test2" ) ); TESTCASE( lookup_property( dp, "Test1", 0 ) ); TESTCASE( lookup_property( dp, "Test1", 6 ) ); TESTCASE( ! lookup_property( dp, "Test1", 7 ) ); TESTCASE( ! lookup_property( dp, "Test2", 0 ) ); TESTCASE( lookup_property( dp, "Test2", 1 ) ); TESTCASE( ! lookup_property( dp, "Test2", 2 ) ); TESTCASE( ! lookup_property( dp, "Test", 0 ) ); TESTCASE( ! lookup_property( dp, "Test3", 0 ) ); release_derived_properties( dp ); remove( "test.txt" ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/test.h0000644000175000001440000000076614676735310023722 0ustar mhxusers/* test This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef TEST_H #define TEST_H TEST_H #include #ifndef NO_TESTDRIVER #define NO_TESTDRIVER 0 #endif static int TEST_RESULTS = 0; #define TESTCASE( x ) \ if ( x ) \ { \ /* EMPTY */ \ } \ else \ { \ TEST_RESULTS += 1; \ printf( "FAILED: " __FILE__ ", line %d - %s\n", __LINE__, #x ); \ } #endif Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/main.c0000644000175000001440000002634414676735310023662 0ustar mhxusers/* main This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include #include #include #include #ifdef TEST #include #endif #include "uctype.h" /* RLE Compressed Output requires *11* flags: iswupper, iswlower, iswalpha, iswdigit, iswblank, iswspace, iswcntrl, iswxdigit, iswgraph, iswprint. iswalnum (the 12th classification function) is *defined* as iswalpha || iswdigit. And iswdigit and iswxdigit are defined in a rather restrictive way that can be expressed by simple ranges instead of lookup tables. And isgraph is defined as isprint && ! isspace (which is trivial to check that it holds true for all the records provided by get-unicode-ctype, at least up to Unicode 11.0). So we have only 8 flags we actually need in a lookup... nicely reducing the storage requirement to an unsigned char. Another trick is to express toupper / tolower as offsets instead of absolute values, which will allow run-time-length compression of the data. */ struct output_record_t { size_t codepoint; int toupper_diff; int tolower_diff; unsigned char flags; }; #ifdef TEST static void print_codepoint_age( size_t codepoint, struct derived_properties_t * age ) { size_t index = age->count; while ( index ) { --index; if ( lookup_property( age, age->name[ index ], codepoint ) ) { printf( "%s", age->name[ index ] ); return; } } } static void print_additional_codepoint_info( size_t codepoint, struct unicode_record_t * ur ) { printf( " - %s", ur->name ); printf( " - %s", ur->general_category ); printf( " - %d", ur->canonical_combining_class ); printf( " - %s", ur->bidi_class ); printf( " - %s", ( ur->decomposition ? ur->decomposition : "NULL" ) ); printf( " - %d", ur->numeric_type ); printf( " - %d", ur->numeric_digit ); printf( " - %s", ( ur->numeric_value ? ur->numeric_value : "NULL" ) ); printf( " - %c", ur->bidi_mirrored ); printf( " - U+%06zx", ur->simple_uppercase_mapping ); printf( " - U+%06zx", ur->simple_lowercase_mapping ); printf( " - U+%06zx", ur->simple_titlecase_mapping ); printf( " - " ); /* Implementations are at liberty to return non-zero values other than 1 for "true". */ printf( "%d", ( iswupper( codepoint ) ) ? 1 : 0 ); printf( "%d", ( iswlower( codepoint ) ) ? 1 : 0 ); printf( "%d", ( iswalpha( codepoint ) ) ? 1 : 0 ); printf( "%d", ( iswdigit( codepoint ) ) ? 1 : 0 ); printf( "%d", ( iswblank( codepoint ) ) ? 1 : 0 ); printf( "%d", ( iswspace( codepoint ) ) ? 1 : 0 ); printf( "%d", ( iswcntrl( codepoint ) ) ? 1 : 0 ); printf( "%d", ( iswxdigit( codepoint ) ) ? 1 : 0 ); printf( "%d", ( iswgraph( codepoint ) ) ? 1 : 0 ); printf( "%d", ( iswprint( codepoint ) ) ? 1 : 0 ); printf( "%d", ( iswpunct( codepoint ) ) ? 1 : 0 ); } static void print_codepoint_info( size_t codepoint, struct unicode_record_t * ur, struct derived_properties_t * core, struct derived_properties_t * age ) { int rc; int equal = 1; if ( codepoint % 20 == 0 ) { printf( " cp up low UlA0_WCXGP.\n" ); } printf( "U+%06zX ", codepoint ); rc = get_towupper( codepoint, ur ); equal &= ( ( unsigned )rc == towupper( codepoint ) ); printf( "U+%06X ", rc ); rc = get_towlower( codepoint, ur ); equal &= ( ( unsigned )rc == towlower( codepoint ) ); printf( "U+%06X ", rc ); rc = get_iswupper( codepoint, ur, core ); equal &= ( iswupper( codepoint ) ? 1 : 0 == rc ); printf( "%d", rc ? 1 : 0 ); rc = get_iswlower( codepoint, ur, core ); equal &= ( iswlower( codepoint ) ? 1 : 0 == rc ); printf( "%d", rc ? 1 : 0 ); rc = get_iswalpha( codepoint, ur, core ); equal &= ( iswalpha( codepoint ) ? 1 : 0 == rc ); printf( "%d", rc ? 1 : 0 ); rc = get_iswdigit( codepoint ); equal &= ( iswdigit( codepoint ) ? 1 : 0 == rc ); printf( "%d", rc ? 1 : 0 ); rc = get_iswblank( codepoint, ur ); equal &= ( iswblank( codepoint ) ? 1 : 0 == rc ); printf( "%d", rc ? 1 : 0 ); rc = get_iswspace( codepoint, ur ); equal &= ( iswspace( codepoint ) ? 1 : 0 == rc ); printf( "%d", rc ? 1 : 0 ); rc = get_iswcntrl( codepoint, ur ); equal &= ( iswcntrl( codepoint ) ? 1 : 0 == rc ); printf( "%d", rc ? 1 : 0 ); rc = get_iswxdigit( codepoint ); equal &= ( iswxdigit( codepoint ) ? 1 : 0 == rc ); printf( "%d", rc ? 1 : 0 ); rc = get_iswgraph( codepoint, ur ); equal &= ( iswgraph( codepoint ) ? 1 : 0 == rc ); printf( "%d", rc ? 1 : 0 ); rc = get_iswprint( codepoint, ur ); equal &= ( iswprint( codepoint ) ? 1 : 0 == rc ); printf( "%d", rc ? 1 : 0 ); rc = get_iswpunct( codepoint, ur, core ); equal &= ( iswpunct( codepoint ) ? 1 : 0 == rc ); printf( "%d", rc ? 1 : 0 ); if ( codepoint != ur->code_point ) { /* These two may only differ for codepoint "ranges", which are signified by "..., First>" / "..., Last>" pairs in UnicodeData. If they differ and it's NOT a range, that is an error of some kind. */ if ( ! strstr( ur->name, ", Last>" ) || codepoint < ( ur - 1 )->code_point ) { printf( " ERROR: U+%06zX != U+%06zX outside of First, Last codepoint range. ", codepoint, ur->code_point ); } } if ( ! equal ) { printf( " ERROR: Deviation from SysLib: " ); print_codepoint_age( codepoint, age ); print_additional_codepoint_info( codepoint, ur ); } printf( "\n" ); } #else static struct output_record_t get_output_record( size_t codepoint, struct unicode_record_t * ur, struct derived_properties_t * core ) { struct output_record_t rc; char buffer[ 9 ]; rc.codepoint = codepoint; rc.toupper_diff = get_towupper( codepoint, ur ) - codepoint; rc.tolower_diff = get_towlower( codepoint, ur ) - codepoint; sprintf( buffer, "%zu%zu%zu%zu%zu%zu%zu%zu", get_iswupper( codepoint, ur, core ), get_iswlower( codepoint, ur, core ), get_iswalpha( codepoint, ur, core ), get_iswblank( codepoint, ur ), get_iswspace( codepoint, ur ), get_iswcntrl( codepoint, ur ), get_iswprint( codepoint, ur ), get_iswpunct( codepoint, ur, core ) ); rc.flags = strtoul( buffer, NULL, 2 ); return rc; } #endif int main( int argc, char * argv[] ) { struct unicode_data_t * ud; struct derived_properties_t * core; #ifdef TEST struct derived_properties_t * age; #endif char * locale = setlocale( LC_CTYPE, "" ); if ( ! strstr( locale, "UTF-8" ) || strstr( locale, "TR" ) || strstr( locale, "tr" ) ) { fprintf( stderr, "Need non-turkish locale to work correctly.\n'%s' will not do.\n", locale ); return EXIT_FAILURE; } #ifdef TEST if ( argc != 4 ) #else if ( argc != 3 ) #endif { printf( "\n" "Usage: get-uctypes " #ifdef TEST " " #endif "\n\n" "Generates lookup tables for from files available from\n" "the Unicode Consortium.\n" "\n" "The required files can be retrieved from the following URL:\n" "\n" "http://www.unicode.org/Public/UCD/latest/ucd/\n" "\n" ); return EXIT_FAILURE; } if ( ( ud = read_unicode_data( argv[ 1 ] ) ) != NULL ) { if ( ( core = read_derived_properties( argv[ 2 ] ) ) != NULL ) { #ifndef TEST /* Print (to file) RLE compressed data */ FILE * fh = fopen( "ctype.dat", "wb" ); if ( fh ) { size_t codepoint = 0; size_t i = 0; struct unicode_record_t * ur = &( ud->records[i] ); /* Name substring indicating a code point _range_ */ const char * last = ", Last>"; struct output_record_t previous = get_output_record( codepoint, ur, core ); fprintf( fh, "%zx ", previous.codepoint ); for ( codepoint = 1; codepoint < 0x10fffe; ++codepoint ) { struct output_record_t current; while ( codepoint > ur->code_point ) { ur = &( ud->records[++i] ); } if ( codepoint != ur->code_point && ( ur->name && ( strstr( ur->name, last ) != ( ur->name + strlen( ur->name ) - strlen( last ) ) ) ) ) { /* Unregistered Code Point */ continue; } current = get_output_record( codepoint, ur, core ); /* RLE */ if ( current.codepoint != previous.codepoint + 1 || current.toupper_diff != previous.toupper_diff || current.tolower_diff != previous.tolower_diff || current.flags != previous.flags ) { fprintf( fh, "%zx %d %d %hhx\n", previous.codepoint, previous.toupper_diff, previous.tolower_diff, previous.flags ); fprintf( fh, "%zx ", current.codepoint ); } previous = current; } fprintf( fh, "%zx %d %d %hhx\n", previous.codepoint, previous.toupper_diff, previous.tolower_diff, previous.flags ); fclose( fh ); } else { fprintf( stderr, "Could not open 'ctype.dat' for writing.\n" ); } #else if ( ( age = read_derived_properties( argv[ 3 ] ) ) != NULL ) { /* Print (to screen) raw data comparing our results to the system library. Differences are often because the system library uses older data, which is why we add the age to the output. */ size_t codepoint = 0; size_t i = 0; struct unicode_record_t * ur = &( ud->records[i] ); /* Name substring indicating a code point _range_ */ const char * last = ", Last>"; for ( codepoint = 0; codepoint < 0x10fffe; ++codepoint ) { while ( codepoint > ur->code_point ) { ur = &( ud->records[++i] ); } if ( codepoint != ur->code_point && ! name_ends_with( ur, last ) ) { /* Unregistered Code Point */ continue; } print_codepoint_info( codepoint, ur, core, age ); } release_derived_properties( age ); } #endif release_derived_properties( core ); } release_unicode_data( ud ); } return EXIT_SUCCESS; } Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/uctype.h0000644000175000001440000000235414676735310024247 0ustar mhxusers/* uctype data This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef UCTYPE #define UCTYPE #include "derived_properties.h" #include "unicode_data.h" size_t get_towupper( size_t codepoint, struct unicode_record_t * ur ); size_t get_towlower( size_t codepoint, struct unicode_record_t * ur ); size_t get_iswupper( size_t codepoint, struct unicode_record_t * ur, struct derived_properties_t * core ); size_t get_iswlower( size_t codepoint, struct unicode_record_t * ur, struct derived_properties_t * core ); size_t get_iswalpha( size_t codepoint, struct unicode_record_t * ur, struct derived_properties_t * core ); size_t get_iswdigit( size_t codepoint ); size_t get_iswxdigit( size_t codepoint ); size_t get_iswblank( size_t codepoint, struct unicode_record_t * ur ); size_t get_iswspace( size_t codepoint, struct unicode_record_t * ur ); size_t get_iswcntrl( size_t codepoint, struct unicode_record_t * ur ); size_t get_iswgraph( size_t codepoint, struct unicode_record_t * ur ); size_t get_iswprint( size_t codepoint, struct unicode_record_t * ur ); size_t get_iswpunct( size_t codepoint, struct unicode_record_t * ur, struct derived_properties_t * core ); #endif Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/unicode_data.h0000644000175000001440000000417314676735310025356 0ustar mhxusers/* unicode data This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef UNICODE_DATA #define UNICODE_DATA UNICODE_DATA #include /* https://www.unicode.org/reports/tr44/#UnicodeData.txt */ /* We do not need all these fields at this point, but we read them anyway so we do not need to change much should the need arise later. */ struct unicode_record_t { size_t code_point; char * name; char general_category[ 3 ]; int canonical_combining_class; char bidi_class[ 4 ]; char * decomposition; int numeric_type; int numeric_digit; char * numeric_value; char bidi_mirrored; /*char * unicode_1_name;*/ /* Obsolete as of 6.2.0 */ /*char * iso_comment;*/ /* Obsoöete as of 5.2.0 */ size_t simple_uppercase_mapping; size_t simple_lowercase_mapping; size_t simple_titlecase_mapping; }; struct unicode_data_t { size_t size; struct unicode_record_t * records; }; /* The assumed field widths, for use with check_file(). */ static const int unicode_record_fields[] = { -1, /* code_point */ -1, /* name */ 3, /* general_category */ -1, /* canonical_combining_class */ 4, /* bidi_class */ -1, /* decomposition */ -1, /* numeric_type */ -1, /* numeric_digit */ -1, /* numeric_value */ 2, /* bidi_mirrored */ -1, /* unicode_1_name */ -1, /* iso_comment */ -1, /* simple_uppercase_mapping */ -1, /* simple_lowercase_mapping */ -1 /* simple_titlecase_mapping */ }; struct unicode_data_t * read_unicode_data( const char * filename ); int has_name( struct unicode_record_t * ur, const char * name ); int name_ends_with( struct unicode_record_t * ur, const char * name ); int is_general_category( struct unicode_record_t * ur, const char * category ); int decomposition_contains( struct unicode_record_t * ur, const char * substring ); int towupper_differs( struct unicode_record_t * ur, size_t codepoint ); int towlower_differs( struct unicode_record_t * ur, size_t codepoint ); void release_unicode_data( struct unicode_data_t * ud ); #endif Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/text_utilities.c0000644000175000001440000001216014676735310026004 0ustar mhxusers/* text utilities This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #include "text_utilities.h" #include #include #include char * trim( char * s ) { char * p; /* Skip over leading whitespace */ while ( *s && isspace( *s ) ) { ++s; } /* Trim trailing whitespace */ p = s; while ( *p ) { ++p; } while ( isspace( *( --p ) ) ) { *p = '\0'; } return s; } char * next_token( char * s, char delim ) { static char * p = NULL; char * rc; if ( s != NULL ) { /* Re-init the to-be-tokenized string */ p = s; } /* Remembering the start of the next token */ rc = p; /* In case the function has not been initialized, or the previous string been exhaused, do nothing. */ if ( p ) { /* Re-using s here */ if ( ( s = strchr( p, delim ) ) ) { /* Null the delimiter */ *s = '\0'; /* Make the internal, static pointer point to the next token */ p = s + 1; } else { /* Delimiter not found, end-of-string reached. */ p = NULL; } /* Trim the result */ rc = trim( rc ); } return rc; } size_t check_file( FILE * fh, size_t buffer_size, char delim, size_t fields, int const * widths ) { /* Dynamically allocated buffer */ char * buffer = malloc( buffer_size ); size_t lines = 0; rewind( fh ); while ( fgets( buffer, buffer_size, fh ) ) { size_t i; char * p; ++lines; /* Check line for complete read */ if ( buffer[ strlen( buffer ) - 1 ] != '\n' ) { fprintf( stderr, "Line %zu will not fit into a %zu-character buffer.\n", lines, buffer_size ); rewind( fh ); free( buffer ); return -1; } /* Remove comments */ if ( ( p = strchr( buffer, '#' ) ) != NULL ) { *p = '\0'; } /* > 1 because of newline */ if ( strlen( buffer ) > 1 ) { /* Check field count and field widths */ p = next_token( buffer, delim ); for ( i = 0; i < fields; ++i ) { if ( ! p ) { fprintf( stderr, "Line %zu contains less than %zu fields.\n", lines, fields ); rewind( fh ); free( buffer ); return -1; } if ( widths[ i ] >= 0 && strlen( p ) >= ( unsigned )widths[ i ] ) { fprintf( stderr, "Line %zu: Field %zu '%s' will not fit in a %d character string.\n", lines, i + 1, p, widths[ i ] ); rewind( fh ); free( buffer ); return -1; } p = next_token( NULL, delim ); } if ( p ) { fprintf( stderr, "Line %zu contains more than %zu fields.\n", lines, fields ); rewind( fh ); free( buffer ); return -1; } } } /* Rewind, free the buffer, and report the number of lines */ rewind( fh ); free( buffer ); return lines; } #ifdef TEST #include "test.h" int main( void ) { FILE * fh = fopen( "test.txt", "wb+" ); int widths[] = { 4, 4, 4 }; char buffer[ 500 ]; /* check_file() (and as dependency, next_token() */ /* All ok */ TESTCASE( fprintf( fh, "%s;%s;%s\n", "1", "123", "12" ) == 9 ); TESTCASE( fprintf( fh, ";;\n" ) == 3 ); TESTCASE( check_file( fh, 10, ';', 3, widths ) == 2 ); /* Field 1 too long */ TESTCASE( fprintf( fh, "%s;%s;%s\n", "", "1234", "1" ) == 8 ); TESTCASE( check_file( fh, 10, ';', 3, widths ) == ( size_t )-1 ); /* Too few fields */ TESTCASE( fprintf( fh, "%s;%s\n", "123", "123" ) == 8 ); TESTCASE( check_file( fh, 10, ';', 3, widths ) == ( size_t )-1 ); /* Too many fields */ TESTCASE( fprintf( fh, "%s;%s;%s;%s\n", "1", "1", "1", "1" ) == 8 ); TESTCASE( check_file( fh, 10, ';', 3, widths ) == ( size_t )-1 ); /* Line too long */ TESTCASE( fprintf( fh, "%s;%s;%s\n", "12", "123", "12" ) == 10 ); TESTCASE( check_file( fh, 10, ';', 3, widths ) == ( size_t )-1 ); fclose( fh ); remove( "test.txt" ); /* trim() */ strcpy( buffer, " xyz" ); TESTCASE( ! strcmp( trim( buffer ), "xyz" ) ); strcpy( buffer, "xyz " ); TESTCASE( ! strcmp( trim( buffer ), "xyz" ) ); strcpy( buffer, " xyz " ); TESTCASE( ! strcmp( trim( buffer ), "xyz" ) ); strcpy( buffer, " x" ); TESTCASE( ! strcmp( trim( buffer ), "x" ) ); strcpy( buffer, "x " ); TESTCASE( ! strcmp( trim( buffer ), "x" ) ); strcpy( buffer, " " ); TESTCASE( ! strcmp( trim( buffer ), "" ) ); strcpy( buffer, " " ); TESTCASE( ! strcmp( trim( buffer ), "" ) ); strcpy( buffer, "" ); TESTCASE( ! strcmp( trim( buffer ), "" ) ); return TEST_RESULTS; } #endif Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/uctype/CMakeLists.txt0000644000175000001440000000233014676735310025317 0ustar mhxuserscmake_minimum_required( VERSION 2.9 FATAL_ERROR ) project( get_uctypes LANGUAGES C ) set( CMAKE_C_STANDARD 11 ) set( CMAKE_C_STANDARD_REQUIRED ON ) set( CMAKE_C_EXTENSIONS OFF ) set( uctype_SOURCES derived_properties.c text_utilities.c uctype.c unicode_data.c ) set( uctype_HEADERS derived_properties.h test.h text_utilities.h uctype.h unicode_data.h ) add_library( uctype STATIC ${uctype_SOURCES} ) target_include_directories( uctype PRIVATE ${CMAKE_SOURCE_DIR} ) add_executable( get_uctypes main.c ) target_include_directories( get_uctypes PRIVATE ${CMAKE_SOURCE_DIR} ) target_link_libraries( get_uctypes uctype ) foreach( file ${uctype_SOURCES} ) get_filename_component( basename ${file} NAME_WE ) # Test driver. add_executable( ${basename}_t ${file} ) set_property( TARGET ${basename}_t APPEND_STRING PROPERTY COMPILE_FLAGS "-DTEST" ) if ( IGNORE_NO_TESTDRIVER ) set_property( TARGET ${basename}_t APPEND_STRING PROPERTY COMPILE_FLAGS " -DNO_TESTDRIVER=1" ) endif() target_include_directories( ${basename}_t PRIVATE ${CMAKE_SOURCE_DIR} ) target_link_libraries( ${basename}_t uctype ) add_test( ${basename}_t ${basename}_t ) endforeach() Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/fpconvert/0000755000175000001440000000000014677003524023252 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/auxiliary/fpconvert/CMakeLists.txt0000644000175000001440000000045514676735310026022 0ustar mhxuserscmake_minimum_required( VERSION 2.9 FATAL_ERROR ) project( fpconvert LANGUAGES C ) include( CheckIncludeFile ) set( CMAKE_REQUIRED_QUIET ON ) CHECK_INCLUDE_FILE( quadmath.h QUADMATH ) add_executable( fpconvert fpconvert.c ) if ( QUADMATH ) target_link_libraries( fpconvert quadmath ) endif() Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/fpconvert/fpconvert.c0000644000175000001440000001355214676735310025436 0ustar mhxusers#include #include #include union { float value; unsigned char bytes[ sizeof( float ) ]; struct { unsigned mant : 23; unsigned exp : 8; unsigned sign : 1; } bits; } float32; union { double value; unsigned char bytes[ sizeof( double ) ]; struct { unsigned mant_low : 32; unsigned mant_high : 20; unsigned exp : 11; unsigned sign : 1; } bits; } float64; #if __LDBL_DECIMAL_DIG__ == 21 #define FLOAT80 union { long double value; unsigned char bytes[ sizeof( long double ) ]; struct { unsigned mant_low : 32; unsigned mant_high : 32; unsigned exp : 15; unsigned sign : 1; } bits; } float80; #endif #if __LDBL_DECIMAL_DIG__ == 36 || __FLT128_DECIMAL_DIG__ == 36 #if __LDBL_DECIMAL_DIG__ == 36 #define FLOAT128 " long double " typedef long double float128_t; #define strtof128 strtold #elif __FLT128_DECIMAL_DIG__ == 36 #define FLOAT128 " __float128 -" #include typedef __float128 float128_t; #define strtof128 strtoflt128 #endif union { float128_t value; unsigned char bytes[ sizeof( float128_t ) ]; struct { unsigned mant_l1 : 32; unsigned mant_l2 : 32; unsigned mant_h1 : 32; unsigned mant_h2 : 16; unsigned exp : 15; unsigned sign : 1; } bits; } float128; #endif int main( int argc, char * argv[] ) { int i; unsigned sign; unsigned exp; unsigned mant[4]; if ( argc != 2 ) { puts( "Usage: fpconvert " ); return 1; } float32.value = strtof( argv[1], NULL ); float64.value = strtod( argv[1], NULL ); #ifdef FLOAT80 float80.value = strtold( argv[1], NULL ); #endif #ifdef FLOAT128 float128.value = strtof128( argv[1], NULL ); #endif puts( "\n---------------------------------- float ----------------------------------" ); for ( i = sizeof( float ); i > 0; --i ) { printf( "%02hhx ", float32.bytes[i - 1] ); } puts( "" ); sign = float32.bytes[3] >> 7; exp = ( ( (unsigned)float32.bytes[3] & 0x7F ) << 1 ) | ( (unsigned)float32.bytes[2] >> 7 ); mant[0] = ( ( (unsigned)float32.bytes[2] & 0x7F ) << 16 ) | ( ( (unsigned)float32.bytes[1] ) << 8 ) | ( (unsigned)float32.bytes[0] ); assert( sign == float32.bits.sign ); assert( exp == float32.bits.exp ); assert( mant[0] == float32.bits.mant ); printf( "sign: 0x%u exponent: 0x%02x significand: 0x%06x\n\n", sign, exp, mant[0] ); puts( "--------------------------------- double ----------------------------------" ); for ( i = sizeof( double ); i > 0; --i ) { printf( "%02hhx ", float64.bytes[i - 1] ); } puts( "" ); sign = ( float64.bytes[7] >> 7 ); exp = ( ( (unsigned)float64.bytes[7] & 0x7F ) << 4 ) | ( ( (unsigned)float64.bytes[6] & 0xF0 ) >> 4 ); mant[0] = ( ( (unsigned)float64.bytes[6] & 0x0F ) << 16 ) | ( ( (unsigned)float64.bytes[5] ) << 8 ) | ( (unsigned)float64.bytes[4] ); mant[1] = ( ( (unsigned)float64.bytes[3] ) << 24 ) | ( ( (unsigned)float64.bytes[2] ) << 16 ) | ( ( (unsigned)float64.bytes[1] ) << 8 ) | ( (unsigned)float64.bytes[0] ); assert( sign == float64.bits.sign ); assert( exp == float64.bits.exp ); assert( mant[0] == float64.bits.mant_high ); assert( mant[1] == float64.bits.mant_low ); printf( "sign: 0x%u exponent: 0x%03x significand: 0x%05x.%08x\n\n", sign, exp, mant[0], mant[1] ); #ifdef FLOAT80 puts( "------------------------------- long double -------------------------------" ); for ( i = sizeof( long double ); i > 0; --i ) { printf( "%02hhx ", float80.bytes[i - 1] ); } puts( "" ); sign = ( float80.bytes[9] >> 7 ); exp = ( ( (unsigned)float80.bytes[9] & 0x7F ) << 8 ) | ( (unsigned)float80.bytes[8] ); mant[0] = ( ( (unsigned)float80.bytes[7] ) << 24 ) | ( ( (unsigned)float80.bytes[6] ) << 16 ) | ( ( (unsigned)float80.bytes[5] ) << 8 ) | ( (unsigned)float80.bytes[4] ); mant[1] = ( ( (unsigned)float80.bytes[3] ) << 24 ) | ( ( (unsigned)float80.bytes[2] ) << 16 ) | ( ( (unsigned)float80.bytes[1] ) << 8 ) | ( (unsigned)float80.bytes[0] ); assert( sign == float80.bits.sign ); assert( exp == float80.bits.exp ); assert( mant[0] == float80.bits.mant_high ); assert( mant[1] == float80.bits.mant_low ); printf( "sign: 0x%u exponent: 0x%04x significand: 0x%08x.%08x\n\n", sign, exp, mant[0], mant[1] ); #endif #ifdef FLOAT128 puts( "-------------------------------" FLOAT128 "-------------------------------" ); for ( i = sizeof( float128_t ); i > 0; --i ) { printf( "%02hhx ", float128.bytes[i - 1] ); } puts( "" ); sign = ( float128.bytes[15] >> 7 ); exp = ( ( (unsigned)float128.bytes[15] & 0x7F ) << 8 ) | ( (unsigned)float128.bytes[14] ); mant[0] = ( ( (unsigned)float128.bytes[13] ) << 8 ) | ( (unsigned)float128.bytes[12] ); mant[1] = ( (unsigned)float128.bytes[11] << 24 ) | ( (unsigned)float128.bytes[10] << 16 ) | ( (unsigned)float128.bytes[ 9] << 8 ) | (unsigned)float128.bytes[ 8]; mant[2] = ( (unsigned)float128.bytes[ 7] << 24 ) | ( (unsigned)float128.bytes[ 6] << 16 ) | ( (unsigned)float128.bytes[ 5] << 8 ) | (unsigned)float128.bytes[ 4]; mant[3] = ( (unsigned)float128.bytes[ 3] << 24 ) | ( (unsigned)float128.bytes[ 2] << 16 ) | ( (unsigned)float128.bytes[ 1] << 8 ) | (unsigned)float128.bytes[ 0]; assert( sign == float128.bits.sign ); assert( exp == float128.bits.exp ); assert( mant[0] == float128.bits.mant_h2 ); assert( mant[1] == float128.bits.mant_h1 ); assert( mant[2] == float128.bits.mant_l2 ); assert( mant[3] == float128.bits.mant_l1 ); printf( "sign: 0x%u exponent: 0x%04x significand: 0x%04x.%08x.%08x.%08x\n\n", sign, exp, mant[0], mant[1], mant[2], mant[3] ); #endif } Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/pthread/0000755000175000001440000000000014677003524022673 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/auxiliary/pthread/CMakeLists.txt0000644000175000001440000000147414676735310025445 0ustar mhxuserscmake_minimum_required( VERSION 2.9 FATAL_ERROR ) project( pthread_readout LANGUAGES C ) set( CMAKE_C_STANDARD 11 ) set( CMAKE_C_STANDARD_REQUIRED ON ) set( CMAKE_C_EXTENSIONS OFF ) add_executable( pthread_readout pthread_readout.c ) # For this executable specifically, make the _PDCLIB_* headers available # but *not* PDCLib's standard headers -- so we can check PDCLib config # against the host system. target_include_directories( pthread_readout BEFORE PRIVATE ${CMAKE_SOURCE_DIR}/include/pdclib ${CMAKE_SOURCE_DIR}/platform/example/include/pdclib ) # PThread linkage. set( CMAKE_THREAD_PREFER_PTHREAD 1 ) set( THREADS_PREFER_PTHREAD_FLAG 1 ) find_package( Threads ) if ( NOT CMAKE_USE_PTHREADS_INIT ) message( FATAL_ERROR "Cannot find pthread." ) endif() target_link_libraries( pthread_readout Threads::Threads ) Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/pthread/pthread_readout.c0000644000175000001440000002267214676735310026226 0ustar mhxusers#define _GNU_SOURCE #include #include #include #include #include #include #include "pthread.h" /* For _PDCLIB_time -> reconstructing struct _PDCLIB_timespec */ #include "_PDCLIB_config.h" #define symbol2string( x ) #x #define value2string( x ) symbol2string( x ) struct _PDCLIB_timespec { _PDCLIB_time_t tv_sec; long tv_nsec; }; static void print_mutex( const char * define, pthread_mutex_t mutex ) { printf( "%s { {", define ); for ( size_t i = 0; i < sizeof( pthread_mutex_t ); ++i ) { if ( i > 0 ) { printf( "," ); } if ( !( i % 8 ) ) { printf( "\\\n " ); } printf( " 0x%02hhx", ( ( unsigned char * )&mutex )[i] ); } printf( " } }\n" ); } static int print_recursive_mutex_data( void ) { pthread_mutexattr_t mutex_attr; if ( pthread_mutexattr_init( &mutex_attr ) == 0 ) { if ( pthread_mutexattr_settype( &mutex_attr, PTHREAD_MUTEX_RECURSIVE ) == 0 ) { pthread_mutex_t mutex; if ( pthread_mutex_init( &mutex, &mutex_attr ) == 0 ) { print_mutex( "#define _PDCLIB_MTX_RECURSIVE_INIT", mutex ); pthread_mutexattr_destroy( &mutex_attr ); return 1; } } } return 0; } static int print_plain_mutex_data( void ) { pthread_mutex_t mutex; if ( pthread_mutex_init( &mutex, NULL ) == 0 ) { print_mutex( "#define _PDCLIB_MTX_PLAIN_INIT", mutex ); return 1; } return 0; } int main( int argc, char * argv[] ) { pthread_cond_t cond; pthread_mutex_t mutex; pthread_condattr_t cnd_attr; pthread_mutexattr_t mtx_attr; pthread_attr_t thrd_attr; /* In interfacing 'our' threads.h functions with pthread, we assume that 'our' struct timespec and the host system's struct timespec can be safely cast to each other. So we check that the layout is identical. If these asserts fail, you need to find out what the platform uses for struct timespec, and adjust the timespec definition here and in PDCLib's _PDCLIB_config.h / time.h. */ struct timespec ts; struct _PDCLIB_timespec pts; assert( sizeof( ts.tv_sec ) == sizeof( pts.tv_sec ) ); assert( alignof( ts.tv_sec ) == alignof( pts.tv_sec ) ); assert( sizeof( ts.tv_nsec ) == sizeof( pts.tv_nsec ) ); assert( sizeof( struct timespec ) == sizeof( struct _PDCLIB_timespec ) ); assert( offsetof( struct timespec, tv_sec ) == offsetof( struct _PDCLIB_timespec, tv_sec ) ); assert( offsetof( struct timespec, tv_nsec ) == offsetof( struct _PDCLIB_timespec, tv_nsec ) ); /* Similarly, we assume (in the threads/ files) that 'our' thrd_t can be safely cast to pthread_t and back, mtx_t to pthread_mutex_t, cnd_t to pthread_cond_t, tss_t to pthread_key_t, and once_flag to pthread_once_t. What we assert here is that the types used by the platform's pthread implementation are, indeed, the fundamental types assumed here. (Which are then printed out for inclusion in _PDCLIB_config.h, so that PDCLib's structures are compatible.) If these assertions fail, you need to find out the fundamental types used by the platform's pthread implementation (on my x86_64 machine in /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h), and adjust both the assert() statements and the printf() statements accordingly. */ puts( "/* Use this in _PDCLIB_config.h, 'threads' section, for interfacing pthread. */" ); /* Thread */ #if defined( __CYGWIN__ ) assert( sizeof( pthread_t ) == sizeof( struct { char __dummy; } * ) ); printf( "typedef struct { char __dummy; } * _PDCLIB_thrd_t;\n" ); #elif defined( __ANDROID__ ) assert( sizeof( pthread_t ) == sizeof( long int ) ); printf( "typedef long int _PDCLIB_thrd_t;\n" ); #else assert( sizeof( pthread_t ) == sizeof( unsigned long int ) ); printf( "typedef unsigned long int _PDCLIB_thrd_t;\n" ); #endif /* Condition */ #if defined( __CYGWIN__ ) assert( sizeof( pthread_cond_t ) == sizeof( struct { char __dummy; } * ) ); printf( "typedef struct { char __dummy; } * _PDCLIB_cnd_t;\n" ); #elif defined( __ANDROID__ ) assert( sizeof( pthread_cond_t ) == sizeof( struct { int32_t __dummy[12]; } ) ); printf( "typedef struct { int32_t __dummy[12]; } _PDCLIB_cnd_t;\n" ); #else assert( sizeof( cond.__align ) == sizeof( long long int ) ); printf( "typedef union { unsigned char _PDCLIB_cnd_t_data[ %zd ]; long long int _PDCLIB_cnd_t_align; } _PDCLIB_cnd_t;\n", sizeof( pthread_cond_t ) ); #endif /* Mutex */ #if defined( __CYGWIN__ ) assert( sizeof( pthread_mutex_t ) == sizeof( struct { char __dummy; } * ) ); printf( "typedef struct { char __dummy; } * _PDCLIB_mtx_t;\n" ); #elif defined( __ANDROID__ ) assert( sizeof( pthread_mutex_t ) == sizeof( struct { int32_t __dummy[10]; } ) ); printf( "typedef struct { int32_t __dummy[10]; } _PDCLIB_mtx_t;\n" ); #else assert( sizeof( mutex.__align ) == sizeof( long int ) ); printf( "typedef union { unsigned char _PDCLIB_mtx_t_data[ %zd ]; long int _PDCLIB_mtx_t_align; } _PDCLIB_mtx_t;\n", sizeof( pthread_mutex_t ) ); #endif /* Thread Specific Storage */ #if defined( __CYGWIN__ ) assert( sizeof( pthread_key_t ) == sizeof( struct { char __dummy; } * ) ); printf( "typedef struct { char __dummy; } * _PDCLIB_tss_t;\n" ); #elif defined( __ANDROID__ ) assert( sizeof( pthread_key_t ) == sizeof( int ) ); printf( "typedef int _PDCLIB_tss_t;\n" ); #else assert( sizeof( pthread_key_t ) == sizeof( unsigned int ) ); printf( "typedef unsigned int _PDCLIB_tss_t;\n" ); #endif /* once_flag */ #ifdef __CYGWIN__ assert( sizeof( pthread_once_t ) == sizeof( struct { pthread_mutex_t __dummy1; int __dummy2; } ) ); printf( "typedef struct { _PDCLIB_mtx_t mutex; int state; } _PDCLIB_once_flag;\n" ); #else /* Both Linux and Android */ assert( sizeof( pthread_once_t ) == sizeof( int ) ); assert( alignof( pthread_once_t ) == alignof( int ) ); printf( "typedef int _PDCLIB_once_flag;\n" ); #endif /* once_flag init */ #if defined( __CYGWIN__ ) printf( "#define _PDCLIB_ONCE_FLAG_INIT { %s, 0 }\n", value2string( PTHREAD_MUTEX_INITIALIZER ) ); #else /* Both Linux and Android */ printf( "#define _PDCLIB_ONCE_FLAG_INIT %s\n", value2string( PTHREAD_ONCE_INIT ) ); #endif #if defined( __CYGWIN__ ) printf( "#define _PDCLIB_RECURSIVE_MUTEX_INIT %s\n", value2string( PTHREAD_MUTEX_INITIALIZER ) ); #else /* Both Linux and Android */ printf( "#define _PDCLIB_RECURSIVE_MUTEX_INIT %s\n", symbol2string( PTHREAD_MUTEX_INITIALIZER ) ); #endif /* _PDCLIB_TSS_DTOR_ITERATIONS */ printf( "/* This one is actually hidden in , and only if __USE_POSIX is */\n" "/* defined prior to #include (PTHREAD_DESTRUCTOR_ITERATIONS). */\n" "#define _PDCLIB_TSS_DTOR_ITERATIONS %d\n", PTHREAD_DESTRUCTOR_ITERATIONS ); /* Pthread attibutes */ printf( "/* The following are not made public in any header, but used internally for */\n" "/* interfacing with the pthread API. */\n" ); #if defined( __CYGWIN__ ) assert( sizeof( pthread_condattr_t ) == sizeof( struct { char __dummy; } * ) ); printf( "typedef struct { char __dummy; } * _PDCLIB_cnd_attr_t;\n" ); #elif defined( __ANDROID__ ) assert( sizeof( pthread_condattr_t ) == sizeof( long int ) ); printf( "typedef long int pthread_condattr_t;\n" ); #else assert( sizeof( cnd_attr.__align ) == sizeof( int ) ); printf( "typedef union { unsigned char _PDCLIB_cnd_attr_t_data[ %zd ]; int _PDCLIB_cnd_attr_t_align; } _PDCLIB_cnd_attr_t;\n", sizeof( pthread_condattr_t ) ); #endif #if defined( __CYGWIN__ ) assert( sizeof( pthread_mutexattr_t ) == sizeof( struct { char __dummy; } * ) ); printf( "typedef struct { char __dummy; } * _PDCLIB_mtx_attr_t;\n" ); #elif defined( __ANDROID__ ) assert( sizeof( pthread_mutexattr_t ) == sizeof( long int ) ); printf( "typedef long int pthread_mutexattr_t;\n" ); #else assert( sizeof( mtx_attr.__align ) == sizeof( int ) ); printf( "typedef union { unsigned char _PDCLIB_mtx_attr_t_data[ %zd ]; int _PDCLIB_mtx_attr_t_align; } _PDCLIB_mtx_attr_t;\n", sizeof( pthread_mutexattr_t ) ); #endif #if defined( __CYGWIN__ ) assert( sizeof( pthread_attr_t ) == sizeof( struct { char __dummy; } * ) ); printf( "typedef struct { char __dummy; } * _PDCLIB_thrd_attr_t;\n" ); #elif defined( __ANDROID__ ) assert( sizeof( pthread_attr_t ) == sizeof( struct { uint32_t __dummy1; void * __dummy2; size_t __dummy3; size_t __dummy4; int32_t __dummy5; int32_t __dummy6; char __dummy7[16]; } ) ); printf( "typedef struct { uint32_t flags; void * stack_base; size_t stack_size; size_t guard_size; int32_t sched_policy; int32_t sched_priority; char reserved[16]; } _PDCLIB_thrd_attr_t;\n" ); #else assert( sizeof( thrd_attr.__align ) == sizeof( long int ) ); printf( "typedef union { unsigned char _PDCLIB_thrd_attr_t_data[ %zd ]; long int _PDCLIB_thrd_attr_t_align; } _PDCLIB_thrd_attr_t;\n", sizeof( pthread_attr_t ) ); #endif printf( "/* Static initialization of recursive mutex. */\n" ); print_recursive_mutex_data(); printf( "/* Static initialization of plain / timeout mutex (identical with pthread). */\n" ); print_plain_mutex_data(); } Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/errno/0000755000175000001440000000000014677003524022371 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/auxiliary/errno/CMakeLists.txt0000644000175000001440000000021114676735310025127 0ustar mhxuserscmake_minimum_required( VERSION 2.9 FATAL_ERROR ) project( errno_readout LANGUAGES C ) add_executable( errno_readout errno_readout.c ) Convert-Binary-C-0.85/tests/include/pdclib/auxiliary/errno/errno_readout.c0000644000175000001440000002055514676735310025420 0ustar mhxusers#include #include #include #include struct einfo { char const * string; int errno_value; char const * text; } error[] = { /* A list of the error codes demanded by C++, and the text from the description in the C++ standard. These are taken from POSIX. */ { "_PDCLIB_E2BIG", E2BIG, "Argument list too long" }, { "_PDCLIB_EACCES", EACCES, "Permission denied" }, { "_PDCLIB_EADDRINUSE", EADDRINUSE, "Address in use" }, { "_PDCLIB_EADDRNOTAVAIL", EADDRNOTAVAIL, "Address not available" }, { "_PDCLIB_EAFNOSUPPORT", EAFNOSUPPORT, "Address family not supported" }, { "_PDCLIB_EAGAIN", EAGAIN, "Resource unavailable, try again" }, { "_PDCLIB_EALREADY", EALREADY, "Connection already in progress" }, { "_PDCLIB_EBADF", EBADF, "Bad file descriptor" }, { "_PDCLIB_EBADMSG", EBADMSG, "Bad message" }, { "_PDCLIB_EBUSY", EBUSY, "Device or resource busy" }, { "_PDCLIB_ECANCELED", ECANCELED, "Operation canceled" }, { "_PDCLIB_ECHILD", ECHILD, "No child processes" }, { "_PDCLIB_ECONNABORTED", ECONNABORTED, "Connection aborted" }, { "_PDCLIB_ECONNREFUSED", ECONNREFUSED, "Connection refused" }, { "_PDCLIB_ECONNRESET", ECONNRESET, "Connection reset" }, { "_PDCLIB_EDEADLK", EDEADLK, "Resource deadlock would occur" }, { "_PDCLIB_EDESTADDRREQ", EDESTADDRREQ, "Destination address required" }, { "_PDCLIB_EDOM", EDOM, "Mathematics argument out of domain of function" }, { "_PDCLIB_EEXIST", EEXIST, "File exists" }, { "_PDCLIB_EFAULT", EFAULT, "Bad address" }, { "_PDCLIB_EFBIG", EFBIG, "File too large" }, { "_PDCLIB_EHOSTUNREACH", EHOSTUNREACH, "Host is unreachable" }, { "_PDCLIB_EIDRM", EIDRM, "Identifier removed" }, { "_PDCLIB_EILSEQ", EILSEQ, "Illegal byte sequence" }, { "_PDCLIB_EINPROGRESS", EINPROGRESS, "Operation in progress" }, { "_PDCLIB_EINTR", EINTR, "Interrupted function" }, { "_PDCLIB_EINVAL", EINVAL, "Invalid argument" }, { "_PDCLIB_EIO", EIO, "I/O error" }, { "_PDCLIB_EISCONN", EISCONN, "Socket is connected" }, { "_PDCLIB_EISDIR", EISDIR, "Is a directory" }, { "_PDCLIB_ELOOP", ELOOP, "Too many levels of symbolic links" }, { "_PDCLIB_EMFILE", EMFILE, "File descriptor value too large" }, { "_PDCLIB_EMLINK", EMLINK, "Too many links" }, { "_PDCLIB_EMSGSIZE", EMSGSIZE, "Message too large" }, { "_PDCLIB_ENAMETOOLONG", ENAMETOOLONG, "Filename too long" }, { "_PDCLIB_ENETDOWN", ENETDOWN, "Network is down" }, { "_PDCLIB_ENETRESET", ENETRESET, "Connection aborted by network" }, { "_PDCLIB_ENETUNREACH", ENETUNREACH, "Network unreachable" }, { "_PDCLIB_ENFILE", ENFILE, "Too many files open in system" }, { "_PDCLIB_ENOBUFS", ENOBUFS, "No buffer space available" }, { "_PDCLIB_ENODATA", ENODATA, "No message is available on the STREAM head read queue" }, { "_PDCLIB_ENODEV", ENODEV, "No such device" }, { "_PDCLIB_ENOENT", ENOENT, "No such file or directory" }, { "_PDCLIB_ENOEXEC", ENOEXEC, "Executable file format error" }, { "_PDCLIB_ENOLCK", ENOLCK, "No locks available" }, { "_PDCLIB_ENOLINK", ENOLINK, "Link has been severed" }, { "_PDCLIB_ENOMEM", ENOMEM, "Not enough space" }, { "_PDCLIB_ENOMSG", ENOMSG, "No message of the desired type" }, { "_PDCLIB_ENOPROTOOPT", ENOPROTOOPT, "Protocol not available" }, { "_PDCLIB_ENOSPC", ENOSPC, "No space left on device" }, { "_PDCLIB_ENOSR", ENOSR, "No STREAM resources" }, { "_PDCLIB_ENOSTR", ENOSTR, "Not a STREAM" }, { "_PDCLIB_ENOSYS", ENOSYS, "Function not supported" }, { "_PDCLIB_ENOTCONN", ENOTCONN, "The socket is not connected" }, { "_PDCLIB_ENOTDIR", ENOTDIR, "Not a directory" }, { "_PDCLIB_ENOTEMPTY", ENOTEMPTY, "Directory not empty" }, { "_PDCLIB_ENOTRECOVERABLE", ENOTRECOVERABLE, "State not recoverable" }, { "_PDCLIB_ENOTSOCK", ENOTSOCK, "Not a socket" }, { "_PDCLIB_ENOTSUP", ENOTSUP, "Not supported" }, { "_PDCLIB_ENOTTY", ENOTTY, "Inappropriate I/O control operation" }, { "_PDCLIB_ENXIO", ENXIO, "No such device or address" }, { "_PDCLIB_EOPNOTSUPP", EOPNOTSUPP, "Operation not supported on socket" }, { "_PDCLIB_EOVERFLOW", EOVERFLOW, "Value too large to be stored in data type" }, { "_PDCLIB_EOWNERDEAD", EOWNERDEAD, "Previous owner died" }, { "_PDCLIB_EPERM", EPERM, "Operation not permitted" }, { "_PDCLIB_EPIPE", EPIPE, "Broken pipe" }, { "_PDCLIB_EPROTO", EPROTO, "Protocol error" }, { "_PDCLIB_EPROTONOSUPPORT", EPROTONOSUPPORT, "Protocol not supported" }, { "_PDCLIB_EPROTOTYPE", EPROTOTYPE, "Protocol wrong type for socket" }, { "_PDCLIB_ERANGE", ERANGE, "Result too large" }, { "_PDCLIB_EROFS", EROFS, "Read-only file system" }, { "_PDCLIB_ESPIPE", ESPIPE, "Invalid seek" }, { "_PDCLIB_ESRCH", ESRCH, "No such process" }, { "_PDCLIB_ETIME", ETIME, "Stream ioctl() timeout" }, { "_PDCLIB_ETIMEDOUT", ETIMEDOUT, "Connection timed out" }, { "_PDCLIB_ETXTBSY", ETXTBSY, "Text file busy" }, { "_PDCLIB_EWOULDBLOCK", EWOULDBLOCK, "Operation would block" }, { "_PDCLIB_EXDEV", EXDEV, "Cross-device link" }, }; int main( int argc, char * argv[] ) { const char * unknown_error_text = "unknown error"; size_t errno_max = 0; size_t text_len_max = strlen( unknown_error_text ); size_t string_len_max = strlen( unknown_error_text ); for ( size_t i = 0; i < sizeof( error ) / sizeof( error[0] ); ++i ) { /* Highest value for any of the given error codes */ if ( error[i].errno_value > errno_max ) { errno_max = error[i].errno_value; } /* Longest error symbol (for prettyprinting) */ if ( strlen( error[i].string ) > string_len_max ) { string_len_max = strlen( error[i].string ); } /* Longest error text (for prettyprinting) */ if ( strlen( error[i].text ) > text_len_max ) { text_len_max = strlen( error[i].text ); } } puts( "/* ------------------------------------- */" ); puts( "/* The definitions, for _PDCLIB_config.h */" ); puts( "/* ------------------------------------- */" ); puts( "" ); for ( size_t i = 0; i < sizeof( error ) / sizeof( error[0] ); ++i ) { printf( "/* %s */\n#define %-*s %3d\n", error[i].text, ( int )string_len_max, error[i].string, error[i].errno_value ); } puts( "" ); puts( "/* The highest defined errno value, plus one. This is used to set the size */" ); puts( "/* of the array in struct _PDCLIB_lc_text_t holding error messages for the */" ); puts( "/* strerror() and perror() functions. (If you change this value because you */" ); puts( "/* are using additional errno values, you *HAVE* to provide appropriate error */" ); puts( "/* messages for *ALL* locales.) */" ); printf( "#define _PDCLIB_ERRNO_MAX %d\n", ( int )errno_max + 1 ); puts( "" ); puts( "/* The error message used for unknown error codes (generated by errno_readout */" ); puts( "/* for consistency between the 'holes' in the list of defined error messages */" ); puts( "/* and the text generated by e.g. strerror() for out-of-range error values.) */" ); printf( "#define _PDCLIB_EUNKNOWN_TEXT ( char* )\"%s\"\n", unknown_error_text ); puts( "" ); puts( "/* -------------------------------------------------- */" ); puts( "/* An array of the error texts, for _PDCLIB_stdinit.c */" ); puts( "/* -------------------------------------------------- */" ); puts( "" ); string_len_max -= 8; struct einfo * sortlst = malloc( sizeof( struct einfo ) * ( errno_max + 1 ) ); /* errno == 0 -> 'Success' */ printf( " /* %-*s */ ( char * )\"Success\",\n", ( int )string_len_max, "" ); for ( size_t i = 1; i <= errno_max; ++i ) { int index = -1; for ( size_t j = 0; j < sizeof( error ) / sizeof( error[0] ); ++j ) { if ( error[j].errno_value == i ) { index = j; break; } } if ( index >= 0 ) { printf( " /* %-*s */ ( char * )\"%s (%s)\",\n", ( int )string_len_max, error[index].string + 8, error[index].string + 8, error[index].text ); } else { printf( " /* %-*s */ ( char * )\"%s\",\n", ( int )string_len_max, unknown_error_text, unknown_error_text ); } } } Convert-Binary-C-0.85/tests/include/pdclib/include/0000755000175000001440000000000014677003524020660 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/include/stdio.h0000644000175000001440000013637514676735310022176 0ustar mhxusers/* Input/output This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_STDIO_H #define _PDCLIB_STDIO_H _PDCLIB_STDIO_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_lib_ext1.h" #include "pdclib/_PDCLIB_internal.h" #ifndef _PDCLIB_SIZE_T_DEFINED #define _PDCLIB_SIZE_T_DEFINED _PDCLIB_SIZE_T_DEFINED typedef _PDCLIB_size_t size_t; #endif #ifndef _PDCLIB_NULL_DEFINED #define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED #define NULL _PDCLIB_NULL #endif /* See setvbuf(), third argument */ #define _IOFBF (1u<<0) #define _IOLBF (1u<<1) #define _IONBF (1u<<2) /* The following are platform-dependant, and defined in _PDCLIB_config.h. */ typedef struct _PDCLIB_fpos_t fpos_t; typedef struct _PDCLIB_file_t FILE; #define EOF -1 #define BUFSIZ _PDCLIB_BUFSIZ #define FOPEN_MAX _PDCLIB_FOPEN_MAX #define FILENAME_MAX _PDCLIB_FILENAME_MAX #define L_tmpnam _PDCLIB_L_tmpnam #define TMP_MAX _PDCLIB_TMP_MAX /* See fseek(), third argument */ #define SEEK_CUR _PDCLIB_SEEK_CUR #define SEEK_END _PDCLIB_SEEK_END #define SEEK_SET _PDCLIB_SEEK_SET extern FILE * stdin; extern FILE * stdout; extern FILE * stderr; /* Operations on files */ /* Remove the given file. Returns zero if successful, non-zero otherwise. This implementation does detect if a file of that name is currently open, and fails the remove in this case. This does not detect two distinct names that merely result in the same file (e.g. "/home/user/foo" vs. "~/foo"). */ _PDCLIB_PUBLIC int remove( const char * filename ); /* Rename the given old file to the given new name. Returns zero if successful, non-zero otherwise. This implementation does detect if the old filename corresponds to an open file, and fails the rename in this case. If there already is a file with the new filename, behaviour is defined by the glue code (see functions/_PDCLIB/rename.c). */ _PDCLIB_PUBLIC int rename( const char * oldpath, const char * newpath ); /* Open a temporary file with mode "wb+", i.e. binary-update. Remove the file automatically if it is closed or the program exits normally (by returning from main() or calling exit()). Returns a pointer to a FILE handle for this file. This implementation does not remove temporary files if the process aborts abnormally (e.g. abort()). */ _PDCLIB_PUBLIC FILE * tmpfile( void ); /* Generate a file name that is not equal to any existing filename AT THE TIME OF GENERATION. Generate a different name each time it is called. Returns a pointer to an internal static buffer containing the filename if s is a NULL pointer. (This is not thread-safe!) Returns s if it is not a NULL pointer (s is then assumed to point to an array of at least L_tmpnam characters). Returns NULL if unable to generate a suitable name (because all possible names already exist, or the function has been called TMP_MAX times already). Note that this implementation cannot guarantee a file of the name generated is not generated between the call to this function and a subsequent fopen(). */ _PDCLIB_PUBLIC char * tmpnam( char * s ); /* File access functions */ /* Close the file associated with the given stream (after flushing its buffers). Returns zero if successful, EOF if any errors occur. */ _PDCLIB_PUBLIC int fclose( FILE * stream ); /* Flush the buffers of the given output stream. If the stream is an input stream, or an update stream with the last operation being an input operation, behaviour is undefined. If stream is a NULL pointer, perform the buffer flushing for all applicable streams. Returns zero if successful, EOF if a write error occurs. Sets the error indicator of the stream if a write error occurs. */ _PDCLIB_PUBLIC int fflush( FILE * stream ); /* Open the file with the given filename in the given mode, and return a stream handle for it in which error and end-of-file indicator are cleared. Defined values for mode are: READ MODES text files binary files without update "r" "rb" with update "r+" "rb+" or "r+b" Opening in read mode fails if no file with the given filename exists, or if cannot be read. WRITE MODES text files binary files without update "w" "wb" with update "w+" "wb+" or "w+b" With write modes, if a file with the given filename already exists, it is truncated to zero length. APPEND MODES text files binary files without update "a" "ab" with update "a+" "ab+" or "a+b" With update modes, if a file with the given filename already exists, it is not truncated to zero length, but all writes are forced to end-of-file (this regardless to fseek() calls). Note that binary files opened in append mode might have their end-of-file padded with '\0' characters. Update modes mean that both input and output functions can be performed on the stream, but output must be terminated with a call to either fflush(), fseek(), fsetpos(), or rewind() before input is performed, and input must be terminated with a call to either fseek(), fsetpos(), or rewind() before output is performed, unless input encountered end-of-file. If a text file is opened with update mode, the implementation is at liberty to open a binary stream instead. This implementation honors the exact mode given. The stream is fully buffered if and only if it can be determined not to refer to an interactive device. If the mode string begins with but is longer than one of the above sequences the implementation is at liberty to ignore the additional characters, or do implementation-defined things. This implementation only accepts the exact modes above. Returns a pointer to the stream handle if successfull, NULL otherwise. */ _PDCLIB_PUBLIC FILE * fopen( const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode ); /* Close any file currently associated with the given stream. Open the file identified by the given filename with the given mode (equivalent to fopen()), and associate it with the given stream. If filename is a NULL pointer, attempt to change the mode of the given stream. This implementation allows any mode changes on "real" files, and associating of the standard streams with files. It does *not* support mode changes on standard streams. (Primary use of this function is to redirect stdin, stdout, and stderr.) Returns a pointer to the stream handle if successfull, NULL otherwise. */ _PDCLIB_PUBLIC FILE * freopen( const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode, FILE * _PDCLIB_restrict stream ); /* If buf is a NULL pointer, call setvbuf( stream, NULL, _IONBF, BUFSIZ ). If buf is not a NULL pointer, call setvbuf( stream, buf, _IOFBF, BUFSIZ ). */ _PDCLIB_PUBLIC void setbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf ); /* Set the given stream to the given buffering mode. If buf is not a NULL pointer, use buf as file buffer (of given size). If buf is a NULL pointer, use a buffer of given size allocated internally. _IONBF causes unbuffered behaviour, _IOLBF causes line-buffered behaviour, _IOFBF causes fully buffered behaviour. Calling this function is only valid right after a file is opened, and before any other operation (except for any unsuccessful calls to setvbuf()) has been performed. Returns zero if successful, nonzero otherwise. */ _PDCLIB_PUBLIC int setvbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf, int mode, size_t size ); /* Formatted input/output functions */ /* Write output to the given stream, as defined by the given format string and 0..n subsequent arguments (the argument stack). The format string is written to the given stream verbatim, except for any conversion specifiers included, which start with the letter '%' and are documented below. If the given conversion specifiers require more arguments from the argument stack than provided, behaviour is undefined. Additional arguments not required by conversion specifiers are evaluated but otherwise ignored. (The standard specifies the format string is allowed to contain multibyte character sequences as long as it starts and ends in initial shift state, but this is not yet supported by this implementation, which interprets the format string as sequence of char.) TODO: Add multibyte support to printf() functions. A conversion specifier consists of: - Zero or more flags (one of the characters "-+ #0"). - Optional minimum field width as decimal integer. Default is padding to the left, using spaces. Note that 0 is taken as a flag, not the beginning of a field width. Note also that a small field width will not result in the truncation of a value. - Optional precision (given as ".#" with # being a decimal integer), specifying: - the min. number of digits to appear (diouxX), - the max. number of digits after the decimal point (aAeEfF), - the max. number of significant digits (gG), - the max. number of bytes to be written (s). - behaviour with other conversion specifiers is undefined. - Optional length modifier specifying the size of the argument (one of "hh", "ll", or one of the characters "hljztL"). - Conversion specifier character specifying the type of conversion to be applied (and the type of the next argument from the argument stack). One of the characters "diouxXfFeEgGaAcspn%". Minimum field width and/or precision may be given as asterisk ('*') instead of a decimal integer. In this case, the next argument from the argument stack is assumed to be an int value specifying the width / precision. A negative field width is interpreted as flag '-' followed by a positive field width. A negative precision is interpreted as if no precision was given. FLAGS - Left-justify the conversion result within its field width. + Prefix a '+' on positive signed conversion results. Prefix a '-' on floating conversions resulting in negative zero, or negative values rounding to zero. space Prefix a space on positive signed conversion results, or if a signed conversion results in no characters. If both '+' and ' ' are given, ' ' is ignored. # Use an "alternative form" for - 'o' conversion, increasing precision until the first digit of the result is a zero; - 'x' or 'X' conversion, prefixing "0x" or "0X" to nonzero results; - "aAeEfF" conversions, always printing a decimal point even if no digits are following; - 'g' or 'G' conversions, always printing a decimal point even if no digits are following, and not removing trailing zeroes. - behaviour for other conversions is unspecified. 0 Use leading zeroes instead of spaces for field width padding. If both '-' and '0' are given, '0' is ignored. If a precision is specified for any of the "diouxX" conversions, '0' is ignored. Behaviour is only defined for "diouxXaAeEfFgG". LENGTH MODIFIERS hh For "diouxX" conversions, the argument from the argument stack is assumed to be of char width. (It will have been subject to integer promotion but will be converted back.) For 'n' conversions, the argument is assumed to be a pointer to signed char. h For "diouxX" conversions, the argument from the argument stack is assumed to be of short int width. (It will have been subject to integer promotion but will be converted back.) For 'n' conversions, the argument is assumed to be a pointer to short int. l For "diouxX" conversions, the argument from the argument stack is assumed to be of long int width. For 'n' conversions, the argument is assumed to be a pointer to short int. For 'c' conversions, the argument is assumed to be a wint_t. For 's' conversions, the argument is assumed to be a pointer to wchar_t. No effect on "aAeEfFgG" conversions. ll For "diouxX" conversions, the argument from the argument stack is assumed to be of long long int width. For 'n' conversions, the argument is assumed to be a pointer to long long int. j For "diouxX" conversions, the argument from the argument stack is assumed to be of intmax_t width. For 'n' conversions, the argument is assumed to be a pointer to intmax_t. z For "diouxX" conversions, the argument from the argument stack is assumed to be of size_t width. For 'n' conversions, the argument is assumed to be a pointer to size_t. t For "diouxX" conversions, the argument from the argument stack is assumed to be of ptrdiff_t width. For 'n' conversions, the argument is assumed to be a pointer to ptrdiff_t. L For "aAeEfFgG" conversions, the argument from the argument stack is assumed to be a long double. Length modifiers appearing for any conversions not mentioned above will have undefined behaviour. If a length modifier appears with any conversion specifier other than as specified above, the behavior is undefined. CONVERSION SPECIFIERS d,i The argument from the argument stack is assumed to be of type int, and is converted to a signed decimal value with a minimum number of digits as specified by the precision (default 1), padded with leading zeroes. A zero value converted with precision zero yields no output. o The argument from the argument stack is assumed to be of type unsigned int, and is converted to an unsigned octal value, other behaviour being as above. u The argument from the argument stack is assumed to be of type unsigned int, and converted to an unsigned decimal value, other behaviour being as above. x,X The argument from the argument stack is assumed to be of type unsigned int, and converted to an unsigned hexadecimal value, using lowercase "abcdef" for 'x' and uppercase "ABCDEF" for 'X' conversion, other behaviour being as above. f,F The argument from the argument stack is assumed to be of type double, and converted to a decimal floating point in decimal-point notation, with the number of digits after the decimal point as specified by the precision (default 6) and the value being rounded appropriately. If precision is zero (and the '#' flag is not given), no decimal point is printed. At least one digit is always printed before the decimal point. For 'f' conversions, an infinity value is printed as either [-]inf or [-]infinity (, depending on the configuration of this implementation. A NaN value is printed as [-]nan. For 'F' conversions uppercase characters are used for these special values. The flags '-', '+' and ' ' apply as usual to these special values, '#' and '0' have no effect. e,E The argument from the argument stack is assumed to be of type double, and converted to a decimal floating point in normalized exponential notation ([?]d.ddd edd). "Normalized" means one nonzero digit before the decimal point, unless the value is zero. The number of digits after the decimal point is specified by the precision (default 6), the value being rounded appropriately. If precision is zero (and the '#' flag is not given), no decimal point is printed. The exponent has at least two digits, and not more than necessary to represent the exponent. If the value is zero, the exponent is zero. The 'e' written to indicate the exponend is uppercase for 'E' conversions. Infinity or NaN values are represented as for 'f' and 'F' conversions, respectively. g,G The argument from the argument stack is assumed to be of type double, and converted according to either 'f' or 'e' format for 'g' conversions, or 'F' or 'E' format for 'G' conversions, respectively, with the actual conversion chosen depending on the value. 'e' / 'E' conversion is chosen if the resulting exponent is < -4 or >= the precision (default 1). Trailing zeroes are removed (unless the '#' flag is given). A decimal point appears only if followed by a digit. Infinity or NaN values are represented as for 'f' and 'F' conversions, respectively. a,A The argument from the argument stack is assumed to be of type double, and converted to a floating point hexadecimal notation ([?]0xh.hhhh pd) with one hexadecimal digit (being nonzero if the value is normalized, and otherwise unspecified) before the decimal point, and the number of digits after the decimal point being specified by the precision. If no precision is given, the default is to print as many digits as nevessary to give an exact representation of the value (if FLT_RADIX is a power of 2). If no precision is given and FLT_RADIX is not a power of 2, the default is to print as many digits to distinguish values of type double (possibly omitting trailing zeroes). (A precision p is sufficient to distinguish values of the source type if 16^p-1 > b^n where b is FLT_RADIX and n is the number of digits in the significand (to base b) of the source type. A smaller p might suffice depending on the implementation's scheme for determining the digit to the left of the decimal point.) The error has the correct sign for the current rounding direction. Unless the '#' flag is given, no decimal-point is given for zero precision. The 'a' conversion uses lowercase "abcdef", "0x" and 'p', the 'A' conversion uppercase "ABCDEF", "0X" and 'P'. The exponent always has at least one digit, and not more than necessary to represent the decimal exponent of 2. If the value is zero, the exponent is zero. Infinity or NaN values are represented as for 'f' and 'F' conversions, respectively. Binary implementations are at liberty to chose the hexadecimal digit to the left of the decimal point so that subsequent digits align to nibble boundaries. c The argument from the argument stack is assumed to be of type int, and converted to a character after the value has been cast to unsigned char. If the 'l' length modifier is given, the argument is assumed to be of type wint_t, and converted as by a "%ls" conversion with no precision and a pointer to a two-element wchar_t array, with the first element being the wint_t argument and the second a '\0' wide character. s The argument from the argument stack is assumed to be a char array (i.e. pointer to char). Characters from that array are printed until a zero byte is encountered or as many bytes as specified by a given precision have been written. If the l length modifier is given, the argument from the argument stack is assumed to be a wchar_t array (i.e. pointer to wchar_t). Wide characters from that array are converted to multibyte characters as by calls to wcrtomb() (using a mbstate_t object initialized to zero prior to the first conversion), up to and including the terminating null wide character. The resulting multibyte character sequence is then printed up to but not including the terminating null character. If a precision is given, it specifies the maximum number of bytes to be written (including shift sequences). If the given precision would require access to a wide character one past the end of the array, the array shall contain a '\0' wide character. In no case is a partial multibyte character written. Redundant shift sequences may result if the multibyte characters have a state-dependent encoding. TODO: Clarify these statements regarding %ls. p The argument from the argument stack is assumed to be a void pointer, and converted to a sequence of printing characters in an implementation- defined manner. This implementation casts the pointer to type intptr_t, and prints the value as if a %#x conversion specifier was given. n The argument from the argument stack is assumed to be a pointer to a signed integer, into which the number of characters written so far by this call to fprintf is stored. The behaviour, should any flags, field widths, or precisions be given is undefined. % A verbatim '%' character is written. No argument is taken from the argument stack. Returns the number of characters written if successful, a negative value otherwise. */ _PDCLIB_PUBLIC int fprintf( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, ... ); /* TODO: fscanf() documentation */ /* Read input from a given stream, as defined by the given format string, and store converted input in the objects pointed to by 0..n subsequent arguments (the argument stack). The format string contains a sequence of directives that are expected to match the input. If such a directive fails to match, the function returns (matching error). It also returns if an input error occurs (input error). Directives can be: - one or more whitespaces, matching any number of whitespaces in the input; - printing characters, matching the input verbatim; - conversion specifications, which convert an input sequence into a value as defined by the individual specifier, and store that value in a memory location pointed to by the next pointer on the argument stack. Details are documented below. If there is an insufficient number of pointers on the argument stack, behaviour is undefined. Additional arguments not required by any conversion specifications are evaluated, but otherwise ignored. (The standard specifies the format string is allowed to contain multibyte character sequences as long as it starts and ends in initial shift state, but this is not yet supported by this implementation, which interprets the format string as sequence of char.) TODO: Add multibyte support to scanf() functions. A conversion specifier consists of: - Optional assignment-suppressing character ('*') that makes the conversion read input as usual, but does not assign the conversion result. - Optional maximum field width as decimal integer. - Optional length modifier specifying the size of the argument (one of "hh", "ll", or one of the characters "hljztL"). - Conversion specifier character specifying the type of conversion to be applied (and the type of the next argument from the argument stack). One of the characters "diouxXaAeEfFgGcs[pn%". LENGTH MODIFIERS hh For "diouxXn" conversions, the next pointer from the argument stack is assumed to point to a variable of of char width. h For "diouxXn" conversions, the next pointer from the argument stack is assumed to point to a variable of short int width. l For "diouxXn" conversions, the next pointer from the argument stack is assumed to point to a variable of long int width. For "aAeEfFgG" conversions, it is assumed to point to a variable of type double. For "cs[" conversions, it is assumed to point to a variable of type wchar_t. ll For "diouxXn" conversions, the next pointer from the argument stack is assumed to point to a variable of long long int width. j For "diouxXn" conversions, the next pointer from the argument stack is assumed to point to a variable of intmax_t width. z For "diouxXn" conversions, the next pointer from the argument stack is assumed to point to a variable of size_t width. t For "diouxXn" conversions, the next pointer from the argument stack is assumed to point to a variable of ptrdiff_t width. L For "aAeEfFgG" conversions, the next pointer from the argument stack is assumed to point to a variable of type long double. Length modifiers appearing for any conversions not mentioned above will have undefined behaviour. If a length modifier appears with any conversion specifier other than as specified above, the behavior is undefined. CONVERSION SPECIFIERS d Matches an (optionally signed) decimal integer of the format expected by strtol() with base 10. The next pointer from the argument stack is assumed to point to a signed integer. i Matches an (optionally signed) integer of the format expected by strtol() with base 0. The next pointer from the argument stack is assumed to point to a signed integer. o Matches an (optionally signed) octal integer of the format expected by strtoul() with base 8. The next pointer from the argument stack is assumed to point to an unsigned integer. u Matches an (optionally signed) decimal integer of the format expected by strtoul() with base 10. The next pointer from the argument stack is assumed to point to an unsigned integer. x Matches an (optionally signed) hexadecimal integer of the format expected by strtoul() with base 16. The next pointer from the argument stack is assumed to point to an unsigned integer. aefg Matches an (optionally signed) floating point number, infinity, or not- a-number-value of the format expected by strtod(). The next pointer from the argument stack is assumed to point to a float. c Matches a number of characters as specified by the field width (default 1). The next pointer from the argument stack is assumed to point to a character array large enough to hold that many characters. If the 'l' length modifier is given, the input is assumed to match a sequence of multibyte characters (starting in the initial shift state), which will be converted to a wide character sequence as by successive calls to mbrtowc() with a mbstate_t object initialized to zero prior to the first conversion. The next pointer from the argument stack is assumed to point to a wchar_t array large enough to hold that many characters. In either case, note that no '\0' character is added to terminate the sequence. s Matches a sequence of non-white-space characters. The next pointer from the argument stack is assumed to point to a character array large enough to hold the sequence including terminating '\0' character. If the 'l' length modifier is given, the input is assumed to match a sequence of multibyte characters (starting in the initial shift state), which will be converted to a wide character sequence as by a call to mbrtowc() with a mbstate_t object initialized to zero prior to the first conversion. The next pointer from the argument stack is assumed to point to a wchar_t array large enough to hold the sequence including terminating '\0' character. [ Matches a nonempty sequence consisting of any of those characters specified between itself and a corresponding closing bracket (']'). If the first character in the list is a circumflex ('^'), this matches a nonempty sequence consisting of any characters NOT specified. If the closing bracket appears as the first character in the scanset ("[]" or "[^]", it is assumed to belong to the scanset, which then ends with the NEXT closing bracket. If there is a '-' character in the scanset which is not the first after the opening bracket (or the circumflex, see above) or the last in the scanset, behaviour is implementation-defined. This implementation handles this character like any other. The extend of the input field is determined byte-by-byte for the above conversions ('c', 's', '['), with no special provisions being made for multibyte characters. The resulting field is nevertheless a multibyte sequence begining in intial shift state. p Matches a sequence of characters as produced by the printf() "%p" conversion. The next pointer from the argument stack is assumed to point to a void pointer, which will be filled with the same location as the pointer used in the printf() statement. Note that behaviour is undefined if the input value is not the result of an earlier printf() call. n Does not read input. The next pointer from the argument stack is assumed to point to a signed integer, into which the number of characters read from input so far by this call to fscanf() is stored. This does not affect the return value of fscanf(). The behaviour, should an assignment-supressing character of field width be given, is undefined. This can be used to test the success of literal matches and suppressed assignments. % Matches a single, verbatim '%' character. A, E, F, G and X are valid, and equivalent to their lowercase counterparts. All conversions except [, c, or n imply that whitespace characters from the input stream are consumed until a non-whitespace character is encountered. Such whitespaces do not count against a maximum field width. Conversions push at most one character back into the input stream. That implies that some character sequences converted by the strtol() and strtod() function families are not converted identically by the scnaf() function family. Returns the number of input items successfully assigned. This can be zero if an early mismatch occurs. Returns EOF if an input failure occurs before the first conversion. */ _PDCLIB_PUBLIC int fscanf( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, ... ); /* Equivalent to fprintf( stdout, format, ... ). */ _PDCLIB_PUBLIC int printf( const char * _PDCLIB_restrict format, ... ); /* Equivalent to fscanf( stdin, format, ... ). */ _PDCLIB_PUBLIC int scanf( const char * _PDCLIB_restrict format, ... ); /* Equivalent to fprintf( stdout, format, ... ), except that the result is written into the buffer pointed to by s, instead of stdout, and that any characters beyond the (n-1)th are discarded. The (n)th character is replaced by a '\0' character in this case. Returns the number of characters that would have been written (not counting the terminating '\0' character) if n had been sufficiently large, if successful, and a negative number if an encoding error ocurred. */ _PDCLIB_PUBLIC int snprintf( char * _PDCLIB_restrict s, size_t n, const char * _PDCLIB_restrict format, ... ); /* Equivalent to fprintf( stdout, format, ... ), except that the result is written into the buffer pointed to by s, instead of stdout. */ _PDCLIB_PUBLIC int sprintf( char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, ... ); /* Equivalent to fscanf( stdin, format, ... ), except that the input is read from the buffer pointed to by s, instead of stdin. */ _PDCLIB_PUBLIC int sscanf( const char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, ... ); /* Equivalent to fprintf( stream, format, ... ), except that the argument stack is passed as va_list parameter. Note that va_list is not declared by . */ _PDCLIB_PUBLIC int vfprintf( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); /* Equivalent to fscanf( stream, format, ... ), except that the argument stack is passed as va_list parameter. Note that va_list is not declared by . */ _PDCLIB_PUBLIC int vfscanf( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); /* Equivalent to fprintf( stdout, format, ... ), except that the argument stack is passed as va_list parameter. Note that va_list is not declared by . */ _PDCLIB_PUBLIC int vprintf( const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); /* Equivalent to fscanf( stdin, format, ... ), except that the argument stack is passed as va_list parameter. Note that va_list is not declared by . */ _PDCLIB_PUBLIC int vscanf( const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); /* Equivalent to snprintf( s, n, format, ... ), except that the argument stack is passed as va_list parameter. Note that va_list is not declared by . */ _PDCLIB_PUBLIC int vsnprintf( char * _PDCLIB_restrict s, size_t n, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); /* Equivalent to fprintf( stdout, format, ... ), except that the argument stack is passed as va_list parameter, and the result is written to the buffer pointed to by s, instead of stdout. Note that va_list is not declared by . */ _PDCLIB_PUBLIC int vsprintf( char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); /* Equivalent to fscanf( stdin, format, ... ), except that the argument stack is passed as va_list parameter, and the input is read from the buffer pointed to by s, instead of stdin. Note that va_list is not declared by . */ _PDCLIB_PUBLIC int vsscanf( const char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); /* Character input/output functions */ /* Retrieve the next character from given stream. Returns the character, EOF otherwise. If end-of-file is reached, the EOF indicator of the stream is set. If a read error occurs, the error indicator of the stream is set. */ _PDCLIB_PUBLIC int fgetc( FILE * stream ); /* Read at most n-1 characters from given stream into the array s, stopping at \n or EOF. Terminate the read string with \n. If EOF is encountered before any characters are read, leave the contents of s unchanged. Returns s if successful, NULL otherwise. If a read error occurs, the error indicator of the stream is set. In this case, the contents of s are indeterminate. */ _PDCLIB_PUBLIC char * fgets( char * _PDCLIB_restrict s, int n, FILE * _PDCLIB_restrict stream ); /* Write the value c (cast to unsigned char) to the given stream. Returns c if successful, EOF otherwise. If a write error occurs, sets the error indicator of the stream is set. */ _PDCLIB_PUBLIC int fputc( int c, FILE * stream ); /* Write the string s (not including the terminating \0) to the given stream. Returns a value >=0 if successful, EOF otherwise. This implementation does set the error indicator of the stream if a write error occurs. */ _PDCLIB_PUBLIC int fputs( const char * _PDCLIB_restrict s, FILE * _PDCLIB_restrict stream ); /* Equivalent to fgetc( stream ), but may be overloaded by a macro that evaluates its parameter more than once. */ _PDCLIB_PUBLIC int getc( FILE * stream ); /* Equivalent to fgetc( stdin ). */ _PDCLIB_PUBLIC int getchar( void ); /* Equivalent to fputc( c, stream ), but may be overloaded by a macro that evaluates its parameter more than once. */ _PDCLIB_PUBLIC int putc( int c, FILE * stream ); /* Equivalent to fputc( c, stdout ), but may be overloaded by a macro that evaluates its parameter more than once. */ _PDCLIB_PUBLIC int putchar( int c ); /* Write the string s (not including the terminating \0) to stdout, and append a newline to the output. Returns a value >= 0 when successful, EOF if a write error occurred. */ _PDCLIB_PUBLIC int puts( const char * s ); /* Push the value c (cast to unsigned char) back onto the given (input) stream. A character pushed back in this way will be delivered by subsequent read operations (and skipped by subsequent file positioning operations) as if it has not been read. The external representation of the stream is unaffected by this pushback (it is a buffer operation). One character of pushback is guaranteed, further pushbacks may fail. EOF as value for c does not change the input stream and results in failure of the function. For text files, the file position indicator is indeterminate until all pushed-back characters are read. For binary files, the file position indicator is decremented by each successful call of ungetc(). If the file position indicator for a binary file was zero before the call of ungetc(), behaviour is undefined. (Older versions of the library allowed such a call.) Returns the pushed-back character if successful, EOF if it fails. */ _PDCLIB_PUBLIC int ungetc( int c, FILE * stream ); /* Direct input/output functions */ /* Read up to nmemb elements of given size from given stream into the buffer pointed to by ptr. Returns the number of elements successfully read, which may be less than nmemb if a read error or EOF is encountered. If a read error is encountered, the value of the file position indicator is indeterminate. If a partial element is read, its value is indeterminate. If size or nmemb are zero, the function does nothing and returns zero. */ _PDCLIB_PUBLIC size_t fread( void * _PDCLIB_restrict ptr, size_t size, size_t nmemb, FILE * _PDCLIB_restrict stream ); /* Write up to nmemb elements of given size from buffer pointed to by ptr to the given stream. Returns the number of elements successfully written, which will be less than nmemb only if a write error is encountered. If a write error is encountered, the value of the file position indicator is indeterminate. If size or nmemb are zero, the function does nothing and returns zero. */ _PDCLIB_PUBLIC size_t fwrite( const void * _PDCLIB_restrict ptr, size_t size, size_t nmemb, FILE * _PDCLIB_restrict stream ); /* File positioning functions */ /* Store the current position indicator (and, where appropriate, the current mbstate_t status object) for the given stream into the given pos object. The actual contents of the object are unspecified, but it can be used as second parameter to fsetpos() to reposition the stream to the exact position and parse state at the time fgetpos() was called. Returns zero if successful, nonzero otherwise. TODO: Implementation-defined errno setting for fgetpos(). */ _PDCLIB_PUBLIC int fgetpos( FILE * _PDCLIB_restrict stream, fpos_t * _PDCLIB_restrict pos ); /* Set the position indicator for the given stream to the given offset from: - the beginning of the file if whence is SEEK_SET, - the current value of the position indicator if whence is SEEK_CUR, - end-of-file if whence is SEEK_END. On text streams, non-zero offsets are only allowed with SEEK_SET, and must have been returned by ftell() for the same file. Any characters buffered by ungetc() are dropped, the end-of-file indicator for the stream is cleared. If the given stream is an update stream, the next operation after a successful fseek() may be either input or output. Returns zero if successful, nonzero otherwise. If a read/write error occurs, the error indicator for the given stream is set. */ _PDCLIB_PUBLIC int fseek( FILE * stream, long int offset, int whence ); /* Set the position indicator (and, where appropriate the mbstate_t status object) for the given stream to the given pos object (created by an earlier call to fgetpos() on the same file). Any characters buffered by ungetc() are dropped, the end-of-file indicator for the stream is cleared. If the given stream is an update stream, the next operation after a successful fsetpos() may be either input or output. Returns zero if successful, nonzero otherwise. If a read/write error occurs, the error indicator for the given stream is set. TODO: Implementation-defined errno setting for fsetpos(). */ _PDCLIB_PUBLIC int fsetpos( FILE * stream, const fpos_t * pos ); /* Return the current offset of the given stream from the beginning of the associated file. For text streams, the exact value returned is unspecified (and may not be equal to the number of characters), but may be used in subsequent calls to fseek(). Returns -1L if unsuccessful. TODO: Implementation-defined errno setting for ftell(). */ _PDCLIB_PUBLIC long int ftell( FILE * stream ); /* Equivalent to (void)fseek( stream, 0L, SEEK_SET ), except that the error indicator for the stream is also cleared. */ _PDCLIB_PUBLIC void rewind( FILE * stream ); /* Error-handling functions */ /* Clear the end-of-file and error indicators for the given stream. */ _PDCLIB_PUBLIC void clearerr( FILE * stream ); /* Return zero if the end-of-file indicator for the given stream is not set, nonzero otherwise. */ _PDCLIB_PUBLIC int feof( FILE * stream ); /* Return zero if the error indicator for the given stream is not set, nonzero otherwise. */ _PDCLIB_PUBLIC int ferror( FILE * stream ); /* If s is neither a NULL pointer nor an empty string, print the string to stderr (with appended colon (':') and a space) first. In any case, print an error message depending on the current value of errno (being the same as if strerror( errno ) had been called). */ _PDCLIB_PUBLIC void perror( const char * s ); /* Annex K -- Bounds-checking interfaces */ #if ( __STDC_WANT_LIB_EXT1__ + 0 ) != 0 #define L_tmpnam_s _PDCLIB_L_tmpnam #define TMP_MAX_S _PDCLIB_TMP_MAX #ifndef _PDCLIB_ERRNO_T_DEFINED #define _PDCLIB_ERRNO_T_DEFINED _PDCLIB_ERRNO_T_DEFINED typedef int errno_t; #endif #ifndef _PDCLIB_RSIZE_T_DEFINED #define _PDCLIB_RSIZE_T_DEFINED _PDCLIB_RSIZE_T_DEFINED typedef _PDCLIB_size_t rsize_t; #endif /* Open a temporary file with mode "wb+", i.e. binary-update. Remove the file automatically if it is closed or the program exits normally (by returning from main() or calling exit()). If successful, the FILE * pointed to by streamptr will be set to point at the opened file handle, and the function returns zero. If unsuccessful, the FILE * pointed to by streamptr will be set to NULL and a non-zero value is returned. The following conditions will be considered runtime constraint violations: - streamptr being NULL. In case of a constraint violation, no file is being created. This implementation does not remove temporary files if the process aborts abnormally (e.g. abort()). */ _PDCLIB_PUBLIC errno_t tmpfile_s( FILE * _PDCLIB_restrict * _PDCLIB_restrict streamptr ); /* Open the file with the given filename in the given mode, and sets the given streamptr to point at the file handle for that file, in which error and end-of-file indicator are cleared. Defined values for mode are: READ MODES text files binary files without update "r" "rb" with update "r+" "rb+" or "r+b" Opening in read mode fails if no file with the given filename exists, or if cannot be read. WRITE MODES text files binary files without update "w" "wb" with update "w+" "wb+" or "w+b" With write modes, if a file with the given filename already exists, it is truncated to zero length. APPEND MODES text files binary files without update "a" "ab" with update "a+" "ab+" or "a+b" With update modes, if a file with the given filename already exists, it is not truncated to zero length, but all writes are forced to end-of-file (this regardless to fseek() calls). Note that binary files opened in append mode might have their end-of-file padded with '\0' characters. Update modes mean that both input and output functions can be performed on the stream, but output must be terminated with a call to either fflush(), fseek(), fsetpos(), or rewind() before input is performed, and input must be terminated with a call to either fseek(), fsetpos(), or rewind() before output is performed, unless input encountered end-of-file. If a text file is opened with update mode, the implementation is at liberty to open a binary stream instead. This implementation honors the exact mode given. The stream is fully buffered if and only if it can be determined not to refer to an interactive device. If the mode string begins with but is longer than one of the above sequences the implementation is at liberty to ignore the additional characters, or do implementation-defined things. This implementation only accepts the exact modes above. The following conditions will be considered runtime constraint violations: - streamptr being NULL. - filename being NULL. - mode being NULL. In case of a constraint violation, no file is opened. If streamptr is not NULL, *streamptr is set to NULL. Returns zero if successful, non-zero otherwise. */ _PDCLIB_PUBLIC errno_t fopen_s( FILE * _PDCLIB_restrict * _PDCLIB_restrict streamptr, const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode ); /* Close any file currently associated with the given stream. Open the file identified by the given filename with the given mode (equivalent to fopen()), and associate it with the given stream. If filename is a NULL pointer, attempt to change the mode of the given stream. This implementation allows any mode changes on "real" files, and associating of the standard streams with files. It does *not* support mode changes on standard streams. (Primary use of this function is to redirect stdin, stdout, and stderr.) The following conditions will be considered runtime constraint violations: - newstreamptr being NULL. - mode being NULL. - stream being NULL. In case of a constraint violation, no attempt is made to close or open any file. If newstreamptr is not NULL, *newstreamptr is set to NULL. Returns zero if successfull, non-zero otherwise. */ _PDCLIB_PUBLIC errno_t freopen_s( FILE * _PDCLIB_restrict * _PDCLIB_restrict newstreamptr, const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode, FILE * _PDCLIB_restrict stream ); /* None of these are implemented yet. Placeholder declarations. */ _PDCLIB_PUBLIC errno_t tmpnam_s( char * s, rsize_t maxsize ); _PDCLIB_PUBLIC int fprintf_s( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, ... ); _PDCLIB_PUBLIC int fscanf_s( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, ... ); _PDCLIB_PUBLIC int printf_s( const char * _PDCLIB_restrict format, ... ); _PDCLIB_PUBLIC int scanf_s( const char * _PDCLIB_restrict format, ... ); _PDCLIB_PUBLIC int snprintf_s( char * _PDCLIB_restrict s, rsize_t n, const char * _PDCLIB_restrict format, ... ); _PDCLIB_PUBLIC int sprintf_s( char * _PDCLIB_restrict s, rsize_t n, const char * _PDCLIB_restrict format, ... ); _PDCLIB_PUBLIC int sscanf_s( const char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, ... ); _PDCLIB_PUBLIC int vfprintf_s( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); _PDCLIB_PUBLIC int vfscanf_s( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); _PDCLIB_PUBLIC int vprintf_s( const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); _PDCLIB_PUBLIC int vscanf_s( const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); _PDCLIB_PUBLIC int vsnprintf_s( char * _PDCLIB_restrict s, rsize_t n, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); _PDCLIB_PUBLIC int vsprintf_s( char * _PDCLIB_restrict s, rsize_t n, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); _PDCLIB_PUBLIC int vsscanf_s( const char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); _PDCLIB_PUBLIC char * gets_s( char * s, rsize_t n ); #endif /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_STDIO_H #include _PDCLIB_EXTEND_STDIO_H #endif #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/stdalign.h0000644000175000001440000000107114676735310022641 0ustar mhxusers/* Alignment This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_STDALIGN_H #define _PDCLIB_ALIGN_H _PDCLIB_ALIGN_H #ifndef __cplusplus #define alignas _Alignas #define alignof _Alignof #endif #define __alignas_is_defined 1 #define __alignof_is_defined 1 /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_STDALIGN_H #include _PDCLIB_EXTEND_STDALIGN_H #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/stdlib.h0000644000175000001440000004312214676735310022320 0ustar mhxusers/* General utilities This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_STDLIB_H #define _PDCLIB_STDLIB_H _PDCLIB_STDLIB_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_lib_ext1.h" #include "pdclib/_PDCLIB_internal.h" #ifndef _PDCLIB_SIZE_T_DEFINED #define _PDCLIB_SIZE_T_DEFINED _PDCLIB_SIZE_T_DEFINED typedef _PDCLIB_size_t size_t; #endif #ifndef _PDCLIB_NULL_DEFINED #define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED #define NULL _PDCLIB_NULL #endif /* Numeric conversion functions */ /* TODO: atof(), strtof(), strtod(), strtold() */ _PDCLIB_PUBLIC double atof( const char * nptr ); _PDCLIB_PUBLIC double strtod( const char * _PDCLIB_restrict nptr, char ** _PDCLIB_restrict endptr ); _PDCLIB_PUBLIC float strtof( const char * _PDCLIB_restrict nptr, char ** _PDCLIB_restrict endptr ); _PDCLIB_PUBLIC long double strtold( const char * _PDCLIB_restrict nptr, char ** _PDCLIB_restrict endptr ); /* Separate the character array nptr into three parts: A (possibly empty) sequence of whitespace characters, a character representation of an integer to the given base, and trailing invalid characters (including the terminating null character). If base is 0, assume it to be 10, unless the integer representation starts with 0x / 0X (setting base to 16) or 0 (setting base to 8). If given, base can be anything from 0 to 36, using the 26 letters of the base alphabet (both lowercase and uppercase) as digits 10 through 35. The integer representation is then converted into the return type of the function. It can start with a '+' or '-' sign. If the sign is '-', the result of the conversion is negated. If the conversion is successful, the converted value is returned. If endptr is not a NULL pointer, a pointer to the first trailing invalid character is returned in *endptr. If no conversion could be performed, zero is returned (and nptr in *endptr, if endptr is not a NULL pointer). If the converted value does not fit into the return type, the functions return LONG_MIN, LONG_MAX, ULONG_MAX, LLONG_MIN, LLONG_MAX, or ULLONG_MAX respectively, depending on the sign of the integer representation and the return type, and errno is set to ERANGE. */ /* There is strtoimax() and strtoumax() in operating on intmax_t / uintmax_t, if the long long versions do not suit your needs. */ _PDCLIB_PUBLIC long int strtol( const char * _PDCLIB_restrict nptr, char ** _PDCLIB_restrict endptr, int base ); _PDCLIB_PUBLIC long long int strtoll( const char * _PDCLIB_restrict nptr, char ** _PDCLIB_restrict endptr, int base ); _PDCLIB_PUBLIC unsigned long int strtoul( const char * _PDCLIB_restrict nptr, char ** _PDCLIB_restrict endptr, int base ); _PDCLIB_PUBLIC unsigned long long int strtoull( const char * _PDCLIB_restrict nptr, char ** _PDCLIB_restrict endptr, int base ); /* These functions are the equivalent of (int)strtol( nptr, NULL, 10 ), strtol( nptr, NULL, 10 ) and strtoll(nptr, NULL, 10 ) respectively, with the exception that they do not have to handle overflow situations in any defined way. (PDCLib does not simply forward these to their strtox() equivalents, but provides a simpler atox() function that saves a couple of tests and simply continues with the conversion in case of overflow.) */ _PDCLIB_PUBLIC int atoi( const char * nptr ); _PDCLIB_PUBLIC long int atol( const char * nptr ); _PDCLIB_PUBLIC long long int atoll( const char * nptr ); /* Pseudo-random sequence generation functions */ extern unsigned long int _PDCLIB_seed; #define RAND_MAX 32767 /* Returns the next number in a pseudo-random sequence, which is between 0 and RAND_MAX. (PDCLib uses the implementation suggested by the standard document, which is next = next * 1103515245 + 12345; return (unsigned int)(next/65536) % 32768;) */ _PDCLIB_PUBLIC int rand( void ); /* Initialize a new pseudo-random sequence with the starting seed. Same seeds result in the same pseudo-random sequence. The default seed is 1. */ _PDCLIB_PUBLIC void srand( unsigned int seed ); /* Memory management functions */ /* Allocate a chunk of heap memory of given size. If request could not be satisfied, return NULL. Otherwise, return a pointer to the allocated memory. Memory contents are undefined. */ _PDCLIB_PUBLIC void * malloc( size_t size ); /* Allocate a chunk of heap memory that is large enough to hold nmemb elements of the given size, and zero-initialize that memory. If request could not be satisfied, return NULL. Otherwise, return a pointer to the allocated memory. */ _PDCLIB_PUBLIC void * calloc( size_t nmemb, size_t size ); /* De-allocate a chunk of heap memory previously allocated using malloc(), calloc(), or realloc(), and pointed to by ptr. If ptr does not match a pointer previously returned by the mentioned allocation functions, or free() has already been called for this ptr, behaviour is undefined. */ _PDCLIB_PUBLIC void free( void * ptr ); /* Resize a chunk of memory previously allocated with malloc() and pointed to by ptr to the given size (which might be larger or smaller than the original size). Returns a pointer to the reallocated memory, or NULL if the request could not be satisfied. Note that the resizing might include a memcpy() from the original location to a different one, so the return value might or might not equal ptr. If size is larger than the original size, the value of memory beyond the original size is undefined. If ptr is NULL, realloc() behaves like malloc(). */ _PDCLIB_PUBLIC void * realloc( void * ptr, size_t size ); /* Communication with the environment */ /* These two can be passed to exit() or _Exit() as status values, to signal successful and unsuccessful program termination, respectively. EXIT_SUCCESS can be replaced by 0. How successful or unsuccessful program termination are signaled to the environment, and what happens if exit() or _Exit() are being called with a value that is neither of the three, is defined by the hosting OS and its glue function. */ #define EXIT_SUCCESS _PDCLIB_SUCCESS #define EXIT_FAILURE _PDCLIB_FAILURE /* Initiate abnormal process termination, unless programm catches SIGABRT and does not return from the signal handler. This implementantion flushes all streams, closes all files, and removes any temporary files before exiting with EXIT_FAILURE. abort() does not return. */ _PDCLIB_PUBLIC _PDCLIB_Noreturn void abort( void ) _PDCLIB_NORETURN; /* Register a function that will be called on quick_exit(). At least 32 functions can be registered this way, and will be called in reverse order of registration (last-in, first-out). Returns zero if registration is successfull, nonzero if it failed. */ _PDCLIB_PUBLIC int at_quick_exit( void ( *func )( void ) ); /* Register a function that will be called on exit(), or when main() returns. At least 32 functions can be registered this way, and will be called in reverse order of registration (last-in, first-out). Returns zero if registration is successfull, nonzero if it failed. */ _PDCLIB_PUBLIC int atexit( void ( *func )( void ) ); /* Normal process termination. Functions registered by atexit() (see above) are called, streams flushed, files closed and temporary files removed before the program is terminated with the given status. (See comment for EXIT_SUCCESS and EXIT_FAILURE above.) exit() does not return. */ _PDCLIB_PUBLIC _PDCLIB_Noreturn void exit( int status ) _PDCLIB_NORETURN; /* Normal process termination. Functions registered by at_quick_exit() (see above) are called, streams flushed, files closed and temporary files removed before the program is terminated with the given status. (See comment for EXIT_SUCCESS and EXIT_FAILURE above.) quick_exit() does not return. */ _PDCLIB_PUBLIC _PDCLIB_Noreturn void quick_exit( int status ) _PDCLIB_NORETURN; /* Normal process termination. Functions registered by atexit()/at_quick_exit() (see above) are NOT CALLED. This implementation DOES flush streams, close files and removes temporary files before the program is teminated with the given status. (See comment for EXIT_SUCCESS and EXIT_FAILURE above.) _Exit() does not return. */ _PDCLIB_PUBLIC _PDCLIB_Noreturn void _Exit( int status ) _PDCLIB_NORETURN; /* Search an environment-provided key-value map for the given key name, and return a pointer to the associated value string (or NULL if key name cannot be found). The value string pointed to might be overwritten by a subsequent call to getenv(). The library never calls getenv() itself. Details on the provided keys and how to set / change them are determined by the hosting OS and its glue function. */ _PDCLIB_PUBLIC char * getenv( const char * name ); /* If string is a NULL pointer, system() returns nonzero if a command processor is available, and zero otherwise. If string is not a NULL pointer, it is passed to the command processor. If system() returns, it does so with a value that is determined by the hosting OS and its glue function. */ _PDCLIB_PUBLIC int system( const char * string ); /* Searching and sorting */ /* Do a binary search for a given key in the array with a given base pointer, which consists of nmemb elements that are of the given size each. To compare the given key with an element from the array, the given function compar is called (with key as first parameter and a pointer to the array member as second parameter); the function should return a value less than, equal to, or greater than 0 if the key is considered to be less than, equal to, or greater than the array element, respectively. The function returns a pointer to a matching element found, or NULL if no match is found. */ _PDCLIB_PUBLIC void * bsearch( const void * key, const void * base, size_t nmemb, size_t size, int ( *compar )( const void *, const void * ) ); /* Do a quicksort on an array with a given base pointer, which consists of nmemb elements that are of the given size each. To compare two elements from the array, the given function compar is called, which should return a value less than, equal to, or greater than 0 if the first argument is considered to be less than, equal to, or greater than the second argument, respectively. If two elements are compared equal, their order in the sorted array is not specified. */ _PDCLIB_PUBLIC void qsort( void * base, size_t nmemb, size_t size, int ( *compar )( const void *, const void * ) ); /* Integer arithmetic functions */ /* Return the absolute value of the argument. Note that on machines using two- complement's notation (most modern CPUs), the largest negative value cannot be represented as positive value. In this case, behaviour is unspecified. */ _PDCLIB_PUBLIC int abs( int j ); _PDCLIB_PUBLIC long int labs( long int j ); _PDCLIB_PUBLIC long long int llabs( long long int j ); /* These structures each have a member quot and a member rem, of type int (for div_t), long int (for ldiv_t) and long long it (for lldiv_t) respectively. The order of the members is platform-defined to allow the div() functions below to be implemented efficiently. */ typedef struct _PDCLIB_div_t div_t; typedef struct _PDCLIB_ldiv_t ldiv_t; typedef struct _PDCLIB_lldiv_t lldiv_t; /* Return quotient (quot) and remainder (rem) of an integer division in one of the structs above. */ _PDCLIB_PUBLIC div_t div( int numer, int denom ); _PDCLIB_PUBLIC ldiv_t ldiv( long int numer, long int denom ); _PDCLIB_PUBLIC lldiv_t lldiv( long long int numer, long long int denom ); /* TODO: Multibyte / wide character conversion functions */ /* TODO: Macro MB_CUR_MAX */ /* _PDCLIB_PUBLIC int mblen( const char * s, size_t n ); _PDCLIB_PUBLIC int mbtowc( wchar_t * _PDCLIB_restrict pwc, const char * _PDCLIB_restrict s, size_t n ); _PDCLIB_PUBLIC int wctomb( char * s, wchar_t wc ); _PDCLIB_PUBLIC size_t mbstowcs( wchar_t * _PDCLIB_restrict pwcs, const char * _PDCLIB_restrict s, size_t n ); _PDCLIB_PUBLIC size_t wcstombs( char * _PDCLIB_restrict s, const wchar_t * _PDCLIB_restrict pwcs, size_t n ); */ /* Annex K -- Bounds-checking interfaces */ #if ( __STDC_WANT_LIB_EXT1__ + 0 ) != 0 #ifndef _PDCLIB_ERRNO_T_DEFINED #define _PDCLIB_ERRNO_T_DEFINED _PDCLIB_ERRNO_T_DEFINED typedef int errno_t; #endif #ifndef _PDCLIB_RSIZE_T_DEFINED #define _PDCLIB_RSIZE_T_DEFINED _PDCLIB_RSIZE_T_DEFINED typedef size_t rsize_t; #endif /* A function type that can serve as a constraint handler (see below). The first parameter is an error message on the constraint violation, the second parameter a pointer to an implementation-defined object, the third an error code related to the constraint violation. If the function calling the constraint handler is defined to return errno_t, the third parameter will be identical to the return value of that function. This implementation sets the second parameter of the constraint handler call to NULL. */ typedef void ( *constraint_handler_t )( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ); /* The currently active constraint violation handler. This implementation sets abort_handler_s as the default constraint violation handler. */ extern constraint_handler_t _PDCLIB_constraint_handler; /* Set the given function as the new constraint violation handler. */ _PDCLIB_PUBLIC constraint_handler_t set_constraint_handler_s( constraint_handler_t handler ); /* One of two predefined constraint violation handlers. When called, it will print an error message (including the message passed as the first parameter to the handler function) and call abort(). */ _PDCLIB_PUBLIC void abort_handler_s( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ); /* One of two predefined constraint violation handlers. Simply returns, ignoring the constraint violation. */ _PDCLIB_PUBLIC void ignore_handler_s( const char * _PDCLIB_restrict msg, void * _PDCLIB_restrict ptr, errno_t error ); /* Search an environment-provided key-value map for the given key name. If the name is found, - if len is not NULL, the length of the associated value string is stored in that location. - if len < maxsize, the value string is copied to the indicated location. If the name is not found, - if len is not NULL, a zero is stored in that location. - if maxsize > 0, value[0] is set to the null character. Details on the provided keys and how to set / change them are determined by the hosting OS and its glue function. The following conditions will be considered runtime constraint violations: - value being a NULL pointer. - maxsize == 0 or maxsize > RSIZE_MAX. In case of a constraint violation, if len is not NULL a zero will be stored at that location, and the environment key-value map not searched. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC errno_t getenv_s( size_t * _PDCLIB_restrict len, char * _PDCLIB_restrict value, rsize_t maxsize, const char * _PDCLIB_restrict name ); /* Do a binary search for a given key in the array with a given base pointer, which consists of nmemb elements that are of the given size each. To compare the given key with an element from the array, the given function compar is called (with key as first parameter, a pointer to the array member as second parameter, and the context parameter passed to bsearch_s() as third parameter); the function should return a value less than, equal to, or greater than 0 if the key is considered to be less than, equal to, or greater than the array element, respectively. The function returns a pointer to a matching element found, or NULL if no match is found. The following conditions will be considered runtime constraint violations: - nmemb or size > RSIZE_MAX. - nmemb > 0 and either of key, base, or compar being a null pointer. In case of a constraint violation, the array will not be searched. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC void * bsearch_s( const void * key, const void * base, rsize_t nmemb, rsize_t size, int ( *compar )( const void * k, const void * y, void * context ), void * context ); /* Do a quicksort on an array with a given base pointer, which consists of nmemb elements that are of the given size each. To compare two elements from the array, the given function compar is called, with the first two arguments being pointers to the two objects to be compared, and the third argument being the context parameter passed to qsort_s. The compar function should return a value less than, equal to, or greater than 0 if the first argument is considered to be less than, equal to, or greater than the second argument, respectively. If two elements are compared equal, their order in the sorted array is not specified. The following conditions will be considered runtime constraint violations: - nmemb or size > RSIZE_MAX. - nmemb > 0 and either of base or compar being a null pointer. In case of a constraint violation, the array will not be sorted. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC errno_t qsort_s( void * base, rsize_t nmemb, rsize_t size, int ( *compar )( const void * x, const void * y, void * context ), void * context ); /* TODO: Multibyte / wide character functions */ #endif #ifdef __cplusplus } #endif /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_STDLIB_H #include _PDCLIB_EXTEND_STDLIB_H #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/pdclib/0000755000175000001440000000000014677003524022115 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/include/pdclib/_PDCLIB_tzcode.h0000644000175000001440000001064414676735310024743 0ustar mhxusers/* TZ Code declarations and definitions <_PDCLIB_tzcode.h> This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_TZCODE_H #define _PDCLIB_TZCODE_H _PDCLIB_TZCODE_H #ifdef __cplusplus extern "C" { #endif #include #include #include #include /* Handy macros that are independent of tzfile implementation. */ #define YEARSPERREPEAT 400 /* years before a Gregorian repeat */ #define SECSPERMIN 60 #define MINSPERHOUR 60 #define HOURSPERDAY 24 #define DAYSPERWEEK 7 #define DAYSPERNYEAR 365 #define DAYSPERLYEAR 366 #define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) #define SECSPERDAY ((int_fast32_t) SECSPERHOUR * HOURSPERDAY) #define MONSPERYEAR 12 #define AVGSECSPERYEAR 31556952L #define SECSPERREPEAT ((int_fast64_t) YEARSPERREPEAT * (int_fast64_t) AVGSECSPERYEAR) #define SECSPERREPEAT_BITS 34 /* ceil(log2(SECSPERREPEAT)) */ #define TM_SUNDAY 0 #define TM_MONDAY 1 #define TM_TUESDAY 2 #define TM_WEDNESDAY 3 #define TM_THURSDAY 4 #define TM_FRIDAY 5 #define TM_SATURDAY 6 #define TM_YEAR_BASE 1900 #define EPOCH_YEAR 1970 #define EPOCH_WDAY TM_THURSDAY extern struct tm _PDCLIB_tm; extern int lcl_is_set; static const char gmt[] = "GMT"; static const int mon_lengths[ 2 ][ MONSPERYEAR ] = { { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } }; static const int year_lengths[2] = { DAYSPERNYEAR, DAYSPERLYEAR }; /* time type information */ struct ttinfo { int_fast32_t utoff; /* UT offset in seconds */ bool isdst; /* used to set tm_isdst */ int desigidx; /* abbreviation list index */ bool ttisstd; /* transition is std time */ bool ttisut; /* transition is UT */ }; /* leap second information */ struct lsinfo { time_t trans; /* transition time */ int_fast64_t corr; /* correction to apply */ }; #define BIGGEST( a, b ) (((a) > (b)) ? (a) : (b)) #ifndef TZ_MAX_TIMES #define TZ_MAX_TIMES 2000 #endif #ifndef TZ_MAX_TYPES /* This must be at least 17 for Europe/Vilnius. */ /* Limited by what (unsigned char)s can hold */ #define TZ_MAX_TYPES 256 #endif #ifndef TZ_MAX_CHARS /* Maximum number of abbreviation characters */ /* Limited by what (unsigned char)s can hold */ #define TZ_MAX_CHARS 50 #endif #ifndef TZ_MAX_LEAPS /* Maximum number of leap second corrections */ #define TZ_MAX_LEAPS 50 #endif #ifdef TZNAME_MAX #define MY_TZNAME_MAX TZNAME_MAX #else #define MY_TZNAME_MAX 255 #endif struct state { int leapcnt; int timecnt; int typecnt; int charcnt; bool goback; bool goahead; time_t ats[ TZ_MAX_TIMES ]; unsigned char types[ TZ_MAX_TIMES ]; struct ttinfo ttis[ TZ_MAX_TYPES ]; char chars[ BIGGEST( BIGGEST( TZ_MAX_CHARS + 1, sizeof gmt ), ( 2 * ( MY_TZNAME_MAX + 1 ) ) ) ]; struct lsinfo lsis[ TZ_MAX_LEAPS ]; /* The time type to use for early times or if no transitions. It is always zero for recent tzdb releases. It might be nonzero for data from tzdb 2018e or earlier. */ int defaulttype; }; extern struct state _PDCLIB_lclmem; extern struct state _PDCLIB_gmtmem; void _PDCLIB_gmtcheck(void); struct tm * _PDCLIB_gmtsub( struct state const * sp, time_t const * timep, int_fast32_t offset, struct tm * tmp ); bool _PDCLIB_increment_overflow( int * ip, int j ); void _PDCLIB_init_ttinfo( struct ttinfo * s, int_fast32_t utoff, bool isdst, int desigidx ); struct tm * _PDCLIB_localsub( struct state const * sp, time_t const * timep, int_fast32_t setname, struct tm * const tmp ); struct tm * _PDCLIB_localtime_tzset( time_t const * timep, struct tm * tmp, bool setname ); time_t _PDCLIB_mktime_tzname( struct state * sp, struct tm * tmp, bool setname ); struct tm * _PDCLIB_timesub( const time_t * timep, int_fast32_t offset, const struct state * sp, struct tm * tmp ); int _PDCLIB_tzload( char const * name, struct state * sp, bool doextend ); bool _PDCLIB_tzparse(char const *, struct state *, bool); void _PDCLIB_tzset_unlocked( void ); void _PDCLIB_update_tzname_etc( struct state const * sp, struct ttinfo const * ttisp ); #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/pdclib/_PDCLIB_lib_ext1.h0000644000175000001440000000216714676735310025163 0ustar mhxusers/* __STDC_WANT_LIB_EXT1__ redefinition guard This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef __STDC_WANT_LIB_EXT1__ #ifdef __STDC_WANT_LIB_EXT1_PREVIOUS__ #if __STDC_WANT_LIB_EXT1_PREVIOUS__ != -1 #error __STDC_WANT_LIB_EXT1__ undefined when it was defined earlier. #endif #else #define __STDC_WANT_LIB_EXT1_PREVIOUS__ -1 #endif #else #if ( __STDC_WANT_LIB_EXT1__ + 0 ) == 0 && ( 0 - __STDC_WANT_LIB_EXT1__ - 1 ) == 1 #error __STDC_WANT_LIB_EXT1__ defined but empty. Should be an integer value. #endif #ifdef __STDC_WANT_LIB_EXT1_PREVIOUS__ #if ( __STDC_WANT_LIB_EXT1__ + 0 ) != __STDC_WANT_LIB_EXT1_PREVIOUS__ #error __STDC_WANT_LIB_EXT1__ redefined from previous value. #endif #else #if ( __STDC_WANT_LIB_EXT1__ + 0 ) == 0 #define __STDC_WANT_LIB_EXT1_PREVIOUS__ 0 #elif ( __STDC_WANT_LIB_EXT1__ + 0 ) == 1 #define __STDC_WANT_LIB_EXT1_PREVIOUS__ 1 #else #error __STDC_WANT_LIB_EXT1__ set to value other than 0,1 -- undefined behavior #endif #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/pdclib/_PDCLIB_glue.h0000644000175000001440000000674514676735310024416 0ustar mhxusers/* OS glue functions declaration <_PDCLIB_glue.h> This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_GLUE_H #define _PDCLIB_GLUE_H _PDCLIB_GLUE_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_internal.h" /* -------------------------------------------------------------------------- */ /* OS "glue", part 2 */ /* These are the functions you will have to touch, as they are where PDCLib */ /* interfaces with the operating system. */ /* They operate on data types partially defined by _PDCLIB_config.h. */ /* -------------------------------------------------------------------------- */ /* stdlib.h */ /* A system call that terminates the calling process, returning a given status to the environment. */ _PDCLIB_LOCAL void _PDCLIB_Exit( int status ) _PDCLIB_NORETURN; /* stdio.h */ /* A system call that opens a file identified by name in a given mode. Return a file descriptor uniquely identifying that file. (The mode is the return value of the _PDCLIB_filemode() function.) */ _PDCLIB_LOCAL _PDCLIB_fd_t _PDCLIB_open( const char * const filename, unsigned int mode ); /* A system call that writes a stream's buffer. Returns 0 on success, EOF on write error. Sets stream error flags and errno appropriately on error. */ _PDCLIB_LOCAL int _PDCLIB_flushbuffer( struct _PDCLIB_file_t * stream ); /* A system call that fills a stream's buffer. Returns 0 on success, EOF on read error / EOF. Sets stream EOF / error flags and errno appropriately on error. */ _PDCLIB_LOCAL int _PDCLIB_fillbuffer( struct _PDCLIB_file_t * stream ); /* A system call that repositions within a file. Returns new offset on success, -1 / errno on error. */ _PDCLIB_LOCAL _PDCLIB_int_least64_t _PDCLIB_seek( struct _PDCLIB_file_t * stream, _PDCLIB_int_least64_t offset, int whence ); /* A system call that closes a file identified by given file descriptor. Return zero on success, non-zero otherwise. */ _PDCLIB_LOCAL int _PDCLIB_close( _PDCLIB_fd_t fd ); /* A system call that changes the mode of a given stream to that passed as argument (the argument being the value returned by _PDCLIB_filemode()), *without* closing the stream. See comments in example implementation for details. Return zero if the requested mode change is not supported for this stream and freopen() should try to close and reopen the stream; return INT_MIN if the change is not supported and freopen() should close and NOT try to close / reopen (i.e., fail). Return any other value on success. */ _PDCLIB_LOCAL int _PDCLIB_changemode( struct _PDCLIB_file_t * stream, unsigned int mode ); /* A system call that returns a canonicalized absolute filename in dynamically allocated memory, or NULL if the file does not exist. */ _PDCLIB_LOCAL char * _PDCLIB_realpath( const char * path ); /* A system call that removes a file. Return zero on success, non-zero otherwise. */ _PDCLIB_LOCAL int _PDCLIB_remove( const char * pathname ); /* A system call that renames a file from given old name to given new name. Return zero on success, non-zero otherwise. In case of failure, the file must still be accessible by old name. Any handling of open files etc. is done by standard rename() already. */ _PDCLIB_LOCAL int _PDCLIB_rename( const char * oldpath, const char * newpath ); #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/pdclib/_PDCLIB_internal.h0000644000175000001440000007331314676735310025271 0ustar mhxusers/* PDCLib internal logic <_PDCLIB_internal.h> This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_INTERNAL_H #define _PDCLIB_INTERNAL_H _PDCLIB_INTERNAL_H #ifdef __cplusplus extern "C" { #endif /* -------------------------------------------------------------------------- */ /* You should not have to edit anything in this file; if you DO have to, it */ /* would be considered a bug / missing feature: notify the author(s). */ /* -------------------------------------------------------------------------- */ #include "pdclib/_PDCLIB_config.h" /* -------------------------------------------------------------------------- */ /* Standard Version */ /* -------------------------------------------------------------------------- */ /* Many a compiler gets this wrong, so you might have to hardcode it instead. */ #if __STDC__ != 1 #error Compiler does not define _ _STDC_ _ to 1 (not standard-compliant)! #endif #ifndef __STDC_HOSTED__ #error Compiler does not define _ _STDC_HOSTED_ _ (not standard-compliant)! #elif __STDC_HOSTED__ != 0 && __STDC_HOSTED__ != 1 #error Compiler does not define _ _STDC_HOSTED_ _ to 0 or 1 (not standard-compliant)! #endif /* null pointer constant -- ((void *)0) in C, 0 in C++98, nullptr since C++11 */ #ifdef __cplusplus #if __cplusplus >= 201103L #define _PDCLIB_NULL nullptr #else #define _PDCLIB_NULL 0 #endif #else #define _PDCLIB_NULL ((void *)0) #endif /* restrict / inline enabled for C99 onward only */ #if __STDC_VERSION__ < 199901L #define _PDCLIB_restrict #define _PDCLIB_inline #else #define _PDCLIB_restrict restrict #define _PDCLIB_inline inline #endif /* noreturn enabled for C11 onward only */ #if __STDC_VERSION__ < 201112L #define _PDCLIB_Noreturn #else #define _PDCLIB_Noreturn _Noreturn #endif /* -------------------------------------------------------------------------- */ /* Helper macros: */ /* */ /* (defined in _PDCLIB_config.h) */ /* _PDCLIB_cc( x, y ) concatenates two preprocessor tokens without extending. */ /* _PDCLIB_concat( x, y ) concatenates two preprocessor tokens with extending */ /* */ /* (defined below) */ /* _PDCLIB_static_assert( e, m ) does a compile-time assertion of expression */ /* e, with m as the failure message. */ /* _PDCLIB_symbol2string( x ) turn symbol into string literal (by adding ""). */ /* _PDCLIB_value2string( x ) expands a preprocessor token and turns it into a */ /* string literal (by adding ""). */ /* _PDCLIB_TYPE_SIGNED( type ) resolves to true if type is signed. */ /* _PDCLIB_LOCK( mtx ) lock a mutex if library has threads support. */ /* _PDCLIB_UNLOCK( mtx ) unlock a mutex if library has threads support. */ /* _PDCLIB_CONSTRAINT_VIOLATION( e ) expand errno number e to parameter list */ /* fit for Annex K constraint violation */ /* handler. */ /* -------------------------------------------------------------------------- */ #define _PDCLIB_static_assert( e, m ) enum { _PDCLIB_concat( _PDCLIB_assert_, __LINE__ ) = 1 / ( !!(e) ) } #define _PDCLIB_TYPE_SIGNED( type ) (((type) -1) < 0) #define _PDCLIB_symbol2string( x ) #x #define _PDCLIB_value2string( x ) _PDCLIB_symbol2string( x ) #ifndef __STDC_NO_THREADS__ #define _PDCLIB_LOCK( mtx ) mtx_lock( &mtx ) #define _PDCLIB_UNLOCK( mtx ) mtx_unlock( &mtx ) #else #define _PDCLIB_LOCK( mtx ) #define _PDCLIB_UNLOCK( mtx ) #endif #define _PDCLIB_CONSTRAINT_VIOLATION( e ) _PDCLIB_lc_messages->errno_texts[e], NULL, e /* -------------------------------------------------------------------------- */ /* Preparing the length modifiers used in . */ /* -------------------------------------------------------------------------- */ /* We use the _MAX value as a proxy for the actual type here. That is crude but the best we can do, cross-platform wise. Identifying which type the leastN_t / fastN_t / intmax_t / intptr_t are and providing the appropriate printf()/scanf() length modifier. */ #if _PDCLIB_INT_FAST8_MAX == _PDCLIB_SCHAR_MAX #define _PDCLIB_INT_FAST8_PREFIX hh #elif _PDCLIB_INT_FAST8_MAX == _PDCLIB_SHRT_MAX #define _PDCLIB_INT_FAST8_PREFIX h #elif _PDCLIB_INT_FAST8_MAX == _PDCLIB_INT_MAX #define _PDCLIB_INT_FAST8_PREFIX #elif _PDCLIB_INT_FAST8_MAX == _PDCLIB_LONG_MAX #define _PDCLIB_INT_FAST8_PREFIX l #elif _PDCLIB_INT_FAST8_MAX == _PDCLIB_LLONG_MAX #define _PDCLIB_INT_FAST8_PREFIX ll #else #error No matching native type for int_fast8_t. Please check your setup. #endif #if _PDCLIB_INT_FAST16_MAX == _PDCLIB_SCHAR_MAX #define _PDCLIB_INT_FAST16_PREFIX hh #elif _PDCLIB_INT_FAST16_MAX == _PDCLIB_SHRT_MAX #define _PDCLIB_INT_FAST16_PREFIX h #elif _PDCLIB_INT_FAST16_MAX == _PDCLIB_INT_MAX #define _PDCLIB_INT_FAST16_PREFIX #elif _PDCLIB_INT_FAST16_MAX == _PDCLIB_LONG_MAX #define _PDCLIB_INT_FAST16_PREFIX l #elif _PDCLIB_INT_FAST16_MAX == _PDCLIB_LLONG_MAX #define _PDCLIB_INT_FAST16_PREFIX ll #else #error No matching native type for int_fast16_t. Please check your setup. #endif #if _PDCLIB_INT_FAST32_MAX == _PDCLIB_SCHAR_MAX #define _PDCLIB_INT_FAST32_PREFIX hh #elif _PDCLIB_INT_FAST32_MAX == _PDCLIB_SHRT_MAX #define _PDCLIB_INT_FAST32_PREFIX h #elif _PDCLIB_INT_FAST32_MAX == _PDCLIB_INT_MAX #define _PDCLIB_INT_FAST32_PREFIX #elif _PDCLIB_INT_FAST32_MAX == _PDCLIB_LONG_MAX #define _PDCLIB_INT_FAST32_PREFIX l #elif _PDCLIB_INT_FAST32_MAX == _PDCLIB_LLONG_MAX #define _PDCLIB_INT_FAST32_PREFIX ll #else #error No matching native type for int_fast32_t. Please check your setup. #endif #if _PDCLIB_INT_FAST64_MAX == _PDCLIB_SCHAR_MAX #define _PDCLIB_INT_FAST64_PREFIX hh #elif _PDCLIB_INT_FAST64_MAX == _PDCLIB_SHRT_MAX #define _PDCLIB_INT_FAST64_PREFIX h #elif _PDCLIB_INT_FAST64_MAX == _PDCLIB_INT_MAX #define _PDCLIB_INT_FAST64_PREFIX #elif _PDCLIB_INT_FAST64_MAX == _PDCLIB_LONG_MAX #define _PDCLIB_INT_FAST64_PREFIX l #elif _PDCLIB_INT_FAST64_MAX == _PDCLIB_LLONG_MAX #define _PDCLIB_INT_FAST64_PREFIX ll #else #error No matching native type for int_fast64_t. Please check your setup. #endif /* Many of the combinations below can very likely be ruled out logically. All combinations are still listed for simplicity's sake (and to not fall into the trap of false assumptions). */ #if _PDCLIB_INT_LEAST8_MAX == _PDCLIB_SCHAR_MAX #define _PDCLIB_INT_LEAST8_PREFIX hh #elif _PDCLIB_INT_LEAST8_MAX == _PDCLIB_SHRT_MAX #define _PDCLIB_INT_LEAST8_PREFIX h #elif _PDCLIB_INT_LEAST8_MAX == _PDCLIB_INT_MAX #define _PDCLIB_INT_LEAST8_PREFIX #elif _PDCLIB_INT_LEAST8_MAX == _PDCLIB_LONG_MAX #define _PDCLIB_INT_LEAST8_PREFIX l #elif _PDCLIB_INT_LEAST8_MAX == _PDCLIB_LLONG_MAX #define _PDCLIB_INT_LEAST8_PREFIX ll #else #error No matching native type for int_least8_t. Please check your setup. #endif #if _PDCLIB_INT_LEAST16_MAX == _PDCLIB_SCHAR_MAX #define _PDCLIB_INT_LEAST16_PREFIX hh #elif _PDCLIB_INT_LEAST16_MAX == _PDCLIB_SHRT_MAX #define _PDCLIB_INT_LEAST16_PREFIX h #elif _PDCLIB_INT_LEAST16_MAX == _PDCLIB_INT_MAX #define _PDCLIB_INT_LEAST16_PREFIX #elif _PDCLIB_INT_LEAST16_MAX == _PDCLIB_LONG_MAX #define _PDCLIB_INT_LEAST16_PREFIX l #elif _PDCLIB_INT_LEAST16_MAX == _PDCLIB_LLONG_MAX #define _PDCLIB_INT_LEAST16_PREFIX ll #else #error No matching native type for int_least16_t. Please check your setup. #endif #if _PDCLIB_INT_LEAST32_MAX == _PDCLIB_SCHAR_MAX #define _PDCLIB_INT_LEAST32_PREFIX hh #elif _PDCLIB_INT_LEAST32_MAX == _PDCLIB_SHRT_MAX #define _PDCLIB_INT_LEAST32_PREFIX h #elif _PDCLIB_INT_LEAST32_MAX == _PDCLIB_INT_MAX #define _PDCLIB_INT_LEAST32_PREFIX #elif _PDCLIB_INT_LEAST32_MAX == _PDCLIB_LONG_MAX #define _PDCLIB_INT_LEAST32_PREFIX l #elif _PDCLIB_INT_LEAST32_MAX == _PDCLIB_LLONG_MAX #define _PDCLIB_INT_LEAST32_PREFIX ll #else #error No matching native type for int_least32_t. Please check your setup. #endif #if _PDCLIB_INT_LEAST64_MAX == _PDCLIB_SCHAR_MAX #define _PDCLIB_INT_LEAST64_PREFIX hh #elif _PDCLIB_INT_LEAST64_MAX == _PDCLIB_SHRT_MAX #define _PDCLIB_INT_LEAST64_PREFIX h #elif _PDCLIB_INT_LEAST64_MAX == _PDCLIB_INT_MAX #define _PDCLIB_INT_LEAST64_PREFIX #elif _PDCLIB_INT_LEAST64_MAX == _PDCLIB_LONG_MAX #define _PDCLIB_INT_LEAST64_PREFIX l #elif _PDCLIB_INT_LEAST64_MAX == _PDCLIB_LLONG_MAX #define _PDCLIB_INT_LEAST64_PREFIX ll #else #error No matching native type for int_least64_t. Please check your setup. #endif #if _PDCLIB_INTMAX_MAX == _PDCLIB_SCHAR_MAX #define _PDCLIB_INTMAX_PREFIX hh #elif _PDCLIB_INTMAX_MAX == _PDCLIB_SHRT_MAX #define _PDCLIB_INTMAX_PREFIX h #elif _PDCLIB_INTMAX_MAX == _PDCLIB_INT_MAX #define _PDCLIB_INTMAX_PREFIX #elif _PDCLIB_INTMAX_MAX == _PDCLIB_LONG_MAX #define _PDCLIB_INTMAX_PREFIX l #elif _PDCLIB_INTMAX_MAX == _PDCLIB_LLONG_MAX #define _PDCLIB_INTMAX_PREFIX ll #else #error No matching native type for intmax_t. Please check your setup. #endif #if _PDCLIB_INTPTR_MAX == _PDCLIB_SCHAR_MAX #define _PDCLIB_INTPTR_PREFIX hh #elif _PDCLIB_INTPTR_MAX == _PDCLIB_SHRT_MAX #define _PDCLIB_INTPTR_PREFIX h #elif _PDCLIB_INTPTR_MAX == _PDCLIB_INT_MAX #define _PDCLIB_INTPTR_PREFIX #elif _PDCLIB_INTPTR_MAX == _PDCLIB_LONG_MAX #define _PDCLIB_INTPTR_PREFIX l #elif _PDCLIB_INTPTR_MAX == _PDCLIB_LLONG_MAX #define _PDCLIB_INTPTR_PREFIX ll #else #error No matching native type for intptr_t. Please check your setup. #endif /* We might not have a type definition for sig_atomic_t at this point. The */ /* clang compiler does not provide an appropriate predefine for it. So if we */ /* do not have _PDCLIB_sig_atomic_t, identify the type trough its MAX value. */ #ifndef _PDCLIB_sig_atomic_t #if _PDCLIB_SIG_ATOMIC_MAX == _PDCLIB_SCHAR_MAX #define _PDCLIB_sig_atomic_t char #elif _PDCLIB_SIG_ATOMIC_MAX == _PDCLIB_SHRT_MAX #define _PDCLIB_sig_atomic_t short #elif _PDCLIB_SIG_ATOMIC_MAX == _PDCLIB_INT_MAX #define _PDCLIB_sig_atomic_t int #elif _PDCLIB_SIG_ATOMIC_MAX == _PDCLIB_LONG_MAX #define _PDCLIB_sig_atomic_t long #elif _PDCLIB_SIG_ATOMIC_MAX == _PDCLIB_LLONG_MAX #define _PDCLIB_sig_atomic_t long long #else #error No matching native type for sig_atomic_t. Please check your setup. #endif #endif /* -------------------------------------------------------------------------- */ /* Various internals */ /* -------------------------------------------------------------------------- */ /* Flags for representing mode (see fopen()). Note these must fit the same status field as the _IO?BF flags in and the internal flags below. */ #define _PDCLIB_FREAD (1u<<3) #define _PDCLIB_FWRITE (1u<<4) #define _PDCLIB_FAPPEND (1u<<5) #define _PDCLIB_FRW (1u<<6) #define _PDCLIB_FBIN (1u<<7) /* Internal flags, made to fit the same status field as the flags above. */ /* -------------------------------------------------------------------------- */ /* free() the buffer memory on closing (setvbuf()) */ #define _PDCLIB_FREEBUFFER (1u<<8) /* stream has encountered error / EOF */ #define _PDCLIB_ERRORFLAG (1u<<9) #define _PDCLIB_EOFFLAG (1u<<10) /* stream is wide-oriented */ #define _PDCLIB_WIDESTREAM (1u<<11) /* stream is byte-oriented */ #define _PDCLIB_BYTESTREAM (1u<<12) /* file associated with stream should be remove()d on closing (tmpfile()) */ #define _PDCLIB_DELONCLOSE (1u<<13) /* Position / status structure for getpos() / fsetpos(). */ struct _PDCLIB_fpos_t { _PDCLIB_uint_least64_t offset; /* File position offset */ int status; /* Multibyte parsing state (unused, reserved) */ }; /* FILE structure */ struct _PDCLIB_file_t { _PDCLIB_fd_t handle; /* OS file handle */ char * buffer; /* Pointer to buffer memory */ _PDCLIB_size_t bufsize; /* Size of buffer */ _PDCLIB_size_t bufidx; /* Index of current position in buffer */ _PDCLIB_size_t bufend; /* Index of last pre-read character in buffer */ struct _PDCLIB_fpos_t pos; /* Offset and multibyte parsing state */ _PDCLIB_size_t ungetidx; /* Number of ungetc()'ed characters */ unsigned char ungetbuf[_PDCLIB_UNGETCBUFSIZE]; /* ungetc() buffer */ unsigned int status; /* Status flags; see above */ /* multibyte parsing status to be added later */ #ifndef __STDC_NO_THREADS__ _PDCLIB_mtx_t mtx; /* Multithreading safety */ #endif char * filename; /* Name the current stream has been opened with */ struct _PDCLIB_file_t * next; /* Pointer to next struct (internal) */ }; /* -------------------------------------------------------------------------- */ /* Internal data types */ /* -------------------------------------------------------------------------- */ /* Structure required by both atexit() and exit() for handling atexit functions */ struct _PDCLIB_exitfunc_t { struct _PDCLIB_exitfunc_t * next; void ( *func )( void ); }; /* Status structure required by _PDCLIB_print(). */ struct _PDCLIB_status_t { int base; /* base to which the value shall be converted */ _PDCLIB_int_fast32_t flags; /* flags and length modifiers */ _PDCLIB_size_t n; /* print: maximum characters to be written */ /* scan: number matched conversion specifiers */ _PDCLIB_size_t i; /* number of characters read/written */ _PDCLIB_size_t current;/* chars read/written in the CURRENT conversion */ char * s; /* *sprintf(): target buffer */ /* *sscanf(): source string */ _PDCLIB_size_t width; /* specified field width */ int prec; /* specified field precision */ struct _PDCLIB_file_t * stream; /* *fprintf() / *fscanf() stream */ _PDCLIB_va_list arg; /* argument stack */ }; /* -------------------------------------------------------------------------- */ /* Declaration of helper functions (implemented in functions/_PDCLIB). */ /* -------------------------------------------------------------------------- */ /* This is the main function called by atoi(), atol() and atoll(). */ _PDCLIB_LOCAL _PDCLIB_intmax_t _PDCLIB_atomax( const char * s ); /* Two helper functions used by strtol(), strtoul() and long long variants. */ _PDCLIB_LOCAL const char * _PDCLIB_strtox_prelim( const char * p, char * sign, int * base ); _PDCLIB_LOCAL _PDCLIB_uintmax_t _PDCLIB_strtox_main( const char ** p, unsigned int base, _PDCLIB_uintmax_t error, _PDCLIB_uintmax_t limval, int limdigit, char * sign ); /* Digits arrays used by various integer conversion functions */ extern const char _PDCLIB_digits[]; extern const char _PDCLIB_Xdigits[]; /* The worker for all printf() type of functions. The pointer spec should point to the introducing '%' of a conversion specifier. The status structure is to be that of the current printf() function, of which the members n, s, stream and arg will be preserved; i will be updated; and all others will be trashed by the function. Returns a pointer to the first character not parsed as conversion specifier. */ _PDCLIB_LOCAL const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status ); /* The worker for all scanf() type of functions. The pointer spec should point to the introducing '%' of a conversion specifier. The status structure is to be that of the current scanf() function, of which the member stream will be preserved; n, i, and s will be updated; and all others will be trashed by the function. Returns a pointer to the first character not parsed as conversion specifier, or NULL in case of error. FIXME: Should distinguish between matching and input error */ _PDCLIB_LOCAL const char * _PDCLIB_scan( const char * spec, struct _PDCLIB_status_t * status ); /* Parsing any fopen() style filemode string into a number of flags. */ _PDCLIB_LOCAL unsigned int _PDCLIB_filemode( const char * mode ); /* Initialize a FILE structure. If the parameter is NULL, a new FILE structure is malloc'ed. Returns a pointer to the stream if successful, NULL otherwise. */ _PDCLIB_LOCAL struct _PDCLIB_file_t * _PDCLIB_init_file_t( struct _PDCLIB_file_t * stream ); /* Sanity checking and preparing of read buffer, should be called first thing by any stdio read-data function. Returns 0 on success, EOF on error. On error, EOF / error flags and errno are set appropriately. */ _PDCLIB_LOCAL int _PDCLIB_prepread( struct _PDCLIB_file_t * stream ); /* Sanity checking, should be called first thing by any stdio write-data function. Returns 0 on success, EOF on error. On error, error flags and errno are set appropriately. */ _PDCLIB_LOCAL int _PDCLIB_prepwrite( struct _PDCLIB_file_t * stream ); /* Closing all streams on program exit */ _PDCLIB_LOCAL void _PDCLIB_closeall( void ); /* Check if a given year is a leap year. Parameter is offset to 1900. */ _PDCLIB_LOCAL int _PDCLIB_is_leap( int year_offset ); /* Read a specified number of lines from a file stream; return a pointer to allocated memory holding the lines (newlines replaced with zero terminators) or NULL in case of error. */ _PDCLIB_LOCAL char * _PDCLIB_load_lines( struct _PDCLIB_file_t * stream, _PDCLIB_size_t lines ); /* Returns the (locale dependent) error message associated with the argument errno value. */ _PDCLIB_LOCAL char * _PDCLIB_geterrtext( int errnum ); /* Returns non-zero if the given stream is on the internal list of open files, zero otherwise. Sets the second paramenter (if not NULL) to the previous stream on the list (or NULL if the given stream is the first on the list). This function does not lock _PDCLIB_filelist_mtx, this needs to be done by the calling function (_PDCLIB_getstream() or freopen()). */ _PDCLIB_LOCAL int _PDCLIB_isstream( struct _PDCLIB_file_t * stream, struct _PDCLIB_file_t ** previous ); /* Removes the given stream from the internal list of open files. Returns zero if successful, non-zero otherwise. In case of error, sets errno to EBADF. This function does not lock _PDCLIB_filelist_mtx, this needs to be done by the calling function (fclose()). */ _PDCLIB_LOCAL int _PDCLIB_getstream( struct _PDCLIB_file_t * stream ); /* Backend for strtok and strtok_s (plus potential extensions like strtok_r). */ _PDCLIB_LOCAL char * _PDCLIB_strtok( char * _PDCLIB_restrict s1, _PDCLIB_size_t * _PDCLIB_restrict s1max, const char * _PDCLIB_restrict s2, char ** _PDCLIB_restrict ptr ); /* -------------------------------------------------------------------------- */ /* errno */ /* -------------------------------------------------------------------------- */ /* A mechanism for delayed evaluation. If PDCLib would call its error number "errno" directly, there would be no way to catch its value from underlying system calls that also use it (i.e., POSIX operating systems). That is why we use an internal name, providing a means to access it through . */ _PDCLIB_PUBLIC int * _PDCLIB_errno_func( void ); /* -------------------------------------------------------------------------- */ /* support */ /* -------------------------------------------------------------------------- */ #define _PDCLIB_LC_ALL 0 #define _PDCLIB_LC_COLLATE 1 #define _PDCLIB_LC_CTYPE 2 #define _PDCLIB_LC_MONETARY 3 #define _PDCLIB_LC_NUMERIC 4 #define _PDCLIB_LC_TIME 5 #define _PDCLIB_LC_MESSAGES 6 #define _PDCLIB_LC_COUNT 7 #define _PDCLIB_CTYPE_ALPHA 1 #define _PDCLIB_CTYPE_BLANK 2 #define _PDCLIB_CTYPE_CNTRL 4 #define _PDCLIB_CTYPE_GRAPH 8 #define _PDCLIB_CTYPE_PUNCT 16 #define _PDCLIB_CTYPE_SPACE 32 #define _PDCLIB_CTYPE_LOWER 64 #define _PDCLIB_CTYPE_UPPER 128 #define _PDCLIB_CHARSET_SIZE ( 1 << _PDCLIB_CHAR_BIT ) struct _PDCLIB_lc_lconv_numeric_t { char * decimal_point; char * thousands_sep; char * grouping; }; struct _PDCLIB_lc_lconv_monetary_t { char * mon_decimal_point; char * mon_thousands_sep; char * mon_grouping; char * positive_sign; char * negative_sign; char * currency_symbol; char * int_curr_symbol; char frac_digits; char p_cs_precedes; char n_cs_precedes; char p_sep_by_space; char n_sep_by_space; char p_sign_posn; char n_sign_posn; char int_frac_digits; char int_p_cs_precedes; char int_n_cs_precedes; char int_p_sep_by_space; char int_n_sep_by_space; char int_p_sign_posn; char int_n_sign_posn; }; struct _PDCLIB_lc_numeric_monetary_t { struct lconv * lconv; int numeric_alloced; int monetary_alloced; }; extern struct _PDCLIB_lc_numeric_monetary_t _PDCLIB_lc_numeric_monetary; struct _PDCLIB_lc_collate_t { int alloced; /* 1..3 code points */ /* 1..8, 18 collation elements of 3 16-bit integers */ }; extern struct _PDCLIB_lc_collate_t _PDCLIB_lc_collate_C; extern struct _PDCLIB_lc_collate_t * _PDCLIB_lc_collate; /* One entry to the _PDCLIB_lc_ctype_t.entry data table */ struct _PDCLIB_lc_ctype_entry_t { _PDCLIB_uint_least16_t flags; /* Whether a character is of a given CTYPE */ unsigned char upper; /* Result for toupper() */ unsigned char lower; /* Result for tolower() */ }; struct _PDCLIB_lc_ctype_t { int alloced; /* .entry dynamically allocated? */ int digits_low; /* Where decimal digits start */ int digits_high; /* Where decimal digits end */ int Xdigits_low; /* Where A..F start */ int Xdigits_high; /* Where A..F end */ int xdigits_low; /* Where a..f start */ int xdigits_high; /* Where a..f end */ struct _PDCLIB_lc_ctype_entry_t * entry; /* The data table */ }; extern struct _PDCLIB_lc_ctype_t _PDCLIB_lc_ctype_C; extern struct _PDCLIB_lc_ctype_t * _PDCLIB_lc_ctype; struct _PDCLIB_lc_messages_t { int alloced; char * errno_texts[_PDCLIB_ERRNO_MAX]; /* strerror() / perror() */ }; extern struct _PDCLIB_lc_messages_t _PDCLIB_lc_messages_C; extern struct _PDCLIB_lc_messages_t * _PDCLIB_lc_messages; struct _PDCLIB_lc_time_t { int alloced; char * month_name_abbr[12]; /* month names, abbreviated */ char * month_name_full[12]; /* month names, full */ char * day_name_abbr[7]; /* weekday names, abbreviated */ char * day_name_full[7]; /* weekday names, full */ char * date_time_format; /* date / time format for strftime( "%c" ) */ char * time_format_12h; /* 12-hour time format for strftime( "%r" ) */ char * date_format; /* date format for strftime( "%x" ) */ char * time_format; /* time format for strftime( "%X" ) */ char * am_pm[2]; /* AM / PM designation */ }; extern struct _PDCLIB_lc_time_t _PDCLIB_lc_time_C; extern struct _PDCLIB_lc_time_t * _PDCLIB_lc_time; _PDCLIB_LOCAL struct _PDCLIB_lc_lconv_numeric_t * _PDCLIB_load_lc_numeric( const char * path, const char * locale ); _PDCLIB_LOCAL struct _PDCLIB_lc_lconv_monetary_t * _PDCLIB_load_lc_monetary( const char * path, const char * locale ); _PDCLIB_LOCAL struct _PDCLIB_lc_collate_t * _PDCLIB_load_lc_collate( const char * path, const char * locale ); _PDCLIB_LOCAL struct _PDCLIB_lc_ctype_t * _PDCLIB_load_lc_ctype( const char * path, const char * locale ); _PDCLIB_LOCAL struct _PDCLIB_lc_time_t * _PDCLIB_load_lc_time( const char * path, const char * locale ); _PDCLIB_LOCAL struct _PDCLIB_lc_messages_t * _PDCLIB_load_lc_messages( const char * path, const char * locale ); /* -------------------------------------------------------------------------- */ /* _PDCLIB_bigint_t support (required for floating point conversions) */ /* -------------------------------------------------------------------------- */ /* Number of least32 words used in bigint representation. */ #define _PDCLIB_BIGINT_WORDS 32 /* Maximum number of characters needed for _PDCLIB_bigint_tostring() */ #define _PDCLIB_BIGINT_CHARS ( _PDCLIB_BIGINT_WORDS * 8 ) + 3 /* Type */ /* ---- */ typedef struct { /* Least significant word first */ _PDCLIB_uint_least32_t data[ _PDCLIB_BIGINT_WORDS ]; /* Number of words used; zero value == zero size */ int size; } _PDCLIB_bigint_t; /* Initializer */ /* ----------- */ /* Sets a bigint to pow2( n ) */ _PDCLIB_LOCAL _PDCLIB_bigint_t * _PDCLIB_bigint2( _PDCLIB_bigint_t * bigint, unsigned n ); /* Sets a bigint to pow10( n ) */ _PDCLIB_LOCAL _PDCLIB_bigint_t * _PDCLIB_bigint10( _PDCLIB_bigint_t * bigint, unsigned n ); /* Sets a bigint from a 32bit input value. */ _PDCLIB_LOCAL _PDCLIB_bigint_t * _PDCLIB_bigint32( _PDCLIB_bigint_t * bigint, _PDCLIB_uint_least32_t value ); /* Sets a bigint from a 64bit input value. */ _PDCLIB_LOCAL _PDCLIB_bigint_t * _PDCLIB_bigint64( _PDCLIB_bigint_t * bigint, _PDCLIB_uint_least64_t value ); /* Sets a bigint from another bigint. (Copies only value->size words, so it is faster than a POD copy of a _PDCLIB_bigint_t in most cases.) */ _PDCLIB_LOCAL _PDCLIB_bigint_t * _PDCLIB_bigint( _PDCLIB_bigint_t * _PDCLIB_restrict bigint, _PDCLIB_bigint_t const * _PDCLIB_restrict value ); /* Comparison, Output */ /* ------------------ */ /* Compares two given bigint values. Returns 0 if lhs == rhs, a negative number if lhs < rhs, and a positive number if lhs > rhs. */ _PDCLIB_PUBLIC int _PDCLIB_bigint_cmp( _PDCLIB_bigint_t const * _PDCLIB_restrict lhs, _PDCLIB_bigint_t const * _PDCLIB_restrict rhs ); /* Writes a hexadecimal representation of the given bigint into the given buffer. Buffer should be at least _PDCLIB_BIGINT_CHARS in size. */ _PDCLIB_LOCAL char * _PDCLIB_bigint_tostring( _PDCLIB_bigint_t const * _PDCLIB_restrict value, char * _PDCLIB_restrict buffer ); /* Operations (in-place) */ /* --------------------- */ /* Adds to a given bigint another given bigint. */ _PDCLIB_PUBLIC _PDCLIB_bigint_t * _PDCLIB_bigint_add( _PDCLIB_bigint_t * _PDCLIB_restrict lhs, _PDCLIB_bigint_t const * _PDCLIB_restrict rhs ); /* Substracts from a given bigint another given bigint. */ _PDCLIB_PUBLIC _PDCLIB_bigint_t * _PDCLIB_bigint_sub( _PDCLIB_bigint_t * _PDCLIB_restrict lhs, _PDCLIB_bigint_t const * _PDCLIB_restrict rhs ); /* Multiplies a given bigint with a given 32bit value. */ _PDCLIB_PUBLIC _PDCLIB_bigint_t * _PDCLIB_bigint_mul32( _PDCLIB_bigint_t * lhs, _PDCLIB_uint_least32_t rhs ); /* Divides a given bigint by a given 32bit value. */ _PDCLIB_PUBLIC _PDCLIB_bigint_t * _PDCLIB_bigint_div32( _PDCLIB_bigint_t * lhs, _PDCLIB_uint_least32_t rhs ); /* Shifts a given bigint left by a given count of bits. */ _PDCLIB_PUBLIC _PDCLIB_bigint_t * _PDCLIB_bigint_shl( _PDCLIB_bigint_t * lhs, unsigned rhs ); /* Operations (into new bigint) */ /* ---------------------------- */ /* Multiplies a given bigint with another given bigint. */ _PDCLIB_PUBLIC _PDCLIB_bigint_t * _PDCLIB_bigint_mul( _PDCLIB_bigint_t * _PDCLIB_restrict result, _PDCLIB_bigint_t const * _PDCLIB_restrict lhs, _PDCLIB_bigint_t const * _PDCLIB_restrict rhs ); /* Divides a given bigint by another given bigint. */ _PDCLIB_PUBLIC _PDCLIB_bigint_t * _PDCLIB_bigint_div( _PDCLIB_bigint_t * _PDCLIB_restrict result, _PDCLIB_bigint_t const * _PDCLIB_restrict lhs, _PDCLIB_bigint_t const * _PDCLIB_restrict rhs ); /* Queries */ /* ------- */ /* Returns the log2() of a given bigint */ _PDCLIB_PUBLIC unsigned _PDCLIB_bigint_log2( _PDCLIB_bigint_t const * bigint ); /* -------------------------------------------------------------------------- */ /* Sanity checks */ /* -------------------------------------------------------------------------- */ /* signed-ness of char */ _PDCLIB_static_assert( _PDCLIB_CHAR_MIN == ((((char) -1) < 0) ? _PDCLIB_SCHAR_MIN : 0), "Compiler disagrees on signed-ness of 'char'." ); /* two's complement */ #if _PDCLIB_TWOS_COMPLEMENT == 1 #if _PDCLIB_CHAR_MIN < 0 _PDCLIB_static_assert( ((char) ~ (char) 0 < 0), "Not two's complement on 'char'." ); #endif _PDCLIB_static_assert( ((short) ~ (short) 0 < 0), "Not two's complement on 'short'." ); _PDCLIB_static_assert( ((int) ~ (int) 0 < 0), "Not two's complement on 'int'." ); _PDCLIB_static_assert( ((long) ~ (long) 0 < 0), "Not two's complement on 'long'." ); _PDCLIB_static_assert( ((long long) ~ (long long) 0 < 0), "Not two's complement on 'long long'." ); #endif /* size_t as the result of sizeof */ _PDCLIB_static_assert( sizeof( sizeof( int ) ) == sizeof( _PDCLIB_size_t ), "Compiler disagrees on size_t." ); /* wchar_t as the type of wide character literals */ _PDCLIB_static_assert( sizeof( _PDCLIB_wchar_t ) == sizeof( L'x' ), "Compiler disagrees on wchar_t." ); #ifdef __cplusplus _PDCLIB_static_assert( sizeof( _PDCLIB_wchar_t ) == sizeof( wchar_t ), "Compiler disagrees on wchar_t (C++)." ); #endif /* intptr_t/uintptr_t being wide enough to store the value of a pointer */ _PDCLIB_static_assert( sizeof( void * ) == sizeof( _PDCLIB_intptr_t ), "Compiler disagrees on intptr_t." ); _PDCLIB_static_assert( sizeof( void * ) == sizeof( _PDCLIB_uintptr_t ), "Compiler disagrees on uintptr_t." ); /* ptrdiff_t as the result of pointer arithmetic */ _PDCLIB_static_assert( sizeof( &_PDCLIB_digits[1] - &_PDCLIB_digits[0] ) == sizeof( _PDCLIB_ptrdiff_t ), "Compiler disagrees on ptrdiff_t." ); #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/wctype.h0000644000175000001440000001203114676735310022345 0ustar mhxusers/* Wide character classification and mapping utilities This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_WCTYPE_H #define _PDCLIB_WCTYPE_H _PDCLIB_WCTYPE_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_internal.h" typedef _PDCLIB_wint_t wint_t; typedef int wctrans_t; typedef int wctype_t; #ifndef _PDCLIB_WEOF_DEFINED #define _PDCLIB_WEOF_DEFINED _PDCLIB_WEOF_DEFINED #define WEOF (wint_t)-1 #endif /* Wide character classification functions */ /* Returns iswalpha( wc ) || iswdigit( wc ) */ _PDCLIB_PUBLIC int iswalnum( wint_t wc ); /* Returns true for wide characters for which either isupper( wc ) or islower( wc ) is true, as well as a set of locale-specific wide characters which are neither control characters, digits, punctuation, or whitespace. */ _PDCLIB_PUBLIC int iswalpha( wint_t wc ); /* Returns true if the character iswspace() and used for separating words within a line of text. In the "C" locale, only L' ' and L'\t' are considered blanks. */ _PDCLIB_PUBLIC int iswblank( wint_t wc ); /* Returns true if the wide character is a control character. */ _PDCLIB_PUBLIC int iswcntrl( wint_t wc ); /* Returns true if the wide character is a decimal digit. Locale- independent. */ _PDCLIB_PUBLIC int iswdigit( wint_t wc ); /* Returns iswprint( wc ) && ! iswspace( wc ). NOTE: This definition differs from that of isgraph() in , which considers only ' ', not all isspace() characters. */ _PDCLIB_PUBLIC int iswgraph( wint_t wc ); /* Returns true for lowerspace wide characters, as well as a set of locale-specific wide characters which are neither control charcters, digits, punctuation, or whitespace. */ _PDCLIB_PUBLIC int iswlower( wint_t wc ); /* Returns true for every printing wide character. */ _PDCLIB_PUBLIC int iswprint( wint_t wc ); /* Returns true for a locale-specific set of punctuation characters that are neither whitespace nor alphanumeric. */ _PDCLIB_PUBLIC int iswpunct( wint_t wc ); /* Returns true for a locale-specific set of whitespace characters that are neither alphanumeric, graphic, or punctuation. */ _PDCLIB_PUBLIC int iswspace( wint_t wc ); /* Returns true for upperspace wide characters, as well as a set of locale-specific wide characters which are neither control charcters, digits, punctuation, or whitespace. */ _PDCLIB_PUBLIC int iswupper( wint_t wc ); /* Returns true if the wide character is a hexadecimal digit. Locale- independent. */ _PDCLIB_PUBLIC int iswxdigit( wint_t wc ); /* Extensible wide character classification functions */ /* Returns true if the wide character wc has the property described by desc (which was retrieved by a previous call to wctype() without changing the LC_CTYPE locale setting between the two calls). */ _PDCLIB_PUBLIC int iswctype( wint_t wc, wctype_t desc ); /* Returns a description object for a named character property, to be used as parameter to the iswctype() function. Supported property names are: "alnum" -- alphanumeric, as per iswalnum() "alpha" -- alphabetic, as per iswalpha() "blank" -- blank, as per iswblank() "cntrl" -- control, as per iswcntrl() "digit" -- decimal digit, as per iswdigit() "graph" -- graphic, as per iswgraph() "lower" -- lowercase, as per iswlower() "print" -- printing, as per iswprint() "punct" -- punctuation, as per iswprint() "space" -- whitespace, as per iswspace() "upper" -- uppercase, as per iswupper() "xdigit" -- hexadecimal digit, as per iswxdigit() For unsupported properties, the function returns zero. */ _PDCLIB_PUBLIC wctype_t wctype( const char * property ); /* Wide character case mapping utilities */ /* Converts an uppercase letter to a corresponding lowercase letter. Input for which no corresponding lowercase letter exists remains unchanged. */ _PDCLIB_PUBLIC wint_t towlower( wint_t wc ); /* Converts a lowercase letter to a corresponding uppercase letter. Input for which no corresponding uppercase letter exists remains unchanged. */ _PDCLIB_PUBLIC wint_t towupper( wint_t wc ); /* Extensible wide character case mapping utilities */ /* Converts the wide character wc according to the transition described by desc (which was retrieved by a previous call to wctrans() without changing the LC_CTYPE locale setting between the two calls). */ _PDCLIB_PUBLIC wint_t towctrans( wint_t wc, wctrans_t desc ); /* Returns a description object for a named character transformation, to be used as parameter to the towctrans() function. Supported transformation properties are: "tolower" -- lowercase mapping, as per towlower() "toupper" -- uppercase mapping, as per towupper() For unsupported properties, the function returns zero. */ _PDCLIB_PUBLIC wctrans_t wctrans( const char * property ); /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_WCTYPE_H #include _PDCLIB_EXTEND_WCTYPE_H #endif #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/locale.h0000644000175000001440000001214014676735310022272 0ustar mhxusers/* Localization This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_LOCALE_H #define _PDCLIB_LOCALE_H _PDCLIB_LOCALE_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_internal.h" #ifndef _PDCLIB_NULL_DEFINED #define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED #define NULL _PDCLIB_NULL #endif /* The structure returned by localeconv(). The values for *_sep_by_space: 0 - no space 1 - if symbol and sign are adjacent, a space separates them from the value; otherwise a space separates the symbol from the value 2 - if symbol and sign are adjacent, a space separates them; otherwise a space separates the sign from the value The values for *_sign_posn: 0 - Parentheses surround value and symbol 1 - sign precedes value and symbol 2 - sign succeeds value and symbol 3 - sign immediately precedes symbol 4 - sign immediately succeeds symbol */ struct lconv { char * decimal_point; /* decimal point character */ /* LC_NUMERIC */ char * thousands_sep; /* character for separating groups of digits */ /* LC_NUMERIC */ char * grouping; /* string indicating the size of digit groups */ /* LC_NUMERIC */ char * mon_decimal_point; /* decimal point for monetary quantities */ /* LC_MONETARY */ char * mon_thousands_sep; /* thousands_sep for monetary quantities */ /* LC_MONETARY */ char * mon_grouping; /* grouping for monetary quantities */ /* LC_MONETARY */ char * positive_sign; /* string indicating nonnegative mty. qty. */ /* LC_MONETARY */ char * negative_sign; /* string indicating negative mty. qty. */ /* LC_MONETARY */ char * currency_symbol; /* local currency symbol (e.g. '$') */ /* LC_MONETARY */ char * int_curr_symbol; /* international currency symbol (e.g. "USD" */ /* LC_MONETARY */ char frac_digits; /* fractional digits in local monetary qty. */ /* LC_MONETARY */ char p_cs_precedes; /* if currency_symbol precedes positive qty. */ /* LC_MONETARY */ char n_cs_precedes; /* if currency_symbol precedes negative qty. */ /* LC_MONETARY */ char p_sep_by_space; /* if it is separated by space from pos. qty. */ /* LC_MONETARY */ char n_sep_by_space; /* if it is separated by space from neg. qty. */ /* LC_MONETARY */ char p_sign_posn; /* positioning of positive_sign for mon. qty. */ /* LC_MONETARY */ char n_sign_posn; /* positioning of negative_sign for mon. qty. */ /* LC_MONETARY */ char int_frac_digits; /* Same as above, for international format */ /* LC_MONETARY */ char int_p_cs_precedes; /* Same as above, for international format */ /* LC_MONETARY */ char int_n_cs_precedes; /* Same as above, for international format */ /* LC_MONETARY */ char int_p_sep_by_space; /* Same as above, for international format */ /* LC_MONETARY */ char int_n_sep_by_space; /* Same as above, for international format */ /* LC_MONETARY */ char int_p_sign_posn; /* Same as above, for international format */ /* LC_MONETARY */ char int_n_sign_posn; /* Same as above, for international format */ /* LC_MONETARY */ }; /* First arguments to setlocale(). NOTE: If you add to / modify these, look at functions/locale/setlocale.c and keep things in sync. */ /* Entire locale */ #define LC_ALL _PDCLIB_LC_ALL /* Collation (strcoll(), strxfrm()) */ #define LC_COLLATE _PDCLIB_LC_COLLATE /* Character types (, ) */ #define LC_CTYPE _PDCLIB_LC_CTYPE /* Monetary formatting (as returned by localeconv) */ #define LC_MONETARY _PDCLIB_LC_MONETARY /* Decimal-point character (for printf() / scanf() functions), string conversions, nonmonetary formatting as returned by localeconv */ #define LC_NUMERIC _PDCLIB_LC_NUMERIC /* Time formats (strftime(), wcsftime()) */ #define LC_TIME _PDCLIB_LC_TIME /* Messages (not specified but allowed by C99, and specified by POSIX) (used by perror() / strerror()) */ #define LC_MESSAGES _PDCLIB_LC_MESSAGES /* The category parameter can be any of the LC_* macros to specify if the call to setlocale() shall affect the entire locale or only a portion thereof. The category locale specifies which locale should be switched to, with "C" being the minimal default locale, and "" being the locale-specific native environment. A NULL pointer makes setlocale() return the *current* setting. Otherwise, returns a pointer to a string associated with the specified category for the new locale. */ _PDCLIB_PUBLIC char * setlocale( int category, const char * locale ); /* Returns a struct lconv initialized to the values appropriate for the current locale setting. */ _PDCLIB_PUBLIC struct lconv * localeconv( void ); #ifdef __cplusplus } #endif /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_LOCALE_H #include _PDCLIB_EXTEND_LOCALE_H #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/iso646.h0000644000175000001440000000117614676735310022074 0ustar mhxusers/* Alternative spellings This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_ISO646_H #define _PDCLIB_ISO646_H _PDCLIB_ISO646_H #ifndef __cplusplus #define and && #define and_eq &= #define bitand & #define bitor | #define compl ~ #define not ! #define not_eq != #define or || #define or_eq |= #define xor ^ #define xor_eq ^= #endif /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_ISO646_H #include _PDCLIB_EXTEND_ISO646_H #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/errno.h0000644000175000001440000001426514676735310022172 0ustar mhxusers/* Errors This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_ERRNO_H #define _PDCLIB_ERRNO_H _PDCLIB_ERRNO_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_lib_ext1.h" #include "pdclib/_PDCLIB_internal.h" /* FIXME: With , this needs to be in thread-specific storage. */ #define errno (*_PDCLIB_errno_func()) /* C only requires the following three */ /* Result too large */ #define ERANGE _PDCLIB_ERANGE /* Mathematics argument out of domain of function */ #define EDOM _PDCLIB_EDOM /* Illegal byte sequence */ #define EILSEQ _PDCLIB_EILSEQ /* C++ additionally requires the folloing */ /* Argument list too long */ #define E2BIG _PDCLIB_E2BIG /* Permission denied */ #define EACCES _PDCLIB_EACCES /* Address in use */ #define EADDRINUSE _PDCLIB_EADDRINUSE /* Address not available */ #define EADDRNOTAVAIL _PDCLIB_EADDRNOTAVAIL /* Address family not supported */ #define EAFNOSUPPORT _PDCLIB_EAFNOSUPPORT /* Resource unavailable, try again */ #define EAGAIN _PDCLIB_EAGAIN /* Connection already in progress */ #define EALREADY _PDCLIB_EALREADY /* Bad file descriptor */ #define EBADF _PDCLIB_EBADF /* Bad message */ #define EBADMSG _PDCLIB_EBADMSG /* Device or resource busy */ #define EBUSY _PDCLIB_EBUSY /* Operation canceled */ #define ECANCELED _PDCLIB_ECANCELED /* No child processes */ #define ECHILD _PDCLIB_ECHILD /* Connection aborted */ #define ECONNABORTED _PDCLIB_ECONNABORTED /* Connection refused */ #define ECONNREFUSED _PDCLIB_ECONNREFUSED /* Connection reset */ #define ECONNRESET _PDCLIB_ECONNRESET /* Resource deadlock would occur */ #define EDEADLK _PDCLIB_EDEADLK /* Destination address required */ #define EDESTADDRREQ _PDCLIB_EDESTADDRREQ /* File exists */ #define EEXIST _PDCLIB_EEXIST /* Bad address */ #define EFAULT _PDCLIB_EFAULT /* File too large */ #define EFBIG _PDCLIB_EFBIG /* Host is unreachable */ #define EHOSTUNREACH _PDCLIB_EHOSTUNREACH /* Identifier removed */ #define EIDRM _PDCLIB_EIDRM /* Operation in progress */ #define EINPROGRESS _PDCLIB_EINPROGRESS /* Interrupted function */ #define EINTR _PDCLIB_EINTR /* Invalid argument */ #define EINVAL _PDCLIB_EINVAL /* I/O error */ #define EIO _PDCLIB_EIO /* Socket is connected */ #define EISCONN _PDCLIB_EISCONN /* Is a directory */ #define EISDIR _PDCLIB_EISDIR /* Too many levels of symbolic links */ #define ELOOP _PDCLIB_ELOOP /* File descriptor value too large */ #define EMFILE _PDCLIB_EMFILE /* Too many links */ #define EMLINK _PDCLIB_EMLINK /* Message too large */ #define EMSGSIZE _PDCLIB_EMSGSIZE /* Filename too long */ #define ENAMETOOLONG _PDCLIB_ENAMETOOLONG /* Network is down */ #define ENETDOWN _PDCLIB_ENETDOWN /* Connection aborted by network */ #define ENETRESET _PDCLIB_ENETRESET /* Network unreachable */ #define ENETUNREACH _PDCLIB_ENETUNREACH /* Too many files open in system */ #define ENFILE _PDCLIB_ENFILE /* No buffer space available */ #define ENOBUFS _PDCLIB_ENOBUFS /* No message is available on the STREAM head read queue */ #define ENODATA _PDCLIB_ENODATA /* No such device */ #define ENODEV _PDCLIB_ENODEV /* No such file or directory */ #define ENOENT _PDCLIB_ENOENT /* Executable file format error */ #define ENOEXEC _PDCLIB_ENOEXEC /* No locks available */ #define ENOLCK _PDCLIB_ENOLCK /* Link has been severed */ #define ENOLINK _PDCLIB_ENOLINK /* Not enough space */ #define ENOMEM _PDCLIB_ENOMEM /* No message of the desired type */ #define ENOMSG _PDCLIB_ENOMSG /* Protocol not available */ #define ENOPROTOOPT _PDCLIB_ENOPROTOOPT /* No space left on device */ #define ENOSPC _PDCLIB_ENOSPC /* No STREAM resources */ #define ENOSR _PDCLIB_ENOSR /* Not a STREAM */ #define ENOSTR _PDCLIB_ENOSTR /* Function not supported */ #define ENOSYS _PDCLIB_ENOSYS /* The socket is not connected */ #define ENOTCONN _PDCLIB_ENOTCONN /* Not a directory */ #define ENOTDIR _PDCLIB_ENOTDIR /* Directory not empty */ #define ENOTEMPTY _PDCLIB_ENOTEMPTY /* State not recoverable */ #define ENOTRECOVERABLE _PDCLIB_ENOTRECOVERABLE /* Not a socket */ #define ENOTSOCK _PDCLIB_ENOTSOCK /* Not supported */ #define ENOTSUP _PDCLIB_ENOTSUP /* Inappropriate I/O control operation */ #define ENOTTY _PDCLIB_ENOTTY /* No such device or address */ #define ENXIO _PDCLIB_ENXIO /* Operation not supported on socket */ #define EOPNOTSUPP _PDCLIB_EOPNOTSUPP /* Value too large to be stored in data type */ #define EOVERFLOW _PDCLIB_EOVERFLOW /* Previous owner died */ #define EOWNERDEAD _PDCLIB_EOWNERDEAD /* Operation not permitted */ #define EPERM _PDCLIB_EPERM /* Broken pipe */ #define EPIPE _PDCLIB_EPIPE /* Protocol error */ #define EPROTO _PDCLIB_EPROTO /* Protocol not supported */ #define EPROTONOSUPPORT _PDCLIB_EPROTONOSUPPORT /* Protocol wrong type for socket */ #define EPROTOTYPE _PDCLIB_EPROTOTYPE /* Read-only file system */ #define EROFS _PDCLIB_EROFS /* Invalid seek */ #define ESPIPE _PDCLIB_ESPIPE /* No such process */ #define ESRCH _PDCLIB_ESRCH /* Stream ioctl() timeout */ #define ETIME _PDCLIB_ETIME /* Connection timed out */ #define ETIMEDOUT _PDCLIB_ETIMEDOUT /* Text file busy */ #define ETXTBSY _PDCLIB_ETXTBSY /* Operation would block */ #define EWOULDBLOCK _PDCLIB_EWOULDBLOCK /* Cross-device link */ #define EXDEV _PDCLIB_EXDEV /* Annex K -- Bounds-checking interfaces */ #if ( __STDC_WANT_LIB_EXT1__ + 0 ) != 0 #ifndef _PDCLIB_ERRNO_T_DEFINED #define _PDCLIB_ERRNO_T_DEFINED _PDCLIB_ERRNO_T_DEFINED typedef int errno_t; #endif #endif /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_ERRNO_H #include _PDCLIB_EXTEND_ERRNO_H #endif #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/time.h0000644000175000001440000001553314676735310022002 0ustar mhxusers/* Date and time This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_TIME_H #define _PDCLIB_TIME_H _PDCLIB_TIMEH #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_lib_ext1.h" #include "pdclib/_PDCLIB_internal.h" #ifndef _PDCLIB_SIZE_T_DEFINED #define _PDCLIB_SIZE_T_DEFINED _PDCLIB_SIZE_T_DEFINED typedef _PDCLIB_size_t size_t; #endif #ifndef _PDCLIB_NULL_DEFINED #define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED #define NULL _PDCLIB_NULL #endif /* See comments in _PDCLIB_config.h on the semantics of time_t and clock_t. */ typedef _PDCLIB_time_t time_t; typedef _PDCLIB_clock_t clock_t; #define CLOCKS_PER_SEC _PDCLIB_CLOCKS_PER_SEC #define TIME_UTC _PDCLIB_TIME_UTC /* Implementor's note: If you change this structure, and are using Pthread threading support, check auxiliary/pthread/pthread_readout.c for its twin. It is imperative that Pthread and PDCLib use identical layouts for struct timespec, as they are implicitly cast from one to the other. This cannot be checked for in this header (as we may not include host system headers here), so the assert()s are in pthread_readout.c (which, in turn, cannot include *this* header, which is why this admonishment to keep the definitions in sync exists...). */ struct timespec { time_t tv_sec; long tv_nsec; }; struct tm { int tm_sec; /* 0-60 */ int tm_min; /* 0-59 */ int tm_hour; /* 0-23 */ int tm_mday; /* 1-31 */ int tm_mon; /* 0-11 */ int tm_year; /* years since 1900 */ int tm_wday; /* 0-6 */ int tm_yday; /* 0-365 */ int tm_isdst; /* >0 DST, 0 no DST, <0 information unavailable */ }; /* Returns the number of "clocks" in processor time since the invocation of the program. Divide by CLOCKS_PER_SEC to get the value in seconds. Returns -1 if the value cannot be represented in the return type or is not available. */ _PDCLIB_PUBLIC clock_t clock( void ); /* Returns the difference between two calendar times in seconds. */ _PDCLIB_PUBLIC double difftime( time_t time1, time_t time0 ); /* Normalizes the values in the broken-down time pointed to by timeptr. Returns the calender time specified by the broken-down time. */ _PDCLIB_PUBLIC time_t mktime( struct tm * timeptr ); /* Returns the current calender time. If timer is not a NULL pointer, stores the current calender time at that address as well. */ _PDCLIB_PUBLIC time_t time( time_t * timer ); /* Sets the interval pointed to by ts to the current calender time, based on the specified base. Returns base, if successful, otherwise zero. */ _PDCLIB_PUBLIC int timespec_get( struct timespec * ts, int base ); /* Converts the broken-down time pointed to by timeptr into a string in the form "Sun Sep 16 01:03:52 1973\n\0". */ _PDCLIB_PUBLIC char * asctime( const struct tm * timeptr ); /* Equivalent to asctime( localtime( timer ) ). */ _PDCLIB_PUBLIC char * ctime( const time_t * timer ); /* Converts the calender time pointed to by timer into a broken-down time expressed as UTC. Returns a pointer to the broken-down time, or a NULL pointer if it cannot be represented. */ _PDCLIB_PUBLIC struct tm * gmtime( const time_t * timer ); /* Converts the calender time pointed to by timer into a broken-down time expressed as local time. Returns a pointer to the broken-down time, or a NULL pointer if if cannot be represented. */ _PDCLIB_PUBLIC struct tm * localtime( const time_t * timer ); /* Writes the broken-down time pointed to by timeptr into the character array pointed to by s. The string pointed to by format controls the exact output. No more than maxsize charactrs will be written. Returns the number of characters written (excluding the terminating null character), or zero on failure. */ _PDCLIB_PUBLIC size_t strftime( char * _PDCLIB_restrict s, size_t maxsize, const char * _PDCLIB_restrict format, const struct tm * _PDCLIB_restrict timeptr ); /* Annex K -- Bounds-checking interfaces */ #if ( __STDC_WANT_LIB_EXT1__ + 0 ) != 0 #ifndef _PDCLIB_ERRNO_T_DEFINED #define _PDCLIB_ERRNO_T_DEFINED _PDCLIB_ERRNO_T_DEFINED typedef int errno_t; #endif #ifndef _PDCLIB_RSIZE_T_DEFINED #define _PDCLIB_RSIZE_T_DEFINED _PDCLIB_RSIZE_T_DEFINED typedef _PDCLIB_size_t rsize_t; #endif /* Converts the broken-down time pointed to by timeptr into a string in the form "Sun Sep 16 01:03:52 1973\n\0", which is stored in buffer s of maxsize. Returns zero if the time was successfully converted and stored, non-zero otherwise. The following conditions will be considered runtime constraint violations: - s or timeptr being NULL. - maxsize being < 26 or > RSIZE_MAX. - the broken-down time pointed to by timeptr not being normalized. - the year represented by the broken-down time pointed to by timeptr being < 0 or > 9999. In case of a constraint violation, the time will not be converted. If s is not NULL and maxsize is neither zero nor > RSIZE_MAX, s[0] will be set to '\0'. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC errno_t asctime_s( char * s, rsize_t maxsize, const struct tm * timeptr ); /* Equivalent to asctime_s( s, maxsize, localtime( timer ) ). */ _PDCLIB_PUBLIC errno_t ctime_s( char * s, rsize_t maxsize, const time_t * timer ); /* Converts the calender time pointed to by timer into a broken-down time expressed as UTC, which gets stored in the result struct. Returns a pointer to the broken-down time, or a NULL pointer if if cannot be represented or stored. The following conditions will be considered runtime constraint violations: - timer or result being NULL. In case of a constraint violation, the time will not be converted. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC struct tm * gmtime_s( const time_t * _PDCLIB_restrict timer, struct tm * _PDCLIB_restrict result ); /* Converts the calender time pointed to by timer into a broken-down time expressed as local time, which gets stored in the result struct. Returns a pointer to the broken-down time, or a NULL pointer if if cannot be represented or stored. The following conditions will be considered runtime constraint violations: - timer or result being NULL. In case of a constraint violation, the time will not be converted. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC struct tm * localtime_s( const time_t * _PDCLIB_restrict timer, struct tm * _PDCLIB_restrict result ); #endif /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_TIME_H #include _PDCLIB_EXTEND_TIME_H #endif #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/stdint.h0000644000175000001440000001475014676735310022351 0ustar mhxusers/* Integer types This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_STDINT_H #define _PDCLIB_STDINT_H _PDCLIB_STDINT_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_lib_ext1.h" #include "pdclib/_PDCLIB_internal.h" /* 7.18.1.1 Exact-width integer types. */ #if _PDCLIB_TWOS_COMPLEMENT == 1 #if _PDCLIB_INT_LEAST8_MAX == 0x7f typedef _PDCLIB_int_least8_t int8_t; typedef _PDCLIB_uint_least8_t uint8_t; #endif #if _PDCLIB_INT_LEAST16_MAX == 0x7fff typedef _PDCLIB_int_least16_t int16_t; typedef _PDCLIB_uint_least16_t uint16_t; #endif #if _PDCLIB_INT_LEAST32_MAX == 0x7fffffffl typedef _PDCLIB_int_least32_t int32_t; typedef _PDCLIB_uint_least32_t uint32_t; #endif #if _PDCLIB_INT_LEAST64_MAX == 0x7fffffffffffffffll typedef _PDCLIB_int_least64_t int64_t; typedef _PDCLIB_uint_least64_t uint64_t; #endif #endif /* 7.18.1.2 Minimum-width integer types */ /* You are allowed to add more types here, e.g. int_least24_t. */ typedef _PDCLIB_int_least8_t int_least8_t; typedef _PDCLIB_int_least16_t int_least16_t; typedef _PDCLIB_int_least32_t int_least32_t; typedef _PDCLIB_int_least64_t int_least64_t; typedef _PDCLIB_uint_least8_t uint_least8_t; typedef _PDCLIB_uint_least16_t uint_least16_t; typedef _PDCLIB_uint_least32_t uint_least32_t; typedef _PDCLIB_uint_least64_t uint_least64_t; /* 7.18.1.3 Fastest minimum-width integer types */ /* You are allowed to add more types here, e.g. int_fast24_t. */ typedef _PDCLIB_int_fast8_t int_fast8_t; typedef _PDCLIB_int_fast16_t int_fast16_t; typedef _PDCLIB_int_fast32_t int_fast32_t; typedef _PDCLIB_int_fast64_t int_fast64_t; typedef _PDCLIB_uint_fast8_t uint_fast8_t; typedef _PDCLIB_uint_fast16_t uint_fast16_t; typedef _PDCLIB_uint_fast32_t uint_fast32_t; typedef _PDCLIB_uint_fast64_t uint_fast64_t; /* 7.18.1.4 Integer types capable of holding object pointers */ typedef _PDCLIB_intptr_t intptr_t; typedef _PDCLIB_uintptr_t uintptr_t; /* 7.18.1.5 Greatest-width integer types */ typedef _PDCLIB_intmax_t intmax_t; typedef _PDCLIB_uintmax_t uintmax_t; /* 7.18.2 Limits of specified-width integer types */ #if defined( __cplusplus ) && __cplusplus < 201103L #ifndef __STDC_LIMIT_MACROS #define _PDCLIB_NO_LIMIT_MACROS #endif #endif #ifndef _PDCLIB_NO_LIMIT_MACROS /* 7.18.2.1 Limits of exact-width integer types */ #if _PDCLIB_TWOS_COMPLEMENT == 1 #if _PDCLIB_INT_LEAST8_MAX == 0x7f #define INT8_MAX _PDCLIB_INT_LEAST8_MAX #define INT8_MIN _PDCLIB_INT_LEAST8_MIN #define UINT8_MAX _PDCLIB_UINT_LEAST8_MAX #endif #if _PDCLIB_INT_LEAST16_MAX == 0x7fff #define INT16_MAX _PDCLIB_INT_LEAST16_MAX #define INT16_MIN _PDCLIB_INT_LEAST16_MIN #define UINT16_MAX _PDCLIB_UINT_LEAST16_MAX #endif #if _PDCLIB_INT_LEAST32_MAX == 0x7fffffffl #define INT32_MAX _PDCLIB_INT_LEAST32_MAX #define INT32_MIN _PDCLIB_INT_LEAST32_MIN #define UINT32_MAX _PDCLIB_UINT_LEAST32_MAX #endif #if _PDCLIB_INT_LEAST64_MAX == 0x7fffffffffffffffll #define INT64_MAX _PDCLIB_INT_LEAST64_MAX #define INT64_MIN _PDCLIB_INT_LEAST64_MIN #define UINT64_MAX _PDCLIB_UINT_LEAST64_MAX #endif #endif /* 7.18.2.2 Limits of minimum-width integer types */ #define INT_LEAST8_MIN _PDCLIB_INT_LEAST8_MIN #define INT_LEAST8_MAX _PDCLIB_INT_LEAST8_MAX #define UINT_LEAST8_MAX _PDCLIB_UINT_LEAST8_MAX #define INT_LEAST16_MIN _PDCLIB_INT_LEAST16_MIN #define INT_LEAST16_MAX _PDCLIB_INT_LEAST16_MAX #define UINT_LEAST16_MAX _PDCLIB_UINT_LEAST16_MAX #define INT_LEAST32_MIN _PDCLIB_INT_LEAST32_MIN #define INT_LEAST32_MAX _PDCLIB_INT_LEAST32_MAX #define UINT_LEAST32_MAX _PDCLIB_UINT_LEAST32_MAX #define INT_LEAST64_MIN _PDCLIB_INT_LEAST64_MIN #define INT_LEAST64_MAX _PDCLIB_INT_LEAST64_MAX #define UINT_LEAST64_MAX _PDCLIB_UINT_LEAST64_MAX /* 7.18.2.3 Limits of fastest minimum-width integer types */ #define INT_FAST8_MIN _PDCLIB_INT_FAST8_MIN #define INT_FAST8_MAX _PDCLIB_INT_FAST8_MAX #define UINT_FAST8_MAX _PDCLIB_UINT_FAST8_MAX #define INT_FAST16_MIN _PDCLIB_INT_FAST16_MIN #define INT_FAST16_MAX _PDCLIB_INT_FAST16_MAX #define UINT_FAST16_MAX _PDCLIB_UINT_FAST16_MAX #define INT_FAST32_MIN _PDCLIB_INT_FAST32_MIN #define INT_FAST32_MAX _PDCLIB_INT_FAST32_MAX #define UINT_FAST32_MAX _PDCLIB_UINT_FAST32_MAX #define INT_FAST64_MIN _PDCLIB_INT_FAST64_MIN #define INT_FAST64_MAX _PDCLIB_INT_FAST64_MAX #define UINT_FAST64_MAX _PDCLIB_UINT_FAST64_MAX /* 7.18.2.4 Limits of integer types capable of holding object pointers */ #define INTPTR_MIN _PDCLIB_INTPTR_MIN #define INTPTR_MAX _PDCLIB_INTPTR_MAX #define UINTPTR_MAX _PDCLIB_UINTPTR_MAX /* 7.18.2.5 Limits of greatest-width integer types */ #define INTMAX_MIN _PDCLIB_INTMAX_MIN #define INTMAX_MAX _PDCLIB_INTMAX_MAX #define UINTMAX_MAX _PDCLIB_UINTMAX_MAX /* 7.18.3 Limits of other integer types */ #define PTRDIFF_MIN _PDCLIB_PTRDIFF_MIN #define PTRDIFF_MAX _PDCLIB_PTRDIFF_MAX #define SIG_ATOMIC_MIN _PDCLIB_SIG_ATOMIC_MIN #define SIG_ATOMIC_MAX _PDCLIB_SIG_ATOMIC_MAX #define SIZE_MAX _PDCLIB_SIZE_MAX #define WCHAR_MIN _PDCLIB_WCHAR_MIN #define WCHAR_MAX _PDCLIB_WCHAR_MAX #define WINT_MIN _PDCLIB_WINT_MIN #define WINT_MAX _PDCLIB_WINT_MAX #endif /* 7.18.4 Macros for integer constants */ #if defined( __cplusplus ) && __cplusplus < 201103L #ifndef __STDC_CONSTANT_MACROS #define _PDCLIB_NO_CONSTANT_MACROS #endif #endif #ifndef _PDCLIB_NO_CONSTANT_MACROS /* 7.18.4.1 Macros for minimum-width integer constants */ /* Expand to an integer constant of specified value and type int_leastN_t */ #define INT8_C _PDCLIB_INT_LEAST8_C #define INT16_C _PDCLIB_INT_LEAST16_C #define INT32_C _PDCLIB_INT_LEAST32_C #define INT64_C _PDCLIB_INT_LEAST64_C /* Expand to an integer constant of specified value and type uint_leastN_t */ #define UINT8_C _PDCLIB_INT_LEAST8_C #define UINT16_C _PDCLIB_INT_LEAST16_C #define UINT32_C _PDCLIB_INT_LEAST32_C #define UINT64_C _PDCLIB_INT_LEAST64_C /* 7.18.4.2 Macros for greatest-width integer constants */ /* Expand to an integer constant of specified value and type intmax_t */ #define INTMAX_C( value ) _PDCLIB_INTMAX_C( value ) /* Expand to an integer constant of specified value and type uintmax_t */ #define UINTMAX_C( value ) _PDCLIB_UINTMAX_C( value ) #endif /* Annex K -- Bounds-checking interfaces */ #if ( __STDC_WANT_LIB_EXT1__ + 0 ) != 0 #define RSIZE_MAX ( _PDCLIB_SIZE_MAX >> 1 ) #endif /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_STDINT_H #include _PDCLIB_EXTEND_STDINT_H #endif #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/limits.h0000644000175000001440000000241414676735310022337 0ustar mhxusers/* Sizes of integer types This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_LIMITS_H #define _PDCLIB_LIMITS_H _PDCLIB_LIMITS_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_internal.h" /* TODO: Defined to 1 as multibyte characters are not supported yet. */ #define MB_LEN_MAX 1 #define LLONG_MIN _PDCLIB_LLONG_MIN #define LLONG_MAX _PDCLIB_LLONG_MAX #define ULLONG_MAX _PDCLIB_ULLONG_MAX #define CHAR_BIT _PDCLIB_CHAR_BIT #define CHAR_MAX _PDCLIB_CHAR_MAX #define CHAR_MIN _PDCLIB_CHAR_MIN #define SCHAR_MAX _PDCLIB_SCHAR_MAX #define SCHAR_MIN _PDCLIB_SCHAR_MIN #define UCHAR_MAX _PDCLIB_UCHAR_MAX #define SHRT_MAX _PDCLIB_SHRT_MAX #define SHRT_MIN _PDCLIB_SHRT_MIN #define INT_MAX _PDCLIB_INT_MAX #define INT_MIN _PDCLIB_INT_MIN #define LONG_MAX _PDCLIB_LONG_MAX #define LONG_MIN _PDCLIB_LONG_MIN #define USHRT_MAX _PDCLIB_USHRT_MAX #define UINT_MAX _PDCLIB_UINT_MAX #define ULONG_MAX _PDCLIB_ULONG_MAX /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_LIMITS_H #include _PDCLIB_EXTEND_LIMITS_H #endif #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/stdnoreturn.h0000644000175000001440000000136714676735310023433 0ustar mhxusers/* _Noreturn This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_STDNORETURN_H #define _PDCLIB_STDNORETURN_H _PDCLIB_STDNORETURN_H #include "pdclib/_PDCLIB_internal.h" /* This basically breaks the letter of the standard (which states that noreturn be defined to _Noreturn). This defines noreturn -> _Noreturn on C11 compliant compilers only (as older compilers do not know about _Noreturn). */ #define noreturn _PDCLIB_Noreturn /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_STDNORETURN_H #include _PDCLIB_EXTEND_STDNORETURN_H #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/stdarg.h0000644000175000001440000000143514676735310022324 0ustar mhxusers/* Variable arguments This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_STDARG_H #define _PDCLIB_STDARG_H _PDCLIB_STDARG_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_config.h" typedef _PDCLIB_va_list va_list; #define va_arg( ap, type ) _PDCLIB_va_arg( ap, type ) #define va_copy( dest, src ) _PDCLIB_va_copy( dest, src ) #define va_end( ap ) _PDCLIB_va_end( ap ) #define va_start( ap, parmN ) _PDCLIB_va_start( ap, parmN ) /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_STDARG_H #include _PDCLIB_EXTEND_STDARG_H #endif #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/stdbool.h0000644000175000001440000000117114676735310022503 0ustar mhxusers/* Boolean type and values This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_STDBOOL_H #define _PDCLIB_STDBOOL_H _PDCLIB_STDBOOL_H #ifndef __cplusplus #define bool _Bool #define true 1 #define false 0 #endif #define __bool_true_false_are_defined 1 /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_STDBOOL_H #include _PDCLIB_EXTEND_STDBOOL_H #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/inttypes.h0000644000175000001440000004120314676735310022714 0ustar mhxusers/* Format conversion of integer types This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_INTTYPES_H #define _PDCLIB_INTTYPES_H _PDCLIB_INTTYPES_H #ifdef __cplusplus extern "C" { #endif #include typedef struct _PDCLIB_imaxdiv_t imaxdiv_t; /* 7.8.1 Macros for format specifiers */ /* The various leastN_t, fastN_t, intmax_t, and intptr_t types are typedefs to native types. But the user does not know which ones, which gives some problems when trying to *printf() / *scanf() those types. The various macros defined below allow to give the correct conversion specifiers without knowing the actual native type they represent. */ #define PRIdLEAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, d ) ) #define PRIdLEAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, d ) ) #define PRIdLEAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, d ) ) #define PRIdLEAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, d ) ) #define PRIdFAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST8_PREFIX, d ) ) #define PRIdFAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST16_PREFIX, d ) ) #define PRIdFAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST32_PREFIX, d ) ) #define PRIdFAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST64_PREFIX, d ) ) #define PRIdMAX _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTMAX_PREFIX, d ) ) #define PRIdPTR _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTPTR_PREFIX, d ) ) #define PRIiLEAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, i ) ) #define PRIiLEAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, i ) ) #define PRIiLEAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, i ) ) #define PRIiLEAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, i ) ) #define PRIiFAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST8_PREFIX, i ) ) #define PRIiFAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST16_PREFIX, i ) ) #define PRIiFAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST32_PREFIX, i ) ) #define PRIiFAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST64_PREFIX, i ) ) #define PRIiMAX _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTMAX_PREFIX, i ) ) #define PRIiPTR _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTPTR_PREFIX, i ) ) #define PRIoLEAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, o ) ) #define PRIoLEAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, o ) ) #define PRIoLEAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, o ) ) #define PRIoLEAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, o ) ) #define PRIoFAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST8_PREFIX, o ) ) #define PRIoFAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST16_PREFIX, o ) ) #define PRIoFAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST32_PREFIX, o ) ) #define PRIoFAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST64_PREFIX, o ) ) #define PRIoMAX _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTMAX_PREFIX, o ) ) #define PRIoPTR _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTPTR_PREFIX, o ) ) #define PRIuLEAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, u ) ) #define PRIuLEAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, u ) ) #define PRIuLEAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, u ) ) #define PRIuLEAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, u ) ) #define PRIuFAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST8_PREFIX, u ) ) #define PRIuFAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST16_PREFIX, u ) ) #define PRIuFAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST32_PREFIX, u ) ) #define PRIuFAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST64_PREFIX, u ) ) #define PRIuMAX _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTMAX_PREFIX, u ) ) #define PRIuPTR _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTPTR_PREFIX, u ) ) #define PRIxLEAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, x ) ) #define PRIxLEAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, x ) ) #define PRIxLEAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, x ) ) #define PRIxLEAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, x ) ) #define PRIxFAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST8_PREFIX, x ) ) #define PRIxFAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST16_PREFIX, x ) ) #define PRIxFAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST32_PREFIX, x ) ) #define PRIxFAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST64_PREFIX, x ) ) #define PRIxMAX _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTMAX_PREFIX, x ) ) #define PRIxPTR _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTPTR_PREFIX, x ) ) #define PRIXLEAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, X ) ) #define PRIXLEAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, X ) ) #define PRIXLEAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, X ) ) #define PRIXLEAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, X ) ) #define PRIXFAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST8_PREFIX, X ) ) #define PRIXFAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST16_PREFIX, X ) ) #define PRIXFAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST32_PREFIX, X ) ) #define PRIXFAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST64_PREFIX, X ) ) #define PRIXMAX _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTMAX_PREFIX, X ) ) #define PRIXPTR _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTPTR_PREFIX, X ) ) #define SCNdLEAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, d ) ) #define SCNdLEAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, d ) ) #define SCNdLEAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, d ) ) #define SCNdLEAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, d ) ) #define SCNdFAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST8_PREFIX, d ) ) #define SCNdFAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST16_PREFIX, d ) ) #define SCNdFAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST32_PREFIX, d ) ) #define SCNdFAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST64_PREFIX, d ) ) #define SCNdMAX _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTMAX_PREFIX, d ) ) #define SCNdPTR _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTPTR_PREFIX, d ) ) #define SCNiLEAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, i ) ) #define SCNiLEAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, i ) ) #define SCNiLEAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, i ) ) #define SCNiLEAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, i ) ) #define SCNiFAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST8_PREFIX, i ) ) #define SCNiFAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST16_PREFIX, i ) ) #define SCNiFAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST32_PREFIX, i ) ) #define SCNiFAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST64_PREFIX, i ) ) #define SCNiMAX _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTMAX_PREFIX, i ) ) #define SCNiPTR _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTPTR_PREFIX, i ) ) #define SCNoLEAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, o ) ) #define SCNoLEAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, o ) ) #define SCNoLEAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, o ) ) #define SCNoLEAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, o ) ) #define SCNoFAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST8_PREFIX, o ) ) #define SCNoFAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST16_PREFIX, o ) ) #define SCNoFAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST32_PREFIX, o ) ) #define SCNoFAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST64_PREFIX, o ) ) #define SCNoMAX _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTMAX_PREFIX, o ) ) #define SCNoPTR _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTPTR_PREFIX, o ) ) #define SCNuLEAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, u ) ) #define SCNuLEAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, u ) ) #define SCNuLEAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, u ) ) #define SCNuLEAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, u ) ) #define SCNuFAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST8_PREFIX, u ) ) #define SCNuFAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST16_PREFIX, u ) ) #define SCNuFAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST32_PREFIX, u ) ) #define SCNuFAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST64_PREFIX, u ) ) #define SCNuMAX _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTMAX_PREFIX, u ) ) #define SCNuPTR _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTPTR_PREFIX, u ) ) #define SCNxLEAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, x ) ) #define SCNxLEAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, x ) ) #define SCNxLEAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, x ) ) #define SCNxLEAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, x ) ) #define SCNxFAST8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST8_PREFIX, x ) ) #define SCNxFAST16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST16_PREFIX, x ) ) #define SCNxFAST32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST32_PREFIX, x ) ) #define SCNxFAST64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_FAST64_PREFIX, x ) ) #define SCNxMAX _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTMAX_PREFIX, x ) ) #define SCNxPTR _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INTPTR_PREFIX, x ) ) /* The exact-width types (int8_t, int16_t, ...) are *optional*, as not all architectures support the necessary 8-bits-per-byte two's complement native types. */ #if _PDCLIB_TWOS_COMPLEMENT == 1 #if _PDCLIB_INT_LEAST8_MAX == 0x7f #define PRId8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, d ) ) #define PRIi8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, i ) ) #define PRIo8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, o ) ) #define PRIu8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, u ) ) #define PRIx8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, x ) ) #define PRIX8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, X ) ) #define SCNd8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, d ) ) #define SCNi8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, i ) ) #define SCNo8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, o ) ) #define SCNu8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, u ) ) #define SCNx8 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST8_PREFIX, x ) ) #endif #if _PDCLIB_INT_LEAST16_MAX == 0x7fff #define PRId16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, d ) ) #define PRIi16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, i ) ) #define PRIo16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, o ) ) #define PRIu16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, u ) ) #define PRIx16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, x ) ) #define PRIX16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, X ) ) #define SCNd16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, d ) ) #define SCNi16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, i ) ) #define SCNo16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, o ) ) #define SCNu16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, u ) ) #define SCNx16 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST16_PREFIX, x ) ) #endif #if _PDCLIB_INT_LEAST32_MAX == 0x7fffffffl #define PRId32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, d ) ) #define PRIi32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, i ) ) #define PRIo32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, o ) ) #define PRIu32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, u ) ) #define PRIx32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, x ) ) #define PRIX32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, X ) ) #define SCNd32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, d ) ) #define SCNi32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, i ) ) #define SCNo32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, o ) ) #define SCNu32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, u ) ) #define SCNx32 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST32_PREFIX, x ) ) #endif #if _PDCLIB_INT_LEAST64_MAX == 0x7fffffffffffffffll #define PRId64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, d ) ) #define PRIi64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, i ) ) #define PRIo64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, o ) ) #define PRIu64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, u ) ) #define PRIx64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, x ) ) #define PRIX64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, X ) ) #define SCNd64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, d ) ) #define SCNi64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, i ) ) #define SCNo64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, o ) ) #define SCNu64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, u ) ) #define SCNx64 _PDCLIB_value2string( _PDCLIB_concat( _PDCLIB_INT_LEAST64_PREFIX, x ) ) #endif #endif /* 7.8.2 Functions for greatest-width integer types */ /* Calculate the absolute value of j */ _PDCLIB_PUBLIC intmax_t imaxabs( intmax_t j ); /* Return quotient (quot) and remainder (rem) of an integer division in the imaxdiv_t struct. */ _PDCLIB_PUBLIC imaxdiv_t imaxdiv( intmax_t numer, intmax_t denom ); /* Separate the character array nptr into three parts: A (possibly empty) sequence of whitespace characters, a character representation of an integer to the given base, and trailing invalid characters (including the terminating null character). If base is 0, assume it to be 10, unless the integer representation starts with 0x / 0X (setting base to 16) or 0 (setting base to 8). If given, base can be anything from 0 to 36, using the 26 letters of the base alphabet (both lowercase and uppercase) as digits 10 through 35. The integer representation is then converted into the return type of the function. It can start with a '+' or '-' sign. If the sign is '-', the result of the conversion is negated. If the conversion is successful, the converted value is returned. If endptr is not a NULL pointer, a pointer to the first trailing invalid character is returned in *endptr. If no conversion could be performed, zero is returned (and nptr in *endptr, if endptr is not a NULL pointer). If the converted value does not fit into the return type, the functions return INTMAX_MIN, INTMAX_MAX, or UINTMAX_MAX, respectively, depending on the sign of the integer representation and the return type, and errno is set to ERANGE. */ /* This function is equivalent to strtol() / strtoul() in , but on the potentially larger type. */ _PDCLIB_PUBLIC intmax_t strtoimax( const char * _PDCLIB_restrict nptr, char ** _PDCLIB_restrict endptr, int base ); _PDCLIB_PUBLIC uintmax_t strtoumax( const char * _PDCLIB_restrict nptr, char ** _PDCLIB_restrict endptr, int base ); /* TODO: wcstoimax(), wcstoumax() */ /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_INTTYPES_H #include _PDCLIB_EXTEND_INTTYPES_H #endif #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/string.h0000644000175000001440000004067514676735310022357 0ustar mhxusers/* String handling This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_STRING_H #define _PDCLIB_STRING_H _PDCLIB_STRING_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_lib_ext1.h" #include "pdclib/_PDCLIB_internal.h" #ifndef _PDCLIB_SIZE_T_DEFINED #define _PDCLIB_SIZE_T_DEFINED _PDCLIB_SIZE_T_DEFINED typedef _PDCLIB_size_t size_t; #endif #ifndef _PDCLIB_NULL_DEFINED #define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED #define NULL _PDCLIB_NULL #endif /* String function conventions */ /* In any of the following functions taking a size_t n to specify the length of an array or size of a memory region, n may be 0, but the pointer arguments to the call shall still be valid unless otherwise stated. */ /* Copying functions */ /* Copy a number of n characters from the memory area pointed to by s2 to the area pointed to by s1. If the two areas overlap, behaviour is undefined. Returns the value of s1. */ _PDCLIB_PUBLIC void * memcpy( void * _PDCLIB_restrict s1, const void * _PDCLIB_restrict s2, size_t n ); /* Copy a number of n characters from the memory area pointed to by s2 to the area pointed to by s1. The two areas may overlap. Returns the value of s1. */ _PDCLIB_PUBLIC void * memmove( void * _PDCLIB_restrict s1, const void * _PDCLIB_restrict s2, size_t n ); /* Copy the character array s2 (including terminating '\0' byte) into the character array s1. Returns the value of s1. */ _PDCLIB_PUBLIC char * strcpy( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2 ); /* Copy a maximum of n characters from the character array s2 into the character array s1. If s2 is shorter than n characters, '\0' bytes will be appended to the copy in s1 until n characters have been written. If s2 is longer than n characters, NO terminating '\0' will be written to s1. If the arrays overlap, behaviour is undefined. Returns the value of s1. */ _PDCLIB_PUBLIC char * strncpy( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2, size_t n ); /* Concatenation functions */ /* Append the contents of the character array s2 (including terminating '\0') to the character array s1 (first character of s2 overwriting the '\0' of s1). If the arrays overlap, behaviour is undefined. Returns the value of s1. */ _PDCLIB_PUBLIC char * strcat( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2 ); /* Append a maximum of n characters from the character array s2 to the character array s1 (first character of s2 overwriting the '\0' of s1). A terminating '\0' is ALWAYS appended, even if the full n characters have already been written. If the arrays overlap, behaviour is undefined. Returns the value of s1. */ _PDCLIB_PUBLIC char * strncat( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2, size_t n ); /* Comparison functions */ /* Compare the first n characters of the memory areas pointed to by s1 and s2. Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if s1 > s2. */ _PDCLIB_PUBLIC int memcmp( const void * s1, const void * s2, size_t n ); /* Compare the character arrays s1 and s2. Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if s1 > s2. */ _PDCLIB_PUBLIC int strcmp( const char * s1, const char * s2 ); /* Compare the character arrays s1 and s2, interpreted as specified by the LC_COLLATE category of the current locale. Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if s1 > s2. TODO: Currently a dummy wrapper for strcmp() as PDCLib does not yet support locales. */ _PDCLIB_PUBLIC int strcoll( const char * s1, const char * s2 ); /* Compare no more than the first n characters of the character arrays s1 and s2. Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if s1 > s2. */ _PDCLIB_PUBLIC int strncmp( const char * s1, const char * s2, size_t n ); /* Transform the character array s2 as appropriate for the LC_COLLATE setting of the current locale. If length of resulting string is less than n, store it in the character array pointed to by s1. Return the length of the resulting string. */ _PDCLIB_PUBLIC size_t strxfrm( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2, size_t n ); /* Search functions */ /* Search the first n characters in the memory area pointed to by s for the character c (interpreted as unsigned char). Returns a pointer to the first instance found, or NULL. */ _PDCLIB_PUBLIC void * memchr( const void * s, int c, size_t n ); /* Search the character array s (including terminating '\0') for the character c (interpreted as char). Returns a pointer to the first instance found, or NULL. */ _PDCLIB_PUBLIC char * strchr( const char * s, int c ); /* Determine the length of the initial substring of character array s1 which consists only of characters not from the character array s2. Returns the length of that substring. */ _PDCLIB_PUBLIC size_t strcspn( const char * s1, const char * s2 ); /* Search the character array s1 for any character from the character array s2. Returns a pointer to the first occurrence, or NULL. */ _PDCLIB_PUBLIC char * strpbrk( const char * s1, const char * s2 ); /* Search the character array s (including terminating '\0') for the character c (interpreted as char). Returns a pointer to the last instance found, or NULL. */ _PDCLIB_PUBLIC char * strrchr( const char * s, int c ); /* Determine the length of the initial substring of character array s1 which consists only of characters from the character array s2. Returns the length of that substring. */ _PDCLIB_PUBLIC size_t strspn( const char * s1, const char * s2 ); /* Search the character array s1 for the substring in character array s2. Returns a pointer to that sbstring, or NULL. If s2 is of length zero, returns s1. */ _PDCLIB_PUBLIC char * strstr( const char * s1, const char * s2 ); /* In a series of subsequent calls, parse a C string into tokens. On the first call to strtok(), the first argument is a pointer to the to-be- parsed C string. On subsequent calls, the first argument is NULL unless you want to start parsing a new string. s2 holds an array of separator characters which can differ from call to call. Leading separators are skipped, the first trailing separator overwritten with '\0'. Returns a pointer to the next token. WARNING: This function uses static storage, and as such is not reentrant. */ _PDCLIB_PUBLIC char * strtok( char * _PDCLIB_restrict s1, const char * _PDCLIB_restrict s2 ); /* Miscellaneous functions */ /* Write the character c (interpreted as unsigned char) to the first n characters of the memory area pointed to by s. Returns s. */ _PDCLIB_PUBLIC void * memset( void * s, int c, size_t n ); /* Map an error number to a (locale-specific) error message string. Error numbers are typically errno values, but any number is mapped to a message. TODO: PDCLib does not yet support locales. */ _PDCLIB_PUBLIC char * strerror( int errnum ); /* Returns the length of the string s (excluding terminating '\0'). */ _PDCLIB_PUBLIC size_t strlen( const char * s ); /* Annex K -- Bounds-checking interfaces */ #if ( __STDC_WANT_LIB_EXT1__ + 0 ) != 0 #ifndef _PDCLIB_ERRNO_T_DEFINED #define _PDCLIB_ERRNO_T_DEFINED _PDCLIB_ERRNO_T_DEFINED typedef int errno_t; #endif #ifndef _PDCLIB_RSIZE_T_DEFINED #define _PDCLIB_RSIZE_T_DEFINED _PDCLIB_RSIZE_T_DEFINED typedef _PDCLIB_size_t rsize_t; #endif /* Copy a number of n characters from the memory area pointed to by s2 to the area pointed to by s1 of size s1max. Returns zero if successful, non-zero otherwise. The following conditions will be considered runtime constraint violations: - s1 or s2 being NULL. - s1max or n being > RSIZE_MAX. - n > s1max (not enough space in s1). - copying between overlapping objects. In case of a constraint violation, if s1 is not NULL and s1max <= RSIZE_MAX then the first s1max characters of s1 will be set to zero. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC errno_t memcpy_s( void * _PDCLIB_restrict s1, rsize_t s1max, const void * _PDCLIB_restrict s2, rsize_t n ); /* Copy a number of n characters from the memory area pointed to by s2 to the area pointed to by s1 of size s1max. The two areas may overlap. Returns zero if successful, non-zero otherwise. The following conditions will be considered runtime constraint violations: - s1 or s2 being NULL. - s1max or n being > RSIZE_MAX. - n > s1max (not enough space in s1). In case of a constraint violation, if s1 is not NULL and s1max <= RSIZE_MAX then the first s1max characters of s1 will be set to zero. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC errno_t memmove_s( void * _PDCLIB_restrict s1, rsize_t s1max, const void * _PDCLIB_restrict s2, rsize_t n ); /* Copy the character array s2 (including terminating '\0' byte) into the character array s1. Returns zero if successful, non-zero otherwise. The following conditions will be considered runtime constraint violations: - s1 or s2 being NULL. - s1max being zero or > RSIZE_MAX. - s1max not greater than strnlen_s( s2, s1max ) (not enough space in s1). - copying between overlapping objects. In case of a constraint violation, if s1 is not NULL and s1max <= RSIZE_MAX then s1[0] will be set to '\0'. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC errno_t strcpy_s( char * _PDCLIB_restrict s1, rsize_t s1max, const char * _PDCLIB_restrict s2 ); /* Copy a maximum of n characters from the character array s2 into the character array s1. If s2 is longer than n, s1[n] will be set to '\0'. Returns zero if successful, non-zero otherwise. ATTENTION ATTENTION ATTENTION This function differs in two fundamental ways from strncpy(): - remaining space in s1 will NOT be zeroed. Their value is unspecified. - s1 WILL be zero-terminated even if there is not enough space to hold all n characters from s2. THANK YOU FOR YOUR ATTENTION. The following conditions will be considered runtime constraint violations: - s1 or s2 being NULL. - s1max or n being > RSIZE_MAX. - s1max being zero. - n >= s1max and s1max <= strnlen_s( s2, s1max ) (not enough space in s1). - copying between overlapping objects. In case of a constraint violation, if s1 is not NULL and s1max is greater zero and <= RSIZE_MAX, s1[0] will be set to '\0'. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC errno_t strncpy_s( char * _PDCLIB_restrict s1, rsize_t s1max, const char * _PDCLIB_restrict s2, rsize_t n ); /* Append the contents of the character array s2 (including terminating '\0') to the character array s1 (first character of s2 overwriting the '\0' of s1). Elements following the terminating null character (if any) take unspecified values. Returns zero if successful, non-zero otherwise. The following conditions will be considered runtime constraint violations: - s1 or s2 being NULL. - s1max being > RSIZE_MAX. - s1max being zero. - not enough space in s1 for both s1 and the characters copied from s2. - copying between overlapping objects. In case of a constraint violation, if s1 is not NULL and s1max is greater zero and <= RSIZE_MAX, s1[0] will be set to '\0'. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC errno_t strcat_s( char * _PDCLIB_restrict s1, rsize_t s1max, const char * _PDCLIB_restrict s2 ); /* Append a maximum of n characters from the character array s2 to the character array s1 (first character of s2 overwriting the '\0' of s1). A terminating '\0' is ALWAYS appended, even if the full n characters have already been written. Elements following the terminating null character (if any) take unspecified values. Returns zero if successful, non-zero otherwise. The following conditions will be considered runtime constraint violations: - s1 or s2 being NULL. - s1max or n being > RSIZE_MAX. - s1max being zero. - not enough space in s1 for both s1 and the characters copied from s2. - copying between overlapping objects. In case of a constraint violation, if s1 is not NULL and s1max is greater zero and <= RSIZE_MAX, s1[0] will be set to '\0'. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC errno_t strncat_s( char * _PDCLIB_restrict s1, rsize_t s1max, const char * _PDCLIB_restrict s2, rsize_t n ); /* In a series of subsequent calls, parse a C string into tokens. On the first call to strtok(), the first argument is a pointer to the to-be- parsed C string of size *s1max. On subsequent calls, the first argument is NULL unless you want to start parsing a new string. s2 holds an array of separator characters which can differ from call to call. Leading separators are skipped, the first trailing separator overwritten with '\0'. Returns a pointer to the next token. The following conditions will be considered runtime constraint violations: - s1max, s2, or ptr being NULL. - s1max or n being > RSIZE_MAX. - s1max being zero. - not enough space in s1 for both s1 and the characters copied from s2. - copying between overlapping objects. In case of a constraint violation, if s1 is not NULL and s1max is greater zero and <= RSIZE_MAX, s1[0] will be set to '\0'. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC char * strtok_s( char * _PDCLIB_restrict s1, rsize_t * _PDCLIB_restrict s1max, const char * _PDCLIB_restrict s2, char ** _PDCLIB_restrict ptr ); /* Write the character c (interpreted as unsigned char) to the first n characters of the memory area pointed to by s of size smax. Returns zero if successful, non-zero otherwise. The following conditions will be considered runtime constraint violations: - s being NULL. - smax or n being > RSIZE_MAX. - n being > smax. In case of a constraint violation, if s is not NULL and smax is <= RSIZE_MAX the value of c (interpreted as unsigned char) is written to the first smax characters of s. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC errno_t memset_s( void * s, rsize_t smax, int c, rsize_t n ); /* Map an error number to a (locale-specific) error message string. Error numbers are typically errno values, but any number is mapped to a message. TODO: PDCLib does not yet support locales. If the length of the mapped string is < maxsize, the string is copied to s. Otherwise, if maxsize is greater than zero, as much of the string as does fit is copied, and s[maxsize-1] set to '\0'. If maxsize is greater than 3, the partial string is made to end in "...". Returns zero if the string was copied successfully in full, non-zero otherwise. The following conditions will be considered runtime constraint violations: - s being NULL. - maxsize being zero or > RSIZE_MAX. In case of a constraint violation, s is not modified. The currently active constraint violation handler function will be called (see set_constraint_handler_s()). */ _PDCLIB_PUBLIC errno_t strerror_s( char * s, rsize_t maxsize, errno_t errnum ); /* Map an error number to a (locale-specific) error message string, the same way as strerror_s() would do. Error numbers are typically errno values, but any number is mapped to a message. TODO: PDCLib does not yet support locales. Returns the length of the mapped string. */ _PDCLIB_PUBLIC size_t strerrorlen_s( errno_t errnum ); /* Returns the length of the string s (excluding terminating '\0'). If there is no null character in the first maxsize characters of s, rerturns maxsize. If s is NULL, returns zero. At most the first maxsize characters of s shall be accessed by the function. */ _PDCLIB_PUBLIC size_t strnlen_s( const char * s, size_t maxsize ); #endif #ifdef __cplusplus } #endif /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_STRING_H #include _PDCLIB_EXTEND_STRING_H #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/assert.h0000644000175000001440000000274614676735310022347 0ustar mhxusers/* Diagnostics This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_internal.h" #ifndef _PDCLIB_ASSERT_H #define _PDCLIB_ASSERT_H _PDCLIB_ASSERT_H _PDCLIB_PUBLIC void _PDCLIB_assert99( const char * const, const char * const, const char * const ); _PDCLIB_PUBLIC void _PDCLIB_assert89( const char * const ); #endif /* If NDEBUG is set, assert() is a null operation. */ #undef assert #ifdef NDEBUG #define assert( ignore ) ( (void) 0 ) #else #if __STDC_VERSION__ >= 199901L #define assert( expression ) ( ( expression ) ? (void) 0 \ : _PDCLIB_assert99( "Assertion failed: " #expression \ ", function ", __func__, \ ", file " __FILE__ \ ", line " _PDCLIB_value2string( __LINE__ ) \ "." _PDCLIB_endl ) ) #else #define assert( expression ) ( ( expression ) ? (void) 0 \ : _PDCLIB_assert89( "Assertion failed: " #expression \ ", file " __FILE__ \ ", line " _PDCLIB_value2string( __LINE__ ) \ "." _PDCLIB_endl ) ) #endif #endif /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_ASSERT_H #include _PDCLIB_EXTEND_ASSERT_H #endif #ifdef __cplusplus } #endif Convert-Binary-C-0.85/tests/include/pdclib/include/stddef.h0000644000175000001440000000224714676735310022313 0ustar mhxusers/* Common definitions This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_STDDEF_H #define _PDCLIB_STDDEF_H _PDCLIB_STDDEF_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_lib_ext1.h" #include "pdclib/_PDCLIB_internal.h" typedef _PDCLIB_ptrdiff_t ptrdiff_t; #ifndef _PDCLIB_SIZE_T_DEFINED #define _PDCLIB_SIZE_T_DEFINED _PDCLIB_SIZE_T_DEFINED typedef _PDCLIB_size_t size_t; #endif #ifndef __cplusplus typedef _PDCLIB_wchar_t wchar_t; #endif #ifndef _PDCLIB_NULL_DEFINED #define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED #define NULL _PDCLIB_NULL #endif #define offsetof( type, member ) _PDCLIB_offsetof( type, member ) /* Annex K -- Bounds-checking interfaces */ #if ( __STDC_WANT_LIB_EXT1__ + 0 ) != 0 #ifndef _PDCLIB_RSIZE_T_DEFINED #define _PDCLIB_RSIZE_T_DEFINED _PDCLIB_RSIZE_T_DEFINED typedef size_t rsize_t; #endif #endif /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_STDDEF_H #include _PDCLIB_EXTEND_STDDEF_H #endif #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/include/ctype.h0000644000175000001440000000722514676735310022167 0ustar mhxusers/* Character handling This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ #ifndef _PDCLIB_CTYPE_H #define _PDCLIB_CTYPE_H _PDCLIB_CTYPE_H #ifdef __cplusplus extern "C" { #endif #include "pdclib/_PDCLIB_internal.h" /* Character classification functions */ /* Note that there is a difference between "whitespace" (any printing, non- graph character, like horizontal and vertical tab), and "blank" (the literal ' ' space character). There will be masking macros for each of these later on, but right now I focus on the functions only. */ /* Returns isalpha( c ) || isdigit( c ) */ _PDCLIB_PUBLIC int isalnum( int c ); /* Returns isupper( c ) || islower( c ) in the "C" locale. In any other locale, also returns true for a locale-specific set of alphabetic characters which are neither control characters, digits, punctation, or whitespace. */ _PDCLIB_PUBLIC int isalpha( int c ); /* Returns true if the character isspace() and used for separating words within a line of text. In the "C" locale, only ' ' and '\t' are considered blanks. */ _PDCLIB_PUBLIC int isblank( int c ); /* Returns true if the character is a control character. */ _PDCLIB_PUBLIC int iscntrl( int c ); /* Returns true if the character is a decimal digit. Locale-independent. */ _PDCLIB_PUBLIC int isdigit( int c ); /* Returns true for every printing character except space (' '). NOTE: This definition differs from that of iswgraph() in , which considers any iswspace() character, not only ' '. */ _PDCLIB_PUBLIC int isgraph( int c ); /* Returns true for lowercase letters in the "C" locale. In any other locale, also returns true for a locale-specific set of characters which are neither control characters, digits, punctation, or space (' '). In a locale other than the "C" locale, a character might test true for both islower() and isupper(). */ _PDCLIB_PUBLIC int islower( int c ); /* Returns true for every printing character including space (' '). */ _PDCLIB_PUBLIC int isprint( int c ); /* Returns true for a locale-specific set of punctuation charcters; these may not be whitespace or alphanumeric. In the "C" locale, returns true for every printing character that is not whitespace or alphanumeric. */ _PDCLIB_PUBLIC int ispunct( int c ); /* Returns true for every standard whitespace character (' ', '\f', '\n', '\r', '\t', '\v') in the "C" locale. In any other locale, also returns true for a locale-specific set of characters for which isalnum() is false. */ _PDCLIB_PUBLIC int isspace( int c ); /* Returns true for uppercase letters in the "C" locale. In any other locale, also returns true for a locale-specific set of characters which are neither control characters, digits, punctation, or space (' '). In a locale other than the "C" locale, a character might test true for both islower() and isupper(). */ _PDCLIB_PUBLIC int isupper( int c ); /* Returns true for any hexadecimal-digit character. Locale-independent. */ _PDCLIB_PUBLIC int isxdigit( int c ); /* Character case mapping functions */ /* Converts an uppercase letter to a corresponding lowercase letter. Input that is not an uppercase letter remains unchanged. */ _PDCLIB_PUBLIC int tolower( int c ); /* Converts a lowercase letter to a corresponding uppercase letter. Input that is not a lowercase letter remains unchanged. */ _PDCLIB_PUBLIC int toupper( int c ); /* Extension hook for downstream projects that want to have non-standard extensions to standard headers. */ #ifdef _PDCLIB_EXTEND_CTYPE_H #include _PDCLIB_EXTEND_CTYPE_H #endif #ifdef __cplusplus } #endif #endif Convert-Binary-C-0.85/tests/include/pdclib/test_support/0000755000175000001440000000000014677003524022010 5ustar mhxusersConvert-Binary-C-0.85/tests/include/pdclib/test_support/_PDCLIB_test.h0000644000175000001440000000346414676735310024327 0ustar mhxusers/* PDCLib testing suite <_PDCLIB_test.h> This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* -------------------------------------------------------------------------- */ /* Helper macros for test drivers */ /* -------------------------------------------------------------------------- */ #include #include #include #include /* Some strings used for and testing. */ static const char abcde[] = "abcde"; static const char abcdx[] = "abcdx"; static const char teststring[] = "1234567890\nABCDEFGHIJKLMNOPQRSTUVWXYZ\nabcdefghijklmnopqrstuvwxyz\n"; /* Temporary file names */ static const char testfile[] = "test_support/testfile"; static const char testfile1[] = "test_support/testfile1"; static const char testfile2[] = "test_support/testfile2"; #ifndef NO_TESTDRIVER #define NO_TESTDRIVER 0 #endif static int TEST_RESULTS = 0; /* TESTCASE() - generic test */ #define TESTCASE( x ) \ if ( x ) \ { \ /* EMPTY */ \ } \ else \ { \ TEST_RESULTS += 1; \ printf( "FAILED: " __FILE__ ", line %d - %s\n", __LINE__, #x ); \ } /* TESTCASE_NOREG() - PDCLib-only test */ #ifndef REGTEST #define TESTCASE_NOREG( x ) TESTCASE( x ) #else #define TESTCASE_NOREG( x ) #endif /* Include printf() / scanf() test macros if required */ #if defined( _PDCLIB_FILEIO ) || defined( _PDCLIB_STRINGIO ) #include "_PDCLIB_iotest.h" #endif /* Helper macro to fill a struct tm */ #define MKTIME( tm, sec, min, hour, day, month, year, wday, yday ) tm.tm_sec = sec; tm.tm_min = min; tm.tm_hour = hour; tm.tm_mday = day; tm.tm_mon = month; tm.tm_year = year; tm.tm_wday = wday; tm.tm_yday = yday; tm.tm_isdst = -1; Convert-Binary-C-0.85/tests/include/pdclib/test_support/scanf_testcases.h0000644000175000001440000000632614676735310025344 0ustar mhxusers{ char buffer[100]; int i; unsigned int u; int * p; #ifndef TEST_CONVERSION_ONLY int n; #endif /* basic: reading of three-char string */ SCANF_TEST( 1, "foo", "%3c", buffer ); TESTCASE( memcmp( buffer, "foo", 3 ) == 0 ); #ifndef TEST_CONVERSION_ONLY /* %% for single % */ SCANF_TEST( 1, "%x", "%%%c%n", buffer, &n ); TESTCASE( n == 2 ); TESTCASE( buffer[0] == 'x' ); /* * to skip assignment */ SCANF_TEST( 0, "abcdefg", "%*[cba]%n", &n ); TESTCASE( n == 3 ); SCANF_TEST( 0, "foo", "%*s%n", &n ); TESTCASE( n == 3 ); SCANF_TEST( 0, "abc", "%*c%n", &n ); TESTCASE( n == 1 ); SCANF_TEST( 1, "3xfoo", "%*dx%3c", buffer ); TESTCASE( memcmp( buffer, "foo", 3 ) == 0 ); #endif /* domain testing on 'int' type */ SCANF_TEST( 1, "-" INT_MIN_DEZ_STR, "%d", &i ); TESTCASE( i == INT_MIN ); SCANF_TEST( 1, INT_MAX_DEZ_STR, "%d", &i ); TESTCASE( i == INT_MAX ); SCANF_TEST( 1, "-1", "%d", &i ); TESTCASE( i == -1 ); SCANF_TEST( 1, "0", "%d", &i ); TESTCASE( i == 0 ); SCANF_TEST( 1, "1", "%d", &i ); TESTCASE( i == 1 ); SCANF_TEST( 1, "-" INT_MIN_DEZ_STR, "%i", &i ); TESTCASE( i == INT_MIN ); SCANF_TEST( 1, INT_MAX_DEZ_STR, "%i", &i ); TESTCASE( i == INT_MAX ); SCANF_TEST( 1, "-1", "%i", &i ); TESTCASE( i == -1 ); SCANF_TEST( 1, "0", "%i", &i ); TESTCASE( i == 0 ); SCANF_TEST( 1, "1", "%i", &i ); TESTCASE( i == 1 ); SCANF_TEST( 1, "0x7" INT_HEXDIG, "%i", &i ); TESTCASE( i == INT_MAX ); SCANF_TEST( 1, "0x0", "%i", &i ); TESTCASE( i == 0 ); #ifndef TEST_CONVERSION_ONLY SCANF_TEST( 1, "00", "%i%n", &i, &n ); TESTCASE( i == 0 ); TESTCASE( n == 2 ); #endif /* domain testing on 'unsigned int' type */ SCANF_TEST( 1, UINT_MAX_DEZ_STR, "%u", &u ); TESTCASE( u == UINT_MAX ); SCANF_TEST( 1, "0", "%u", &u ); TESTCASE( u == 0 ); SCANF_TEST( 1, "f" INT_HEXDIG, "%x", &u ); TESTCASE( u == UINT_MAX ); SCANF_TEST( 1, "7" INT_HEXDIG, "%x", &u ); TESTCASE( u == INT_MAX ); SCANF_TEST( 1, "0", "%o", &u ); TESTCASE( u == 0 ); SCANF_TEST( 1, INT_OCTDIG, "%o", &u ); TESTCASE( u == UINT_MAX ); /* testing %c */ memset( buffer, '\0', 100 ); SCANF_TEST( 1, "x", "%c", buffer ); TESTCASE( memcmp( buffer, "x\0", 2 ) == 0 ); #ifndef TEST_CONVERSION_ONLY /* testing %s */ memset( buffer, '\0', 100 ); SCANF_TEST( 1, "foo bar", "%s%n", buffer, &n ); TESTCASE( memcmp( buffer, "foo\0", 4 ) == 0 ); TESTCASE( n == 3 ); SCANF_TEST( 2, "foo bar baz", "%s %s %n", buffer, buffer + 4, &n ); TESTCASE( n == 9 ); TESTCASE( memcmp( buffer, "foo\0bar\0", 8 ) == 0 ); #endif /* testing %[ */ SCANF_TEST( 1, "abcdefg", "%[cba]", buffer ); TESTCASE( memcmp( buffer, "abc\0", 4 ) == 0 ); #ifndef TEST_CONVERSION_ONLY SCANF_TEST( -1, "", "%[cba]", buffer ); SCANF_TEST( 1, "3", "%u%[cba]", &u, buffer ); #endif /* testing %p */ p = NULL; sprintf( buffer, "%p", (void*)p ); p = &i; SCANF_TEST( 1, buffer, "%p", (void**)&p ); TESTCASE( p == NULL ); p = &i; sprintf( buffer, "%p", (void*)p ); p = NULL; SCANF_TEST( 1, buffer, "%p", (void**)&p ); TESTCASE( p == &i ); } Convert-Binary-C-0.85/tests/include/pdclib/test_support/_PDCLIB_iotest.h0000644000175000001440000001521614676735310024655 0ustar mhxusers/* PDCLib testing suite <_PDCLIB_test.h> This file is part of the Public Domain C Library (PDCLib). Permission is granted to use, modify, and / or redistribute at will. */ /* -------------------------------------------------------------------------- */ /* Helper macros for printf() / scanf() tests */ /* -------------------------------------------------------------------------- */ /* Tucked away in a separate header because these are ugly, complex, and not */ /* needed in 95% of all test cases. */ /* -------------------------------------------------------------------------- */ /* ...printf() tests */ #if defined( _PDCLIB_FILEIO ) #define GET_RESULT \ rewind( target ); \ if ( (int)fread( result_buffer, 1, actual_rc, target ) != actual_rc ) \ { \ fprintf( stderr, "GET_RESULT failed." ); \ } #define RESULT_MISMATCH( act, exp ) strcmp( result_buffer, exp ) != 0 #define RESULT_STRING( tgt ) result_buffer #elif defined( _PDCLIB_STRINGIO ) #define RESULT_MISMATCH( act, exp ) strcmp( act, exp ) != 0 #define GET_RESULT #define RESULT_STRING( tgt ) tgt #endif #ifdef _PDCLIB_FILEIO #define PREP_RESULT_BUFFER char result_buffer[100] = { 0 }; rewind( target ); #else #define PREP_RESULT_BUFFER #endif #define GETFMT( fmt, ... ) (fmt) #define PRINTF_TEST( expected_rc, expected_string, ... ) do { \ int actual_rc; \ PREP_RESULT_BUFFER \ actual_rc = testprintf( target, __VA_ARGS__ ); \ GET_RESULT \ if ( ( actual_rc != expected_rc ) || \ ( RESULT_MISMATCH( target, expected_string ) ) ) \ { \ ++TEST_RESULTS; \ fprintf( stderr, \ "FAILED: " __FILE__ " (" _PDCLIB_FILEID "), line %d\n" \ " format string \"%s\"\n" \ " expected %2d, \"%s\"\n" \ " actual %2d, \"%s\"\n", \ __LINE__, GETFMT(__VA_ARGS__, 0), expected_rc, \ expected_string, actual_rc, RESULT_STRING( target ) ); \ } \ } while ( 0 ) /* ...scanf() tests */ #if defined( _PDCLIB_FILEIO ) #define PREPARE_SOURCE( input_string ) \ source = freopen( NULL, "wb+", source ); \ fwrite( input_string, 1, strlen( input_string ), source ); \ rewind( source ); #elif defined( _PDCLIB_STRINGIO ) #define PREPARE_SOURCE( input_string ) \ memcpy( source, input_string, sizeof( input_string ) ); #endif #define SCANF_TEST( expected_rc, input_string, ... ) do { \ int actual_rc; \ PREPARE_SOURCE( input_string ); \ actual_rc = testscanf( source, __VA_ARGS__ ); \ if ( actual_rc != expected_rc ) \ { \ ++TEST_RESULTS; \ fprintf( stderr, "FAILED: " __FILE__ " (" _PDCLIB_FILEID "), line %d\n expected %2d, actual %2d\n", __LINE__, expected_rc, actual_rc ); \ } \ } while ( 0 ) /* Virtually everything in the printf() / scanf() test drivers is heavily depending on the platform, i.e. the width of the integer values. To do proper domain tests, we need the limits of the integers (largest and smallest value), which we can get from . But we also need the string representations of these numbers, to the various bases, which of course vary depending on how the platform defines 'int' and 'long'. */ #define sym2v( x ) #x #define sym2s( x ) sym2v( x ) #if INT_MAX >> 15 == 1 #define UINT_DIG 5 #define INT_DIG 5 #define INT_DIG_LESS1 "4" #define INT_DIG_PLUS1 "6" #define INT_DIG_PLUS2 "7" #define INT_HEXDIG "FFF" #define INT_hexdig "fff" #define INT_OCTDIG "177777" #define INT_MAX_DEZ_STR "32767" #define INT_MIN_DEZ_STR "32768" #define UINT_MAX_DEZ_STR "65535" #define INT_MAX_OCT_STR #define INT_MIN_OCT_STR #define UINT_MAX_OCT_STR #define INT_MAX_HEX_STR #define INT_MIN_HEX_STR #define UINT_MAX_HEX_STR #elif UINT_MAX >> 31 == 1 #define UINT_DIG 10 #define INT_DIG 10 #define INT_DIG_LESS1 "9" #define INT_DIG_PLUS1 "11" #define INT_DIG_PLUS2 "12" #define INT_HEXDIG "FFFFFFF" #define INT_hexdig "fffffff" #define INT_OCTDIG "37777777777" #define INT_MAX_DEZ_STR "2147483647" #define INT_MIN_DEZ_STR "2147483648" #define UINT_MAX_DEZ_STR "4294967295" #define INT_MAX_OCT_STR #define INT_MIN_OCT_STR #define UINT_MAX_OCT_STR #define INT_MAX_HEX_STR #define INT_MIN_HEX_STR #define UINT_MAX_HEX_STR #elif UINT_MAX >> 63 == 1 #define UINT_DIG 20 #define INT_DIG 19 #define INT_DIG_LESS1 "18" #define INT_DIG_PLUS1 "20" #define INT_DIG_PLUS2 "21" #define INT_HEXDIG "FFFFFFFFFFFFFFF" #define INT_hexdig "fffffffffffffff" #define INT_OCTDIG "1777777777777777777777" #define INT_MAX_DEZ_STR "9223372036854775807" #define INT_MIN_DEZ_STR "9223372036854775808" #define UINT_MAX_DEZ_STR "18446744073709551615" #define INT_MAX_OCT_STR #define INT_MIN_OCT_STR #define UINT_MAX_OCT_STR #define INT_MAX_HEX_STR #define INT_MIN_HEX_STR #define UINT_MAX_HEX_STR #else #error Unsupported width of 'int' (neither 16, 32, nor 64 bit). #endif #if ULONG_MAX >> 31 == 1 #define ULONG_DIG 10 #define LONG_DIG 10 #define LONG_MAX_DEZ_STR "2147483647" #define LONG_MIN_DEZ_STR "2147483648" #define ULONG_MAX_DEZ_STR "4294967295" #define LONG_MAX_OCT_STR #define LONG_MIN_OCT_STR #define ULONG_MAX_OCT_STR #define LONG_MAX_HEX_STR #define LONG_MIN_HEX_STR #define ULONG_MAX_HEX_STR #elif ULONG_MAX >> 63 == 1 #define ULONG_DIG 20 #define LONG_DIG 19 #define LONG_MAX_DEZ_STR "9223372036854775807" #define LONG_MIN_DEZ_STR "9223372036854775808" #define ULONG_MAX_DEZ_STR "18446744073709551615" #define LONG_MAX_OCT_STR #define LONG_MIN_OCT_STR #define ULONG_MAX_OCT_STR #define LONG_MAX_HEX_STR #define LONG_MIN_HEX_STR #define ULONG_MAX_HEX_STR #else #error Unsupported width of 'long' (neither 32 nor 64 bit). #endif #if ULLONG_MAX >> 63 == 1 #define ULLONG_DIG 20 #define LLONG_DIG 19 #define LLONG_MAX_DEZ_STR "9223372036854775807" #define LLONG_MIN_DEZ_STR "9223372036854775808" #define ULLONG_MAX_DEZ_STR "18446744073709551615" #define LLONG_MAX_OCT_STR #define LLONG_MIN_OCT_STR #define ULLONG_MAX_OCT_STR #define LLONG_MAX_HEX_STR #define LLONG_MIN_HEX_STR #define ULLONG_MAX_HEX_STR #elif ULLONG_MAX >> 127 == 1 #define ULLONG_DIG 38 #define LLONG_DIG 38 #define LLONG_MAX_DEZ_STR "170141183460469231731687303715884105727" #define LLONG_MIN_DEZ_STR "170141183460469231731687303715884105728" #define ULLONG_MAX_DEZ_STR "340282366920938463463374607431768211455" #define LLONG_MAX_OCT_STR #define LLONG_MIN_OCT_STR #define ULLONG_MAX_OCT_STR #define LLONG_MAX_HEX_STR #define LLONG_MIN_HEX_STR #define ULLONG_MAX_HEX_STR #else #error Unsupported width of 'long long' (neither 64 nor 128 bit). #endif Convert-Binary-C-0.85/tests/include/pdclib/test_support/printf_testcases.h0000644000175000001440000006141114676735310025550 0ustar mhxusers { #if __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wformat" #endif #if CHAR_MIN == -128 assert( CHAR_MIN == -128 ); PRINTF_TEST( 4, "-128", "%hhd", CHAR_MIN ); assert( CHAR_MAX == 127 ); PRINTF_TEST( 3, "127", "%hhd", CHAR_MAX ); #else assert( CHAR_MIN == 0 ); PRINTF_TEST( 1, "0", "%hhu", CHAR_MIN ); assert( CHAR_MAX == 255 ); PRINTF_TEST( 3, "255", "%hhu", CHAR_MAX ); #endif PRINTF_TEST( 1, "0", "%hhd", 0 ); assert( SHRT_MIN == -32768 ); PRINTF_TEST( 6, "-32768", "%hd", SHRT_MIN ); assert( SHRT_MAX == 32767 ); PRINTF_TEST( 5, "32767", "%hd", SHRT_MAX ); PRINTF_TEST( 1, "0", "%hd", 0 ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%d", INT_MIN ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%d", INT_MAX ); PRINTF_TEST( 1, "0", "%d", 0 ); PRINTF_TEST( LONG_DIG + 1, "-" LONG_MIN_DEZ_STR, "%ld", LONG_MIN ); PRINTF_TEST( LONG_DIG, LONG_MAX_DEZ_STR, "%ld", LONG_MAX ); PRINTF_TEST( 1, "0", "%ld", 0l ); PRINTF_TEST( LLONG_DIG + 1, "-" LLONG_MIN_DEZ_STR, "%lld", LLONG_MIN ); PRINTF_TEST( LLONG_DIG, LLONG_MAX_DEZ_STR, "%lld", LLONG_MAX ); PRINTF_TEST( 1, "0", "%lld", 0ll ); PRINTF_TEST( 3, "255", "%hhu", UCHAR_MAX ); PRINTF_TEST( 3, "255", "%hhu", ( unsigned char )-1 ); PRINTF_TEST( 5, "65535", "%hu", USHRT_MAX ); PRINTF_TEST( 5, "65535", "%hu", ( unsigned short )-1 ); PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "%u", UINT_MAX ); PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "%u", -1u ); PRINTF_TEST( ULONG_DIG, ULONG_MAX_DEZ_STR, "%lu", ULONG_MAX ); PRINTF_TEST( ULONG_DIG, ULONG_MAX_DEZ_STR, "%lu", -1ul ); PRINTF_TEST( ULLONG_DIG, ULLONG_MAX_DEZ_STR, "%llu", ULLONG_MAX ); PRINTF_TEST( ULLONG_DIG, ULLONG_MAX_DEZ_STR, "%llu", -1ull ); PRINTF_TEST( ( int )strlen( INT_HEXDIG ) + 1, "F" INT_HEXDIG, "%X", UINT_MAX ); PRINTF_TEST( ( int )strlen( INT_HEXDIG ) + 3, "0XF" INT_HEXDIG, "%#X", -1u ); PRINTF_TEST( ( int )strlen( INT_HEXDIG ) + 1, "f" INT_hexdig, "%x", UINT_MAX ); PRINTF_TEST( ( int )strlen( INT_HEXDIG ) + 3, "0xf" INT_hexdig, "%#x", -1u ); PRINTF_TEST( ( int )strlen( INT_OCTDIG ), INT_OCTDIG, "%o", UINT_MAX ); PRINTF_TEST( ( int )strlen( INT_OCTDIG ) + 1, "0" INT_OCTDIG, "%#o", -1u ); #if 0 /* TODO: This test case is broken, doesn't test what it was intended to. */ PRINTF_TEST( 5, "%.0#o", "%.0#o", 0 ); #endif PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%+d", INT_MIN ); PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%+d", INT_MAX ); PRINTF_TEST( 2, "+0", "%+d", 0 ); PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "%+u", UINT_MAX ); PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "%+u", -1u ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "% d", INT_MIN ); PRINTF_TEST( INT_DIG + 1, " " INT_MAX_DEZ_STR, "% d", INT_MAX ); PRINTF_TEST( 2, " 0", "% d", 0 ); PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "% u", UINT_MAX ); PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "% u", -1u ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%" INT_DIG_LESS1 "d", INT_MIN ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%" INT_DIG_LESS1 "d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%" sym2s( INT_DIG ) "d", INT_MIN ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%" sym2s( INT_DIG ) "d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%" INT_DIG_PLUS1 "d", INT_MIN ); PRINTF_TEST( INT_DIG + 1, " " INT_MAX_DEZ_STR, "%" INT_DIG_PLUS1 "d", INT_MAX ); PRINTF_TEST( INT_DIG + 2, " -" INT_MIN_DEZ_STR, "%" INT_DIG_PLUS2 "d", INT_MIN ); PRINTF_TEST( INT_DIG + 2, " " INT_MAX_DEZ_STR, "%" INT_DIG_PLUS2 "d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-" INT_DIG_LESS1 "d", INT_MIN ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%-" INT_DIG_LESS1 "d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-" sym2s( INT_DIG ) "d", INT_MIN ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%-" sym2s( INT_DIG ) "d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-" INT_DIG_PLUS1 "d", INT_MIN ); PRINTF_TEST( INT_DIG + 1, INT_MAX_DEZ_STR " ", "%-" INT_DIG_PLUS1 "d", INT_MAX ); PRINTF_TEST( INT_DIG + 2, "-" INT_MIN_DEZ_STR " ", "%-" INT_DIG_PLUS2 "d", INT_MIN ); PRINTF_TEST( INT_DIG + 2, INT_MAX_DEZ_STR " ", "%-" INT_DIG_PLUS2 "d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%0" INT_DIG_LESS1 "d", INT_MIN ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%0" INT_DIG_LESS1 "d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%0" sym2s( INT_DIG ) "d", INT_MIN ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%0" sym2s( INT_DIG ) "d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%0" INT_DIG_PLUS1 "d", INT_MIN ); PRINTF_TEST( INT_DIG + 1, "0" INT_MAX_DEZ_STR, "%0" INT_DIG_PLUS1 "d", INT_MAX ); PRINTF_TEST( INT_DIG + 2, "-0" INT_MIN_DEZ_STR, "%0" INT_DIG_PLUS2 "d", INT_MIN ); PRINTF_TEST( INT_DIG + 2, "00" INT_MAX_DEZ_STR, "%0" INT_DIG_PLUS2 "d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-0" INT_DIG_LESS1 "d", INT_MIN ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%-0" INT_DIG_LESS1 "d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-0" sym2s( INT_DIG ) "d", INT_MIN ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%-0" sym2s( INT_DIG ) "d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-0" INT_DIG_PLUS1 "d", INT_MIN ); PRINTF_TEST( INT_DIG + 1, INT_MAX_DEZ_STR " ", "%-0" INT_DIG_PLUS1 "d", INT_MAX ); PRINTF_TEST( INT_DIG + 2, "-" INT_MIN_DEZ_STR " ", "%-0" INT_DIG_PLUS2 "d", INT_MIN ); PRINTF_TEST( INT_DIG + 2, INT_MAX_DEZ_STR " ", "%-0" INT_DIG_PLUS2 "d", INT_MAX ); /* FIXME: This test not yet 32/64 bit agnostic */ PRINTF_TEST( 30, " 00000000002147483647", "%030.20d", INT_MAX ); PRINTF_TEST( ( int )strlen( INT_HEXDIG ) + 1, "f" INT_hexdig, "%.6x", UINT_MAX ); PRINTF_TEST( ( int )strlen( INT_HEXDIG ) + 3, "0xf" INT_hexdig, "%#6.3x", UINT_MAX ); PRINTF_TEST( ( int )strlen( INT_HEXDIG ) + 3, "0xf" INT_hexdig, "%#3.6x", UINT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%.6d", INT_MIN ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%6.3d", INT_MIN ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%3.6d", INT_MIN ); PRINTF_TEST( UINT_DIG, "0xf" INT_hexdig, "%#0.6x", UINT_MAX ); PRINTF_TEST( UINT_DIG, "0xf" INT_hexdig, "%#06.3x", UINT_MAX ); PRINTF_TEST( UINT_DIG, "0xf" INT_hexdig, "%#03.6x", UINT_MAX ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%#0.6d", INT_MAX ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%#06.3d", INT_MAX ); PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%#03.6d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%#+.6d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%#+6.3d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%#+3.6d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%+0.6d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%+06.3d", INT_MAX ); PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%+03.6d", INT_MAX ); #ifndef TEST_CONVERSION_ONLY PRINTF_TEST( INT_DIG + 2, "- " INT_MAX_DEZ_STR, "- %d", INT_MAX ); PRINTF_TEST( INT_DIG * 2 + 6, "- " INT_MAX_DEZ_STR " % -" INT_MIN_DEZ_STR, "- %d %% %d", INT_MAX, INT_MIN ); #endif PRINTF_TEST( 1, "x", "%c", 'x' ); PRINTF_TEST( 6, "abcdef", "%s", "abcdef" ); /* FIXME: This test not yet 32/64 bit agnostic */ PRINTF_TEST( 10, "0xdeadbeef", "%p", ( void * )0xdeadbeef ); PRINTF_TEST( 6, " 0x1", "%#6x", 1 ); #ifndef TEST_CONVERSION_ONLY { int val1, val2; PRINTF_TEST( 9, "123456789", "123456%n789%n", &val1, &val2 ); TESTCASE( val1 == 6 ); TESTCASE( val2 == 9 ); } #endif } /* PDCLIB-20: Verify "unusual" combinations of length and signedness */ PRINTF_TEST( 1, "1", "%tu", ( ptrdiff_t ) 1); /* unsigned prtdiff_t */ PRINTF_TEST( 2, "-1", "%jd", ( intmax_t ) -1); /* intmax_t */ PRINTF_TEST( 1, "1", "%ju", ( uintmax_t ) 1); /* uintmax_t */ PRINTF_TEST( 1, "1", "%zd", ( size_t ) 1); /* signed size_t */ /****************************************************************************** * NOTE: The following test cases are imported from the Tyndur project. They * * are therefore under the license of said project, not CC0. * * As said code comprises test cases, it does not form part of the * * final compiled library, and has no bearing on its licensing. * * * * See bug PDCLIB-6 for full details * ******************************************************************************/ /* * Copyright (c) 2011 The tyndur Project. All rights reserved. * * This code is derived from software contributed to the tyndur Project * by Kevin Wolf. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ { #ifndef TEST_CONVERSION_ONLY /* Ein String ohne alles */ PRINTF_TEST(12, "Hallo heimur", "Hallo heimur"); #endif /* Einfache Konvertierungen */ PRINTF_TEST(12, "Hallo heimur", "%s", "Hallo heimur"); PRINTF_TEST(4, "1024", "%d", 1024); PRINTF_TEST(5, "-1024", "%d", -1024); PRINTF_TEST(4, "1024", "%i", 1024); PRINTF_TEST(5, "-1024", "%i", -1024); PRINTF_TEST(4, "1024", "%u", 1024u); PRINTF_TEST(10, "4294966272", "%u", -1024u); PRINTF_TEST(3, "777", "%o", 0777u); PRINTF_TEST(11, "37777777001", "%o", -0777u); PRINTF_TEST(8, "1234abcd", "%x", 0x1234abcdu); PRINTF_TEST(8, "edcb5433", "%x", -0x1234abcdu); PRINTF_TEST(8, "1234ABCD", "%X", 0x1234abcdu); PRINTF_TEST(8, "EDCB5433", "%X", -0x1234abcdu); PRINTF_TEST(1, "x", "%c", 'x'); PRINTF_TEST(1, "%", "%%"); /* Mit %c kann man auch Nullbytes ausgeben */ PRINTF_TEST(1, "\0", "%c", '\0'); /* Vorzeichen erzwingen (Flag +) */ PRINTF_TEST(12, "Hallo heimur", "%+s", "Hallo heimur"); PRINTF_TEST(5, "+1024", "%+d", 1024); PRINTF_TEST(5, "-1024", "%+d", -1024); PRINTF_TEST(5, "+1024", "%+i", 1024); PRINTF_TEST(5, "-1024", "%+i", -1024); PRINTF_TEST(4, "1024", "%+u", 1024u); PRINTF_TEST(10, "4294966272", "%+u", -1024u); PRINTF_TEST(3, "777", "%+o", 0777u); PRINTF_TEST(11, "37777777001", "%+o", -0777u); PRINTF_TEST(8, "1234abcd", "%+x", 0x1234abcdu); PRINTF_TEST(8, "edcb5433", "%+x", -0x1234abcdu); PRINTF_TEST(8, "1234ABCD", "%+X", 0x1234abcdu); PRINTF_TEST(8, "EDCB5433", "%+X", -0x1234abcdu); PRINTF_TEST(1, "x", "%+c", 'x'); /* Vorzeichenplatzhalter erzwingen (Flag ) */ PRINTF_TEST(12, "Hallo heimur", "% s", "Hallo heimur"); PRINTF_TEST(5, " 1024", "% d", 1024); PRINTF_TEST(5, "-1024", "% d", -1024); PRINTF_TEST(5, " 1024", "% i", 1024); PRINTF_TEST(5, "-1024", "% i", -1024); PRINTF_TEST(4, "1024", "% u", 1024u); PRINTF_TEST(10, "4294966272", "% u", -1024u); PRINTF_TEST(3, "777", "% o", 0777u); PRINTF_TEST(11, "37777777001", "% o", -0777u); PRINTF_TEST(8, "1234abcd", "% x", 0x1234abcdu); PRINTF_TEST(8, "edcb5433", "% x", -0x1234abcdu); PRINTF_TEST(8, "1234ABCD", "% X", 0x1234abcdu); PRINTF_TEST(8, "EDCB5433", "% X", -0x1234abcdu); PRINTF_TEST(1, "x", "% c", 'x'); /* Flag + hat Vorrang über */ PRINTF_TEST(12, "Hallo heimur", "%+ s", "Hallo heimur"); PRINTF_TEST(5, "+1024", "%+ d", 1024); PRINTF_TEST(5, "-1024", "%+ d", -1024); PRINTF_TEST(5, "+1024", "%+ i", 1024); PRINTF_TEST(5, "-1024", "%+ i", -1024); PRINTF_TEST(4, "1024", "%+ u", 1024u); PRINTF_TEST(10, "4294966272", "%+ u", -1024u); PRINTF_TEST(3, "777", "%+ o", 0777u); PRINTF_TEST(11, "37777777001", "%+ o", -0777u); PRINTF_TEST(8, "1234abcd", "%+ x", 0x1234abcdu); PRINTF_TEST(8, "edcb5433", "%+ x", -0x1234abcdu); PRINTF_TEST(8, "1234ABCD", "%+ X", 0x1234abcdu); PRINTF_TEST(8, "EDCB5433", "%+ X", -0x1234abcdu); PRINTF_TEST(1, "x", "%+ c", 'x'); /* Alternative Form */ PRINTF_TEST(4, "0777", "%#o", 0777u); PRINTF_TEST(12, "037777777001", "%#o", -0777u); PRINTF_TEST(10, "0x1234abcd", "%#x", 0x1234abcdu); PRINTF_TEST(10, "0xedcb5433", "%#x", -0x1234abcdu); PRINTF_TEST(10, "0X1234ABCD", "%#X", 0x1234abcdu); PRINTF_TEST(10, "0XEDCB5433", "%#X", -0x1234abcdu); PRINTF_TEST(1, "0", "%#o", 0u); PRINTF_TEST(1, "0", "%#x", 0u); PRINTF_TEST(1, "0", "%#X", 0u); /* Feldbreite: Kleiner als Ausgabe */ PRINTF_TEST(12, "Hallo heimur", "%1s", "Hallo heimur"); PRINTF_TEST(4, "1024", "%1d", 1024); PRINTF_TEST(5, "-1024", "%1d", -1024); PRINTF_TEST(4, "1024", "%1i", 1024); PRINTF_TEST(5, "-1024", "%1i", -1024); PRINTF_TEST(4, "1024", "%1u", 1024u); PRINTF_TEST(10, "4294966272", "%1u", -1024u); PRINTF_TEST(3, "777", "%1o", 0777u); PRINTF_TEST(11, "37777777001", "%1o", -0777u); PRINTF_TEST(8, "1234abcd", "%1x", 0x1234abcdu); PRINTF_TEST(8, "edcb5433", "%1x", -0x1234abcdu); PRINTF_TEST(8, "1234ABCD", "%1X", 0x1234abcdu); PRINTF_TEST(8, "EDCB5433", "%1X", -0x1234abcdu); PRINTF_TEST(1, "x", "%1c", 'x'); /* Feldbreite: Größer als Ausgabe */ PRINTF_TEST(20, " Hallo", "%20s", "Hallo"); PRINTF_TEST(20, " 1024", "%20d", 1024); PRINTF_TEST(20, " -1024", "%20d", -1024); PRINTF_TEST(20, " 1024", "%20i", 1024); PRINTF_TEST(20, " -1024", "%20i", -1024); PRINTF_TEST(20, " 1024", "%20u", 1024u); PRINTF_TEST(20, " 4294966272", "%20u", -1024u); PRINTF_TEST(20, " 777", "%20o", 0777u); PRINTF_TEST(20, " 37777777001", "%20o", -0777u); PRINTF_TEST(20, " 1234abcd", "%20x", 0x1234abcdu); PRINTF_TEST(20, " edcb5433", "%20x", -0x1234abcdu); PRINTF_TEST(20, " 1234ABCD", "%20X", 0x1234abcdu); PRINTF_TEST(20, " EDCB5433", "%20X", -0x1234abcdu); PRINTF_TEST(20, " x", "%20c", 'x'); /* Feldbreite: Linksbündig */ PRINTF_TEST(20, "Hallo ", "%-20s", "Hallo"); PRINTF_TEST(20, "1024 ", "%-20d", 1024); PRINTF_TEST(20, "-1024 ", "%-20d", -1024); PRINTF_TEST(20, "1024 ", "%-20i", 1024); PRINTF_TEST(20, "-1024 ", "%-20i", -1024); PRINTF_TEST(20, "1024 ", "%-20u", 1024u); PRINTF_TEST(20, "4294966272 ", "%-20u", -1024u); PRINTF_TEST(20, "777 ", "%-20o", 0777u); PRINTF_TEST(20, "37777777001 ", "%-20o", -0777u); PRINTF_TEST(20, "1234abcd ", "%-20x", 0x1234abcdu); PRINTF_TEST(20, "edcb5433 ", "%-20x", -0x1234abcdu); PRINTF_TEST(20, "1234ABCD ", "%-20X", 0x1234abcdu); PRINTF_TEST(20, "EDCB5433 ", "%-20X", -0x1234abcdu); PRINTF_TEST(20, "x ", "%-20c", 'x'); /* Feldbreite: Padding mit 0 */ PRINTF_TEST(20, "00000000000000001024", "%020d", 1024); PRINTF_TEST(20, "-0000000000000001024", "%020d", -1024); PRINTF_TEST(20, "00000000000000001024", "%020i", 1024); PRINTF_TEST(20, "-0000000000000001024", "%020i", -1024); PRINTF_TEST(20, "00000000000000001024", "%020u", 1024u); PRINTF_TEST(20, "00000000004294966272", "%020u", -1024u); PRINTF_TEST(20, "00000000000000000777", "%020o", 0777u); PRINTF_TEST(20, "00000000037777777001", "%020o", -0777u); PRINTF_TEST(20, "0000000000001234abcd", "%020x", 0x1234abcdu); PRINTF_TEST(20, "000000000000edcb5433", "%020x", -0x1234abcdu); PRINTF_TEST(20, "0000000000001234ABCD", "%020X", 0x1234abcdu); PRINTF_TEST(20, "000000000000EDCB5433", "%020X", -0x1234abcdu); /* Feldbreite: Padding und alternative Form */ PRINTF_TEST(20, " 0777", "%#20o", 0777u); PRINTF_TEST(20, " 037777777001", "%#20o", -0777u); PRINTF_TEST(20, " 0x1234abcd", "%#20x", 0x1234abcdu); PRINTF_TEST(20, " 0xedcb5433", "%#20x", -0x1234abcdu); PRINTF_TEST(20, " 0X1234ABCD", "%#20X", 0x1234abcdu); PRINTF_TEST(20, " 0XEDCB5433", "%#20X", -0x1234abcdu); PRINTF_TEST(20, "00000000000000000777", "%#020o", 0777u); PRINTF_TEST(20, "00000000037777777001", "%#020o", -0777u); PRINTF_TEST(20, "0x00000000001234abcd", "%#020x", 0x1234abcdu); PRINTF_TEST(20, "0x0000000000edcb5433", "%#020x", -0x1234abcdu); PRINTF_TEST(20, "0X00000000001234ABCD", "%#020X", 0x1234abcdu); PRINTF_TEST(20, "0X0000000000EDCB5433", "%#020X", -0x1234abcdu); /* Feldbreite: - hat Vorrang vor 0 */ PRINTF_TEST(20, "Hallo ", "%0-20s", "Hallo"); PRINTF_TEST(20, "1024 ", "%0-20d", 1024); PRINTF_TEST(20, "-1024 ", "%0-20d", -1024); PRINTF_TEST(20, "1024 ", "%0-20i", 1024); PRINTF_TEST(20, "-1024 ", "%0-20i", -1024); PRINTF_TEST(20, "1024 ", "%0-20u", 1024u); PRINTF_TEST(20, "4294966272 ", "%0-20u", -1024u); PRINTF_TEST(20, "777 ", "%-020o", 0777u); PRINTF_TEST(20, "37777777001 ", "%-020o", -0777u); PRINTF_TEST(20, "1234abcd ", "%-020x", 0x1234abcdu); PRINTF_TEST(20, "edcb5433 ", "%-020x", -0x1234abcdu); PRINTF_TEST(20, "1234ABCD ", "%-020X", 0x1234abcdu); PRINTF_TEST(20, "EDCB5433 ", "%-020X", -0x1234abcdu); PRINTF_TEST(20, "x ", "%-020c", 'x'); /* Feldbreite: Aus Parameter */ PRINTF_TEST(20, " Hallo", "%*s", 20, "Hallo"); PRINTF_TEST(20, " 1024", "%*d", 20, 1024); PRINTF_TEST(20, " -1024", "%*d", 20, -1024); PRINTF_TEST(20, " 1024", "%*i", 20, 1024); PRINTF_TEST(20, " -1024", "%*i", 20, -1024); PRINTF_TEST(20, " 1024", "%*u", 20, 1024u); PRINTF_TEST(20, " 4294966272", "%*u", 20, -1024u); PRINTF_TEST(20, " 777", "%*o", 20, 0777u); PRINTF_TEST(20, " 37777777001", "%*o", 20, -0777u); PRINTF_TEST(20, " 1234abcd", "%*x", 20, 0x1234abcdu); PRINTF_TEST(20, " edcb5433", "%*x", 20, -0x1234abcdu); PRINTF_TEST(20, " 1234ABCD", "%*X", 20, 0x1234abcdu); PRINTF_TEST(20, " EDCB5433", "%*X", 20, -0x1234abcdu); PRINTF_TEST(20, " x", "%*c", 20, 'x'); /* Präzision / Mindestanzahl von Ziffern */ PRINTF_TEST(12, "Hallo heimur", "%.20s", "Hallo heimur"); PRINTF_TEST(20, "00000000000000001024", "%.20d", 1024); PRINTF_TEST(21, "-00000000000000001024", "%.20d", -1024); PRINTF_TEST(20, "00000000000000001024", "%.20i", 1024); PRINTF_TEST(21, "-00000000000000001024", "%.20i", -1024); PRINTF_TEST(20, "00000000000000001024", "%.20u", 1024u); PRINTF_TEST(20, "00000000004294966272", "%.20u", -1024u); PRINTF_TEST(20, "00000000000000000777", "%.20o", 0777u); PRINTF_TEST(20, "00000000037777777001", "%.20o", -0777u); PRINTF_TEST(20, "0000000000001234abcd", "%.20x", 0x1234abcdu); PRINTF_TEST(20, "000000000000edcb5433", "%.20x", -0x1234abcdu); PRINTF_TEST(20, "0000000000001234ABCD", "%.20X", 0x1234abcdu); PRINTF_TEST(20, "000000000000EDCB5433", "%.20X", -0x1234abcdu); /* Feldbreite und Präzision */ PRINTF_TEST(20, " Hallo", "%20.5s", "Hallo heimur"); PRINTF_TEST(20, " 01024", "%20.5d", 1024); PRINTF_TEST(20, " -01024", "%20.5d", -1024); PRINTF_TEST(20, " 01024", "%20.5i", 1024); PRINTF_TEST(20, " -01024", "%20.5i", -1024); PRINTF_TEST(20, " 01024", "%20.5u", 1024u); PRINTF_TEST(20, " 4294966272", "%20.5u", -1024u); PRINTF_TEST(20, " 00777", "%20.5o", 0777u); PRINTF_TEST(20, " 37777777001", "%20.5o", -0777u); PRINTF_TEST(20, " 1234abcd", "%20.5x", 0x1234abcdu); PRINTF_TEST(20, " 00edcb5433", "%20.10x", -0x1234abcdu); PRINTF_TEST(20, " 1234ABCD", "%20.5X", 0x1234abcdu); PRINTF_TEST(20, " 00EDCB5433", "%20.10X", -0x1234abcdu); /* Präzision: 0 wird ignoriert */ PRINTF_TEST(20, " Hallo", "%020.5s", "Hallo heimur"); PRINTF_TEST(20, " 01024", "%020.5d", 1024); PRINTF_TEST(20, " -01024", "%020.5d", -1024); PRINTF_TEST(20, " 01024", "%020.5i", 1024); PRINTF_TEST(20, " -01024", "%020.5i", -1024); PRINTF_TEST(20, " 01024", "%020.5u", 1024u); PRINTF_TEST(20, " 4294966272", "%020.5u", -1024u); PRINTF_TEST(20, " 00777", "%020.5o", 0777u); PRINTF_TEST(20, " 37777777001", "%020.5o", -0777u); PRINTF_TEST(20, " 1234abcd", "%020.5x", 0x1234abcdu); PRINTF_TEST(20, " 00edcb5433", "%020.10x", -0x1234abcdu); PRINTF_TEST(20, " 1234ABCD", "%020.5X", 0x1234abcdu); PRINTF_TEST(20, " 00EDCB5433", "%020.10X", -0x1234abcdu); /* Präzision 0 */ PRINTF_TEST(0, "", "%.0s", "Hallo heimur"); PRINTF_TEST(20, " ", "%20.0s", "Hallo heimur"); PRINTF_TEST(0, "", "%.s", "Hallo heimur"); PRINTF_TEST(20, " ", "%20.s", "Hallo heimur"); PRINTF_TEST(20, " 1024", "%20.0d", 1024); PRINTF_TEST(20, " -1024", "%20.d", -1024); PRINTF_TEST(20, " ", "%20.d", 0); PRINTF_TEST(20, " 1024", "%20.0i", 1024); PRINTF_TEST(20, " -1024", "%20.i", -1024); PRINTF_TEST(20, " ", "%20.i", 0); PRINTF_TEST(20, " 1024", "%20.u", 1024u); PRINTF_TEST(20, " 4294966272", "%20.0u", -1024u); PRINTF_TEST(20, " ", "%20.u", 0u); PRINTF_TEST(20, " 777", "%20.o", 0777u); PRINTF_TEST(20, " 37777777001", "%20.0o", -0777u); PRINTF_TEST(20, " ", "%20.o", 0u); PRINTF_TEST(20, " 1234abcd", "%20.x", 0x1234abcdu); PRINTF_TEST(20, " edcb5433", "%20.0x", -0x1234abcdu); PRINTF_TEST(20, " ", "%20.x", 0u); PRINTF_TEST(20, " 1234ABCD", "%20.X", 0x1234abcdu); PRINTF_TEST(20, " EDCB5433", "%20.0X", -0x1234abcdu); PRINTF_TEST(20, " ", "%20.X", 0u); /* Negative Präzision wird ignoriert */ /* XXX glibc tut nicht, was ich erwartet habe, vorerst deaktiviert... */ /* * Präzision und Feldbreite aus Parameter. * + hat Vorrang vor , - hat Vorrang vor 0 (das eh ignoriert wird, * weil eine Präzision angegeben ist) */ PRINTF_TEST(20, "Hallo ", "% -0+*.*s", 20, 5, "Hallo heimur"); PRINTF_TEST(20, "+01024 ", "% -0+*.*d", 20, 5, 1024); PRINTF_TEST(20, "-01024 ", "% -0+*.*d", 20, 5, -1024); PRINTF_TEST(20, "+01024 ", "% -0+*.*i", 20, 5, 1024); PRINTF_TEST(20, "-01024 ", "% 0-+*.*i", 20, 5, -1024); PRINTF_TEST(20, "01024 ", "% 0-+*.*u", 20, 5, 1024u); PRINTF_TEST(20, "4294966272 ", "% 0-+*.*u", 20, 5, -1024u); PRINTF_TEST(20, "00777 ", "%+ -0*.*o", 20, 5, 0777u); PRINTF_TEST(20, "37777777001 ", "%+ -0*.*o", 20, 5, -0777u); PRINTF_TEST(20, "1234abcd ", "%+ -0*.*x", 20, 5, 0x1234abcdu); PRINTF_TEST(20, "00edcb5433 ", "%+ -0*.*x", 20, 10, -0x1234abcdu); PRINTF_TEST(20, "1234ABCD ", "% -+0*.*X", 20, 5, 0x1234abcdu); PRINTF_TEST(20, "00EDCB5433 ", "% -+0*.*X", 20, 10, -0x1234abcdu); #if __GNUC__ #pragma GCC diagnostic pop #endif } /******************************************************************************/ Convert-Binary-C-0.85/tests/include/pdclib/COPYING.CC00000644000175000001440000001561014676735310020643 0ustar mhxusersCreative Commons Legal Code CC0 1.0 Universal CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. Statement of Purpose The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. 1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; ii. moral rights retained by the original author(s) and/or performer(s); iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; v. rights protecting the extraction, dissemination, use and reuse of data in a Work; vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. 2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. 3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. 4. Limitations and Disclaimers. a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. Convert-Binary-C-0.85/tests/include/pdclib/Quickstart.txt0000644000175000001440000001030114676735310022127 0ustar mhxusersQuickstart Manual ----------------- A C standard library, primarily aimed at environments that do not have such a standard library (yet), like hobby OS projects. The library is subdivided in two parts: 1) Generic code that should not require adjustment regardless of environment. 2) Platform code that needs to be tailored to the host environment. The former is the code residing in the 'functions' and 'include' subdirs. It is generic and should "work" on any platform. The latter is the code for which there is an example implementation in the 'platform/example' subdirectory. This 'example' platform is geared towards Linux environments, more specifically those the maintainer of the library is actually doing his development work on. The basic idea is this: 1) Create a copy of 'platform/example', e.g. 'platform/mysuperos' if your project is named "My Super OS". 2) Do all the modifications and tailorings required to make those sources work with your environment. Check this subdirectory into your project's source repository. (You will find explanations for the _PDCLIB_* "glue" functions, those that "glue" PDCLib's generic code to your environment, in _'PDCLIB_glue.h'. Also, the programs errno_readout and pthread_readout in the 'auxiliary' subdirectory are for your convenience, figuring out the "correct" values to enter in _PDCLIB_config.h when setting up a new platform for PDCLib.) 3) For compiling, simply copy the contents of 'platform/mysuperos' over the main source directory (ideally using the latest version of PDCLib). (This means, among other things, that it would be very easy for you to *replace* one of PDCLib's generic functions with an optimized one, as this copy process would overwrite whatever PDCLib provided in 'functions'.)(*) 4) Compile all the source files in 'functions' into a library (static or shared, your choice). * Ensure your compiler supports at least C99. * Define _PDCLIB_BUILD when *building* PDCLib (as opposed to *using* it when building applications that are expected to link with PDCLib). * Define _PDCLIB_STATIC_DEFINE if compiling a static library. * Define PDCLib's 'include' subdirectory to be first in the include path ('-I include' for GCC). * For _dlmalloc/malloc.c specifically (if you use that), you need to put 'include/pdclib' in the include path (so that _PDCLIB_config.h is visible), *NOT* PDCLib's 'include' subdirectory (as _dlmalloc/malloc.c needs the *system* includes, to avoid redefinition warnings). This might require a two-run bootstrapping if you do not *have* a "previous" C library (i.e., compiling PDCLib *without* _dlmalloc/malloc.c, install that, *then* compile PDCLib a second time *with* _dlmalloc/malloc.c). * If using PDCLib's example threading interface (which is a wrapper for pthread), make sure you link against the pthread library (-pthread for GCC). * Ensure your C runtime support (the bit of code that actually calls main()) calls PDCLib's exit() function with the return value from main(). This is necessary so that PDCLib's cleanup code gets run: Calling functions registered with atexit(), flushing unwritten buffers, closing streams. The C runtime is not in scope for PDCLib. 5) Install the library binary to where such a library would be expected in your environment, and the contents of the 'include' directory to where such includes would be expected in your environment. 6) Enjoy. ---- (*): The somewhat involved build files maintained for PDCLib, which keep the contents of 'platform/example' in place instead of doing the described "copy over", are there to facilitate the PDCLib maintainer's work (which includes testing each function, both against the PDCLib implementation and the host system (Linux) implementation for reference, over and over again, and then checking in changes to the PDCLib repository). The PDCLib 'example' platform implementation is not intended to be distributed in binary form. You are expected to create your own "mysuperos" PDCLib binary, and you are not expected to use PDCLib's build facilities to do so -- rather, integrate the building of PDCLib into whatever build system *you* prefer for "mysuperos". Convert-Binary-C-0.85/tests/include/pdclib/Readme.txt0000644000175000001440000000367514676735310021212 0ustar mhxusersPDCLib - Public Domain C Library ================================ License ------- PDCLib is distributed unter the Creative Commons CC0 License. You should have received a copy of the full legal text of this license as part of this distribution (COPYING.CC0). It is also available at https://creativecommons.org/publicdomain/zero/1.0/legalcode The following is a human-readable summary of that license. No Copyright The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. See Other Information below. Other Information In no way are the patent or trademark rights of any person affected by CC0, nor are the rights that other persons may have in the work or in how the work is used, such as publicity or privacy rights. Unless expressly stated otherwise, the person who associated a work with this deed makes no warranties about the work, and disclaims liability for all uses of the work, to the fullest extent permitted by applicable law. When using or citing the work, you should not imply endorsement by the author or the affirmer. What is it ---------- This is a C Standard Library. Nothing more, nothing less. No POSIX or other extensions, just what's defined in ISO/IEC 9899. (Well, this is what it will be when the 1.0 release comes out. Check http://pdclib.rootdirectory.de to see what is implemented so far.) Further Documentation --------------------- Check Quickstart.txt to get a "working" version of the library as quick as possible. Check Internals.txt for an overview of technical intricacies. Check Notes.txt for a list of credits and an idea of the standards I hold myself to in my work on PDCLib. Convert-Binary-C-0.85/tests/include/pdclib/CMakeLists.txt0000644000175000001440000004663414676735310022016 0ustar mhxusers# CMake is a meta-buildsystem that allows you to *generate* the necessary # files for your build system of choice (Makefile, rules.ninja, CodeBlocks # project, MSVC solution, ...) from the configuration given below. # # Install CMake for your system (https://www.cmake.org), call # cmake --help # to get a list of buildfile generators available, then (from an empty dir) # cmake [-G ] path/to/pdclib_source # to generate the desired build files. CMake will automatically track a # dependency on this configuration file, and re-build the buildfiles if you # make changes to it, so you need not re-run that generator step manually. # # Check # ctest --help # to find out about CMake's testing client. # # Check # cpack --help # to get a list of packaging options, and # cpack -G # to create a package of your compiled version of PDCLib. cmake_minimum_required( VERSION 3.1.3 FATAL_ERROR ) project( pdclib ) option( IGNORE_NO_TESTDRIVER "Ignore NO_TESTDRIVER flags instead of reporting them as error. Default: OFF." OFF ) option( AS_CXX "Compile as C++. (For testing purposes.) Default: OFF." OFF ) option( AS_C11 "Compile as C11. (For testing purposes.) Default: OFF." OFF ) option( AS_C90 "Compile as C90. (For testing purposes.) Default: OFF." OFF ) # Setting compiler to standard, no extensions. if ( AS_C11 ) set( CMAKE_C_STANDARD 11 ) elseif( AS_C90 ) set( CMAKE_C_STANDARD 90 ) else() set( CMAKE_C_STANDARD 99 ) endif() set( CMAKE_C_STANDARD_REQUIRED ON ) set( CMAKE_C_EXTENSIONS OFF ) # Debug is the default setting anyway, but better to make it explicit and # give output about it. if ( NOT CMAKE_BUILD_TYPE ) message( "++ CMAKE_BUILD_TYPE not set. Defaulting to 'Debug'." ) set( CMAKE_BUILD_TYPE Debug ) endif() # Use the test support built-in to CMake. Use the "ctest" client to run # tests of built binaries. include( CTest ) mark_as_advanced( BUILD_TESTING ) # List of source files. set( PDCLIB_SOURCES functions/ctype/isalnum.c functions/ctype/isalpha.c functions/ctype/isblank.c functions/ctype/iscntrl.c functions/ctype/isdigit.c functions/ctype/isgraph.c functions/ctype/islower.c functions/ctype/isprint.c functions/ctype/ispunct.c functions/ctype/isspace.c functions/ctype/isupper.c functions/ctype/isxdigit.c functions/ctype/tolower.c functions/ctype/toupper.c functions/inttypes/imaxabs.c functions/inttypes/imaxdiv.c functions/inttypes/strtoimax.c functions/inttypes/strtoumax.c functions/locale/localeconv.c functions/locale/setlocale.c platform/example/functions/signal/raise.c platform/example/functions/signal/signal.c functions/stdio/clearerr.c functions/stdio/fclose.c functions/stdio/feof.c functions/stdio/ferror.c functions/stdio/fflush.c functions/stdio/fgetc.c functions/stdio/fgetpos.c functions/stdio/fgets.c functions/stdio/fopen.c functions/stdio/fopen_s.c functions/stdio/fprintf.c functions/stdio/fputc.c functions/stdio/fputs.c functions/stdio/fread.c functions/stdio/freopen.c functions/stdio/freopen_s.c functions/stdio/fscanf.c functions/stdio/fseek.c functions/stdio/fsetpos.c functions/stdio/ftell.c functions/stdio/fwrite.c functions/stdio/getc.c functions/stdio/getchar.c functions/stdio/perror.c functions/stdio/printf.c functions/stdio/putc.c functions/stdio/putchar.c functions/stdio/puts.c functions/stdio/remove.c functions/stdio/rename.c functions/stdio/rewind.c functions/stdio/scanf.c functions/stdio/setbuf.c functions/stdio/setvbuf.c functions/stdio/snprintf.c functions/stdio/sprintf.c functions/stdio/sscanf.c functions/stdio/tmpfile_s.c functions/stdio/tmpnam.c functions/stdio/ungetc.c functions/stdio/vfprintf.c functions/stdio/vfscanf.c functions/stdio/vprintf.c functions/stdio/vscanf.c functions/stdio/vsnprintf.c functions/stdio/vsprintf.c functions/stdio/vsscanf.c platform/example/functions/stdio/tmpfile.c functions/stdlib/abort.c functions/stdlib/abort_handler_s.c functions/stdlib/abs.c functions/stdlib/at_quick_exit.c functions/stdlib/atexit.c functions/stdlib/atoi.c functions/stdlib/atol.c functions/stdlib/atoll.c functions/stdlib/bsearch.c functions/stdlib/bsearch_s.c functions/stdlib/div.c functions/stdlib/exit.c functions/stdlib/_Exit.c functions/stdlib/ignore_handler_s.c functions/stdlib/labs.c functions/stdlib/ldiv.c functions/stdlib/llabs.c functions/stdlib/lldiv.c functions/stdlib/qsort.c functions/stdlib/qsort_s.c functions/stdlib/quick_exit.c functions/stdlib/rand.c functions/stdlib/set_constraint_handler_s.c functions/stdlib/srand.c functions/stdlib/strtol.c functions/stdlib/strtoll.c functions/stdlib/strtoul.c functions/stdlib/strtoull.c platform/example/functions/stdlib/getenv.c platform/example/functions/stdlib/getenv_s.c platform/example/functions/stdlib/system.c functions/string/memchr.c functions/string/memcmp.c functions/string/memcpy.c functions/string/memmove.c functions/string/memset.c functions/string/strcat.c functions/string/strchr.c functions/string/strcmp.c functions/string/strcoll.c functions/string/strcpy.c functions/string/strcspn.c functions/string/strerror.c functions/string/strlen.c functions/string/strncat.c functions/string/strncmp.c functions/string/strncpy.c functions/string/strpbrk.c functions/string/strrchr.c functions/string/strspn.c functions/string/strstr.c functions/string/strtok.c functions/string/strtok_s.c functions/string/strxfrm.c functions/string/memcpy_s.c functions/string/memmove_s.c functions/string/memset_s.c functions/string/strcat_s.c functions/string/strcpy_s.c functions/string/strerror_s.c functions/string/strerrorlen_s.c functions/string/strncat_s.c functions/string/strncpy_s.c platform/example/functions/threads/call_once.c platform/example/functions/threads/cnd_broadcast.c platform/example/functions/threads/cnd_destroy.c platform/example/functions/threads/cnd_init.c platform/example/functions/threads/cnd_signal.c platform/example/functions/threads/cnd_timedwait.c platform/example/functions/threads/cnd_wait.c platform/example/functions/threads/mtx_destroy.c platform/example/functions/threads/mtx_init.c platform/example/functions/threads/mtx_lock.c platform/example/functions/threads/mtx_timedlock.c platform/example/functions/threads/mtx_trylock.c platform/example/functions/threads/mtx_unlock.c platform/example/functions/threads/thrd_create.c platform/example/functions/threads/thrd_current.c platform/example/functions/threads/thrd_detach.c platform/example/functions/threads/thrd_equal.c platform/example/functions/threads/thrd_exit.c platform/example/functions/threads/thrd_join.c platform/example/functions/threads/thrd_sleep.c platform/example/functions/threads/thrd_yield.c platform/example/functions/threads/tss_create.c platform/example/functions/threads/tss_delete.c platform/example/functions/threads/tss_get.c platform/example/functions/threads/tss_set.c functions/time/asctime.c functions/time/asctime_s.c functions/time/ctime.c functions/time/ctime_s.c functions/time/difftime.c functions/time/gmtime.c functions/time/gmtime_s.c functions/time/localtime.c functions/time/localtime_s.c functions/time/mktime.c functions/time/strftime.c platform/example/functions/time/clock.c platform/example/functions/time/time.c platform/example/functions/time/timespec_get.c functions/_tzcode/_PDCLIB_gmtcheck.c functions/_tzcode/_PDCLIB_gmtsub.c functions/_tzcode/_PDCLIB_increment_overflow.c functions/_tzcode/_PDCLIB_init_ttinfo.c functions/_tzcode/_PDCLIB_localsub.c functions/_tzcode/_PDCLIB_localtime_tzset.c functions/_tzcode/_PDCLIB_mktime_tzname.c functions/_tzcode/_PDCLIB_timesub.c functions/_tzcode/_PDCLIB_tzload.c functions/_tzcode/_PDCLIB_tzparse.c functions/_tzcode/_PDCLIB_tzset_unlocked.c functions/_tzcode/_PDCLIB_update_tzname_etc.c functions/_PDCLIB/assert.c functions/_PDCLIB/errno.c functions/_PDCLIB/_PDCLIB_atomax.c functions/_PDCLIB/_PDCLIB_bigint.c functions/_PDCLIB/_PDCLIB_bigint2.c functions/_PDCLIB/_PDCLIB_bigint10.c functions/_PDCLIB/_PDCLIB_bigint32.c functions/_PDCLIB/_PDCLIB_bigint64.c functions/_PDCLIB/_PDCLIB_bigint_add.c functions/_PDCLIB/_PDCLIB_bigint_sub.c functions/_PDCLIB/_PDCLIB_bigint_cmp.c functions/_PDCLIB/_PDCLIB_bigint_log2.c functions/_PDCLIB/_PDCLIB_bigint_mul.c functions/_PDCLIB/_PDCLIB_bigint_mul32.c functions/_PDCLIB/_PDCLIB_bigint_div32.c functions/_PDCLIB/_PDCLIB_bigint_shl.c functions/_PDCLIB/_PDCLIB_bigint_tostring.c functions/_PDCLIB/_PDCLIB_closeall.c functions/_PDCLIB/_PDCLIB_digits.c functions/_PDCLIB/_PDCLIB_filemode.c functions/_PDCLIB/_PDCLIB_getstream.c functions/_PDCLIB/_PDCLIB_init_file_t.c functions/_PDCLIB/_PDCLIB_is_leap.c functions/_PDCLIB/_PDCLIB_isstream.c functions/_PDCLIB/_PDCLIB_load_lc_collate.c functions/_PDCLIB/_PDCLIB_load_lc_ctype.c functions/_PDCLIB/_PDCLIB_load_lc_messages.c functions/_PDCLIB/_PDCLIB_load_lc_monetary.c functions/_PDCLIB/_PDCLIB_load_lc_numeric.c functions/_PDCLIB/_PDCLIB_load_lc_time.c functions/_PDCLIB/_PDCLIB_load_lines.c functions/_PDCLIB/_PDCLIB_prepread.c functions/_PDCLIB/_PDCLIB_prepwrite.c functions/_PDCLIB/_PDCLIB_print.c functions/_PDCLIB/_PDCLIB_scan.c functions/_PDCLIB/_PDCLIB_seed.c functions/_PDCLIB/_PDCLIB_strtok.c functions/_PDCLIB/_PDCLIB_strtox_main.c functions/_PDCLIB/_PDCLIB_strtox_prelim.c functions/_PDCLIB/stdarg.c platform/example/functions/_PDCLIB/_PDCLIB_changemode.c platform/example/functions/_PDCLIB/_PDCLIB_close.c platform/example/functions/_PDCLIB/_PDCLIB_Exit.c platform/example/functions/_PDCLIB/_PDCLIB_fillbuffer.c platform/example/functions/_PDCLIB/_PDCLIB_flushbuffer.c platform/example/functions/_PDCLIB/_PDCLIB_open.c platform/example/functions/_PDCLIB/_PDCLIB_realpath.c platform/example/functions/_PDCLIB/_PDCLIB_rename.c platform/example/functions/_PDCLIB/_PDCLIB_remove.c platform/example/functions/_PDCLIB/_PDCLIB_seek.c platform/example/functions/_PDCLIB/_PDCLIB_stdinit.c ) # List of header files. Not required for actually building, but if they # are not listed (in add_library()), they do not show up in IDE project # files (like MSVC solutions). # These get installed to your system's default include directory. set( PDCLIB_HEADERS include/assert.h include/ctype.h include/errno.h include/inttypes.h include/iso646.h include/limits.h include/locale.h include/stdalign.h include/stdarg.h include/stdbool.h include/stddef.h include/stdint.h include/stdio.h include/stdlib.h include/stdnoreturn.h include/string.h include/time.h include/wctype.h platform/example/include/float.h platform/example/include/signal.h platform/example/include/threads.h ) # These get installed in a "pdclib" subdirectory of your system's default # "include" directory. set( PDCLIB_PRIVATE_HEADERS include/pdclib/_PDCLIB_glue.h include/pdclib/_PDCLIB_internal.h include/pdclib/_PDCLIB_lib_ext1.h platform/example/include/pdclib/_PDCLIB_config.h ) # These do not get installed on your system at all, they are for building # PDCLib only, not for using it. set( PDCLIB_NOINSTALL_HEADERS include/pdclib/_PDCLIB_glue.h #include/pdclib/_PDCLIB_tzcode.h ) # dlmalloc, compiled separately as its inclusion of system headers conflicts # with PDCLib headers (specifically, struct timespec). add_library( _dlmalloc OBJECT functions/_dlmalloc/malloc.c ) add_library( _dlmallocs OBJECT functions/_dlmalloc/malloc.c ) target_include_directories( _dlmalloc PRIVATE ${CMAKE_SOURCE_DIR}/platform/example/include/pdclib ) target_include_directories( _dlmallocs PRIVATE ${CMAKE_SOURCE_DIR}/platform/example/include/pdclib ) # Two libraries, one for dynamic linking, one for static linking. add_library( pdclib SHARED ${PDCLIB_SOURCES} $ ${PDCLIB_HEADERS} ${PDCLIB_PRIVATE_HEADERS} ${PDCLIB_NOINSTALL_HEADERS} ) add_library( pdclibs STATIC ${PDCLIB_SOURCES} $ ${PDCLIB_HEADERS} ${PDCLIB_PRIVATE_HEADERS} ${PDCLIB_NOINSTALL_HEADERS} ) # The example implementation makes use of pthread. We use CMake facilities # to locate the pthread library for linking. set( CMAKE_THREAD_PREFER_PTHREAD 1 ) set( THREADS_PREFER_PTHREAD_FLAG 1 ) find_package( Threads ) if ( NOT CMAKE_USE_PTHREADS_INIT ) message( FATAL_ERROR "Example platform requires pthread to be available." ) endif() target_link_libraries( pdclib Threads::Threads ) target_link_libraries( pdclibs Threads::Threads ) # Compilation shall use PDCLib's over system include directories. target_include_directories( pdclib BEFORE PRIVATE ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/platform/example/include ) target_include_directories( pdclibs BEFORE PRIVATE ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/platform/example/include ) # The code for the DLL / shared object should be compiled with whatever # options are appropriate for your compiler to generate relocatable code. set_property( TARGET pdclib _dlmalloc PROPERTY POSITION_INDEPENDENT_CODE 1 ) # List of strict warnings; the compiler is your friend. if ( CMAKE_COMPILER_IS_GNUCC ) # The bit about -D_STDC_PREDEF_H is a heavy-handed way to interdict # GCC making statements about the standard library's capabilities, # specifically __STDC_NO_THREADS__ (by including stdc-predef.h). I # was unable to identify a more elegant way to achieve this. set( FLAGS "-Wall -Wextra -pedantic -Wno-unused-parameter -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wmissing-declarations -Wredundant-decls -Winline -Wno-long-long -Wuninitialized -fno-builtin -fvisibility=hidden -D_STDC_PREDEF_H -nostdlib" ) if ( NOT AS_CXX ) string( APPEND FLAGS " -Wmissing-prototypes -Wnested-externs -Wstrict-prototypes -Wdeclaration-after-statement" ) endif() elseif( MSVC ) set( FLAGS "/W4 /D_CRT_SECURE_NO_WARNINGS /wd4996" ) endif() # Optionally, use C++ compiler instead of C compiler. if ( AS_CXX ) set_source_files_properties( ${PDCLIB_SOURCES} PROPERTIES LANGUAGE CXX ) endif() # Optionally, make TESTCASE( NO_TESTDRIVER ) succeed instead of fail. if ( IGNORE_NO_TESTDRIVER ) string( APPEND FLAGS " -DNO_TESTDRIVER=1" ) endif() # Setting symbol visibility (_PDCLIB_LOCAL / _PDCLIB_PUBLIC configuration # in _PDCLIB_config.h) set_property( TARGET pdclib APPEND_STRING PROPERTY COMPILE_FLAGS "-D_PDCLIB_BUILD ${FLAGS}" ) set_property( TARGET pdclibs APPEND_STRING PROPERTY COMPILE_FLAGS "-D_PDCLIB_STATIC_DEFINE ${FLAGS}" ) # On Windows, both a dynamic .dll and a static .a library require their own # respective .lib file, which is why the static library has its distinctive # name pdclibs.a (note the "s"). # On Unix-like OS' (and Cygwin), we can have both .so and .a with the same # base name, so we do away with the "s" suffix. if ( UNIX ) set_target_properties( pdclibs PROPERTIES OUTPUT_NAME pdclib ) endif() add_custom_target( testdrivers ) add_custom_target( regtestdrivers ) # Each source file can be compiled to # 1) a test driver for the function it defines, # 2) a regression test driver for the function as defined by the system's # C library. foreach( file ${PDCLIB_SOURCES} ) get_filename_component( basename ${file} NAME_WE ) # Test driver, _t suffix, compiled with -DTEST against static lib. add_executable( ${basename}_t ${file} ) set_property( TARGET ${basename}_t APPEND_STRING PROPERTY COMPILE_FLAGS "-DTEST -D_PDCLIB_BUILD ${FLAGS}" ) set_property( TARGET ${basename}_t PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/test_support/testdrivers ) target_include_directories( ${basename}_t BEFORE PRIVATE ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/platform/example/include ${CMAKE_SOURCE_DIR}/test_support ) target_link_libraries( ${basename}_t pdclibs ) add_test( ${basename}_t test_support/testdrivers/${basename}_t ) add_dependencies( testdrivers ${basename}_t ) # Regression test driver, _r suffix, compiled with -DTEST -DREGTEST # against system libc. add_executable( ${basename}_r ${file} ) set_property( TARGET ${basename}_r APPEND_STRING PROPERTY COMPILE_FLAGS "-DTEST -DREGTEST ${FLAGS}" ) set_property( TARGET ${basename}_r PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/test_support/regtestdrivers ) target_include_directories( ${basename}_r BEFORE PRIVATE ${CMAKE_SOURCE_DIR}/test_support ) add_test( ${basename}_r test_support/regtestdrivers/${basename}_r ) add_dependencies( regtestdrivers ${basename}_r ) endforeach() # Installation files if ( CMAKE_SIZEOF_VOID_P EQUAL 8 ) install( TARGETS pdclib pdclibs DESTINATION lib64 ) else() install( TARGETS pdclib pdclibs DESTINATION lib ) endif() install( FILES ${PDCLIB_HEADERS} DESTINATION include ) install( FILES ${PDCLIB_PRIVATE_HEADERS} DESTINATION include/pdclib ) # CPack config set( CPACK_PACKAGE_VERSION_MAJOR "0" ) set( CPACK_PACKAGE_VERSION_MINOR "6" ) set( CPACK_PACKAGE_VERSION_PATCH "0" ) set( CPACK_PACKAGE_CONTACT "Martin Baute " ) set( CPACK_PACKAGE_DESCRIPTION_SUMMARY "PDCLib -- Public Domain C Library" ) set( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING.CC0" ) set( CPACK_PACKAGE_VENDOR "Martin Baute -- http://pdclib.rootdirectory.de" ) set( CPACK_PACKAGE_NAME "pdclib" ) if ( WIN32 ) set( CPACK_GENERATOR "ZIP" ) set( CPACK_SOURCE_GENERATOR "ZIP" ) else() set( CPACK_GENERATOR "TGZ" ) set( CPACK_SOURCE_GENERATOR "TGZ" ) endif() include( CPack ) ########################################################################### # Executables meant for library maintainers, not for distribution # ########################################################################### # A helper executable to read, from the system library, this platform's # errno numbers and perror() / strerror() texts, to faciliate adapting # PDCLib to use the same numbers / texts on any given platform. # (Platform maintainers are supposed to use the output to adapt their # platform's platform//functions/_PDCLIB/_PDCLIB_stdinit.c and # platform//include/pdclib/_PDCLIB_config.h.) add_subdirectory( auxiliary/errno ) # A helper executable to parse up-to-date Unicode metadata from the # Unicode database. add_subdirectory( auxiliary/uctype ) # A helper executable to read, from the system , some size # parameters of pthread stuctures. # (Platform maintainers are supposed to use the output to adapt their # platform's platform//include/pdclib/_PDCLIB_config.h.) add_subdirectory( auxiliary/pthread ) # A helper executable storing a given floating point number into the # various FP data types of the platform (float, double, long double, ...) # and displaying their encoding. Nothing more than a "I understood those # encodings correctly" confidence check. add_subdirectory( auxiliary/fpconvert ) Convert-Binary-C-0.85/tests/include/pdclib/Internals.txt0000644000175000001440000001640714676735310021751 0ustar mhxusersInternals ========= Namespacing ----------- As a namespace convention, everything (files, typedefs, functions, macros) not defined in ISO/IEC 9899 is prefixed with _PDCLIB. The standard defines any identifiers starting with '_' and a capital letter as reserved for the implementation, and since the chances of your compiler using an identifier in the _PDCLIB range are slim, any strictly conforming application should work with this library. Structure and Porting --------------------- PDCLib consists of several parts: 1) standard headers; 2) implementation files for standard functions; 3) internal header files keeping complex stuff out of the standard headers; 4) the central, platform-specific file _PDCLIB_config.h; 5) platform-specific implementation files; 6) platform-specific, optimized "overlay" implementations (optional). The standard headers (in ./include/) only contain what they are defined to contain. Where additional logic or macro magic is necessary, that is deferred to the internal files. This has been done so that the headers are actually educational as to what they provide (as opposed to how the library does it). There is a separate implementation file (in ./function/{header}/) for every function defined by the standard, named {function}.c. Not only does this avoid linking in huge amounts of unused code when you use but a single function, it also allows the optimization overlay to work (see below). (The directory ./functions/_PDCLIB/ contains internal and helper functions that are not part of the standard.) Then there are internal header files (in ./include/pdclib/), which contain all the "black magic" and "code fu" that was kept out of the standard headers. You should not have to touch them if you want to adapt PDCLib to a new platform. Note that, if you *do* have to touch them, I would consider it a serious design flaw, and would be happy to fix it in the next PDCLib release. Any adaption work should be covered by the steps detailed below. For adapting PDCLib to a new platform (the trinity of CPU, operating system, and compiler), make a copy of ./platform/example/ named ./platform/{your_platform}/, and modify the files of your copy to suit the constraints of your platform. When you are done, copy the contents of your platform directory over the source directory structure of PDCLib (or link them into the appropriate places). That should be all that is actually required to make PDCLib work for your platform. Of course, your platform might provide more efficient replacements for the generic implementations offered by PDCLib. The math functions are an especially "juicy" target for optimization - while PDCLib does provide generic implementations for each of them, there are usually FPU opcodes that do the same job, only orders of magnitude faster. For this, you might want to create an "optimization overlay" for PDCLib. Optimization Overlay -------------------- The basic idea of PDCLib is to provide a generic implementation that is useable even on platforms I have never heard of - for example, the OS and/or compiler *you* just wrote and now need a C library for. That is actually what PDCLib was written for: To provide a C library for compiler and OS builders that do not want the usual baggage of POSIX and GNU extensions, licensing considerations etc. etc. Thus, PDCLib provides generic implementations. They do work, and do so correctly, but they are not very efficient when compared to hand- crafted assembler or compiler build-ins. So I wanted to provide a means to modify PDCLib to run more efficiently on a given platform, without cluttering the main branch with tons of #ifdef statements and "featureset #defines" that grow stale quickly. The solution is the "optimization overlay". Every function has its own implementation file, which makes it possible to replace them piecemeal by copying a platform-specific overlay over the main PDCLib branch to create a PDCLib adapted / optimized for the platform in question. That overlay could be part of the PDCLib source tree (for established platforms where maintainers won't bother with PDCLib), or part of that platform's source tree (for under-development platforms PDCLib maintainers won't bother with). So, to use PDCLib on your given platform, you unpack PDCLib (as you obviously have done already since you are reading this), and copy the overlay for your platform over the PDCLib source tree structure. Internal Dependencies --------------------- Large parts of PDCLib (or any standard library, really) work well in isolation, and have minimal dependencies. The implementation of , for example, is really just a collection of stand-alone functions. Other parts, however, depend on each other, and on "background" functionality that all involved parts need to be aware of and agree upon. This text file is intended to give a rough overview of what those parts are, and how PDCLib goes about implementing them. - Numeric conversion functions -- strto*() ------------------------------------------ The numeric conversion functions -- strtol(), strtoul(), strtoll(), strtoull() from and strtoimax(), strtoumax() from -- all use the same two internal functions, _PDCLIB_strtox_prelim() and _PDCLIB_strtox_main(). The former does skip leading whitespace, determines the sign (if any), and the base prefix (0 for octal, 0x for hexadecimal, none for decimal). The latter is working on type uintmax_t, and gets the limiting values (to determine when to set ERANGE) from the caller. - Numeric conversion functions -- ato*() ---------------------------------------- The non-checking conversion functions atoi(), atol() and atoll() use the simpler backend function _PDCLIB_atomax(). - Formatted input / output functions -- *printf(), *scanf() ----------------------------------------------------------- The rather complex formatting logic used by the functions of the *printf() and *scanf() family is provided by _PDCLIB_print() and _PDCLIB_scan(), with the individual implementations in functions/stdio/ being rather simple wrappers around those two backend functions. There is some ugliness arising from the fact that the backend functions have to work with both file I/O and string I/O. Both backend functions are designed to work purely stack-based; there is no dependency on malloc(), which allows to use especially the print variety very early in the boot process with only minimal adjustments. - File I/O ---------- The actual handling of stream buffers and I/O is handled by four functions: _PDCLIB_prepread() and _PDCLIB_prepwrite() handle the I/O direction of a stream, while _PDCLIB_fillbuffer() and _PDCLIB_flushbuffer() are responsible for moving data between stream buffers and their associated files. - Localization -------------- PDCLib does not yet have proper support for different locales. At the point of this writing, only the "C" locale is supported. Some of the infrastructure that will be required in the future is already in place though. holds the definition of struct lconv (the return value of the localeconv() function, holding all the numerical and monetary formatting options). There are also references to _PDCLIB_lc_* structures holding the other types of locale-dependent information. The definition of the structures is in _PDCLIB_internal.h, with initialization (for the "C" locale) in _PDCLIB_stdinit.c. Convert-Binary-C-0.85/tests/include/pdclib/Notes.txt0000644000175000001440000001245414676735310021100 0ustar mhxusersCredits ======= The vast majority of PDCLib is original work by me. I felt it was the only way to ensure that the code was indeed free of third-party rights, and thus free to be released into the Public Domain. Another issue was that of coding style, quality and stability of the code, and the urge to really understand every miniscule part of the code as to be able to maintain it well once v1.0 has been released. That is not to say there are no credits to be given. To the contrary: Paul Edwards (author of the PDPCLIB), for inspirational code fragments, thanks. P.J. Plauger (author of "The Standard C Library"), for a book without which I would not have been able to create PDCLib at this quality, thanks. Arthur David Olson et al., for their work on the Time Zone Database and the tzcode reference implementation on which most of PDCLib's time functions are based, thanks. Paul Bourke (author of mathlib), for allowing me access to a complete math library under public domain terms so I could use it as a reference, thanks. Peter ("Candy") Bindels (netizen of osdev.org), who located a copy of Cody & Waite's "Software Manual for the Elementary Functions" for me and saved me serious cash in the process, thanks. Michael Moody, who contributed the generic implementation for to the Public Domain which can now be found in <_PDCLIB_config.h>, thanks. Rod Pemberton, for pointing out several flaws in early versions of PDCLib and giving other valuable hints, thanks. Brian Damgaard, for a very friendly exchange over the fine details of the Quicksort algorithm and its implementation in PDCLib, thanks. Rink Springer, for very precise bug reports including patches, a heads-up on the capabilities of PDCLib when I most needed it, and for pushing me back in the driver's seat, thanks. Giovanni Mascellani, for his finding a bug in the strto*l() functions, thanks. Stefan Schmidt, of the NXDK project, which adopted PDCLib as their system library, and who contributed several valuable bug reports, suggestions, and reminders to keep working on it, thanks. Everyone involved in the first, "public" attempt at PDCLib, for bearing with me when I restarted from scratch, thanks. Everyone bearing with me during the "stdio block", a period of many years in which PDCLib received not a single update because I was stuck and could not find the time and energy to work it out, thanks. Lennart Frid�n and Sammy Nordstr�m, who have been great pals even after I sunk some other project that had eaten countless hours of work between the three of us, thanks. My wife, daughter, and son for sharing husband and daddy with this strange machine, thanks. Style ===== I followed a set of guidelines in creating PDCLib. If you find some piece that does not adhere to them, that's a bug worth reporting. I mean it. I am a bit obsessive when it comes to coding style. ;-) - All the stuff that is not part of the standard specification is "hidden" in the _PDCLIB_* namespace - functions, variables, macros, files, directories. This is to make it easier to distinguish between what the standard dictates and what I added to make PDCLib work. - I always try to minimize the use of local variables. Wherever possible I used parameters passed by-value directly, and deferred declaration of locals to the innermost block of statements, in hopes that it might reduce memory footprint when the library is compiled with a compiler that is not that great at optimization. - Every function, every static data item that could possibly be shared, got its own implementation file. This means the library itself is probably larger than strictly necessary, and might take a couple of clock cycles longer to link, but it reduces size of object files and executables. - Where possible, I tried to share functionality between similar functions (as can be seen in the atoi() and strtol() function families). This means one or two additional function calls, but again reduces memory footprint and eases maintenance of the library. - Function arguments are named exactly as in the standard document. - The standard is taken quite literally in places. For example, the default implementations of memcpy() really copies char-wise. This runs contrary to earlier claims of performance, but is consistent with the *letter* of the standard, and you will probably use your compiler builtins (through a platform overlay) anyhow. - PDCLib code has no bias towards POSIX; indeed the absence of POSIX tidbits is one of its hallmarks. However, PDCLib also has no bias *against* POSIX, and when one platform abstraction is as good as another, I chose the POSIX one for sheer familiarity. (This is mainly referring to naming and parameter lists of OS "glue" functions.) - Identifiers are tersely named, but not cryptically abbreviated, and should be intuitive enough to allow easy understanding of PDCLib inner workings. - I disagree with the notion that good code needs no comments. Code tells you *how*, but not the *why*, and you have to figure out the *what* yourself. So I added comments to every nontrivial piece of code explaining my motives and hopefully keeping overly ambitious editors from repeating my mistakes. The header files especially should be self-documenting to the point of being a suitable replacement for any library reference book you might be using. Convert-Binary-C-0.85/tests/include/files/0000755000175000001440000000000014677003524017102 5ustar mhxusersConvert-Binary-C-0.85/tests/include/files/unmatched.h0000644000175000001440000000000614676735310021223 0ustar mhxusers#if 0 Convert-Binary-C-0.85/tests/include/files/ifnull.h0000644000175000001440000000004414676735310020546 0ustar mhxusers#if 0 #include #endif Convert-Binary-C-0.85/tests/include/files/ifnonl.h0000644000175000001440000000001414676735310020537 0ustar mhxusers#if 1 #endifConvert-Binary-C-0.85/tests/include/files/trigraph.h0000644000175000001440000000007414676735310021100 0ustar mhxusers??=define FOO #ifdef FOO typedef char array??(42??); #endif Convert-Binary-C-0.85/tests/include/files/nlnone.h0000644000175000001440000000002014676735310020540 0ustar mhxuserstypedef int foo;Convert-Binary-C-0.85/tests/include/files/nldos.h0000644000175000001440000000002214676735310020370 0ustar mhxuserstypedef int foo; Convert-Binary-C-0.85/tests/include/files/nlunix.h0000644000175000001440000000002114676735310020565 0ustar mhxuserstypedef int foo; Convert-Binary-C-0.85/tests/include/files/files.h0000644000175000001440000000012114676735310020353 0ustar mhxusers#include #include #include #include Convert-Binary-C-0.85/tests/include/files/ifdef.h0000644000175000001440000000010314676735310020326 0ustar mhxusers#ifdef TEST #include struct bar { int foo; }; #endif Convert-Binary-C-0.85/tests/include/files/empty.h0000644000175000001440000000000014676735310020403 0ustar mhxusersConvert-Binary-C-0.85/tests/include/files/nlmac.h0000644000175000001440000000002114676735310020342 0ustar mhxuserstypedef int foo; Convert-Binary-C-0.85/tests/include/files/something.h0000644000175000001440000000003114676735310021246 0ustar mhxusersstruct foo { int bar; }; Convert-Binary-C-0.85/tests/include/stuff/0000755000175000001440000000000014677003524017127 5ustar mhxusersConvert-Binary-C-0.85/tests/include/stuff/ab.h0000644000175000001440000054435214677003505017676 0ustar mhxusers/* abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab abababababababababababababababababababababababababababababababababababab */ Convert-Binary-C-0.85/tests/include/stuff/au.h0000644000175000001440000054435214677003505017721 0ustar mhxusers/* auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau auauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauauau */ Convert-Binary-C-0.85/tests/include/stuff/av.h0000644000175000001440000054435214677003505017722 0ustar mhxusers/* avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav avavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavav */ Convert-Binary-C-0.85/tests/include/stuff/aw.h0000644000175000001440000054435214677003505017723 0ustar mhxusers/* awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw awawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaw */ Convert-Binary-C-0.85/tests/include/stuff/ad.h0000644000175000001440000054435214677003505017700 0ustar mhxusers/* adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad adadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadad */ Convert-Binary-C-0.85/tests/include/stuff/am.h0000644000175000001440000054435214677003505017711 0ustar mhxusers/* amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam amamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamamam */ Convert-Binary-C-0.85/tests/include/stuff/aj.h0000644000175000001440000054435214677003505017706 0ustar mhxusers/* ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj ajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajaj */ Convert-Binary-C-0.85/tests/include/stuff/ar.h0000644000175000001440000054435214677003505017716 0ustar mhxusers/* arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar arararararararararararararararararararararararararararararararararararar */ Convert-Binary-C-0.85/tests/include/stuff/aq.h0000644000175000001440000054435214677003505017715 0ustar mhxusers/* aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq aqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaq */ Convert-Binary-C-0.85/tests/include/stuff/aa.h0000644000175000001440000054435214677003505017675 0ustar mhxusers/* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa */ Convert-Binary-C-0.85/tests/include/stuff/ai.h0000644000175000001440000054435214677003505017705 0ustar mhxusers/* aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai aiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiai */ Convert-Binary-C-0.85/tests/include/stuff/ak.h0000644000175000001440000054435214677003505017707 0ustar mhxusers/* akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak akakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakakak */ Convert-Binary-C-0.85/tests/include/stuff/af.h0000644000175000001440000054435214677003505017702 0ustar mhxusers/* afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf afafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf */ Convert-Binary-C-0.85/tests/include/stuff/ax.h0000644000175000001440000054435214677003505017724 0ustar mhxusers/* axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax axaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxaxax */ Convert-Binary-C-0.85/tests/include/stuff/al.h0000644000175000001440000054435214677003505017710 0ustar mhxusers/* alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal */ Convert-Binary-C-0.85/tests/include/stuff/an.h0000644000175000001440000054435214677003505017712 0ustar mhxusers/* anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan anananananananananananananananananananananananananananananananananananan */ Convert-Binary-C-0.85/tests/include/stuff/az.h0000644000175000001440000054435214677003505017726 0ustar mhxusers/* azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz azazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaz */ Convert-Binary-C-0.85/tests/include/stuff/ac.h0000644000175000001440000054435214677003505017677 0ustar mhxusers/* acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac acacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac */ Convert-Binary-C-0.85/tests/include/stuff/ao.h0000644000175000001440000054435214677003505017713 0ustar mhxusers/* aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao */ Convert-Binary-C-0.85/tests/include/stuff/generate.pl0000644000175000001440000000045614677003452021263 0ustar mhxusers#!/usr/bin/perl -w use strict; use warnings; use IO::File; use File::Spec; my $dir = @ARGV ? shift : '.'; for my $f ('aa' .. 'az') { my $fh = IO::File->new(">" . File::Spec->catfile($dir, "$f.h")) or die; print $fh "/*\n"; for (1..2500) { print $fh $f x 36, "\n"; } print $fh "*/\n"; } Convert-Binary-C-0.85/tests/include/stuff/at.h0000644000175000001440000054435214677003505017720 0ustar mhxusers/* atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat atatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatat */ Convert-Binary-C-0.85/tests/include/stuff/ap.h0000644000175000001440000054435214677003505017714 0ustar mhxusers/* apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap apapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapapap */ Convert-Binary-C-0.85/tests/include/stuff/ay.h0000644000175000001440000054435214677003505017725 0ustar mhxusers/* ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay ayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayayay */ Convert-Binary-C-0.85/tests/include/stuff/ah.h0000644000175000001440000054435214677003505017704 0ustar mhxusers/* ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah ahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahah */ Convert-Binary-C-0.85/tests/include/stuff/as.h0000644000175000001440000054435214677003505017717 0ustar mhxusers/* asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas asasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasasas */ Convert-Binary-C-0.85/tests/include/stuff/ae.h0000644000175000001440000054435214677003505017701 0ustar mhxusers/* aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae */ Convert-Binary-C-0.85/tests/include/stuff/ag.h0000644000175000001440000054435214677003505017703 0ustar mhxusers/* agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag agagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag */ Convert-Binary-C-0.85/tests/include/sizeof.pl0000644000175000001440000007310614677003452017643 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ %size = ( 'FILE' => 117, 'FILE.bufend' => 8, 'FILE.buffer' => 8, 'FILE.bufidx' => 8, 'FILE.bufsize' => 8, 'FILE.filename' => 8, 'FILE.handle' => 4, 'FILE.mtx' => 40, 'FILE.mtx._PDCLIB_mtx_t_align' => 8, 'FILE.mtx._PDCLIB_mtx_t_data' => 40, 'FILE.mtx._PDCLIB_mtx_t_data[0]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[10]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[11]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[12]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[13]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[14]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[15]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[16]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[17]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[18]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[19]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[1]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[20]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[21]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[22]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[23]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[24]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[25]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[26]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[27]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[28]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[29]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[2]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[30]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[31]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[32]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[33]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[34]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[35]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[36]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[37]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[38]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[39]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[3]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[4]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[5]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[6]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[7]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[8]' => 1, 'FILE.mtx._PDCLIB_mtx_t_data[9]' => 1, 'FILE.next' => 8, 'FILE.pos' => 12, 'FILE.pos.offset' => 8, 'FILE.pos.status' => 4, 'FILE.status' => 4, 'FILE.ungetbuf' => 1, 'FILE.ungetbuf[0]' => 1, 'FILE.ungetidx' => 8, '_PDCLIB_bigint_t' => 132, '_PDCLIB_bigint_t.data' => 128, '_PDCLIB_bigint_t.data[0]' => 4, '_PDCLIB_bigint_t.data[10]' => 4, '_PDCLIB_bigint_t.data[11]' => 4, '_PDCLIB_bigint_t.data[12]' => 4, '_PDCLIB_bigint_t.data[13]' => 4, '_PDCLIB_bigint_t.data[14]' => 4, '_PDCLIB_bigint_t.data[15]' => 4, '_PDCLIB_bigint_t.data[16]' => 4, '_PDCLIB_bigint_t.data[17]' => 4, '_PDCLIB_bigint_t.data[18]' => 4, '_PDCLIB_bigint_t.data[19]' => 4, '_PDCLIB_bigint_t.data[1]' => 4, '_PDCLIB_bigint_t.data[20]' => 4, '_PDCLIB_bigint_t.data[21]' => 4, '_PDCLIB_bigint_t.data[22]' => 4, '_PDCLIB_bigint_t.data[23]' => 4, '_PDCLIB_bigint_t.data[24]' => 4, '_PDCLIB_bigint_t.data[25]' => 4, '_PDCLIB_bigint_t.data[26]' => 4, '_PDCLIB_bigint_t.data[27]' => 4, '_PDCLIB_bigint_t.data[28]' => 4, '_PDCLIB_bigint_t.data[29]' => 4, '_PDCLIB_bigint_t.data[2]' => 4, '_PDCLIB_bigint_t.data[30]' => 4, '_PDCLIB_bigint_t.data[31]' => 4, '_PDCLIB_bigint_t.data[3]' => 4, '_PDCLIB_bigint_t.data[4]' => 4, '_PDCLIB_bigint_t.data[5]' => 4, '_PDCLIB_bigint_t.data[6]' => 4, '_PDCLIB_bigint_t.data[7]' => 4, '_PDCLIB_bigint_t.data[8]' => 4, '_PDCLIB_bigint_t.data[9]' => 4, '_PDCLIB_bigint_t.size' => 4, '_PDCLIB_cnd_attr_t' => 4, '_PDCLIB_cnd_attr_t._PDCLIB_cnd_attr_t_align' => 4, '_PDCLIB_cnd_attr_t._PDCLIB_cnd_attr_t_data' => 4, '_PDCLIB_cnd_attr_t._PDCLIB_cnd_attr_t_data[0]' => 1, '_PDCLIB_cnd_attr_t._PDCLIB_cnd_attr_t_data[1]' => 1, '_PDCLIB_cnd_attr_t._PDCLIB_cnd_attr_t_data[2]' => 1, '_PDCLIB_cnd_attr_t._PDCLIB_cnd_attr_t_data[3]' => 1, '_PDCLIB_cnd_t' => 48, '_PDCLIB_cnd_t._PDCLIB_cnd_t_align' => 8, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data' => 48, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[0]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[10]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[11]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[12]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[13]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[14]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[15]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[16]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[17]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[18]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[19]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[1]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[20]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[21]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[22]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[23]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[24]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[25]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[26]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[27]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[28]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[29]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[2]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[30]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[31]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[32]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[33]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[34]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[35]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[36]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[37]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[38]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[39]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[3]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[40]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[41]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[42]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[43]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[44]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[45]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[46]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[47]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[4]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[5]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[6]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[7]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[8]' => 1, '_PDCLIB_cnd_t._PDCLIB_cnd_t_data[9]' => 1, '_PDCLIB_div_t' => 8, '_PDCLIB_div_t.quot' => 4, '_PDCLIB_div_t.rem' => 4, '_PDCLIB_exitfunc_t' => 16, '_PDCLIB_exitfunc_t.func' => 8, '_PDCLIB_exitfunc_t.next' => 8, '_PDCLIB_fd_t' => 4, '_PDCLIB_file_t' => 117, '_PDCLIB_file_t.bufend' => 8, '_PDCLIB_file_t.buffer' => 8, '_PDCLIB_file_t.bufidx' => 8, '_PDCLIB_file_t.bufsize' => 8, '_PDCLIB_file_t.filename' => 8, '_PDCLIB_file_t.handle' => 4, '_PDCLIB_file_t.mtx' => 40, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_align' => 8, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data' => 40, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[0]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[10]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[11]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[12]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[13]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[14]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[15]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[16]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[17]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[18]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[19]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[1]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[20]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[21]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[22]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[23]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[24]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[25]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[26]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[27]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[28]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[29]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[2]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[30]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[31]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[32]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[33]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[34]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[35]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[36]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[37]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[38]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[39]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[3]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[4]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[5]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[6]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[7]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[8]' => 1, '_PDCLIB_file_t.mtx._PDCLIB_mtx_t_data[9]' => 1, '_PDCLIB_file_t.next' => 8, '_PDCLIB_file_t.pos' => 12, '_PDCLIB_file_t.pos.offset' => 8, '_PDCLIB_file_t.pos.status' => 4, '_PDCLIB_file_t.status' => 4, '_PDCLIB_file_t.ungetbuf' => 1, '_PDCLIB_file_t.ungetbuf[0]' => 1, '_PDCLIB_file_t.ungetidx' => 8, '_PDCLIB_fpos_t' => 12, '_PDCLIB_fpos_t.offset' => 8, '_PDCLIB_fpos_t.status' => 4, '_PDCLIB_imaxdiv_t' => 16, '_PDCLIB_imaxdiv_t.quot' => 8, '_PDCLIB_imaxdiv_t.rem' => 8, '_PDCLIB_lc_collate_t' => 4, '_PDCLIB_lc_collate_t.alloced' => 4, '_PDCLIB_lc_ctype_entry_t' => 4, '_PDCLIB_lc_ctype_entry_t.flags' => 2, '_PDCLIB_lc_ctype_entry_t.lower' => 1, '_PDCLIB_lc_ctype_entry_t.upper' => 1, '_PDCLIB_lc_ctype_t' => 36, '_PDCLIB_lc_ctype_t.Xdigits_high' => 4, '_PDCLIB_lc_ctype_t.Xdigits_low' => 4, '_PDCLIB_lc_ctype_t.alloced' => 4, '_PDCLIB_lc_ctype_t.digits_high' => 4, '_PDCLIB_lc_ctype_t.digits_low' => 4, '_PDCLIB_lc_ctype_t.entry' => 8, '_PDCLIB_lc_ctype_t.xdigits_high' => 4, '_PDCLIB_lc_ctype_t.xdigits_low' => 4, '_PDCLIB_lc_lconv_monetary_t' => 70, '_PDCLIB_lc_lconv_monetary_t.currency_symbol' => 8, '_PDCLIB_lc_lconv_monetary_t.frac_digits' => 1, '_PDCLIB_lc_lconv_monetary_t.int_curr_symbol' => 8, '_PDCLIB_lc_lconv_monetary_t.int_frac_digits' => 1, '_PDCLIB_lc_lconv_monetary_t.int_n_cs_precedes' => 1, '_PDCLIB_lc_lconv_monetary_t.int_n_sep_by_space' => 1, '_PDCLIB_lc_lconv_monetary_t.int_n_sign_posn' => 1, '_PDCLIB_lc_lconv_monetary_t.int_p_cs_precedes' => 1, '_PDCLIB_lc_lconv_monetary_t.int_p_sep_by_space' => 1, '_PDCLIB_lc_lconv_monetary_t.int_p_sign_posn' => 1, '_PDCLIB_lc_lconv_monetary_t.mon_decimal_point' => 8, '_PDCLIB_lc_lconv_monetary_t.mon_grouping' => 8, '_PDCLIB_lc_lconv_monetary_t.mon_thousands_sep' => 8, '_PDCLIB_lc_lconv_monetary_t.n_cs_precedes' => 1, '_PDCLIB_lc_lconv_monetary_t.n_sep_by_space' => 1, '_PDCLIB_lc_lconv_monetary_t.n_sign_posn' => 1, '_PDCLIB_lc_lconv_monetary_t.negative_sign' => 8, '_PDCLIB_lc_lconv_monetary_t.p_cs_precedes' => 1, '_PDCLIB_lc_lconv_monetary_t.p_sep_by_space' => 1, '_PDCLIB_lc_lconv_monetary_t.p_sign_posn' => 1, '_PDCLIB_lc_lconv_monetary_t.positive_sign' => 8, '_PDCLIB_lc_lconv_numeric_t' => 24, '_PDCLIB_lc_lconv_numeric_t.decimal_point' => 8, '_PDCLIB_lc_lconv_numeric_t.grouping' => 8, '_PDCLIB_lc_lconv_numeric_t.thousands_sep' => 8, '_PDCLIB_lc_messages_t' => 1060, '_PDCLIB_lc_messages_t.alloced' => 4, '_PDCLIB_lc_messages_t.errno_texts' => 1056, '_PDCLIB_lc_messages_t.errno_texts[0]' => 8, '_PDCLIB_lc_messages_t.errno_texts[100]' => 8, '_PDCLIB_lc_messages_t.errno_texts[101]' => 8, '_PDCLIB_lc_messages_t.errno_texts[102]' => 8, '_PDCLIB_lc_messages_t.errno_texts[103]' => 8, '_PDCLIB_lc_messages_t.errno_texts[104]' => 8, '_PDCLIB_lc_messages_t.errno_texts[105]' => 8, '_PDCLIB_lc_messages_t.errno_texts[106]' => 8, '_PDCLIB_lc_messages_t.errno_texts[107]' => 8, '_PDCLIB_lc_messages_t.errno_texts[108]' => 8, '_PDCLIB_lc_messages_t.errno_texts[109]' => 8, '_PDCLIB_lc_messages_t.errno_texts[10]' => 8, '_PDCLIB_lc_messages_t.errno_texts[110]' => 8, '_PDCLIB_lc_messages_t.errno_texts[111]' => 8, '_PDCLIB_lc_messages_t.errno_texts[112]' => 8, '_PDCLIB_lc_messages_t.errno_texts[113]' => 8, '_PDCLIB_lc_messages_t.errno_texts[114]' => 8, '_PDCLIB_lc_messages_t.errno_texts[115]' => 8, '_PDCLIB_lc_messages_t.errno_texts[116]' => 8, '_PDCLIB_lc_messages_t.errno_texts[117]' => 8, '_PDCLIB_lc_messages_t.errno_texts[118]' => 8, '_PDCLIB_lc_messages_t.errno_texts[119]' => 8, '_PDCLIB_lc_messages_t.errno_texts[11]' => 8, '_PDCLIB_lc_messages_t.errno_texts[120]' => 8, '_PDCLIB_lc_messages_t.errno_texts[121]' => 8, '_PDCLIB_lc_messages_t.errno_texts[122]' => 8, '_PDCLIB_lc_messages_t.errno_texts[123]' => 8, '_PDCLIB_lc_messages_t.errno_texts[124]' => 8, '_PDCLIB_lc_messages_t.errno_texts[125]' => 8, '_PDCLIB_lc_messages_t.errno_texts[126]' => 8, '_PDCLIB_lc_messages_t.errno_texts[127]' => 8, '_PDCLIB_lc_messages_t.errno_texts[128]' => 8, '_PDCLIB_lc_messages_t.errno_texts[129]' => 8, '_PDCLIB_lc_messages_t.errno_texts[12]' => 8, '_PDCLIB_lc_messages_t.errno_texts[130]' => 8, '_PDCLIB_lc_messages_t.errno_texts[131]' => 8, '_PDCLIB_lc_messages_t.errno_texts[13]' => 8, '_PDCLIB_lc_messages_t.errno_texts[14]' => 8, '_PDCLIB_lc_messages_t.errno_texts[15]' => 8, '_PDCLIB_lc_messages_t.errno_texts[16]' => 8, '_PDCLIB_lc_messages_t.errno_texts[17]' => 8, '_PDCLIB_lc_messages_t.errno_texts[18]' => 8, '_PDCLIB_lc_messages_t.errno_texts[19]' => 8, '_PDCLIB_lc_messages_t.errno_texts[1]' => 8, '_PDCLIB_lc_messages_t.errno_texts[20]' => 8, '_PDCLIB_lc_messages_t.errno_texts[21]' => 8, '_PDCLIB_lc_messages_t.errno_texts[22]' => 8, '_PDCLIB_lc_messages_t.errno_texts[23]' => 8, '_PDCLIB_lc_messages_t.errno_texts[24]' => 8, '_PDCLIB_lc_messages_t.errno_texts[25]' => 8, '_PDCLIB_lc_messages_t.errno_texts[26]' => 8, '_PDCLIB_lc_messages_t.errno_texts[27]' => 8, '_PDCLIB_lc_messages_t.errno_texts[28]' => 8, '_PDCLIB_lc_messages_t.errno_texts[29]' => 8, '_PDCLIB_lc_messages_t.errno_texts[2]' => 8, '_PDCLIB_lc_messages_t.errno_texts[30]' => 8, '_PDCLIB_lc_messages_t.errno_texts[31]' => 8, '_PDCLIB_lc_messages_t.errno_texts[32]' => 8, '_PDCLIB_lc_messages_t.errno_texts[33]' => 8, '_PDCLIB_lc_messages_t.errno_texts[34]' => 8, '_PDCLIB_lc_messages_t.errno_texts[35]' => 8, '_PDCLIB_lc_messages_t.errno_texts[36]' => 8, '_PDCLIB_lc_messages_t.errno_texts[37]' => 8, '_PDCLIB_lc_messages_t.errno_texts[38]' => 8, '_PDCLIB_lc_messages_t.errno_texts[39]' => 8, '_PDCLIB_lc_messages_t.errno_texts[3]' => 8, '_PDCLIB_lc_messages_t.errno_texts[40]' => 8, '_PDCLIB_lc_messages_t.errno_texts[41]' => 8, '_PDCLIB_lc_messages_t.errno_texts[42]' => 8, '_PDCLIB_lc_messages_t.errno_texts[43]' => 8, '_PDCLIB_lc_messages_t.errno_texts[44]' => 8, '_PDCLIB_lc_messages_t.errno_texts[45]' => 8, '_PDCLIB_lc_messages_t.errno_texts[46]' => 8, '_PDCLIB_lc_messages_t.errno_texts[47]' => 8, '_PDCLIB_lc_messages_t.errno_texts[48]' => 8, '_PDCLIB_lc_messages_t.errno_texts[49]' => 8, '_PDCLIB_lc_messages_t.errno_texts[4]' => 8, '_PDCLIB_lc_messages_t.errno_texts[50]' => 8, '_PDCLIB_lc_messages_t.errno_texts[51]' => 8, '_PDCLIB_lc_messages_t.errno_texts[52]' => 8, '_PDCLIB_lc_messages_t.errno_texts[53]' => 8, '_PDCLIB_lc_messages_t.errno_texts[54]' => 8, '_PDCLIB_lc_messages_t.errno_texts[55]' => 8, '_PDCLIB_lc_messages_t.errno_texts[56]' => 8, '_PDCLIB_lc_messages_t.errno_texts[57]' => 8, '_PDCLIB_lc_messages_t.errno_texts[58]' => 8, '_PDCLIB_lc_messages_t.errno_texts[59]' => 8, '_PDCLIB_lc_messages_t.errno_texts[5]' => 8, '_PDCLIB_lc_messages_t.errno_texts[60]' => 8, '_PDCLIB_lc_messages_t.errno_texts[61]' => 8, '_PDCLIB_lc_messages_t.errno_texts[62]' => 8, '_PDCLIB_lc_messages_t.errno_texts[63]' => 8, '_PDCLIB_lc_messages_t.errno_texts[64]' => 8, '_PDCLIB_lc_messages_t.errno_texts[65]' => 8, '_PDCLIB_lc_messages_t.errno_texts[66]' => 8, '_PDCLIB_lc_messages_t.errno_texts[67]' => 8, '_PDCLIB_lc_messages_t.errno_texts[68]' => 8, '_PDCLIB_lc_messages_t.errno_texts[69]' => 8, '_PDCLIB_lc_messages_t.errno_texts[6]' => 8, '_PDCLIB_lc_messages_t.errno_texts[70]' => 8, '_PDCLIB_lc_messages_t.errno_texts[71]' => 8, '_PDCLIB_lc_messages_t.errno_texts[72]' => 8, '_PDCLIB_lc_messages_t.errno_texts[73]' => 8, '_PDCLIB_lc_messages_t.errno_texts[74]' => 8, '_PDCLIB_lc_messages_t.errno_texts[75]' => 8, '_PDCLIB_lc_messages_t.errno_texts[76]' => 8, '_PDCLIB_lc_messages_t.errno_texts[77]' => 8, '_PDCLIB_lc_messages_t.errno_texts[78]' => 8, '_PDCLIB_lc_messages_t.errno_texts[79]' => 8, '_PDCLIB_lc_messages_t.errno_texts[7]' => 8, '_PDCLIB_lc_messages_t.errno_texts[80]' => 8, '_PDCLIB_lc_messages_t.errno_texts[81]' => 8, '_PDCLIB_lc_messages_t.errno_texts[82]' => 8, '_PDCLIB_lc_messages_t.errno_texts[83]' => 8, '_PDCLIB_lc_messages_t.errno_texts[84]' => 8, '_PDCLIB_lc_messages_t.errno_texts[85]' => 8, '_PDCLIB_lc_messages_t.errno_texts[86]' => 8, '_PDCLIB_lc_messages_t.errno_texts[87]' => 8, '_PDCLIB_lc_messages_t.errno_texts[88]' => 8, '_PDCLIB_lc_messages_t.errno_texts[89]' => 8, '_PDCLIB_lc_messages_t.errno_texts[8]' => 8, '_PDCLIB_lc_messages_t.errno_texts[90]' => 8, '_PDCLIB_lc_messages_t.errno_texts[91]' => 8, '_PDCLIB_lc_messages_t.errno_texts[92]' => 8, '_PDCLIB_lc_messages_t.errno_texts[93]' => 8, '_PDCLIB_lc_messages_t.errno_texts[94]' => 8, '_PDCLIB_lc_messages_t.errno_texts[95]' => 8, '_PDCLIB_lc_messages_t.errno_texts[96]' => 8, '_PDCLIB_lc_messages_t.errno_texts[97]' => 8, '_PDCLIB_lc_messages_t.errno_texts[98]' => 8, '_PDCLIB_lc_messages_t.errno_texts[99]' => 8, '_PDCLIB_lc_messages_t.errno_texts[9]' => 8, '_PDCLIB_lc_numeric_monetary_t' => 16, '_PDCLIB_lc_numeric_monetary_t.lconv' => 8, '_PDCLIB_lc_numeric_monetary_t.monetary_alloced' => 4, '_PDCLIB_lc_numeric_monetary_t.numeric_alloced' => 4, '_PDCLIB_lc_time_t' => 356, '_PDCLIB_lc_time_t.alloced' => 4, '_PDCLIB_lc_time_t.am_pm' => 16, '_PDCLIB_lc_time_t.am_pm[0]' => 8, '_PDCLIB_lc_time_t.am_pm[1]' => 8, '_PDCLIB_lc_time_t.date_format' => 8, '_PDCLIB_lc_time_t.date_time_format' => 8, '_PDCLIB_lc_time_t.day_name_abbr' => 56, '_PDCLIB_lc_time_t.day_name_abbr[0]' => 8, '_PDCLIB_lc_time_t.day_name_abbr[1]' => 8, '_PDCLIB_lc_time_t.day_name_abbr[2]' => 8, '_PDCLIB_lc_time_t.day_name_abbr[3]' => 8, '_PDCLIB_lc_time_t.day_name_abbr[4]' => 8, '_PDCLIB_lc_time_t.day_name_abbr[5]' => 8, '_PDCLIB_lc_time_t.day_name_abbr[6]' => 8, '_PDCLIB_lc_time_t.day_name_full' => 56, '_PDCLIB_lc_time_t.day_name_full[0]' => 8, '_PDCLIB_lc_time_t.day_name_full[1]' => 8, '_PDCLIB_lc_time_t.day_name_full[2]' => 8, '_PDCLIB_lc_time_t.day_name_full[3]' => 8, '_PDCLIB_lc_time_t.day_name_full[4]' => 8, '_PDCLIB_lc_time_t.day_name_full[5]' => 8, '_PDCLIB_lc_time_t.day_name_full[6]' => 8, '_PDCLIB_lc_time_t.month_name_abbr' => 96, '_PDCLIB_lc_time_t.month_name_abbr[0]' => 8, '_PDCLIB_lc_time_t.month_name_abbr[10]' => 8, '_PDCLIB_lc_time_t.month_name_abbr[11]' => 8, '_PDCLIB_lc_time_t.month_name_abbr[1]' => 8, '_PDCLIB_lc_time_t.month_name_abbr[2]' => 8, '_PDCLIB_lc_time_t.month_name_abbr[3]' => 8, '_PDCLIB_lc_time_t.month_name_abbr[4]' => 8, '_PDCLIB_lc_time_t.month_name_abbr[5]' => 8, '_PDCLIB_lc_time_t.month_name_abbr[6]' => 8, '_PDCLIB_lc_time_t.month_name_abbr[7]' => 8, '_PDCLIB_lc_time_t.month_name_abbr[8]' => 8, '_PDCLIB_lc_time_t.month_name_abbr[9]' => 8, '_PDCLIB_lc_time_t.month_name_full' => 96, '_PDCLIB_lc_time_t.month_name_full[0]' => 8, '_PDCLIB_lc_time_t.month_name_full[10]' => 8, '_PDCLIB_lc_time_t.month_name_full[11]' => 8, '_PDCLIB_lc_time_t.month_name_full[1]' => 8, '_PDCLIB_lc_time_t.month_name_full[2]' => 8, '_PDCLIB_lc_time_t.month_name_full[3]' => 8, '_PDCLIB_lc_time_t.month_name_full[4]' => 8, '_PDCLIB_lc_time_t.month_name_full[5]' => 8, '_PDCLIB_lc_time_t.month_name_full[6]' => 8, '_PDCLIB_lc_time_t.month_name_full[7]' => 8, '_PDCLIB_lc_time_t.month_name_full[8]' => 8, '_PDCLIB_lc_time_t.month_name_full[9]' => 8, '_PDCLIB_lc_time_t.time_format' => 8, '_PDCLIB_lc_time_t.time_format_12h' => 8, '_PDCLIB_ldiv_t' => 16, '_PDCLIB_ldiv_t.quot' => 8, '_PDCLIB_ldiv_t.rem' => 8, '_PDCLIB_lldiv_t' => 16, '_PDCLIB_lldiv_t.quot' => 8, '_PDCLIB_lldiv_t.rem' => 8, '_PDCLIB_mtx_attr_t' => 4, '_PDCLIB_mtx_attr_t._PDCLIB_mtx_attr_t_align' => 4, '_PDCLIB_mtx_attr_t._PDCLIB_mtx_attr_t_data' => 4, '_PDCLIB_mtx_attr_t._PDCLIB_mtx_attr_t_data[0]' => 1, '_PDCLIB_mtx_attr_t._PDCLIB_mtx_attr_t_data[1]' => 1, '_PDCLIB_mtx_attr_t._PDCLIB_mtx_attr_t_data[2]' => 1, '_PDCLIB_mtx_attr_t._PDCLIB_mtx_attr_t_data[3]' => 1, '_PDCLIB_mtx_t' => 40, '_PDCLIB_mtx_t._PDCLIB_mtx_t_align' => 8, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data' => 40, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[0]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[10]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[11]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[12]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[13]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[14]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[15]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[16]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[17]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[18]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[19]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[1]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[20]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[21]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[22]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[23]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[24]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[25]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[26]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[27]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[28]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[29]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[2]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[30]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[31]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[32]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[33]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[34]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[35]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[36]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[37]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[38]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[39]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[3]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[4]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[5]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[6]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[7]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[8]' => 1, '_PDCLIB_mtx_t._PDCLIB_mtx_t_data[9]' => 1, '_PDCLIB_once_flag' => 4, '_PDCLIB_status_t' => 72, '_PDCLIB_status_t.arg' => 8, '_PDCLIB_status_t.base' => 4, '_PDCLIB_status_t.current' => 8, '_PDCLIB_status_t.flags' => 8, '_PDCLIB_status_t.i' => 8, '_PDCLIB_status_t.n' => 8, '_PDCLIB_status_t.prec' => 4, '_PDCLIB_status_t.s' => 8, '_PDCLIB_status_t.stream' => 8, '_PDCLIB_status_t.width' => 8, '_PDCLIB_thrd_attr_t' => 56, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_align' => 8, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data' => 56, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[0]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[10]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[11]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[12]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[13]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[14]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[15]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[16]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[17]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[18]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[19]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[1]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[20]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[21]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[22]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[23]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[24]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[25]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[26]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[27]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[28]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[29]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[2]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[30]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[31]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[32]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[33]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[34]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[35]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[36]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[37]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[38]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[39]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[3]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[40]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[41]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[42]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[43]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[44]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[45]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[46]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[47]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[48]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[49]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[4]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[50]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[51]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[52]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[53]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[54]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[55]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[5]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[6]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[7]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[8]' => 1, '_PDCLIB_thrd_attr_t._PDCLIB_thrd_attr_t_data[9]' => 1, '_PDCLIB_thrd_t' => 8, '_PDCLIB_tss_t' => 4, '_PDCLIB_va_list' => 8, 'bar' => 8, 'bar.x' => 4, 'bar.y' => 8, 'clock_t' => 8, 'div_t' => 8, 'div_t.quot' => 4, 'div_t.rem' => 4, 'foo' => 1, 'fpos_t' => 12, 'fpos_t.offset' => 8, 'fpos_t.status' => 4, 'imaxdiv_t' => 16, 'imaxdiv_t.quot' => 8, 'imaxdiv_t.rem' => 8, 'int16_t' => 2, 'int32_t' => 4, 'int64_t' => 8, 'int8_t' => 1, 'int_fast16_t' => 8, 'int_fast32_t' => 8, 'int_fast64_t' => 8, 'int_fast8_t' => 1, 'int_least16_t' => 2, 'int_least32_t' => 4, 'int_least64_t' => 8, 'int_least8_t' => 1, 'intmax_t' => 8, 'intptr_t' => 8, 'lconv' => 94, 'lconv.currency_symbol' => 8, 'lconv.decimal_point' => 8, 'lconv.frac_digits' => 1, 'lconv.grouping' => 8, 'lconv.int_curr_symbol' => 8, 'lconv.int_frac_digits' => 1, 'lconv.int_n_cs_precedes' => 1, 'lconv.int_n_sep_by_space' => 1, 'lconv.int_n_sign_posn' => 1, 'lconv.int_p_cs_precedes' => 1, 'lconv.int_p_sep_by_space' => 1, 'lconv.int_p_sign_posn' => 1, 'lconv.mon_decimal_point' => 8, 'lconv.mon_grouping' => 8, 'lconv.mon_thousands_sep' => 8, 'lconv.n_cs_precedes' => 1, 'lconv.n_sep_by_space' => 1, 'lconv.n_sign_posn' => 1, 'lconv.negative_sign' => 8, 'lconv.p_cs_precedes' => 1, 'lconv.p_sep_by_space' => 1, 'lconv.p_sign_posn' => 1, 'lconv.positive_sign' => 8, 'lconv.thousands_sep' => 8, 'ldiv_t' => 16, 'ldiv_t.quot' => 8, 'ldiv_t.rem' => 8, 'lldiv_t' => 16, 'lldiv_t.quot' => 8, 'lldiv_t.rem' => 8, 'ptrdiff_t' => 8, 'size_t' => 8, 'time_t' => 8, 'timespec' => 16, 'timespec.tv_nsec' => 8, 'timespec.tv_sec' => 8, 'tm' => 36, 'tm.tm_hour' => 4, 'tm.tm_isdst' => 4, 'tm.tm_mday' => 4, 'tm.tm_min' => 4, 'tm.tm_mon' => 4, 'tm.tm_sec' => 4, 'tm.tm_wday' => 4, 'tm.tm_yday' => 4, 'tm.tm_year' => 4, 'uint16_t' => 2, 'uint32_t' => 4, 'uint64_t' => 8, 'uint8_t' => 1, 'uint_fast16_t' => 8, 'uint_fast32_t' => 8, 'uint_fast64_t' => 8, 'uint_fast8_t' => 1, 'uint_least16_t' => 2, 'uint_least32_t' => 4, 'uint_least64_t' => 8, 'uint_least8_t' => 1, 'uintmax_t' => 8, 'uintptr_t' => 8, 'va_list' => 8, 'wchar_t' => 4, 'wctrans_t' => 4, 'wctype_t' => 4, 'wint_t' => 4, ); Convert-Binary-C-0.85/tests/include/config.pl0000644000175000001440000001024214676735310017605 0ustar mhxusers{ 'ByteOrder' => 'LittleEndian', 'CharSize' => 1, 'CompoundAlignment' => 1, 'DoubleSize' => 8, 'EnumSize' => 0, 'FloatSize' => 4, 'HasCPPComments' => 1, 'IntSize' => 4, 'LongDoubleSize' => 16, 'LongLongSize' => 8, 'LongSize' => 8, 'PointerSize' => 8, 'ShortSize' => 2, 'UnsignedChars' => 0, Include => [ 'tests/include/pdclib/include', 'tests/include/pdclib/platform/example/include', ], Define => [ '__attribute__(x)=', '__CHAR_BIT__=8', '__DBL_DIG__=15', '__DBL_EPSILON__=((double)2.22044604925031308084726333618164062e-16L)', '__DBL_MANT_DIG__=53', '__DBL_MAX_10_EXP__=308', '__DBL_MAX_EXP__=1024', '__DBL_MAX__=((double)1.79769313486231570814527423731704357e+308L)', '__DBL_MIN_10_EXP__=(-307)', '__DBL_MIN_EXP__=(-1021)', '__DBL_MIN__=((double)2.22507385850720138309023271733240406e-308L)', '__FLT128_DECIMAL_DIG__=36', '__FLT_DIG__=6', '__FLT_EPSILON__=1.19209289550781250000000000000000000e-7F', '__FLT_MANT_DIG__=24', '__FLT_MAX_10_EXP__=38', '__FLT_MAX_EXP__=128', '__FLT_MAX__=3.40282346638528859811704183484516925e+38F', '__FLT_MIN_10_EXP__=(-37)', '__FLT_MIN_EXP__=(-125)', '__FLT_MIN__=1.17549435082228750796873653722224568e-38F', '__FLT_RADIX__=2', '__INT16_C=__INT16_C', '__INT32_C=__INT32_C', '__INT64_C=__INT64_C', '__INT8_C=__INT8_C', '__INTMAX_C=__INTMAX_C', '__INTMAX_MAX__=0x7fffffffffffffffL', '__INTMAX_TYPE__=long int', '__INTPTR_MAX__=0x7fffffffffffffffL', '__INTPTR_TYPE__=long int', '__INT_FAST16_MAX__=0x7fffffffffffffffL', '__INT_FAST16_TYPE__=long int', '__INT_FAST32_MAX__=0x7fffffffffffffffL', '__INT_FAST32_TYPE__=long int', '__INT_FAST64_MAX__=0x7fffffffffffffffL', '__INT_FAST64_TYPE__=long int', '__INT_FAST8_MAX__=0x7f', '__INT_FAST8_TYPE__=signed char', '__INT_LEAST16_MAX__=0x7fff', '__INT_LEAST16_TYPE__=short int', '__INT_LEAST32_MAX__=0x7fffffff', '__INT_LEAST32_TYPE__=int', '__INT_LEAST64_MAX__=0x7fffffffffffffffL', '__INT_LEAST64_TYPE__=long int', '__INT_LEAST8_MAX__=0x7f', '__INT_LEAST8_TYPE__=signed char', '__INT_MAX__=0x7fffffff', '__LDBL_DECIMAL_DIG__=21', '__LDBL_DIG__=18', '__LDBL_EPSILON__=1.08420217248550443400745280086994171e-19L', '__LDBL_MANT_DIG__=64', '__LDBL_MAX_10_EXP__=4932', '__LDBL_MAX_EXP__=16384', '__LDBL_MAX__=1.18973149535723176502126385303097021e+4932L', '__LDBL_MIN_10_EXP__=(-4931)', '__LDBL_MIN_EXP__=(-16381)', '__LDBL_MIN__=3.36210314311209350626267781732175260e-4932L', '__LONG_LONG_MAX__=0x7fffffffffffffffLL', '__LONG_MAX__=0x7fffffffffffffffL', '__PTRDIFF_MAX__=0x7fffffffffffffffL', '__PTRDIFF_TYPE__=long int', '__SCHAR_MAX__=0x7f', '__SHRT_MAX__=0x7fff', '__SIG_ATOMIC_MAX__=0x7fffffff', '__SIZE_MAX__=0xffffffffffffffffUL', '__SIZE_TYPE__=long unsigned int', '__UINT16_C=__UINT16_C', '__UINT32_C=__UINT32_C', '__UINT64_C=__UINT64_C', '__UINT8_C=__UINT8_C', '__UINTMAX_C=__UINTMAX_C', '__UINTMAX_MAX__=0xffffffffffffffffUL', '__UINTMAX_TYPE__=long unsigned int', '__UINTPTR_MAX__=0xffffffffffffffffUL', '__UINTPTR_TYPE__=long unsigned int', '__UINT_FAST16_MAX__=0xffffffffffffffffUL', '__UINT_FAST16_TYPE__=long unsigned int', '__UINT_FAST32_MAX__=0xffffffffffffffffUL', '__UINT_FAST32_TYPE__=long unsigned int', '__UINT_FAST64_MAX__=0xffffffffffffffffUL', '__UINT_FAST64_TYPE__=long unsigned int', '__UINT_FAST8_MAX__=0xff', '__UINT_FAST8_TYPE__=unsigned char', '__UINT_LEAST16_MAX__=0xffff', '__UINT_LEAST16_TYPE__=short unsigned int', '__UINT_LEAST32_MAX__=0xffffffffU', '__UINT_LEAST32_TYPE__=unsigned int', '__UINT_LEAST64_MAX__=0xffffffffffffffffUL', '__UINT_LEAST64_TYPE__=long unsigned int', '__UINT_LEAST8_MAX__=0xff', '__UINT_LEAST8_TYPE__=unsigned char', '__WCHAR_MAX__=0x7fffffff', '__WCHAR_MIN__=(-0x7fffffff - 1)', '__WCHAR_TYPE__=int', '__WINT_MAX__=0xffffffffU', '__WINT_MIN__=0U', '__WINT_TYPE__=unsigned int', '__builtin_va_list=long int', '__x86_64=1', '__x86_64__=1', 'linux=1', 'unix=1', ], }; Convert-Binary-C-0.85/tests/include/include.c0000644000175000001440000000200114676735310017564 0ustar mhxusers#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef CACHE_TEST #include "stuff/aa.h" #include "stuff/ab.h" #include "stuff/ac.h" #include "stuff/ad.h" #include "stuff/ae.h" #include "stuff/af.h" #include "stuff/ag.h" #include "stuff/ah.h" #include "stuff/ai.h" #include "stuff/aj.h" #include "stuff/ak.h" #include "stuff/al.h" #include "stuff/am.h" #include "stuff/an.h" #include "stuff/ao.h" #include "stuff/ap.h" #include "stuff/aq.h" #include "stuff/ar.h" #include "stuff/as.h" #include "stuff/at.h" #include "stuff/au.h" #include "stuff/av.h" #include "stuff/aw.h" #include "stuff/ax.h" #include "stuff/ay.h" #include "stuff/az.h" #endif enum foo { BAR = 0 }; union bar { int x; double y; }; Convert-Binary-C-0.85/tests/206_parse.t0000644000175000001440000003474214677003452016255 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 116 } my $CCCFG = require './tests/include/config.pl'; #=================================================================== # create object (1 tests) #=================================================================== eval { $p = Convert::Binary::C->new }; ok($@,'',"failed to create Convert::Binary::C object"); #=================================================================== # try to parse empty file / empty code (2 tests) #=================================================================== eval { $p->parse_file( 'tests/include/files/empty.h' ) }; ok($@,'',"failed to parse empty C-file"); eval { $p->parse( '' ) }; ok($@,'',"failed to parse empty C-code"); #=================================================================== # check that parse/parse_file return object references (4 tests) #=================================================================== $p = eval { Convert::Binary::C->new->parse_file( 'tests/include/files/empty.h' ) }; ok($@,'',"failed to create Convert::Binary::C object"); ok(ref $p, 'Convert::Binary::C', "object reference not blessed to Convert::Binary::C"); $p = eval { Convert::Binary::C->new->parse( '' ) }; ok($@,'',"failed to create Convert::Binary::C object"); ok(ref $p, 'Convert::Binary::C', "object reference not blessed to Convert::Binary::C"); #=================================================================== # create object (1 tests) #=================================================================== eval { $p = Convert::Binary::C->new( %$CCCFG, EnumSize => 0, ); }; ok($@,'',"failed to create Convert::Binary::C object"); #=================================================================== # try to parse a file with lots of includes (1 test) #=================================================================== eval { $p->parse_file( 'tests/include/include.c' ); }; ok($@,'',"failed to parse C-file"); #=================================================================== # check if context is correctly evaluated (10 tests) # also do a quick check if the right stuff was parsed (12 tests) #=================================================================== @enums = $p->enum; @compounds = $p->compound; @structs = $p->struct; @unions = $p->union; @typedefs = $p->typedef; $s1 = @enums; $s2 = $p->enum; ok($s1,$s2,"context not evaluated correctly in 'enum'"); ok($s1,12,"incorrect number of enums"); $s1 = @compounds; $s2 = $p->compound; ok($s1,$s2,"context not evaluated correctly in 'compound'"); ok($s1,26,"incorrect number of compounds"); map { push @{$_->{type} eq 'union' ? \@r_unions : \@r_structs}, $_ } @compounds; $s1 = @structs; $s2 = $p->struct; ok($s1,$s2,"context not evaluated correctly in 'struct'"); $s2 = @r_structs; ok($s1,$s2,"direct/indirect counts differ in 'struct'"); ok($s1,20,"incorrect number of structs"); $s1 = @unions; $s2 = $p->union; ok($s1,$s2,"context not evaluated correctly in 'union'"); $s2 = @r_unions; ok($s1,$s2,"direct/indirect counts differ in 'union'"); ok($s1,6,"incorrect number of unions"); $s1 = @typedefs; $s2 = $p->typedef; ok($s1,$s2,"context not evaluated correctly in 'typedef'"); ok($s1,54,"incorrect number of typedefs"); @enum_ids = $p->enum_names; @compound_ids = $p->compound_names; @struct_ids = $p->struct_names; @union_ids = $p->union_names; @typedef_ids = $p->typedef_names; $s1 = @enum_ids; $s2 = $p->enum_names; ok($s1,$s2,"context not evaluated correctly in 'enum_names'"); ok($s1,1,"incorrect number of enum identifiers"); $s1 = @compound_ids; $s2 = $p->compound_names; ok($s1,$s2,"context not evaluated correctly in 'compound_names'"); ok($s1,20,"incorrect number of compound identifiers"); $s1 = @struct_ids; $s2 = $p->struct_names; ok($s1,$s2,"context not evaluated correctly in 'struct_names'"); ok($s1,19,"incorrect number of struct identifiers"); $s1 = @union_ids; $s2 = $p->union_names; ok($s1,$s2,"context not evaluated correctly in 'union_names'"); ok($s1,1,"incorrect number of union identifiers"); $s1 = @typedef_ids; $s2 = $p->typedef_names; ok($s1,$s2,"context not evaluated correctly in 'typedef_names'"); ok($s1,54,"incorrect number of typedef identifiers"); # catch warnings #=================================================================== # check if all sizes are correct (1 big test) #=================================================================== do './tests/include/sizeof.pl'; $max_size = 0; @fail = (); @success = (); $SIG{__WARN__} = sub { print "# unexpected warning: $_[0]"; push @fail, $_[0]; }; for my $t ( keys %size ) { eval { $s = $p->sizeof($t) }; if( $@ ) { print "# sizeof failed for '$t': $@\n"; } elsif( $size{$t} != $s ) { print "# incorrect size for '$t' (expected $size{$t}, got $s)\n"; } else { $max_size = $s if $s > $max_size; push @success, $t; next; } push @fail, $t unless $s == $size{$t} } ok(@fail == 0); ok(@success > 0); #=================================================================== # check if the def method works correctly (1 big test) #=================================================================== $size{'_IO_lock_t'} = undef; @names = (); @fail = (); push @names, map { { type => qr/^enum$/, id => $_ } } map { $_->{identifier} || () } $p->enum; push @names, map { { type => qr/^(?:struct|union)$/, id => $_ } } map { $_->{identifier} || () } $p->compound; push @names, map { { type => qr/^struct$/, id => $_ } } map { $_->{identifier} || () } $p->struct; push @names, map { { type => qr/^union$/, id => $_ } } map { $_->{identifier} || () } $p->union; push @names, map { { type => qr/^typedef$/, id => $_->{declarator} =~ /(\w+)/ } } $p->typedef; for( @names ) { my $d = $p->def( $_->{id} ); unless( defined $d ) { print "# def( '$_->{id}' ) = undef for existing type\n"; push @fail, $_->{id}; next; } if( $d xor exists $size{$_->{id}} ) { print "# def( '$_->{id}' ) = $d\n"; push @fail, $_->{id}; next; } if( $d and not $d =~ $_->{type} ) { unless( defined $p->$d( $_->{id} ) ) { print "# def( '$_->{id}' ) = $d ($_->{type})\n"; push @fail, $_->{id}; next; } } } ok(@fail == 0); #=================================================================== # and check if we can pack and unpack everything (1 big test) #=================================================================== sub chkpack { my($orig, $pack) = @_; for( my $i = 0; $i < length $pack; ++$i ) { my $p = ord substr $pack, $i, 1; if ($i < length $orig) { my $o = ord substr $orig, $i, 1; return 0 unless $p == $o or $p == 0; } else { return 0 unless $p == 0; } } return 1; } # don't use random data as it may cause failures # for floating point values $data = pack 'C*', map { $_ & 0xFF } 1 .. $max_size; @fail = (); for my $id ( @enum_ids, @compound_ids, @typedef_ids ) { # skip long doubles next if grep { $id eq $_ } qw( __convert_long_double float_t double_t ); eval { $x = $p->unpack( $id, $data ) }; if( $@ ) { print "# unpack failed for '$id': $@\n"; push @fail, $id; next; } eval { $packed = $p->pack( $id, $x ) }; if( $@ ) { print "# pack failed for '$id': $@\n"; push @fail, $id; next; } unless( chkpack( $data, $packed ) ) { print "# inconsistent pack/unpack data for '$id'\n"; print "# \$data => @{[map { sprintf '%02X', $_ } unpack 'C*', substr $data, 0, $p->sizeof($id)]}\n"; print "# \$x => $x\n"; print "# \$packed => @{[map { sprintf '%02X', $_ } unpack 'C*', $packed]}\n"; push @fail, $id; } } ok(@fail == 0); #=================================================================== # check member and offsetof (1 big test) #=================================================================== @fail = (); foreach $type ( @compound_ids ) { next unless exists $size{$type}; foreach( 0 .. $size{$type}-1 ) { eval { $x = $p->member( $type, $_ ) }; if( $@ ) { print "# member failed for '$type', offset $_: $@\n"; push @fail, $_; } if( $x !~ /\+\d+$/ ) { eval { $o = $p->offsetof( $type, $x ) }; if( $@ ) { print "# offsetof failed for '$type', member '$x': $@\n"; push @fail, $_; } if( $o != $_ ) { print "# offsetof( '$type', '$x' ) = $o, expected $_\n"; push @fail, $_; } } } } ok(@fail == 0); #=================================================================== # check reference counts (38 tests) #=================================================================== eval { %rc = ( configure => $p->configure, include => $p->Include, enums_s => scalar $p->enum_names, enums_a => [$p->enum_names], compounds_s => scalar $p->compound_names, compounds_a => [$p->compound_names], structs_s => scalar $p->struct_names, structs_a => [$p->struct_names], unions_s => scalar $p->union_names, unions_a => [$p->union_names], typedefs_s => scalar $p->typedef_names, typedefs_a => [$p->typedef_names], enum_s => scalar $p->enum, enum_a => [$p->enum], compound_s => scalar $p->compound, compound_a => [$p->compound], struct_s => scalar $p->struct, struct_a => [$p->struct], union_s => scalar $p->union, union_a => [$p->union], typedef_s => scalar $p->typedef, typedef_a => [$p->typedef], enum_sx => scalar $p->enum( $p->enum_names ), enum_ax => [$p->enum( $p->enum_names )], compound_sx => scalar $p->compound( $p->compound_names ), compound_ax => [$p->compound( $p->compound_names )], struct_sx => scalar $p->struct( $p->struct_names ), struct_ax => [$p->struct( $p->struct_names )], union_sx => scalar $p->union( $p->union_names ), union_ax => [$p->union( $p->union_names )], typedef_sx => scalar $p->typedef( $p->typedef_names ), typedef_ax => [$p->typedef( $p->typedef_names )], sizeof => $p->sizeof( '_PDCLIB_file_t' ), typeof => $p->typeof( '_PDCLIB_file_t.ungetbuf[2]' ), offsetof => $p->offsetof( '_PDCLIB_file_t', 'ungetbuf[2]' ), member_sxx => scalar $p->member( '_PDCLIB_file_t', 100 ), member_axx => [$p->member( '_PDCLIB_file_t', 100 )], member_sx => scalar $p->member( '_PDCLIB_file_t' ), member_ax => [$p->member( '_PDCLIB_file_t' )], dependencies_s => scalar $p->dependencies, dependencies_a => [$p->dependencies], sourcify => $p->sourcify, ); }; ok($@,'',"method call failed"); $debug = Convert::Binary::C::feature( 'debug' ); for( keys %rc ) { $fail = $succ = 0; if( $debug ) { # print "# dumping $_\n"; my $r = Convert::Binary::C::__DUMP__( $rc{$_} ); # print "# checking $_\n"; while( $r =~ /REFCNT\s*=\s*(\d+)/g ) { if( $1 == 1 ) { $succ++ } else { print "# REFCNT = $1, should be 1\n"; $fail++; } } # print "# $_ (succ = $succ, fail = $fail)\n"; } skip( $debug ? '' : 'no debugging', $fail == 0 && $succ > 0 ); } #=================================================================== # check parser stack (2 tests) #=================================================================== my @tests = ( { level => 4997, error => '' }, { level => 4998, error => qr/memory exhausted/ }, ); for my $t ( @tests ) { my $c = Convert::Binary::C->new; my $pre = 'struct { ' x $t->{level}; my $post = ' x; }' x $t->{level}; eval { $c->parse("typedef $pre int $post deep;") }; ok( $@, $t->{error} ); # Don't try to unpack data (or even worse, call $c->typedef('deep')). # Doing so can result in a stack overflow in perl during destruction. } #=================================================================== # check parse error recovery (9 tests) #=================================================================== $c = Convert::Binary::C->new( IntSize => 4, EnumSize => 4 ); eval { $c->parse(<sizeof('foo') }; ok($@, ''); ok($s, 12); $p = eval { $c->pack('foo', { a => 4711, b => -101, c => 42 }) }; ok($@, ''); ok(length $p, $s); $u = eval { $c->unpack('foo', $p) }; ok($@, ''); ok($u->{a}, 4711); ok($u->{b}, -101); ok($u->{c}, 42); # check that another parse updates parse info eval { $c->parse(<sizeof('bar') }; ok($@, ''); ok($s, 8); # check that all possible methods update the parse info $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset my $d = $c->clone; # also check cloning here $s = eval { $c->sizeof('bar') }; ok($@, ''); ok($s, 8); $s = eval { $d->sizeof('bar') }; ok($@, ''); ok($s, 8); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->compound('bar') }; ok($@, ''); ok($s->{size}, 8); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->def('bar.a') }; ok($@, ''); ok($s, 'member'); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->enum('enu') }; ok($@, ''); ok($s->{size}, 4); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->initializer('bar', { a => 1, b => 2 }) }; ok($@, ''); ok($s, qr/^\s*\{\s*1,\s*2\s*\}\s*$/); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->member('bar', 5) }; ok($@, ''); ok($s, '.b+1'); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->offsetof('bar', '.b') }; ok($@, ''); ok($s, 4); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->pack('bar', { a => 1, b => 2 }) }; ok($@, ''); ok($s, pack('VV', 1, 2)); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->unpack('bar', pack('VV', 42, 4711)) }; ok($@, ''); ok($s->{a}, 42); ok($s->{b}, 4711); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->typedef('t_bar') }; ok($@, ''); ok($s->{type}{size}, 12); Convert-Binary-C-0.85/tests/parser/0000755000175000001440000000000014677003524015651 5ustar mhxusersConvert-Binary-C-0.85/tests/parser/bug1.c0000644000175000001440000000022314676735310016654 0ustar mhxusers/* * This must not parse correctly since unnamed enum * members just don't make sense. */ enum enu { A }; struct foo { enum enu const; }; Convert-Binary-C-0.85/tests/parser/context.c0000644000175000001440000000074114676735310017507 0ustar mhxusersenum bar { bar = 1 }; typedef int foo; struct foo { int foo : bar; int bar; int def; }; // TODO: make parser accept commented lines static int xyz(int foo) { int bar = 0; // foo = bar + 1; // return foo + bar; } static foo abc(foo foo) { // return foo + bar; } typedef foo def; int main(void) { foo foo = abc(42); int abc = bar; // struct foo bar = { bar: 0, foo: foo, def: abc }; // foo += bar.def + bar.foo; // return foo + bar.bar + xyz(foo); } Convert-Binary-C-0.85/tests/501_bfsimple.t0000644000175000001440000003042114677003452016730 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 8990; use Convert::Binary::C @ARGV; use strict; $^W = 1; my $BIN = $] < 5.006 ? '%x' : '%08b'; my $c = eval { Convert::Binary::C->new( Bitfields => { Engine => 'Simple', BlockSize => 4 }, EnumType => 'String' ); }; is($@, '', "failed to create Convert::Binary::C object"); eval { $c->parse(<sizeof('bfu'), 4); is($c->sizeof('bfs'), 4); is($c->sizeof('bfue'), 4); is($c->sizeof('bfse'), 4); for my $cfg ({ bo => 'BigEndian' }, { bo => 'BigEndian' }, { bo => 'LittleEndian' }, { bo => 'LittleEndian' }) { $c->ByteOrder($cfg->{bo}); my $bfu = $c->unpack('bfu', pack "C*", (255)x4); my $bfs = $c->unpack('bfs', pack "C*", (255)x4); my $bfue = $c->unpack('bfue', pack "C*", (255)x4); my $bfse = $c->unpack('bfse', pack "C*", (255)x4); for (1 .. 7) { is($bfu->{"b$_"}, (1 << $_) - 1); is($bfs->{"b$_"}, -1); is($bfue->{"b$_"}, "U$_" . ($_ == 1 ? '1' : 'A')); is($bfse->{"b$_"}, "S$_" . ($_ == 1 ? '1' : 'A')); } } $c->ByteOrder('LittleEndian'); my @ru = (); my @rs = (); my @rue = (); my @rse = (); for my $b (1 .. 7) { for my $i (0 .. ($b-1)) { for (\@ru, \@rs) { push @$_, { map { ("b$_" => 0) } 1 .. 7 }; } push @rue, { map { ("b$_" => "U${_}0") } 1 .. 7 }; push @rse, { map { ("b$_" => "S${_}0") } 1 .. 7 }; $ru[-1]{"b$b"} = 1 << $i; $rs[-1]{"b$b"} = $i == ($b-1) ? -(1 << $i) : 1 << $i; $rue[-1]{"b$b"} = "U$b" . ($i+1); $rse[-1]{"b$b"} = "S$b" . ($i+1); } } while (@ru < 32) { for (\@ru, \@rs) { push @$_, { map { ("b$_" => 0) } 1 .. 7 }; } push @rue, { map { ("b$_" => "U${_}0") } 1 .. 7 }; push @rse, { map { ("b$_" => "S${_}0") } 1 .. 7 }; } for my $bit (0 .. 31) { debug("LittleEndian, Bit=$bit\n"); my $pk = pack "V", 1<<$bit; my $bfu = $c->unpack('bfu', $pk); my $bfs = $c->unpack('bfs', $pk); my $bfue = $c->unpack('bfue', $pk); my $bfse = $c->unpack('bfse', $pk); is(join(',', map { qq/b$_=$bfu->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$ru[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfs->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rs[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfue->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rue[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfse->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rse[$bit]{"b$_"}/ } 1 .. 7)); $pk = pack "V", 0 if $bit >= 28; my $pu = $c->pack('bfu', $ru[$bit]); my $ps = $c->pack('bfs', $rs[$bit]); my $pue = $c->pack('bfue', $rue[$bit]); my $pse = $c->pack('bfse', $rse[$bit]); debug(sprintf "pk =%s\npu =%s\nps =%s\npue=%s\npse=%s\n", map { showbits($_) } $pk, $pu, $ps, $pue, $pse); is($pu, $pk); is($ps, $pk); is($pue, $pk); is($pse, $pk); } $c->ByteOrder('BigEndian'); @ru = (); @rs = (); @rue = (); @rse = (); for my $b (1 .. 7) { for my $i (reverse(0 .. ($b-1))) { for (\@ru, \@rs) { unshift @$_, { map { ("b$_" => 0) } 1 .. 7 }; } unshift @rue, { map { ("b$_" => "U${_}0") } 1 .. 7 }; unshift @rse, { map { ("b$_" => "S${_}0") } 1 .. 7 }; $ru[0]{"b$b"} = 1 << $i; $rs[0]{"b$b"} = $i == ($b-1) ? -(1 << $i) : 1 << $i; $rue[0]{"b$b"} = "U$b" . ($i+1); $rse[0]{"b$b"} = "S$b" . ($i+1); } } while (@ru < 32) { for (\@ru, \@rs) { unshift @$_, { map { ("b$_" => 0) } 1 .. 7 }; } unshift @rue, { map { ("b$_" => "U${_}0") } 1 .. 7 }; unshift @rse, { map { ("b$_" => "S${_}0") } 1 .. 7 }; } for my $bit (0 .. 31) { debug("BigEndian, Bit=$bit\n"); my $pk = pack "N", 1<<$bit; my $bfu = $c->unpack('bfu', $pk); my $bfs = $c->unpack('bfs', $pk); my $bfue = $c->unpack('bfue', $pk); my $bfse = $c->unpack('bfse', $pk); is(join(',', map { qq/b$_=$bfu->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$ru[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfs->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rs[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfue->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rue[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfse->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rse[$bit]{"b$_"}/ } 1 .. 7)); $pk = pack "N", 0 if $bit <= 3; my $pu = $c->pack('bfu', $ru[$bit]); my $ps = $c->pack('bfs', $rs[$bit]); my $pue = $c->pack('bfue', $rue[$bit]); my $pse = $c->pack('bfse', $rse[$bit]); debug(sprintf "pk =%s\npu =%s\nps =%s\npue=%s\npse=%s\n", map { showbits($_) } $pk, $pu, $ps, $pue, $pse); is($pu, $pk); is($ps, $pk); is($pue, $pk); is($pse, $pk); } $c->clean->parse(<sizeof('sbf'), 8); is($c->sizeof('ubf'), 4); $c->ByteOrder('BigEndian'); my $us = $c->unpack('sbf', pack "NN", 0xF0FFFFFF, 0x4FFFFFFF); is($us->{b1}, 1); is($us->{b2}, 2); is($us->{b3}, 2); my $uu = $c->unpack('ubf', pack "N", 0x4FFFFFFF); is($uu->{b1}, 0); is($uu->{b2}, 1); is($uu->{b3}, 2); my $ps = $c->pack('sbf', { b1 => 1, b2 => 2, b3 => 3 }); my $pu = $c->pack('ubf', { b1 => 0, b2 => 1, b3 => 2 }); is($ps, pack "NN", 0x90000000, 0x60000000); is($pu, pack "N", 0x40000000); $c->ByteOrder('LittleEndian'); $us = $c->unpack('sbf', pack "VV", 0xFFFFFF0F, 0xFFFFFFF4); is($us->{b1}, 1); is($us->{b2}, 1); is($us->{b3}, 4); $uu = $c->unpack('ubf', pack "V", 0xFFFFFFFA); is($uu->{b1}, 0); is($uu->{b2}, 2); is($uu->{b3}, 2); $ps = $c->pack('sbf', { b1 => 1, b2 => 2, b3 => 3 }); $pu = $c->pack('ubf', { b1 => 0, b2 => 1, b3 => 2 }); is($ps, pack "VV", 0x00000011, 0x00000003); is($pu, pack "V", 0x00000002); my @shlone = qw( 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608 16777216 33554432 67108864 134217728 268435456 536870912 1073741824 2147483648 4294967296 8589934592 17179869184 34359738368 68719476736 137438953472 274877906944 549755813888 1099511627776 2199023255552 4398046511104 8796093022208 17592186044416 35184372088832 70368744177664 140737488355328 281474976710656 562949953421312 1125899906842624 2251799813685248 4503599627370496 9007199254740992 18014398509481984 36028797018963968 72057594037927936 144115188075855872 288230376151711744 576460752303423488 1152921504606846976 2305843009213693952 4611686018427387904 9223372036854775808 ); my @allbit = qw( 0 1 3 7 15 31 63 127 255 511 1023 2047 4095 8191 16383 32767 65535 131071 262143 524287 1048575 2097151 4194303 8388607 16777215 33554431 67108863 134217727 268435455 536870911 1073741823 2147483647 4294967295 8589934591 17179869183 34359738367 68719476735 137438953471 274877906943 549755813887 1099511627775 2199023255551 4398046511103 8796093022207 17592186044415 35184372088831 70368744177663 140737488355327 281474976710655 562949953421311 1125899906842623 2251799813685247 4503599627370495 9007199254740991 18014398509481983 36028797018963967 72057594037927935 144115188075855871 288230376151711743 576460752303423487 1152921504606846975 2305843009213693951 4611686018427387903 9223372036854775807 18446744073709551615 ); for my $block_size (1, 2, 4, 8) { my $max_bits = 8*$block_size; $c->Bitfields({ BlockSize => $block_size }); for my $bits (1 .. $max_bits) { for my $shift (0 .. $max_bits-$bits) { my $shm = $shift ? "unsigned : $shift;" : ''; $c->clean->parse(<sizeof('bfu'), $block_size); is($c->sizeof('bfs'), $block_size); my @test = ( { bo => 'LittleEndian', pk => sub { my $bit = shift; scalar reverse packbits($block_size, 1, $shift + $bit) }, pkall => sub { scalar reverse packbits($block_size, $bits, $shift) } }, { bo => 'BigEndian', pk => sub { my $bit = shift; packbits($block_size, 1, 8*$block_size - ($shift + $bits) + $bit) }, pkall => sub { packbits($block_size, $bits, 8*$block_size - ($shift + $bits)) } }, ); my $fail = 0; for my $t (@test) { $c->ByteOrder($t->{bo}); for my $bit (0 .. $bits-1) { my $pk = $t->{pk}->($bit); my $pu = $c->pack('bfu', { b => $shlone[$bit] }); my $ps = $c->pack('bfs', { b => ($bit == $bits-1 ? "-$shlone[$bit]" : $shlone[$bit]) }); my $uu = $c->unpack('bfu', $pk); my $us = $c->unpack('bfs', $pk); my $f = 0; $pu eq $pk or $f++; $ps eq $pk or $f++; $uu->{b} eq $shlone[$bit] or $f++; $us->{b} eq ($bit == $bits-1 ? "-$shlone[$bit]" : $shlone[$bit]) or $f++; if ($f > 0) { diag("[$t->{bo}/ONE] block_size=$block_size, bits=$bits, shift=$shift, bit=$bit\n", sprintf("pk = %s\npu = %s\nps = %s\n", map { showbits($_) } $pk, $pu, $ps), "1 << \$bit = $shlone[$bit]\n", "\$uu->{b} = $uu->{b}\n", "\$us->{b} = $us->{b}\n"); } $fail += $f; } my $pk = $t->{pkall}->(); my $pu = $c->pack('bfu', { b => $allbit[$bits] }); my $ps = $c->pack('bfs', { b => -1 }); my $uu = $c->unpack('bfu', $pk); my $us = $c->unpack('bfs', $pk); my $f = 0; $pu eq $pk or $f++; $ps eq $pk or $f++; $uu->{b} eq $allbit[$bits] or $f++; $us->{b} == -1 or $f++; if ($f > 0) { diag("[$t->{bo}/ALL] block_size=$block_size, bits=$bits, shift=$shift\n", sprintf("pk = %s\npu = %s\nps = %s\n", map { showbits($_) } $pk, $pu, $ps), "allbits = $allbit[$bits]\n", "\$uu->{b} = $uu->{b}\n", "\$us->{b} = $us->{b}\n"); } $fail += $f; } is($fail, 0); } } } ### test UnsignedBitfields option $c->clean->Bitfields({ BlockSize => 1 })->parse(<unpack('bf', pack('C', 255)); is($bf->{x}, -1); $c->UnsignedBitfields(1); $bf = $c->unpack('bf', pack('C', 255)); is($bf->{x}, 255); sub debug { $ENV{CBC_TEST_DEBUG} and diag(@_); } sub showbits { join ' ', map { sprintf $BIN, $_ } unpack "C*", shift; } sub packbits { my($width, $bits, $offs) = @_; my @b = (0) x $width; for my $bit ($offs .. $offs + $bits - 1) { @b[$bit/8] |= 1 << ($bit%8); } pack "C*", reverse @b; } Convert-Binary-C-0.85/tests/242_dimension.t0000644000175000001440000002770014677003452017124 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 1535; use Convert::Binary::C @ARGV; use strict; $^W = 1; my $c = Convert::Binary::C->new( CharSize => 1, ShortSize => 2, IntSize => 4, Alignment => 1, ByteOrder => 'BigEndian' ); $c->parse(<<'ENDC'); struct string { char len; char data[3]; }; struct flex_string { char len; char data[]; }; typedef unsigned array[7]; typedef unsigned flex_array[]; ENDC my (@types, @tests, $is_pack, $data); $data = pack "C*", 42, 0 .. 100; @types = ( { type => 'string', raw_unpacked => { len => 42, data => [0 .. 2] }, raw_packed => pack('C*', 42, 0 .. 2) }, { type => 'flex_string', raw_unpacked => { len => 42, data => [0 .. 100] }, raw_packed => pack('C*', 42, 0 .. 100) }, ); @tests = ( { member => '.data', tag => { Dimension => 23 }, unpacked => { len => 42, data => [0 .. 22] }, packed => pack('C*', 42, 0 .. 22) }, { member => '.data', tag => { Dimension => '*' }, unpacked => { len => 42, data => [0 .. 100] }, packed => pack('C*', 42, 0 .. 100) }, { member => '.data', tag => { Dimension => 'len' }, unpacked => { len => 42, data => [0 .. 41] }, packed => pack('C*', 42, 0 .. 41) }, { member => '.data', tag => { Dimension => sub { is_deeply(\@_, [{len => 42, ($is_pack ? (data => [0 .. 76]) : ())}], 'params'); 77 } }, unpacked => { len => 42, data => [0 .. 76] }, packed => pack('C*', 42, 0 .. 76) }, { member => '.data', tag => { Dimension => [sub { is_deeply(\@_, [], 'params'); 78 }] }, unpacked => { len => 42, data => [0 .. 77] }, packed => pack('C*', 42, 0 .. 77) }, { member => '.data', tag => { Dimension => [sub { is_deeply(\@_, [1, 2, 3], 'params'); 79 }, 1, 2, 3] }, unpacked => { len => 42, data => [0 .. 78] }, packed => pack('C*', 42, 0 .. 78) }, { member => '.data', tag => { Dimension => [sub { is_deeply(\@_, [$c, 42, {len => 42, ($is_pack ? (data => [0 .. 79]) : ())}], 'params'); 80 }, $c->arg('SELF'), 42, $c->arg('DATA')] }, unpacked => { len => 42, data => [0 .. 79] }, packed => pack('C*', 42, 0 .. 79) }, { member => '.data', tag => { Format => 'Binary', Dimension => 23 }, unpacked => { len => 42, data => pack('C*', 0 .. 22) }, packed => pack('C*', 42, 0 .. 22) }, { member => '.data', tag => { Format => 'Binary', Dimension => '*' }, unpacked => { len => 42, data => pack('C*', 0 .. 100) }, packed => pack('C*', 42, 0 .. 100) }, { member => '.data', tag => { Format => 'Binary', Dimension => 'len' }, unpacked => { len => 42, data => pack('C*', 0 .. 41) }, packed => pack('C*', 42, 0 .. 41) }, { member => '.data', tag => { Dimension => sub { is_deeply(\@_, [{len => 42, ($is_pack ? (data => [0 .. 51]) : ())}], 'params'); '52' } }, unpacked => { len => 42, data => [0 .. 51] }, packed => pack('C*', 42, 0 .. 51) }, { member => '.data', tag => { Dimension => sub { is_deeply(\@_, [{len => 42, ($is_pack ? (data => [0 .. 56]) : ())}], 'params'); my $a = '7'x13 . '57'; substr $a, 13; } }, unpacked => { len => 42, data => [0 .. 56] }, packed => pack('C*', 42, 0 .. 56) }, { member => '.data', tag => { Dimension => sub { is_deeply(\@_, [{len => 42, ($is_pack ? (data => [0 .. 52]) : ())}], 'params'); my $a = '7'x42 . '53' . '9'x11; substr $a, 42, 2; } }, unpacked => { len => 42, data => [0 .. 52] }, packed => pack('C*', 42, 0 .. 52) }, ); run_tests(\@types, \@tests); $data = pack "N*", 0 .. 100; @types = ( { type => 'array', raw_unpacked => [0 .. 6], raw_packed => pack('N*', 0 .. 6) }, { type => 'flex_array', raw_unpacked => [0 .. 100], raw_packed => pack('N*', 0 .. 100) }, ); @tests = ( { tag => { Dimension => 21 }, unpacked => [0 .. 20], packed => pack('N*', 0 .. 20) }, { tag => { Dimension => '*' }, unpacked => [0 .. 100], packed => pack('N*', 0 .. 100) }, { tag => { Dimension => sub { is_deeply(\@_, [], 'params'); 77 } }, unpacked => [0 .. 76], packed => pack('N*', 0 .. 76) }, { tag => { Dimension => [sub { is_deeply(\@_, [], 'params'); 78 }] }, unpacked => [0 .. 77], packed => pack('N*', 0 .. 77) }, { tag => { Dimension => [sub { is_deeply(\@_, [1, 2, 3], 'params'); 79 }, 1, 2, 3] }, unpacked => [0 .. 78], packed => pack('N*', 0 .. 78) }, { tag => { Dimension => [sub { is_deeply(\@_, [$c, 42], 'params'); 80 }, $c->arg('SELF'), 42] }, unpacked => [0 .. 79], packed => pack('N*', 0 .. 79) }, { tag => { Format => 'Binary', Dimension => 23 }, unpacked => pack('N*', 0 .. 22), packed => pack('N*', 0 .. 22) }, { tag => { Format => 'Binary', Dimension => '*' }, unpacked => pack('N*', 0 .. 100), packed => pack('N*', 0 .. 100) }, { tag => { Dimension => sub { is_deeply(\@_, [], 'params'); '52' } }, unpacked => [0 .. 51], packed => pack('N*', 0 .. 51) }, { tag => { Dimension => sub { is_deeply(\@_, [], 'params'); my $a = '7'x13 . '57'; substr $a, 13; } }, unpacked => [0 .. 56], packed => pack('N*', 0 .. 56) }, { tag => { Dimension => sub { is_deeply(\@_, [], 'params'); my $a = '7'x42 . '53' . '9'x11; substr $a, 42, 2; } }, unpacked => [0 .. 52], packed => pack('N*', 0 .. 52) }, ); run_tests(\@types, \@tests); $c->clean->parse(<<'ENDC'); struct outer { struct inner { struct { char c; } a; char b[2]; } i; char array[]; }; ENDC { my($u, @warn); local $SIG{__WARN__} = sub { push @warn, @_ }; # --- test normal case --- $c->tag('outer.array', Dimension => 'i.b[0]'); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is_deeply(\@warn, [], 'unpack outer warnings'); is_deeply($u, { i => { a => { c => 13 }, b => [ 42, 7 ] }, array => [0 .. 41] }, 'unpack outer results'); # --- test for missing parent --- @warn = (); $u = eval { $c->unpack('outer.array', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer.array'); is(scalar @warn, 1, 'unpack outer.array warnings'); like($warn[0], qr/^Missing parent to look up 'i\.b\[0\]'/, 'unpack outer.array warnings'); is_deeply($u, [], 'unpack outer.array results'); # --- test for unexpectedly wrong type --- @warn = (); $c->tag('outer.i.b', Format => 'Binary'); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Expected an array reference to look up index '0' in 'i\.b\[0\]'/, 'unpack outer warnings'); is_deeply($u, { i => { a => { c => 13 }, b => pack("C*", 42, 7) }, array => [] }, 'unpack outer results'); $c->untag('outer.i.b', 'Format'); @warn = (); $c->tag('outer.array', Dimension => 'i.a.c'); $c->tag('outer.i.a', Format => 'Binary'); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Expected a hash reference to look up member 'c' in 'i\.a\.c'/, 'unpack outer warnings'); is_deeply($u, { i => { a => pack("C", 13), b => [ 42, 7 ] }, array => [] }, 'unpack outer results'); $c->untag('outer.i.a', 'Format'); # --- test for non-existent keys/indices --- @warn = (); $c->tag('outer.i.a', Hooks => { unpack => sub { return { d => 77 } } }); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Cannot find member 'c' in hash \(in 'i\.a\.c'\)/, 'unpack outer warnings'); is_deeply($u, { i => { a => { d => 77 }, b => [ 42, 7 ] }, array => [] }, 'unpack outer results'); $c->untag('outer.i.a', 'Hooks'); @warn = (); $c->tag('outer.array', Dimension => 'i.b[1]'); $c->tag('outer.i.b', Hooks => { unpack => sub { return [ 33 ] } }); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Cannot lookup index '1' in array of size '1' \(in 'i\.b\[1\]'\)/, 'unpack outer warnings'); is_deeply($u, { i => { a => { c => 13 }, b => [ 33 ] }, array => [] }, 'unpack outer results'); $c->untag('outer.i.a', 'Hooks'); # --- check for invalid type --- @warn = (); $c->tag('outer.i.b', Hooks => { unpack => sub { return [ 33, 'foobar' ] } }); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Cannot use a string value \('foobar'\) in 'i\.b\[1\]' as dimension/, 'unpack outer warnings'); is_deeply($u, { i => { a => { c => 13 }, b => [ 33, 'foobar' ] }, array => [] }, 'unpack outer results'); @warn = (); $c->tag('outer.i.b', Hooks => { unpack => sub { return [ 33, undef ] } }); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Cannot use an undefined value in 'i\.b\[1\]' as dimension/, 'unpack outer warnings'); is_deeply($u, { i => { a => { c => 13 }, b => [ 33, undef ] }, array => [] }, 'unpack outer results'); $c->untag('outer.i.b', 'Hooks'); } sub run_tests { my($types, $tests) = @_; for my $type (@$types) { for my $t (@$tests) { my($tag, $u, $p); my $member = $t->{member} || ''; $tag = eval { $c->tag("$type->{type}$member", 'Dimension') }; is($@, '', 'get dimension tag'); is($tag, undef, 'compare dimension tag'); $is_pack = 0; $u = eval { $c->unpack($type->{type}, $data) }; is($@, '', 'unpack untagged'); is_deeply($u, $type->{raw_unpacked}, 'unpack raw'); $is_pack = 1; $p = eval { $c->pack($type->{type}, $u) }; is($@, '', 'pack untagged'); is($p, $type->{raw_packed}, 'pack raw'); eval { $c->tag("$type->{type}$member", %{$t->{tag}}) }; is($@, '', 'set tags'); $tag = eval { $c->tag("$type->{type}$member", 'Dimension') }; is($@, '', 'get dimension tag'); is_deeply($tag, $t->{tag}{Dimension}, 'compare dimension tag'); $tag = eval { $c->tag("$type->{type}$member") }; is($@, '', 'get all tags'); is_deeply($tag, $t->{tag}, 'compare tags'); $is_pack = 0; $u = eval { $c->unpack($type->{type}, $data) }; is($@, '', 'unpack tagged'); is_deeply($u, $t->{unpacked}, 'unpack'); $is_pack = 1; $p = eval { $c->pack($type->{type}, $u) }; is($@, '', 'pack tagged'); is($p, $t->{packed}, 'pack'); $c = eval { $c->clone }; is($@, '', 'clone tags'); $tag = eval { $c->tag("$type->{type}$member", 'Dimension') }; is($@, '', 'get dimension tag after clone'); is_deeply($tag, $t->{tag}{Dimension}, 'compare dimension tag after clone'); $tag = eval { $c->tag("$type->{type}$member") }; is($@, '', 'get all tags after clone'); is_deeply($tag, $t->{tag}, 'compare tags after clone'); $is_pack = 0; $u = eval { $c->unpack($type->{type}, $data) }; is($@, '', 'unpack tagged after clone'); is_deeply($u, $t->{unpacked}, 'unpack after clone'); $is_pack = 1; $p = eval { $c->pack($type->{type}, $u) }; is($@, '', 'pack tagged after clone'); is($p, $t->{packed}, 'pack after clone'); eval { $c->tag("$type->{type}$member", map { ($_ => undef) } keys %{$t->{tag}}) }; is($@, '', 'unset tags'); $tag = eval { $c->tag("$type->{type}$member", 'Dimension') }; is($@, '', 'get dimension tag'); is($tag, undef, 'compare dimension tag'); $is_pack = 0; $u = eval { $c->unpack($type->{type}, $data) }; is($@, '', 'unpack untagged'); is_deeply($u, $type->{raw_unpacked}, 'unpack raw'); } } } Convert-Binary-C-0.85/tests/703_bugs.t0000644000175000001440000000410714677003452016075 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 11; use Convert::Binary::C @ARGV; my $code = <new(ByteOrder => 'LittleEndian'); eval { $c1->parse($code); $c1->ByteOrder('BigEndian'); }; is($@, '', 'parse/configure'); my $c2 = Convert::Binary::C->new(ByteOrder => 'LittleEndian'); eval { $c2->ByteOrder('BigEndian'); $c2->parse($code); }; is($@, '', 'configure/parse'); my $data = pack "N", 0x60000003; for my $c ($c1, $c2) { my $t = $c->unpack('test', $data); is($t->{a}, 1, 'a'); is($t->{b}, 2, 'b'); is($t->{c}, 3, 'c'); } ### Ooops, the hash/list iterators were not reentrant... $c1->clean->parse(<<'ENDC'); struct hash { struct hash *a; struct hash *b; }; ENDC $c1->tag('hash', Hooks => { unpack_ptr => [\&unpack_hash, $c1->arg(qw(SELF TYPE DATA))] }); { my $i; sub unpack_hash { my($self, $type, $ptr) = @_; ++$i < 3 ? $self->unpack($type, $self->pack($type, { a => $i, b => 10 + $i })) : $ptr; } } { my @warn; local $SIG{__WARN__} = sub { push @warn, @_ }; my $dummy = $c1->unpack('hash', $c1->pack('hash', { a => 0, b => 10 })); is(scalar @warn, 0, 'hash/list iterator reentrancy'); ### An assertion in hook_call() could fail if a hook was called ### for a member that didn't actually exist in the hash. @warn = (); $dummy = $c1->unpack('hash', $c1->pack('hash', { a => 0 })); is(scalar @warn, 0, 'hook_call assertion failed'); } $c1->clean->parse(<<'ENDC'); typedef int foo_t; ENDC $c1->tag('foo_t', Hooks => { unpack => \&foo }); is($c1->unpack('foo_t', $c1->pack('foo_t', 42)), 42, 'unpack with moved stack'); sub blow_stack { return (1) x 2000; } sub foo { my @a = blow_stack(); $_[0]; } Convert-Binary-C-0.85/tests/cache/0000755000175000001440000000000014677003524015420 5ustar mhxusersConvert-Binary-C-0.85/tests/cache/header.20000644000175000001440000000011514676735310016734 0ustar mhxusers#ifndef HEADER_H #define HEADER_H struct _struct { int member; }; #endif Convert-Binary-C-0.85/tests/cache/cache.10000644000175000001440000000014514676735310016551 0ustar mhxusers#ifndef CACHE_H #define CACHE_H #include "header.h" #include "sub/dir.h" typedef int _int; #endif Convert-Binary-C-0.85/tests/cache/sub/0000755000175000001440000000000014677003524016211 5ustar mhxusersConvert-Binary-C-0.85/tests/cache/sub/dir.20000644000175000001440000000011214676735310017050 0ustar mhxusers#ifndef SUB_DIR_H #define SUB_DIR_H union _union { int sub; }; #endif Convert-Binary-C-0.85/tests/cache/sub/dir.10000644000175000001440000000011214676735310017047 0ustar mhxusers#ifndef SUB_DIR_H #define SUB_DIR_H union _union { int dir; }; #endif Convert-Binary-C-0.85/tests/cache/header.10000644000175000001440000000007714676735310016742 0ustar mhxusers#ifndef HEADER_H #define HEADER_H typedef char _char; #endif Convert-Binary-C-0.85/tests/cache/cache.20000644000175000001440000000012414676735310016547 0ustar mhxusers#ifndef CACHE_H #define CACHE_H #include "header.h" enum _enum { XXX }; #endif Convert-Binary-C-0.85/tests/241_sizeof.t0000644000175000001440000000402314677003452016426 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 71; use Convert::Binary::C @ARGV; my $c = Convert::Binary::C->new( IntSize => 4, CharSize => 1, Alignment => 1 ); eval { $c->parse(<<'ENDC'); struct normal { int a; char b[3]; char c[3][3][3]; }; struct flexible { int a; char b[]; }; ENDC }; is($@, '', "parse C code"); my @tests = ( [ 'normal.a' => 4 ], [ 'normal.b' => 3 ], [ 'normal.b[0]' => 1 ], [ 'normal.b[1]' => 1 ], [ 'normal.b[2]' => 1 ], [ 'normal.b[3]' => 1 ], [ 'normal.b[4]' => 1 ], [ 'normal.b[+4]' => 1 ], [ 'normal.b[+1000000]' => 1 ], [ 'normal.b[-0]' => 1 ], [ 'normal.b[-1]' => 1 ], [ 'normal.b[-2]' => 1 ], [ 'normal.b[-3]' => 1 ], [ 'normal.b[-4]' => 1 ], [ 'normal.b[-5]' => 1 ], [ 'normal.b[-1000000]' => 1 ], [ 'normal.c[-10]' => 9 ], [ 'normal.c[-10][-10]' => 3 ], [ 'normal.c[-9][-9][-9]' => 1 ], [ 'flexible.a' => 4 ], [ 'flexible.b' => 0 ], [ 'flexible.b[0]' => 1 ], [ 'flexible.b[1]' => 1 ], [ 'flexible.b[2]' => 1 ], [ 'flexible.b[3]' => 1 ], [ 'flexible.b[4]' => 1 ], [ 'flexible.b[+4]' => 1 ], [ 'flexible.b[+1000000]' => 1 ], [ 'flexible.b[-0]' => 1 ], [ 'flexible.b[-1]' => 1 ], [ 'flexible.b[-2]' => 1 ], [ 'flexible.b[-3]' => 1 ], [ 'flexible.b[-4]' => 1 ], [ 'flexible.b[-5]' => 1 ], [ 'flexible.b[-1000000]' => 1 ], ); for my $t (@tests) { my $size = eval { $c->sizeof($t->[0]) }; is($@, '', "eval { sizeof($t->[0]) }"); is($size, $t->[1], "sizeof($t->[0]) == $t->[1]"); } Convert-Binary-C-0.85/tests/101_basic.t0000644000175000001440000002310614677003452016206 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Convert::Binary::C @ARGV; $^W = 1; print "1..211\n"; { my $__ntest; sub ok ($;$$) { local($\,$,); my $ok = 0; my $result = shift; if (@_ == 0) { $ok = $result; } else { $expected = shift; if (!defined $expected) { $ok = !defined $result; } elsif (!defined $result) { $ok = 0; } elsif (ref($expected) eq 'Regexp') { die "using regular expression objects is not backwards compatible"; } else { $ok = $result eq $expected; } } ++$__ntest; if ($ok) { print "ok $__ntest\n" } else { print "not ok $__ntest\n" } } } #=================================================================== # perform some average stuff #=================================================================== eval { $p = Convert::Binary::C->new( PointerSize => 4, EnumSize => 4, IntSize => 4, LongSize => 4, Alignment => 2, ByteOrder => 'BigEndian', EnumType => 'String' ); $q = Convert::Binary::C->new; }; ok($@,''); #----------------------------------- # create some average ( ?? :-) code #----------------------------------- $code = <<'CCODE'; #define ONLY_ONE 1 typedef struct abc abc_type; typedef struct never ever; struct abc { abc_type *p1; #if ONLY_ONE > 1 abc_type *p2; #endif }; typedef unsigned long u32; #define Day( which ) \ which ## DAY typedef enum { Day( MON ), Day( TUES ), Day( WEDNES ), } day; # \ define __SIX__ \ ( sizeof( unsigned char * ) + sizeof( short ) ) # define SIXTEEN \ (sizeof "Hello\"\xfworld\069!") typedef union zap { signed long za[__SIX__]; short zb[SIXTEEN]; char zc[sizeof(struct never (*[2][3])[4])]; ever *zd[sizeof( abc_type )]; } ZAP; CCODE #----------------------- # try to parse the code #----------------------- eval { $p->parse( $code ); $q->parse( $code ); }; ok($@,''); #------------------------ # reconfigure the parser #------------------------ eval { $p->configure( Alignment => 8, EnumSize => 0 ); }; ok($@,''); #-------------------------------- # and parse some additional code #-------------------------------- $code = <<'CCODE'; typedef struct { abc_type xxx; u32 dusel, *fusel; int musel[((1<<1)+4)&0x00000002]; union { char bytes[(12/2)%4][(0x10|010)>>3]; day today; long value; } test; struct ints fubar; union zap hello; } husel; #pragma pack( push, 1 ) struct packer { char i; short am; char really; long packed; }; #pragma pack( pop ) struct nopack { char i; short am; char not; long packed; }; CCODE $c99_code = <<'CCODE' . $code; #define \ MYINTS( ... \ ) { int __VA_ARGS__; } struct ints MYINTS( a, b, c ); CCODE #----------------------- # try to parse the code #----------------------- eval { $q->HasMacroVAARGS( 0 ); $q->parse( $c99_code ); }; ok($@ =~ /invalid macro argument/); eval { $p->parse( $c99_code ) }; ok($@,''); #------------------------ # reconfigure the parser #------------------------ eval { $p->Alignment( 4 ) }; ok($@,''); #------------------- # test some offsets #------------------- ok($p->offsetof('packer', 'i'), 0); ok($p->offsetof('packer', 'am'), 1); ok($p->offsetof('packer', 'really'), 3); ok($p->offsetof('packer', 'packed'), 4); ok($p->offsetof('nopack', 'i'), 0); ok($p->offsetof('nopack', 'am'), 2); ok($p->offsetof('nopack', 'not'), 4); ok($p->offsetof('nopack', 'packed'), 8); #------------------------ # now try some unpacking #------------------------ # on a pack()ed struct $data = pack( 'cnCN', -47, 0x1234, 0x55, 2000000000 ); eval { $result = $p->unpack( 'packer', $data ) }; ok($@,''); $refres = { i => -47, am => 0x1234, really => 0x55, packed => 2000000000, }; reccmp( $refres, $result ); # on a 'normal' struct $data = pack( 'cxnCx3N', -47, 0x1234, 0x55, 2000000000 ); eval { $result = $p->unpack( 'nopack', $data ) }; ok($@,''); $refres = { 'i' => -47, 'am' => 0x1234, 'not' => 0x55, 'packed' => 2000000000, }; reccmp( $refres, $result ); #----------------------- # test something bigger #----------------------- $data = pack( "N5c8N3C48", 123, 4711, 0xDEADBEEF, -42, 42, 1, 0, 0, 0, -2, 3, 0, 0, -10000, 5000, 8000, 1..48 ); eval { $result = $p->unpack( 'husel', $data ) }; ok($@,''); eval { undef $p }; ok($@,''); $refres = { xxx => { p1 => 123 }, dusel => 4711, fusel => 0xDEADBEEF, musel => [ -42, 42 ], test => { bytes => [ [ 1, 0, 0 ], [ 0, -2, 3 ] ], today => 'TUESDAY', value => 16777216, }, fubar => { a => -10000, b => 5000, c => 8000, }, hello => { za => [16909060, 84281096, 151653132, 219025168, 286397204, 353769240], zb => [258, 772, 1286, 1800, 2314, 2828, 3342, 3856, 4370, 4884, 5398, 5912, 6426, 6940, 7454, 7968], zc => [1..24], zd => [16909060, 84281096, 151653132, 219025168], }, }; reccmp( $refres, $result ); #------------------------------------------------ # test pack/unpack/sizeof/typeof for basic types #------------------------------------------------ $p = Convert::Binary::C->new; @tests = ( ['char', $p->CharSize ], ['short', $p->ShortSize ], ['int', $p->IntSize ], ['long', $p->LongSize ], ['long long', $p->LongLongSize ], ['float', $p->FloatSize ], ['double', $p->DoubleSize ], ['long double', $p->LongDoubleSize], ); for( @tests ) { my $size = eval { $p->sizeof( $_->[0] ) }; ok( $@, '' ); ok( $size, $_->[1] ); } check_basic( $p ); # must work without parse data, too $p->clean; check_basic( $p ); #-------------------------------- # test offsetof in strange cases #-------------------------------- eval { $p->configure( IntSize => 4 , LongSize => 4 , PointerSize => 4 , EnumSize => 4 , Alignment => 4 )->parse(<offsetof( $_->[0], $_->[1] ) }; ok( $@, '' ); ok( $off, $_->[2] ); } ok( scalar @warn, 1 ); ok( $warn[0] =~ /^Empty string passed as member expression/ ); #------------------------------ # some simple tests for member #------------------------------ @tests = ( ['foo', '.ary[0].x', 4], ['foo.ary[2]', '.x', 0], ['foo.ary[2]', '.y', 4], ['foo.ary', '[2].y', 20], ['foo.aryary[2]', '[2].y', 20], ['a', '[9]', 36], ['test', '.zap[5].day', 64], ['test.zap[2]', '.day', 4], ['test', '.zap[5].day+1', 65], ); @warn = (); ok( $@, '' ); for( @tests ) { my @m = eval { $p->member( $_->[0], $_->[2] ) }; ok( $@, '' ); ok( scalar @m, 1 ); ok( $m[0], $_->[1] ); } ok( scalar @warn, 0 ); #------------------------------ # test 64-bit negative numbers #------------------------------ $p->clean->parse(<LongLongSize(8); for my $bo (qw( BigEndian LittleEndian )) { $p->ByteOrder($bo); my $x = $p->pack('i_64', -1); ok($x, pack('C*', (255)x8)); } sub check_basic { my $c = shift; for my $t ( 'signed char' , 'unsigned short int' , 'long int' , 'signed int' , 'long long' ) { ok( eval { $c->typeof( $t ) }, $t ); ok( eval { $c->sizeof( $t ) } > 0 ); ok( eval { $c->unpack( $t, $c->pack($t, 42) ) }, 42 ); } } sub reccmp { my($ref, $val) = @_; my $id = ref $ref; unless( $id ) { ok( $ref, $val ); return; } if( $id eq 'ARRAY' ) { ok( @$ref == @$val ); for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ); } } elsif( $id eq 'HASH' ) { ok( @{[keys %$ref]} == @{[keys %$val]} ); for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ); } } } #------------ # test hooks #------------ $p->ByteOrder('BigEndian'); $p->clean->parse(<<'ENDC'); typedef unsigned long u_32; struct String { u_32 len; char buf[]; }; ENDC sub string_pack { { len => length $_[0], buf => [unpack 'c*', $_[0]] } } sub string_unpack { pack "c$_[0]->{len}", @{$_[0]->{buf}} } $p->tag('String', Hooks => { 'pack' => \&string_pack, 'unpack' => \&string_unpack }); $data = pack("N", 4) . "FOO!"; $unpacked = eval { $p->unpack('String', $data) }; ok($@, ''); ok($unpacked, 'FOO!'); $packed = eval { $p->pack('String', $unpacked) }; ok($@, ''); ok($packed, $data); Convert-Binary-C-0.85/tests/214_cache.t0000644000175000001440000002777714677003452016217 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Carp; use Convert::Binary::C @ARGV; use Convert::Binary::C::Cached; $^W = 1; BEGIN { $tests = 72; plan tests => $tests; } $thisfile = quotemeta "at $0"; { local @INC; eval { require IO::File }; $IO_File = $@; eval { require Data::Dumper }; $Data_Dumper = $@; } { my @warn; local $SIG{__WARN__} = sub { push @warn, $_[0] }; carp 'xxx'; # carp must already be working @warn = (); # throw it away... local @INC; # let's pretend we don't have anything my $what = join ' and ', ($Data_Dumper ? ('Data::Dumper') : ()), ($IO_File ? ('IO::File') : ()); my $c = eval { Convert::Binary::C::Cached->new( Cache => 'xxx' ) }; ok( scalar @warn, 1 ); ok( $warn[0], qr/Cannot load $what, disabling cache $thisfile/ ); } eval { require IO::File }; $IO_File = $@; { my @warn; local $SIG{__WARN__} = sub { push @warn, $_[0] }; local @INC; my $what = join ' and ', ($Data_Dumper ? ('Data::Dumper') : ()), ($IO_File ? ('IO::File') : ()); my $c = eval { Convert::Binary::C::Cached->new( Cache => 'xxx' ) }; ok( scalar @warn, 1 ); ok( $warn[0], qr/Cannot load $what, disabling cache $thisfile/ ); } eval { require Data::Dumper }; $Data_Dumper = $@; if( $Data_Dumper or $IO_File ) { my $req; $req = 'IO::File' if $IO_File; $req = 'Data::Dumper' if $Data_Dumper; $req = 'Data::Dumper and IO::File' if $Data_Dumper && $IO_File; skip( "caching requires $req", 0 ) for 5 .. $tests; # silence the memory test ;-) eval { Convert::Binary::C->new->parse("enum { XXX };") }; exit; } *main::copy = sub { my($from, $to) = @_; -e $to and unlink $to || die $!; my $fh = IO::File->new; my $th = IO::File->new; local $/; $fh->open("<$from") and binmode $fh and $th->open(">$to") and binmode $th or die $!; $th->print( $fh->getline ); $fh->close and $th->close or die $!; -e $to or die $!; }; $cache = 'tests/cache.cbc'; #------------------------------------------------------------------------------ # check some basic stuff first -e $cache and unlink $cache || die $!; eval { $c = Convert::Binary::C::Cached->new( Cache => [$cache], Include => ['tests/cache'] ); }; ok( $@, qr/Cache must be a string value, not a reference at \Q$0/ ); eval { $c = Convert::Binary::C::Cached->new( Cache => $cache, Include => ['tests/cache'] ); }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( 'enum { XXX };' ); }; ok($@,'',"failed to parse code"); eval { $c->parse_file( 'tests/include/include.c' ); }; ok( $@, qr/Cannot parse more than once for cached objects at \Q$0/ ); #------------------------------------------------------------------------------ # check what happens if the cache file cannot be created eval { $c = Convert::Binary::C::Cached->new( Cache => 'abc/def/ghi/jkl/mno.pqr', Include => ['tests/cache'] ); }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( 'enum { XXX };' ); }; ok( $@, qr/Cannot open 'abc\/def\/ghi\/jkl\/mno\.pqr':\s*.*?\s*at \Q$0/ ); #------------------------------------------------------------------------------ -e $cache and unlink $cache || die $!; cleanup(); # copy initial set of files copy( qw( tests/cache/cache.1 tests/cache/cache.h ) ); copy( qw( tests/cache/header.1 tests/cache/header.h ) ); copy( qw( tests/cache/sub/dir.1 tests/cache/sub/dir.h ) ); # create reference object @config = ( Include => ['tests/cache'], KeywordMap => {'__inline__' => 'inline', '__restrict__' => undef }, ); eval { $r = Convert::Binary::C->new( @config ) }; ok($@,'',"failed to create reference Convert::Binary::C object"); push @config, Cache => $cache; eval { $c = Convert::Binary::C::Cached->new( @config ) }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse_file( 'tests/cache/cache.h' ); $r->parse_file( 'tests/cache/cache.h' ); }; ok($@,'',"failed to parse files"); # object shouldn't be using the cache file ok( $c->__uses_cache, 0, "object is using cache file" ); # check if both objects are equivalent ok( compare( $r, $c ) ); ok( -e $cache ); #------------------------------------------------------------------------------ # this new object should now use the cache file eval { $c = Convert::Binary::C::Cached->new( @config ) }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse_file( 'tests/cache/cache.h' ); }; ok($@,'',"failed to parse files"); # object should be using the cache file ok( $c->__uses_cache, 1, "object isn't using cache file" ); ok( compare( $r, $c ) ); #------------------------------------------------------------------------------ # check if a changes in the files are detected for( qw( tests/cache/sub/dir tests/cache/header tests/cache/cache ) ) { # 'dir' files are the same size, so check by timestamp /dir/ and sleep 2; copy( "$_.2", "$_.h" ); /dir/ and sleep 2; eval { $c = Convert::Binary::C::Cached->new( @config ) }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $r->clean->parse_file( 'tests/cache/cache.h' ); $c->parse_file( 'tests/cache/cache.h' ); }; ok($@,'',"failed to parse files"); # can't use cache ok( $c->__uses_cache, 0, "object is using cache file" ); ok( compare( $r, $c ) ); eval { $c = Convert::Binary::C::Cached->new( @config ) }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse_file( 'tests/cache/cache.h' ); }; ok($@,'',"failed to parse files"); # should use cache ok( $c->__uses_cache, 1, "object is not using cache file" ); ok( compare( $r, $c ) ); } #------------------------------------------------------------------------------ # changing the way we're parsing should trigger re-parsing eval { $c = Convert::Binary::C::Cached->new( @config ) }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $r->clean->parse( <<'ENDC' ); #include "cache.h" ENDC $c->parse( <<'ENDC' ); #include "cache.h" ENDC }; ok($@,'',"failed to parse"); # can't use cache ok( $c->__uses_cache, 0, "object is using cache file" ); ok( compare( $r, $c ) ); eval { $c = Convert::Binary::C::Cached->new( @config ) }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( <<'ENDC' ); #include "cache.h" ENDC }; ok($@,'',"failed to parse files"); # should use cache ok( $c->__uses_cache, 1, "object is not using cache file" ); ok( compare( $r, $c ) ); #------------------------------------------------------------------------------ # changing the embedded code should trigger re-parsing eval { $c = Convert::Binary::C::Cached->new( @config ) }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $r->clean->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC $c->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC }; ok($@,'',"failed to parse"); # can't use cache ok( $c->__uses_cache, 0, "object is using cache file" ); ok( compare( $r, $c ) ); eval { $c = Convert::Binary::C::Cached->new( @config ) }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC }; ok($@,'',"failed to parse files"); # should use cache ok( $c->__uses_cache, 1, "object is not using cache file" ); ok( compare( $r, $c ) ); #------------------------------------------------------------------------------ # changing the configuration should trigger re-parsing push @config, Define => ['BAR']; eval { $c = Convert::Binary::C::Cached->new( @config ) }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $r->clean->Define(['BAR'])->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC $c->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC }; ok($@,'',"failed to parse"); # can't use cache ok( $c->__uses_cache, 0, "object is using cache file" ); ok( compare( $r, $c ) ); eval { $c = Convert::Binary::C::Cached->new( @config ) }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC }; ok($@,'',"failed to parse files"); # should use cache ok( $c->__uses_cache, 1, "object is not using cache file" ); ok( compare( $r, $c ) ); #------------------------------------------------------------------------------ -e $cache and unlink $cache || die $!; cleanup(); #------------------------------------------------------------------------------ # check cache file corruption $code = 'typedef int foo;'; eval { $c = Convert::Binary::C::Cached->new( Cache => $cache ) }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( $code ) }; ok($@,'',"failed to parse"); # can't use cache ok( $c->__uses_cache, 0, "object is using cache file" ); undef $c; $cache_file = do { local $/; IO::File->new($cache)->getline }; $cache_file =~ s{/\*.*?\*/}{ }gs; # strip comments $fail = 0; $size = length($cache_file) - 5; for( $pos = 0; $pos < $size; $pos++ ) { $corrupted = $cache_file; # corrupt the file substr $corrupted, $pos, 5, "\n?!'§\$\n\%&\n}="; IO::File->new(">$cache")->print($corrupted); @warn = (); { local $SIG{__WARN__} = sub { push @warn, $_[0] }; eval { $c = Convert::Binary::C::Cached->new( Cache => $cache ) }; if( $@ ne '' ) { $@ =~ s/^/# /gm; print "# failed to create Convert::Binary::C::Cached object\n$@"; $fail++; } eval { $c->parse( $code ) }; if( $@ ne '' ) { $@ =~ s/^/# /gm; print "# failed to create Convert::Binary::C::Cached object\n$@"; $fail++; } } defined $c or next; # can't use cache if( $c->__uses_cache != 0 ) { $corrupted =~ s/^/# /gm; print "# object is using corrupted cache file\n$corrupted"; $fail++; } # no warnings, please for( @warn ) { s/^/# /gm; print "# warning during object creation / parsing:\n$_"; $fail++; } } ok( $fail, 0, "corrupted cache files not handled correctly" ); #------------------------------------------------------------------------------ -e $cache and unlink $cache || die $!; cleanup(); #------------------------------------------------------------------------------ sub cleanup { for( qw( tests/cache/cache.h tests/cache/header.h tests/cache/sub/dir.h ) ) { -e and unlink || die $!; } } sub compare { my($ref, $obj) = @_; my $refcfg = $ref->configure; my $objcfg = $obj->configure; delete $_->{Cache} for $refcfg, $objcfg; print "# compare configurations...\n"; reccmp( $refcfg, $objcfg ) or return 0; my $refdep = $ref->dependencies; my $objdep = $obj->dependencies; print "# compare dependencies...\n"; reccmp( $refdep, $objdep ) or return 0; for( qw( enum_names compound_names struct_names union_names typedef_names ) ) { print "# compare $_ method...\n"; reccmp( [sort $ref->$_()], [sort $obj->$_()] ) or return 0; } for my $meth ( qw( enum compound struct union typedef ) ) { print "# compare $meth method...\n"; my $i; my %ref = map { ($i = $_->{identifier} || $_->{declarator}) ? ($i => $_) : (); } $ref->$meth(); my %obj = map { ($i = $_->{identifier} || $_->{declarator}) ? ($i => $_) : (); } $obj->$meth(); reccmp( [sort keys %ref], [sort keys %obj] ) or return 0; reccmp( [@ref{sort keys %ref}], [@obj{sort keys %obj}] ) or return 0; } return 1; } sub reccmp { my($ref, $val) = @_; unless( defined $ref and defined $val ) { return defined($ref) == defined($val); } ref $ref or return $ref eq $val; if( ref $ref eq 'ARRAY' ) { @$ref == @$val or return 0; for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ) or return 0; } } elsif( ref $ref eq 'HASH' ) { @{[keys %$ref]} == @{[keys %$val]} or return 0; for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ) or return 0; } } else { return 0 } return 1; } Convert-Binary-C-0.85/tests/233_tags.t0000644000175000001440000001513514677003452016074 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 148 } my $c = Convert::Binary::C->new; eval { $c->parse(<tag('string', 'Format') }; ok($@, ''); ok(not defined $rv); eval { $c->tag('string', Format => 'String') }; ok($@, ''); $rv = eval { $c->tag('string', 'Format') }; ok($@, ''); ok($rv, 'String'); $rv = eval { $c->tag('string') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'String'); eval { $c->tag('test.data', Format => 'Binary') }; ok($@, ''); $rv = eval { $c->tag('test.data', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('test.data') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); eval { $c->tag('xxx', Format => 'Binary') }; ok($@, ''); $rv = eval { $c->tag('xxx', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('xxx') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); eval { $c->tag('test.binary', Format => 'Binary') }; ok($@, ''); $rv = eval { $c->tag('test.binary', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('test.binary') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); my $d = $c->clone; $rv = eval { $d->tag('test.binary', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $d->tag('test.binary') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); $rv = eval { $d->tag('string', 'Format') }; ok($@, ''); ok($rv, 'String'); $rv = eval { $d->tag('string') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'String'); $rv = eval { $d->tag('test.data', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $d->tag('test.data') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); $rv = eval { $d->tag('xxx', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $d->tag('xxx') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); eval { $d->tag('test.binary', Format => undef) }; ok($@, ''); $rv = eval { $d->tag('test.binary', 'Format') }; ok($@, ''); ok(not defined $rv); $rv = eval { $d->tag('test.binary') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 0); eval { $d->untag('string', 'Format') }; ok($@, ''); $rv = eval { $d->tag('string', 'Format') }; ok($@, ''); ok(not defined $rv); $rv = eval { $d->tag('string') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 0); eval { $d->untag('test.data', 'Format') }; ok($@, ''); $rv = eval { $d->tag('test.data', 'Format') }; ok($@, ''); ok(not defined $rv); $rv = eval { $d->tag('test.data') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 0); eval { $d->untag('xxx') }; ok($@, ''); $rv = eval { $d->tag('xxx', 'Format') }; ok($@, ''); ok(not defined $rv); $rv = eval { $d->tag('xxx') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 0); $rv = eval { $c->tag('test.binary', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('test.binary') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); $rv = eval { $c->tag('string', 'Format') }; ok($@, ''); ok($rv, 'String'); $rv = eval { $c->tag('string') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'String'); $rv = eval { $c->tag('test.data', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('test.data') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); $rv = eval { $c->tag('xxx', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('xxx') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); my $sub = sub { @_ }; eval { $c->tag('xxx', 'Hooks', { unpack => $sub, pack => [$sub, 42] }) }; ok($@, ''); $rv = eval { $c->tag('xxx', 'Hooks') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 2); ok($rv->{unpack}, $sub); ok(ref $rv->{pack}, 'ARRAY'); ok(@{$rv->{pack}}, 2); ok($rv->{pack}[0], $sub); ok($rv->{pack}[1], 42); $rv = eval { $c->tag('xxx') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 2); ok($rv->{Format}, 'Binary'); ok(ref $rv->{Hooks}, 'HASH'); eval { $c->tag('xxx', 'Hooks', { pack => undef }) }; ok($@, ''); $rv = eval { $c->tag('xxx', 'Hooks') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{unpack}, $sub); eval { $c->tag('xxx', 'Hooks', { unpack => undef }) }; ok($@, ''); $rv = eval { $c->tag('xxx', 'Hooks') }; ok($@, ''); ok(not defined $rv); ### test that tagging test.mc.x also tags c.x $c->clean->parse(<tag('test.ma', Format => 'Binary') ->tag('test.mb', Format => 'Binary') ->tag('test.mc', Format => 'Binary'); }; ok($@, ''); for my $i (qw( a b c )) { $rv = eval { $c->tag($i, 'Format') }; ok(not defined $rv); } eval { $c->tag('test.mc.x', Format => 'String'); $c->tag('test.mc', Format => undef); }; ok($@, ''); $rv = eval { $c->tag('test.mc', 'Format') }; ok(not defined $rv); $rv = eval { $c->tag('test.mc.x', 'Format') }; ok($rv, 'String'); $rv = eval { $c->tag('c.x', 'Format') }; ok($rv, 'String'); ### test multiple tags $c->clean; eval { $c->tag('int', Format => 'Binary', Hooks => { pack => sub { $_[0] } }, Format => 'String') }; ok($@, ''); $rv = eval { $c->tag('int') }; ok($@, ''); ok(join(',', sort keys %$rv), 'Format,Hooks'); $rv = eval { $c->untag('int') }; ok($@, ''); $rv = eval { $c->tag('int') }; ok($@, ''); ok(join(',', sort keys %$rv), ''); eval { $c->tag('int', Format => 'Binary', Hooks => { pack => sub { $_[0] } }, Format => 'String') }; ok($@, ''); $rv = eval { $c->tag('int') }; ok($@, ''); ok(join(',', sort keys %$rv), 'Format,Hooks'); $rv = eval { $c->untag('int', 'Format') }; ok($@, ''); $rv = eval { $c->tag('int') }; ok($@, ''); ok(join(',', sort keys %$rv), 'Hooks'); $rv = eval { $c->tag('int', Hooks => { pack => undef }) }; ok($@, ''); $rv = eval { $c->tag('int') }; ok($@, ''); ok(join(',', sort keys %$rv), ''); Convert-Binary-C-0.85/tests/224_typeof.t0000644000175000001440000000506714677003452016447 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 31 } ($code, $tests) = split /-{40,}/, do { local $/; }, 2; @tests = map { chomp; /^\s*(.*?)\s*=>\s*(.*?)\s*$/ ? { name => $1, type => $2 } : () } split $/, $tests; $c = eval { Convert::Binary::C->new }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $c->parse( $code ) }; ok($@,'',"failed to parse C code"); { my @warn; local $SIG{__WARN__} = sub { push @warn, $_[0] }; for my $t ( @tests ) { ok( $c->typeof($t->{name}), $t->{type} ); } ok( @warn == 0 ); } __DATA__ typedef unsigned char u_8; typedef unsigned int u_32; typedef unsigned int ary[10]; struct foo { u_8 a; union { u_32 a, b[10]; ary c, d[10], e[4][6]; char *f, *g[4][8], ****h[1][2][3]; } b; struct { u_8 a:1, b:2, c:3; u_32 d:4; signed short e:5; } c; struct { int d:16; int *e; }; }; ------------------------------------------------------------------------------- u_8 => u_8 u_32 => u_32 ary => ary foo => struct foo foo.a => u_8 foo.b => union foo.b.a => u_32 foo.b.b => u_32 [10] foo.b.b[5] => u_32 foo.b.c => ary foo.b.d => ary [10] foo.b.d[5] => ary foo.b.e => ary [4][6] foo.b.e[2] => ary [6] foo.b.e[2][2] => ary foo.b.f => char * foo.b.g => char * [4][8] foo.b.g[2] => char * [8] foo.b.g[2][4] => char * foo.b.h => char * [1][2][3] struct foo.c => struct struct foo.c.a => u_8 :1 struct foo.c.b => u_8 :2 struct foo.c.c => u_8 :3 struct foo.c.d => u_32 :4 struct foo.c.e => signed short :5 struct foo.d => int :16 struct foo.e => int * Convert-Binary-C-0.85/tests/compiler/0000755000175000001440000000000014677003524016167 5ustar mhxusersConvert-Binary-C-0.85/tests/compiler/gcc-vax.dat0000644000175000001440000003612414676735310020223 0ustar mhxusers$data = { 'eb' => 33042, 'fx' => 1453454497, 'da' => [ { 'cv' => -8470, 'cx' => 4065694214, 'cw' => [ 3646993096 ], 'cu' => [ 24422 ], 'cy' => 69 }, { 'cv' => -112, 'cx' => 4289608902, 'cw' => [ 3507473466 ], 'cu' => [ 3330 ], 'cy' => 60 }, { 'cv' => 27971, 'cx' => 3817828220, 'cw' => [ 3042769697 ], 'cu' => [ -5009 ], 'cy' => 101 } ], 'hn' => 221, 'gl' => { 'gg' => -119, 'gj' => [ [ '-1698363511' ], [ 2139717096 ], [ 283925104 ] ], 'gi' => '-1698363511', 'gk' => '-1698363511', 'gh' => 1929, 'gf' => -119 }, 'ci' => -8310, 'fe' => [ 210 ], 'hb' => [ [ -119 ], [ 7 ], [ -59 ] ], 'fc' => 1625800891, 'dk' => '-1698363511', 'co' => -19084, 'hs' => -43, 'br' => [ [ 451873221, 3431669721, 3819781490 ], [ 205690005, 3659866367, 883228442 ] ], 'aq' => [ { 'ah' => 1104804060, 'ao' => 35620, 'af' => -24, 'ac' => [ [ [ -79 ], [ -43 ] ], [ [ 119 ], [ -108 ] ] ], 'al' => 205, 'ag' => 283925104, 'ak' => 14555, 'ad' => -119, 'am' => 5943, 'ae' => [ 7, -59, -102 ], 'ai' => '-1169352395', 'aj' => '-1857403377', 'ap' => 19333, 'an' => -35 }, { 'ah' => '-1638279364', 'ao' => 2812, 'af' => -80, 'ac' => [ [ [ 49 ], [ 35 ] ], [ [ 64 ], [ -118 ] ] ], 'al' => 159, 'ag' => '-1971492706', 'ak' => 53917, 'ad' => 18, 'am' => 7070, 'ae' => [ -127, -48, -15 ], 'ai' => 1059623973, 'aj' => -959367187, 'ap' => 39101, 'an' => -117 } ], 'hd' => 32649, 'bo' => -20003, 'hm' => { 'hi' => 17935, 'he' => [ [ 2437563919, 3519887579, 2257524535 ] ], 'hg' => 70, 'hj' => 15, 'hl' => 15, 'hf' => 15, 'hh' => 74, 'hk' => 15 }, 'ck' => 30266, 'bv' => 40, 'cs' => '4275385485998040910', 'gq' => [ [ 32232 ], [ 32649 ], [ 23152 ] ], 'ge' => 1929, 'fv' => -5, 'dm' => 283925104, 'bu' => 234, 'gr' => 4332, 'dh' => -21778, 'ct' => '7358948062991019136', 'hy' => 112, 'ga' => -79, 'gb' => '9190014952608696201', 'bt' => 154, 'hx' => [ { 'hv' => 137, 'hw' => [ 1929, -25915 ], 'hu' => [ 137, 7 ] }, { 'hv' => 232, 'hw' => [ 32232, 32649 ], 'hu' => [ 232, 125 ] } ], 'hp' => 2490881457, 'fa' => [ [ '5797081148219157812', '7233832230674433908' ] ], 'dv' => '-7294415733973854799', 'fh' => 157, 'dn' => 63708, 'il' => [ [ 73 ], [ -43 ] ], 'eg' => -32494, 'dx' => 61904, 'ho' => 238, 'cb' => -69, 'fr' => '2098090816323483130', 'ey' => [ [ -95 ] ], 'in' => 101, 'id' => '4745097306471946864', 'ic' => 283925104, 'ft' => 117, 'ff' => 3303, 'dd' => 156, 'by' => 3177714254, 'fi' => 229, 'ab' => 2072042261, 'gs' => '13424413780790081756', 'fj' => -135819843, 'dq' => 65, 'cg' => -69, 'ei' => 4056973586, 'cj' => 21576, 'ii' => 112, 'ha' => { 'gx' => [ [ 1929 ], [ 39621 ] ], 'gw' => 1929, 'gt' => 137, 'gy' => -119, 'gv' => 1929, 'gz' => [ -119 ], 'gu' => 1929 }, 'fp' => [ 30202, 13688 ], 'fb' => 587, 'ew' => [ 101, 229 ], 'fq' => [ 30202 ], 'fn' => 30202, 'ee' => 18, 'cd' => 49339, 'fl' => 207, 'dz' => 67, 'fy' => 177, 'eo' => { 'en' => 38468, 'em' => 6301, 'ek' => 4056973586, 'el' => [ [ 54741424, 2323474590, 2656687932 ], [ 1059623973, 3335600109, 1100993181 ], [ 569449374, 184327563, 3578370237 ] ] }, 'cp' => [ [ 28985, 42437, 24350 ] ], 'cm' => 1598288917, 'go' => 197, 'ik' => -104, 'bw' => 211, 'gd' => '9190014952608696201', 'bq' => [ [ [ 900346509, 2044239698, 1590324914 ], [ 586541272, 2249331324, 1959956239 ], [ 4061947339, 513495162, 2776790208 ] ], [ [ 2706357079, 1502090350, 424246020 ], [ 1115641729, 1846246744, 728463933 ], [ 2592855392, 557189436, 1546607427 ] ] ], 'jg' => [ [ 177, 213, 119 ] ], 'db' => [ 51612, 21991 ], 'cn' => 192, 'du' => -10831, 'ia' => [ [ [ [ 23152, 4332 ], [ -1828, 16857 ], [ 6453, -17843 ] ], [ [ 17935, -28342 ], [ 14555, -11827 ], [ 5943, -31089 ] ] ], [ [ [ -4387, -29916 ], [ 19333, 30288 ], [ 9009, -30144 ] ], [ [ -32494, -3632 ], [ 18864, 835 ], [ 26782, -30083 ] ] ], [ [ [ -10436, -24999 ], [ -27611, 16168 ], [ 14317, -14639 ] ], [ [ -11619, 16799 ], [ 7070, 8689 ], [ -25205, 2812 ] ] ] ], 'cr' => 13076, 'df' => 22993, 'ec' => 18, 'bm' => { 'bd' => [ [ 3022020820 ] ], 'bf' => [ [ [ 33915, 11134, 46543 ], [ 52598, 17392, 32729 ], [ 46798, 29843, 3586 ] ], [ [ 12981, 40804, 1301 ], [ 12081, 7278, 39919 ], [ 48426, 51384, 13169 ] ], [ [ 59799, 6037, 24015 ], [ 24319, 27099, 33815 ], [ 17141, 53368, 50145 ] ] ], 'av' => [ [ [ '-5917589509072090794' ], [ '-3517184698816979796' ], [ '9184791393365892276' ] ] ], 'ba' => '-1188165290', 'ax' => 2390, 'au' => [ '-5917589509072090794', '-3517184698816979796', '9184791393365892276' ], 'bh' => [ '-1886259075' ], 'bb' => 1060, 'az' => '-1188165290', 'at' => 3106802006, 'bc' => 3879822417, 'bi' => '-2570992891286271639', 'bg' => [ [ '-1534013393', 2074126298 ], [ '-1157974443', '-1106982141' ] ], 'aw' => 86, 'bj' => '7018668238016483271', 'ay' => '-1188165290', 'ar' => 86, 'bk' => '532371374579594273', 'as' => 3106802006, 'be' => 43 }, 'aa' => 1813862590, 'ez' => '3958983604041784051', 'bz' => 260423867, 'dw' => 18, 'ih' => 112, 'fw' => [ 32912, 39273 ], 'eh' => [ [ -32494, -3632, 18864 ], [ 835, 26782, -30083 ], [ -10436, -24999, -27611 ] ], 'fk' => 1302064629, 'di' => 177, 'ip' => 237, 'ht' => 119, 'ea' => 18, 'bs' => -881643804, 'gm' => 137, 'ch' => -69, 'gc' => '9190014952608696201', 'fd' => 1441434115, 'dr' => 2490881457, 'ca' => -69, 'ej' => 4056973586, 'dg' => 10548, 'ds' => [ [ [ [ 2490881457, 2596603785 ] ], [ [ 2139717096, 283925104 ] ] ], [ [ [ 1104804060, 3125614901 ] ], [ [ 2437563919, 3519887579 ] ] ], [ [ [ 2257524535, 2334453469 ] ], [ [ 1984973701, 2319459121 ] ] ] ], 'hq' => 2490881457, 'ef' => [ [ -237993710 ], [ 54741424 ], [ '-1971492706' ] ], 'fu' => 128, 'jh' => [ -520889640, 524659027 ], 'bx' => 78, 'fo' => 250, 'cc' => 49339, 'io' => 229, 'fs' => [ [ [ -2 ] ], [ [ -45 ] ], [ [ -45 ] ] ], 'ie' => '4745097306471946864', 'dc' => 51612, 'cf' => [ [ -69, -64 ], [ -123, 15 ] ], 'im' => '-1773922147', 'cz' => { 'cv' => 30052, 'cx' => 800641439, 'cw' => [ 851702984 ], 'cu' => [ -10701 ], 'cy' => 110 }, 'hc' => 32232, 'hr' => -79, 'de' => [ [ 156, 201 ], [ 231, 85 ], [ 224, 105 ] ], 'ed' => 18, 'gn' => 1929, 'dl' => 2139717096, 'bp' => 5843, 'fm' => 22, 'dp' => 217, 'cl' => [ -5, -84, -45 ], 'dt' => -10831, 'hz' => 23152, 'ce' => 49339, 'dy' => 18864, 'bn' => { 'bd' => [ [ 4146136261 ] ], 'bf' => [ [ [ 61187, 32786, 55795 ], [ 32804, 57619, 37097 ], [ 45581, 30343, 60816 ] ], [ [ 51818, 10905, 42253 ], [ 35690, 14005, 52495 ], [ 42725, 35847, 56759 ] ], [ [ 24170, 5225, 57177 ], [ 3310, 9443, 35798 ], [ 18901, 40956, 32639 ] ] ], 'av' => [ [ [ '7551698136708176645' ], [ '3005342382823534582' ], [ '-4550755308030725155' ] ] ], 'ba' => -646423803, 'ax' => 23301, 'au' => [ '7551698136708176645', '3005342382823534582', '-4550755308030725155' ], 'bh' => [ -258127364 ], 'bb' => 29019, 'az' => -646423803, 'at' => 3648543493, 'bc' => 2322753043, 'bi' => '3078284265242826209', 'bg' => [ [ -404193131, 1850694677 ], [ 106207382, 1430946350 ] ], 'aw' => 5, 'bj' => '-4523024573676977781', 'ay' => -646423803, 'ar' => 5, 'bk' => '2933542312339974700', 'as' => 3648543493, 'be' => 45 }, 'ev' => { 'et' => -25205, 'er' => [ [ 208, 241, 176 ], [ 73, 67, 3 ] ], 'ep' => 18, 'eu' => 2812, 'es' => [ [ '-1971492706', '-1638279364', 1059623973 ], [ -959367187, 1100993181, 569449374 ] ], 'eq' => 129 }, 'ib' => 283925104, 'cq' => 50389, 'gp' => 154, 'ex' => 237, 'ig' => 112, 'fz' => '11152328339735696817', 'dj' => 213, 'jf' => { 'jc' => 488499835, 'it' => 116, 'jb' => [ [ [ [ -27, -12 ], [ 102, 31 ], [ -67, -115 ] ], [ [ -25, -9 ], [ -11, -19 ], [ -101, 77 ] ], [ [ -49, 22 ], [ 65, 77 ], [ -6, 117 ] ] ] ], 'je' => 64384, 'iz' => 11449, 'is' => '5797081148219157812', 'iu' => [ 7, 31, 90 ], 'iv' => [ [ [ 22 ] ] ], 'iy' => 3303, 'ir' => [ [ -16767 ], [ 8860 ], [ 14065 ] ], 'ja' => '507288954116516048', 'iw' => '6982761658581058123', 'iq' => [ [ 14497 ], [ -2856 ], [ -25869 ] ], 'jd' => 54270, 'ix' => '18360951184290384387' }, 'ij' => -67, 'fg' => [ [ 11449 ], [ 10448 ], [ -19304 ] ], 'bl' => { 'bd' => [ [ 1684257814 ] ], 'bf' => [ [ [ 29425, 49339, 24807 ], [ 35331, 21994, 13266 ], [ 65231, 3303, 11449 ] ], [ [ 10448, 46232, 16541 ], [ 1802, 62693, 8038 ], [ 36285, 63463, 60917 ] ], [ [ 19867, 5839, 19777 ], [ 30202, 13688, 60027 ], [ 7453, 54270, 30163 ] ] ], 'av' => [ [ [ '4894820594497099933' ], [ '-4719320561932027743' ], [ '988378714258612892' ] ] ], 'ba' => '-1773922147', 'ax' => 6301, 'au' => [ '4894820594497099933', '-4719320561932027743', '988378714258612892' ], 'bh' => [ '-1360537812' ], 'bb' => 24215, 'az' => '-1773922147', 'at' => 2521045149, 'bc' => 1511982964, 'bi' => '-9123895743154195528', 'bg' => [ [ '-2137982080', '-1325098647' ], [ 1453454497, '-2031371734' ] ], 'aw' => -99, 'bj' => '-6070101717751556699', 'ay' => '-1773922147', 'ar' => -99, 'bk' => '-4721352756025612679', 'as' => 2521045149, 'be' => 75 } }; Convert-Binary-C-0.85/tests/compiler/gcc-arm.dat0000644000175000001440000003612414676735310020204 0ustar mhxusers$data = { 'eb' => 33042, 'fx' => 1453454497, 'da' => [ { 'cv' => -8470, 'cx' => 4065694214, 'cw' => [ 3646993096 ], 'cu' => [ 24422 ], 'cy' => 69 }, { 'cv' => -112, 'cx' => 4289608902, 'cw' => [ 3507473466 ], 'cu' => [ 3330 ], 'cy' => 60 }, { 'cv' => 27971, 'cx' => 3817828220, 'cw' => [ 3042769697 ], 'cu' => [ -5009 ], 'cy' => 101 } ], 'hn' => 221, 'gl' => { 'gg' => -119, 'gj' => [ [ '-1698363511' ], [ 2139717096 ], [ 283925104 ] ], 'gi' => '-1698363511', 'gk' => '-1698363511', 'gh' => 1929, 'gf' => -119 }, 'ci' => -8310, 'fe' => [ 210 ], 'hb' => [ [ -119 ], [ 7 ], [ -59 ] ], 'fc' => 1625800891, 'dk' => '-1698363511', 'co' => -19084, 'hs' => -43, 'br' => [ [ 451873221, 3431669721, 3819781490 ], [ 205690005, 3659866367, 883228442 ] ], 'aq' => [ { 'ah' => 1104804060, 'ao' => 35620, 'af' => -24, 'ac' => [ [ [ -79 ], [ -43 ] ], [ [ 119 ], [ -108 ] ] ], 'al' => 205, 'ag' => 283925104, 'ak' => 14555, 'ad' => -119, 'am' => 5943, 'ae' => [ 7, -59, -102 ], 'ai' => '-1169352395', 'aj' => '-1857403377', 'ap' => 19333, 'an' => -35 }, { 'ah' => '-1638279364', 'ao' => 2812, 'af' => -80, 'ac' => [ [ [ 49 ], [ 35 ] ], [ [ 64 ], [ -118 ] ] ], 'al' => 159, 'ag' => '-1971492706', 'ak' => 53917, 'ad' => 18, 'am' => 7070, 'ae' => [ -127, -48, -15 ], 'ai' => 1059623973, 'aj' => -959367187, 'ap' => 39101, 'an' => -117 } ], 'hd' => 32649, 'bo' => -20003, 'hm' => { 'hi' => 17935, 'he' => [ [ 2437563919, 3519887579, 2257524535 ] ], 'hg' => 70, 'hj' => 15, 'hl' => 15, 'hf' => 15, 'hh' => 74, 'hk' => 15 }, 'ck' => 30266, 'bv' => 40, 'cs' => '4275385485998040910', 'gq' => [ [ 32232 ], [ 32649 ], [ 23152 ] ], 'ge' => 1929, 'fv' => -5, 'dm' => 283925104, 'bu' => 234, 'gr' => 4332, 'dh' => -9512, 'ct' => '7358948062991019136', 'hy' => 112, 'ga' => -79, 'gb' => '9190014952608696201', 'bt' => 154, 'hx' => [ { 'hv' => 137, 'hw' => [ 1929, -25915 ], 'hu' => [ 137, 7 ] }, { 'hv' => 232, 'hw' => [ 32232, 32649 ], 'hu' => [ 232, 125 ] } ], 'hp' => 2490881457, 'fa' => [ [ '5797081148219157812', '7233832230674433908' ] ], 'dv' => '-7294415733973854799', 'fh' => 157, 'dn' => 63708, 'il' => [ [ 73 ], [ -43 ] ], 'eg' => -32494, 'dx' => 61904, 'ho' => 238, 'cb' => -69, 'fr' => '2098090816323483130', 'ey' => [ [ -95 ] ], 'in' => 101, 'id' => '4745097306471946864', 'ic' => 283925104, 'ft' => 117, 'ff' => 3303, 'dd' => 156, 'by' => 3177714254, 'fi' => 229, 'ab' => 2072042261, 'gs' => '13424413780790081756', 'fj' => -135819843, 'dq' => 65, 'cg' => -69, 'ei' => 4056973586, 'cj' => 21576, 'ii' => 112, 'ha' => { 'gx' => [ [ 1929 ], [ 39621 ] ], 'gw' => 1929, 'gt' => 137, 'gy' => -119, 'gv' => 1929, 'gz' => [ -119 ], 'gu' => 1929 }, 'fp' => [ 30202, 13688 ], 'fb' => 587, 'ew' => [ 101, 229 ], 'fq' => [ 30202 ], 'fn' => 30202, 'ee' => 18, 'cd' => 49339, 'fl' => 207, 'dz' => 67, 'fy' => 177, 'eo' => { 'en' => 38468, 'em' => 6301, 'ek' => 4056973586, 'el' => [ [ 54741424, 2323474590, 2656687932 ], [ 1059623973, 3335600109, 1100993181 ], [ 569449374, 184327563, 3578370237 ] ] }, 'cp' => [ [ 28985, 42437, 24350 ] ], 'cm' => 1598288917, 'go' => 197, 'ik' => -104, 'bw' => 211, 'gd' => '9190014952608696201', 'bq' => [ [ [ 900346509, 2044239698, 1590324914 ], [ 586541272, 2249331324, 1959956239 ], [ 4061947339, 513495162, 2776790208 ] ], [ [ 2706357079, 1502090350, 424246020 ], [ 1115641729, 1846246744, 728463933 ], [ 2592855392, 557189436, 1546607427 ] ] ], 'jg' => [ [ 177, 213, 119 ] ], 'db' => [ 51612, 21991 ], 'cn' => 192, 'du' => -10831, 'ia' => [ [ [ [ 23152, 4332 ], [ -1828, 16857 ], [ 6453, -17843 ] ], [ [ 17935, -28342 ], [ 14555, -11827 ], [ 5943, -31089 ] ] ], [ [ [ -4387, -29916 ], [ 19333, 30288 ], [ 9009, -30144 ] ], [ [ -32494, -3632 ], [ 18864, 835 ], [ 26782, -30083 ] ] ], [ [ [ -10436, -24999 ], [ -27611, 16168 ], [ 14317, -14639 ] ], [ [ -11619, 16799 ], [ 7070, 8689 ], [ -25205, 2812 ] ] ] ], 'cr' => 13076, 'df' => 10548, 'ec' => 18, 'bm' => { 'bd' => [ [ 3022020820 ] ], 'bf' => [ [ [ 33915, 11134, 46543 ], [ 52598, 17392, 32729 ], [ 46798, 29843, 3586 ] ], [ [ 12981, 40804, 1301 ], [ 12081, 7278, 39919 ], [ 48426, 51384, 13169 ] ], [ [ 59799, 6037, 24015 ], [ 24319, 27099, 33815 ], [ 17141, 53368, 50145 ] ] ], 'av' => [ [ [ '-5917589509072090794' ], [ '-3517184698816979796' ], [ '9184791393365892276' ] ] ], 'ba' => '-1188165290', 'ax' => 2390, 'au' => [ '-5917589509072090794', '-3517184698816979796', '9184791393365892276' ], 'bh' => [ '-1886259075' ], 'bb' => 1060, 'az' => '-1188165290', 'at' => 3106802006, 'bc' => 3879822417, 'bi' => '-2570992891286271639', 'bg' => [ [ '-1534013393', 2074126298 ], [ '-1157974443', '-1106982141' ] ], 'aw' => 86, 'bj' => '7018668238016483271', 'ay' => '-1188165290', 'ar' => 86, 'bk' => '532371374579594273', 'as' => 3106802006, 'be' => 43 }, 'aa' => 1813862590, 'ez' => '3958983604041784051', 'bz' => 260423867, 'dw' => 18, 'ih' => 112, 'fw' => [ 32912, 39273 ], 'eh' => [ [ -32494, -3632, 18864 ], [ 835, 26782, -30083 ], [ -10436, -24999, -27611 ] ], 'fk' => 1302064629, 'di' => 177, 'ip' => 237, 'ht' => 119, 'ea' => 18, 'bs' => -881643804, 'gm' => 137, 'ch' => -69, 'gc' => '9190014952608696201', 'fd' => 1441434115, 'dr' => 2490881457, 'ca' => -69, 'ej' => 4056973586, 'dg' => -21778, 'ds' => [ [ [ [ 2490881457, 2596603785 ] ], [ [ 2139717096, 283925104 ] ] ], [ [ [ 1104804060, 3125614901 ] ], [ [ 2437563919, 3519887579 ] ] ], [ [ [ 2257524535, 2334453469 ] ], [ [ 1984973701, 2319459121 ] ] ] ], 'hq' => 2490881457, 'ef' => [ [ -237993710 ], [ 54741424 ], [ '-1971492706' ] ], 'fu' => 128, 'jh' => [ 524659027, 1682216844 ], 'bx' => 78, 'fo' => 250, 'cc' => 49339, 'io' => 229, 'fs' => [ [ [ -2 ] ], [ [ -45 ] ], [ [ -45 ] ] ], 'ie' => '4745097306471946864', 'dc' => 51612, 'cf' => [ [ -69, -64 ], [ -123, 15 ] ], 'im' => '-1773922147', 'cz' => { 'cv' => 30052, 'cx' => 800641439, 'cw' => [ 851702984 ], 'cu' => [ -10701 ], 'cy' => 110 }, 'hc' => 32232, 'hr' => -79, 'de' => [ [ 156, 201 ], [ 231, 85 ], [ 224, 105 ] ], 'ed' => 18, 'gn' => 1929, 'dl' => 2139717096, 'bp' => 5843, 'fm' => 22, 'dp' => 217, 'cl' => [ -5, -84, -45 ], 'dt' => -10831, 'hz' => 23152, 'ce' => 49339, 'dy' => 18864, 'bn' => { 'bd' => [ [ 4146136261 ] ], 'bf' => [ [ [ 61187, 32786, 55795 ], [ 32804, 57619, 37097 ], [ 45581, 30343, 60816 ] ], [ [ 51818, 10905, 42253 ], [ 35690, 14005, 52495 ], [ 42725, 35847, 56759 ] ], [ [ 24170, 5225, 57177 ], [ 3310, 9443, 35798 ], [ 18901, 40956, 32639 ] ] ], 'av' => [ [ [ '7551698136708176645' ], [ '3005342382823534582' ], [ '-4550755308030725155' ] ] ], 'ba' => -646423803, 'ax' => 23301, 'au' => [ '7551698136708176645', '3005342382823534582', '-4550755308030725155' ], 'bh' => [ -258127364 ], 'bb' => 29019, 'az' => -646423803, 'at' => 3648543493, 'bc' => 2322753043, 'bi' => '3078284265242826209', 'bg' => [ [ -404193131, 1850694677 ], [ 106207382, 1430946350 ] ], 'aw' => 5, 'bj' => '-4523024573676977781', 'ay' => -646423803, 'ar' => 5, 'bk' => '2933542312339974700', 'as' => 3648543493, 'be' => 45 }, 'ev' => { 'et' => -25205, 'er' => [ [ 208, 241, 176 ], [ 73, 67, 3 ] ], 'ep' => 18, 'eu' => 2812, 'es' => [ [ '-1971492706', '-1638279364', 1059623973 ], [ -959367187, 1100993181, 569449374 ] ], 'eq' => 129 }, 'ib' => 283925104, 'cq' => 50389, 'gp' => 154, 'ex' => 237, 'ig' => 112, 'fz' => '11152328339735696817', 'dj' => 213, 'jf' => { 'jc' => 488499835, 'it' => 116, 'jb' => [ [ [ [ -27, -12 ], [ 102, 31 ], [ -67, -115 ] ], [ [ -25, -9 ], [ -11, -19 ], [ -101, 77 ] ], [ [ -49, 22 ], [ 65, 77 ], [ -6, 117 ] ] ] ], 'je' => 64384, 'iz' => 11449, 'is' => '5797081148219157812', 'iu' => [ 7, 31, 90 ], 'iv' => [ [ [ 22 ] ] ], 'iy' => 3303, 'ir' => [ [ -16767 ], [ 8860 ], [ 14065 ] ], 'ja' => '507288954116516048', 'iw' => '6982761658581058123', 'iq' => [ [ 14497 ], [ -2856 ], [ -25869 ] ], 'jd' => 54270, 'ix' => '18360951184290384387' }, 'ij' => -67, 'fg' => [ [ 11449 ], [ 10448 ], [ -19304 ] ], 'bl' => { 'bd' => [ [ 1684257814 ] ], 'bf' => [ [ [ 29425, 49339, 24807 ], [ 35331, 21994, 13266 ], [ 65231, 3303, 11449 ] ], [ [ 10448, 46232, 16541 ], [ 1802, 62693, 8038 ], [ 36285, 63463, 60917 ] ], [ [ 19867, 5839, 19777 ], [ 30202, 13688, 60027 ], [ 7453, 54270, 30163 ] ] ], 'av' => [ [ [ '4894820594497099933' ], [ '-4719320561932027743' ], [ '988378714258612892' ] ] ], 'ba' => '-1773922147', 'ax' => 6301, 'au' => [ '4894820594497099933', '-4719320561932027743', '988378714258612892' ], 'bh' => [ '-1360537812' ], 'bb' => 24215, 'az' => '-1773922147', 'at' => 2521045149, 'bc' => 1511982964, 'bi' => '-9123895743154195528', 'bg' => [ [ '-2137982080', '-1325098647' ], [ 1453454497, '-2031371734' ] ], 'aw' => -99, 'bj' => '-6070101717751556699', 'ay' => '-1773922147', 'ar' => -99, 'bk' => '-4721352756025612679', 'as' => 2521045149, 'be' => 75 } }; Convert-Binary-C-0.85/tests/compiler/gcc-hp64.dat0000644000175000001440000003772514676735310020216 0ustar mhxusers$data = { 'eb' => 39970, 'fx' => 717076680, 'da' => [ { 'cv' => -1929, 'cx' => '10054466689425556838', 'cw' => [ '10123391286775830020' ], 'cu' => [ 28240 ], 'cy' => 64 }, { 'cv' => 21074, 'cx' => '15538654922648866099', 'cw' => [ '15354438908448995364' ], 'cu' => [ -16426 ], 'cy' => -89 }, { 'cv' => -21470, 'cx' => '17702204745004721994', 'cw' => [ '8314359226459201238' ], 'cu' => [ 26279 ], 'cy' => -28 } ], 'hn' => 37, 'gl' => { 'gg' => -36, 'gj' => [ [ -587671231 ], [ 890850746 ], [ 256264849 ] ], 'gi' => -587671231, 'gk' => -587671231, 'gh' => 56568, 'gf' => -36 }, 'ci' => -10223, 'fe' => [ 172 ], 'hb' => [ [ -36 ], [ -8 ], [ -39 ] ], 'fc' => '8729885816503040702', 'dk' => '-2524028717054210630', 'co' => -7561, 'hs' => 125, 'br' => [ [ '11297815496258867545', '3758797781567468512', '6028425578017145956' ], [ '1352509864231452777', '2966537792253143678', '13014323083424696762' ] ], 'aq' => [ { 'ah' => '3969799405962142859', 'ao' => 10303, 'af' => -36, 'ac' => [ [ [ -24 ], [ 125 ] ], [ [ -119 ], [ 127 ] ] ], 'al' => 125, 'ag' => '1100649149247311313', 'ak' => 40552, 'ad' => 112, 'am' => 15575, 'ae' => [ 90, -20, 16 ], 'ai' => '-8841884974851080054', 'aj' => '1333576701141664515', 'ap' => 60727, 'an' => 37 }, { 'ah' => '-6829470288336748098', 'ao' => 59232, 'af' => -117, 'ac' => [ [ [ -99 ], [ -46 ] ], [ [ -97 ], [ 65 ] ] ], 'al' => 99, 'ag' => '-7126870997568459453', 'ak' => 5820, 'ad' => -98, 'am' => 19202, 'ae' => [ 27, -15, 33 ], 'ai' => '-7195924039474497779', 'aj' => '-7539461936790429862', 'ap' => 906, 'an' => -69 } ], 'hd' => 19898, 'bo' => 15369, 'hm' => { 'hi' => 34123, 'he' => [ [ '9604859098858471562', '1333576701141664515', '11414511288250227102' ] ], 'hg' => 75, 'hj' => 133, 'hl' => 133, 'hf' => 133, 'hh' => 80, 'hk' => 133 }, 'ck' => -29230, 'bv' => 65, 'cs' => '18352833694778017032', 'gq' => [ [ 13593 ], [ 19898 ], [ 3910 ] ], 'ge' => -8968, 'fv' => 5, 'dm' => '3969799405962142859', 'bu' => 210, 'gr' => 19089, 'dh' => 27982, 'ct' => '15079725131178265402', 'hy' => 15, 'ga' => -24, 'gb' => '15922715356655340986', 'bt' => 108, 'hx' => [ { 'hv' => 112, 'hw' => [ 28762, -5104 ], 'hu' => [ 112, 90 ] }, { 'hv' => 220, 'hw' => [ -8968, -9919 ], 'hu' => [ 220, 248 ] } ], 'hp' => '16752697369326971920', 'fa' => [ [ '3079032256771647406', '-5155609485075979903' ] ], 'dv' => '-1694046704382579696', 'fh' => 36, 'dn' => 34123, 'il' => [ [ -40 ], [ -12 ] ], 'eg' => -25566, 'dx' => 61750, 'ho' => 148, 'cb' => 34, 'fr' => '15672472511825838606', 'ey' => [ [ -2 ] ], 'in' => 151, 'id' => '1100649149247311313', 'ic' => 256264849, 'ft' => -97, 'ff' => -19300, 'dd' => 21, 'by' => 2971584209, 'fi' => 212, 'ab' => '12814279794590467482', 'gs' => '3969799405962142859', 'fj' => 728267652, 'dq' => 118, 'cg' => 34, 'ei' => 2619535670, 'cj' => -806, 'ii' => 15, 'ha' => { 'gx' => [ [ 56568 ], [ 55617 ] ], 'gw' => 56568, 'gt' => 220, 'gy' => -36, 'gv' => -8968, 'gz' => [ -36 ], 'gu' => -8968 }, 'fp' => [ 55679, 52918 ], 'fb' => 42261, 'ew' => [ 250, 117 ], 'fq' => [ 55679 ], 'fn' => 55679, 'ee' => 156, 'cd' => 8781, 'fl' => 118, 'dz' => -73, 'fy' => 232, 'eo' => { 'en' => 39092, 'em' => 53288, 'ek' => 2619535670, 'el' => [ [ 879605517, 2539549520, 1946623834 ], [ 381444964, 1258484082, 3149981536 ], [ 59435605, 3526610942, 3876370732 ] ] }, 'cp' => [ [ 27861, 30777, 51839 ] ], 'cm' => -521750374, 'go' => 217, 'ik' => 56, 'bw' => 101, 'gd' => '15922715356655340986', 'bq' => [ [ [ '8231926886881837580', '18383735297612424244', '16442206607890852051' ], [ '5625674048647234831', '10006796423635860396', '15207876173506036575' ], [ '13837438176797509029', '2188702982054543839', '5631688191333913915' ] ], [ [ '9289835450052911206', '3735283397995840306', '11516188236013373041' ], [ '7376872957226934489', '473535409858407902', '147933788650606545' ], [ '14284484529359119646', '8064895168714333365', '8966543589944090438' ] ] ], 'jg' => [ [ 232, 125, 137 ] ], 'db' => [ 5443, 15595 ], 'cn' => 181, 'du' => -6019, 'ia' => [ [ [ [ 3910, 19089 ], [ -9416, -12847 ], [ 14103, -28794 ] ], [ [ -8722, 9355 ], [ -31413, 20598 ], [ 12579, 16522 ] ] ], [ [ [ 4737, -12047 ], [ -20407, 17155 ], [ -24984, 32138 ] ], [ [ 15575, 22942 ], [ 9620, 10303 ], [ -4809, -11834 ] ] ], [ [ [ -25134, -24767 ], [ -25061, -3807 ], [ -29795, -1014 ] ], [ [ -17000, 18901 ], [ -25320, 17558 ], [ 26085, -4797 ] ] ] ], 'cr' => 9990, 'df' => 7212, 'ec' => -100, 'bm' => { 'bd' => [ [ 2026955203 ] ], 'bf' => [ [ [ 41083, 21942, 64186 ], [ 971, 1214, 32248 ], [ 37263, 27081, 54090 ] ], [ [ 38655, 20956, 50959 ], [ 19059, 37713, 26465 ], [ 8500, 26574, 61788 ] ], [ [ 25351, 1371, 30937 ], [ 28933, 52584, 63087 ], [ 40804, 63774, 46377 ] ] ], 'av' => [ [ [ '-5390135169593822929' ], [ '7934480093236017352' ], [ '8157030379582639965' ] ] ], 'ba' => '-1254988641', 'ax' => 46386, 'au' => [ '-5390135169593822929', '7934480093236017352', '8157030379582639965' ], 'bh' => [ -989584905 ], 'bb' => 65374, 'az' => '-1254988641', 'at' => '13056608904115728687', 'bc' => 394589506, 'bi' => '1333333603647493089', 'bg' => [ [ -571270523, 679008448 ], [ 1534161506, 325481098 ] ], 'aw' => -75, 'bj' => '-1616777205797973779', 'ay' => '-1254988641', 'ar' => -75, 'bk' => '7695131319212534411', 'as' => '13056608904115728687', 'be' => 218 }, 'aa' => '13715745015217225851', 'ez' => '7609118206392050006', 'bz' => 575535605, 'dw' => 156, 'ih' => 15, 'fw' => [ 12591, 28188 ], 'eh' => [ [ -25566, -3786, 13421 ], [ -18675, -26786, 29520 ], [ 29703, 8026, 5820 ] ], 'fk' => 2116800437, 'di' => 232, 'ip' => 115, 'ht' => -119, 'ea' => -100, 'bs' => '-1352897850', 'gm' => 220, 'ch' => 34, 'gc' => '15922715356655340986', 'fd' => '6199537737133973677', 'dr' => '16752697369326971920', 'ca' => 34, 'ej' => 2619535670, 'dg' => 23927, 'ds' => [ [ [ [ '16752697369326971920', '15922715356655340986' ] ], [ [ '1100649149247311313', '3969799405962142859' ] ] ], [ [ [ '9604859098858471562', '1333576701141664515' ] ], [ [ '11414511288250227102', '2707833530984419782' ] ] ], [ [ [ '11372327113238245665', '10060474265676302805' ] ], [ [ '11319873076141092163', '11617273785372803518' ] ] ] ], 'hq' => '16752697369326971920', 'ef' => [ [ '-1675431626' ], [ 879605517 ], [ '-1755417776' ] ], 'fu' => 21, 'jh' => [ 778359115, 1512899928 ], 'bx' => -79, 'fo' => 217, 'cc' => 8781, 'io' => 94, 'fs' => [ [ [ -75 ] ], [ [ 50 ] ], [ [ 100 ] ] ], 'ie' => '1100649149247311313', 'dc' => 5443, 'cf' => [ [ 34, 77 ], [ -7, -11 ] ], 'im' => '-7195924039474497779', 'cz' => { 'cv' => 19028, 'cx' => '7681806890972468606', 'cw' => [ '14116029227902922143' ], 'cu' => [ 5649 ], 'cy' => 5 }, 'hc' => 13593, 'hr' => -24, 'de' => [ [ 21, 67 ], [ 60, 235 ], [ 167, 189 ] ], 'ed' => -100, 'gn' => -8968, 'dl' => '1100649149247311313', 'bp' => 50441, 'fm' => -51, 'dp' => 80, 'cl' => [ -9, -114, -88 ], 'dt' => -6019, 'hz' => 3910, 'ce' => 8781, 'dy' => 13421, 'bn' => { 'bd' => [ [ 358371182 ] ], 'bf' => [ [ [ 19029, 64585, 40432 ], [ 57621, 31187, 14915 ], [ 47146, 35585, 40767 ] ], [ [ 7677, 15041, 11306 ], [ 39620, 12297, 46632 ], [ 56753, 30746, 54038 ] ], [ [ 17265, 36146, 43573 ], [ 21151, 55417, 45678 ], [ 51806, 55528, 62754 ] ] ], 'av' => [ [ [ '-5389102527106644084' ], [ '-5197881441193272865' ], [ '-1293409245604358839' ] ] ], 'ba' => '-1254748211', 'ax' => 46390, 'au' => [ '-5389102527106644084', '-5197881441193272865', '-1293409245604358839' ], 'bh' => [ '-1066106203' ], 'bb' => 64671, 'az' => '-1254748211', 'at' => '13057641546602907532', 'bc' => 2508253415, 'bi' => '7932114759614941465', 'bg' => [ [ 2081559174, 261083764 ], [ -882565902, 2052102942 ] ], 'aw' => -75, 'bj' => '-9126686196913861778', 'ay' => '-1254748211', 'ar' => -75, 'bk' => '4429971017524677530', 'as' => '13057641546602907532', 'be' => 46 }, 'ev' => { 'et' => -2579, 'er' => [ [ 241, 54, 52 ], [ 109, 183, 13 ] ], 'ep' => -100, 'eu' => -25779, 'es' => [ [ '-7539461936790429862', '1638293646862381426', '-4917676393526269355' ], [ '-3300065408227428052', '-3447337613252359673', '-1876762858196441097' ] ], 'eq' => 34 }, 'ib' => 256264849, 'cq' => 23084, 'gp' => 65, 'ex' => 120, 'ig' => 15, 'fz' => '16752697369326971920', 'dj' => 125, 'jf' => { 'jc' => 694772097, 'it' => 208, 'jb' => [ [ [ [ 105, -103 ], [ 4, -79 ], [ -95, -12 ] ], [ [ -95, 86 ], [ 42, -70 ], [ -21, -122 ] ], [ [ 44, -41 ], [ -25, -82 ], [ -72, 115 ] ] ] ], 'je' => 31014, 'iz' => 30773, 'is' => '15146678665482123564', 'iu' => [ 40, 152, 180 ], 'iv' => [ [ [ 157 ] ] ], 'iy' => 64117, 'ir' => [ [ -3726 ], [ -17472 ], [ -6304 ] ], 'ja' => '-84491466361302912', 'iw' => '16569981215513110519', 'iq' => [ [ 5820 ], [ 25444 ], [ 19202 ] ], 'jd' => 42261, 'ix' => '17720990867261899085' }, 'ij' => -95, 'fg' => [ [ -23567 ], [ 7151 ], [ 30335 ] ], 'bl' => { 'bd' => [ [ 4202002485 ] ], 'bf' => [ [ [ 54133, 33019, 36992 ], [ 27033, 1201, 41460 ], [ 41302, 10938, 60294 ] ], [ [ 11479, 59310, 47219 ], [ 39037, 10601, 24961 ], [ 42261, 60930, 42666 ] ], [ [ 49835, 31014, 51429 ], [ 44642, 31422, 22025 ], [ 11961, 45439, 57517 ] ] ], 'av' => [ [ [ '-3300065408227428052' ], [ '-3447337613252359673' ], [ '-1876762858196441097' ] ] ], 'ba' => -768356354, 'ax' => 53811, 'au' => [ '-3300065408227428052', '-3447337613252359673', '-1876762858196441097' ], 'bh' => [ 604279997 ], 'bb' => 62957, 'az' => -768356354, 'at' => '15146678665482123564', 'bc' => 3474342221, 'bi' => '-3143476581710136444', 'bg' => [ [ '-1407413319', 645083343 ], [ '-1264802831', 468678271 ] ], 'aw' => -46, 'bj' => '9091588651066716227', 'ay' => -768356354, 'ar' => -46, 'bk' => '-2774271561883713010', 'as' => '15146678665482123564', 'be' => 254 } }; Convert-Binary-C-0.85/tests/compiler/gcc-hp64.cfg0000644000175000001440000001213014676735310020164 0ustar mhxusers%config = ( 'Define' => [ '_LP64=1', '_PA_RISC2_0=1', '__CHAR_BIT__=8', '__DBL_DIG__=15', '__DBL_EPSILON__=2.2204460492503131e-16', '__DBL_MANT_DIG__=53', '__DBL_MAX_10_EXP__=308', '__DBL_MAX_EXP__=1024', '__DBL_MAX__=1.7976931348623157e+308', '__DBL_MIN_10_EXP__=(-307)', '__DBL_MIN_EXP__=(-1021)', '__DBL_MIN__=2.2250738585072014e-308', '__DECIMAL_DIG__=36', '__ELF__=1', '__FLT_DIG__=6', '__FLT_EPSILON__=1.19209290e-7F', '__FLT_EVAL_METHOD__=0', '__FLT_MANT_DIG__=24', '__FLT_MAX_10_EXP__=38', '__FLT_MAX_EXP__=128', '__FLT_MAX__=3.40282347e+38F', '__FLT_MIN_10_EXP__=(-37)', '__FLT_MIN_EXP__=(-125)', '__FLT_MIN__=1.17549435e-38F', '__FLT_RADIX__=2', '__GNUC_MINOR__=3', '__GNUC_PATCHLEVEL__=0', '__GNUC__=3', '__INT_MAX__=2147483647', '__LDBL_DIG__=33', '__LDBL_EPSILON__=1.92592994438723585305597794258492732e-34L', '__LDBL_MANT_DIG__=113', '__LDBL_MAX_10_EXP__=4932', '__LDBL_MAX_EXP__=16384', '__LDBL_MAX__=1.18973149535723176508575932662800702e+4932L', '__LDBL_MIN_10_EXP__=(-4931)', '__LDBL_MIN_EXP__=(-16381)', '__LDBL_MIN__=3.36210314311209350626267781732175260e-4932L', '__LONG_LONG_MAX__=9223372036854775807LL', '__LONG_MAX__=9223372036854775807L', '__LP64__=1', '__NO_INLINE__=1', '__PTRDIFF_TYPE__=long int', '__SCHAR_MAX__=127', '__SHRT_MAX__=32767', '__SIZE_TYPE__=long unsigned int', '__WCHAR_TYPE__=unsigned int', '__WINT_TYPE__=unsigned int', '__builtin_va_list=int', '__gnu_linux__=1', '__hppa=1', '__hppa__=1', '__linux=1', '__linux__=1', '__unix=1', '__unix__=1', 'linux=1', 'unix=1' ], 'IntSize' => 4, 'LongSize' => 8, 'ByteOrder' => 'BigEndian', 'ShortSize' => 2, 'Assert' => [ 'cpu(hppa)', 'machine(bigendian)', 'machine(hppa)', 'system(posix)', 'system(unix)' ], 'UnsignedChars' => 0, 'DoubleSize' => 8, 'EnumSize' => 4, 'PointerSize' => 8, 'FloatSize' => 4, 'DisabledKeywords' => [ 'restrict' ], 'LongLongSize' => 8, 'Alignment' => 8, 'LongDoubleSize' => 16, 'KeywordMap' => { '__imag__' => undef, '__inline' => 'inline', '__complex__' => undef, '__volatile' => 'volatile', '__real' => undef, '__imag' => undef, '__restrict' => 'restrict', '__inline__' => 'inline', '__bounded__' => undef, '__asm' => 'asm', '__volatile__' => 'volatile', '__unbounded' => undef, '__extension__' => undef, '__signed' => 'signed', '__unbounded__' => undef, '__const' => 'const', '__const__' => 'const', '__signed__' => 'signed', '__real__' => undef, '__bounded' => undef, '__restrict__' => 'restrict', '__complex' => undef, '__asm__' => 'asm' }, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 ); Convert-Binary-C-0.85/tests/compiler/test.h0000644000175000001440000001716214676735310017332 0ustar mhxuserstypedef struct { unsigned long aa, ab; union { union { struct { struct { signed char ac[2][2][1], ad; signed char ae[3]; struct { signed char af; signed long ag, ah; signed long ai, aj; unsigned short ak; unsigned char al; signed short am; }; signed char an; unsigned short ao, ap; } aq[2]; struct { union { signed char ar; unsigned long as, at; signed long long au[3], av[1][3][1]; signed char aw; unsigned short ax; int ay, az, ba; }; struct { unsigned short bb; unsigned bc, bd[1][1]; }; struct { unsigned char be; unsigned short bf[3][3][3]; int bg[2][2], bh[1]; signed long long bi, bj, bk; }; } bl, bm, bn; signed short bo; struct { struct { unsigned short bp; unsigned long bq[2][3][3], br[2][3]; int bs; unsigned char bt, bu, bv; unsigned char bw; }; union { signed char bx; unsigned by; }; union { int bz; signed char ca, cb; unsigned short cc, cd; unsigned short ce; signed char cf[2][2], cg, ch; }; struct { signed short ci, cj, ck; signed char cl[3]; int cm; unsigned char cn; signed short co; unsigned short cp[1][3], cq, cr; }; unsigned long long cs, ct; struct { signed short cu[1]; signed short cv; unsigned long cw[1], cx; signed char cy; } cz, da[3]; }; struct { union { unsigned short db[2], dc; unsigned char dd, de[3][2]; }; signed short df, dg, dh; }; }; struct { union { struct { unsigned char di; unsigned char dj; signed long dk, dl, dm; unsigned short dn; unsigned char dp, dq; }; union { unsigned long dr, ds[3][2][1][2]; signed short dt, du; signed long long dv; }; }; union { struct { unsigned char dw; unsigned short dx, dy; signed char dz; }; union { signed char ea; unsigned short eb; }; union { signed char ec, ed; unsigned char ee; int ef[3][1]; signed short eg; signed short eh[3][3]; unsigned ei, ej; }; struct { unsigned ek, el[3][3]; unsigned short em, en; } eo; struct { signed char ep; unsigned char eq, er[2][3]; signed long es[2][3]; signed short et, eu; } ev; }; unsigned char ew[2], ex; struct { struct { signed char ey[1][1]; signed long long ez, fa[1][2]; unsigned short fb; unsigned long fc, fd; unsigned char fe[1]; }; signed short ff, fg[3][1]; }; unsigned char fh; struct { struct { unsigned char fi; int fj, fk; }; unsigned char fl; signed char fm; union { unsigned short fn; unsigned char fo; unsigned short fp[2], fq[1]; unsigned long long fr; }; signed char fs[3][1][1], ft; struct { unsigned char fu; signed char fv; unsigned short fw[2]; int fx; }; }; }; }; unsigned char fy; unsigned long long fz; union { struct { signed char ga; union { union { unsigned long long gb, gc, gd; signed short ge; }; union { signed char gf; signed char gg; unsigned short gh; int gi, gj[3][1], gk; } gl; unsigned char gm; struct { signed short gn; unsigned char go, gp; unsigned short gq[3][1]; unsigned short gr; unsigned long long gs; }; union { unsigned char gt; signed short gu; signed short gv; unsigned short gw, gx[2][1]; signed char gy, gz[1]; } ha; struct { signed char hb[3][1]; unsigned short hc, hd; }; }; union { unsigned long he[1][3]; struct { unsigned char hf, hg; unsigned char hh; }; union { unsigned short hi; unsigned char hj; }; unsigned char hk, hl; } hm; unsigned char hn, ho; }; unsigned long hp, hq; struct { struct { signed char hr, hs, ht; union { unsigned char hu[2]; unsigned char hv; signed short hw[2]; } hx[2]; union { unsigned char hy; signed short hz, ia[3][2][3][2]; int ib, ic; signed long long id, ie; unsigned char ig; unsigned char ih, ii; }; signed char ij, ik, il[2][1]; }; signed long im; unsigned char in, io, ip; struct { struct { signed short iq[3][1]; signed short ir[3][1]; unsigned long long is; unsigned char it, iu[3], iv[1][1][1]; unsigned long long iw, ix; unsigned short iy, iz; }; struct { signed long long ja; signed char jb[1][3][3][2]; unsigned jc; unsigned short jd; }; unsigned short je; } jf; }; }; unsigned char jg[1][3]; }; int jh[2]; } test; Convert-Binary-C-0.85/tests/compiler/gcc-vax.bin0000644000175000001440000000433414676735310020221 0ustar mhxusersbe 58 1d 6c 15 db 80 7b b1 d5 77 94 89 07 c5 9a e8 00 00 00 70 5a ec 10 dc f8 d9 41 35 19 4d ba 0f 46 4a 91 db 38 cd 00 37 17 00 00 dd 00 24 8b 85 4b 00 00 31 23 40 8a 12 81 d0 f1 b0 00 00 00 9e 68 7d 8a 3c d7 59 9e 25 94 28 3f ed 37 d1 c6 9d d2 9f 00 9e 1b 00 00 8b 00 fc 0a bd 98 00 00 9d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97 5e 00 00 74 07 1f 5a 16 bc 63 64 4b 00 f1 72 bb c0 e7 60 03 8a ea 55 d2 33 cf fe e7 0c b9 2c d0 28 98 b4 9d 40 0a 07 e5 f4 66 1f bd 8d e7 f7 f5 ed 9b 4d cf 16 41 4d fa 75 78 35 7b ea 1d 1d fe d3 d3 75 80 fb 90 80 69 99 04 b1 a1 f4 a1 56 2a ba eb 86 2c d7 e7 ae b8 73 98 7d 29 69 61 81 a5 15 ee 02 a6 aa c2 ab 79 26 c8 e5 ae 62 7a be 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 24 04 00 00 51 64 41 e7 d4 60 20 b4 2b 00 7b 84 7e 2b cf b5 76 cd f0 43 d9 7f ce b6 93 74 02 0e b5 32 64 9f 15 05 31 2f 6e 1c ef 9b 2a bd b8 c8 71 33 97 e9 95 17 cf 5d ff 5e db 69 17 84 f5 42 78 d0 e1 c3 2f d0 90 a4 da a7 a0 7b 55 b6 fa ba 03 cb 04 be 7d f8 91 8f 69 c9 d3 4a 96 ff 51 dc c7 0f 4a 73 93 51 67 61 21 34 67 ce f1 5c 63 07 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5b 71 00 00 13 66 72 8a c5 04 21 f7 2d 00 03 ef 12 80 f3 d9 24 80 13 e1 e9 90 0d b2 87 76 90 ed 6a ca 99 2a 0d a5 6a 8b b5 36 0f cd e5 a6 07 8c b7 dd 6a 5e 69 14 59 df ee 0c e3 24 d6 8b d5 49 fc 9f 7f 7f 95 80 e8 e7 15 5c 4f 6e 96 98 54 06 2e 82 4a 55 fc 49 9d f0 e1 15 79 d3 3a 43 b8 2a 8b 01 9f 3f 1d fd 3a c1 2c 2a 9a c4 30 09 b6 28 dd b1 00 00 d3 16 00 00 8d 32 aa 35 52 9f d8 79 b2 6e ca 5e d8 e8 f5 22 7c 12 12 86 0f 8f d2 74 cb 65 1c f2 7a 50 9b 1e c0 74 82 a5 57 bb 4f a1 6e 14 88 59 04 7b 49 19 81 57 7f 42 58 7d 0b 6e 3d 7a 6b 2b 60 d5 8b 9a 3c 09 36 21 43 5b 2f 5c c5 09 ef 1a d9 1f 8b cc 72 3d ad e3 95 94 42 0c ff 20 25 da 1a ff a4 34 e4 2e 73 cb 9a ea 28 d3 4e 00 00 00 bb c0 85 0f 8a df 48 54 3a 76 fb ac d3 00 00 00 15 f4 43 5f c0 00 74 b5 39 71 c5 a5 1e 5f d5 c4 14 33 00 00 4e 27 c6 92 72 38 55 3b 80 ec 20 1f 46 3c 20 66 33 d6 64 75 c8 f4 c3 32 9f d1 b8 2f 6e 00 00 00 66 5f ea de c8 b2 60 d9 06 92 55 f2 45 00 00 00 02 0d 90 ff 3a cc 0f d1 c6 3c ae ff 3c 00 00 00 6f ec 43 6d 21 fb 5c b5 7c 6f 8f e3 65 00 00 00 9c c9 e7 55 00 00 d1 59 34 29 ee aa d8 da f3 e0 53 a9 45 1f Convert-Binary-C-0.85/tests/compiler/gcc-vax.cfg0000644000175000001440000001163514676735310020212 0ustar mhxusers%config = ( 'Define' => [ '__CHAR_BIT__=8', '__DBL_DIG__=16', '__DBL_EPSILON__=2.77555756156289135e-17', '__DBL_MANT_DIG__=56', '__DBL_MAX_10_EXP__=38', '__DBL_MAX_EXP__=127', '__DBL_MAX__=1.70141183460469229e+38', '__DBL_MIN_10_EXP__=(-38)', '__DBL_MIN_EXP__=(-127)', '__DBL_MIN__=2.93873587705571877e-39', '__DECIMAL_DIG__=18', '__FLT_DIG__=6', '__FLT_EPSILON__=1.19209290e-7F', '__FLT_EVAL_METHOD__=0', '__FLT_MANT_DIG__=24', '__FLT_MAX_10_EXP__=38', '__FLT_MAX_EXP__=127', '__FLT_MAX__=1.70141173e+38F', '__FLT_MIN_10_EXP__=(-38)', '__FLT_MIN_EXP__=(-127)', '__FLT_MIN__=2.93873588e-39F', '__FLT_RADIX__=2', '__GNUC_MINOR__=3', '__GNUC_PATCHLEVEL__=0', '__GNUC__=3', '__INT_MAX__=2147483647', '__LDBL_DIG__=16', '__LDBL_EPSILON__=2.77555756156289135e-17L', '__LDBL_MANT_DIG__=56', '__LDBL_MAX_10_EXP__=38', '__LDBL_MAX_EXP__=127', '__LDBL_MAX__=1.70141183460469229e+38L', '__LDBL_MIN_10_EXP__=(-38)', '__LDBL_MIN_EXP__=(-127)', '__LDBL_MIN__=2.93873587705571877e-39L', '__LONG_LONG_MAX__=9223372036854775807LL', '__LONG_MAX__=2147483647L', '__NO_INLINE__=1', '__PTRDIFF_TYPE__=int', '__SCHAR_MAX__=127', '__SHRT_MAX__=32767', '__SIZE_TYPE__=unsigned int', '__WCHAR_TYPE__=unsigned int', '__WINT_TYPE__=unsigned int', '__bsd4_2=1', '__bsd4_2__=1', '__builtin_va_list=int', '__ultrix=1', '__ultrix__=1', '__unix=1', '__unix__=1', '__vax=1', '__vax__=1', 'bsd4_2=1', 'ultrix=1', 'unix=1', 'vax=1' ], 'ByteOrder' => 'LittleEndian', 'LongSize' => 4, 'IntSize' => 4, 'ShortSize' => 2, 'Assert' => [ 'cpu(vax)', 'machine(vax)', 'system(bsd)', 'system(unix)' ], 'UnsignedChars' => 0, 'DoubleSize' => 8, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'DisabledKeywords' => [ 'restrict' ], 'LongLongSize' => 8, 'Alignment' => 4, 'LongDoubleSize' => 8, 'KeywordMap' => { '__imag__' => undef, '__inline' => 'inline', '__volatile' => 'volatile', '__complex__' => undef, '__real' => undef, '__imag' => undef, '__restrict' => 'restrict', '__inline__' => 'inline', '__asm' => 'asm', '__bounded__' => undef, '__volatile__' => 'volatile', '__unbounded' => undef, '__extension__' => undef, '__signed' => 'signed', '__unbounded__' => undef, '__const' => 'const', '__const__' => 'const', '__signed__' => 'signed', '__bounded' => undef, '__real__' => undef, '__complex' => undef, '__restrict__' => 'restrict', '__asm__' => 'asm' }, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 ); Convert-Binary-C-0.85/tests/compiler/gcc-arm.cfg0000644000175000001440000001100514676735310020162 0ustar mhxusers%config = ( 'Define' => [ '__APCS_32__=1', '__ARMEL__=1', '__ARM_ARCH_4T__=1', '__CHAR_BIT__=8', '__CHAR_UNSIGNED__=1', '__DBL_DIG__=15', '__DBL_EPSILON__=2.2204460492503131e-16', '__DBL_MANT_DIG__=53', '__DBL_MAX_10_EXP__=308', '__DBL_MAX_EXP__=1024', '__DBL_MAX__=1.7976931348623157e+308', '__DBL_MIN_10_EXP__=(-307)', '__DBL_MIN_EXP__=(-1021)', '__DBL_MIN__=2.2250738585072014e-308', '__DECIMAL_DIG__=17', '__ELF__=1', '__FLT_DIG__=6', '__FLT_EPSILON__=1.19209290e-7F', '__FLT_EVAL_METHOD__=0', '__FLT_MANT_DIG__=24', '__FLT_MAX_10_EXP__=38', '__FLT_MAX_EXP__=128', '__FLT_MAX__=3.40282347e+38F', '__FLT_MIN_10_EXP__=(-37)', '__FLT_MIN_EXP__=(-125)', '__FLT_MIN__=1.17549435e-38F', '__FLT_RADIX__=2', '__GNUC_MINOR__=4', '__GNUC_PATCHLEVEL__=0', '__GNUC__=3', '__INT_MAX__=2147483647', '__LDBL_DIG__=15', '__LDBL_EPSILON__=2.2204460492503131e-16L', '__LDBL_MANT_DIG__=53', '__LDBL_MAX_10_EXP__=308', '__LDBL_MAX_EXP__=1024', '__LDBL_MAX__=1.7976931348623157e+308L', '__LDBL_MIN_10_EXP__=(-307)', '__LDBL_MIN_EXP__=(-1021)', '__LDBL_MIN__=2.2250738585072014e-308L', '__LONG_LONG_MAX__=9223372036854775807LL', '__LONG_MAX__=2147483647L', '__NO_INLINE__=1', '__PTRDIFF_TYPE__=long int', '__SCHAR_MAX__=127', '__SHRT_MAX__=32767', '__SIZE_TYPE__=long unsigned int', '__SOFTFP__=1', '__USES_INITFINI__=1', '__WCHAR_TYPE__=int', '__WINT_TYPE__=unsigned int', '__arm__=1', '__builtin_va_list=int' ], 'ByteOrder' => 'LittleEndian', 'LongSize' => 4, 'IntSize' => 4, 'ShortSize' => 2, 'Assert' => [ 'cpu(arm)', 'machine(arm)' ], 'UnsignedChars' => 1, 'DoubleSize' => 8, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'DisabledKeywords' => [ 'restrict' ], 'LongLongSize' => 8, 'Alignment' => 4, 'LongDoubleSize' => 8, 'KeywordMap' => { '__imag__' => undef, '__inline' => 'inline', '__volatile' => 'volatile', '__complex__' => undef, '__real' => undef, '__imag' => undef, '__restrict' => 'restrict', '__inline__' => 'inline', '__asm' => 'asm', '__volatile__' => 'volatile', '__extension__' => undef, '__signed' => 'signed', '__const' => 'const', '__const__' => 'const', '__signed__' => 'signed', '__real__' => undef, '__complex' => undef, '__restrict__' => 'restrict', '__asm__' => 'asm' }, 'HasCPPComments' => 1, 'CompoundAlignment' => 4 ); Convert-Binary-C-0.85/tests/compiler/gcc-hp64.bin0000644000175000001440000000567014676735310020210 0ustar mhxusersbe 58 1d 6c 15 db 80 7b b1 d5 77 94 89 07 c5 9a e8 7d 89 7f 70 5a ec 10 dc 00 00 00 00 00 00 00 0f 46 4a 91 db 38 cd d1 37 17 8f 86 dd ee 24 8b 85 4b 50 76 31 23 40 8a 12 81 d0 f1 b0 49 43 03 9e 68 7d 00 3c d7 00 00 25 00 28 3f ed 37 00 00 9d d2 9f 41 9e 1b f1 21 8b 00 00 00 00 00 00 00 9d 18 44 96 65 e5 ed 43 a1 38 d8 f4 f3 9a 81 be 9c 22 f1 36 34 6d b7 0d 97 5e 73 50 74 07 1f 5a 16 bc 63 00 4b 02 00 00 bb 00 e7 60 03 8a 00 00 d2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f5 ed 00 00 cf 16 41 4d fa 75 78 35 00 00 00 00 fe 00 d3 75 80 fb 90 80 69 99 04 b1 a1 f4 a1 56 2a ba eb 86 2c d7 e7 ae b8 73 98 7d 29 69 61 81 a5 15 ee 02 a6 aa c2 ab 79 26 c8 e5 ae 62 7a be 56 09 2e b9 b1 7f e0 ad ac 1c 93 b9 26 73 30 cf b4 9c a3 f1 1b ef 76 7f 24 04 94 bd 00 00 00 00 d4 60 20 b4 2b 68 7b 84 7e 2b cf b5 76 cd f0 43 d9 7f ce b6 93 74 02 0e b5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 5e 00 00 17 84 f5 42 78 d0 e1 c3 00 00 00 00 da 00 a0 7b 55 b6 fa ba 03 cb 04 be 7d f8 91 8f 69 c9 d3 4a 96 ff 51 dc c7 0f 4a 73 93 51 67 61 21 34 67 ce f1 5c 63 07 05 5b 78 d9 71 05 cd 68 f6 6f 9f 64 f9 1e b5 29 dd f3 1a 85 28 78 d8 c0 5b 71 72 62 13 66 72 8a c5 04 21 f7 00 00 00 00 12 80 f3 d9 24 80 13 e1 e9 90 0d b2 87 76 90 ed 6a ca 99 2a 0d a5 6a 8b b5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fc 9f 00 00 95 80 e8 e7 15 5c 4f 6e 00 00 00 00 2e 00 4a 55 fc 49 9d f0 e1 15 79 d3 3a 43 b8 2a 8b 01 9f 3f 1d fd 3a c1 2c 2a 9a c4 30 09 b6 28 dd b1 78 1a d3 16 43 71 8d 32 aa 35 52 9f d8 79 b2 6e ca 5e d8 e8 f5 22 7c 12 12 86 0f 8f d2 74 cb 65 1c f2 7a 50 9b 1e c0 74 82 a5 00 00 00 00 6e 14 88 59 04 7b 49 19 81 57 7f 42 58 7d 0b 6e 3d 7a 6b 2b 60 d5 8b 9a 3c 09 00 00 00 00 00 00 c5 09 00 00 00 00 00 00 72 3d ad e3 95 94 42 0c ff 20 25 da 1a ff a4 34 e4 2e 73 cb 9a ea 28 d3 4e 12 68 bd bb c0 85 0f 8a df 48 54 3a 76 fb ac d3 0d 3a ce 15 f4 43 5f c0 08 74 b5 39 71 c5 a5 1e 5f d5 c4 14 33 01 df 4e 27 c6 92 72 38 55 3b 80 ec 20 1f 46 3c 20 66 33 d6 64 75 c8 f4 c3 32 9f d1 b8 2f 6e 1c 06 71 66 5f ea de c8 b2 60 d9 06 92 55 f2 45 2d ed de 02 0d 90 ff 3a cc 0f d1 c6 3c ae ff 3c 03 65 1e 6f ec 43 6d 21 fb 5c b5 7c 6f 8f e3 65 ac 5f 46 9c c9 e7 55 e0 69 d1 59 34 29 ee aa d8 da f3 e0 53 a9 45 1f 8c 97 44 64 12 c5 14 8e 3c ba 40 69 29 2b 42 67 98 05 2a 7e b4 9c 29 e4 3b b2 09 ba af 5c 6a c6 6c d2 41 65 b1 00 00 00 22 4d f9 f5 d8 11 fc da 8d d2 f7 8e a8 00 00 00 e0 e6 b8 9a b5 00 e2 77 6c d5 78 39 ca 7f 5a 2c 27 06 00 00 fe b2 5d 02 07 10 45 08 d1 45 f2 1c 6a 69 4b 3a 16 11 4a 54 00 00 00 00 c3 e6 35 ca f8 2f 6d 9f 6a 9b 42 aa d9 8f d5 7e 05 00 00 00 00 00 00 00 6e 50 f8 77 00 00 00 00 8c 7d 82 bd 42 8e d6 04 8b 88 a4 2e e5 35 45 66 40 00 00 00 00 00 00 00 bf d6 52 52 00 00 00 00 d5 15 ec d5 ff 89 f8 24 d7 a4 64 53 27 dc 4d 33 a7 00 00 00 00 00 00 00 66 a7 ac 22 00 00 00 00 73 62 89 aa 44 17 9e d6 f5 aa dd 6c df 3d a7 4a e4 00 00 00 00 00 00 00 15 43 3c eb 00 00 1c 2c 5d 77 6d 4e 00 00 00 00 2e 64 d1 4b 5a 2d 05 58 Convert-Binary-C-0.85/tests/compiler/gcc-arm.bin0000644000175000001440000000435014676735310020200 0ustar mhxusersbe 58 1d 6c 15 db 80 7b b1 d5 77 94 89 07 c5 9a e8 00 00 00 70 5a ec 10 dc f8 d9 41 35 19 4d ba 0f 46 4a 91 db 38 cd 00 37 17 00 00 dd 00 24 8b 85 4b 00 00 31 23 40 8a 12 81 d0 f1 b0 00 00 00 9e 68 7d 8a 3c d7 59 9e 25 94 28 3f ed 37 d1 c6 9d d2 9f 00 9e 1b 00 00 8b 00 fc 0a bd 98 00 00 9d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97 5e 00 00 74 07 1f 5a 16 bc 63 64 4b 00 f1 72 bb c0 e7 60 03 8a ea 55 d2 33 cf fe e7 0c b9 2c d0 28 98 b4 9d 40 0a 07 e5 f4 66 1f bd 8d e7 f7 f5 ed 9b 4d cf 16 41 4d fa 75 78 35 7b ea 1d 1d fe d3 d3 75 80 fb 90 80 69 99 04 b1 a1 f4 a1 56 2a ba eb 86 2c d7 e7 ae b8 73 98 7d 29 69 61 81 a5 15 ee 02 a6 aa c2 ab 79 26 c8 e5 ae 62 7a be 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 24 04 00 00 51 64 41 e7 d4 60 20 b4 2b 00 7b 84 7e 2b cf b5 76 cd f0 43 d9 7f ce b6 93 74 02 0e b5 32 64 9f 15 05 31 2f 6e 1c ef 9b 2a bd b8 c8 71 33 97 e9 95 17 cf 5d ff 5e db 69 17 84 f5 42 78 d0 e1 c3 2f d0 90 a4 da a7 a0 7b 55 b6 fa ba 03 cb 04 be 7d f8 91 8f 69 c9 d3 4a 96 ff 51 dc c7 0f 4a 73 93 51 67 61 21 34 67 ce f1 5c 63 07 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5b 71 00 00 13 66 72 8a c5 04 21 f7 2d 00 03 ef 12 80 f3 d9 24 80 13 e1 e9 90 0d b2 87 76 90 ed 6a ca 99 2a 0d a5 6a 8b b5 36 0f cd e5 a6 07 8c b7 dd 6a 5e 69 14 59 df ee 0c e3 24 d6 8b d5 49 fc 9f 7f 7f 95 80 e8 e7 15 5c 4f 6e 96 98 54 06 2e 82 4a 55 fc 49 9d f0 e1 15 79 d3 3a 43 b8 2a 8b 01 9f 3f 1d fd 3a c1 2c 2a 9a c4 30 09 b6 28 dd b1 00 00 d3 16 00 00 8d 32 aa 35 52 9f d8 79 b2 6e ca 5e d8 e8 f5 22 7c 12 12 86 0f 8f d2 74 cb 65 1c f2 7a 50 9b 1e c0 74 82 a5 57 bb 4f a1 6e 14 88 59 04 7b 49 19 81 57 7f 42 58 7d 0b 6e 3d 7a 6b 2b 60 d5 8b 9a 3c 09 36 21 43 5b 2f 5c c5 09 ef 1a d9 1f 8b cc 72 3d ad e3 95 94 42 0c ff 20 25 da 1a ff a4 34 e4 2e 73 cb 9a ea 28 d3 4e 00 00 00 bb c0 85 0f 8a df 48 54 3a 76 fb ac d3 00 00 00 15 f4 43 5f c0 00 74 b5 39 71 c5 a5 1e 5f d5 c4 14 33 00 00 4e 27 c6 92 72 38 55 3b 80 ec 20 1f 46 3c 20 66 33 d6 64 75 c8 f4 c3 32 9f d1 b8 2f 6e 00 00 00 66 5f ea de c8 b2 60 d9 06 92 55 f2 45 00 00 00 02 0d 90 ff 3a cc 0f d1 c6 3c ae ff 3c 00 00 00 6f ec 43 6d 21 fb 5c b5 7c 6f 8f e3 65 00 00 00 9c c9 e7 55 00 00 00 00 34 29 ee aa d8 da 00 00 53 a9 45 1f 8c 97 44 64 Convert-Binary-C-0.85/tests/210_depend.t0000644000175000001440000000471514677003452016372 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 90 } my $CCCFG = require './tests/include/config.pl'; eval { $c1 = Convert::Binary::C->new( Include => ['tests/include/files'] ); $c2 = Convert::Binary::C->new( Include => ['tests/include/files'] ); }; ok($@,'',"failed to create Convert::Binary::C objects"); eval { $c1->parse_file( 'tests/include/files/files.h' ); $c2->parse( < #include #include #include CODE }; ok($@,'',"failed to parse C-code"); eval { $dep1 = $c1->dependencies; $dep2 = $c2->dependencies; @files1a = $c1->dependencies; @files2a = $c2->dependencies; }; ok($@,'',"failed to retrieve dependencies"); @files1s = keys %$dep1; @files2s = keys %$dep2; @incs = qw( tests/include/files/empty.h tests/include/files/ifdef.h tests/include/files/ifnull.h tests/include/files/something.h ); @ref1 = ( 'tests/include/files/files.h', @incs ); @ref2 = @incs; s/\\/\//g for @files1a, @files2a, @files1s, @files2s; print "# \@files1a => @files1a\n"; ok( join(',', sort @ref1), join(',', sort @files1a), "dependency names differ" ); print "# \@files1s => @files1s\n"; ok( join(',', sort @ref1), join(',', sort @files1s), "dependency names differ" ); print "# \@files2a => @files2a\n"; ok( join(',', sort @ref2), join(',', sort @files2a), "dependency names differ" ); print "# \@files2s => @files2s\n"; ok( join(',', sort @ref2), join(',', sort @files2s), "dependency names differ" ); eval { $c2 = Convert::Binary::C->new( %$CCCFG ); $c2->parse_file( 'tests/include/include.c' ); }; ok($@,'',"failed to create object / parse file"); eval { $dep2 = $c2->dependencies; }; ok($@,'',"failed to retrieve dependencies"); # check that the size, mtime and ctime entries are correct for my $dep ( $dep1, $dep2 ) { for my $file ( keys %$dep ) { my($size, $mtime, $ctime) = (stat($file))[7,9,10]; ok( $size, $dep->{$file}{size}, "size mismatch for '$file'" ); ok( $mtime, $dep->{$file}{mtime}, "mtime mismatch for '$file'" ); ok( $ctime, $dep->{$file}{ctime}, "ctime mismatch for '$file'" ); } } Convert-Binary-C-0.85/tests/231_align.t0000644000175000001440000000650614677003452016230 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 212 } $c = Convert::Binary::C->new( ShortSize => 2, LongSize => 4 ); eval { $c->parse(< [ 1, 1, 1, 1, 2, 2, 1, 2, 4], 'b' => [ 2, 2, 2, 2, 2, 2, 2, 2, 4], 'c' => [ 2, 2, 2, 2, 2, 2, 2, 2, 4], 'd' => [ 3, 3, 3, 4, 4, 4, 4, 4, 4], 'e' => [ 5, 5, 5, 6, 6, 6, 8, 8, 8], 'f' => [ 2, 2, 2, 2, 4, 4, 2, 4, 8], 'f.b' => [ 1, 1, 1, 1, 2, 2, 1, 2, 4], 'g' => [ 2, 2, 2, 2, 2, 2, 2, 2, 4], 'g.b' => [ 1, 1, 1, 1, 2, 2, 1, 2, 4], ); %offsetof = ( 'c.b' => [ 1, 1, 1, 1, 1, 1, 1, 1, 1], 'd.b' => [ 1, 1, 1, 2, 2, 2, 2, 2, 2], 'e.b' => [ 1, 1, 1, 2, 2, 2, 4, 4, 4], 'f.b' => [ 1, 1, 1, 1, 2, 2, 1, 2, 4], 'f.b.a' => [ 1, 1, 1, 1, 2, 2, 1, 2, 4], 'g.b' => [ 0, 0, 0, 0, 0, 0, 0, 0, 0], ); my $natcfg = -1; my $natalign = $c->native('Alignment'); my $natcmpnd = $c->native('CompoundAlignment'); $natalign = 4 if $natalign > 4; $natcmpnd = 4 if $natcmpnd > 4; for my $i (0 .. $#config) { print "# --- Alignment => $config[$i][0], CompoundAlignment => $config[$i][1] ---\n"; $c->configure(Alignment => $config[$i][0], CompoundAlignment => $config[$i][1]); if ($config[$i][0] == $natalign && $config[$i][1] == $natcmpnd) { $natcfg = $i; } check_it($c, $i); } ok($natcfg >= 0); $c->configure(Alignment => 0, CompoundAlignment => 0); check_it($c, $natcfg); sub check_it { my($c, $i) = @_; for my $t (sort keys %sizeof) { my $s = $c->sizeof($t); ok($s, $sizeof{$t}[$i], "sizeof('$t')"); } for my $x (sort keys %offsetof) { my($t, $m) = $x =~ /(\w+)\.(.*)/; my $o = $c->offsetof($t, $m); ok($o, $offsetof{$x}[$i], "offsetof('$t', '$m')"); my @m = map "$t$_", $c->member($t, $o); my $r = $c->typeof($x) =~ /struct|union/ ? qr/^$x/ : qr/^$x$/; ok(scalar(grep { $_ =~ $r } @m), 1); } } Convert-Binary-C-0.85/tests/225_magic.t0000644000175000001440000000615414677003452016220 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 8 } tie @a1, 'Tie::Array::CBCTest'; tie @a2, 'Tie::Array::CBCTest'; tie @a3, 'Tie::Array::CBCTest'; tie @a4, 'Tie::Array::CBCTest'; tie %h1, 'Tie::Hash::CBCTest'; tie %h2, 'Tie::Hash::CBCTest'; tie @a, 'Tie::Array::CBCTest'; tie %h, 'Tie::Hash::CBCTest'; @a1 = ( 1 .. 4 ); @a2 = ( 4, 5 ); @a3 = ( 7, 8 ); %h1 = ( i => 3, c => \@a2 ); %h2 = ( i => 6, c => \@a3 ); @a4 = ( \%h1, \%h2 ); %h = ( foo => 1, bar => 2, baz => \@a1, xxx => \@a4 ); $ref = { foo => 2, bar => 3, baz => [2 .. 5], xxx => [ { i => 4, c => [5, 6] }, { i => 7, c => [8, 9] } ] }; $c = Convert::Binary::C->new->parse( <pack('tie', \%h); $p2 = $c->pack('tie', $ref); ok( $p1, $p2 ); $p1 = $c->pack('tie.baz', $h{baz}); $p2 = $c->pack('tie.baz', $ref->{baz}); ok( $p1, $p2 ); $p1 = $c->pack('tie.xxx[0]', $h{xxx}[0]); $p2 = $c->pack('tie.xxx[0]', $ref->{xxx}[0]); ok( $p1, $p2 ); $i1 = $c->initializer('tie', \%h); $i2 = $c->initializer('tie', $ref); ok( $i1, $i2 ); $i1 = $c->initializer('tie.baz', $h{baz}); $i2 = $c->initializer('tie.baz', $ref->{baz}); ok( $i1, $i2 ); $i1 = $c->initializer('tie.xxx[0]', $h{xxx}[0]); $i2 = $c->initializer('tie.xxx[0]', $ref->{xxx}[0]); ok( $i1, $i2 ); @a = ('FOO=42'); $c->configure( Define => \@a ); $c->parse( 'typedef char zaphod[FOO];' ); ok( $c->sizeof('zaphod'), 42 ); @a = sort qw( const inline restrict ); $c->configure( DisabledKeywords => \@a ); $b = $c->configure( 'DisabledKeywords' ); ok( "@a", "@$b" ); package Tie::Hash::CBCTest; sub TIEHASH { bless {}, $_[0] } sub STORE { $_[0]->{$_[1]} = $_[2] } sub FETCH { my $x = $_[0]->{$_[1]}; ref $x || $x =~ /\D/ ? $x : $x+1 } sub FIRSTKEY { my $a = scalar keys %{$_[0]}; each %{$_[0]} } sub NEXTKEY { each %{$_[0]} } sub EXISTS { exists $_[0]->{$_[1]} } sub DELETE { delete $_[0]->{$_[1]} } sub CLEAR { %{$_[0]} = () } package Tie::Array::CBCTest; sub TIEARRAY { bless [], $_[0] } sub EXTEND { } sub FETCHSIZE { scalar @{$_[0]} } sub STORESIZE { $#{$_[0]} = $_[1]-1 } sub STORE { $_[0]->[$_[1]] = $_[2] } sub FETCH { my $x = $_[0]->[$_[1]]; ref $x || $x =~ /\D/ ? $x : $x+1 } sub CLEAR { @{$_[0]} = () } sub POP { pop(@{$_[0]}) } sub PUSH { my $o = shift; push(@$o,@_) } sub SHIFT { shift(@{$_[0]}) } sub UNSHIFT { my $o = shift; unshift(@$o,@_) } # sub EXISTS { defined $_[0]->[$_[1]] } # exists doesn't work for < 5.6.0 # sub DELETE { undef $_[0]->[$_[1]] } # delete doesn't work for < 5.6.0 sub SPLICE { my $ob = shift; my $sz = $ob->FETCHSIZE; my $off = @_ ? shift : 0; $off += $sz if $off < 0; my $len = @_ ? shift : $sz-$off; return splice(@$ob,$off,$len,@_); } Convert-Binary-C-0.85/tests/701_debug.t0000644000175000001440000000377114677003452016227 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C; $^W = 1; BEGIN { $debug = Convert::Binary::C::feature( 'debug' ); plan tests => 17; } ok( defined $debug ); $dbfile = 'tests/debug.out'; -e $dbfile and unlink $dbfile; $SIG{__WARN__} = sub { push @warnings, $_[0] }; eval qq{ use Convert::Binary::C debug => 'all', debugfile => '$dbfile'; }; ok( $@, '' ); if( $debug ) { ok( scalar @warnings, 0, "unexpected warning(s)" ); ok( 1 ); # dummy } else { ok( scalar @warnings, 1, "wrong number of warnings" ); ok( $warnings[0], qr/Convert::Binary::C not compiled with debugging support/ ); } ok( -e $dbfile xor not $debug ); ok( -z $dbfile xor not $debug ); eval { $p = Convert::Binary::C->new }; ok( $@, '' ); ok( ref $p, 'Convert::Binary::C' ); undef $p; @warnings = (); eval q{ use Convert::Binary::C debugfile => ''; }; ok( $@, '', "unexpected error" ); ok( scalar @warnings, 1, "wrong number of warnings" ); ok( $warnings[0], $debug ? qr/Cannot open '', defaulting to stderr/ : qr/Convert::Binary::C not compiled with debugging support/ ); ok( -s $dbfile xor not $debug ); @warnings = (); eval qq{ import Convert::Binary::C debug => 'foo'; }; if( $debug ) { ok( $@, qr/^Unknown debug option 'f'/ ); ok( scalar @warnings, 0, "unexpected warning(s)" ); ok( 1 ); # dummy } else { ok( $@, '', "unexpected error" ); ok( scalar @warnings, 1, "wrong number of warnings" ); ok( $warnings[0], qr/Convert::Binary::C not compiled with debugging support/ ); } @warnings = (); eval qq{ import Convert::Binary::C 'debug'; }; ok( $@, qr/^You must pass an even number of module arguments/ ); ok( scalar @warnings, 0, "unexpected warning(s)" ); Convert-Binary-C-0.85/tests/901_memory.t0000644000175000001440000000666114677003452016454 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C; $^W = 1; BEGIN { @files = grep /[1-4]\d{2}_[a-z]+\.t$/i, ; plan tests => 1 + 9*@files } $debug = Convert::Binary::C::feature( 'debug' ); ok( defined $debug ); $dbfile = 'tests/debug.out'; $cmd = "$^X -w " . join( ' ', map qq["-I$_"], @INC ); @args = ( debug => "m", debugfile => $dbfile ); for my $test ( @files ) { print "# testing '$test'\n"; -e $dbfile and unlink $dbfile; if( $debug ) { open TEST, "$cmd $test @args |" or die $!; while(){} close TEST; } my $exf = -e $dbfile ? 1 : 0; my $reason = $debug ? '' : 'no debugging'; skip( $reason, $exf, 1, "dubious: no debug output file created" ); my %i = $exf ? get_alloc_info( $dbfile ) : (); if( $exf ) { print "# results for '$test':\n"; print "# allocs => $i{allocs} blocks\n"; print "# frees => $i{frees} blocks\n"; print "# max. blocks => $i{max_blocks} blocks\n"; print "# max. memory => $i{max_total} bytes\n"; print "# leakage => $i{leakage} bytes\n"; } if( $debug and !$exf ) { $reason = 'no output file created'; } skip( $reason, ($i{allocs} || 0) > 0, 1, "dubious: no memory allocations" ); skip( $reason, $i{allocs}, $i{frees}, "malloc/free mismatch" ); skip( $reason, $i{leakage}, 0, "memory leaks detected" ); for( qw( multi_alloc null_free unalloc_free not_free assert_fail ) ) { print "# $_:\n"; skip( $reason, exists $i{$_} ? @{$i{$_}} == 0 : 0 ); $i{$_} && @{$i{$_}} or next; for( @{$i{$_}} ) { print "# $_\n" } } } sub get_alloc_info { my $file = shift; my %alloc; my %info = ( allocs => 0, frees => 0, max_blocks => 0, max_total => 0, multi_alloc => [], null_free => [], unalloc_free => [], not_free => [], assert_fail => [], ); my $count = 0; my $total = 0; open MEM, $file or die $!; while( ) { /^(.*?):(A|F|V)=(?:(\d+)\@)?([0-9a-zA-Z]{8,})$/ or next; if( $2 eq 'A' ) { exists $alloc{$4} and push @{$info{multi_alloc}}, "0x$4 in $1 (previously allocated in $alloc{$4}[0])"; next if exists $alloc{$4}; $alloc{$4} = [$1,$3]; $count++; $total += $3; $info{allocs}++; $info{min_size} = $info{max_size} = $3 unless exists $info{min_size}; $info{min_size} = $3 if $3 < $info{min_size}; $info{max_size} = $3 if $3 > $info{max_size}; } elsif( $2 eq 'F' ) { $4 eq '00000000' and push @{$info{null_free}}, "0x$4 in $1"; exists $alloc{$4} or push @{$info{unalloc_free}}, "0x$4 in $1"; next unless exists $alloc{$4}; $count--; $total -= $alloc{$4}[1]; $info{frees}++; delete $alloc{$4}; } else { # $2 eq 'V' exists $alloc{$4} or push @{$info{assert_fail}}, "0x$4 in $1"; next; # nothing needs to be updated } $info{max_blocks} = $count if $count > $info{max_blocks}; $info{max_total} = $total if $total > $info{max_total}; } close MEM; for( sort keys %alloc ) { push @{$info{not_free}}, "0x$_ in $alloc{$_}[0]"; } $info{leakage} = $total; %info; } Convert-Binary-C-0.85/tests/228_hooks.t0000644000175000001440000002501014677003452016256 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 420 } eval { require Scalar::Util }; my $reason = $@ ? 'cannot load Scalar::Util' : ''; unless ($reason) { eval { Scalar::Util::dualvar(42, 'answer') eq 'answer' or die }; $reason = 'cannot use dualvar()' if $@; } my $c = Convert::Binary::C->new( ByteOrder => 'BigEndian', EnumType => 'String', EnumSize => 4, IntSize => 4, PointerSize => 4 ); $c->parse(<<'ENDC'); enum Enum { Zero, One, Two, Three, Four, Five, Six, Seven }; typedef unsigned int u_32; typedef u_32 TextId; typedef TextId SetTextId; struct String { u_32 len; char buf[]; }; struct Date { u_32 year; u_32 month; u_32 day; }; struct Test { u_32 header; SetTextId id; }; struct PtrHookTest { struct Test *pTest; struct Date *pDate; enum Enum *pEnum; TextId *pText; }; ENDC my %TEXTID = ( 4 => 'perl', 1179602721 => 'rules' ); my %RTEXTID = reverse %TEXTID; my $d = pack("N", 4) . "FOO!"; no_hooks(); $c->tag('Enum', Hooks => { pack => \&enum_pack, unpack => \&enum_unpack }); $c->tag('TextId', Hooks => { pack => \&textid_pack, unpack => \&textid_unpack }); $c->tag('String', Hooks => { pack => \&string_pack, unpack => \&string_unpack }); with_hooks(); $c = $c->clone; with_hooks(); $c->tag($_, Hooks => undef) for qw(Enum String); { my $hook = $reason ? sub { $_[0] } # identity : sub { Scalar::Util::dualvar($_[0], $TEXTID{$_[0]}) }; $c->tag('TextId', Hooks => { unpack => $hook, pack => undef }); } with_single_hook(); $c = $c->clone; with_single_hook(); # This should completely remove the 'TextId' hooks $c->tag('TextId', Hooks => { unpack => undef }); no_hooks(); $c = $c->clone; no_hooks(); $c->tag('Enum', Hooks => undef) ->tag('TextId', Hooks => undef) ->tag('String', Hooks => undef) ->tag('Enum', Hooks => { pack => \&enum_pack }) ->tag('TextId', Hooks => { pack => \&textid_pack }) ->tag('String', Hooks => { pack => \&string_pack }) ->tag('Enum', Hooks => { unpack => \&enum_unpack }) ->tag('TextId', Hooks => { unpack => \&textid_unpack }) ->tag('String', Hooks => { unpack => \&string_unpack }); with_hooks(); $c = $c->tag('String', Hooks => undef) ->tag('Enum', Hooks => undef) ->tag('TextId', Hooks => undef) ->clone; no_hooks(); test_args(); test_ptr_hooks(); sub test_ptr_hooks { my $pack = sub { $_[0] =~ /{(0x[^}]+)}/ ? hex $1 : '' }; $c->tag('Test', Hooks => { unpack_ptr => sub { sprintf "Test{0x%X}", $_[0] }, pack_ptr => [$pack, $c->arg('DATA')] }); $c->tag('Date', Hooks => { unpack_ptr => [sub { sprintf "$_[1]\{0x%X}", $_[0] }, $c->arg('DATA', 'TYPE')], pack_ptr => $pack }); $c->tag('Enum', Hooks => { unpack_ptr => [sub { sprintf "$_[0]\{0x%X}", $_[1] }, $c->arg('TYPE', 'DATA')], pack_ptr => [$pack, $c->arg('DATA', 'SELF'), 'foo'] }); $c->tag('TextId', Hooks => { unpack_ptr => [sub { sprintf "Text\{0x%X}", $_[0] }, $c->arg('DATA')], pack_ptr => $pack }); my $str = pack('N*', 0xdeadbeef, 0x2badc0de, 0x12345678, 0xdeadc0de); my $u = $c->unpack('PtrHookTest', $str); ok($u->{pTest}, "Test{0xDEADBEEF}"); ok($u->{pDate}, "struct Date{0x2BADC0DE}"); ok($u->{pEnum}, "enum Enum{0x12345678}"); ok($u->{pText}, "Text{0xDEADC0DE}"); my $p = $c->pack('PtrHookTest', $u); ok($p, $str); $c->tag($_, Hooks => undef) for qw( Test Date Enum TextId ); } sub test_args { my(@ap, @au, $x); my $sub_p = sub { push @ap, @_; shift }; my $sub_u = sub { push @au, @_; shift }; my @t = ( { type => 'TextId', in_p => 4711, in_u => pack("N", 0x12345678), arg_u => [], res_u => [], arg_p => [], res_p => [] }, { type => 'TextId', in_p => 4711, in_u => pack("N", 0x12345678), arg_u => [1], res_u => [1], arg_p => [2], res_p => [2] }, { type => 'TextId', in_p => 4711, in_u => pack("N", 0x12345678), arg_u => [$c->arg('DATA')], res_u => [0x12345678], arg_p => [$c->arg('DATA', 'HOOK')], res_p => [4711, 'pack'] }, { type => 'TextId', in_p => 4711, in_u => pack("N", 0x12345678), arg_u => [$c->arg('DATA', 'TYPE', 'SELF'), 123], res_u => [0x12345678, 'TextId', '{self}', 123], arg_p => [$c->arg('DATA', 'TYPE', 'SELF'), 456], res_p => [4711, 'TextId', '{self}', 456] }, { type => 'TextId', in_p => 4711, in_u => pack("N", 0x12345678), arg_u => [$c->arg('DATA', 'TYPE'), 'foo', $c->arg('SELF', 'DATA')], res_u => [0x12345678, 'TextId', 'foo', '{self}', 0x12345678], arg_p => [$c->arg('DATA', 'TYPE'), 'bar', $c->arg('SELF')], res_p => [4711, 'TextId', 'bar', '{self}'] }, { type => 'Enum', in_p => 'Seven', in_u => pack("N", 8), arg_u => [$c->arg('DATA', 'TYPE', 'HOOK')], res_u => ['', 'enum Enum', 'unpack'], arg_p => [$c->arg('DATA', 'TYPE', 'DATA')], res_p => ['Seven', 'enum Enum', 'Seven'] }, { type => 'Date', in_p => {}, in_u => pack("N3", 4, 5, 6), arg_u => [$c->arg('DATA', 'TYPE')], res_u => [qr/HASH/, 'struct Date'], arg_p => [$c->arg('DATA', 'TYPE')], res_p => [qr/HASH/, 'struct Date'] }, ); for my $t (@t) { $c->tag($t->{type}, Hooks => { pack => [$sub_p, @{$t->{arg_p}}], unpack => [$sub_u, @{$t->{arg_u}}], }); for my $cbc ($c, $c->clone) { $x = $cbc->pack($t->{type}, $t->{in_p}); $x = $cbc->unpack($t->{type}, $t->{in_u}); ok(scalar @ap, scalar @{$t->{res_p}}); for (0 .. $#ap) { my $res = $t->{res_p}[$_] eq '{self}' ? $cbc : $t->{res_p}[$_]; ok($ap[$_], $res); } ok(scalar @au, scalar @{$t->{res_u}}); for (0 .. $#au) { my $res = $t->{res_u}[$_] eq '{self}' ? $cbc : $t->{res_u}[$_]; ok($au[$_], $res); } $cbc->tag($t->{type}, Hooks => undef); @ap = (); @au = (); } } } sub no_hooks { my($u, $p); $u = $c->unpack('Enum', $d); ok($u, 'Four'); $p = $c->pack('Enum', $u); ok($p, substr($d, 0, $c->sizeof('Enum'))); $u = $c->unpack('u_32', $d); ok($u, 4); $p = $c->pack('u_32', $u); ok($p, substr($d, 0, $c->sizeof('u_32'))); $u = $c->unpack('TextId', $d); ok($u, 4); $p = $c->pack('TextId', $u); ok($p, substr($d, 0, $c->sizeof('TextId'))); $u = $c->unpack('SetTextId', $d); ok($u, 4); $p = $c->pack('SetTextId', $u); ok($p, substr($d, 0, $c->sizeof('SetTextId'))); $u = $c->unpack('String', $d); ok($u->{len}, 4); ok("@{$u->{buf}}", "@{[unpack 'c*', 'FOO!']}"); $p = $c->pack('String', $u); ok($p, $d); $u = $c->unpack('Test', $d); ok($u->{header}, 4); ok($u->{id}, unpack('N', 'FOO!')); $p = $c->pack('Test', $u); ok($p, substr($d, 0, $c->sizeof('Test'))); } sub with_hooks { my($u, $p); $u = $c->unpack('Enum', $d); ok($u, 'FOUR'); $p = $c->pack('Enum', $u); ok($p, substr($d, 0, $c->sizeof('Enum'))); $u = $c->unpack('u_32', $d); ok($u, 4); $p = $c->pack('u_32', $u); ok($p, substr($d, 0, $c->sizeof('u_32'))); $u = $c->unpack('TextId', $d); ok($u, 'perl'); $p = $c->pack('TextId', $u); ok($p, substr($d, 0, $c->sizeof('TextId'))); $u = $c->unpack('SetTextId', $d); ok($u, 'perl'); $p = $c->pack('SetTextId', $u); ok($p, substr($d, 0, $c->sizeof('SetTextId'))); $u = $c->unpack('String', $d); ok($u, 'FOO!'); $p = $c->pack('String', $u); ok($p, $d); $u = $c->unpack('Test', $d); ok($u->{header}, 4); ok($u->{id}, 'rules'); $p = $c->pack('Test', $u); ok($p, substr($d, 0, $c->sizeof('Test'))); } sub with_single_hook { my($u, $p); $u = $c->unpack('Enum', $d); ok($u, 'Four'); $p = $c->pack('Enum', $u); ok($p, substr($d, 0, $c->sizeof('Enum'))); $u = $c->unpack('u_32', $d); ok($u, 4); $p = $c->pack('u_32', $u); ok($p, substr($d, 0, $c->sizeof('u_32'))); $u = $c->unpack('TextId', $d); skip($reason, $u, 'perl'); $p = $c->pack('TextId', $u); ok($p, substr($d, 0, $c->sizeof('TextId'))); $u = $c->unpack('SetTextId', $d); skip($reason, $u, 'perl'); $p = $c->pack('SetTextId', $u); ok($p, substr($d, 0, $c->sizeof('SetTextId'))); $u = $c->unpack('String', $d); ok($u->{len}, 4); ok("@{$u->{buf}}", "@{[unpack 'c*', 'FOO!']}"); $p = $c->pack('String', $u); ok($p, $d); $u = $c->unpack('Test', $d); ok($u->{header}, 4); skip($reason, $u->{id}, 'rules'); $p = $c->pack('Test', $u); ok($p, substr($d, 0, $c->sizeof('Test'))); } # the hooks sub enum_pack { ucfirst lc $_[0] } sub enum_unpack { uc $_[0] } sub textid_pack { $RTEXTID{$_[0]} } sub textid_unpack { $TEXTID{$_[0]} } sub string_pack { { len => length $_[0], buf => [unpack 'c*', $_[0]] } } sub string_unpack { pack "c$_[0]->{len}", @{$_[0]->{buf}} } # dying hooks used to leak memory # we cannot really test that they don't leak, but we test if dying works # any remaining leaks will hopefully show up with valgrind... $c->clean->EnumType('Integer')->parse(<sizeof('test'); my $pd = eval { $c->unpack('test', $bd) }; for my $t (['foo' => 40], ['enum NUM' => 10], ['struct inlined' => 4]) { $c->tag($t->[0], Hooks => { pack => sub { rand($t->[1]) < 1 and die "($t->[0]) pack\n"; shift }, unpack => sub { rand($t->[1]) < 1 and die "($t->[0]) unpack\n"; shift }, pack_ptr => sub { rand($t->[1]) < 1 and die "($t->[0]) pack_ptr\n"; shift }, unpack_ptr => sub { rand($t->[1]) < 1 and die "($t->[0]) unpack_ptr\n"; shift } }); } for (1 .. 100) { my $x = eval { $c->pack('test', $pd) }; $@ and print "# $@"; ok($@ =~ /pack/ xor defined $x); my $y = eval { $c->unpack('test', $bd) }; $@ and print "# $@"; ok($@ =~ /unpack/ xor defined $y); } #### TODO: is there a way to check for leaking scalars? (Devel::Arena ?) Convert-Binary-C-0.85/tests/802_pod.t0000644000175000001440000000222414677003452015715 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ # find all potential pod files if( open F, "MANIFEST" ) { chomp( @files = ); close F; for my $f ( @files ) { $f =~ m!^(bin|lib)! or next; $f =~ m!^tests/include! and next; if( open F, $f ) { while( ) { if( /^=\w+/ ) { push @pods, $f; last; } } close F; } } } # load Test::Pod if possible, otherwise load Test eval { require Test::Pod; $Test::Pod::VERSION >= 0.95 or die "Test::Pod version only $Test::Pod::VERSION"; import Test::Pod tests => scalar @pods; }; $TP = $@ eq ''; unless ($TP) { print "# $@"; require Test; import Test; plan(tests => scalar @pods); } for my $pod (@pods) { print "# checking $pod\n"; if($TP) { pod_file_ok($pod); } else { skip("testing pod requires Test::Pod", 0); } } Convert-Binary-C-0.85/tests/229_substr.t0000644000175000001440000000477514677003452016475 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 41 } $SIG{__WARN__} = sub { push @warn, $_[0] }; sub chkwarn { my $fail = 0; if( @warn != @_ ) { print "# wrong number of warnings (got ", scalar @warn, ", expected ", scalar @_, ")\n"; $fail++; } for my $ix ( 0 .. $#_ ) { my $e = $_[$ix]; my $w = $warn[$ix]; unless( $w =~ ref($e) ? $e : qr/\Q$e\E/ ) { print "# wrong warning, expected $e, got $w\n"; $fail++; } } if( $fail ) { print "# $_" for @warn } ok( $fail, 0, "warnings check failed" ); @warn = (); } $c = Convert::Binary::C->new( ByteOrder => 'BigEndian', IntSize => 4 ); $c->parse("typedef unsigned int u_32;"); $ref = pack "N*", 1000000, 5000000, 3000000, 4000000; $data = pack "N*", 1000000, 2000000, 3000000, 4000000; $x = eval { $c->unpack('u_32', $data) }; ok($@, ''); ok($x, 1000000); chkwarn(); $x = eval { $c->unpack('u_32', substr $data, 0, 4) }; ok($@, ''); ok($x, 1000000); chkwarn(); $x = eval { $c->unpack('u_32', substr $data, 4) }; ok($@, ''); ok($x, 2000000); chkwarn(); $x = eval { $c->unpack('u_32', substr $data, 8, 4) }; ok($@, ''); ok($x, 3000000); chkwarn(); $x = eval { $c->unpack('u_32', substr $data, 8, 3) }; ok($@, ''); ok(not defined $x); chkwarn(qr/Data too short/); $x = $data; eval { substr($x, 4, 4) = $c->pack('u_32', 5000000) }; ok($@, ''); ok($x, $ref); chkwarn(); $x = eval { $c->pack('u_32', 5000000, substr($data, 4, 4)) }; ok($@, ''); ok($x, pack('N', 5000000)); chkwarn(); $x = $data; eval { $c->pack('u_32', 5000000, substr($x, 4, 4)) }; ok($@, ''); ok($x, $ref); chkwarn(); eval { $c->pack('u_32', 5000000, substr('Hello World', 4, 4)) }; ok($@, qr/Modification of a read-only value attempted/); chkwarn(); $x = $data; eval { $c->pack('u_32', 5000000, substr($x, 4)) }; ok($@, ''); ok($x, $ref); chkwarn(); $x = $data; eval { $c->pack('u_32', 5000000, substr($x, 4, 0)) }; ok($@, ''); ok($x, pack('N*', 1000000, 5000000, 2000000, 3000000, 4000000)); chkwarn(); for my $ix (0 .. 2) { my $r = eval { $c->unpack('u_32', substr $data, ($ix+1)*$c->sizeof('u_32')) }; ok($@, ''); ok($r, (unpack "N*", $data)[$ix+1]); chkwarn(); } Convert-Binary-C-0.85/tests/702_env.t0000644000175000001440000000350114677003452015721 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; $^W = 1; BEGIN { plan tests => 16 } $ENV{CBC_DISABLE_PARSER} = 1; $ENV{CBC_ORDER_MEMBERS} = 1; eval { require Tie::Hash::Indexed }; $@ and eval { require Tie::IxHash }; $ixhash = $@ ? '' : 'indexed hash module is installed'; @warn = (); $SIG{__WARN__} = sub { push @warn, $_[0] }; sub chkwarn { my $fail = 0; if( @warn != @_ ) { print "# wrong number of warnings (got ", scalar @warn, ", expected ", scalar @_, ")\n"; $fail++; } for my $ix ( 0 .. $#_ ) { my $e = $_[$ix]; my $w = $warn[$ix]; unless( $w =~ ref($e) ? $e : qr/\Q$e\E/ ) { print "# wrong warning, expected $e, got $w\n"; $fail++; } } if( $fail ) { print "# $_" for @warn } ok( $fail, 0, "warnings check failed" ); @warn = (); } eval { require Convert::Binary::C }; ok( $@, '', "could not require Convert::Binary::C" ); chkwarn(); @w= ( qr/^Convert::Binary::C parser is DISABLED/ ); $ixhash or push @w, qr/^Couldn't load a module for member ordering/; $c = eval { Convert::Binary::C->new }; ok( $@, '', "could not create Convert::Binary::C object" ); chkwarn( @w ); ok( $c->OrderMembers, 1 ); chkwarn(); $c->OrderMembers(0); chkwarn(); ok( $c->OrderMembers, 0 ); chkwarn(); $c = eval { Convert::Binary::C->new( OrderMembers => 0 ) }; ok( $@, '', "could not create Convert::Binary::C object" ); chkwarn( $w[0] ); ok( $c->OrderMembers, 0 ); chkwarn(); $c->OrderMembers(1); chkwarn( $ixhash ? () : $w[1] ); ok( $c->OrderMembers, 1 ); chkwarn(); Convert-Binary-C-0.85/tests/205_pack.t0000644000175000001440000003753614677003452016064 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 275 } eval { $p = Convert::Binary::C->new( ByteOrder => 'BigEndian', UnsignedChars => 0 ); }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $p->parse(<<'EOF'); enum _enum { FOO }; struct _struct { int foo[1]; }; typedef struct _struct _typedef; typedef int scalar; typedef int array[1]; typedef struct { array foo; } hash; typedef struct { int foo[1]; } hash2; typedef char c_8; typedef unsigned char u_8, v_8[]; typedef signed char i_8; typedef long double ldbl; typedef struct { char a; int b[3][3]; } undef_test[3]; struct zero { int :0; }; typedef int incomplete[]; struct flexarray { int a; u_8 b[]; }; EOF }; ok($@,'',"parse() failed"); # catch all warnings for further checks $SIG{__WARN__} = sub { push @warn, $_[0] }; sub chkwarn { my $fail = 0; if( @warn != @_ ) { print "# wrong number of warnings (got ", scalar @warn, ", expected ", scalar @_, ")\n"; $fail++; } for my $ix ( 0 .. $#_ ) { my $e = $_[$ix]; my $w = $warn[$ix]; unless( $w =~ ref($e) ? $e : qr/\Q$e\E/ ) { print "# wrong warning, expected $e, got $w\n"; $fail++; } } if( $fail ) { print "# $_" for @warn } ok( $fail, 0, "warnings check failed" ); @warn = (); } #=================================================================== # check errors (2 tests) #=================================================================== eval { $packed = $p->unpack( 'foo', 0 ) }; ok( $@, qr/Type of arg 2 to unpack must be string/ ); chkwarn; eval { $packed = $p->pack( 'foo', 0, 0 ) }; ok( $@, qr/Type of arg 3 to pack must be string/ ); chkwarn; #=================================================================== # check scalars #=================================================================== $val = 1234567890; $data = pack 'N', $val; eval { $packed = $p->unpack( 'scalar', $data ) }; ok($@,'',"failed in unpack"); chkwarn; ok($packed,$val); eval { $packed = $p->unpack( 'scalar', 'foo' ) }; ok($@,'',"failed in unpack"); chkwarn( qr/Data too short/ ); ok(not defined $packed); eval { $packed = $p->pack( 'scalar', $val ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data); eval { $packed = $p->pack( 'scalar', [4711] ) }; ok($@,'',"failed in pack"); chkwarn( qr/'scalar' should be a scalar value/ ); ok($packed,pack('N',0)); $packed = $data; eval { $p->pack( 'scalar', undef, $packed ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data); $packed = $data; eval { $p->pack( 'scalar', [4711], $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'scalar' should be a scalar value/ ); ok($packed,$data); $packed = $data; eval { $p->pack( 'scalar', {foo=>4711}, $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'scalar' should be a scalar value/ ); ok($packed,$data); #=================================================================== # check arrays #=================================================================== eval { $packed = $p->unpack( 'array', $data ) }; ok($@,'',"failed in unpack"); chkwarn; ok(ref $packed, 'ARRAY'); ok(scalar @$packed, 1); ok($packed->[0], $val); eval { $packed = $p->unpack( 'array', 'foo' ) }; ok($@,'',"failed in unpack"); chkwarn( qr/Data too short/ ); ok(ref $packed, 'ARRAY'); ok(scalar @$packed, 1); ok(not defined $packed->[0]); eval { $packed = $p->pack( 'array', [$val] ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data); eval { $packed = $p->pack( 'array', $val ) }; ok($@,'',"failed in pack"); chkwarn( qr/'array' should be an array reference/ ); ok($packed, pack('N',0)); eval { $packed = $p->pack( 'array', {foo=>4711} ) }; ok($@,'',"failed in pack"); chkwarn( qr/'array' should be an array reference/ ); ok($packed, pack('N',0)); $packed = '12345678'; eval { $p->pack( 'array', [$val], $packed ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data.'5678'); $packed = '12'; eval { $p->pack( 'array', $val, $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'array' should be an array reference/ ); ok($packed,'12'.pack('n',0)); #=================================================================== # check hashes (structs) #=================================================================== eval { $packed = $p->unpack( 'hash', $data ) }; ok($@,'',"failed in unpack"); chkwarn; ok(ref $packed,'HASH'); ok(scalar keys %$packed, 1); ok(ref $packed->{foo},'ARRAY'); ok(scalar @{$packed->{foo}},1); ok($packed->{foo}[0],$val); eval { $packed = $p->unpack( 'hash', 'foo' ) }; ok($@,'',"failed in unpack"); chkwarn( qr/Data too short/ ); ok(ref $packed,'HASH'); ok(scalar keys %$packed, 1); ok(ref $packed->{foo},'ARRAY'); ok(scalar @{$packed->{foo}},1); ok(not defined $packed->{foo}[0]); eval { $packed = $p->pack( 'hash', {foo => [$val]} ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data); eval { $packed = $p->pack( 'hash', [4711] ) }; ok($@,'',"failed in pack"); chkwarn( qr/'hash' should be a hash reference/ ); ok($packed,pack('N',0)); eval { $packed = $p->pack( 'hash', {foo => 4711} ) }; ok($@,'',"failed in pack"); chkwarn( qr/'foo' should be an array reference/ ); ok($packed,pack('N',0)); eval { $packed = $p->pack( 'hash2', {foo => 4711} ) }; ok($@,'',"failed in pack"); chkwarn( qr/'foo' should be an array reference/ ); ok($packed,pack('N',0)); $packed = '12345678'; eval { $p->pack( 'hash', {foo => [$val]}, $packed ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data.'5678'); $packed = '12'; eval { $packed = $p->pack( 'hash', [4711], $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'hash' should be a hash reference/ ); ok($packed,'12'.pack('n',0)); $packed = '1234'; eval { $packed = $p->pack( 'hash', {foo => 4711}, $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'foo' should be an array reference/ ); ok($packed,'1234'); $packed = '1234'; eval { $packed = $p->pack( 'hash2', {foo => 4711}, $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'foo' should be an array reference/ ); ok($packed,'1234'); #=================================================================== # check unsigned chars (72 tests) #=================================================================== my %tests = ( c_8 => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => -1 }, }, i_8 => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => -1 }, }, u_8 => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => 255 }, }, 'char' => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => -1 }, }, 'signed char' => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => -1 }, }, 'unsigned char' => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => 255 }, }, ); uchar_test( %tests ); $p->UnsignedChars(1); $tests{$_}{unpack}{out} = 255 for qw( c_8 char ); uchar_test( %tests ); #=================================================================== # check unsigned 16-bit chars (36 tests) #=================================================================== %tests = ( 'char' => { pack => { in => 65535, out => pack('n', 65535) }, unpack => { in => pack('n', 65535), out => -1 }, }, 'signed char' => { pack => { in => 65535, out => pack('n', 65535) }, unpack => { in => pack('n', 65535), out => -1 }, }, 'unsigned char' => { pack => { in => 65535, out => pack('n', 65535) }, unpack => { in => pack('n', 65535), out => 65535 }, }, ); $p->CharSize(2)->UnsignedChars(0); uchar_test( %tests ); $p->UnsignedChars(1); $tests{char}{unpack}{out} = 65535; uchar_test( %tests ); $p->CharSize(1); sub uchar_test { my %tests = @_; for my $t ( keys %tests ) { for my $m ( keys %{$tests{$t}} ) { my $res = eval { $p->$m( $t, $tests{$t}{$m}{in} ) }; ok($@,'',"failed in $m"); chkwarn; ok($res, $tests{$t}{$m}{out}, "$m( '$t', $tests{$t}{$m}{in} ) != $tests{$t}{$m}{out}"); } } } #=================================================================== # check long doubles (2 tests) #=================================================================== eval { $packed = $p->pack('ldbl', 3.14159) }; ok($@,'',"failed in pack"); my $null = pack 'C*', (0) x length($packed); if( $packed eq $null ) { chkwarn( qr/Cannot pack long doubles/ ); eval { $packed = $p->unpack('ldbl', $packed) }; ok($@,'',"failed in unpack"); chkwarn( qr/Cannot unpack long doubles/ ); ok($packed,0.0); } else { chkwarn(); eval { $packed = $p->unpack('ldbl', $packed) }; ok($@,'',"failed in unpack"); chkwarn(); ok( $packed-3.14159 < 0.0001 ); } #=================================================================== # check for warnings when explicitly passing undef (1 test) #=================================================================== $val = [ undef, { b => [undef, [undef, 2]] } ]; # undef_test[1].b[1][1] = 2 eval { $packed = $p->pack('undef_test', $val) }; ok($@,'',"failed in pack"); chkwarn; #=================================================================== # check for existence of members with undef values #=================================================================== $val = $p->sizeof( 'undef_test[0]' ); chkwarn(); $packed = 'x' x $val; eval { $val = $p->unpack( 'undef_test', $packed ) }; ok($@,'',"failed in unpack"); chkwarn( qr/Data too short/ ); ok(reccmp_keys($val->[0], $val->[1]), '', 'deep compare failed'); ok(reccmp_keys($val->[0], $val->[2]), '', 'deep compare failed'); ok(reccmp_keys($val->[1], $val->[2]), '', 'deep compare failed'); chkwarn(); ok(rec_write($val->[0]), '', 'write check failed'); ok(rec_write($val->[1]), '', 'write check failed'); ok(rec_write($val->[2]), '', 'write check failed'); chkwarn(); #=================================================================== # bug #3753 - pack() on zero size type caused segfault / bus error #=================================================================== ok($p->pack('zero', {}), '', 'pack on zero size type (bug #3753)'); ok(reccmp_keys({}, $p->unpack('zero', '')), '', 'unpack on zero size type'); #=================================================================== # check unpack in list context #=================================================================== { for my $t (qw( u_8 incomplete flexarray )) { print "# --- $t ---\n"; my $s = $p->sizeof($t); my $n = $s || 42; my $d1 = pack "C*", 2 .. 3*$n; my $d2 = pack "C*", 1 .. 3*$n; my $d3 = pack "C*", 0 .. 3*$n; my $x1 = $p->unpack($t, $d1); my @x1 = $p->unpack($t, $d1); my $x2 = $p->unpack($t, $d2); my @x2 = $p->unpack($t, $d2); my $x3 = $p->unpack($t, $d3); my @x3 = $p->unpack($t, $d3); ok(scalar @x1, $s ? int(length($d1)/$s) : 1); ok(scalar @x2, $s ? int(length($d2)/$s) : 1); ok(scalar @x3, $s ? int(length($d3)/$s) : 1); ok($p->pack($t, $x1), $p->pack($t, $x1[0])); ok($p->pack($t, $x2), $p->pack($t, $x2[0])); ok($p->pack($t, $x3), $p->pack($t, $x3[0])); if ($s > 0) { my $p1 = $p->pack($t, $x1[1]); my $p2 = $p->pack($t, $x2[1]); my $p3 = $p->pack($t, $x3[1]); ok($p1, substr($d1, $s, length $p1)); ok($p2, substr($d2, $s, length $p2)); ok($p3, substr($d3, $s, length $p3)); } } } #=================================================================== # pack() should \0 terminate its return value to make the regex # engine happy. This is rather a bug in Perl, but we fix it here. #=================================================================== $val = "\x42"; $packed = $p->pack('u_8', 0x42); ok($packed, $val); ok($packed =~ /^$val$/); ok($packed =~ /^$val.*$/); $packed = $p->pack('u_8', 0x42, ""); ok($packed, $val); ok($packed =~ /^$val$/); ok($packed =~ /^$val.*$/); $packed = ""; $p->pack('u_8', 0x42, $packed); ok($packed, $val); ok($packed =~ /^$val$/); ok($packed =~ /^$val.*$/); $val = "\x42"x100; $packed = $p->pack('v_8', [(0x42)x100]); ok($packed, $val); ok($packed =~ /^$val$/); ok($packed =~ /^$val.*$/); #=================================================================== # some tests for the 3-arg version of pack() #=================================================================== { my @res; my $c = Convert::Binary::C->new; $c->parse(<pack('s', { a => 42, d => 13 }, $packed); push @res, $packed; $c->pack('s', { b => 42, c => 13 }, $packed); push @res, $packed; $packed = pack 'C*', 1 .. 6; push @res, $c->pack('s', { a => 42, d => 13 }, $packed); push @res, $packed; $c->pack('s', { b => 42, c => 13 }, $packed); push @res, $packed; }; ok($@, '', "failed during 3-arg pack test"); ok(@res == 6); ok($res[0], pack('C*',42,2,0,13)); ok($res[1], pack('C*',1,2)); ok($res[2], pack('C*',1,42,13,0)); ok($res[3], pack('C*',42,2,3,13,5,6)); ok($res[4], pack('C*',1,2,3,4,5,6)); ok($res[5], pack('C*',1,42,13,4,5,6)); @res = (); $val = $c->unpack('u', '+'); $packed = "mhx"; eval { push @res, $c->pack('u', $val, $packed); push @res, $packed; $c->pack('u', $val, $packed); push @res, $packed; push @res, $c->pack('u', $val, substr $packed, 1, 2); push @res, $packed; $c->pack('u', $val, substr $packed, 1, 2); push @res, $packed; }; ok($@, '', "failed during 3-arg pack test"); ok(@res == 6); ok($res[0], "+hx"); ok($res[1], "mhx"); ok($res[2], "+hx"); ok($res[3], "+x"); ok($res[4], "+hx"); ok($res[5], "++x"); @res = (); $packed = "xxxx"; $packed =~ s/xxx$//; eval { push @res, $c->pack('s', {}, $packed); push @res, $packed; $c->pack('s', $val, $packed); push @res, $packed; }; ok($@, '', "failed during 3-arg pack test"); ok(@res == 3); ok($res[0], "x\0\0\0"); ok($res[1], "x"); ok($res[2], "x\0\0\0"); } sub rec_write { my $ref = shift; my $r = ref $ref; if( $r eq 'HASH' ) { for my $k ( keys %$ref ) { if( ref $ref->{$k} ) { $r = rec_write( $ref->{$k} ); $r and return $r; } else { eval { $ref->{$k} = 42 }; $@ and return $@; } } } elsif( $r eq 'ARRAY' ) { for my $i ( 0 .. $#$ref ) { if( ref $ref->[$i] ) { $r = rec_write( $ref->[$i] ); $r and return $r; } else { eval { $ref->[$i] = 42 }; $@ and return $@; } } } return ''; } sub reccmp_keys { my($ref,$chk) = @_; my $r = ref $ref; if( $r eq 'HASH' ) { defined $chk or return "undefined hash reference"; keys(%$ref) == keys(%$chk) or return "key counts differ"; for my $k ( keys %$ref ) { exists $chk->{$k} or return "reference key '$k' not found"; $r = reccmp_keys( $ref->{$k}, $chk->{$k} ); $r and return $r; } } elsif( $r eq 'ARRAY' ) { defined $chk or return "undefined array reference"; @$ref == @$chk or return "array lengths differ"; for my $i ( 0 .. $#$ref ) { $r = reccmp_keys( $ref->[$i], $chk->[$i] ); $r and return $r; } } return ''; } Convert-Binary-C-0.85/tests/803_pod_coverage.t0000644000175000001440000000154214677003452017573 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More; eval 'use Pod::Coverage 0.10'; plan skip_all => "testing pod coverage requires Pod::Coverage 0.10" if $@; eval 'use Test::Pod::Coverage 1.08'; plan skip_all => "testing pod coverage requires Test::Pod::Coverage 1.08" if $@; plan tests => 2; my $trust_parents = { coverage_class => 'Pod::Coverage::CountParents' }; pod_coverage_ok("Convert::Binary::C"); pod_coverage_ok("Convert::Binary::C::Cached", $trust_parents); # Convert::Binary::C::Cached simply inherits Convert::Binary::C documentation Convert-Binary-C-0.85/tests/801_examples.t0000644000175000001440000000142414677003452016751 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { @files = ; plan tests => 1 + 3*@files; } ok( @files > 0 ); $perl = "$^X -w " . join( ' ', map qq["-I$_"], @INC ); for my $ex ( @files ) { my $out = ''; my $open; print "# checking '$ex'\n"; if( $open = open FILE, "$perl $ex |" ) { $out = do { local $/; }; close FILE; } ok( $open ); ok( length($out) > 0 ); ok( $?, 0 ); } Convert-Binary-C-0.85/tests/204_enum.t0000644000175000001440000001020114677003452016065 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 182 } eval { $p = Convert::Binary::C->new( ByteOrder => 'BigEndian', EnumSize => 4, EnumType => 'Integer' ); }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $p->parse(<<'EOF'); enum ubyte_u { ZERO, ONE, TWO, THREE, ANOTHER_ONE = 1, BIGGEST = 255 }; enum sbyte_u { MINUS_TWO = -2, MINUS_ONE, Z_E_R_O, PLUS_ONE, NEG = -1, NOTHING, POS, MIN = -128, MAX = 127 }; enum uword_u { W_BIGGEST = 65535 }; enum sword_u { W_MIN = -32768, W_MAX = 32767 }; enum ulong_u { WHATEVER = 65536 }; enum slong_u { NEGATIVE = -32769 }; enum sword_s { SWS = -129 }; enum uword_s { UWS = 128 }; enum slong_s { SLS = -32769 }; enum ulong_s { ULS = 32768 }; EOF }; ok($@,'',"parse() failed"); # catch all warnings for further checks $SIG{__WARN__} = sub { push @warn, $_[0] }; sub chkwarn { ok( scalar @warn, scalar @_, "wrong number of warnings" ); ok( shift @warn, $_ ) for @_; @warn = (); } #----------------------------------------------------- # check sizeof() #----------------------------------------------------- ok($p->sizeof('ubyte_u'),4,"ubyte_u size"); ok($p->sizeof('sbyte_u'),4,"sbyte_u size"); ok($p->sizeof('uword_u'),4,"uword_u size"); ok($p->sizeof('sword_u'),4,"sword_u size"); ok($p->sizeof('ulong_u'),4,"ulong_u size"); ok($p->sizeof('slong_u'),4,"slong_u size"); eval { $p->EnumSize( -1 ) }; ok($@,'',"failed in configure"); chkwarn; ok($p->sizeof('ubyte_u'),2,"ubyte_u size"); ok($p->sizeof('sbyte_u'),1,"sbyte_u size"); ok($p->sizeof('uword_u'),4,"uword_u size"); ok($p->sizeof('sword_u'),2,"sword_u size"); ok($p->sizeof('ulong_u'),4,"ulong_u size"); ok($p->sizeof('slong_u'),4,"slong_u size"); ok($p->sizeof('uword_s'),2,"uword_u size"); ok($p->sizeof('sword_s'),2,"sword_u size"); ok($p->sizeof('ulong_s'),4,"ulong_u size"); ok($p->sizeof('slong_s'),4,"slong_u size"); eval { $p->EnumSize( 0 ) }; ok($@,'',"failed in configure"); chkwarn; ok($p->sizeof('ubyte_u'),1,"ubyte_u size"); ok($p->sizeof('sbyte_u'),1,"sbyte_u size"); ok($p->sizeof('uword_u'),2,"uword_u size"); ok($p->sizeof('sword_u'),2,"sword_u size"); ok($p->sizeof('ulong_u'),4,"ulong_u size"); ok($p->sizeof('slong_u'),4,"slong_u size"); #----------------------------------------------------- # check enum types #----------------------------------------------------- @ubyte = ( [ 0, 'ZERO' ], [ 1, 'ONE' ], [ 2, 'TWO' ], [ 3, 'THREE' ], [ 42, ''], [255, 'BIGGEST' ], ); for( @ubyte ) { eval { $pk = $p->unpack( 'ubyte_u', pack('C', $_->[0]) ) }; ok($@,'',"failed for (@$_)"); chkwarn; ok($_->[0] == $pk); chkwarn; ok($_->[1] ne $pk); chkwarn; } eval { $p->EnumType( 'String' ) }; ok($@,'',"failed in configure"); chkwarn; for( @ubyte ) { eval { $pk = $p->unpack( 'ubyte_u', pack('C', $_->[0]) ) }; ok($@,'',"failed for (@$_)"); chkwarn; ok($_->[0] != $pk ? 1 : $_->[0] == 0); chkwarn( qr/Argument "$pk" isn't numeric/ ); ok($_->[1] eq $pk); chkwarn; } eval { $p->EnumType( 'Both' ) }; ok($@,'',"failed in configure"); chkwarn; for( @ubyte ) { eval { $pk = $p->unpack( 'ubyte_u', pack('C', $_->[0]) ) }; ok($@,'',"failed for (@$_)"); chkwarn; ok($_->[0] == $pk); chkwarn; ok($_->[1] eq $pk); chkwarn; } #----------------------------------------------------- # check pack/unpack # (some of these may issue warnings in the future) #----------------------------------------------------- @sbyte = ( ['ZERO', 0, 'Z_E_R_O' ], ['NOTHING', 0, 'Z_E_R_O' ], [-2, -2, 'MINUS_TWO'], ['-2', -2, 'MINUS_TWO'], ['POS', 1, 'PLUS_ONE' ], ['THREE', 3, '' ], ); for( @sbyte ) { eval { $pk = $p->unpack( 'sbyte_u', $p->pack( 'sbyte_u', $_->[0] ) ) }; ok($@,'',"failed for (@$_)"); chkwarn; ok($_->[1] == $pk); chkwarn; ok($_->[2] eq $pk); chkwarn; } Convert-Binary-C-0.85/tests/243_parser.t0000644000175000001440000000120114677003452016420 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 2; use Convert::Binary::C @ARGV; use strict; $^W = 1; my $c = Convert::Binary::C->new; eval { $c->parse_file('tests/parser/context.c') }; is($@, '', 'parse context.c'); eval { $c->parse_file('tests/parser/bug1.c') }; like($@, qr/syntax error/, 'parse bug1.c'); Convert-Binary-C-0.85/tests/218_member.t0000644000175000001440000002237514677003452016414 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 417; } my $CCCFG = require './tests/include/config.pl'; %basic = ( char => 1, short => 1, int => 1, long => 1, signed => 1, unsigned => 1, float => 1, double => 1, void => 1 ); eval { $c = Convert::Binary::C->new( ShortSize => 2, IntSize => 4, LongSize => 4, LongLongSize => 8, EnumSize => 4, PointerSize => 4, Alignment => 4, )->parse( < [qw(.apple.color[0] .grape[0] .melon.weight .melon.foo .melon.test .melon.compound.a)], types => [qw(char char long short enum char )], }, { members => [qw(.apple.color[1] .grape[1] .melon.weight+1 .melon.foo+1 .melon.test+1 .melon.compound+1)], types => [qw(char char long short enum struct )], }, { members => [qw(.grape[2] .melon.compound.b .melon.compound.c .melon.weight+2 .melon.test+2 .apple+2)], types => [qw(char short char long enum struct )], }, { members => [qw(.melon.weight+3 .melon.test+3 .melon.compound.b+1 .apple+3)], types => [qw(long enum short struct )], }, { members => [qw(.apple.size .melon.price[0])], types => [qw(long short )], }, { members => [qw(.apple.size+1 .melon.price[0]+1)], types => [qw(long short )], }, { members => [qw(.melon.price[1] .apple.size+2)], types => [qw(short long )], }, { members => [qw(.apple.size+3 .melon.price[1]+1)], types => [qw(long short )], }, { members => [qw(.apple.stuff.foo.a .apple.stuff.taste .melon.price[2])], types => [qw(char char short )], }, { members => [qw(.melon.price[2]+1 .apple+9)], types => [qw(short struct )], }, { members => [qw(.apple+10 .melon+10)], types => [qw(struct struct )], }, { members => [qw(.apple+11 .melon+11)], types => [qw(struct struct )], }, ); for my $off ( 0 .. $c->sizeof( 'Union' )-1 ) { my @members = eval { $c->member( 'Union', $off ) }; ok( $@, '' ); for( 0 .. $#members ) { my $type = eval { $c->typeof( "Union $members[$_]" ) }; ok( $@, '' ); ok( $members[$_], $ref[$off]{members}[$_] ); ok( $type, $ref[$off]{types}[$_] ); } } run_tests($c); eval { $c->configure(%$CCCFG)->clean->parse_file( 'tests/include/include.c' ); }; ok($@,'',"failed to create Convert::Binary::C object"); run_tests($c); sub run_tests { my $c = shift; for my $mtype ( $c->compound_names ) { my @warn; local $SIG{__WARN__} = sub { push @warn, $_[0] }; my $fail = 0; my $success = 0; my $sizeof = $c->sizeof($mtype); for my $off ( 0 .. $sizeof ) { my @warn; my $member = eval { $c->member( $mtype, $off ) }; if( $off == $sizeof ) { unless( $@ =~ /Offset $off out of range \(0 <= offset < $sizeof\)/ ) { print "# wrong error\n"; $fail++; } else { $success++ } } else { unless( $@ eq '' ) { print "# unexpected error\n"; $fail++; } else { $success++ } my @members = eval { $c->member( $mtype, $off ) }; unless( $@ eq '' ) { print "# unexpected error\n"; $fail++; } else { $success++ } unless( @members > 0 and $members[0] eq $member ) { print "# wrong members in list context\n"; $fail++; } else { $success++ } for $member( @members ) { my $type = eval { $c->typeof( "$mtype $member" ) || '[pad]' }; unless( $@ eq '' ) { print "# unexpected error\n"; $fail++; } else { $success++ } my $offset = eval { $c->offsetof($mtype, $member) }; unless( $@ eq '' ) { print "# unexpected error\n"; $fail++; } else { $success++ } unless( $offset == $off ) { print "# invalid offset\n"; $fail++; } else { $success++ } $member =~ s/\+\d+$//; while( $member ) { my $typeof = eval { $c->typeof("$mtype $member") }; unless( $@ eq '' ) { print "# unexpected error\n"; $fail++; } else { $success++ } unless( defined $typeof ) { print "# undefined type\n"; $fail++; } else { $success++ } $member =~ s/(?:\[\d+\]|\.\w+|^\w+)$//; } } } } for( @warn ) { print "# wrong warning\n"; $fail++; } ok( $fail == 0 ); ok( $success > 0 ); } for my $t ( $c->compound_names, $c->typedef_names ) { my %h; my @m; my $fail = 0; my $success = 0; my $meth = $c->def($t) or next; my $def = $c->$meth( $t ); $meth eq 'typedef' and $h{$t} = $t; get_types( \%h, \@m, $c, $t, $def ); while( my($k,$v) = each %h ) { my $to = $c->typeof($k); unless( $to eq $v ) { print "# typeof mismatch for $meth <$k> ('$to' != '$v')\n"; $fail++; } else { $success++ } } ok( $fail == 0 ); ok( $success > 0 ); if( @m >= 2 ) { $fail = $success = 0; my %dup; for my $member ( $c->member($t) ) { my $ref = shift @m; warn "[$t][$member]" unless defined $ref; if( $t.$member ne $ref ) { print "# '$t$member' ne '$ref'\n"; $fail++; } else { $success++ } if( $dup{$member}++ ) { print "# duplicate member '$t$member' (count=$dup{$member})\n"; $fail++; } else { $success++ } } ok( $fail == 0 ); ok( $success > 0 ); } } } sub get_types { my($r, $m, $c, $t, $d) = @_; if( exists $d->{declarator} ) { my($p,$n,$a) = $d->{declarator} =~ /^(\*?)(\w+)((?:\[\])?(?:\[\d+\])*)$/ or die "BOO!"; my $dim = [$a =~ /\[(\d+)?\]/g]; get_array($r, $m, $c, $t, $d->{type}, $p, $dim); } elsif( exists $d->{declarations} ) { # it's a compound for my $d1 ( @{$d->{declarations}} ) { if( exists $d1->{declarators} ) { for my $d2 ( @{$d1->{declarators}} ) { my($p,$n,$b,$a) = $d2->{declarator} =~ /^(\*?)(\w*)(:\d+)?((?:\[\])?(?:\[\d+\])*)$/ or die "BOO!"; defined $b and $n eq '' and next; my $dim = [$a =~ /\[(\d+)?\]/g]; get_array($r, $m, $c, "$t.$n", $b ? "$d1->{type} $b" : $d1->{type}, $p, $dim); } } else { get_types($r, $m, $c, $t, $d1->{type}); } } } else { push @$m, $t; } } sub get_array { my($r, $m, $c, $t, $d, $p, $dim) = @_; my $rt; if( ref $d ) { if( exists $d->{declarations} ) { $rt = $d->{type}; } elsif( exists $d->{enumerators} ) { $rt = 'enum'; } else { die "BOO!" } } else { $rt = $d } my $a = join '', map { defined $_ ? "[$_]" : '[]' } @$dim; $p and $rt .= " $p"; $a and $rt .= " $a"; $r->{$t} ||= $rt; if( @$dim ) { my @dim = @$dim; my $cd = shift @dim; defined $cd or return; # don't add incomplete types for my $i ( 0 .. $cd-1 ) { get_array($r, $m, $c, $t."[$i]", $d, $p, \@dim); } } elsif( !$p ) { if( ref $d ) { get_types($r, $m, $c, $t.$a, $d); } else { if( $d =~ /^(?:struct|union)/ ) { get_types($r, $m, $c, $t.$a, $c->compound($d)); } elsif( $d =~ /^enum\s+\w+/ ) { push @$m, $t; } elsif( $d =~ /^\w+$/ and not exists $basic{$d} ) { get_types($r, $m, $c, $t.$a, $c->typedef($d)); } else { push @$m, $t; } } } else { push @$m, $t; } } Convert-Binary-C-0.85/tests/238_byteorder.t0000644000175000001440000001103014677003452017130 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 32; use Convert::Binary::C @ARGV; my $c = Convert::Binary::C->new( ByteOrder => 'LittleEndian', IntSize => 4, EnumSize => 4 ); eval { $c->parse(<clone->ByteOrder('LittleEndian'); my $c_be = $c->clone->ByteOrder('BigEndian'); my $data = $c->pack('test', $c->unpack('test', pack("C*", 1 .. $c->sizeof('test')))); my($t,$l,$b); # ----------------- $c->tag('bits', ByteOrder => 'BigEndian'); $c->tag('weekday', ByteOrder => 'BigEndian'); $c->tag('array', ByteOrder => 'BigEndian'); $t = $c->unpack('test', $data); $l = $c_le->unpack('test', $data); $b = $c_be->unpack('test', $data); is($t->{bits}{a}, $b->{bits}{a}, 'bits.a'); is($t->{bits}{x}, $l->{bits}{x}, 'bits.a'); is($t->{bits}{y}, $l->{bits}{y}, 'bits.a'); is($t->{bits}{b}, $b->{bits}{b}, 'bits.a'); is($t->{day}, $b->{day}, 'enum weekday'); is($c->pack('test', $t), $data, 'pack test'); $t = $c->unpack('array', $data); $b = $c_be->unpack('array', $data); is_deeply($t, $b, 'array'); # ----------------- for (qw( bits weekday array )) { $c->untag($_, 'ByteOrder'); } $t = $c->unpack('test', $data); $l = $c_le->unpack('test', $data); is($t->{bits}{a}, $l->{bits}{a}, 'bits.a'); is($t->{bits}{x}, $l->{bits}{x}, 'bits.a'); is($t->{bits}{y}, $l->{bits}{y}, 'bits.a'); is($t->{bits}{b}, $l->{bits}{b}, 'bits.a'); is($t->{day}, $l->{day}, 'enum weekday'); is($c->pack('test', $t), $data, 'pack test'); # ----------------- $t = $c->unpack('array', $data); $l = $c_le->unpack('array', $data); is_deeply($t, $l, 'array'); is($c->pack('array', $t), $data, 'pack array'); # ----------------- $c->tag('test', ByteOrder => 'BigEndian'); $t = $c->unpack('test', $data); $b = $c_be->unpack('test', $data); delete $t->{bit}; delete $b->{bit}; is_deeply($t, $b, 'test'); # ----------------- $c->tag('test.bit', ByteOrder => 'LittleEndian'); $t = $c->unpack('test', $data); $b = $c_be->unpack('test', $data); $l = $c_le->unpack('test', $data); $b->{bit} = $l->{bit}; is_deeply($t, $b, 'test'); is($c->pack('test', $t), $data, 'pack test'); # ----------------- $c->tag('test.bit.a', ByteOrder => 'BigEndian'); $t = $c->unpack('test', $data); $b = $c_be->unpack('test', $data); $l = $c_le->unpack('test', $data); $l->{bit}{a} = $b->{bit}{a}; $b->{bit} = $l->{bit}; is_deeply($t, $b, 'test'); is($c->pack('test', $t), $data, 'pack test'); # ----------------- # test precedence of 'struct bits' over 'test.bit' $c->tag('bits', ByteOrder => 'BigEndian'); $t = $c->unpack('test', $data); $b = $c_be->unpack('test', $data); $l = $c_le->unpack('test', $data); $b->{bit}{y} = $l->{bit}{y}; $b->{bit}{z} = $l->{bit}{z}; is_deeply($t, $b, 'test'); is($c->pack('test', $t), $data, 'pack test'); # ----------------- for (qw( test test.bit test.bit.a bits )) { $c->untag($_, 'ByteOrder'); } $t = $c->unpack('test', $data); $l = $c_le->unpack('test', $data); is_deeply($t, $l, 'test'); is($c->pack('test', $t), $data, 'pack test'); # ----------------- # test that hooks work correctly $b = $c_be->unpack('test', $data); my $phc = 0; my $uhc = 0; sub unpack_xxx { my $xxx = shift; is_deeply($xxx, $b->{yyy}, 'unpack_xxx'); $uhc++; return $xxx; } sub pack_xxx { my $xxx = shift; is_deeply($xxx, $b->{yyy}, 'pack_xxx'); $phc++; return $xxx; } $c->tag('xxx', ByteOrder => 'BigEndian', Hooks => { unpack => \&unpack_xxx, pack => \&pack_xxx }); $t = $c->unpack('test', $data); $l = $c_le->unpack('test', $data); $l->{yyy} = $b->{yyy}; is($uhc, 1, 'unpack hook calls'); is_deeply($t, $l, 'test'); is($c->pack('test', $t), $data, 'pack test'); is($phc, 1, 'pack hook calls'); # ----------------- # bitfields cannot be tagged eval { $c->tag('bits.y', ByteOrder => 'BigEndian'); }; like($@, qr/Cannot use 'ByteOrder' tag on bitfields/, 'tagging bitfield'); Convert-Binary-C-0.85/tests/227_flexarray.t0000644000175000001440000000574014677003452017137 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 49 } my $c = Convert::Binary::C->new( IntSize => 4, ShortSize => 2, Alignment => 4 ); $c->parse(<sizeof('flex1'), 24); ok($c->offsetof('flex1', 'e[1].a'), 24); ok($c->offsetof('flex1', 'e[0].b[0][0]'), 24); ok($c->sizeof('flex2'), 4); ok($c->offsetof('flex2', 'b[0].b'), 6); ok($c->sizeof('flex3'), 4); ok($c->sizeof('flex3.b'), 0); ok($c->sizeof('flex3.b[0]'), 96); ok($c->sizeof('flex3.b[0][1]'), 48); ok($c->sizeof('flex3.b[0][1][2]'), 16); ok($c->sizeof('flex3.b[0][1][2][3]'), 4); ok($c->offsetof('flex3', 'b[0]'), 4); ok($c->offsetof('flex3', 'b[0][0]'), 4); ok($c->offsetof('flex3', 'b[0][0][0]'), 4); ok($c->offsetof('flex3', 'b[0][0][0][0]'), 4); ok($c->offsetof('flex3', 'b[1]'), 100); ok($c->offsetof('flex3', 'b[0][1]'), 52); ok($c->offsetof('flex3', 'b[0][0][1]'), 20); ok($c->offsetof('flex3', 'b[0][0][0][1]'), 8); ok($c->sizeof('incomplete'), 0); ok($c->offsetof('incomplete', '[10]'), 40); my($u, $p); my $d = pack 'C*', 1 .. 4; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 0); $d .= pack 'C', 5; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 1); ok(scalar @{$u->{b}[0]{a}}, 2); ok($u->{b}[0]{a}[0], 5); ok(not defined $u->{b}[0]{b}); $d .= pack 'C', 6; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 1); ok(scalar @{$u->{b}[0]{a}}, 2); ok($u->{b}[0]{a}[0], 5); ok($u->{b}[0]{a}[1], 6); ok(not defined $u->{b}[0]{b}); $d .= pack 'C', 7; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 1); ok(scalar @{$u->{b}[0]{a}}, 2); ok($u->{b}[0]{a}[0], 5); ok($u->{b}[0]{a}[1], 6); ok(exists $u->{b}[0]{b}); ok(not defined $u->{b}[0]{b}); $d .= pack 'C', 8; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 1); ok(scalar @{$u->{b}[0]{a}}, 2); ok($u->{b}[0]{a}[0], 5); ok($u->{b}[0]{a}[1], 6); ok(exists $u->{b}[0]{b}); ok(defined $u->{b}[0]{b}); $d .= pack 'C', 9; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 2); $d = pack 'C*', map { $_ % 256 } 1 .. (10*$c->sizeof('flex3.b[0]')); $u = $c->unpack('flex3.b', $d); $p = $c->pack('flex3.b', $u); ok($d, $p); for my $member (qw( b[0] b[0][1] b[0][1][2] b[0][1][2][3] )) { $d = pack 'C*', 1 .. $c->sizeof("flex3.$member"); $u = $c->unpack("flex3.$member", $d); $p = $c->pack("flex3.$member", $u); ok($d, $p); } Convert-Binary-C-0.85/tests/211_clone.t0000644000175000001440000000563114677003452016232 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 35 } my $CCCFG = require './tests/include/config.pl'; eval { $orig = Convert::Binary::C->new( %$CCCFG ); }; ok($@,'',"failed to create Convert::Binary::C object"); eval { # Clone at least twice, to make sure memory of the first clone(s) will # get freed (and to make sure that cloning works a couple of times) $clone = $orig->clone->clone->clone; }; ok($@,'',"failed to clone empty object"); ok( reccmp($orig->configure(), $clone->configure()), 1, "wrong configuration" ); eval { my $foo = $clone->struct; }; ok( $@, qr/without parse data/, "parse data check failed" ); eval { $orig->parse_file( 'tests/include/include.c' ); }; ok($@,'',"failed to parse C-file"); eval { $clone = $orig->clone->clone->clone; }; ok($@,'',"failed to clone full object"); eval { $dump1 = $orig->sourcify; $dump2 = $clone->sourcify; }; ok($@,'',"failed to sourcify"); ok( $dump1, $dump2, "dumps differ" ); ok( reccmp(scalar $orig->dependencies, scalar $clone->dependencies), 1, "dependencies differ" ); ok( reccmp($orig->configure, $clone->configure), 1, "wrong configuration" ); @meth = qw( enum compound struct union typedef ); for my $meth ( @meth ) { my $meth_names = $meth.'_names'; $ORIG{$meth} = [$orig->$meth()]; $ORIG{$meth_names} = [$orig->$meth_names()]; $ORIG{$meth.'hash'} = { map { ($_ => $orig->$meth($_)) } $orig->$meth_names() }; } undef $orig; # destroy original object for my $meth ( @meth ) { my $meth_names = $meth.'_names'; my @orig_names = sort @{$ORIG{$meth_names}}; print "# checking if any names exist\n"; ok( @orig_names > 0 ); print "# checking counts for \$clone->$meth / \$clone->$meth_names\n"; ok(scalar @{$ORIG{$_}}, scalar $clone->$_(), "count mismatch in $_") for $meth, $meth_names; print "# checking parsed names for \$clone->$meth_names\n"; ok(join( ',', @orig_names ), join( ',', sort $clone->$meth_names() ), "parsed names differ in $meth_names" ); ok( scalar grep $_, map { print "# checking \$clone->$meth( \"$_\" )\n"; reccmp($ORIG{$meth.'hash'}{$_}, $clone->$meth($_)) } @orig_names ); } sub reccmp { my($ref, $val) = @_; ref $ref or return $ref eq $val; if( ref $ref eq 'ARRAY' ) { @$ref == @$val or return 0; for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ) or return 0; } } elsif( ref $ref eq 'HASH' ) { @{[keys %$ref]} == @{[keys %$val]} or return 0; for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ) or return 0; } } else { return 0 } return 1; } Convert-Binary-C-0.85/tests/219_def.t0000644000175000001440000000661414677003452015702 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 119; } $SIG{__WARN__} = sub { push @warn, $_[0] }; eval { $c = Convert::Binary::C->new; }; ok($@,'',"failed to create Convert::Binary::C object"); @tests = ( ['foo' => undef ], ['int' => 'basic'], [' unsigned long long int ' => 'basic'], ); run_tests( $c, @tests ); ok( scalar @warn, 0 ); @warn = (); $c->parse( < undef ], ['int' => 'basic' ], [' long double' => 'basic' ], ['__int' => 'typedef'], ['__array' => 'typedef'], ['__ptr' => 'typedef'], ['__ptr.foo' => '' ], ['__ptr [10]' => '' ], ['__ptr !&' => '' ], ['test' => 'typedef'], ['struct test' => 'struct' ], ['test2' => 'typedef'], ['undef' => '' ], ['undef2' => 'typedef'], ['struct undef' => '' ], ['uni' => 'typedef'], ['noenu' => '' ], ['enum enu' => 'enum' ], ['enu' => 'typedef'], ['su' => 'struct' ], ['union uni' => '' ], ['struct bar' => undef ], ['uni2' => 'union' ], ['enu2' => 'enum' ], ['test.foo' => 'member' ], ['test.bar' => '' ], ['test2.foo' => 'member' ], ['test2[3]' => '' ], ['test2.foo.x' => '' ], ['test2.foo[1]' => '' ], ['uni2.foo[1]' => 'member' ], ['uni2.foo[2][3]' => 'member' ], ['uni2.foo[-1]' => 'member' ], ['uni2.foo[2][-1]' => 'member' ], ['uni2.foo[3]' => 'member' ], ['uni2.foo[2][4]' => 'member' ], ['undef.x' => '' ], ['__array[9]' => 'member' ], ['__array[10]' => 'member' ], ['__array.xxx' => '' ], ['enu.xxx' => '' ], ['enu???' => '' ], ['enu[0]' => '' ], ['noenu.xxx' => '' ], ['noenu???' => '' ], ['noenu[0]' => '' ], ['.xxx' => undef ], ['???' => undef ], ['[0]' => undef ], ['foo.xxx' => undef ], ['foo???' => undef ], ['foo[0]' => undef ], ['short int .xxx' => undef ], ['short int ???' => undef ], ['short int [0]' => undef ], ); run_tests( $c, @tests ); ok( scalar @warn, 0 ); sub run_tests { my $c = shift; for( @_ ) { my $rv = eval { $c->def($_->[0]) }; ok( $@, '' ); unless( defined $rv and defined $_->[1] ) { ok( defined $rv, defined $_->[1] ); } else { ok( $rv, $_->[1], "wrong result for '$_->[0]'" ); } } } Convert-Binary-C-0.85/tests/603_complex.t0000644000175000001440000116324214677003452016612 0ustar mhxusers################################################################################ # # THIS IS AN AUTOMATICALLY GENERATED TEST SCRIPT # # ALL CHANGES MADE HERE WILL BE LOST # ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More; use Convert::Binary::C; use strict; use constant NALIGN => 4; use constant NTYPES => 4; $^W = 1; BEGIN { plan tests => 380 * NALIGN * NTYPES } my %reference = ( 1=>{sizeof=>{aa=>227,ey=>1092,kc=>3252,rw=>414},content=>{aa=>{ab=>'4565936802120622773',be=>{ac=>2236113589,ad=>1063090004,ae=>1394180375,af=>[-2942,20802],ag=> 8342,ah=>[[[72]],[[-61]]],ai=>'-6417061733278339648',aj=>[[['-7032909512510964018','-6786229256383406556'],['-1571745542831432406','-4920764503352773037'],[ '2454075466962463024','-3528908605309553140']],[['7015318699935418036','-3698861162604841735'],['-7616997190430405562','-3101173563121949895'],[ '-598004097643795395','6936656258274588029']],[['4448571648049379179','-1294729436797405153'],['-4386935965237698738','1037174166098171788'],[ '7322670651580882248','-7917463919004662038']]],ak=>'-7101778636909228330',al=>212,am=>-3,an=>48,ao=>2580535007,ap=>-2058853707,aq=>2236113589,ar=>1063090004, as=>[[1394180375,1363342466]],at=>[-1018683242,1177628096,-1494088614],au=>206,av=>126,aw=>29009,ax=>[[['4676810249416873487','-7333376236790318990']]],ay=> '7660190118987172289',az=>[[['10109570921568530113','555198448556482722','6327072268883512402'],['13363082765023275824','8160324916783808862', '3983613338139164009'],['699936173668592403','7742379893290399345','2872020490439095325']],[['16101204430866382936','10060794516430402159', '12429468283669739771'],['1344356684086429800','11655675283152788009','16253859213638337667'],['3112266432129362420','2536546716242400991', '7752623011068607848']]],ba=>'4114580608502146666',bb=>-680158697,bc=>'4565936802120622773',bd=>[[[25269],[34120],[30548]]]},db=>{bf=>2236113589,bg=>2236113589, bo=>{bh=>[[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[ [-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=> -126,bj=>1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=> 2800878682,bk=>[[-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=> [[1088904740,-1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707, 1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527, 1783526995,-1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>1740,bw=>[207,180,70],bx=>1798330318,by=>888758619,bz=>'5496305430086728051',ca=> 4251545919,cb=>2738460234,cc=>1796421448,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707, cj=>[[25269,34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[ 1063090004]]],[[[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]] ,cv=>32462,cw=>29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dc=>{bf=>2236113589,bg=>2236113589,bo=>{bh=> [[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98,72]],bi=> -75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=>-126,bj=> 1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=>2800878682,bk=>[ [-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=>[[1088904740, -1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707,1063090004, 1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527,1783526995, -1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>1740,bw=>[207,180,70],bx=>1798330318,by=>888758619,bz=>'5496305430086728051',ca=>4251545919,cb=> 2738460234,cc=>1796421448,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707,cj=>[[25269, 34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[1063090004]]],[ [[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]],cv=>32462,cw=> 29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dd=>25269,dj=>{de=>-2058853707,df=>[[1063090004,1394180375, 1363342466],[-1018683242,1177628096,-1494088614],[1901166286,-1637476849,1088904740]],dg=>-1580042126,dh=>[[2587532586,3929016769,1783526995],[3149262529, 2353817904,571383970]],di=>129267212},dk=>-13230,dl=>[[-12538],[18100]],dm=>[[1798330318,888758619,22985075],[1279708331,-43421377,-1556507062]],dn=>1796421448, dp=>2889733366,dq=>1987119542,dr=>-77,ds=>-9,dt=>125,du=>493580917,dv=>244,dw=>244,dx=>[[17396,27488],[-9353,22567],[-17280,7997]],dy=>-12,dz=>-12,ea=> 1801470964,eb=>[[1801470964,1479007095,524139648],[1876914936,1324222514,-74735841],[-1933369736,1756134999,1208902856]],ec=>43037,ed=>10514,ee=>3932528474,ef=> 49478,eg=>-95,eh=>-125,ei=>-124,ej=>-28129,ek=>20182,el=>[[[145,225],[244,105]],[[113,157],[212,253]],[[48,43],[223,214]]],em=>[[[207,153],[204,159],[51,35]],[[ 104,125],[67,172],[141,217]]],en=>644508566,eo=>123,ep=>434979697,ev=>{eq=>1973032761,er=>5945,es=>1973032761,et=>1973032761,eu=>'8996495334923966265'},ew=>{eq=> 39391232,er=>4096,es=>39391232,et=>39391232,eu=>'6206519744700944384'},ex=>40583817},ey=>{ez=>-2058853707,fa=>2236113589,fn=>{fb=>-2058853707,fc=>-2058853707, fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773',fh=>'4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[-75],[98],[72] ],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fo=>{fb=>-2058853707,fc=>-2058853707,fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773',fh=> '4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[-75],[98],[72]],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fp=> '4565936802120622773',fq=>6529,fr=>[6529,33363],fs=>6529,ft=>2186484097,fu=>[[2186484097,2521907956],[3234023456,1514549549],[3467047428,259084670]],fv=> -2108483199,fw=>-127,fx=>129,fy=>129,fz=>'10831512196728691073',ga=>'10831512196728691073',gb=>6529,gc=>6529,gd=>6529,ge=>-127,gf=>-127,gg=>[-127,25,83],gh=> '10831512196728691073',gi=>2186484097,gj=>2186484097,gk=>2186484097,gl=>['-7615231876980860543'],gu=>{gm=>-2108483199,gn=>-2108483199,go=>129,gp=> '-7615231876980860543',gq=>-2108483199,gr=>-127,gs=>2186484097,gt=>'10831512196728691073'},gv=>[[{gm=>-2108483199,gn=>-2108483199,go=>129,gp=> '-7615231876980860543',gq=>-2108483199,gr=>-127,gs=>2186484097,gt=>'10831512196728691073'},{gm=>-1060943840,gn=>-1060943840,go=>32,gp=>'6504940784360572960',gq=> -1060943840,gr=>32,gs=>3234023456,gt=>'6504940784360572960'}]],gw=>['-7615231876980860543','6504940784360572960'],gx=>-827919868,gy=>259084670,gz=>614360598,ha=> [94,-25],hb=>64,hc=>2714925170,hd=>42,he=>[[[[3248110237,1407856649],[3244969590,817608174]]],[[[2727103593,203558560],[1376236662,3033466572]]]],hf=>811060806, hg=>4183907179,ii=>{hh=>29492,hi=>2868993721,ht=>{hj=>1061963468,hk=>1061963468,hl=>[[[1061963468,1258121585,1218656662],[4134212407,3064741332,3010883849],[ 1920302583,1140071787,3682036576]],[[3162527783,1928863549,137523167],[2669629166,511245195,2119666883],[1690855596,2820491278,2673486098]],[[3242650213, 528778145,2437863058],[1902769377,821941405,3486965547],[866110617,1132292131,2530839980]]],hm=>18124,hn=>1061963468,ho=>'5403591063028647628',hp=>1061963468, hq=>'5403591063028647628',hr=>'5403591063028647628',hs=>[[1061963468,1258121585],[1218656662,4134212407],[3064741332,3010883849]]},hu=>{hj=>2066115179,hk=> 2066115179,hl=>[[[2066115179,434979697,1973032761],[2094659799,39391232,1445067987],[40583817,1580995961,168426868]],[[739844825,2609835361,529970473],[ 2590699064,2047389645,4275757564],[1599852312,639393769,1096378874]],[[4048258895,3751173167,4265567420],[2631701798,1591186106,3448256614],[4099862281, 257892341,478367088]]],hm=>27243,hn=>2066115179,ho=>'1868223575105104491',hp=>2066115179,hq=>'1868223575105104491',hr=>'1868223575105104491',hs=>[[2066115179, 434979697],[1973032761,2094659799],[39391232,1445067987]]},hv=>114,hw=>44,hx=>[-988190303],ig=>[[[{hy=>23748,hz=>23748,ia=>196,ib=>196,ic=>196,id=>196,ie=> '11365169102163303620'}]],[[{hy=>24941,hz=>24941,ia=>109,ib=>109,ic=>109,id=>109,ie=>'13567870743850475885'}]],[[{hy=>-11190,hz=>-11190,ia=>74,ib=>74,ic=>74,id=> 74,ie=>'17173701045531300938'}]]],ih=>{hy=>10191,hz=>10191,ia=>207,ib=>207,ic=>207,id=>207,ie=>'7847850852181682127'}},ij=>{hh=>-11566,hi=>1697162977,ht=>{hj=> 1529047093,hk=>1529047093,hl=>[[[1529047093,1371903687,2290446858],[165220430,149661630,2108746580],[4227600348,1239766853,582330105]],[[3693804236,2766939574, 1417610455],[2395257232,4211233639,3529571372],[2818993171,2702852244,3165192387]],[[229373297,2696981457,4274564980],[1463793521,494773502,1954307227],[ 1623627362,3961113055,6579173]]],hm=>26677,hn=>1529047093,ho=>'5892281470455867445',hp=>1529047093,hq=>'5892281470455867445',hr=>'5892281470455867445',hs=>[[ 1529047093,1371903687],[2290446858,165220430],[149661630,2108746580]]},hu=>{hj=>1097505666,hk=>1097505666,hl=>[[[1097505666,4184318197,3895793435],[3424416027, 761365779,1347692042],[3429054781,1339091116,1942950585]],[[30830267,2447616607,1052925947],[4232344086,4272590830,3481479692],[2458973249,2645788579, 1467715989]],[[3226244056,346641273,2370569288],[3060102578,2433158768,1341821256],[243460333,2573511341,4035709670]]],hm=>-25726,hn=>1097505666,ho=> '-475234260439360638',hp=>1097505666,hq=>'-475234260439360638',hr=>'-475234260439360638',hs=>[[1097505666,4184318197],[3895793435,3424416027],[761365779, 1347692042]]},hv=>225,hw=>27,hx=>[-1991215222],ig=>[[[{hy=>-25750,hz=>-25750,ia=>106,ib=>106,ic=>106,id=>106,ie=>'8673948681434405738'}]],[[{hy=>-30676,hz=> -30676,ia=>44,ib=>44,ic=>44,id=>44,ie=>'10097157064263724'}]],[[{hy=>-8752,hz=>-8752,ia=>208,ib=>208,ic=>208,id=>208,ie=>'6718379304003558864'}]]],ih=>{hy=> 10341,hz=>10341,ia=>101,ib=>101,ic=>101,id=>101,ie=>'11657439497090705509'}},ik=>{hh=>10603,hi=>351280026,ht=>{hj=>-1346672415,hk=>2948294881,hl=>[[[2948294881, 3655360865,3346613230],[2450346747,3648337199,2496835080],[1565847668,139126258,817237115]],[[2909240466,270852330,218837925],[1405537528,2956139561,511590166], [148058538,3944296135,1812827861]],[[3071804446,2054413311,830502626],[2467574175,4131893030,2775911303],[2721643314,3619447352,585841810]]],hm=>26849,hn=> -1346672415,ho=>'-2747088700507985695',hp=>2948294881,hq=>'-2747088700507985695',hr=>'-2747088700507985695',hs=>[[2948294881,3655360865],[3346613230,2450346747] ,[3648337199,2496835080]]},hu=>{hj=>-159562305,hk=>4135404991,hl=>[[[4135404991,3200800378,3155438837],[1062373975,3564703064,3472097201],[3126548990, 3463059680,1822581411]],[[2222092088,1186625912,1616193189],[821530386,1163541316,2890860158],[2123178588,2115744415,3271129554]],[[133189936,1926609708, 4160372370],[2380388374,2210390220,1565437161],[2144223499,2858829409,3900126922]]],hm=>17855,hn=>-159562305,ho=>'-4699411125039708737',hp=>4135404991,hq=> '-4699411125039708737',hr=>'-4699411125039708737',hs=>[[4135404991,3200800378],[3155438837,1062373975],[3564703064,3472097201]]},hv=>221,hw=>4,hx=>[1108146278], ig=>[[[{hy=>21726,hz=>21726,ia=>222,ib=>222,ic=>222,id=>222,ie=>'13843293169098642654'}]],[[{hy=>-21139,hz=>-21139,ia=>109,ib=>109,ic=>109,id=>109,ie=> '17996553021379685741'}]],[[{hy=>-27813,hz=>-27813,ia=>91,ib=>91,ic=>91,id=>91,ie=>'17813452546388300635'}]]],ih=>{hy=>-14352,hz=>-14352,ia=>240,ib=>240,ic=> 240,id=>240,ie=>'2588399536815785968'}},iu=>{il=>2329090767,im=>2329090767,in=>-49,io=>-49,ip=>-49,iq=>-1965876529,ir=>[[2329090767,1226501598],[1007219180, 4127599504],[209800661,84792733]],is=>2329090767,it=>2329090767},iv=>2329090767,iw=>2329090767,ix=>207,iy=>207,iz=>207,ja=>207,jb=>207,jc=>6863,jd=>6863,je=> '5267784254230829775',jf=>207,jg=>207,jr=>{jh=>-1965876529,ji=>[[[['5267784254230829775','17727904881673040364','364182015383260629'],['17912600136945136513', '15372549561020508183','3706597232105136756'],['165826160576807448','9159281194154625044','10539241801784512225']]]],jj=>207,jk=>-1965876529,jl=>-1965876529,jm=> 2329090767,jn=>-49,jo=>-49,jp=>'5267784254230829775',jq=>6863},js=>{jh=>-1965876529,ji=>[[[['5267784254230829775','17727904881673040364','364182015383260629'],[ '17912600136945136513','15372549561020508183','3706597232105136756'],['165826160576807448','9159281194154625044','10539241801784512225']]]],jj=>207,jk=> -1965876529,jl=>-1965876529,jm=>2329090767,jn=>-49,jo=>-49,jp=>'5267784254230829775',jq=>6863},jt=>{ab=>'5267784254230829775',be=>{ac=>2329090767,ad=> 1226501598,ae=>1007219180,af=>[11152,-2554],ag=>19925,ah=>[[[-127]],[[12]]],ai=>'7366327138490635677',aj=>[[['-1966128997648148757','5841910289332061280'],[ '-5501777960565179765','-2918182939016748541'],['6147500221767896503','-952088960241047404']],[['-4113729762056216629','661121419905120185'],[ '2484523362500116246','342043602930306034'],['-4289663538999748879','-4264620330907031332']],[['-1158642252517858277','-4430592456475973639'],[ '-4842103161220413557','-5621018274660407363'],['8667343833828280883','8156967013470161822']]],ak=>'-5334040525841725014',al=>122,am=>-92,an=>10,ao=>2448398173, ap=>-1965876529,aq=>2329090767,ar=>1226501598,as=>[[1007219180,4127599504]],at=>[209800661,84792733,1715106689],au=>235,av=>86,aw=>63638,ax=>[[[ '-3074194512689043433','3706597232105136756']]],ay=>'165826160576807448',az=>[[['9159281194154625044','10539241801784512225','12587525550568472610'],[ '13463713094558095507','12248241869207422573','4204967811668954325'],['2880499398591065816','7665312231927057853','10730428763848377959']],[[ '10896855096569343234','6172543429877391266','2225666336721036500'],['11061344483177013673','177834591787718475','1705326774049791560'],['14630687186412482151', '13646984094128510813','547002114926405607']]],ba=>'14762966666846027756',bb=>-1970104775,bc=>'5267784254230829775',bd=>[[[6863],[35539],[60894]]]},db=>{bf=> 2329090767,bg=>2329090767,bo=>{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=>-1965876529, bn=>-1965876529},bp=>{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=>-1965876529,bn=> -1965876529},bq=>[[{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=>-1965876529,bn=> -1965876529},{bh=>[[-112,43,6]],bi=>-112,bj=>4127599504,bk=>[[-167367792,209800661,84792733]],bl=>[-167367792,209800661],bm=>-167367792,bn=>-167367792}],[{bh=>[ [-127,115,58]],bi=>-127,bj=>1715106689,bk=>[[1715106689,-124365077,-457775081]],bl=>[1715106689,-124365077],bm=>1715106689,bn=>1715106689},{bh=>[[96,68,86]],bi=> 96,bj=>3579200608,bk=>[[-715766688,1360175732,863009419]],bl=>[-715766688,1360175732],bm=>-715766688,bn=>-715766688}]],br=>[-1965876529,1226501598,1007219180], bs=>[[-1965876529,1226501598,1007219180],[-167367792,209800661,84792733],[1715106689,-124365077,-457775081]],bt=>[[-715766688,1360175732,863009419],[ -1280982504,38609411,-679442412],[2132561335,1431326433,-1841108844]],bu=>34,bv=>-13952,bw=>[242,203,223],bx=>412331695,by=>-1212561687,bz=> '9157516980216773336',ca=>3436554746,cb=>200417914,cc=>785922651,cd=>'5267784254230829775',cn=>{ce=>2329090767,cf=>2329090767,cg=>2329090767,ch=> '5267784254230829775',ci=>-1965876529,cj=>[[6863,35539]],ck=>[[[[6863,35539],[60894,18714],[61932,15368]],[[11152,62982],[19925,3201],[54685,1293]]]],cl=> -1965876529,cm=>[[[[-1965876529]]],[[[1226501598]]],[[[1007219180]]]]},co=>6863,cp=>[35539],cq=>60894,cr=>[[18714],[61932],[15368]],cs=>11152,ct=>-2554,cu=>[[ 19925,3201,-10851],[1293,29569,26170]],cv=>22251,cw=>63638,cx=>23,cy=>232,cz=>-6986,da=>[[[[17504],[-10922]]],[[[-23948],[20754]]],[[[31371],[13168]]]]},dc=> {bf=>2329090767,bg=>2329090767,bo=>{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=> -1965876529,bn=>-1965876529},bp=>{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=> -1965876529,bn=>-1965876529},bq=>[[{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=> -1965876529,bn=>-1965876529},{bh=>[[-112,43,6]],bi=>-112,bj=>4127599504,bk=>[[-167367792,209800661,84792733]],bl=>[-167367792,209800661],bm=>-167367792,bn=> -167367792}],[{bh=>[[-127,115,58]],bi=>-127,bj=>1715106689,bk=>[[1715106689,-124365077,-457775081]],bl=>[1715106689,-124365077],bm=>1715106689,bn=>1715106689}, {bh=>[[96,68,86]],bi=>96,bj=>3579200608,bk=>[[-715766688,1360175732,863009419]],bl=>[-715766688,1360175732],bm=>-715766688,bn=>-715766688}]],br=>[-1965876529, 1226501598,1007219180],bs=>[[-1965876529,1226501598,1007219180],[-167367792,209800661,84792733],[1715106689,-124365077,-457775081]],bt=>[[-715766688,1360175732, 863009419],[-1280982504,38609411,-679442412],[2132561335,1431326433,-1841108844]],bu=>34,bv=>-13952,bw=>[242,203,223],bx=>412331695,by=>-1212561687,bz=> '9157516980216773336',ca=>3436554746,cb=>200417914,cc=>785922651,cd=>'5267784254230829775',cn=>{ce=>2329090767,cf=>2329090767,cg=>2329090767,ch=> '5267784254230829775',ci=>-1965876529,cj=>[[6863,35539]],ck=>[[[[6863,35539],[60894,18714],[61932,15368]],[[11152,62982],[19925,3201],[54685,1293]]]],cl=> -1965876529,cm=>[[[[-1965876529]]],[[[1226501598]]],[[[1007219180]]]]},co=>6863,cp=>[35539],cq=>60894,cr=>[[18714],[61932],[15368]],cs=>11152,ct=>-2554,cu=>[[ 19925,3201,-10851],[1293,29569,26170]],cv=>22251,cw=>63638,cx=>23,cy=>232,cz=>-6986,da=>[[[[17504],[-10922]]],[[[-23948],[20754]]],[[[31371],[13168]]]]},dd=> 6863,dj=>{de=>-1965876529,df=>[[1226501598,1007219180,-167367792],[209800661,84792733,1715106689],[-124365077,-457775081,-715766688]],dg=>1360175732,dh=>[[ 863009419,3013984792,38609411],[3615524884,2132561335,1431326433]],di=>-1841108844},dk=>-32734,dl=>[[-3383],[-8245]],dm=>[[412331695,-1212561687,-965887272],[ 2132150572,-858412550,200417914]],dn=>785922651,dp=>2532377791,dq=>230500345,dr=>120,ds=>-60,dt=>-36,du=>1735024808,dv=>6,dw=>6,dx=>[[-12026,7108],[-5596,660],[ -5203,-1553]],dy=>6,dz=>6,ea=>465883398,eb=>[[465883398,43313700,-101717075],[-1567147673,-1950186657,-732583609],[-1111700124,-1457593561,867302945]],ec=> 33226,ed=>19353,ee=>2658683031,ef=>30667,eg=>2,eh=>72,ei=>94,ej=>28979,ek=>-30294,el=>[[[170,23],[103,174]],[[249,181],[122,164]],[[10,203],[93,151]]],em=>[[[ 239,145],[186,211],[99,189]],[[231,103],[147,127],[134,87]]],en=>1072433047,eo=>74,ep=>3768055624,ev=>{eq=>-1835648564,er=>14796,es=>-1835648564,et=> -1835648564,eu=>'2823242990084307404'},ew=>{eq=>-573876304,er=>22448,es=>-573876304,et=>-573876304,eu=>'-8918013881456306256'},ex=>744959621},ju=> '5267784254230829775',jv=>'5267784254230829775',jw=>6863,jx=>6863,jy=>[[[[6863,35539,60894]],[[18714,61932,15368]]],[[[11152,62982,19925]],[[3201,54685,1293]]], [[[29569,26170,22251]],[[63638,59415,58550]]]],jz=>6863,ka=>207,kb=>207},kc=>{mg=>{kd=>-2058853707,ke=>'5987959116413106004',kf=>1363342466,kg=>3276284054,kh=> 11712,ki=>49,kw=>{kj=>[[-1494088614,1901166286],[-1637476849,1088904740],[-1580042126,-1707434710]],kk=>[-1494088614],kl=>2800878682,km=>2800878682,kn=>[[ 2800878682,1901166286]],ko=>'8165447025428661338',kp=>['8165447025428661338','4676810249416873487','-7333376236790318990'],kq=>'8165447025428661338',kr=> '8165447025428661338',ks=>[-1494088614],kt=>90,ku=>90,kv=>-1494088614},kx=>'7660190118987172289',ky=>'10109570921568530113',kz=>-63,la=>3149262529,lb=> '-8337173152141021503',lc=>['-8337173152141021503','555198448556482722'],ld=>[[['10109570921568530113','555198448556482722','6327072268883512402']],[[ '13363082765023275824','8160324916783808862','3983613338139164009']]],le=>3149262529,lf=>[[3149262529,2353817904]],lg=>3149262529,lh=>-4415,lp=>[[{li=>27411,lj=> [[27411]],lk=>'699936173668592403',ll=>'699936173668592403',lm=>[[[-722048237,162966589,-139233679],[1802663293,1615066141,668694379],[1035763800,-546113505, -301452689]]],ln=>27411,lo=>[['699936173668592403'],['7742379893290399345']]},{li=>8014,lj=>[[8014]],lk=>'14059808108471852878',ll=>'14059808108471852878',lm=>[ [[-1952506034,-1021413125,-1401006196],[241485928,313007432,1704942121],[-1581168918,-1843428221,-510570794]]],ln=>8014,lo=>[['14059808108471852878'],[ '1037174166098171788']]}],[{li=>27124,lj=>[[27124]],lk=>'3112266432129362420',ll=>'3112266432129362420',lm=>[[[-1653511692,724630996,-1714432289],[590585804, -1404863128,1805048205],[1903896170,958000451,-680158697]]],ln=>27124,lo=>[['3112266432129362420'],['2536546716242400991']]},{li=>-9736,lj=>[[-9736]],lk=> '15204813217218746872',ll=>'15204813217218746872',lm=>[[[8182264,-754820848,-1990843908],[2030201666,1952332821,-653653507],[1630279970,698060525,941594293]]], ln=>55800,lo=>[['15204813217218746872'],['8719649762058838524']]}]],lq=>{li=>27374,lj=>[[27374]],lk=>'18192863195878288110',ll=>'18192863195878288110',lm=>[[[ -845518098,-59111249,419355361],[-379626545,-98165665,1329682793],[804342663,-1126197668,654196580]]],ln=>27374,lo=>[['18192863195878288110'],[ '16816260478660434657']]},lr=>'7376570264875490453',ls=>'17722894814364403768',lt=>31,lu=>28687,lv=>-31923,lw=>28,lx=>114,ly=>[[[[44],[161]],[[105],[25]],[[197] ,[196]]]],lz=>92,ma=>-1187965622,mb=>-1621004899,mc=>1254264397,md=>[['6142378113139755708'],['-1645285875830501394']],me=>[53868],mf=>[57810,10406,13669]},mh=> {kd=>-950328472,ke=>'5658919656636925334',kf=>3188316432,kg=>1409870759,kh=>-20245,ki=>125,kw=>{kj=>[[1174141967,-112597673],[-870140506,-1227085062],[ -677057499,-1873510652]],kk=>[1174141967],kl=>1174141967,km=>1174141967,kn=>[[1174141967,4182369623]],ko=>'-483603321966560241',kp=>['-483603321966560241', '-5270290207275305562','-8046666975429727195'],kq=>'-483603321966560241',kr=>'-483603321966560241',ks=>[1174141967],kt=>15,ku=>15,kv=>1174141967},kx=> '3241186914066154681',ky=>'10711818774959513852',kz=>-4,la=>332554492,lb=>'-7734925298750037764',lc=>['-7734925298750037764','8195611242654669376'],ld=>[[[ '10711818774959513852','8195611242654669376','8403928748852620277']],[['18327187265731610799','7094432050196610468','16567645484015994518']]],le=>332554492,lf=> [[332554492,2494039660]],lg=>332554492,lh=>24828,lp=>[[{li=>25699,lj=>[[25699]],lk=>'17672523628912075875',ll=>'17672523628912075875',lm=>[[[-2113903517, -180262245,469329824],[468202775,332143729,170746245],[1028674598,-1395891399,-1185951512]]],ln=>25699,lo=>[['17672523628912075875'],['2010915606990776224']]}, {li=>-12526,lj=>[[-12526]],lk=>'6845988679659540242',ll=>'6845988679659540242',lm=>[[[-1150038254,1593955950,-74325078],[373211743,-285457294,218016399],[ 1104118570,-1550675724,-1784827001]]],ln=>53010,lo=>[['6845988679659540242'],['1602932234888799146']]}],[{li=>31633,lj=>[[31633]],lk=>'8773096271991241617',ll=> '8773096271991241617',lm=>[[[-665355375,2042645651,1209313619],[-1299362812,1891001717,1217464078],[-313525615,-1391557912,-426154838]]],ln=>31633,lo=>[[ '8773096271991241617'],['12866023291740268883']]},{li=>-29686,lj=>[[-29686]],lk=>'5798254897622191114',ll=>'5798254897622191114',lm=>[[[-504329206,1350011419, -577017207],[1611554436,243805304,601837460],[2011025408,1014653353,-1289198243]]],ln=>35850,lo=>[['5798254897622191114'],['6921573602061675145']]}]],lq=>{li=> 30070,lj=>[[30070]],lk=>'11108528298467751286',ll=>'11108528298467751286',lm=>[[[-947161738,-1708561503,-518721509],[1638906728,-287711135,-70813373],[ 798100818,148469045,1955910318]]],ln=>30070,lo=>[['11108528298467751286'],['7039050801730613275']]},lr=>'8865418217952990448',ls=>'16910285960572352012',lt=> -32,lu=>-23280,lv=>2867,lw=>13,lx=>248,ly=>[[[[204],[198]],[[83],[41]],[[28],[51]]]],lz=>176,ma=>-1440842177,mb=>-955722959,mc=>3588954414,md=>[[ '-20521267330544242'],['-6975653099726015525']],me=>[5169],mf=>[9875,18351,34806]},mi=>{kd=>849704203,ke=>'-7865611094136309509',kf=>3206736700,kg=>2062974277, kh=>-14250,ki=>190,kw=>{kj=>[[1471943724,1480544906],[-1311475443,-19991553],[-524657831,-1546753512]],kk=>[1471943724],kl=>1471943724,km=>1471943724,kn=>[[ 1471943724,1480544906]],ko=>'6358891953001337900',kp=>['6358891953001337900','-85863063347758835','-6643255745242834087'],kq=>'6358891953001337900',kr=> '6358891953001337900',ks=>[1471943724],kt=>44,ku=>44,kv=>1471943724},kx=>'8684191803490738786',ky=>'1324151914916919929',kz=>121,la=>2772875897,lb=> '1324151914916919929',lc=>['1324151914916919929','9098777832765585295'],ld=>[[['1324151914916919929','9098777832765585295','11492778477819285254']],[[ '3513644960920247218','10552731876756811857','14739685473668037182']]],le=>2772875897,lf=>[[2772875897,308303142]],lg=>2772875897,lh=>-17799,lp=>[[{li=>-16416, lj=>[[-16416]],lk=>'818897211810365408',ll=>'818897211810365408',lm=>[[[-377241632,190664364,1635765825],[-894802362,-571967690,217605636],[-1219174846, 490851033,-777163328]]],ln=>49120,lo=>[['818897211810365408'],['14603597194171764289']]},{li=>-24700,lj=>[[-24700]],lk=>'13876536005094907780',ll=> '13876536005094907780',lm=>[[[-1063673980,-1064084487,907589138],[-1329073929,-338187728,-753217757],[451796618,150072393,103518268]]],ln=>40836,lo=>[[ '13876536005094907780'],['12738415015595914770']]}],[{li=>-10762,lj=>[[-10762]],lk=>'996875569566963190',ll=>'996875569566963190',lm=>[[[-2125605386,232103180, 980648197],[-1772688538,-1226303496,1447321828],[312636629,1887079249,-1514006477]]],ln=>54774,lo=>[['996875569566963190'],['10833104777986146565']]},{li=>947, lj=>[[947]],lk=>'9261674633803989939',ll=>'9261674633803989939',lm=>[[[1294074803,-2138565630,474855383],[1347346815,1122538581,-914349422],[-1344287758, -384265298,-659047994]]],ln=>947,lo=>[['9261674633803989939'],['5786810507269617623']]}]],lq=>{li=>28090,lj=>[[28090]],lk=>'18050170060185955770',ll=> '18050170060185955770',lm=>[[[751201722,-92334583,2060244393],[1527509538,-1087449030,-107548412],[2014166311,1621679300,-788109462]]],ln=>28090,lo=>[[ '18050170060185955770'],['6560603512098313641']]},lr=>'16982232608490658756',ls=>'9466463712142948847',lt=>-62,lu=>-22201,lv=>-11179,lw=>100,lx=>205,ly=>[[[[ 188],[189]],[[39],[227]],[[30],[169]]]],lz=>33,ma=>-2117454927,mb=>1217874841,mc=>2009833080,md=>[['-6158203612282599422'],['766872758556452631']],me=>[24011], mf=>[61335,47761,25555]},mj=>'-7541411168516577347',ou=>[[{mk=>['16183675675834575879','2823242990084307404'],ml=>'16183675675834575879',mm=> '16183675675834575879',mn=>1245703175,mo=>1245703175,mp=>1245703175,mq=>7,mr=>7,ms=>22448,mt=>56779,mu=>[-9825,-31684],mv=>2218580383,mw=>[[2218580383],[ 744959621]],mx=>[-97],my=>-97,mz=>-97,na=>159,nb=>['3199577211254135199'],nq=>{nc=>'14438937274395260386',nd=>'15337091602469120637',ne=>[[[[ '7838170680078770136'],['6338798129934606725'],['5837070750880514404']],[['12251487722594918884'],['5115129471442097571'],['6301746486302456423']],[[ '10257103587122409201'],['11432276215941873281'],['4466900161961532886']]]],nf=>'1478851282813619424',ng=>-11269,nh=>31765,ni=>-38,nj=>4088505383,nk=> 2960062030,nl=>3243060976,nm=>10376,nn=>'4226654220288043263',no=>13913,np=>1220259753},nr=>[['5016093930777923781']],ns=>'5016093930777923781',nt=>197,nu=>197, nv=>197,nw=>2281885893,nx=>[53445,34818],ny=>-2013081403,nz=>-2013081403,oa=>[[-12091,-30718,-16678],[17820,-15312,17730],[18673,7096,-24234]],ob=>[[[-12091]],[ [-30718]],[[-16678]]],oc=>-59,od=>-59,oe=>-2013081403,of=>-2013081403,og=>[1601761181,2916674639],oh=>-867821129,oi=>-867821129,oj=>[6583,-13242],ok=> '-4101552996699727433',ol=>[['-4101552996699727433','3102304785032962812','1366044192217212050']],om=>[3427146167,3340000071,3907150588],on=>3427146167,oo=> 3427146167,op=>3427146167,oq=>[6583,-13242,23367],or=>6583,os=>[[183],[25]],ot=>183}]],ov=>{mk=>['5371941907818177193','4279241623495376841'],ml=> '5371941907818177193',mm=>'5371941907818177193',mn=>294216361,mo=>294216361,mp=>294216361,mq=>-87,mr=>-87,ms=>42959,mt=>8593,mu=>[-2960,14492],mv=>949810288,mw=> [[949810288],[140253051]],mx=>[112],my=>112,mz=>112,na=>112,nb=>['602382268159030384'],nq=>{nc=>'13044174381705733410',nd=>'11353333398815960393',ne=>[[[[ '12541993899289435977'],['7801119036446620090'],['10686774475928325649']],[['5017575570227502593'],['11603539883796097304'],['291672421789787933']],[[ '7873347163653381746'],['2207224681977750305'],['18182901544486855671']]]],nf=>'-2872480758863845228',ng=>416,nh=>24428,ni=>30864,nj=>619064888,nk=>2494515959, nl=>1293729320,nm=>28699,nn=>'-7225859584689375476',no=>35933,np=>707443017},nr=>[['-7069849110528708104']],ns=>'-7069849110528708104',nt=>248,nu=>248,nv=>248, nw=>257110520,nx=>[12792,3923],ny=>257110520,nz=>257110520,oa=>[[12792,3923,-9807],[-25118,14241,-6318],[-383,21464,13776]],ob=>[[[12792]],[[3923]],[[-9807]]], oc=>-8,od=>-8,oe=>257110520,of=>257110520,og=>[4194482254,1040852765],oh=>515102127,oi=>515102127,oj=>[-10833,7859],ok=>'2388732567121810863',ol=>[[ '2388732567121810863','-3124452557276749942','5974471240480904677']],om=>[515102127,556170141,99966858],on=>515102127,oo=>515102127,op=>515102127,oq=>[-10833, 7859,31645],or=>-10833,os=>[[175],[213]],ot=>175},ow=>[[{mk=>['11919091463328332134','6155978030408304499'],ml=>'11919091463328332134',mm=> '11919091463328332134',mn=>756250982,mo=>756250982,mp=>756250982,mq=>102,mr=>102,ms=>30201,mt=>6654,mu=>[12511,32182],mv=>2109092063,mw=>[[2109092063],[ 2222502851]],mx=>[-33],my=>-33,mz=>-33,na=>223,nb=>['-8901167011288698657'],nq=>{nc=>'16692007906772852064',nd=>'6708136181930382809',ne=>[[[[ '10414879379027654168'],['5104886353663954604'],['4987691728449865754']],[['7876703958831977522'],['11596937235213228256'],['8439105228165753487']],[[ '14195895288439720779'],['993518774371589943'],['1371617209496046918']]]],nf=>'-2486748935767699361',ng=>-12002,nh=>-9902,ni=>31931,nj=>2057143195,nk=> 3409136662,nl=>732065425,nm=>4012,nn=>'1399737936830617073',no=>16478,np=>-412068313},nr=>[['4844999696580905958']],ns=>'4844999696580905958',nt=>230,nu=>230, nv=>230,nw=>3683945446,nx=>[35814,56212],ny=>-611021850,nz=>-611021850,oa=>[[-29722,-9324,-6771],[17212,-12294,-538],[17623,-8453,21690]],ob=>[[[-29722]],[[ -9324]],[[-6771]]],oc=>-26,od=>-26,oe=>-611021850,of=>-611021850,og=>[831694954,2620344901],oh=>-1676782,oi=>-1676782,oj=>[27154,-26],ok=>'8237393673363810834', ol=>[['8237393673363810834','-3874796034764969185','5904006231995333992']],om=>[4293290514,1917917670,851307295],on=>4293290514,oo=>4293290514,op=>4293290514, oq=>[27154,-26,6630],or=>27154,os=>[[18],[106]],ot=>18},{mk=>['11630348401043327038','13148161506419148868'],ml=>'11630348401043327038',mm=> '11630348401043327038',mn=>574113854,mo=>574113854,mp=>574113854,mq=>62,mr=>62,ms=>9750,mt=>39458,mu=>[19508,22681],mv=>1486441524,mw=>[[1486441524],[ 3680499021]],mx=>[52],my=>52,mz=>52,na=>52,nb=>['-2639121144068092876'],nq=>{nc=>'16359781076885346970',nd=>'17788237714188213432',ne=>[[[[ '7962251627858917025'],['13821153652839092987'],['14313091013165502685']],[['16623308207441924895'],['16097847631359265432'],['671083062689840816']],[[ '3726520526298001507'],['2722442135970522801'],['13992419519733415314']]]],nf=>'-8308599325722436829',ng=>26033,nh=>24464,ni=>-22052,nj=>2596093807,nk=> 2943245109,nl=>771119585,nm=>37156,nn=>'-7390520603960795475',no=>32677,np=>280194861},nr=>[['-7368552720364864808']],ns=>'-7368552720364864808',nt=>216,nu=> 216,nv=>216,nw=>1374288600,nx=>[64216,20969],ny=>1374288600,nz=>1374288600,oa=>[[-1320,20969,-23465],[-26179,-31195,6935],[-15747,-23644,-13266]],ob=>[[[-1320]] ,[[20969]],[[-23465]]],oc=>-40,od=>-40,oe=>1374288600,of=>1374288600,og=>[914202297,1509155318],oh=>-1723840868,oi=>-1723840868,oj=>[18076,-26304],ok=> '-2353735976506866020',ol=>[['-2353735976506866020','49943741155026186','-6687191512434498813']],om=>[2571126428,3746945433,1716299018],on=>2571126428,oo=> 2571126428,op=>2571126428,oq=>[18076,-26304,-9831],or=>18076,os=>[[156],[70]],ot=>156}],[{mk=>['2804913380972270176','6755149468347253742'],ml=> '2804913380972270176',mm=>'2804913380972270176',mn=>3801584224,mo=>3801584224,mp=>-493383072,mq=>96,mr=>96,ms=>31448,mt=>15344,mu=>[28162,25967],mv=>1701801474, mw=>[[1701801474],[2106772686]],mx=>[2],my=>2,mz=>2,na=>2,nb=>['9048519788177878530'],nq=>{nc=>'13760932865921548919',nd=>'15266910263688614401',ne=>[[[[ '7549428713010425775'],['13258924011924300374'],['3234583165971657345']],[['412506416670810990'],['14445821402249741849'],['7190222836968138507']],[[ '1515621447174091774'],['7552785512500700527'],['4201611016473581077']]]],nf=>'-6509213150366156519',ng=>17701,nh=>-17525,ni=>-27652,nj=>1689317785,nk=> 377916032,nl=>275490827,nm=>38463,nn=>'5883801467120791418',no=>58789,np=>1636892873},nr=>[['-1835443197966909716']],ns=>'-1835443197966909716',nt=>236,nu=>236, nv=>236,nw=>3553001196,nx=>[32492,54214],ny=>-741966100,nz=>-741966100,oa=>[[32492,-11322,12834],[-6521,29540,-9771],[-12497,18649,23850]],ob=>[[[32492]],[[ -11322]],[[12834]]],oc=>-20,od=>-20,oe=>-741966100,of=>-741966100,og=>[1855393726,2569588873],oh=>1321081611,oi=>1321081611,oj=>[6923,20158],ok=> '-2928144586096370933',ol=>[['-2928144586096370933','4905220483481672811','-3332770059196445227']],om=>[1321081611,3613205507,1860508779],on=>1321081611,oo=> 1321081611,op=>1321081611,oq=>[6923,20158,9219],or=>6923,os=>[[11],[27]],ot=>11},{mk=>['14425617732591794219','4633326486109340785'],ml=>'14425617732591794219', mm=>'14425617732591794219',mn=>3367352363,mo=>3367352363,mp=>-927614933,mq=>43,mr=>43,ms=>16000,mt=>56916,mu=>[-12038,-11531],mv=>3539325178,mw=>[[3539325178],[ 1985992493]],mx=>[-6],my=>-6,mz=>-6,na=>250,nb=>['8529772811075834106'],nq=>{nc=>'17041252131423772173',nd=>'17281217697632179172',ne=>[[[[ '3716558874906634603'],['1408387373839807588'],['11539962297404990163']],[['10374862261784835202'],['8543262886048068457'],['746669084603537704']],[[ '4636683289877871153'],['6144253268885549631'],['16512716235122384837']]]],nf=>'-7607035547628973251',ng=>-10875,nh=>18559,ni=>-7702,nj=>3355239732,nk=> 1447797871,nl=>2619152573,nm=>20844,nn=>'-2396080257624181046',no=>26080,np=>968099228},nr=>[['5914138407948954136']],ns=>'5914138407948954136',nt=>24,nu=>24, nv=>24,nw=>776645144,nx=>[43544,11850],ny=>776645144,nz=>776645144,oa=>[[-21992,11850,15756],[21011,20378,-14394],[23164,15863,-6151]],ob=>[[[-21992]],[[11850]] ,[[15756]]],oc=>24,od=>24,oe=>776645144,of=>776645144,og=>[692945473,2369031733],oh=>617527332,oi=>617527332,oj=>[-18396,9422],ok=>'150744599563778084',ol=>[[ '150744599563778084','7295863233811660065','-2255151335886674237']],om=>[617527332,35097962,3173858593],on=>617527332,oo=>617527332,op=>617527332,oq=>[-18396, 9422,-29334],or=>-18396,os=>[[36],[184]],ot=>36}],[{mk=>['12834375236041492017','10198647014159559848'],ml=>'12834375236041492017',mm=>'12834375236041492017', mn=>441632305,mo=>441632305,mp=>441632305,mq=>49,mr=>49,ms=>25740,mt=>22836,mu=>[1358,12851],mv=>842204494,mw=>[[842204494],[2088828462]],mx=>[78],my=>78,mz=> 78,na=>78,nb=>['8971449932086183246'],nq=>{nc=>'3100540571095045312',nd=>'10134616324406247595',ne=>[[[['3661177626457349346'],['2983063371392552495'],[ '12951570960767208386']],[['7381409803327037584'],['18343752660922507486'],['261616947348401278']],[['12626058829355168892'],['347164616358563822'],[ '14778219856227839895']]]],nf=>'6149374282297029947',ng=>-18324,nh=>-30873,ni=>-20775,nj=>1620897479,nk=>1382478763,nl=>1758865395,nm=>15356,nn=> '63543667013444289',no=>18703,np=>-1134003155},nr=>[['258259052641400511']],ns=>'258259052641400511',nt=>191,nu=>191,nv=>191,nw=>1958229695,nx=>[14015,29880], ny=>1958229695,nz=>1958229695,oa=>[[14015,29880,-31427],[917,-16195,-29370],[-12085,11498,18517]],ob=>[[[14015]],[[29880]],[[-31427]]],oc=>-65,od=>-65,oe=> 1958229695,of=>1958229695,og=>[1266748342,232885002],oh=>-1189873980,oi=>-1189873980,oj=>[-2364,-18157],ok=>'1776072158000445124',ol=>[['1776072158000445124', '-3527596395222212976','6726576737161975436']],om=>[3105093316,413524023,3218398864],on=>3105093316,oo=>3105093316,op=>3105093316,oq=>[-2364,-18157,-8137],or=> -2364,os=>[[196],[246]],ot=>196},{mk=>['3221264723679884746','8155203903338839394'],ml=>'3221264723679884746',mm=>'3221264723679884746',mn=>4268733898,mo=> 4268733898,mp=>-26233398,mq=>-54,mr=>-54,ms=>58818,mt=>36399,mu=>[-6067,11945],mv=>782886989,mw=>[[782886989],[102325939]],mx=>[77],my=>77,mz=>77,na=>77,nb=>[ '439486562320377933'],nq=>{nc=>'303678653994220624',nd=>'419392739270358182',ne=>[[[['6298670066572166311'],['867673612653460018'],['2729328458570201065']],[[ '5845268184039062048'],['3887653117693587018'],['5784765917866617499']],[['4769132199690432622'],['15157629401928009003'],['1930208575943788588']]]],nf=> '-725894943964808452',ng=>-17864,nh=>-6252,ni=>-17101,nj=>1533340876,nk=>3921171577,nl=>615553183,nm=>65284,nn=>'5259133717693365083',no=>36727,np=>-462479114}, nr=>[['3357353003176157639']],ns=>'3357353003176157639',nt=>199,nu=>199,nv=>199,nw=>3018318279,nx=>[57799,46055],ny=>-1276649017,nz=>-1276649017,oa=>[[-7737, -19481,-18748],[11927,17677,-258],[356,28818,-10815]],ob=>[[[-7737]],[[-19481]],[[-18748]]],oc=>-57,od=>-57,oe=>-1276649017,of=>-1276649017,og=>[2226730842, 1730796562],oh=>-2083515820,oi=>-2083515820,oj=>[4692,-31792],ok=>'7379645589389054548',ol=>[['7379645589389054548','8665580719401991415', '-1449147333995714889']],om=>[2211451476,1718207632,2288909559],on=>2211451476,oo=>2211451476,op=>2211451476,oq=>[4692,-31792,-15216],or=>4692,os=>[[84],[18]], ot=>84}]],ox=>17378,oy=>17378,oz=>[[17378,21434],[-11429,-25284]],pa=>17378,pb=>17378,pc=>1404716002,pd=>17378,pe=>-30,pf=>17378,pg=>-19487,ph=>-1524887075,pi=> 2007859186,pj=>[[[-1398621283,530381492],[602247967,5797352],[-1026938941,1998105380]]],pk=>-548908925,pl=>1398103099,pm=>[[[[4078035804,1685329781]],[[ 1941412774,1866379309]]],[[[49555801,2918583508]],[[1409459740,1375800068]]],[[[3215668980,878223248]],[[3026508442,4256184672]]]],pn=>-28,po=>-7,pp=>603440552, pq=>-29042,pr=>2420,ps=>[[['13295975655539673460','17261294399144347125']],[['1159944003302672082','15094050716025274342']],[['11941059351219164561', '18318707258084724724']]],pt=>[3803122036,3095710569],pu=>116,pv=>'-5150768418169878156',pw=>['-5150768418169878156','-1185449674565204491'],px=>2420,py=>2420, pz=>[[2420,-7505]],qi=>{qa=>'15530606823607496767',qb=>'15530606823607496767',qc=>'15530606823607496767',qd=>[['15530606823607496767']],qe=>[[325185599],[ 3616001183]],qf=>325185599,qg=>-4033,qh=>325185599},qj=>-3425,qk=>-3425,ql=>-3425,qm=>-3425,qn=>62111,qo=>159,qp=>'-2549014316366433633',qq=>-3425,qr=>[[ 160952991,-593488644]],qs=>160952991,qt=>1446194779,qu=>176577327,rg=>{qv=>'-2817552609481863067',qw=>'-8211326890911329594',qx=>['-730453007456422400', '-2077001345449549167','584053758541778181'],qy=>227053920,qz=>-1886881147,ra=>[[[[-326485604],[-1132028750],[-59456732]],[[-1904069126],[1661965493],[ 909498008]],[[931429725],[1992645357],[-1427987429]]]],rb=>'3872569357674079319',rc=>'3921346862340546472',rd=>[1373096016,2426506160],re=> '-3042263886796895430',rf=>[['-1262799910416884927'],['9018353371911903260']]},rh=>{qv=>'-8557044895282696815',qw=>'8124866953920742084',qx=>[ '8115186786095954893','6800569074011752832','4420169445721321409'],qy=>910624800,qz=>1084200451,ra=>[[[[2137200089],[2009051515],[-1262562237]],[[675001760],[ -255680385],[-1847761452]],[[-1253590508],[1995746555],[985286951]]]],rb=>'-2782376125907251457',rc=>'6175901324584392034',rd=>[997054611,2687572878],re=> '1245490572801271873',rf=>[['-1200533430289745406'],['-703475056535077921']]},ri=>200,rs=>[{rj=>'11213998157847406293',rk=>[['-7232745915862145323', '-6770694592024883504','-8187594797672514516']],rl=>9941,rm=>9941,rn=>'-7232745915862145323',ro=>107030229,rp=>213,rq=>[213,38,97],rr=>213}],rt=>[{rj=> '2663985558729483112',rk=>[['2663985558729483112','6177664439010616222','2775029539194633594']],rl=>25448,rm=>25448,rn=>'2663985558729483112',ro=>1389847400,rp=> 104,rq=>[104,99,215],rr=>104}],ru=>{rj=>'2956254854145257224',rk=>[['2956254854145257224','95644821796236187','8870539231398025196']],rl=>12040,rm=>12040,rn=> '2956254854145257224',ro=>2128228104,rp=>8,rq=>[8,47,218],rr=>8},rv=>['17459367688069238706']},rw=>{rx=>-2058853707,ry=>-2058853707,uo=>{rz=>[[-2058853707, 1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[-2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707,sg=> -2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269,sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466, -1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=>2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466, 3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740,2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=> 2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589,to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[ -1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=> -1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286, -1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=> 30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[ [[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589, ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[-1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[ -365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=>129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004', '14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579', '2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[ 1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[[ '5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[[ '13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=> '15345570510587601721',ug=>44093,uh=>[1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50}},up=>[[{rz=>[[ -2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[-2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707, sg=>-2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269,sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466, -1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=>2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466, 3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740,2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=> 2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589,to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[ -1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=> -1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286, -1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=> 30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[ [[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589, ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[-1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[ -365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=>129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004', '14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579', '2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[ 1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[[ '5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[[ '13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=> '15345570510587601721',ug=>44093,uh=>[1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50}}],[{rz=>[[ 525266440,2029751199,1468842782],[-932664194,491261540,1512641192]],sa=>[[525266440,2029751199]],sb=>8,sc=>[8,-18],sd=>60936,se=>60936,sf=>525266440,sg=> 525266440,sh=>[[-4600,8014],[-29793,30971],[-15586,22412]],si=>-4600,sj=>-4600,sk=>'8717715019247054344',sl=>30,sm=>-61,sn=>140,so=>87,sp=>[[-932664194, 491261540]],sq=>[1512641192,1189766559],sr=>2223219137,ss=>525266440,st=>525266440,su=>525266440,sv=>[[[[525266440,2029751199,1468842782],[3362303102,491261540, 1512641192]]],[[[1189766559,2223219137,1322684959],[1777656209,4258569585,3604949808]]]],sw=>'8717715019247054344',sx=>'8717715019247054344',sy=>525266440,sz=> 525266440,ta=>[-4600,8014,-29793],tb=>-4600,tc=>525266440,to=>{td=>[[525266440,2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159, 1322684959]],te=>[[[[-7791,27124]]],[[[-25231,-556]]]],tf=>11056,tg=>-10529,th=>-26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=> 14617,tn=>-26089},tp=>{td=>[[525266440,2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159,1322684959]],te=>[[[[-7791,27124]]],[[[ -25231,-556]]]],tf=>11056,tg=>-10529,th=>-26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=>14617,tn=>-26089},tq=>{td=>[[525266440, 2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159,1322684959]],te=>[[[[-7791,27124]]],[[[-25231,-556]]]],tf=>11056,tg=>-10529,th=> -26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=>14617,tn=>-26089},ub=>{tr=>525266440,ts=>2029751199,tt=>-15586,tu=>3362303102,tv=> 491261540,tw=>4776,tx=>[[[1189766559],[-2071748159],[1322684959]],[[1777656209],[-36397711],[-690017488]],[[-1613981233],[2103976755],[-645026749]]],ty=> 644508566,tz=>123,ua=>2585213209},um=>{uc=>[8,-18,78],ud=>31,ue=>[[['6308631713685408671','2109952251444898942','5110008462292095656'],['5680888644039320001', '18290417097092948369','11514747465221745456']],[['15676375283813327667','17096633384167959446','15706540600550963481'],['2449064304420323452', '4329499668083018070','1811248637296866398']]],uf=>'10859631824568410412',ug=>14367,uh=>[3449449198,4235856047,419355361],ui=>'18025125756859800527',uj=>[ 1329682793],uk=>[-121,75,-15],ul=>47},un=>{uc=>[8,-18,78],ud=>31,ue=>[[['6308631713685408671','2109952251444898942','5110008462292095656'],[ '5680888644039320001','18290417097092948369','11514747465221745456']],[['15676375283813327667','17096633384167959446','15706540600550963481'],[ '2449064304420323452','4329499668083018070','1811248637296866398']]],uf=>'10859631824568410412',ug=>14367,uh=>[3449449198,4235856047,419355361],ui=> '18025125756859800527',uj=>[1329682793],uk=>[-121,75,-15],ul=>47}}],[{rz=>[[-1126197668,654196580,-1164125035],[1717491602,164464696,-168534289]],sa=>[[ -1126197668,654196580]],sb=>92,sc=>[92,-106],sd=>38492,se=>38492,sf=>-1126197668,sg=>-1126197668,sh=>[[-27044,-17185],[16228,9982],[-9067,-17764]],si=>-27044, sj=>-27044,sk=>'2809752919423817308',sl=>149,sm=>-36,sn=>156,so=>186,sp=>[[1717491602,164464696]],sq=>[4126433007,1880055583],sr=>1914471245,ss=>3168769628,st=> 3168769628,su=>3168769628,sv=>[[[[3168769628,654196580,3130842261],[1717491602,164464696,4126433007]]],[[[1880055583,1914471245,426352940],[2958869701, 3107001674,2673962397]]]],sw=>'2809752919423817308',sx=>'2809752919423817308',sy=>3168769628,sz=>3168769628,ta=>[-27044,-17185,16228],tb=>-27044,tc=>3168769628, to=>{td=>[[-1126197668,654196580,-1164125035],[1717491602,164464696,-168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]], tf=>28061,tg=>-24735,th=>-29107,ti=>19138,tj=>[-1512813892,1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},tp=>{td=>[[-1126197668,654196580, -1164125035],[1717491602,164464696,-168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]],tf=>28061,tg=>-24735,th=>-29107, ti=>19138,tj=>[-1512813892,1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},tq=>{td=>[[-1126197668,654196580,-1164125035],[1717491602,164464696, -168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]],tf=>28061,tg=>-24735,th=>-29107,ti=>19138,tj=>[-1512813892, 1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},ub=>{tr=>3168769628,ts=>654196580,tt=>-9067,tu=>1717491602,tv=>164464696,tw=>24303,tx=>[[[ 1880055583],[1914471245],[426352940]],[[-1336097595],[-1187965622],[-1621004899]],[[1254264397],[-1512813892],[1430133849]]],ty=>-1993879570,tz=>54,ua=> 3788690028},um=>{uc=>[92,-106,-33],ud=>-68,ue=>[[['13446865120583892836','706370492384073618','8074777247773646575'],['1831171935767921485', '13344470581406123205','5387024568326122909']],[['6142378113139755708','16801458197879050222','3847526153876329068'],['743592664873247592', '13693714806056977778','15888049585206651815']]],uf=>'17963140751742991375',ug=>46502,uh=>[721079330,3961894620,2131023780],ui=>'167591474026352724',uj=>[ 1627139323],uk=>[-46,19,108],ul=>6},un=>{uc=>[92,-106,-33],ud=>-68,ue=>[[['13446865120583892836','706370492384073618','8074777247773646575'],[ '1831171935767921485','13344470581406123205','5387024568326122909']],[['6142378113139755708','16801458197879050222','3847526153876329068'],[ '743592664873247592','13693714806056977778','15888049585206651815']]],uf=>'17963140751742991375',ug=>46502,uh=>[721079330,3961894620,2131023780],ui=> '167591474026352724',uj=>[1627139323],uk=>[-46,19,108],ul=>6}}]],uq=>-75,ur=>2236113589,us=>25269,ut=>[[34120],[30548]],uu=>16221,uv=>33047,uw=>4102181657,ux=>[ [546722114,767607624,73025073],[2127472370,370110801,1579458150]],uy=>231,vh=>{uz=>[[[[25269,-31416,30548]],[[16221,-32489,21273]],[[-2942,20802,8342]]]],va=>[[ [72,-61],[-64,45],[49,70]]],vb=>90,vc=>4,vd=>[[[-22798,32462],[29009,5647],[-24986,24100]]],ve=>[[16615]],vf=>30834,vg=>'703012593382105554'},vi=>2236113589,vj=> 2236113589,vk=>['4565936802120622773','5855511306112172311','5057874162447032470'],vl=>'8165447025428661338',vm=>'4676810249416873487',vn=>[[[ '-7333376236790318990','7660190118987172289','-8337173152141021503'],['555198448556482722','6327072268883512402','-5083661308686275792'],['8160324916783808862', '3983613338139164009','699936173668592403']],[['7742379893290399345','2872020490439095325','-2345539642843168680'],['-8385949557279149457', '-6017275790039811845','1344356684086429800'],['-6791068790556763607','-2192884860071213949','3112266432129362420']],[['2536546716242400991', '7752623011068607848','4114580608502146666'],['35142559902046743','-8550609472760686320','8385205619132623682'],['7001999158115174909','4044116695233302253', '-253880877831263506']]],vo=>'-1630483595049116959',vp=>95,vq=>28,vr=>[[38],[250],[105]],vs=>2270118233,vt=>1546645835,vu=>-2058853707,vv=>-2058853707,vw=> -2058853707,vx=>'4565936802120622773',vy=>181,vz=>181,wi=>{wa=>'4565936802120622773',wb=>'5855511306112172311',wc=>3276284054,wd=>[[192]],we=>2800878682,wf=> 206,wg=>126,wh=>2657490447},ws=>{wj=>2236113589,wk=>'5987959116413106004',wl=>'14071532865699640450',wm=>'12029682340431211968',wn=>1901166286,wo=>[15,22,102], wp=>24100,wq=>[16615,30834],wr=>[[41426,40234,39482],[2497,59952,30291],[27214,61121,48053]]},wt=>{wj=>2236113589,wk=>'5987959116413106004',wl=> '14071532865699640450',wm=>'12029682340431211968',wn=>1901166286,wo=>[15,22,102],wp=>24100,wq=>[16615,30834],wr=>[[41426,40234,39482],[2497,59952,30291],[27214, 61121,48053]]},wu=>'4565936802120622773',wv=>'4565936802120622773',ww=>'4565936802120622773',wx=>[[2236113589,1063090004,1394180375]],wy=>25269,wz=>[[25269, 34120]],xa=>'4565936802120622773',xh=>{xb=>25269,xc=>[['4565936802120622773','5855511306112172311'],['5057874162447032470','8165447025428661338'],[ '4676810249416873487','-7333376236790318990']],xd=>25269,xe=>25269,xf=>-75,xg=>-75},xi=>[['4565936802120622773','5855511306112172311','5057874162447032470'],[ '8165447025428661338','4676810249416873487','-7333376236790318990'],['7660190118987172289','-8337173152141021503','555198448556482722']],xj=> '4565936802120622773',xk=>[[2236113589,1063090004],[1394180375,1363342466]],xl=>181,xm=>181,xn=>[181],xo=>25269,xp=>2236113589,xq=>2236113589,xr=>-2058853707, xs=>[[25269],[34120]],xt=>'4565936802120622773',xu=>['4565936802120622773','5855511306112172311','5057874162447032470'],ye=>{xv=>2236113589,xw=>1063090004,xx=>[ [1394180375],[1363342466],[3276284054]],xy=>11712,xz=>[[[[17969,1114,-22798]]],[[[32462,29009,5647]]]],ya=>102,yb=>[[[[24100,16615],[30834,41426]],[[40234, 39482],[2497,59952]]],[[[30291,27214],[61121,48053]],[[26928,35916],[41122,8718]]],[[[30220,1972],[52306,52998]],[[18100,22478],[27440,24923]]]],yc=>[[13561],[ 47475],[350]],yd=>52395},yf=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],yg=>-2058853707,yh=>-2058853707,yi=>-2058853707,yj=> -2058853707,yk=>25269,yl=>181,ym=>181,yn=>'4565936802120622773',yo=>'4565936802120622773',yp=>'4565936802120622773',yq=>[25269,34120],yr=>181,ys=>2236113589,yt=> 2236113589,yu=>-2058853707,yv=>25269,yw=>25269,yx=>25269,yy=>[[25269,34120,30548]],yz=>25269,za=>25269,zb=>25269,zc=>[[25269,-31416],[30548,16221]],zd=>[[-75],[ 98]],ze=>-75,zf=>[[-2058853707,1063090004],[1394180375,1363342466]],zg=>181,zh=>181,zi=>25269,zj=>'4565936802120622773',zk=>-75,zl=>-75,zm=>25269,zn=>[[ -2058853707,1063090004]],zo=>[181,98,72],zp=>-75,zq=>-75,zr=>-75,zs=>[25269],zt=>-75,zu=>-75,zv=>[[[2236113589,1063090004],[1394180375,1363342466]]],zw=>[[ 2236113589,1063090004,1394180375],[1363342466,3276284054,1177628096],[2800878682,1901166286,2657490447]],zx=>[[181,98,72]],zy=>'4565936802120622773',zz=> 1394180375,aaa=>[1363342466,-1018683242],aab=>1177628096,aac=>[[[[-1494088614]],[[1901166286]],[[-1637476849]]],[[[1088904740]],[[-1580042126]],[[-1707434710]]] ,[[[-365950527]],[[1783526995]],[[-1145704767]]]],aad=>-1941149392,aae=>162,aaf=>[[[160],[14],[34]],[[12],[118],[180]],[[7],[82],[204]]],aar=>[[{aag=>181,aah=>[ [98,72],[133,84],[119,93]],aai=>427890495,aaj=>1123320403,aak=>1210095185,aal=>825082051,aam=>70,aan=>90,aao=>[4,-14],aap=>'7356084020729269926',aaq=> 3881706654},{aag=>64,aah=>[[114,120],[210,161],[42,157]],aai=>163682874,aaj=>1985210928,aak=>4005653070,aal=>1764801461,aam=>76,aan=>-116,aao=>[-94,-96],aap=> '-3723905470225964530',aaq=>1186254598}],[{aag=>206,aah=>[[87,48],[107,91],[97,249]],aai=>1589211956,aaj=>1187818241,aak=>1769029452,aal=>966150909,aam=>163, aan=>72,aao=>[55,19],aap=>'8145242251964249707',aaq=>2113385334},{aag=>117,aah=>[[114,107],[29,244],[67,96]],aai=>668694379,aaj=>1035763800,aak=>3748853791,aal=> -301452689,aam=>78,aan=>31,aao=>[-97,-117],aap=>'-6017275790039811845',aaq=>241485928}],[{aag=>72,aah=>[[29,168],[18,41],[90,159]],aai=>3242650213,aaj=> 528778145,aak=>2437863058,aal=>1902769377,aam=>157,aan=>-44,aao=>[-3,48],aap=>'3719916778220347179',aaq=>1132292131},{aag=>172,aah=>[[141,217],[150,107],[106, 38]],aai=>3980620155,aaj=>2585213209,aak=>3656963957,aal=>1494220924,aam=>2,aan=>-45,aao=>[-4,33],aap=>'4329499668083018070',aaq=>167605342}]],aas=>2236113589, aat=>2236113589,aau=>[[[2236113589,1063090004],[1394180375,1363342466]]]}}}, 2=>{sizeof=>{aa=>230,ey=>1098,kc=>3252,rw=>414},content=>{aa=>{ab=>'4565936802120622773',be=>{ac=>2236113589,ad=>1063090004,ae=>1394180375,af=>[-2942,20802],ag=> 8342,ah=>[[[72]],[[-61]]],ai=>'-6417061733278339648',aj=>[[['-7032909512510964018','-6786229256383406556'],['-1571745542831432406','-4920764503352773037'],[ '2454075466962463024','-3528908605309553140']],[['7015318699935418036','-3698861162604841735'],['-7616997190430405562','-3101173563121949895'],[ '-598004097643795395','6936656258274588029']],[['4448571648049379179','-1294729436797405153'],['-4386935965237698738','1037174166098171788'],[ '7322670651580882248','-7917463919004662038']]],ak=>'-7101778636909228330',al=>212,am=>-3,an=>48,ao=>2580535007,ap=>-2058853707,aq=>2236113589,ar=>1063090004, as=>[[1394180375,1363342466]],at=>[-1018683242,1177628096,-1494088614],au=>206,av=>126,aw=>29009,ax=>[[['4676810249416873487','-7333376236790318990']]],ay=> '7660190118987172289',az=>[[['10109570921568530113','555198448556482722','6327072268883512402'],['13363082765023275824','8160324916783808862', '3983613338139164009'],['699936173668592403','7742379893290399345','2872020490439095325']],[['16101204430866382936','10060794516430402159', '12429468283669739771'],['1344356684086429800','11655675283152788009','16253859213638337667'],['3112266432129362420','2536546716242400991', '7752623011068607848']]],ba=>'4114580608502146666',bb=>-680158697,bc=>'4565936802120622773',bd=>[[[25269],[34120],[30548]]]},db=>{bf=>2236113589,bg=>2236113589, bo=>{bh=>[[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[ [-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=> -126,bj=>1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=> 2800878682,bk=>[[-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=> [[1088904740,-1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707, 1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527, 1783526995,-1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>-12538,bw=>[180,70,206],bx=>1633381168,by=>-1183632135,bz=>'8160324916783808862',ca=> 2521496937,cb=>927507257,cc=>3572919059,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707, cj=>[[25269,34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[ 1063090004]]],[[[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]] ,cv=>32462,cw=>29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dc=>{bf=>2236113589,bg=>2236113589,bo=>{bh=> [[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98,72]],bi=> -75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=>-126,bj=> 1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=>2800878682,bk=>[ [-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=>[[1088904740, -1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707,1063090004, 1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527,1783526995, -1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>-12538,bw=>[180,70,206],bx=>1633381168,by=>-1183632135,bz=>'8160324916783808862',ca=>2521496937,cb=> 927507257,cc=>3572919059,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707,cj=>[[25269, 34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[1063090004]]],[ [[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]],cv=>32462,cw=> 29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dd=>25269,dj=>{de=>-2058853707,df=>[[1063090004,1394180375, 1363342466],[-1018683242,1177628096,-1494088614],[1901166286,-1637476849,1088904740]],dg=>-1580042126,dh=>[[2587532586,3929016769,1783526995],[3149262529, 2353817904,571383970]],di=>129267212},dk=>-13230,dl=>[[-12538],[18100]],dm=>[[1798330318,888758619,22985075],[1279708331,-43421377,-1556507062]],dn=>1796421448, dp=>2889733366,dq=>1987119542,dr=>-77,ds=>-9,dt=>125,du=>-199398542,dv=>67,dw=>67,dx=>[[24643,30571],[10203,-32680],[15804,-2017]],dy=>67,dz=>67,ea=>2003525699, eb=>[[2003525699,-2141706277,-132170308],[846192498,525266440,2029751199],[1468842782,-932664194,491261540]],ec=>4776,ed=>23081,ee=>1189766559,ef=>41409,eg=> -125,eh=>-124,ei=>31,ej=>20182,ek=>-7791,el=>[[[244,105],[113,157]],[[212,253],[48,43]],[[223,214],[207,153]]],em=>[[[204,159],[51,35],[104,125]],[[67,172],[ 141,217],[150,107]]],en=>1903896170,eo=>67,ep=>2585213209,ev=>{eq=>-638003339,er=>55157,es=>-638003339,et=>-638003339,eu=>'6417630005235865461'},ew=>{eq=> 570217218,er=>54018,es=>570217218,et=>570217218,eu=>'7728890913551602434'},ex=>1008040194},ey=>{ez=>-2058853707,fa=>2236113589,fn=>{fb=>-2058853707,fc=> -2058853707,fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773',fh=>'4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[ -75],[98],[72]],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fo=>{fb=>-2058853707,fc=>-2058853707,fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773', fh=>'4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[-75],[98],[72]],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fp=> '4565936802120622773',fq=>21273,fr=>[21273,62594],fs=>21273,ft=>4102181657,fu=>[[4102181657,546722114],[767607624,73025073],[2127472370,370110801]],fv=> -192785639,fw=>25,fx=>25,fy=>25,fz=>'2348153603732165401',ga=>'2348153603732165401',gb=>21273,gc=>21273,gd=>21273,ge=>25,gf=>25,gg=>[25,83,-126],gh=> '2348153603732165401',gi=>4102181657,gj=>4102181657,gk=>4102181657,gl=>['2348153603732165401'],gu=>{gm=>-192785639,gn=>-192785639,go=>25,gp=> '2348153603732165401',gq=>-192785639,gr=>25,gs=>4102181657,gt=>'2348153603732165401'},gv=>[[{gm=>-192785639,gn=>-192785639,go=>25,gp=>'2348153603732165401',gq=> -192785639,gr=>25,gs=>4102181657,gt=>'2348153603732165401'},{gm=>767607624,gn=>767607624,go=>72,gp=>'313640301090620232',gq=>767607624,gr=>72,gs=>767607624,gt=> '313640301090620232'}]],gw=>['2348153603732165401','313640301090620232'],gx=>2127472370,gy=>370110801,gz=>1579458150,ha=>[-25,64],hb=>114,hc=>2636816850,hd=>58, he=>[[[[3929016769,1783526995],[3149262529,2353817904]]],[[[571383970,129267212],[3473329234,1473136308]]]],hf=>1633381168,hg=>3111335161,ii=>{hh=>350,hi=> 1279708331,ht=>{hj=>-43421377,hk=>4251545919,hl=>[[[4251545919,2738460234,1796421448],[2889733366,1987119542,1971189683],[4095568754,2003525699,2153261019]],[[ 4162796988,846192498,525266440],[2029751199,1468842782,3362303102],[491261540,1512641192,1189766559]],[[2223219137,1322684959,1777656209],[4258569585, 3604949808,2680986063],[2103976755,3649940547,644508566]]],hm=>28991,hn=>-43421377,ho=>'-6685146923031498433',hp=>4251545919,hq=>'-6685146923031498433',hr=> '-6685146923031498433',hs=>[[4251545919,2738460234],[1796421448,2889733366],[1987119542,1971189683]]},hu=>{hj=>-314347141,hk=>3980620155,hl=>[[[3980620155, 2585213209,3656963957],[1494220924,570217218,1799522646],[1008040194,167605342,421714186]],[[2397921580,2528455067,1793996831],[145739162,3672243322,1540299006] ,[476047711,1500117542,1267158849]],[[2522623985,1063566559,3700762366],[3616717468,2285397598,1592723917],[1595930100,2202890255,2704044572]]],hm=>29051,hn=> -314347141,ho=>'-7343337883886718597',hp=>3980620155,hq=>'-7343337883886718597',hr=>'-7343337883886718597',hs=>[[3980620155,2585213209],[3656963957,1494220924], [570217218,1799522646]]},hv=>105,hw=>25,hx=>[-1336097595],ig=>[[[{hy=>5450,hz=>5450,ia=>74,ib=>74,ic=>74,id=>74,ie=>'11484581048955770186'}]],[[{hy=>-29107,hz=> -29107,ia=>77,ib=>77,ic=>77,id=>77,ie=>'11949257883889339981'}]],[[{hy=>7257,hz=>7257,ia=>89,ib=>89,ic=>89,id=>89,ie=>'9883096529827142745'}]]],ih=>{hy=>-15050, hz=>-15050,ia=>54,ib=>54,ic=>54,id=>54,ie=>'16272299768853218614'}},ij=>{hh=>10406,hi=>594031973,ht=>{hj=>-979974309,hk=>3314992987,hl=>[[[3314992987, 2238843473,3641724552],[3953638921,2968212488,4228897917],[3847702011,3047618889,721079330]],[[3961894620,2131023780,3300495444],[39020430,1627139323,107746258] ,[440439976,2835399585,2884989372]],[[3232485645,3366941856,1068986878],[2107965015,2086443805,3331744372],[432660320,1684268524,1788576256]]],hm=>-14501,hn=> -979974309,ho=>'-8830984572996499621',hp=>3314992987,hq=>'-8830984572996499621',hr=>'-8830984572996499621',hs=>[[3314992987,2238843473],[3641724552,3953638921], [2968212488,4228897917]]},hu=>{hj=>1738601793,hk=>1738601793,hl=>[[[1738601793,890706937,477174760],[1636111308,1411779117,1664695632],[3504909516,3474110799, 3597581171]],[[3819593473,3261070225,1148327486],[2861559548,2200571134,2431926735],[3012010898,2073138589,1284757591]],[[2840820160,1275349012,1702212237],[ 118386870,4203825297,2196303183],[1688907022,2349524633,2317083120]]],hm=>-2751,hn=>1738601793,ho=>'3825557166473934145',hp=>1738601793,hq=> '3825557166473934145',hr=>'3825557166473934145',hs=>[[1738601793,890706937],[477174760,1636111308],[1411779117,1664695632]]},hv=>119,hw=>80,hx=>[-577017207],ig=> [[[{hy=>24196,hz=>24196,ia=>132,ib=>132,ic=>132,id=>132,ie=>'1047135808882892420'}]],[[{hy=>20372,hz=>20372,ia=>148,ib=>148,ic=>148,id=>148,ie=> '8637288359386894228'}]],[[{hy=>25001,hz=>25001,ia=>169,ib=>169,ic=>169,id=>169,ie=>'12909679782978544041'}]]],ih=>{hy=>30070,hz=>30070,ia=>118,ib=>118,ic=>118, id=>118,ie=>'11108528298467751286'}},ik=>{hh=>-4069,hi=>3144212756,ht=>{hj=>-530488913,hk=>3764478383,hl=>[[[3764478383,2034495193,223542215],[1966419858, 3534620889,1425044628],[1256583773,3054271240,1736217136]],[[618719917,187933968,3335321613],[857483603,2118063792,3543247390],[422496008,227464683,402923116]], [[1943797687,2155274874,338796337],[1202661011,1963689974,955986597],[3160553634,3946615511,2101722914]]],hm=>25007,hn=>-530488913,ho=>'8738090321568686511',hp=> 3764478383,hq=>'8738090321568686511',hr=>'8738090321568686511',hs=>[[3764478383,2034495193],[223542215,1966419858],[3534620889,1425044628]]},hu=>{hj=> -933856522,hk=>3361110774,hl=>[[[3361110774,338490814,1384798140],[2030917695,4093620692,1532624590],[1780015290,2724373454,1919891564]],[[3128522884, 1428596038,4153348704],[1513833520,1325825605,2367839404],[464691070,4185510526,4031852738]],[[3585813511,4198404722,3789035255],[3219180685,1319954819, 3460369245],[1715888511,2000079530,1711594984]]],hm=>31478,hn=>-933856522,ho=>'1453806979487529718',hp=>3361110774,hq=>'1453806979487529718',hr=> '1453806979487529718',hs=>[[3361110774,338490814],[1384798140,2030917695],[4093620692,1532624590]]},hv=>248,hw=>12,hx=>[-1219174846],ig=>[[[{hy=>-13607,hz=> -13607,ia=>217,ib=>217,ic=>217,id=>217,ie=>'15108852996789881561'}]],[[{hy=>-24700,hz=>-24700,ia=>132,ib=>132,ic=>132,id=>132,ie=>'13876536005094907780'}]],[[ {hy=>-18926,hz=>-18926,ia=>18,ib=>18,ic=>18,id=>18,ie=>'12738415015595914770'}]]],ih=>{hy=>-21968,hz=>-21968,ia=>48,ib=>48,ic=>48,id=>48,ie=> '15211698444584856112'}},iu=>{il=>451796618,im=>451796618,in=>-118,io=>-118,ip=>-118,iq=>451796618,ir=>[[451796618,150072393],[103518268,2169361910],[232103180, 980648197]],is=>451796618,it=>451796618},iv=>451796618,iw=>451796618,ix=>138,iy=>138,iz=>138,ja=>138,jb=>138,jc=>56970,jd=>56970,je=>'644556020419255946',jf=> 138,jg=>138,jr=>{jh=>451796618,ji=>[[[['644556020419255946','9317338456741613628','4211851935228468492'],['13179810665941363558','1342764098534007012', '11944135770949454673'],['9261674633803989939','5786810507269617623','14519643210225587285']]]],jj=>138,jk=>451796618,jl=>451796618,jm=>451796618,jn=>-118,jo=> -118,jp=>'644556020419255946',jq=>-8566},js=>{jh=>451796618,ji=>[[[['644556020419255946','9317338456741613628','4211851935228468492'],['13179810665941363558', '1342764098534007012','11944135770949454673'],['9261674633803989939','5786810507269617623','14519643210225587285']]]],jj=>138,jk=>451796618,jl=>451796618,jm=> 451796618,jn=>-118,jo=>-118,jp=>'644556020419255946',jq=>-8566},jt=>{ab=>'644556020419255946',be=>{ac=>451796618,ad=>150072393,ae=>103518268,af=>[-10762,-32435] ,ag=>-25332,ah=>[[[-43]],[[13]]],ai=>'-7613639295723405051',aj=>[[['6216199921115600888','8104943659727877333'],['5558008960243603507','2039488342470956034'],[ '4821266495240593791','-5773671953642544494']],[['-2830589576813702226','-396574013523595846'],['6560603512098313641','-461916909069215686'],[ '6965059560114339111','-1575103437538433174']],[['4136549591609574036','-6248872290409274729'],['-2078484084410756011','-9094399657955448546'],[ '8632167350236826521','-6158203612282599422']]],ak=>'766872758556452631',al=>203,am=>93,an=>-105,ao=>1674820241,ap=>451796618,aq=>451796618,ar=>150072393,as=>[[ 103518268,2169361910]],at=>[232103180,980648197,-1772688538],au=>248,av=>23,aw=>46824,ax=>[[['1342764098534007012','-6502608302760096943']]],ay=> '9261674633803989939',az=>[[['5786810507269617623','14519643210225587285','16796337188762536946'],['3226386832324803014','8848682293905004041', '13776186055320138274'],['8650778438637383940','15061839710373076164','16982232608490658756']],[['9466463712142948847','14800187739823639490', '18312103509990292924'],['5230732614893712305','3701475119182093944','17991430912734767729'],['17264370823186381493','10621713046786259601', '5350254399687460479']]],ba=>'10562693528148244296',bb=>657337482,bc=>'644556020419255946',bd=>[[[56970],[6893],[60489]]]},db=>{bf=>451796618,bg=>451796618,bo=> {bh=>[[-118,-34,-19]],bi=>-118,bj=>451796618,bk=>[[451796618,150072393,103518268]],bl=>[451796618,150072393],bm=>451796618,bn=>451796618},bp=>{bh=>[[-118,-34, -19]],bi=>-118,bj=>451796618,bk=>[[451796618,150072393,103518268]],bl=>[451796618,150072393],bm=>451796618,bn=>451796618},bq=>[[{bh=>[[-118,-34,-19]],bi=>-118, bj=>451796618,bk=>[[451796618,150072393,103518268]],bl=>[451796618,150072393],bm=>451796618,bn=>451796618},{bh=>[[-10,-43,77]],bi=>-10,bj=>2169361910,bk=>[[ -2125605386,232103180,980648197]],bl=>[-2125605386,232103180],bm=>-2125605386,bn=>-2125605386}],[{bh=>[[102,-21,86]],bi=>102,bj=>2522278758,bk=>[[-1772688538, -1226303496,1447321828]],bl=>[-1772688538,-1226303496],bm=>-1772688538,bn=>-1772688538},{bh=>[[-43,116,-94]],bi=>-43,bj=>312636629,bk=>[[312636629,1887079249, -1514006477]],bl=>[312636629,1887079249],bm=>312636629,bn=>312636629}]],br=>[451796618,150072393,103518268],bs=>[[451796618,150072393,103518268],[-2125605386, 232103180,980648197],[-1772688538,-1226303496,1447321828]],bt=>[[312636629,1887079249,-1514006477],[1294074803,-2138565630,474855383],[1347346815,1122538581, -914349422]],bu=>-14,bv=>-20513,bw=>[174,147,24],bx=>-659047994,by=>751201722,bz=>'8848682293905004041',ca=>1527509538,cb=>3207518266,cc=>4187418884,cd=> '644556020419255946',cn=>{ce=>451796618,cf=>451796618,cg=>451796618,ch=>'644556020419255946',ci=>451796618,cj=>[[56970,6893]],ck=>[[[[56970,6893],[60489,2289],[ 36924,1579]],[[54774,33101],[40204,3541],[33029,14963]]]],cl=>451796618,cm=>[[[[451796618]]],[[[150072393]]],[[[103518268]]]]},co=>56970,cp=>[6893],cq=>60489, cr=>[[2289],[36924],[1579]],cs=>-10762,ct=>-32435,cu=>[[-25332,3541,-32507],[14963,-5274,-27050]],cv=>6136,cw=>46824,cx=>228,cy=>96,cz=>22084,da=>[[[[29909],[ 4770]]],[[[-29871],[28794]]],[[[6195],[-23102]]]]},dc=>{bf=>451796618,bg=>451796618,bo=>{bh=>[[-118,-34,-19]],bi=>-118,bj=>451796618,bk=>[[451796618,150072393, 103518268]],bl=>[451796618,150072393],bm=>451796618,bn=>451796618},bp=>{bh=>[[-118,-34,-19]],bi=>-118,bj=>451796618,bk=>[[451796618,150072393,103518268]],bl=>[ 451796618,150072393],bm=>451796618,bn=>451796618},bq=>[[{bh=>[[-118,-34,-19]],bi=>-118,bj=>451796618,bk=>[[451796618,150072393,103518268]],bl=>[451796618, 150072393],bm=>451796618,bn=>451796618},{bh=>[[-10,-43,77]],bi=>-10,bj=>2169361910,bk=>[[-2125605386,232103180,980648197]],bl=>[-2125605386,232103180],bm=> -2125605386,bn=>-2125605386}],[{bh=>[[102,-21,86]],bi=>102,bj=>2522278758,bk=>[[-1772688538,-1226303496,1447321828]],bl=>[-1772688538,-1226303496],bm=> -1772688538,bn=>-1772688538},{bh=>[[-43,116,-94]],bi=>-43,bj=>312636629,bk=>[[312636629,1887079249,-1514006477]],bl=>[312636629,1887079249],bm=>312636629,bn=> 312636629}]],br=>[451796618,150072393,103518268],bs=>[[451796618,150072393,103518268],[-2125605386,232103180,980648197],[-1772688538,-1226303496,1447321828]], bt=>[[312636629,1887079249,-1514006477],[1294074803,-2138565630,474855383],[1347346815,1122538581,-914349422]],bu=>-14,bv=>-20513,bw=>[174,147,24],bx=> -659047994,by=>751201722,bz=>'8848682293905004041',ca=>1527509538,cb=>3207518266,cc=>4187418884,cd=>'644556020419255946',cn=>{ce=>451796618,cf=>451796618,cg=> 451796618,ch=>'644556020419255946',ci=>451796618,cj=>[[56970,6893]],ck=>[[[[56970,6893],[60489,2289],[36924,1579]],[[54774,33101],[40204,3541],[33029,14963]]]], cl=>451796618,cm=>[[[[451796618]]],[[[150072393]]],[[[103518268]]]]},co=>56970,cp=>[6893],cq=>60489,cr=>[[2289],[36924],[1579]],cs=>-10762,ct=>-32435,cu=>[[ -25332,3541,-32507],[14963,-5274,-27050]],cv=>6136,cw=>46824,cx=>228,cy=>96,cz=>22084,da=>[[[[29909],[4770]]],[[[-29871],[28794]]],[[[6195],[-23102]]]]},dd=> -8566,dj=>{de=>451796618,df=>[[150072393,103518268,-2125605386],[232103180,980648197,-1772688538],[-1226303496,1447321828,312636629]],dg=>1887079249,dh=>[[ 2780960819,1294074803,2156401666],[474855383,1347346815,1122538581]],di=>-914349422},dk=>-13326,dl=>[[-20513],[-27730]],dm=>[[-1178146536,1840961719,369700038], [-710280577,-232621364,-667264245]],dn=>-251347154,dp=>3173513622,dq=>3703863309,dr=>-88,ds=>96,dt=>106,du=>465883398,dv=>36,dw=>36,dx=>[[-5596,660],[-5203, -1553],[14695,-23913]],dy=>36,dz=>36,ea=>43313700,eb=>[[43313700,-101717075,-1567147673],[-1950186657,-732583609,-1111700124],[-1457593561,867302945,1268351434] ],ec=>18583,ed=>40568,ee=>1208121291,ef=>13150,eg=>113,eh=>-86,ei=>-119,ej=>26391,ek=>-1618,el=>[[[181,122],[164,10]],[[203,93],[151,239]],[[145,186],[211,99]]] ,em=>[[[189,231],[103,147],[127,134]],[[87,151],[7,236],[63,74]]],en=>-526911672,eo=>204,ep=>747278998,ev=>{eq=>1471162158,er=>10030,es=>1471162158,et=> 1471162158,eu=>'-2765247780762933458'},ew=>{eq=>780502076,er=>33852,es=>780502076,et=>780502076,eu=>'-728971368006843332'},ex=>1760773753},ju=> '644556020419255946',jv=>'644556020419255946',jw=>56970,jx=>56970,jy=>[[[[56970,6893,60489]],[[2289,36924,1579]]],[[[54774,33101,40204]],[[3541,33029,14963]]],[ [[60262,38486,6136]],[[46824,24804,22084]]]],jz=>56970,ka=>138,kb=>138},kc=>{mg=>{kd=>-2058853707,ke=>'5987959116413106004',kf=>1363342466,kg=>3276284054,kh=> 11712,ki=>49,kw=>{kj=>[[-1494088614,1901166286],[-1637476849,1088904740],[-1580042126,-1707434710]],kk=>[-1494088614],kl=>2800878682,km=>2800878682,kn=>[[ 2800878682,1901166286]],ko=>'8165447025428661338',kp=>['8165447025428661338','4676810249416873487','-7333376236790318990'],kq=>'8165447025428661338',kr=> '8165447025428661338',ks=>[-1494088614],kt=>90,ku=>90,kv=>-1494088614},kx=>'7660190118987172289',ky=>'10109570921568530113',kz=>-63,la=>3149262529,lb=> '-8337173152141021503',lc=>['-8337173152141021503','555198448556482722'],ld=>[[['10109570921568530113','555198448556482722','6327072268883512402']],[[ '13363082765023275824','8160324916783808862','3983613338139164009']]],le=>3149262529,lf=>[[3149262529,2353817904]],lg=>3149262529,lh=>-4415,lp=>[[{li=>27411,lj=> [[27411]],lk=>'699936173668592403',ll=>'699936173668592403',lm=>[[[-722048237,162966589,-139233679],[1802663293,1615066141,668694379],[1035763800,-546113505, -301452689]]],ln=>27411,lo=>[['699936173668592403'],['7742379893290399345']]},{li=>8014,lj=>[[8014]],lk=>'14059808108471852878',ll=>'14059808108471852878',lm=>[ [[-1952506034,-1021413125,-1401006196],[241485928,313007432,1704942121],[-1581168918,-1843428221,-510570794]]],ln=>8014,lo=>[['14059808108471852878'],[ '1037174166098171788']]}],[{li=>27124,lj=>[[27124]],lk=>'3112266432129362420',ll=>'3112266432129362420',lm=>[[[-1653511692,724630996,-1714432289],[590585804, -1404863128,1805048205],[1903896170,958000451,-680158697]]],ln=>27124,lo=>[['3112266432129362420'],['2536546716242400991']]},{li=>-9736,lj=>[[-9736]],lk=> '15204813217218746872',ll=>'15204813217218746872',lm=>[[[8182264,-754820848,-1990843908],[2030201666,1952332821,-653653507],[1630279970,698060525,941594293]]], ln=>55800,lo=>[['15204813217218746872'],['8719649762058838524']]}]],lq=>{li=>27374,lj=>[[27374]],lk=>'18192863195878288110',ll=>'18192863195878288110',lm=>[[[ -845518098,-59111249,419355361],[-379626545,-98165665,1329682793],[804342663,-1126197668,654196580]]],ln=>27374,lo=>[['18192863195878288110'],[ '16816260478660434657']]},lr=>'7376570264875490453',ls=>'17722894814364403768',lt=>31,lu=>28687,lv=>-31923,lw=>28,lx=>114,ly=>[[[[44],[161]],[[105],[25]],[[197] ,[196]]]],lz=>92,ma=>-1187965622,mb=>-1621004899,mc=>1254264397,md=>[['6142378113139755708'],['-1645285875830501394']],me=>[53868],mf=>[57810,10406,13669]},mh=> {kd=>-950328472,ke=>'5658919656636925334',kf=>3188316432,kg=>1409870759,kh=>-20245,ki=>125,kw=>{kj=>[[1174141967,-112597673],[-870140506,-1227085062],[ -677057499,-1873510652]],kk=>[1174141967],kl=>1174141967,km=>1174141967,kn=>[[1174141967,4182369623]],ko=>'-483603321966560241',kp=>['-483603321966560241', '-5270290207275305562','-8046666975429727195'],kq=>'-483603321966560241',kr=>'-483603321966560241',ks=>[1174141967],kt=>15,ku=>15,kv=>1174141967},kx=> '3241186914066154681',ky=>'10711818774959513852',kz=>-4,la=>332554492,lb=>'-7734925298750037764',lc=>['-7734925298750037764','8195611242654669376'],ld=>[[[ '10711818774959513852','8195611242654669376','8403928748852620277']],[['18327187265731610799','7094432050196610468','16567645484015994518']]],le=>332554492,lf=> [[332554492,2494039660]],lg=>332554492,lh=>24828,lp=>[[{li=>25699,lj=>[[25699]],lk=>'17672523628912075875',ll=>'17672523628912075875',lm=>[[[-2113903517, -180262245,469329824],[468202775,332143729,170746245],[1028674598,-1395891399,-1185951512]]],ln=>25699,lo=>[['17672523628912075875'],['2010915606990776224']]}, {li=>-12526,lj=>[[-12526]],lk=>'6845988679659540242',ll=>'6845988679659540242',lm=>[[[-1150038254,1593955950,-74325078],[373211743,-285457294,218016399],[ 1104118570,-1550675724,-1784827001]]],ln=>53010,lo=>[['6845988679659540242'],['1602932234888799146']]}],[{li=>31633,lj=>[[31633]],lk=>'8773096271991241617',ll=> '8773096271991241617',lm=>[[[-665355375,2042645651,1209313619],[-1299362812,1891001717,1217464078],[-313525615,-1391557912,-426154838]]],ln=>31633,lo=>[[ '8773096271991241617'],['12866023291740268883']]},{li=>-29686,lj=>[[-29686]],lk=>'5798254897622191114',ll=>'5798254897622191114',lm=>[[[-504329206,1350011419, -577017207],[1611554436,243805304,601837460],[2011025408,1014653353,-1289198243]]],ln=>35850,lo=>[['5798254897622191114'],['6921573602061675145']]}]],lq=>{li=> 30070,lj=>[[30070]],lk=>'11108528298467751286',ll=>'11108528298467751286',lm=>[[[-947161738,-1708561503,-518721509],[1638906728,-287711135,-70813373],[ 798100818,148469045,1955910318]]],ln=>30070,lo=>[['11108528298467751286'],['7039050801730613275']]},lr=>'8865418217952990448',ls=>'16910285960572352012',lt=> -32,lu=>-23280,lv=>2867,lw=>13,lx=>248,ly=>[[[[204],[198]],[[83],[41]],[[28],[51]]]],lz=>176,ma=>-1440842177,mb=>-955722959,mc=>3588954414,md=>[[ '-20521267330544242'],['-6975653099726015525']],me=>[5169],mf=>[9875,18351,34806]},mi=>{kd=>849704203,ke=>'-7865611094136309509',kf=>3206736700,kg=>2062974277, kh=>-14250,ki=>190,kw=>{kj=>[[1471943724,1480544906],[-1311475443,-19991553],[-524657831,-1546753512]],kk=>[1471943724],kl=>1471943724,km=>1471943724,kn=>[[ 1471943724,1480544906]],ko=>'6358891953001337900',kp=>['6358891953001337900','-85863063347758835','-6643255745242834087'],kq=>'6358891953001337900',kr=> '6358891953001337900',ks=>[1471943724],kt=>44,ku=>44,kv=>1471943724},kx=>'8684191803490738786',ky=>'1324151914916919929',kz=>121,la=>2772875897,lb=> '1324151914916919929',lc=>['1324151914916919929','9098777832765585295'],ld=>[[['1324151914916919929','9098777832765585295','11492778477819285254']],[[ '3513644960920247218','10552731876756811857','14739685473668037182']]],le=>2772875897,lf=>[[2772875897,308303142]],lg=>2772875897,lh=>-17799,lp=>[[{li=>-16416, lj=>[[-16416]],lk=>'818897211810365408',ll=>'818897211810365408',lm=>[[[-377241632,190664364,1635765825],[-894802362,-571967690,217605636],[-1219174846, 490851033,-777163328]]],ln=>49120,lo=>[['818897211810365408'],['14603597194171764289']]},{li=>-24700,lj=>[[-24700]],lk=>'13876536005094907780',ll=> '13876536005094907780',lm=>[[[-1063673980,-1064084487,907589138],[-1329073929,-338187728,-753217757],[451796618,150072393,103518268]]],ln=>40836,lo=>[[ '13876536005094907780'],['12738415015595914770']]}],[{li=>-10762,lj=>[[-10762]],lk=>'996875569566963190',ll=>'996875569566963190',lm=>[[[-2125605386,232103180, 980648197],[-1772688538,-1226303496,1447321828],[312636629,1887079249,-1514006477]]],ln=>54774,lo=>[['996875569566963190'],['10833104777986146565']]},{li=>947, lj=>[[947]],lk=>'9261674633803989939',ll=>'9261674633803989939',lm=>[[[1294074803,-2138565630,474855383],[1347346815,1122538581,-914349422],[-1344287758, -384265298,-659047994]]],ln=>947,lo=>[['9261674633803989939'],['5786810507269617623']]}]],lq=>{li=>28090,lj=>[[28090]],lk=>'18050170060185955770',ll=> '18050170060185955770',lm=>[[[751201722,-92334583,2060244393],[1527509538,-1087449030,-107548412],[2014166311,1621679300,-788109462]]],ln=>28090,lo=>[[ '18050170060185955770'],['6560603512098313641']]},lr=>'16982232608490658756',ls=>'9466463712142948847',lt=>-62,lu=>-22201,lv=>-11179,lw=>100,lx=>205,ly=>[[[[ 188],[189]],[[39],[227]],[[30],[169]]]],lz=>33,ma=>-2117454927,mb=>1217874841,mc=>2009833080,md=>[['-6158203612282599422'],['766872758556452631']],me=>[24011], mf=>[61335,47761,25555]},mj=>'-7541411168516577347',ou=>[[{mk=>['16183675675834575879','2823242990084307404'],ml=>'16183675675834575879',mm=> '16183675675834575879',mn=>1245703175,mo=>1245703175,mp=>1245703175,mq=>7,mr=>7,ms=>22448,mt=>56779,mu=>[-9825,-31684],mv=>2218580383,mw=>[[2218580383],[ 744959621]],mx=>[-97],my=>-97,mz=>-97,na=>159,nb=>['3199577211254135199'],nq=>{nc=>'14438937274395260386',nd=>'15337091602469120637',ne=>[[[[ '7838170680078770136'],['6338798129934606725'],['5837070750880514404']],[['12251487722594918884'],['5115129471442097571'],['6301746486302456423']],[[ '10257103587122409201'],['11432276215941873281'],['4466900161961532886']]]],nf=>'1478851282813619424',ng=>-11269,nh=>31765,ni=>-38,nj=>4088505383,nk=> 2960062030,nl=>3243060976,nm=>10376,nn=>'4226654220288043263',no=>13913,np=>1220259753},nr=>[['5016093930777923781']],ns=>'5016093930777923781',nt=>197,nu=>197, nv=>197,nw=>2281885893,nx=>[53445,34818],ny=>-2013081403,nz=>-2013081403,oa=>[[-12091,-30718,-16678],[17820,-15312,17730],[18673,7096,-24234]],ob=>[[[-12091]],[ [-30718]],[[-16678]]],oc=>-59,od=>-59,oe=>-2013081403,of=>-2013081403,og=>[1601761181,2916674639],oh=>-867821129,oi=>-867821129,oj=>[6583,-13242],ok=> '-4101552996699727433',ol=>[['-4101552996699727433','3102304785032962812','1366044192217212050']],om=>[3427146167,3340000071,3907150588],on=>3427146167,oo=> 3427146167,op=>3427146167,oq=>[6583,-13242,23367],or=>6583,os=>[[183],[25]],ot=>183}]],ov=>{mk=>['5371941907818177193','4279241623495376841'],ml=> '5371941907818177193',mm=>'5371941907818177193',mn=>294216361,mo=>294216361,mp=>294216361,mq=>-87,mr=>-87,ms=>42959,mt=>8593,mu=>[-2960,14492],mv=>949810288,mw=> [[949810288],[140253051]],mx=>[112],my=>112,mz=>112,na=>112,nb=>['602382268159030384'],nq=>{nc=>'13044174381705733410',nd=>'11353333398815960393',ne=>[[[[ '12541993899289435977'],['7801119036446620090'],['10686774475928325649']],[['5017575570227502593'],['11603539883796097304'],['291672421789787933']],[[ '7873347163653381746'],['2207224681977750305'],['18182901544486855671']]]],nf=>'-2872480758863845228',ng=>416,nh=>24428,ni=>30864,nj=>619064888,nk=>2494515959, nl=>1293729320,nm=>28699,nn=>'-7225859584689375476',no=>35933,np=>707443017},nr=>[['-7069849110528708104']],ns=>'-7069849110528708104',nt=>248,nu=>248,nv=>248, nw=>257110520,nx=>[12792,3923],ny=>257110520,nz=>257110520,oa=>[[12792,3923,-9807],[-25118,14241,-6318],[-383,21464,13776]],ob=>[[[12792]],[[3923]],[[-9807]]], oc=>-8,od=>-8,oe=>257110520,of=>257110520,og=>[4194482254,1040852765],oh=>515102127,oi=>515102127,oj=>[-10833,7859],ok=>'2388732567121810863',ol=>[[ '2388732567121810863','-3124452557276749942','5974471240480904677']],om=>[515102127,556170141,99966858],on=>515102127,oo=>515102127,op=>515102127,oq=>[-10833, 7859,31645],or=>-10833,os=>[[175],[213]],ot=>175},ow=>[[{mk=>['11919091463328332134','6155978030408304499'],ml=>'11919091463328332134',mm=> '11919091463328332134',mn=>756250982,mo=>756250982,mp=>756250982,mq=>102,mr=>102,ms=>30201,mt=>6654,mu=>[12511,32182],mv=>2109092063,mw=>[[2109092063],[ 2222502851]],mx=>[-33],my=>-33,mz=>-33,na=>223,nb=>['-8901167011288698657'],nq=>{nc=>'16692007906772852064',nd=>'6708136181930382809',ne=>[[[[ '10414879379027654168'],['5104886353663954604'],['4987691728449865754']],[['7876703958831977522'],['11596937235213228256'],['8439105228165753487']],[[ '14195895288439720779'],['993518774371589943'],['1371617209496046918']]]],nf=>'-2486748935767699361',ng=>-12002,nh=>-9902,ni=>31931,nj=>2057143195,nk=> 3409136662,nl=>732065425,nm=>4012,nn=>'1399737936830617073',no=>16478,np=>-412068313},nr=>[['4844999696580905958']],ns=>'4844999696580905958',nt=>230,nu=>230, nv=>230,nw=>3683945446,nx=>[35814,56212],ny=>-611021850,nz=>-611021850,oa=>[[-29722,-9324,-6771],[17212,-12294,-538],[17623,-8453,21690]],ob=>[[[-29722]],[[ -9324]],[[-6771]]],oc=>-26,od=>-26,oe=>-611021850,of=>-611021850,og=>[831694954,2620344901],oh=>-1676782,oi=>-1676782,oj=>[27154,-26],ok=>'8237393673363810834', ol=>[['8237393673363810834','-3874796034764969185','5904006231995333992']],om=>[4293290514,1917917670,851307295],on=>4293290514,oo=>4293290514,op=>4293290514, oq=>[27154,-26,6630],or=>27154,os=>[[18],[106]],ot=>18},{mk=>['11630348401043327038','13148161506419148868'],ml=>'11630348401043327038',mm=> '11630348401043327038',mn=>574113854,mo=>574113854,mp=>574113854,mq=>62,mr=>62,ms=>9750,mt=>39458,mu=>[19508,22681],mv=>1486441524,mw=>[[1486441524],[ 3680499021]],mx=>[52],my=>52,mz=>52,na=>52,nb=>['-2639121144068092876'],nq=>{nc=>'16359781076885346970',nd=>'17788237714188213432',ne=>[[[[ '7962251627858917025'],['13821153652839092987'],['14313091013165502685']],[['16623308207441924895'],['16097847631359265432'],['671083062689840816']],[[ '3726520526298001507'],['2722442135970522801'],['13992419519733415314']]]],nf=>'-8308599325722436829',ng=>26033,nh=>24464,ni=>-22052,nj=>2596093807,nk=> 2943245109,nl=>771119585,nm=>37156,nn=>'-7390520603960795475',no=>32677,np=>280194861},nr=>[['-7368552720364864808']],ns=>'-7368552720364864808',nt=>216,nu=> 216,nv=>216,nw=>1374288600,nx=>[64216,20969],ny=>1374288600,nz=>1374288600,oa=>[[-1320,20969,-23465],[-26179,-31195,6935],[-15747,-23644,-13266]],ob=>[[[-1320]] ,[[20969]],[[-23465]]],oc=>-40,od=>-40,oe=>1374288600,of=>1374288600,og=>[914202297,1509155318],oh=>-1723840868,oi=>-1723840868,oj=>[18076,-26304],ok=> '-2353735976506866020',ol=>[['-2353735976506866020','49943741155026186','-6687191512434498813']],om=>[2571126428,3746945433,1716299018],on=>2571126428,oo=> 2571126428,op=>2571126428,oq=>[18076,-26304,-9831],or=>18076,os=>[[156],[70]],ot=>156}],[{mk=>['2804913380972270176','6755149468347253742'],ml=> '2804913380972270176',mm=>'2804913380972270176',mn=>3801584224,mo=>3801584224,mp=>-493383072,mq=>96,mr=>96,ms=>31448,mt=>15344,mu=>[28162,25967],mv=>1701801474, mw=>[[1701801474],[2106772686]],mx=>[2],my=>2,mz=>2,na=>2,nb=>['9048519788177878530'],nq=>{nc=>'13760932865921548919',nd=>'15266910263688614401',ne=>[[[[ '7549428713010425775'],['13258924011924300374'],['3234583165971657345']],[['412506416670810990'],['14445821402249741849'],['7190222836968138507']],[[ '1515621447174091774'],['7552785512500700527'],['4201611016473581077']]]],nf=>'-6509213150366156519',ng=>17701,nh=>-17525,ni=>-27652,nj=>1689317785,nk=> 377916032,nl=>275490827,nm=>38463,nn=>'5883801467120791418',no=>58789,np=>1636892873},nr=>[['-1835443197966909716']],ns=>'-1835443197966909716',nt=>236,nu=>236, nv=>236,nw=>3553001196,nx=>[32492,54214],ny=>-741966100,nz=>-741966100,oa=>[[32492,-11322,12834],[-6521,29540,-9771],[-12497,18649,23850]],ob=>[[[32492]],[[ -11322]],[[12834]]],oc=>-20,od=>-20,oe=>-741966100,of=>-741966100,og=>[1855393726,2569588873],oh=>1321081611,oi=>1321081611,oj=>[6923,20158],ok=> '-2928144586096370933',ol=>[['-2928144586096370933','4905220483481672811','-3332770059196445227']],om=>[1321081611,3613205507,1860508779],on=>1321081611,oo=> 1321081611,op=>1321081611,oq=>[6923,20158,9219],or=>6923,os=>[[11],[27]],ot=>11},{mk=>['14425617732591794219','4633326486109340785'],ml=>'14425617732591794219', mm=>'14425617732591794219',mn=>3367352363,mo=>3367352363,mp=>-927614933,mq=>43,mr=>43,ms=>16000,mt=>56916,mu=>[-12038,-11531],mv=>3539325178,mw=>[[3539325178],[ 1985992493]],mx=>[-6],my=>-6,mz=>-6,na=>250,nb=>['8529772811075834106'],nq=>{nc=>'17041252131423772173',nd=>'17281217697632179172',ne=>[[[[ '3716558874906634603'],['1408387373839807588'],['11539962297404990163']],[['10374862261784835202'],['8543262886048068457'],['746669084603537704']],[[ '4636683289877871153'],['6144253268885549631'],['16512716235122384837']]]],nf=>'-7607035547628973251',ng=>-10875,nh=>18559,ni=>-7702,nj=>3355239732,nk=> 1447797871,nl=>2619152573,nm=>20844,nn=>'-2396080257624181046',no=>26080,np=>968099228},nr=>[['5914138407948954136']],ns=>'5914138407948954136',nt=>24,nu=>24, nv=>24,nw=>776645144,nx=>[43544,11850],ny=>776645144,nz=>776645144,oa=>[[-21992,11850,15756],[21011,20378,-14394],[23164,15863,-6151]],ob=>[[[-21992]],[[11850]] ,[[15756]]],oc=>24,od=>24,oe=>776645144,of=>776645144,og=>[692945473,2369031733],oh=>617527332,oi=>617527332,oj=>[-18396,9422],ok=>'150744599563778084',ol=>[[ '150744599563778084','7295863233811660065','-2255151335886674237']],om=>[617527332,35097962,3173858593],on=>617527332,oo=>617527332,op=>617527332,oq=>[-18396, 9422,-29334],or=>-18396,os=>[[36],[184]],ot=>36}],[{mk=>['12834375236041492017','10198647014159559848'],ml=>'12834375236041492017',mm=>'12834375236041492017', mn=>441632305,mo=>441632305,mp=>441632305,mq=>49,mr=>49,ms=>25740,mt=>22836,mu=>[1358,12851],mv=>842204494,mw=>[[842204494],[2088828462]],mx=>[78],my=>78,mz=> 78,na=>78,nb=>['8971449932086183246'],nq=>{nc=>'3100540571095045312',nd=>'10134616324406247595',ne=>[[[['3661177626457349346'],['2983063371392552495'],[ '12951570960767208386']],[['7381409803327037584'],['18343752660922507486'],['261616947348401278']],[['12626058829355168892'],['347164616358563822'],[ '14778219856227839895']]]],nf=>'6149374282297029947',ng=>-18324,nh=>-30873,ni=>-20775,nj=>1620897479,nk=>1382478763,nl=>1758865395,nm=>15356,nn=> '63543667013444289',no=>18703,np=>-1134003155},nr=>[['258259052641400511']],ns=>'258259052641400511',nt=>191,nu=>191,nv=>191,nw=>1958229695,nx=>[14015,29880], ny=>1958229695,nz=>1958229695,oa=>[[14015,29880,-31427],[917,-16195,-29370],[-12085,11498,18517]],ob=>[[[14015]],[[29880]],[[-31427]]],oc=>-65,od=>-65,oe=> 1958229695,of=>1958229695,og=>[1266748342,232885002],oh=>-1189873980,oi=>-1189873980,oj=>[-2364,-18157],ok=>'1776072158000445124',ol=>[['1776072158000445124', '-3527596395222212976','6726576737161975436']],om=>[3105093316,413524023,3218398864],on=>3105093316,oo=>3105093316,op=>3105093316,oq=>[-2364,-18157,-8137],or=> -2364,os=>[[196],[246]],ot=>196},{mk=>['3221264723679884746','8155203903338839394'],ml=>'3221264723679884746',mm=>'3221264723679884746',mn=>4268733898,mo=> 4268733898,mp=>-26233398,mq=>-54,mr=>-54,ms=>58818,mt=>36399,mu=>[-6067,11945],mv=>782886989,mw=>[[782886989],[102325939]],mx=>[77],my=>77,mz=>77,na=>77,nb=>[ '439486562320377933'],nq=>{nc=>'303678653994220624',nd=>'419392739270358182',ne=>[[[['6298670066572166311'],['867673612653460018'],['2729328458570201065']],[[ '5845268184039062048'],['3887653117693587018'],['5784765917866617499']],[['4769132199690432622'],['15157629401928009003'],['1930208575943788588']]]],nf=> '-725894943964808452',ng=>-17864,nh=>-6252,ni=>-17101,nj=>1533340876,nk=>3921171577,nl=>615553183,nm=>65284,nn=>'5259133717693365083',no=>36727,np=>-462479114}, nr=>[['3357353003176157639']],ns=>'3357353003176157639',nt=>199,nu=>199,nv=>199,nw=>3018318279,nx=>[57799,46055],ny=>-1276649017,nz=>-1276649017,oa=>[[-7737, -19481,-18748],[11927,17677,-258],[356,28818,-10815]],ob=>[[[-7737]],[[-19481]],[[-18748]]],oc=>-57,od=>-57,oe=>-1276649017,of=>-1276649017,og=>[2226730842, 1730796562],oh=>-2083515820,oi=>-2083515820,oj=>[4692,-31792],ok=>'7379645589389054548',ol=>[['7379645589389054548','8665580719401991415', '-1449147333995714889']],om=>[2211451476,1718207632,2288909559],on=>2211451476,oo=>2211451476,op=>2211451476,oq=>[4692,-31792,-15216],or=>4692,os=>[[84],[18]], ot=>84}]],ox=>17378,oy=>17378,oz=>[[17378,21434],[-11429,-25284]],pa=>17378,pb=>17378,pc=>1404716002,pd=>17378,pe=>-30,pf=>17378,pg=>-19487,ph=>-1524887075,pi=> 2007859186,pj=>[[[-1398621283,530381492],[602247967,5797352],[-1026938941,1998105380]]],pk=>-548908925,pl=>1398103099,pm=>[[[[4078035804,1685329781]],[[ 1941412774,1866379309]]],[[[49555801,2918583508]],[[1409459740,1375800068]]],[[[3215668980,878223248]],[[3026508442,4256184672]]]],pn=>-28,po=>-7,pp=>603440552, pq=>-29042,pr=>2420,ps=>[[['13295975655539673460','17261294399144347125']],[['1159944003302672082','15094050716025274342']],[['11941059351219164561', '18318707258084724724']]],pt=>[3803122036,3095710569],pu=>116,pv=>'-5150768418169878156',pw=>['-5150768418169878156','-1185449674565204491'],px=>2420,py=>2420, pz=>[[2420,-7505]],qi=>{qa=>'15530606823607496767',qb=>'15530606823607496767',qc=>'15530606823607496767',qd=>[['15530606823607496767']],qe=>[[325185599],[ 3616001183]],qf=>325185599,qg=>-4033,qh=>325185599},qj=>-3425,qk=>-3425,ql=>-3425,qm=>-3425,qn=>62111,qo=>159,qp=>'-2549014316366433633',qq=>-3425,qr=>[[ 160952991,-593488644]],qs=>160952991,qt=>1446194779,qu=>176577327,rg=>{qv=>'-2817552609481863067',qw=>'-8211326890911329594',qx=>['-730453007456422400', '-2077001345449549167','584053758541778181'],qy=>227053920,qz=>-1886881147,ra=>[[[[-326485604],[-1132028750],[-59456732]],[[-1904069126],[1661965493],[ 909498008]],[[931429725],[1992645357],[-1427987429]]]],rb=>'3872569357674079319',rc=>'3921346862340546472',rd=>[1373096016,2426506160],re=> '-3042263886796895430',rf=>[['-1262799910416884927'],['9018353371911903260']]},rh=>{qv=>'-8557044895282696815',qw=>'8124866953920742084',qx=>[ '8115186786095954893','6800569074011752832','4420169445721321409'],qy=>910624800,qz=>1084200451,ra=>[[[[2137200089],[2009051515],[-1262562237]],[[675001760],[ -255680385],[-1847761452]],[[-1253590508],[1995746555],[985286951]]]],rb=>'-2782376125907251457',rc=>'6175901324584392034',rd=>[997054611,2687572878],re=> '1245490572801271873',rf=>[['-1200533430289745406'],['-703475056535077921']]},ri=>200,rs=>[{rj=>'11213998157847406293',rk=>[['-7232745915862145323', '-6770694592024883504','-8187594797672514516']],rl=>9941,rm=>9941,rn=>'-7232745915862145323',ro=>107030229,rp=>213,rq=>[213,38,97],rr=>213}],rt=>[{rj=> '2663985558729483112',rk=>[['2663985558729483112','6177664439010616222','2775029539194633594']],rl=>25448,rm=>25448,rn=>'2663985558729483112',ro=>1389847400,rp=> 104,rq=>[104,99,215],rr=>104}],ru=>{rj=>'2956254854145257224',rk=>[['2956254854145257224','95644821796236187','8870539231398025196']],rl=>12040,rm=>12040,rn=> '2956254854145257224',ro=>2128228104,rp=>8,rq=>[8,47,218],rr=>8},rv=>['17459367688069238706']},rw=>{rx=>-2058853707,ry=>-2058853707,uo=>{rz=>[[-2058853707, 1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[-2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707,sg=> -2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269,sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466, -1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=>2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466, 3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740,2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=> 2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589,to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[ -1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=> -1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286, -1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=> 30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[ [[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589, ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[-1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[ -365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=>129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004', '14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579', '2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[ 1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[[ '5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[[ '13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=> '15345570510587601721',ug=>44093,uh=>[1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50}},up=>[[{rz=>[[ -2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[-2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707, sg=>-2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269,sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466, -1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=>2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466, 3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740,2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=> 2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589,to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[ -1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=> -1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286, -1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=> 30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[ [[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589, ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[-1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[ -365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=>129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004', '14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579', '2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[ 1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[[ '5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[[ '13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=> '15345570510587601721',ug=>44093,uh=>[1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50}}],[{rz=>[[ 525266440,2029751199,1468842782],[-932664194,491261540,1512641192]],sa=>[[525266440,2029751199]],sb=>8,sc=>[8,-18],sd=>60936,se=>60936,sf=>525266440,sg=> 525266440,sh=>[[-4600,8014],[-29793,30971],[-15586,22412]],si=>-4600,sj=>-4600,sk=>'8717715019247054344',sl=>30,sm=>-61,sn=>140,so=>87,sp=>[[-932664194, 491261540]],sq=>[1512641192,1189766559],sr=>2223219137,ss=>525266440,st=>525266440,su=>525266440,sv=>[[[[525266440,2029751199,1468842782],[3362303102,491261540, 1512641192]]],[[[1189766559,2223219137,1322684959],[1777656209,4258569585,3604949808]]]],sw=>'8717715019247054344',sx=>'8717715019247054344',sy=>525266440,sz=> 525266440,ta=>[-4600,8014,-29793],tb=>-4600,tc=>525266440,to=>{td=>[[525266440,2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159, 1322684959]],te=>[[[[-7791,27124]]],[[[-25231,-556]]]],tf=>11056,tg=>-10529,th=>-26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=> 14617,tn=>-26089},tp=>{td=>[[525266440,2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159,1322684959]],te=>[[[[-7791,27124]]],[[[ -25231,-556]]]],tf=>11056,tg=>-10529,th=>-26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=>14617,tn=>-26089},tq=>{td=>[[525266440, 2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159,1322684959]],te=>[[[[-7791,27124]]],[[[-25231,-556]]]],tf=>11056,tg=>-10529,th=> -26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=>14617,tn=>-26089},ub=>{tr=>525266440,ts=>2029751199,tt=>-15586,tu=>3362303102,tv=> 491261540,tw=>4776,tx=>[[[1189766559],[-2071748159],[1322684959]],[[1777656209],[-36397711],[-690017488]],[[-1613981233],[2103976755],[-645026749]]],ty=> 644508566,tz=>123,ua=>2585213209},um=>{uc=>[8,-18,78],ud=>31,ue=>[[['6308631713685408671','2109952251444898942','5110008462292095656'],['5680888644039320001', '18290417097092948369','11514747465221745456']],[['15676375283813327667','17096633384167959446','15706540600550963481'],['2449064304420323452', '4329499668083018070','1811248637296866398']]],uf=>'10859631824568410412',ug=>14367,uh=>[3449449198,4235856047,419355361],ui=>'18025125756859800527',uj=>[ 1329682793],uk=>[-121,75,-15],ul=>47},un=>{uc=>[8,-18,78],ud=>31,ue=>[[['6308631713685408671','2109952251444898942','5110008462292095656'],[ '5680888644039320001','18290417097092948369','11514747465221745456']],[['15676375283813327667','17096633384167959446','15706540600550963481'],[ '2449064304420323452','4329499668083018070','1811248637296866398']]],uf=>'10859631824568410412',ug=>14367,uh=>[3449449198,4235856047,419355361],ui=> '18025125756859800527',uj=>[1329682793],uk=>[-121,75,-15],ul=>47}}],[{rz=>[[-1126197668,654196580,-1164125035],[1717491602,164464696,-168534289]],sa=>[[ -1126197668,654196580]],sb=>92,sc=>[92,-106],sd=>38492,se=>38492,sf=>-1126197668,sg=>-1126197668,sh=>[[-27044,-17185],[16228,9982],[-9067,-17764]],si=>-27044, sj=>-27044,sk=>'2809752919423817308',sl=>149,sm=>-36,sn=>156,so=>186,sp=>[[1717491602,164464696]],sq=>[4126433007,1880055583],sr=>1914471245,ss=>3168769628,st=> 3168769628,su=>3168769628,sv=>[[[[3168769628,654196580,3130842261],[1717491602,164464696,4126433007]]],[[[1880055583,1914471245,426352940],[2958869701, 3107001674,2673962397]]]],sw=>'2809752919423817308',sx=>'2809752919423817308',sy=>3168769628,sz=>3168769628,ta=>[-27044,-17185,16228],tb=>-27044,tc=>3168769628, to=>{td=>[[-1126197668,654196580,-1164125035],[1717491602,164464696,-168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]], tf=>28061,tg=>-24735,th=>-29107,ti=>19138,tj=>[-1512813892,1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},tp=>{td=>[[-1126197668,654196580, -1164125035],[1717491602,164464696,-168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]],tf=>28061,tg=>-24735,th=>-29107, ti=>19138,tj=>[-1512813892,1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},tq=>{td=>[[-1126197668,654196580,-1164125035],[1717491602,164464696, -168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]],tf=>28061,tg=>-24735,th=>-29107,ti=>19138,tj=>[-1512813892, 1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},ub=>{tr=>3168769628,ts=>654196580,tt=>-9067,tu=>1717491602,tv=>164464696,tw=>24303,tx=>[[[ 1880055583],[1914471245],[426352940]],[[-1336097595],[-1187965622],[-1621004899]],[[1254264397],[-1512813892],[1430133849]]],ty=>-1993879570,tz=>54,ua=> 3788690028},um=>{uc=>[92,-106,-33],ud=>-68,ue=>[[['13446865120583892836','706370492384073618','8074777247773646575'],['1831171935767921485', '13344470581406123205','5387024568326122909']],[['6142378113139755708','16801458197879050222','3847526153876329068'],['743592664873247592', '13693714806056977778','15888049585206651815']]],uf=>'17963140751742991375',ug=>46502,uh=>[721079330,3961894620,2131023780],ui=>'167591474026352724',uj=>[ 1627139323],uk=>[-46,19,108],ul=>6},un=>{uc=>[92,-106,-33],ud=>-68,ue=>[[['13446865120583892836','706370492384073618','8074777247773646575'],[ '1831171935767921485','13344470581406123205','5387024568326122909']],[['6142378113139755708','16801458197879050222','3847526153876329068'],[ '743592664873247592','13693714806056977778','15888049585206651815']]],uf=>'17963140751742991375',ug=>46502,uh=>[721079330,3961894620,2131023780],ui=> '167591474026352724',uj=>[1627139323],uk=>[-46,19,108],ul=>6}}]],uq=>-75,ur=>2236113589,us=>25269,ut=>[[34120],[30548]],uu=>16221,uv=>33047,uw=>4102181657,ux=>[ [546722114,767607624,73025073],[2127472370,370110801,1579458150]],uy=>231,vh=>{uz=>[[[[25269,-31416,30548]],[[16221,-32489,21273]],[[-2942,20802,8342]]]],va=>[[ [72,-61],[-64,45],[49,70]]],vb=>90,vc=>4,vd=>[[[-22798,32462],[29009,5647],[-24986,24100]]],ve=>[[16615]],vf=>30834,vg=>'703012593382105554'},vi=>2236113589,vj=> 2236113589,vk=>['4565936802120622773','5855511306112172311','5057874162447032470'],vl=>'8165447025428661338',vm=>'4676810249416873487',vn=>[[[ '-7333376236790318990','7660190118987172289','-8337173152141021503'],['555198448556482722','6327072268883512402','-5083661308686275792'],['8160324916783808862', '3983613338139164009','699936173668592403']],[['7742379893290399345','2872020490439095325','-2345539642843168680'],['-8385949557279149457', '-6017275790039811845','1344356684086429800'],['-6791068790556763607','-2192884860071213949','3112266432129362420']],[['2536546716242400991', '7752623011068607848','4114580608502146666'],['35142559902046743','-8550609472760686320','8385205619132623682'],['7001999158115174909','4044116695233302253', '-253880877831263506']]],vo=>'-1630483595049116959',vp=>95,vq=>28,vr=>[[38],[250],[105]],vs=>2270118233,vt=>1546645835,vu=>-2058853707,vv=>-2058853707,vw=> -2058853707,vx=>'4565936802120622773',vy=>181,vz=>181,wi=>{wa=>'4565936802120622773',wb=>'5855511306112172311',wc=>3276284054,wd=>[[192]],we=>2800878682,wf=> 206,wg=>126,wh=>2657490447},ws=>{wj=>2236113589,wk=>'5987959116413106004',wl=>'14071532865699640450',wm=>'12029682340431211968',wn=>1901166286,wo=>[15,22,102], wp=>24100,wq=>[16615,30834],wr=>[[41426,40234,39482],[2497,59952,30291],[27214,61121,48053]]},wt=>{wj=>2236113589,wk=>'5987959116413106004',wl=> '14071532865699640450',wm=>'12029682340431211968',wn=>1901166286,wo=>[15,22,102],wp=>24100,wq=>[16615,30834],wr=>[[41426,40234,39482],[2497,59952,30291],[27214, 61121,48053]]},wu=>'4565936802120622773',wv=>'4565936802120622773',ww=>'4565936802120622773',wx=>[[2236113589,1063090004,1394180375]],wy=>25269,wz=>[[25269, 34120]],xa=>'4565936802120622773',xh=>{xb=>25269,xc=>[['4565936802120622773','5855511306112172311'],['5057874162447032470','8165447025428661338'],[ '4676810249416873487','-7333376236790318990']],xd=>25269,xe=>25269,xf=>-75,xg=>-75},xi=>[['4565936802120622773','5855511306112172311','5057874162447032470'],[ '8165447025428661338','4676810249416873487','-7333376236790318990'],['7660190118987172289','-8337173152141021503','555198448556482722']],xj=> '4565936802120622773',xk=>[[2236113589,1063090004],[1394180375,1363342466]],xl=>181,xm=>181,xn=>[181],xo=>25269,xp=>2236113589,xq=>2236113589,xr=>-2058853707, xs=>[[25269],[34120]],xt=>'4565936802120622773',xu=>['4565936802120622773','5855511306112172311','5057874162447032470'],ye=>{xv=>2236113589,xw=>1063090004,xx=>[ [1394180375],[1363342466],[3276284054]],xy=>11712,xz=>[[[[17969,1114,-22798]]],[[[32462,29009,5647]]]],ya=>102,yb=>[[[[24100,16615],[30834,41426]],[[40234, 39482],[2497,59952]]],[[[30291,27214],[61121,48053]],[[26928,35916],[41122,8718]]],[[[30220,1972],[52306,52998]],[[18100,22478],[27440,24923]]]],yc=>[[13561],[ 47475],[350]],yd=>52395},yf=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],yg=>-2058853707,yh=>-2058853707,yi=>-2058853707,yj=> -2058853707,yk=>25269,yl=>181,ym=>181,yn=>'4565936802120622773',yo=>'4565936802120622773',yp=>'4565936802120622773',yq=>[25269,34120],yr=>181,ys=>2236113589,yt=> 2236113589,yu=>-2058853707,yv=>25269,yw=>25269,yx=>25269,yy=>[[25269,34120,30548]],yz=>25269,za=>25269,zb=>25269,zc=>[[25269,-31416],[30548,16221]],zd=>[[-75],[ 98]],ze=>-75,zf=>[[-2058853707,1063090004],[1394180375,1363342466]],zg=>181,zh=>181,zi=>25269,zj=>'4565936802120622773',zk=>-75,zl=>-75,zm=>25269,zn=>[[ -2058853707,1063090004]],zo=>[181,98,72],zp=>-75,zq=>-75,zr=>-75,zs=>[25269],zt=>-75,zu=>-75,zv=>[[[2236113589,1063090004],[1394180375,1363342466]]],zw=>[[ 2236113589,1063090004,1394180375],[1363342466,3276284054,1177628096],[2800878682,1901166286,2657490447]],zx=>[[181,98,72]],zy=>'4565936802120622773',zz=> 1394180375,aaa=>[1363342466,-1018683242],aab=>1177628096,aac=>[[[[-1494088614]],[[1901166286]],[[-1637476849]]],[[[1088904740]],[[-1580042126]],[[-1707434710]]] ,[[[-365950527]],[[1783526995]],[[-1145704767]]]],aad=>-1941149392,aae=>162,aaf=>[[[160],[14],[34]],[[12],[118],[180]],[[7],[82],[204]]],aar=>[[{aag=>181,aah=>[ [98,72],[133,84],[119,93]],aai=>1394180375,aaj=>1363342466,aak=>3276284054,aal=>1177628096,aam=>90,aan=>4,aao=>[-14,-90],aap=>'-7032909512510964018',aaq=> 1088904740},{aag=>114,aah=>[[120,210],[161,42],[157,58]],aai=>3929016769,aaj=>1783526995,aak=>3149262529,aal=>-1941149392,aam=>162,aan=>-96,aao=>[14,34],aap=> '-3528908605309553140',aaq=>1473136308}],[{aag=>48,aah=>[[107,91],[97,249],[52,115]],aai=>3433759070,aaj=>1899973702,aak=>2521496937,aal=>927507257,aam=>19,aan=> 107,aao=>[-10,-44],aap=>'-598004097643795395',aaq=>1802663293},{aag=>29,aah=>[[244,67],[96,107],[119,219]],aai=>1035763800,aaj=>3748853791,aak=>3993514607,aal=> -1952506034,aam=>251,aan=>120,aao=>[30,-61],aap=>'1037174166098171788',aaq=>313007432}],[{aag=>41,aah=>[[90,159],[101,234],[70,193]],aai=>2451539075,aaj=> 3784396502,aak=>2641455604,aal=>724630996,aam=>223,aan=>-42,aao=>[-49,-103],aap=>'-6033841189525676084',aaq=>1805048205},{aag=>106,aah=>[[38,123],[113,67],[237, 25]],aai=>3614808599,aaj=>8182264,aak=>3540146448,aal=>-1990843908,aam=>66,aan=>107,aao=>[2,121],aap=>'-2807420433528374251',aaq=>1630279970}]],aas=>2236113589, aat=>2236113589,aau=>[[[2236113589,1063090004],[1394180375,1363342466]]]}}}, 4=>{sizeof=>{aa=>236,ey=>1120,kc=>3324,rw=>420},content=>{aa=>{ab=>'4565936802120622773',be=>{ac=>2236113589,ad=>1063090004,ae=>1394180375,af=>[-2942,20802],ag=> 8342,ah=>[[[72]],[[-61]]],ai=>'-6417061733278339648',aj=>[[['-7032909512510964018','-6786229256383406556'],['-1571745542831432406','-4920764503352773037'],[ '2454075466962463024','-3528908605309553140']],[['7015318699935418036','-3698861162604841735'],['-7616997190430405562','-3101173563121949895'],[ '-598004097643795395','6936656258274588029']],[['4448571648049379179','-1294729436797405153'],['-4386935965237698738','1037174166098171788'],[ '7322670651580882248','-7917463919004662038']]],ak=>'-7101778636909228330',al=>212,am=>-3,an=>48,ao=>2580535007,ap=>-2058853707,aq=>2236113589,ar=>1063090004, as=>[[1394180375,1363342466]],at=>[-1018683242,1177628096,-1494088614],au=>206,av=>126,aw=>29009,ax=>[[['4676810249416873487','-7333376236790318990']]],ay=> '7660190118987172289',az=>[[['10109570921568530113','555198448556482722','6327072268883512402'],['13363082765023275824','8160324916783808862', '3983613338139164009'],['699936173668592403','7742379893290399345','2872020490439095325']],[['16101204430866382936','10060794516430402159', '12429468283669739771'],['1344356684086429800','11655675283152788009','16253859213638337667'],['3112266432129362420','2536546716242400991', '7752623011068607848']]],ba=>'4114580608502146666',bb=>-680158697,bc=>'4565936802120622773',bd=>[[[25269],[34120],[30548]]]},db=>{bf=>2236113589,bg=>2236113589, bo=>{bh=>[[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[ [-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=> -126,bj=>1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=> 2800878682,bk=>[[-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=> [[1088904740,-1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707, 1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527, 1783526995,-1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>-12538,bw=>[180,70,206],bx=>1633381168,by=>-1183632135,bz=>'8160324916783808862',ca=> 2521496937,cb=>927507257,cc=>3572919059,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707, cj=>[[25269,34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[ 1063090004]]],[[[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]] ,cv=>32462,cw=>29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dc=>{bf=>2236113589,bg=>2236113589,bo=>{bh=> [[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98,72]],bi=> -75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=>-126,bj=> 1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=>2800878682,bk=>[ [-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=>[[1088904740, -1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707,1063090004, 1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527,1783526995, -1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>-12538,bw=>[180,70,206],bx=>1633381168,by=>-1183632135,bz=>'8160324916783808862',ca=>2521496937,cb=> 927507257,cc=>3572919059,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707,cj=>[[25269, 34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[1063090004]]],[ [[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]],cv=>32462,cw=> 29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dd=>25269,dj=>{de=>-2058853707,df=>[[1063090004,1394180375, 1363342466],[-1018683242,1177628096,-1494088614],[1901166286,-1637476849,1088904740]],dg=>-1580042126,dh=>[[2587532586,3929016769,1783526995],[3149262529, 2353817904,571383970]],di=>129267212},dk=>-13230,dl=>[[-12538],[18100]],dm=>[[1633381168,-1183632135,-861208226],[1899973702,-1773470359,927507257]],dn=> -722048237,dp=>162966589,dq=>4155733617,dr=>125,ds=>117,dt=>114,du=>1615066141,dv=>107,dw=>107,dx=>[[30571,10203],[-32680,15804],[-2017,-8334]],dy=>107,dz=>107, ea=>668694379,eb=>[[668694379,1035763800,-546113505],[-301452689,-1952506034,-1021413125],[-1401006196,241485928,313007432]],ec=>23081,ed=>26015,ee=>2713798378, ef=>33923,eg=>31,eh=>-110,ei=>-42,ej=>-7791,ek=>27124,el=>[[[113,157],[212,253]],[[48,43],[223,214]],[[207,153],[204,159]]],em=>[[[51,35],[104,125],[67,172]],[[ 141,217],[150,107],[106,38]]],en=>958000451,eo=>23,ep=>8182264,ev=>{eq=>-754820848,er=>22800,es=>-754820848,et=>-754820848,eu=>'-8550609472760686320'},ew=>{eq=> 2030201666,er=>27458,es=>2030201666,et=>2030201666,eu=>'8385205619132623682'},ex=>-653653507},ey=>{ez=>-2058853707,fa=>2236113589,fn=>{fb=>-2058853707,fc=> -2058853707,fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773',fh=>'4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[ -75],[98],[72]],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fo=>{fb=>-2058853707,fc=>-2058853707,fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773', fh=>'4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[-75],[98],[72]],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fp=> '4565936802120622773',fq=>62594,fr=>[62594,20802],fs=>62594,ft=>1363342466,fu=>[[1363342466,3276284054],[1177628096,2800878682],[1901166286,2657490447]],fv=> 1363342466,fw=>-126,fx=>130,fy=>130,fz=>'14071532865699640450',ga=>'14071532865699640450',gb=>-2942,gc=>-2942,gd=>-2942,ge=>-126,gf=>-126,gg=>[-126,-12,66],gh=> '14071532865699640450',gi=>1363342466,gj=>1363342466,gk=>1363342466,gl=>['-4375211208009911166'],gu=>{gm=>1363342466,gn=>1363342466,go=>130,gp=> '-4375211208009911166',gq=>1363342466,gr=>-126,gs=>1363342466,gt=>'14071532865699640450'},gv=>[[{gm=>1363342466,gn=>1363342466,go=>130,gp=> '-4375211208009911166',gq=>1363342466,gr=>-126,gs=>1363342466,gt=>'14071532865699640450'},{gm=>1177628096,gn=>1177628096,go=>192,gp=>'-6417061733278339648',gq=> 1177628096,gr=>-64,gs=>1177628096,gt=>'12029682340431211968'}]],gw=>['-4375211208009911166','-6417061733278339648'],gx=>1901166286,gy=>-1637476849,gz=> 1088904740,ha=>[114,120],hb=>-46,hc=>2587532586,hd=>-63,he=>[[[[1783526995,3149262529],[2353817904,571383970]]],[[[129267212,3473329234],[1473136308,1633381168] ]]],hf=>-1183632135,hg=>3433759070,ii=>{hh=>19526,hi=>2521496937,ht=>{hj=>927507257,hk=>927507257,hl=>[[[927507257,3572919059,162966589],[4155733617,1802663293, 1615066141],[668694379,1035763800,3748853791]],[[3993514607,2342461262,3273554171],[2893961100,241485928,313007432],[1704942121,2713798378,2451539075]],[[ 3784396502,2641455604,724630996],[2580535007,590585804,2890104168],[1805048205,1903896170,958000451]]],hm=>-23751,hn=>927507257,ho=>'-3101173563121949895',hp=> 927507257,hq=>'-3101173563121949895',hr=>'-3101173563121949895',hs=>[[927507257,3572919059],[162966589,4155733617],[1802663293,1615066141]]},hu=>{hj=> -680158697,hk=>3614808599,hl=>[[[3614808599,8182264,3540146448],[2304123388,2030201666,1952332821],[3641313789,1630279970,698060525]],[[941594293,3449449198, 4235856047],[419355361,3915340751,4196801631],[1329682793,804342663,3168769628]],[[654196580,3130842261,1717491602],[164464696,4126433007,1880055583],[ 1914471245,426352940,2958869701]]],hm=>-26089,hn=>-680158697,ho=>'35142559902046743',hp=>3614808599,hq=>'35142559902046743',hr=>'35142559902046743',hs=>[[ 3614808599,8182264],[3540146448,2304123388],[2030201666,1952332821]]},hv=>74,hw=>21,hx=>[-1621004899],ig=>[[[{hy=>-29107,hz=>-29107,ia=>77,ib=>77,ic=>77,id=>77, ie=>'11949257883889339981'}]],[[{hy=>7257,hz=>7257,ia=>89,ib=>89,ic=>89,id=>89,ie=>'9883096529827142745'}]],[[{hy=>-15050,hz=>-15050,ia=>54,ib=>54,ic=>54,id=> 54,ie=>'16272299768853218614'}]]],ih=>{hy=>10406,hz=>10406,ia=>166,ib=>166,ic=>166,id=>166,ie=>'14365114366907721894'}},ij=>{hh=>-14954,hi=>1317569906,ht=>{hj=> -1106650864,hk=>3188316432,hl=>[[[3188316432,1409870759,3699224811],[1174141967,4182369623,3424826790],[3067882234,3617909797,2421456644]],[[1737409721, 754647635,332554492],[2494039660,3282115136,1908189440],[3507334133,1956692139,1912522927]],[[4267130807,2602401188,1651801180],[3747661462,3857455561, 2181063779],[4114705051,469329824,468202775]]],hm=>-9968,hn=>-1106650864,ho=>'6055348804680014096',hp=>3188316432,hq=>'6055348804680014096',hr=> '6055348804680014096',hs=>[[3188316432,1409870759],[3699224811,1174141967],[4182369623,3424826790]]},hu=>{hj=>332143729,hk=>332143729,hl=>[[[332143729, 170746245,1028674598],[2899075897,3109015784,3144929042],[1593955950,4220642218,373211743]],[[4009510002,218016399,1104118570],[2744291572,2510140295, 3629611921],[2042645651,1209313619,2995604484]],[[1891001717,1217464078,3981441681],[2903409384,3868812458,3790638090],[1350011419,3717950089,1611554436]]],hm=> 7281,hn=>332143729,ho=>'733349538521947249',hp=>332143729,hq=>'733349538521947249',hr=>'733349538521947249',hs=>[[332143729,170746245],[1028674598,2899075897],[ 3109015784,3144929042]]},hv=>120,hw=>44,hx=>[601837460],ig=>[[[{hy=>-12288,hz=>-12288,ia=>0,ib=>0,ic=>0,id=>0,ie=>'4357902969922768896'}]],[[{hy=>25949,hz=> 25949,ia=>93,ib=>93,ic=>93,id=>93,ie=>'14378715387982800221'}]],[[{hy=>27553,hz=>27553,ia=>161,ib=>161,ic=>161,id=>161,ie=>'16218852159409187745'}]]],ih=>{hy=> -17560,hz=>-17560,ia=>104,ib=>104,ic=>104,id=>104,ie=>'17211034159828417384'}},ik=>{hh=>31043,hi=>798100818,ht=>{hj=>148469045,hk=>148469045,hl=>[[[148469045, 1955910318,4066202864],[2064141029,2452665868,3937232764],[2769298656,4161604403,693356236]],[[380646172,2854125119,3339244337],[3588954414,510397838, 4290189316],[3799675867,2670821494,647173169]],[[2281064367,849704203,950155515],[2463612002,3206736700,2062974277],[4122921046,1471943724,1480544906]]],hm=> 30005,hn=>148469045,ho=>'8400570849867429173',hp=>148469045,hq=>'8400570849867429173',hr=>'8400570849867429173',hs=>[[148469045,1955910318],[4066202864, 2064141029],[2452665868,3937232764]]},hu=>{hj=>-1311475443,hk=>2983491853,hl=>[[[2983491853,4274975743,3770309465],[2748213784,946643554,2021945967],[ 2772875897,308303142,1144059791]],[[2118474299,1554796294,2675871010],[3531479986,818084217,738717777],[2456999355,385350206,3431850456]],[[3917725664, 190664364,1635765825],[3400164934,3722999606,217605636],[3075792450,490851033,3517803968]]],hm=>30989,hn=>-1311475443,ho=>'-85863063347758835',hp=>2983491853, hq=>'-85863063347758835',hr=>'-85863063347758835',hs=>[[2983491853,4274975743],[3770309465,2748213784],[946643554,2021945967]]},hv=>132,hw=>159,hx=>[ -1064084487],ig=>[[[{hy=>-18926,hz=>-18926,ia=>18,ib=>18,ic=>18,id=>18,ie=>'12738415015595914770'}]],[[{hy=>-21968,hz=>-21968,ia=>48,ib=>48,ic=>48,id=>48,ie=> '15211698444584856112'}]],[[{hy=>-8566,hz=>-8566,ia=>138,ib=>138,ic=>138,id=>138,ie=>'644556020419255946'}]]],ih=>{hy=>-28612,hz=>-28612,ia=>60,ib=>60,ic=>60, id=>60,ie=>'9317338456741613628'}},iu=>{il=>232103180,im=>232103180,in=>12,io=>12,ip=>12,iq=>232103180,ir=>[[232103180,980648197],[2522278758,3068663800],[ 1447321828,312636629]],is=>232103180,it=>232103180},iv=>232103180,iw=>232103180,ix=>12,iy=>12,iz=>12,ja=>12,jb=>12,jc=>40204,jd=>40204,je=> '4211851935228468492',jf=>12,jg=>12,jr=>{jh=>232103180,ji=>[[[['4211851935228468492','13179810665941363558','1342764098534007012'],['11944135770949454673', '9261674633803989939','5786810507269617623'],['14519643210225587285','16796337188762536946','3226386832324803014']]]],jj=>12,jk=>232103180,jl=>232103180,jm=> 232103180,jn=>12,jo=>12,jp=>'4211851935228468492',jq=>-25332},js=>{jh=>232103180,ji=>[[[['4211851935228468492','13179810665941363558','1342764098534007012'],[ '11944135770949454673','9261674633803989939','5786810507269617623'],['14519643210225587285','16796337188762536946','3226386832324803014']]]],jj=>12,jk=> 232103180,jl=>232103180,jm=>232103180,jn=>12,jo=>12,jp=>'4211851935228468492',jq=>-25332},jt=>{ab=>'4211851935228468492',be=>{ac=>232103180,ad=>980648197,ae=> 2522278758,af=>[6136,-18712],ag=>24804,ah=>[[[68]],[[86]]],ai=>'8104943659727877333',aj=>[[['5558008960243603507','2039488342470956034'],['4821266495240593791', '-5773671953642544494'],['-2830589576813702226','-396574013523595846']],[['6560603512098313641','-461916909069215686'],['6965059560114339111', '-1575103437538433174'],['4136549591609574036','-6248872290409274729']],[['-2078484084410756011','-9094399657955448546'],['8632167350236826521', '-6158203612282599422'],['766872758556452631','7193298165793512907']]],ak=>'-7541411168516577347',al=>7,am=>-20,an=>63,ao=>3768055624,ap=>232103180,aq=> 232103180,ar=>980648197,as=>[[2522278758,3068663800]],at=>[1447321828,312636629,1887079249],au=>51,av=>24,aw=>42434,ax=>[[['-9185069439905561677', '5786810507269617623']]],ay=>'14519643210225587285',az=>[[['16796337188762536946','3226386832324803014','8848682293905004041'],['13776186055320138274', '8650778438637383940','15061839710373076164'],['16982232608490658756','9466463712142948847','14800187739823639490']],[['18312103509990292924', '5230732614893712305','3701475119182093944'],['17991430912734767729','17264370823186381493','10621713046786259601'],['5350254399687460479', '10562693528148244296','15981964116737535114']]],ba=>'3199577211254135199',bb=>1182397922,bc=>'4211851935228468492',bd=>[[[40204],[3541],[33029]]]},db=>{bf=> 232103180,bg=>232103180,bo=>{bh=>[[12,-99,-43]],bi=>12,bj=>232103180,bk=>[[232103180,980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=> 232103180},bp=>{bh=>[[12,-99,-43]],bi=>12,bj=>232103180,bk=>[[232103180,980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=>232103180},bq=>[[ {bh=>[[12,-99,-43]],bi=>12,bj=>232103180,bk=>[[232103180,980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=>232103180},{bh=>[[-8,23,-24]],bi=> -8,bj=>3068663800,bk=>[[-1226303496,1447321828,312636629]],bl=>[-1226303496,1447321828],bm=>-1226303496,bn=>-1226303496}],[{bh=>[[81,-117,122]],bi=>81,bj=> 1887079249,bk=>[[1887079249,-1514006477,1294074803]],bl=>[1887079249,-1514006477],bm=>1887079249,bn=>1887079249},{bh=>[[2,20,-120]],bi=>2,bj=>2156401666,bk=>[[ -2138565630,474855383,1347346815]],bl=>[-2138565630,474855383],bm=>-2138565630,bn=>-2138565630}]],br=>[232103180,980648197,-1772688538],bs=>[[232103180, 980648197,-1772688538],[-1226303496,1447321828,312636629],[1887079249,-1514006477,1294074803]],bt=>[[-2138565630,474855383,1347346815],[1122538581,-914349422, -1344287758],[-384265298,-659047994,751201722]],bu=>9,bv=>-1409,bw=>[169,213,204],bx=>1527509538,by=>-1087449030,bz=>'8650778438637383940',ca=>1621679300,cb=> 3506857834,cc=>3928234948,cd=>'4211851935228468492',cn=>{ce=>232103180,cf=>232103180,cg=>232103180,ch=>'4211851935228468492',ci=>232103180,cj=>[[40204,3541]], ck=>[[[[40204,3541],[33029,14963],[60262,38486]],[[6136,46824],[24804,22084],[29909,4770]]]],cl=>232103180,cm=>[[[[232103180]]],[[[980648197]]],[[[-1772688538]] ]]},co=>40204,cp=>[3541],cq=>33029,cr=>[[14963],[60262],[38486]],cs=>6136,ct=>-18712,cu=>[[24804,22084,29909],[4770,-29871,28794]],cv=>6195,cw=>42434,cx=>179, cy=>3,cz=>19746,da=>[[[[5122],[-32632]]],[[[-18473],[7245]]],[[[-7809],[20558]]]]},dc=>{bf=>232103180,bg=>232103180,bo=>{bh=>[[12,-99,-43]],bi=>12,bj=> 232103180,bk=>[[232103180,980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=>232103180},bp=>{bh=>[[12,-99,-43]],bi=>12,bj=>232103180,bk=>[[ 232103180,980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=>232103180},bq=>[[{bh=>[[12,-99,-43]],bi=>12,bj=>232103180,bk=>[[232103180, 980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=>232103180},{bh=>[[-8,23,-24]],bi=>-8,bj=>3068663800,bk=>[[-1226303496,1447321828,312636629]] ,bl=>[-1226303496,1447321828],bm=>-1226303496,bn=>-1226303496}],[{bh=>[[81,-117,122]],bi=>81,bj=>1887079249,bk=>[[1887079249,-1514006477,1294074803]],bl=>[ 1887079249,-1514006477],bm=>1887079249,bn=>1887079249},{bh=>[[2,20,-120]],bi=>2,bj=>2156401666,bk=>[[-2138565630,474855383,1347346815]],bl=>[-2138565630, 474855383],bm=>-2138565630,bn=>-2138565630}]],br=>[232103180,980648197,-1772688538],bs=>[[232103180,980648197,-1772688538],[-1226303496,1447321828,312636629],[ 1887079249,-1514006477,1294074803]],bt=>[[-2138565630,474855383,1347346815],[1122538581,-914349422,-1344287758],[-384265298,-659047994,751201722]],bu=>9,bv=> -1409,bw=>[169,213,204],bx=>1527509538,by=>-1087449030,bz=>'8650778438637383940',ca=>1621679300,cb=>3506857834,cc=>3928234948,cd=>'4211851935228468492',cn=>{ce=> 232103180,cf=>232103180,cg=>232103180,ch=>'4211851935228468492',ci=>232103180,cj=>[[40204,3541]],ck=>[[[[40204,3541],[33029,14963],[60262,38486]],[[6136,46824], [24804,22084],[29909,4770]]]],cl=>232103180,cm=>[[[[232103180]]],[[[980648197]]],[[[-1772688538]]]]},co=>40204,cp=>[3541],cq=>33029,cr=>[[14963],[60262],[38486] ],cs=>6136,ct=>-18712,cu=>[[24804,22084,29909],[4770,-29871,28794]],cv=>6195,cw=>42434,cx=>179,cy=>3,cz=>19746,da=>[[[[5122],[-32632]]],[[[-18473],[7245]]],[[[ -7809],[20558]]]]},dd=>-25332,dj=>{de=>232103180,df=>[[980648197,-1772688538,-1226303496],[1447321828,312636629,1887079249],[-1514006477,1294074803,-2138565630] ],dg=>474855383,dh=>[[1347346815,1122538581,3380617874],[2950679538,3910701998,3635919302]],di=>751201722},dk=>5641,dl=>[[-1409],[-10839]],dm=>[[1527509538, -1087449030,-107548412],[2014166311,1621679300,-788109462]],dn=>-366732348,dp=>3953984148,dq=>963115503,dr=>-105,ds=>-94,dt=>95,du=>-1454928958,dv=>85,dw=>85, dx=>[[-11179,-12956],[-16964,-7385],[-22242,-479]],dy=>85,dz=>85,ea=>-849030059,eb=>[[-849030059,-483934788,-31348450],[-2117454927,1217874841,2009833080],[ 861816834,-1433818511,-106010857]],ec=>31413,ed=>2724,ee=>4019674571,ef=>47761,eg=>-45,eh=>99,ei=>-67,ej=>-27801,ek=>-31105,el=>[[[87,151],[7,236]],[[63,74],[ 72,247]],[[151,224],[204,57]]],em=>[[[150,146],[138,44],[46,39]],[[176,87],[203,221],[159,217]]],en=>744959621,eo=>226,ep=>3361827059,ev=>{eq=>-1798542723,er=> 27261,es=>-1798542723,et=>-1798542723,eu=>'-3109652471240430979'},ew=>{eq=>-2097537064,er=>8152,es=>-2097537064,et=>-2097537064,eu=>'7838170680078770136'},ex=> -1784045179},ju=>'4211851935228468492',jv=>'4211851935228468492',jw=>40204,jx=>40204,jy=>[[[[40204,3541,33029]],[[14963,60262,38486]]],[[[6136,46824,24804]],[[ 22084,29909,4770]]],[[[35665,28794,6195]],[[42434,947,19746]]]],jz=>40204,ka=>12,kb=>12},kc=>{mg=>{kd=>-2058853707,ke=>'5987959116413106004',kf=>1363342466,kg=> 3276284054,kh=>11712,ki=>49,kw=>{kj=>[[-1494088614,1901166286],[-1637476849,1088904740],[-1580042126,-1707434710]],kk=>[-1494088614],kl=>2800878682,km=> 2800878682,kn=>[[2800878682,1901166286]],ko=>'8165447025428661338',kp=>['8165447025428661338','4676810249416873487','-7333376236790318990'],kq=> '8165447025428661338',kr=>'8165447025428661338',ks=>[-1494088614],kt=>90,ku=>90,kv=>-1494088614},kx=>'7660190118987172289',ky=>'10109570921568530113',kz=>-63, la=>3149262529,lb=>'-8337173152141021503',lc=>['-8337173152141021503','555198448556482722'],ld=>[[['10109570921568530113','555198448556482722', '6327072268883512402']],[['13363082765023275824','8160324916783808862','3983613338139164009']]],le=>3149262529,lf=>[[3149262529,2353817904]],lg=>3149262529,lh=> -4415,lp=>[[{li=>27411,lj=>[[27411]],lk=>'699936173668592403',ll=>'699936173668592403',lm=>[[[-722048237,162966589,-139233679],[1802663293,1615066141,668694379] ,[1035763800,-546113505,-301452689]]],ln=>27411,lo=>[['699936173668592403'],['7742379893290399345']]},{li=>8014,lj=>[[8014]],lk=>'14059808108471852878',ll=> '14059808108471852878',lm=>[[[-1952506034,-1021413125,-1401006196],[241485928,313007432,1704942121],[-1581168918,-1843428221,-510570794]]],ln=>8014,lo=>[[ '14059808108471852878'],['1037174166098171788']]}],[{li=>27124,lj=>[[27124]],lk=>'3112266432129362420',ll=>'3112266432129362420',lm=>[[[-1653511692,724630996, -1714432289],[590585804,-1404863128,1805048205],[1903896170,958000451,-680158697]]],ln=>27124,lo=>[['3112266432129362420'],['2536546716242400991']]},{li=>-9736, lj=>[[-9736]],lk=>'15204813217218746872',ll=>'15204813217218746872',lm=>[[[8182264,-754820848,-1990843908],[2030201666,1952332821,-653653507],[1630279970, 698060525,941594293]]],ln=>55800,lo=>[['15204813217218746872'],['8719649762058838524']]}]],lq=>{li=>27374,lj=>[[27374]],lk=>'18192863195878288110',ll=> '18192863195878288110',lm=>[[[-845518098,-59111249,419355361],[-379626545,-98165665,1329682793],[804342663,-1126197668,654196580]]],ln=>27374,lo=>[[ '18192863195878288110'],['16816260478660434657']]},lr=>'7376570264875490453',ls=>'17722894814364403768',lt=>31,lu=>28687,lv=>-31923,lw=>28,lx=>114,ly=>[[[[44],[ 161]],[[105],[25]],[[197],[196]]]],lz=>92,ma=>-1187965622,mb=>-1621004899,mc=>1254264397,md=>[['6142378113139755708'],['-1645285875830501394']],me=>[53868],mf=> [57810,10406,13669]},mh=>{kd=>-950328472,ke=>'5658919656636925334',kf=>3188316432,kg=>1409870759,kh=>-20245,ki=>125,kw=>{kj=>[[1174141967,-112597673],[ -870140506,-1227085062],[-677057499,-1873510652]],kk=>[1174141967],kl=>1174141967,km=>1174141967,kn=>[[1174141967,4182369623]],ko=>'-483603321966560241',kp=>[ '-483603321966560241','-5270290207275305562','-8046666975429727195'],kq=>'-483603321966560241',kr=>'-483603321966560241',ks=>[1174141967],kt=>15,ku=>15,kv=> 1174141967},kx=>'3241186914066154681',ky=>'10711818774959513852',kz=>-4,la=>332554492,lb=>'-7734925298750037764',lc=>['-7734925298750037764', '8195611242654669376'],ld=>[[['10711818774959513852','8195611242654669376','8403928748852620277']],[['18327187265731610799','7094432050196610468', '16567645484015994518']]],le=>332554492,lf=>[[332554492,2494039660]],lg=>332554492,lh=>24828,lp=>[[{li=>25699,lj=>[[25699]],lk=>'17672523628912075875',ll=> '17672523628912075875',lm=>[[[-2113903517,-180262245,469329824],[468202775,332143729,170746245],[1028674598,-1395891399,-1185951512]]],ln=>25699,lo=>[[ '17672523628912075875'],['2010915606990776224']]},{li=>-12526,lj=>[[-12526]],lk=>'6845988679659540242',ll=>'6845988679659540242',lm=>[[[-1150038254,1593955950, -74325078],[373211743,-285457294,218016399],[1104118570,-1550675724,-1784827001]]],ln=>53010,lo=>[['6845988679659540242'],['1602932234888799146']]}],[{li=> 31633,lj=>[[31633]],lk=>'8773096271991241617',ll=>'8773096271991241617',lm=>[[[-665355375,2042645651,1209313619],[-1299362812,1891001717,1217464078],[ -313525615,-1391557912,-426154838]]],ln=>31633,lo=>[['8773096271991241617'],['12866023291740268883']]},{li=>-29686,lj=>[[-29686]],lk=>'5798254897622191114',ll=> '5798254897622191114',lm=>[[[-504329206,1350011419,-577017207],[1611554436,243805304,601837460],[2011025408,1014653353,-1289198243]]],ln=>35850,lo=>[[ '5798254897622191114'],['6921573602061675145']]}]],lq=>{li=>30070,lj=>[[30070]],lk=>'11108528298467751286',ll=>'11108528298467751286',lm=>[[[-947161738, -1708561503,-518721509],[1638906728,-287711135,-70813373],[798100818,148469045,1955910318]]],ln=>30070,lo=>[['11108528298467751286'],['7039050801730613275']]}, lr=>'8865418217952990448',ls=>'16910285960572352012',lt=>-32,lu=>-23280,lv=>2867,lw=>13,lx=>248,ly=>[[[[204],[198]],[[83],[41]],[[28],[51]]]],lz=>176,ma=> -1440842177,mb=>-955722959,mc=>3588954414,md=>[['-20521267330544242'],['-6975653099726015525']],me=>[5169],mf=>[9875,18351,34806]},mi=>{kd=>849704203,ke=> '-7865611094136309509',kf=>3206736700,kg=>2062974277,kh=>-14250,ki=>190,kw=>{kj=>[[1471943724,1480544906],[-1311475443,-19991553],[-524657831,-1546753512]],kk=> [1471943724],kl=>1471943724,km=>1471943724,kn=>[[1471943724,1480544906]],ko=>'6358891953001337900',kp=>['6358891953001337900','-85863063347758835', '-6643255745242834087'],kq=>'6358891953001337900',kr=>'6358891953001337900',ks=>[1471943724],kt=>44,ku=>44,kv=>1471943724},kx=>'8684191803490738786',ky=> '1324151914916919929',kz=>121,la=>2772875897,lb=>'1324151914916919929',lc=>['1324151914916919929','9098777832765585295'],ld=>[[['1324151914916919929', '9098777832765585295','11492778477819285254']],[['3513644960920247218','10552731876756811857','14739685473668037182']]],le=>2772875897,lf=>[[2772875897, 308303142]],lg=>2772875897,lh=>-17799,lp=>[[{li=>-16416,lj=>[[-16416]],lk=>'818897211810365408',ll=>'818897211810365408',lm=>[[[-377241632,190664364,1635765825] ,[-894802362,-571967690,217605636],[-1219174846,490851033,-777163328]]],ln=>49120,lo=>[['818897211810365408'],['14603597194171764289']]},{li=>-24700,lj=>[[ -24700]],lk=>'13876536005094907780',ll=>'13876536005094907780',lm=>[[[-1063673980,-1064084487,907589138],[-1329073929,-338187728,-753217757],[451796618, 150072393,103518268]]],ln=>40836,lo=>[['13876536005094907780'],['12738415015595914770']]}],[{li=>-10762,lj=>[[-10762]],lk=>'996875569566963190',ll=> '996875569566963190',lm=>[[[-2125605386,232103180,980648197],[-1772688538,-1226303496,1447321828],[312636629,1887079249,-1514006477]]],ln=>54774,lo=>[[ '996875569566963190'],['10833104777986146565']]},{li=>947,lj=>[[947]],lk=>'9261674633803989939',ll=>'9261674633803989939',lm=>[[[1294074803,-2138565630, 474855383],[1347346815,1122538581,-914349422],[-1344287758,-384265298,-659047994]]],ln=>947,lo=>[['9261674633803989939'],['5786810507269617623']]}]],lq=>{li=> 28090,lj=>[[28090]],lk=>'18050170060185955770',ll=>'18050170060185955770',lm=>[[[751201722,-92334583,2060244393],[1527509538,-1087449030,-107548412],[ 2014166311,1621679300,-788109462]]],ln=>28090,lo=>[['18050170060185955770'],['6560603512098313641']]},lr=>'16982232608490658756',ls=>'9466463712142948847',lt=> -62,lu=>-22201,lv=>-11179,lw=>100,lx=>205,ly=>[[[[188],[189]],[[39],[227]],[[30],[169]]]],lz=>33,ma=>-2117454927,mb=>1217874841,mc=>2009833080,md=>[[ '-6158203612282599422'],['766872758556452631']],me=>[24011],mf=>[61335,47761,25555]},mj=>'-7541411168516577347',ou=>[[{mk=>['16183675675834575879', '2823242990084307404'],ml=>'16183675675834575879',mm=>'16183675675834575879',mn=>1245703175,mo=>1245703175,mp=>1245703175,mq=>7,mr=>7,ms=>22448,mt=>56779,mu=>[ -9825,-31684],mv=>2218580383,mw=>[[2218580383],[744959621]],mx=>[-97],my=>-97,mz=>-97,na=>159,nb=>['3199577211254135199'],nq=>{nc=>'14438937274395260386',nd=> '15337091602469120637',ne=>[[[['7838170680078770136'],['6338798129934606725'],['5837070750880514404']],[['12251487722594918884'],['5115129471442097571'],[ '6301746486302456423']],[['10257103587122409201'],['11432276215941873281'],['4466900161961532886']]]],nf=>'1478851282813619424',ng=>-11269,nh=>31765,ni=>-38,nj=> 4132369329,nk=>787525742,nl=>680051021,nm=>43263,nn=>'-5789036089143978082',no=>18619,np=>-1092974590},nr=>[['5256058393179735452']],ns=>'5256058393179735452', nt=>156,nu=>156,nv=>156,nw=>3291497884,nx=>[17820,50224],ny=>-1003469412,nz=>-1003469412,oa=>[[17820,-15312,17730],[18673,7096,-24234],[-4195,24440,-5041]],ob=> [[[17820]],[[-15312]],[[17730]]],oc=>-100,od=>-100,oe=>-1003469412,of=>-1003469412,og=>[3427146167,3340000071],oh=>-387816708,oi=>-387816708,oj=>[25340,-5918], ok=>'3102304785032962812',ol=>[['3102304785032962812','1366044192217212050','5371941907818177193']],om=>[3907150588,722311619,2291639442],on=>3907150588,oo=> 3907150588,op=>3907150588,oq=>[25340,-5918,-26173],or=>25340,os=>[[252],[98]],ot=>252}]],ov=>{mk=>['4279241623495376841','4079404124927535055'],ml=> '4279241623495376841',mm=>'4279241623495376841',mn=>2357329865,mo=>2357329865,mp=>-1937637431,mq=>-55,mr=>-55,ms=>6011,mt=>2140,mu=>[9506,14802],mv=>970073378, mw=>[[970073378],[3037083517]],mx=>[34],my=>34,mz=>34,na=>34,nb=>['-5402569692003818206'],nq=>{nc=>'11353333398815960393',nd=>'12541993899289435977',ne=>[[[[ '7801119036446620090'],['10686774475928325649'],['5017575570227502593']],[['11603539883796097304'],['291672421789787933'],['7873347163653381746']],[[ '2207224681977750305'],['18182901544486855671'],['15574263314845706388']]]],nf=>'3330544485912019360',ng=>9446,nh=>19191,ni=>-27473,nj=>1880837404,nk=> 4055693068,nl=>2612565757,nm=>35933,nn=>'-2760408246606353878',no=>40418,np=>-25041070},nr=>[['-431579968224341032']],ns=>'-431579968224341032',nt=>216,nu=>216, nv=>216,nw=>902845400,nx=>[21464,13776],ny=>902845400,nz=>902845400,oa=>[[21464,13776,-18354],[-1534,10013,15882],[-10833,7859,31645]],ob=>[[[21464]],[[13776]], [[-18354]]],oc=>-40,od=>-40,oe=>902845400,of=>902845400,og=>[99966858,3567498996],oh=>1772541413,oi=>1772541413,oj=>[-10779,27046],ok=>'5974471240480904677',ol=> [['5974471240480904677','-6527652610381219482','6155978030408304499']],om=>[1772541413,1391039984,756250982],on=>1772541413,oo=>1772541413,op=>1772541413,oq=>[ -10779,27046,-27152],or=>-10779,os=>[[229],[213]],ot=>229},ow=>[[{mk=>['9058481435274278393','14930872439993316291'],ml=>'9058481435274278393',mm=> '9058481435274278393',mn=>436106745,mo=>436106745,mp=>436106745,mq=>-7,mr=>-7,ms=>60608,mt=>59301,mu=>[-10791,-2841],mv=>4108834265,mw=>[[4108834265],[ 1561859664]],mx=>[-39],my=>-39,mz=>-39,na=>217,nb=>['6708136181930382809'],nq=>{nc=>'10414879379027654168',nd=>'5104886353663954604',ne=>[[[[ '4987691728449865754'],['7876703958831977522'],['11596937235213228256']],[['8439105228165753487'],['14195895288439720779'],['993518774371589943']],[[ '1371617209496046918'],['15959995137941852255'],['9483310586605523230']]]],nf=>'7967372636975430301',ng=>11170,nh=>4012,ni=>22001,nj=>325901884,nk=>1445412958, nl=>2347165552,nm=>56212,nn=>'4960712682345481020',no=>57083,np=>831694954},nr=>[['-7201721232176571']],ns=>'-7201721232176571',nt=>69,nu=>69,nv=>69,nw=> 2620344901,nx=>[19013,39983],ny=>-1674622395,nz=>-1674622395,oa=>[[19013,-25553,27154],[-26,6630,29265],[-5345,12989,-2679]],ob=>[[[19013]],[[-25553]],[[27154]] ],oc=>69,od=>69,oe=>-1674622395,of=>-1674622395,og=>[566639976,1374633571],oh=>574113854,oi=>574113854,oj=>[18494,8760],ok=>'-6816395672666224578',ol=>[[ '-6816395672666224578','-5298582567290402748','6384217735582328342']],om=>[574113854,2707901504,1737754692],on=>574113854,oo=>574113854,op=>574113854,oq=>[ 18494,8760,19520],or=>18494,os=>[[62],[72]],ot=>62},{mk=>['3091891134085985613','8531256649531891254'],ml=>'3091891134085985613',mm=>'3091891134085985613',mn=> 3680499021,mo=>3680499021,mp=>-614468275,mq=>77,mr=>77,ms=>33780,mt=>63196,mu=>[30369,29390],mv=>1926133409,mw=>[[1926133409],[1853856171]],mx=>[-95],my=>-95, mz=>-95,na=>161,nb=>['7962251627858917025'],nq=>{nc=>'13821153652839092987',nd=>'14313091013165502685',ne=>[[[['16623308207441924895'],['16097847631359265432'], ['671083062689840816']],[['3726520526298001507'],['2722442135970522801'],['13992419519733415314']],[['10138144747987114787'],['4571058910765540785'],[ '6476650627646986941']]]],nf=>'-2903099178980463114',ng=>-26454,nh=>-26257,ni=>32677,nj=>4208464051,nk=>2757186025,nl=>2250611133,nm=>6935,nn=> '3926468970968687524',no=>57846,np=>-1723840868},nr=>[['7371448156213860761']],ns=>'7371448156213860761',nt=>153,nu=>153,nv=>153,nw=>3746945433,nx=>[55705, 57173],ny=>-548021863,nz=>-548021863,oa=>[[-9831,-8363,-23286],[26188,28561,177],[-23805,-5035,21183]],ob=>[[[-9831]],[[-8363]],[[-23286]]],oc=>-103,od=>-103, oe=>-548021863,of=>-548021863,og=>[3801584224,653069787],oh=>-1316895762,oi=>-1316895762,oj=>[-15378,-20095],ok=>'6755149468347253742',ol=>[[ '6755149468347253742','7309181676120210136','8304781162590686414']],om=>[2978071534,1572805798,1005615832],on=>2978071534,oo=>2978071534,op=>2978071534,oq=>[ -15378,-20095,7334],or=>-15378,os=>[[238],[195]],ot=>238}],[{mk=>['5543036146327005064','8655619072305591807'],ml=>'5543036146327005064',mm=> '5543036146327005064',mn=>3203966856,mo=>3203966856,mp=>-1091000440,mq=>-120,mr=>-120,ms=>62826,mt=>26820,mu=>[8790,-9563],mv=>3668255318,mw=>[[3668255318],[ 3087083811]],mx=>[86],my=>86,mz=>86,na=>86,nb=>['-5187820061785251242'],nq=>{nc=>'3234583165971657345',nd=>'412506416670810990',ne=>[[[['14445821402249741849'], ['7190222836968138507'],['1515621447174091774']],[['7552785512500700527'],['4201611016473581077'],['11937530923343395097']],[['17409108548264871205'],[ '12108796790220809392'],['13305937302619361387']]]],nf=>'56828968521135682',ng=>24977,nh=>32492,ni=>-11322,nj=>1935992455,nk=>3476019669,nl=>1563052249,nm=> 4030,nn=>'5674002317161582729',no=>9219,np=>1860508779},nr=>[['-609729958678177782']],ns=>'-609729958678177782',nt=>10,nu=>10,nv=>10,nw=>1142085642,nx=>[55306, 17426],ny=>1142085642,nz=>1142085642,oa=>[[-10230,17426,-12843],[-2167,-24759,-11841],[-18389,-14155,5861]],ob=>[[[-10230]],[[17426]],[[-12843]]],oc=>10,od=>10, oe=>1142085642,of=>1142085642,og=>[83149937,1078780388],oh=>-564904320,oi=>-564904320,oj=>[16000,-8620],ok=>'-3245458180560109952',ol=>[['-3245458180560109952', '7881824972277012269','-6228667516944732026']],om=>[3730062976,3539325178,1985992493],on=>3730062976,oo=>3730062976,op=>3730062976,oq=>[16000,-8620,-12038],or=> 16000,os=>[[128],[62]],ot=>128},{mk=>['406073197466957807','14113705518448238235'],ml=>'406073197466957807',mm=>'406073197466957807',mn=>4023597039,mo=> 4023597039,mp=>-271370257,mq=>-17,mr=>-17,ms=>39130,mt=>5003,mu=>[-23853,29241],mv=>1916379859,mw=>[[1916379859],[2686856849]],mx=>[-45],my=>-45,mz=>-45,na=> 211,nb=>['-6906781776304561453'],nq=>{nc=>'10374862261784835202',nd=>'8543262886048068457',ne=>[[[['746669084603537704'],['4636683289877871153'],[ '6144253268885549631']],[['16512716235122384837'],['10839708526080578365'],['16516074129829385605']],[['1782675910389909500'],['6844335407529499677'],[ '404310083040668083']]]],nf=>'4434970631269267892',ng=>21011,nh=>20378,ni=>-14394,nj=>3891871223,nk=>692945473,nl=>2369031733,nm=>47140,nn=> '-4815125214610879126',no=>7412,np=>-306567485},nr=>[['1896796310601996238']],ns=>'1896796310601996238',nt=>206,nu=>206,nv=>206,nw=>3769898958,nx=>[6094,57524], ny=>-525068338,nz=>-525068338,oa=>[[6094,-8012,-14799],[6738,-9145,-19940],[11432,-19308,-8340]],ob=>[[[6094]],[[-8012]],[[-14799]]],oc=>-50,od=>-50,oe=> -525068338,of=>-525068338,og=>[1496605836,842204494],oh=>2088828462,oi=>2088828462,oj=>[-466,31872],ok=>'-2896213955909190098',ol=>[['-2896213955909190098', '-64175559528721096','5519474577667089369']],om=>[2088828462,3620639936,721900856],on=>2088828462,oo=>2088828462,op=>2088828462,oq=>[-466,31872,-27456],or=> -466,os=>[[46],[254]],ot=>46}],[{mk=>['15156035716863958439','2291008132738316372'],ml=>'15156035716863958439',mm=>'15156035716863958439',mn=>852434343,mo=> 852434343,mp=>852434343,mq=>-89,mr=>-89,ms=>14635,mt=>46013,mu=>[-8048,-27420],mv=>2498027664,mw=>[[2498027664],[1718618395]],mx=>[-112],my=>-112,mz=>-112,na=> 144,nb=>['7381409803327037584'],nq=>{nc=>'18343752660922507486',nd=>'261616947348401278',ne=>[[[['12626058829355168892'],['347164616358563822'],[ '14778219856227839895']],[['6149374282297029947'],['17205913150695127148'],['2878735188948115612']],[['16433602884861192406'],['8947888363443175584'],[ '9600958315165105256']]]],nf=>'-3401469758527437931',ng=>11498,nh=>18517,ni=>2998,nj=>232885002,nk=>3105093316,nl=>413524023,nm=>56976,nn=> '5544518885271369156',no=>39399,np=>-26233398},nr=>[['-1052719289775932622']],ns=>'-1052719289775932622',nt=>50,nu=>50,nv=>50,nw=>750009138,nx=>[15154,11444], ny=>750009138,nz=>750009138,oa=>[[15154,11444,-670],[-3741,6845,28973],[-6718,-29137,-6067]],ob=>[[[15154]],[[11444]],[[-670]]],oc=>50,od=>50,oe=>750009138,of=> 750009138,og=>[102325939,2033302608],oh=>70705696,oi=>70705696,oj=>[-7648,1078],ok=>'7896627253024842272',ol=>[['7896627253024842272','-4365249560913511559', '-5246559209253150963']],om=>[70705696,1838576806,97647481],on=>70705696,oo=>70705696,op=>70705696,oq=>[-7648,1078,29862],or=>-7648,os=>[[32],[226]],ot=>32}, {mk=>['13866855832975218829','11424077683271697861'],ml=>'13866855832975218829',mm=>'13866855832975218829',mn=>202021005,mo=>202021005,mp=>202021005,mq=>-115, mr=>-115,ms=>36977,mt=>20766,mu=>[-4534,-19952],mv=>2987454026,mw=>[[2987454026],[905164777]],mx=>[74],my=>74,mz=>74,na=>74,nb=>['3887653117693587018'],nq=>{nc=> '5784765917866617499',nd=>'4769132199690432622',ne=>[[[['15157629401928009003'],['1930208575943788588'],['17720849129744743164']],[['17063221118826232376'],[ '10997765792962534244'],['10188403892069606576']],[['2375243595972883008'],['13169849018844963951'],['100485459742633623']]]],nf=>'-8883007926738784110',ng=> -9198,nh=>26409,ni=>4692,nj=>1718207632,nk=>2288909559,nl=>2017612736,nm=>9911,nn=>'6033209292715431981',no=>54107,np=>299742177},nr=>[['-4927650830213798628']] ,ns=>'-4927650830213798628',nt=>28,nu=>28,nv=>28,nw=>2146608412,nx=>[42268,32754],ny=>2146608412,nz=>2146608412,oa=>[[-23268,32754,30637],[-17507,-21342,-1356], [8092,-27873,9189]],ob=>[[[-23268]],[[32754]],[[30637]]],oc=>28,od=>28,oe=>2146608412,of=>2146608412,og=>[667091032,2871313098],oh=>1350792984,oi=>1350792984, oj=>[30488,20611],ok=>'6646151176796731160',ol=>[['6646151176796731160','1690524493301961557','-5751813916654672780']],om=>[1350792984,1547427656,3814478677], on=>1350792984,oo=>1350792984,op=>1350792984,oq=>[30488,20611,-8376],or=>30488,os=>[[24],[119]],ot=>24}]],ox=>28478,oy=>28478,oz=>[[28478,10585],[756,3284]],pa=> 28478,pb=>28478,pc=>693727038,pd=>28478,pe=>62,pf=>28478,pg=>-21002,ph=>184833026,pi=>921981441,pj=>[[[-1617903701,-627428264],[962638948,-102433360],[ 603440552,158633614]]],pk=>-882253137,pl=>1173731460,pm=>[[[[1875722352,1188229004]],[[4075611187,3219525656]]],[[[3609693802,1435619704]],[[708224838, 2415175095]]],[[[523357826,4030725689]],[[3432977249,4070561671]]]],pn=>-105,po=>9,pp=>777772192,pq=>22067,pr=>2694,ps=>[[['780362829233719942', '9345739563853076710']],[['16779318685897625099','164344521127228892']],[['17999910920364876589','8828477524735428634']]],pt=>[3496282758,181692379],pu=>-122, pv=>'780362829233719942',pw=>['780362829233719942','-9101004509856474906'],px=>2694,py=>2694,pz=>[[2694,-12187]],qi=>{qa=>'11291347294187458440',qb=> '11291347294187458440',qc=>'11291347294187458440',qd=>[['11291347294187458440']],qe=>[[966561672],[2628971658]],qf=>966561672,qg=>-28792,qh=>966561672},qj=> -17274,qk=>-17274,ql=>-17274,qm=>-17274,qn=>48262,qo=>134,qp=>'3889698806608215174',qq=>-17274,qr=>[[-1021002618,905641076]],qs=>-1021002618,qt=>-1800040830,qu=> -694656241,rg=>{qv=>'6551954075072411189',qw=>'-1992936419695561019',qx=>['-6942239734872660935','-4012647432982498586','-3802567911853239849'],qy=>-1256385928, qz=>-616442425,ra=>[[[[-1574171340],[1478291065],[-1600370751]],[[-309232345],[1157710234],[-2101049025]],[[1400011713],[2077061313],[-278739151]]]],rb=> '8758013611466584222',rc=>'-7444138742278693280',rd=>[136330583,2516792903],re=>'-5657788443315847009',rf=>[['-5359084824872912961'],['7337754411600390203']]}, rh=>{qv=>'-5981988360362356259',qw=>'5692333025785247476',qx=>['-7682338995054331963','-2840832703165068361','-1710910250647930003'],qy=>-552355094,qz=> 973214024,ra=>[[[[-650857831],[-69210282],[-1054225696]],[[-1748437444],[107030229],[-1684004887]],[[666029776],[-1576425180],[1206172716]]]],rb=> '5969349131819274729',rc=>'-7148791927621001024',rd=>[1438349587,3303636346],re=>'9140670105754198697',rf=>[['7765661077878520352'],['-3628397253630899083']]}, ri=>110,rs=>[{rj=>'2479401249560230682',rk=>[['2479401249560230682','-351153308364180916','3815424990503537042']],rl=>31514,rm=>31514,rn=>'2479401249560230682', ro=>-810386662,rp=>26,rq=>[26,123,178],rr=>26}],rt=>[{rj=>'14264314612322342283',rk=>[['-4182429461387209333','-8395911204375614600','-7331330547875690834']], rl=>5515,rm=>5515,rn=>'-4182429461387209333',ro=>2011370891,rp=>139,rq=>[139,21,227],rr=>139}],ru=>{rj=>'17338362060507688617',rk=>[['-1108382013201862999', '-6626690350051937144','1851376704937496892']],rl=>-20823,rm=>-20823,rn=>'-1108382013201862999',ro=>1940631209,rp=>169,rq=>[169,174,171],rr=>169},rv=>[ '15829028962795464798']},rw=>{rx=>-2058853707,ry=>-2058853707,uo=>{rz=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[ -2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707,sg=>-2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269, sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466,-1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=> 2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466,3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740, 2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=>2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589, to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]] ]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004, 1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497, ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242, 1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995, -1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589,ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[ -1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[-365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=> 129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598', '11660514817326145060','16874998530878119210']],[['13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036', '14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[4155733617,1802663293,1615066141],ui=>'4448571648049379179',uj=>[ 3748853791],uk=>[111,50,8],ul=>-18},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004','14071532865699640450','12029682340431211968'],[ '11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579','2454075466962463024','14917835468399998476'],[ '7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[4155733617,1802663293,1615066141],ui=> '4448571648049379179',uj=>[3748853791],uk=>[111,50,8],ul=>-18}},up=>[[{rz=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[ -2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707,sg=>-2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269, sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466,-1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=> 2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466,3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740, 2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=>2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589, to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]] ]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004, 1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497, ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242, 1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995, -1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589,ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[ -1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[-365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=> 129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598', '11660514817326145060','16874998530878119210']],[['13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036', '14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[4155733617,1802663293,1615066141],ui=>'4448571648049379179',uj=>[ 3748853791],uk=>[111,50,8],ul=>-18},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004','14071532865699640450','12029682340431211968'],[ '11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579','2454075466962463024','14917835468399998476'],[ '7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[4155733617,1802663293,1615066141],ui=> '4448571648049379179',uj=>[3748853791],uk=>[111,50,8],ul=>-18}}],[{rz=>[[-1952506034,-1021413125,-1401006196],[241485928,313007432,1704942121]],sa=>[[ -1952506034,-1021413125]],sb=>78,sc=>[78,31],sd=>8014,se=>8014,sf=>-1952506034,sg=>-1952506034,sh=>[[8014,-29793],[30971,-15586],[22412,-21378]],si=>8014,sj=> 8014,sk=>'14059808108471852878',sl=>140,sm=>87,sn=>126,so=>172,sp=>[[241485928,313007432]],sq=>[1704942121,2713798378],sr=>2451539075,ss=>2342461262,st=> 2342461262,su=>2342461262,sv=>[[[[2342461262,3273554171,2893961100],[241485928,313007432,1704942121]]],[[[2713798378,2451539075,3784396502],[2641455604, 724630996,2580535007]]]],sw=>'-4386935965237698738',sx=>'-4386935965237698738',sy=>2342461262,sz=>2342461262,ta=>[8014,-29793,30971],tb=>8014,tc=>2342461262,to=> {td=>[[-1952506034,-1021413125,-1401006196],[241485928,313007432,1704942121],[-1581168918,-1843428221,-510570794]],te=>[[[[27124,-25231]]],[[[-556,11056]]]],tf=> -10529,tg=>-26161,th=>-24628,ti=>9011,tj=>[-1404863128,1805048205],tk=>1903896170,tl=>958000451,tm=>-26089,tn=>-10379},tp=>{td=>[[-1952506034,-1021413125, -1401006196],[241485928,313007432,1704942121],[-1581168918,-1843428221,-510570794]],te=>[[[[27124,-25231]]],[[[-556,11056]]]],tf=>-10529,tg=>-26161,th=>-24628, ti=>9011,tj=>[-1404863128,1805048205],tk=>1903896170,tl=>958000451,tm=>-26089,tn=>-10379},tq=>{td=>[[-1952506034,-1021413125,-1401006196],[241485928,313007432, 1704942121],[-1581168918,-1843428221,-510570794]],te=>[[[[27124,-25231]]],[[[-556,11056]]]],tf=>-10529,tg=>-26161,th=>-24628,ti=>9011,tj=>[-1404863128, 1805048205],tk=>1903896170,tl=>958000451,tm=>-26089,tn=>-10379},ub=>{tr=>2342461262,ts=>3273554171,tt=>22412,tu=>241485928,tv=>313007432,tw=>23081,tx=>[[[ -1581168918],[-1843428221],[-510570794]],[[-1653511692],[724630996],[-1714432289]],[[590585804],[-1404863128],[1805048205]]],ty=>1903896170,tz=>67,ua=> 3614808599},um=>{uc=>[78,31,-97],ud=>-117,ue=>[[['12429468283669739771','1344356684086429800','11655675283152788009'],['16253859213638337667', '3112266432129362420','2536546716242400991']],[['7752623011068607848','4114580608502146666','35142559902046743'],['9896134600948865296','8385205619132623682', '7001999158115174909']]],uf=>'4044116695233302253',ug=>27374,uh=>[4235856047,419355361,3915340751],ui=>'5710944114185739359',uj=>[804342663],uk=>[92,-106,-33], ul=>-68},un=>{uc=>[78,31,-97],ud=>-117,ue=>[[['12429468283669739771','1344356684086429800','11655675283152788009'],['16253859213638337667', '3112266432129362420','2536546716242400991']],[['7752623011068607848','4114580608502146666','35142559902046743'],['9896134600948865296','8385205619132623682', '7001999158115174909']]],uf=>'4044116695233302253',ug=>27374,uh=>[4235856047,419355361,3915340751],ui=>'5710944114185739359',uj=>[804342663],uk=>[92,-106,-33], ul=>-68}}],[{rz=>[[654196580,-1164125035,1717491602],[164464696,-168534289,1880055583]],sa=>[[654196580,-1164125035]],sb=>100,sc=>[100,63],sd=>16228,se=>16228, sf=>654196580,sg=>654196580,sh=>[[16228,9982],[-9067,-17764],[-10350,26206]],si=>16228,sj=>16228,sk=>'13446865120583892836',sl=>146,sm=>-41,sn=>94,so=>102,sp=>[ [164464696,-168534289]],sq=>[1880055583,1914471245],sr=>426352940,ss=>654196580,st=>654196580,su=>654196580,sv=>[[[[654196580,3130842261,1717491602],[164464696, 4126433007,1880055583]]],[[[1914471245,426352940,2958869701],[3107001674,2673962397,1254264397]]]],sw=>'-4999878953125658780',sx=>'-4999878953125658780',sy=> 654196580,sz=>654196580,ta=>[16228,9982,-9067],tb=>16228,tc=>654196580,to=>{td=>[[654196580,-1164125035,1717491602],[164464696,-168534289,1880055583],[ 1914471245,426352940,-1336097595]],te=>[[[[5450,-18127]]],[[[28061,-24735]]]],tf=>-29107,tg=>19138,th=>19132,ti=>-23084,tj=>[1430133849,-1993879570],tk=> -383072970,tl=>-506277268,tm=>10406,tn=>13669},tp=>{td=>[[654196580,-1164125035,1717491602],[164464696,-168534289,1880055583],[1914471245,426352940,-1336097595] ],te=>[[[[5450,-18127]]],[[[28061,-24735]]]],tf=>-29107,tg=>19138,th=>19132,ti=>-23084,tj=>[1430133849,-1993879570],tk=>-383072970,tl=>-506277268,tm=>10406,tn=> 13669},tq=>{td=>[[654196580,-1164125035,1717491602],[164464696,-168534289,1880055583],[1914471245,426352940,-1336097595]],te=>[[[[5450,-18127]]],[[[28061, -24735]]]],tf=>-29107,tg=>19138,th=>19132,ti=>-23084,tj=>[1430133849,-1993879570],tk=>-383072970,tl=>-506277268,tm=>10406,tn=>13669},ub=>{tr=>654196580,ts=> 3130842261,tt=>-10350,tu=>164464696,tv=>4126433007,tw=>24351,tx=>[[[1914471245],[426352940],[-1336097595]],[[-1187965622],[-1621004899],[1254264397]],[[ -1512813892],[1430133849],[-1993879570]]],ty=>-383072970,tz=>108,ua=>895821990},um=>{uc=>[100,63,-2],ud=>38,ue=>[[['7376570264875490453','17722894814364403768', '8222591388287459103'],['12708248599346651436','11484581048955770186','11949257883889339981']],[['9883096529827142745','16272299768853218614', '14365114366907721894'],['5658919656636925334','6055348804680014096','5042901352825336043']]],uf=>'14709519061697029463',ug=>11002,uh=>[3617909797,2421456644, 1737409721],ui=>'1428310668032541267',uj=>[2494039660],uk=>[64,26,-95],ul=>-61},un=>{uc=>[100,63,-2],ud=>38,ue=>[[['7376570264875490453','17722894814364403768', '8222591388287459103'],['12708248599346651436','11484581048955770186','11949257883889339981']],[['9883096529827142745','16272299768853218614', '14365114366907721894'],['5658919656636925334','6055348804680014096','5042901352825336043']]],uf=>'14709519061697029463',ug=>11002,uh=>[3617909797,2421456644, 1737409721],ui=>'1428310668032541267',uj=>[2494039660],uk=>[64,26,-95],ul=>-61}}]],uq=>-75,ur=>2236113589,us=>25269,ut=>[[34120],[30548]],uu=>16221,uv=>33047, uw=>4102181657,ux=>[[546722114,767607624,73025073],[2127472370,370110801,1579458150]],uy=>231,vh=>{uz=>[[[[25269,-31416,30548]],[[16221,-32489,21273]],[[-2942, 20802,8342]]]],va=>[[[72,-61],[-64,45],[49,70]]],vb=>90,vc=>4,vd=>[[[-22798,32462],[29009,5647],[-24986,24100]]],ve=>[[16615]],vf=>30834,vg=> '703012593382105554'},vi=>2236113589,vj=>2236113589,vk=>['4565936802120622773','5855511306112172311','5057874162447032470'],vl=>'8165447025428661338',vm=> '4676810249416873487',vn=>[[['-7333376236790318990','7660190118987172289','-8337173152141021503'],['555198448556482722','6327072268883512402', '-5083661308686275792'],['8160324916783808862','3983613338139164009','699936173668592403']],[['7742379893290399345','2872020490439095325', '-2345539642843168680'],['-8385949557279149457','-6017275790039811845','1344356684086429800'],['-6791068790556763607','-2192884860071213949', '3112266432129362420']],[['2536546716242400991','7752623011068607848','4114580608502146666'],['35142559902046743','-8550609472760686320','8385205619132623682'], ['7001999158115174909','4044116695233302253','-253880877831263506']]],vo=>'-1630483595049116959',vp=>95,vq=>28,vr=>[[38],[250],[105]],vs=>2270118233,vt=> 1546645835,vu=>-2058853707,vv=>-2058853707,vw=>-2058853707,vx=>'4565936802120622773',vy=>181,vz=>181,wi=>{wa=>'4565936802120622773',wb=>'5855511306112172311', wc=>3276284054,wd=>[[192]],we=>2800878682,wf=>206,wg=>126,wh=>2657490447},ws=>{wj=>2236113589,wk=>'5987959116413106004',wl=>'14071532865699640450',wm=> '12029682340431211968',wn=>1901166286,wo=>[15,22,102],wp=>24100,wq=>[16615,30834],wr=>[[41426,40234,39482],[2497,59952,30291],[27214,61121,48053]]},wt=>{wj=> 2236113589,wk=>'5987959116413106004',wl=>'14071532865699640450',wm=>'12029682340431211968',wn=>1901166286,wo=>[15,22,102],wp=>24100,wq=>[16615,30834],wr=>[[ 41426,40234,39482],[2497,59952,30291],[27214,61121,48053]]},wu=>'4565936802120622773',wv=>'4565936802120622773',ww=>'4565936802120622773',wx=>[[2236113589, 1063090004,1394180375]],wy=>25269,wz=>[[25269,34120]],xa=>'4565936802120622773',xh=>{xb=>25269,xc=>[['4565936802120622773','5855511306112172311'],[ '5057874162447032470','8165447025428661338'],['4676810249416873487','-7333376236790318990']],xd=>25269,xe=>25269,xf=>-75,xg=>-75},xi=>[['4565936802120622773', '5855511306112172311','5057874162447032470'],['8165447025428661338','4676810249416873487','-7333376236790318990'],['7660190118987172289','-8337173152141021503', '555198448556482722']],xj=>'4565936802120622773',xk=>[[2236113589,1063090004],[1394180375,1363342466]],xl=>181,xm=>181,xn=>[181],xo=>25269,xp=>2236113589,xq=> 2236113589,xr=>-2058853707,xs=>[[25269],[34120]],xt=>'4565936802120622773',xu=>['4565936802120622773','5855511306112172311','5057874162447032470'],ye=>{xv=> 2236113589,xw=>1063090004,xx=>[[1394180375],[1363342466],[3276284054]],xy=>11712,xz=>[[[[17969,1114,-22798]]],[[[32462,29009,5647]]]],ya=>102,yb=>[[[[24100, 16615],[30834,41426]],[[40234,39482],[2497,59952]]],[[[30291,27214],[61121,48053]],[[26928,35916],[41122,8718]]],[[[30220,1972],[52306,52998]],[[18100,22478],[ 27440,24923]]]],yc=>[[13561],[47475],[350]],yd=>52395},yf=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],yg=>-2058853707,yh=> -2058853707,yi=>-2058853707,yj=>-2058853707,yk=>25269,yl=>181,ym=>181,yn=>'4565936802120622773',yo=>'4565936802120622773',yp=>'4565936802120622773',yq=>[25269, 34120],yr=>181,ys=>2236113589,yt=>2236113589,yu=>-2058853707,yv=>25269,yw=>25269,yx=>25269,yy=>[[25269,34120,30548]],yz=>25269,za=>25269,zb=>25269,zc=>[[25269, -31416],[30548,16221]],zd=>[[-75],[98]],ze=>-75,zf=>[[-2058853707,1063090004],[1394180375,1363342466]],zg=>181,zh=>181,zi=>25269,zj=>'4565936802120622773',zk=> -75,zl=>-75,zm=>25269,zn=>[[-2058853707,1063090004]],zo=>[181,98,72],zp=>-75,zq=>-75,zr=>-75,zs=>[25269],zt=>-75,zu=>-75,zv=>[[[2236113589,1063090004],[ 1394180375,1363342466]]],zw=>[[2236113589,1063090004,1394180375],[1363342466,3276284054,1177628096],[2800878682,1901166286,2657490447]],zx=>[[181,98,72]],zy=> '4565936802120622773',zz=>1394180375,aaa=>[1363342466,-1018683242],aab=>1177628096,aac=>[[[[-1494088614]],[[1901166286]],[[-1637476849]]],[[[1088904740]],[[ -1580042126]],[[-1707434710]]],[[[-365950527]],[[1783526995]],[[-1145704767]]]],aad=>-1941149392,aae=>162,aaf=>[[[160],[14],[34]],[[12],[118],[180]],[[7],[82],[ 204]]],aar=>[[{aag=>181,aah=>[[98,72],[133,84],[119,93]],aai=>1394180375,aaj=>1363342466,aak=>3276284054,aal=>1177628096,aam=>90,aan=>4,aao=>[-14,-90],aap=> '-7032909512510964018',aaq=>1088904740},{aag=>114,aah=>[[120,210],[161,42],[157,58]],aai=>3929016769,aaj=>1783526995,aak=>3149262529,aal=>-1941149392,aam=>162, aan=>-96,aao=>[14,34],aap=>'-3528908605309553140',aaq=>1473136308}],[{aag=>48,aah=>[[107,91],[97,249],[52,115]],aai=>3433759070,aaj=>1899973702,aak=>2521496937, aal=>927507257,aam=>19,aan=>107,aao=>[-10,-44],aap=>'-598004097643795395',aaq=>1802663293},{aag=>29,aah=>[[244,67],[96,107],[119,219]],aai=>1035763800,aaj=> 3748853791,aak=>3993514607,aal=>-1952506034,aam=>251,aan=>120,aao=>[30,-61],aap=>'1037174166098171788',aaq=>313007432}],[{aag=>41,aah=>[[90,159],[101,234],[70, 193]],aai=>2451539075,aaj=>3784396502,aak=>2641455604,aal=>724630996,aam=>223,aan=>-42,aao=>[-49,-103],aap=>'-6033841189525676084',aaq=>1805048205},{aag=>106, aah=>[[38,123],[113,67],[237,25]],aai=>3614808599,aaj=>8182264,aak=>3540146448,aal=>-1990843908,aam=>66,aan=>107,aao=>[2,121],aap=>'-2807420433528374251',aaq=> 1630279970}]],aas=>2236113589,aat=>2236113589,aau=>[[[2236113589,1063090004],[1394180375,1363342466]]]}}}, ); my %members = ( 1 => { kc=>[ 'mg.kd',1,2,3,'mg.ke',1,2,3,4,5,6,7,'mg.kf',1,2,3,'mg.kg',1,2,3,'mg.kh',1,'mg.ki','mg+23','mg.kw.kj[0][0]',1,2,3,'mg.kw.kj[0][1]',1,2,3,'mg.kw.kj[1][0]',1,2,3, 'mg.kw.kj[1][1]',1,2,3,'mg.kw.kj[2][0]',1,2,3,'mg.kw.kj[2][1]',1,2,3,'mg.kx',1,2,3,4,5,6,7,'mg.ky',1,2,3,'mg.lf[0][1]',5,6,7,'mg.lc[1]',1,2,3,4,5,6,7, 'mg.ld[0][0][2]',1,2,3,4,5,6,7,'mg.ld[1][0][0]',1,2,3,4,5,6,7,'mg.ld[1][0][1]',1,2,3,4,5,6,7,'mg.ld[1][0][2]',1,2,3,4,5,6,7,'mg.lp[0][0].li',1, 'mg.lp[0][0].lk+2','mg.lp[0][0].lk+3','mg.lp[0][0].lm[0][0][1]','mg.lp[0][0].lk+5','mg.lp[0][0].lk+6','mg.lp[0][0].lk+7','mg.lp[0][0].lm[0][0][2]',1,2,3, 'mg.lp[0][0].lm[0][1][0]',1,2,3,'mg.lp[0][0].lm[0][1][1]',1,2,3,'mg.lp[0][0].lm[0][1][2]',1,2,3,'mg.lp[0][0].lm[0][2][0]',1,2,3,'mg.lp[0][0].lm[0][2][1]',1,2,3, 'mg.lp[0][0].lm[0][2][2]',1,2,3,'mg.lp[0][1].li',1,'mg.lp[0][1].lk+2','mg.lp[0][1].lk+3','mg.lp[0][1].lm[0][0][1]','mg.lp[0][1].lk+5','mg.lp[0][1].lk+6', 'mg.lp[0][1].lk+7','mg.lp[0][1].lm[0][0][2]',1,2,3,'mg.lp[0][1].lm[0][1][0]',1,2,3,'mg.lp[0][1].lm[0][1][1]',1,2,3,'mg.lp[0][1].lm[0][1][2]',1,2,3, 'mg.lp[0][1].lm[0][2][0]',1,2,3,'mg.lp[0][1].lm[0][2][1]',1,2,3,'mg.lp[0][1].lm[0][2][2]',1,2,3,'mg.lp[1][0].li',1,'mg.lp[1][0].lk+2','mg.lp[1][0].lk+3', 'mg.lp[1][0].lm[0][0][1]','mg.lp[1][0].lk+5','mg.lp[1][0].lk+6','mg.lp[1][0].lk+7','mg.lp[1][0].lm[0][0][2]',1,2,3,'mg.lp[1][0].lm[0][1][0]',1,2,3, 'mg.lp[1][0].lm[0][1][1]',1,2,3,'mg.lp[1][0].lm[0][1][2]',1,2,3,'mg.lp[1][0].lm[0][2][0]',1,2,3,'mg.lp[1][0].lm[0][2][1]',1,2,3,'mg.lp[1][0].lm[0][2][2]',1,2,3, 'mg.lp[1][1].li',1,'mg.lp[1][1].lk+2','mg.lp[1][1].lk+3','mg.lp[1][1].lm[0][0][1]','mg.lp[1][1].lk+5','mg.lp[1][1].lk+6','mg.lp[1][1].lk+7', 'mg.lp[1][1].lm[0][0][2]',1,2,3,'mg.lp[1][1].lm[0][1][0]',1,2,3,'mg.lp[1][1].lm[0][1][1]',1,2,3,'mg.lp[1][1].lm[0][1][2]',1,2,3,'mg.lp[1][1].lm[0][2][0]',1,2,3, 'mg.lp[1][1].lm[0][2][1]',1,2,3,'mg.lp[1][1].lm[0][2][2]',1,2,3,'mg.lq.li',1,'mg.lq.lk+2','mg.lq.lk+3','mg.lq.lm[0][0][1]','mg.lq.lk+5','mg.lq.lk+6', 'mg.lq.lk+7','mg.lq.lm[0][0][2]',1,2,3,'mg.lq.lm[0][1][0]',1,2,3,'mg.lq.lm[0][1][1]',1,2,3,'mg.lq.lm[0][1][2]',1,2,3,'mg.lq.lm[0][2][0]',1,2,3, 'mg.lq.lm[0][2][1]',1,2,3,'mg.lq.lm[0][2][2]',1,2,3,'mg.lr',1,2,3,4,5,6,7,'mg.ls',1,2,3,4,5,6,7,'mg.lt','mg+301','mg.lu',1,'mg.lv',1,'mg.lw','mg.lx', 'mg.ly[0][0][0][0]','mg.ly[0][0][1][0]','mg.ly[0][1][0][0]','mg.ly[0][1][1][0]','mg.ly[0][2][0][0]','mg.ly[0][2][1][0]','mg.lz','mg+315','mg.ma',1,2,3,'mg.mb', 1,2,3,'mg.mc',1,2,3,'mg.md[0][0]',1,2,3,4,5,6,7,'mg.md[1][0]',1,2,3,4,5,6,7,'mg.me[0]',1,'mg.mf[0]',1,'mg.mf[1]',1,'mg.mf[2]',1,'mh.kd',1,2,3,'mh.ke',1,2,3,4,5, 6,7,'mh.kf',1,2,3,'mh.kg',1,2,3,'mh.kh',1,'mh.ki','mh+23','mh.kw.kj[0][0]',1,2,3,'mh.kw.kj[0][1]',1,2,3,'mh.kw.kj[1][0]',1,2,3,'mh.kw.kj[1][1]',1,2,3, 'mh.kw.kj[2][0]',1,2,3,'mh.kw.kj[2][1]',1,2,3,'mh.kx',1,2,3,4,5,6,7,'mh.ky',1,2,3,'mh.lf[0][1]',5,6,7,'mh.lc[1]',1,2,3,4,5,6,7,'mh.ld[0][0][2]',1,2,3,4,5,6,7, 'mh.ld[1][0][0]',1,2,3,4,5,6,7,'mh.ld[1][0][1]',1,2,3,4,5,6,7,'mh.ld[1][0][2]',1,2,3,4,5,6,7,'mh.lp[0][0].li',1,'mh.lp[0][0].lk+2','mh.lp[0][0].lk+3', 'mh.lp[0][0].lm[0][0][1]','mh.lp[0][0].lk+5','mh.lp[0][0].lk+6','mh.lp[0][0].lk+7','mh.lp[0][0].lm[0][0][2]',1,2,3,'mh.lp[0][0].lm[0][1][0]',1,2,3, 'mh.lp[0][0].lm[0][1][1]',1,2,3,'mh.lp[0][0].lm[0][1][2]',1,2,3,'mh.lp[0][0].lm[0][2][0]',1,2,3,'mh.lp[0][0].lm[0][2][1]',1,2,3,'mh.lp[0][0].lm[0][2][2]',1,2,3, 'mh.lp[0][1].li',1,'mh.lp[0][1].lk+2','mh.lp[0][1].lk+3','mh.lp[0][1].lm[0][0][1]','mh.lp[0][1].lk+5','mh.lp[0][1].lk+6','mh.lp[0][1].lk+7', 'mh.lp[0][1].lm[0][0][2]',1,2,3,'mh.lp[0][1].lm[0][1][0]',1,2,3,'mh.lp[0][1].lm[0][1][1]',1,2,3,'mh.lp[0][1].lm[0][1][2]',1,2,3,'mh.lp[0][1].lm[0][2][0]',1,2,3, 'mh.lp[0][1].lm[0][2][1]',1,2,3,'mh.lp[0][1].lm[0][2][2]',1,2,3,'mh.lp[1][0].li',1,'mh.lp[1][0].lk+2','mh.lp[1][0].lk+3','mh.lp[1][0].lm[0][0][1]', 'mh.lp[1][0].lk+5','mh.lp[1][0].lk+6','mh.lp[1][0].lk+7','mh.lp[1][0].lm[0][0][2]',1,2,3,'mh.lp[1][0].lm[0][1][0]',1,2,3,'mh.lp[1][0].lm[0][1][1]',1,2,3, 'mh.lp[1][0].lm[0][1][2]',1,2,3,'mh.lp[1][0].lm[0][2][0]',1,2,3,'mh.lp[1][0].lm[0][2][1]',1,2,3,'mh.lp[1][0].lm[0][2][2]',1,2,3,'mh.lp[1][1].li',1, 'mh.lp[1][1].lk+2','mh.lp[1][1].lk+3','mh.lp[1][1].lm[0][0][1]','mh.lp[1][1].lk+5','mh.lp[1][1].lk+6','mh.lp[1][1].lk+7','mh.lp[1][1].lm[0][0][2]',1,2,3, 'mh.lp[1][1].lm[0][1][0]',1,2,3,'mh.lp[1][1].lm[0][1][1]',1,2,3,'mh.lp[1][1].lm[0][1][2]',1,2,3,'mh.lp[1][1].lm[0][2][0]',1,2,3,'mh.lp[1][1].lm[0][2][1]',1,2,3, 'mh.lp[1][1].lm[0][2][2]',1,2,3,'mh.lq.li',1,'mh.lq.lk+2','mh.lq.lk+3','mh.lq.lm[0][0][1]','mh.lq.lk+5','mh.lq.lk+6','mh.lq.lk+7','mh.lq.lm[0][0][2]',1,2,3, 'mh.lq.lm[0][1][0]',1,2,3,'mh.lq.lm[0][1][1]',1,2,3,'mh.lq.lm[0][1][2]',1,2,3,'mh.lq.lm[0][2][0]',1,2,3,'mh.lq.lm[0][2][1]',1,2,3,'mh.lq.lm[0][2][2]',1,2,3, 'mh.lr',1,2,3,4,5,6,7,'mh.ls',1,2,3,4,5,6,7,'mh.lt','mh+301','mh.lu',1,'mh.lv',1,'mh.lw','mh.lx','mh.ly[0][0][0][0]','mh.ly[0][0][1][0]','mh.ly[0][1][0][0]', 'mh.ly[0][1][1][0]','mh.ly[0][2][0][0]','mh.ly[0][2][1][0]','mh.lz','mh+315','mh.ma',1,2,3,'mh.mb',1,2,3,'mh.mc',1,2,3,'mh.md[0][0]',1,2,3,4,5,6,7, 'mh.md[1][0]',1,2,3,4,5,6,7,'mh.me[0]',1,'mh.mf[0]',1,'mh.mf[1]',1,'mh.mf[2]',1,'mi.kd',1,2,3,'mi.ke',1,2,3,4,5,6,7,'mi.kf',1,2,3,'mi.kg',1,2,3,'mi.kh',1, 'mi.ki','mi+23','mi.kw.kj[0][0]',1,2,3,'mi.kw.kj[0][1]',1,2,3,'mi.kw.kj[1][0]',1,2,3,'mi.kw.kj[1][1]',1,2,3,'mi.kw.kj[2][0]',1,2,3,'mi.kw.kj[2][1]',1,2,3, 'mi.kx',1,2,3,4,5,6,7,'mi.ky',1,2,3,'mi.lf[0][1]',5,6,7,'mi.lc[1]',1,2,3,4,5,6,7,'mi.ld[0][0][2]',1,2,3,4,5,6,7,'mi.ld[1][0][0]',1,2,3,4,5,6,7,'mi.ld[1][0][1]', 1,2,3,4,5,6,7,'mi.ld[1][0][2]',1,2,3,4,5,6,7,'mi.lp[0][0].li',1,'mi.lp[0][0].lk+2','mi.lp[0][0].lk+3','mi.lp[0][0].lm[0][0][1]','mi.lp[0][0].lk+5', 'mi.lp[0][0].lk+6','mi.lp[0][0].lk+7','mi.lp[0][0].lm[0][0][2]',1,2,3,'mi.lp[0][0].lm[0][1][0]',1,2,3,'mi.lp[0][0].lm[0][1][1]',1,2,3,'mi.lp[0][0].lm[0][1][2]', 1,2,3,'mi.lp[0][0].lm[0][2][0]',1,2,3,'mi.lp[0][0].lm[0][2][1]',1,2,3,'mi.lp[0][0].lm[0][2][2]',1,2,3,'mi.lp[0][1].li',1,'mi.lp[0][1].lk+2','mi.lp[0][1].lk+3', 'mi.lp[0][1].lm[0][0][1]','mi.lp[0][1].lk+5','mi.lp[0][1].lk+6','mi.lp[0][1].lk+7','mi.lp[0][1].lm[0][0][2]',1,2,3,'mi.lp[0][1].lm[0][1][0]',1,2,3, 'mi.lp[0][1].lm[0][1][1]',1,2,3,'mi.lp[0][1].lm[0][1][2]',1,2,3,'mi.lp[0][1].lm[0][2][0]',1,2,3,'mi.lp[0][1].lm[0][2][1]',1,2,3,'mi.lp[0][1].lm[0][2][2]',1,2,3, 'mi.lp[1][0].li',1,'mi.lp[1][0].lk+2','mi.lp[1][0].lk+3','mi.lp[1][0].lm[0][0][1]','mi.lp[1][0].lk+5','mi.lp[1][0].lk+6','mi.lp[1][0].lk+7', 'mi.lp[1][0].lm[0][0][2]',1,2,3,'mi.lp[1][0].lm[0][1][0]',1,2,3,'mi.lp[1][0].lm[0][1][1]',1,2,3,'mi.lp[1][0].lm[0][1][2]',1,2,3,'mi.lp[1][0].lm[0][2][0]',1,2,3, 'mi.lp[1][0].lm[0][2][1]',1,2,3,'mi.lp[1][0].lm[0][2][2]',1,2,3,'mi.lp[1][1].li',1,'mi.lp[1][1].lk+2','mi.lp[1][1].lk+3','mi.lp[1][1].lm[0][0][1]', 'mi.lp[1][1].lk+5','mi.lp[1][1].lk+6','mi.lp[1][1].lk+7','mi.lp[1][1].lm[0][0][2]',1,2,3,'mi.lp[1][1].lm[0][1][0]',1,2,3,'mi.lp[1][1].lm[0][1][1]',1,2,3, 'mi.lp[1][1].lm[0][1][2]',1,2,3,'mi.lp[1][1].lm[0][2][0]',1,2,3,'mi.lp[1][1].lm[0][2][1]',1,2,3,'mi.lp[1][1].lm[0][2][2]',1,2,3,'mi.lq.li',1,'mi.lq.lk+2', 'mi.lq.lk+3','mi.lq.lm[0][0][1]','mi.lq.lk+5','mi.lq.lk+6','mi.lq.lk+7','mi.lq.lm[0][0][2]',1,2,3,'mi.lq.lm[0][1][0]',1,2,3,'mi.lq.lm[0][1][1]',1,2,3, 'mi.lq.lm[0][1][2]',1,2,3,'mi.lq.lm[0][2][0]',1,2,3,'mi.lq.lm[0][2][1]',1,2,3,'mi.lq.lm[0][2][2]',1,2,3,'mi.lr',1,2,3,4,5,6,7,'mi.ls',1,2,3,4,5,6,7,'mi.lt', 'mi+301','mi.lu',1,'mi.lv',1,'mi.lw','mi.lx','mi.ly[0][0][0][0]','mi.ly[0][0][1][0]','mi.ly[0][1][0][0]','mi.ly[0][1][1][0]','mi.ly[0][2][0][0]', 'mi.ly[0][2][1][0]','mi.lz','mi+315','mi.ma',1,2,3,'mi.mb',1,2,3,'mi.mc',1,2,3,'mi.md[0][0]',1,2,3,4,5,6,7,'mi.md[1][0]',1,2,3,4,5,6,7,'mi.me[0]',1,'mi.mf[0]', 1,'mi.mf[1]',1,'mi.mf[2]',1,'mj',1,2,3,4,5,6,7,'ou[0][0].mk[0]',1,2,3,4,5,6,7,'ou[0][0].mk[1]',1,2,3,4,5,6,7,'ou[0][0].ms',1,'ou[0][0].mt',1,'ou[0][0].mu[0]',1, 'ou[0][0].mu[1]',1,'ou[0][0].mw[1][0]',1,2,3,'ou[0][0].nq.nc',1,2,3,4,5,6,7,'ou[0][0].nq.nd',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.nf',1,2,3,4,5,6,7,'ou[0][0].nq.ng',1,'ou[0][0].nq.nh',1,'ou[0][0].nq.ni',1,'ou[0][0].nq.nj',1,2,3, 'ou[0][0].nq.nk',1,2,3,'ou[0][0].nq.nl',1,2,3,'ou[0][0].nq.nm',1,'ou[0][0].nq.nn',1,2,3,4,5,6,7,'ou[0][0].nq.no',1,'ou[0][0].nq.np',1,2,3,'ou[0][0].nr[0][0]',1, 'ou[0][0].nx[1]',3,'ou[0][0].oa[0][2]',5,'ou[0][0].oa[1][0]',7,'ou[0][0].oa[1][1]',1,'ou[0][0].oa[1][2]',1,'ou[0][0].oa[2][0]',1,'ou[0][0].oa[2][1]',1, 'ou[0][0].oa[2][2]',1,'ou[0][0].og[0]',1,2,3,'ou[0][0].og[1]',1,2,3,'ou[0][0].oh','ou[0][0].os[1][0]','ou[0][0].oj[1]',3,'ou[0][0].om[1]','ou[0][0].ok+5', 'ou[0][0].ok+6','ou[0][0].ok+7','ou[0][0].ol[0][1]',1,2,3,4,5,6,7,'ou[0][0].ol[0][2]',1,2,3,4,5,6,7,'ov.mk[0]',1,2,3,4,5,6,7,'ov.mk[1]',1,2,3,4,5,6,7,'ov.ms',1, 'ov.mt',1,'ov.mu[0]',1,'ov.mu[1]',1,'ov.mw[1][0]',1,2,3,'ov.nq.nc',1,2,3,4,5,6,7,'ov.nq.nd',1,2,3,4,5,6,7,'ov.nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][1][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ov.nq.nf', 1,2,3,4,5,6,7,'ov.nq.ng',1,'ov.nq.nh',1,'ov.nq.ni',1,'ov.nq.nj',1,2,3,'ov.nq.nk',1,2,3,'ov.nq.nl',1,2,3,'ov.nq.nm',1,'ov.nq.nn',1,2,3,4,5,6,7,'ov.nq.no',1, 'ov.nq.np',1,2,3,'ov.nr[0][0]',1,'ov.nx[1]',3,'ov.oa[0][2]',5,'ov.oa[1][0]',7,'ov.oa[1][1]',1,'ov.oa[1][2]',1,'ov.oa[2][0]',1,'ov.oa[2][1]',1,'ov.oa[2][2]',1, 'ov.og[0]',1,2,3,'ov.og[1]',1,2,3,'ov.oh','ov.os[1][0]','ov.oj[1]',3,'ov.om[1]','ov.ok+5','ov.ok+6','ov.ok+7','ov.ol[0][1]',1,2,3,4,5,6,7,'ov.ol[0][2]',1,2,3,4, 5,6,7,'ow[0][0].mk[0]',1,2,3,4,5,6,7,'ow[0][0].mk[1]',1,2,3,4,5,6,7,'ow[0][0].ms',1,'ow[0][0].mt',1,'ow[0][0].mu[0]',1,'ow[0][0].mu[1]',1,'ow[0][0].mw[1][0]',1, 2,3,'ow[0][0].nq.nc',1,2,3,4,5,6,7,'ow[0][0].nq.nd',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.nf',1, 2,3,4,5,6,7,'ow[0][0].nq.ng',1,'ow[0][0].nq.nh',1,'ow[0][0].nq.ni',1,'ow[0][0].nq.nj',1,2,3,'ow[0][0].nq.nk',1,2,3,'ow[0][0].nq.nl',1,2,3,'ow[0][0].nq.nm',1, 'ow[0][0].nq.nn',1,2,3,4,5,6,7,'ow[0][0].nq.no',1,'ow[0][0].nq.np',1,2,3,'ow[0][0].nr[0][0]',1,'ow[0][0].nx[1]',3,'ow[0][0].oa[0][2]',5,'ow[0][0].oa[1][0]',7, 'ow[0][0].oa[1][1]',1,'ow[0][0].oa[1][2]',1,'ow[0][0].oa[2][0]',1,'ow[0][0].oa[2][1]',1,'ow[0][0].oa[2][2]',1,'ow[0][0].og[0]',1,2,3,'ow[0][0].og[1]',1,2,3, 'ow[0][0].oh','ow[0][0].os[1][0]','ow[0][0].oj[1]',3,'ow[0][0].om[1]','ow[0][0].ok+5','ow[0][0].ok+6','ow[0][0].ok+7','ow[0][0].ol[0][1]',1,2,3,4,5,6,7, 'ow[0][0].ol[0][2]',1,2,3,4,5,6,7,'ow[0][1].mk[0]',1,2,3,4,5,6,7,'ow[0][1].mk[1]',1,2,3,4,5,6,7,'ow[0][1].ms',1,'ow[0][1].mt',1,'ow[0][1].mu[0]',1, 'ow[0][1].mu[1]',1,'ow[0][1].mw[1][0]',1,2,3,'ow[0][1].nq.nc',1,2,3,4,5,6,7,'ow[0][1].nq.nd',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[0][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[0][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.nf',1,2,3,4,5,6,7,'ow[0][1].nq.ng',1,'ow[0][1].nq.nh',1,'ow[0][1].nq.ni',1,'ow[0][1].nq.nj',1,2,3, 'ow[0][1].nq.nk',1,2,3,'ow[0][1].nq.nl',1,2,3,'ow[0][1].nq.nm',1,'ow[0][1].nq.nn',1,2,3,4,5,6,7,'ow[0][1].nq.no',1,'ow[0][1].nq.np',1,2,3,'ow[0][1].nr[0][0]',1, 'ow[0][1].nx[1]',3,'ow[0][1].oa[0][2]',5,'ow[0][1].oa[1][0]',7,'ow[0][1].oa[1][1]',1,'ow[0][1].oa[1][2]',1,'ow[0][1].oa[2][0]',1,'ow[0][1].oa[2][1]',1, 'ow[0][1].oa[2][2]',1,'ow[0][1].og[0]',1,2,3,'ow[0][1].og[1]',1,2,3,'ow[0][1].oh','ow[0][1].os[1][0]','ow[0][1].oj[1]',3,'ow[0][1].om[1]','ow[0][1].ok+5', 'ow[0][1].ok+6','ow[0][1].ok+7','ow[0][1].ol[0][1]',1,2,3,4,5,6,7,'ow[0][1].ol[0][2]',1,2,3,4,5,6,7,'ow[1][0].mk[0]',1,2,3,4,5,6,7,'ow[1][0].mk[1]',1,2,3,4,5,6, 7,'ow[1][0].ms',1,'ow[1][0].mt',1,'ow[1][0].mu[0]',1,'ow[1][0].mu[1]',1,'ow[1][0].mw[1][0]',1,2,3,'ow[1][0].nq.nc',1,2,3,4,5,6,7,'ow[1][0].nq.nd',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][0][0]',1, 2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.nf',1,2,3,4,5,6,7,'ow[1][0].nq.ng',1,'ow[1][0].nq.nh',1, 'ow[1][0].nq.ni',1,'ow[1][0].nq.nj',1,2,3,'ow[1][0].nq.nk',1,2,3,'ow[1][0].nq.nl',1,2,3,'ow[1][0].nq.nm',1,'ow[1][0].nq.nn',1,2,3,4,5,6,7,'ow[1][0].nq.no',1, 'ow[1][0].nq.np',1,2,3,'ow[1][0].nr[0][0]',1,'ow[1][0].nx[1]',3,'ow[1][0].oa[0][2]',5,'ow[1][0].oa[1][0]',7,'ow[1][0].oa[1][1]',1,'ow[1][0].oa[1][2]',1, 'ow[1][0].oa[2][0]',1,'ow[1][0].oa[2][1]',1,'ow[1][0].oa[2][2]',1,'ow[1][0].og[0]',1,2,3,'ow[1][0].og[1]',1,2,3,'ow[1][0].oh','ow[1][0].os[1][0]', 'ow[1][0].oj[1]',3,'ow[1][0].om[1]','ow[1][0].ok+5','ow[1][0].ok+6','ow[1][0].ok+7','ow[1][0].ol[0][1]',1,2,3,4,5,6,7,'ow[1][0].ol[0][2]',1,2,3,4,5,6,7, 'ow[1][1].mk[0]',1,2,3,4,5,6,7,'ow[1][1].mk[1]',1,2,3,4,5,6,7,'ow[1][1].ms',1,'ow[1][1].mt',1,'ow[1][1].mu[0]',1,'ow[1][1].mu[1]',1,'ow[1][1].mw[1][0]',1,2,3, 'ow[1][1].nq.nc',1,2,3,4,5,6,7,'ow[1][1].nq.nd',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[1][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.nf',1, 2,3,4,5,6,7,'ow[1][1].nq.ng',1,'ow[1][1].nq.nh',1,'ow[1][1].nq.ni',1,'ow[1][1].nq.nj',1,2,3,'ow[1][1].nq.nk',1,2,3,'ow[1][1].nq.nl',1,2,3,'ow[1][1].nq.nm',1, 'ow[1][1].nq.nn',1,2,3,4,5,6,7,'ow[1][1].nq.no',1,'ow[1][1].nq.np',1,2,3,'ow[1][1].nr[0][0]',1,'ow[1][1].nx[1]',3,'ow[1][1].oa[0][2]',5,'ow[1][1].oa[1][0]',7, 'ow[1][1].oa[1][1]',1,'ow[1][1].oa[1][2]',1,'ow[1][1].oa[2][0]',1,'ow[1][1].oa[2][1]',1,'ow[1][1].oa[2][2]',1,'ow[1][1].og[0]',1,2,3,'ow[1][1].og[1]',1,2,3, 'ow[1][1].oh','ow[1][1].os[1][0]','ow[1][1].oj[1]',3,'ow[1][1].om[1]','ow[1][1].ok+5','ow[1][1].ok+6','ow[1][1].ok+7','ow[1][1].ol[0][1]',1,2,3,4,5,6,7, 'ow[1][1].ol[0][2]',1,2,3,4,5,6,7,'ow[2][0].mk[0]',1,2,3,4,5,6,7,'ow[2][0].mk[1]',1,2,3,4,5,6,7,'ow[2][0].ms',1,'ow[2][0].mt',1,'ow[2][0].mu[0]',1, 'ow[2][0].mu[1]',1,'ow[2][0].mw[1][0]',1,2,3,'ow[2][0].nq.nc',1,2,3,4,5,6,7,'ow[2][0].nq.nd',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[2][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[2][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.nf',1,2,3,4,5,6,7,'ow[2][0].nq.ng',1,'ow[2][0].nq.nh',1,'ow[2][0].nq.ni',1,'ow[2][0].nq.nj',1,2,3, 'ow[2][0].nq.nk',1,2,3,'ow[2][0].nq.nl',1,2,3,'ow[2][0].nq.nm',1,'ow[2][0].nq.nn',1,2,3,4,5,6,7,'ow[2][0].nq.no',1,'ow[2][0].nq.np',1,2,3,'ow[2][0].nr[0][0]',1, 'ow[2][0].nx[1]',3,'ow[2][0].oa[0][2]',5,'ow[2][0].oa[1][0]',7,'ow[2][0].oa[1][1]',1,'ow[2][0].oa[1][2]',1,'ow[2][0].oa[2][0]',1,'ow[2][0].oa[2][1]',1, 'ow[2][0].oa[2][2]',1,'ow[2][0].og[0]',1,2,3,'ow[2][0].og[1]',1,2,3,'ow[2][0].oh','ow[2][0].os[1][0]','ow[2][0].oj[1]',3,'ow[2][0].om[1]','ow[2][0].ok+5', 'ow[2][0].ok+6','ow[2][0].ok+7','ow[2][0].ol[0][1]',1,2,3,4,5,6,7,'ow[2][0].ol[0][2]',1,2,3,4,5,6,7,'ow[2][1].mk[0]',1,2,3,4,5,6,7,'ow[2][1].mk[1]',1,2,3,4,5,6, 7,'ow[2][1].ms',1,'ow[2][1].mt',1,'ow[2][1].mu[0]',1,'ow[2][1].mu[1]',1,'ow[2][1].mw[1][0]',1,2,3,'ow[2][1].nq.nc',1,2,3,4,5,6,7,'ow[2][1].nq.nd',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][0][0]',1, 2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.nf',1,2,3,4,5,6,7,'ow[2][1].nq.ng',1,'ow[2][1].nq.nh',1, 'ow[2][1].nq.ni',1,'ow[2][1].nq.nj',1,2,3,'ow[2][1].nq.nk',1,2,3,'ow[2][1].nq.nl',1,2,3,'ow[2][1].nq.nm',1,'ow[2][1].nq.nn',1,2,3,4,5,6,7,'ow[2][1].nq.no',1, 'ow[2][1].nq.np',1,2,3,'ow[2][1].nr[0][0]',1,'ow[2][1].nx[1]',3,'ow[2][1].oa[0][2]',5,'ow[2][1].oa[1][0]',7,'ow[2][1].oa[1][1]',1,'ow[2][1].oa[1][2]',1, 'ow[2][1].oa[2][0]',1,'ow[2][1].oa[2][1]',1,'ow[2][1].oa[2][2]',1,'ow[2][1].og[0]',1,2,3,'ow[2][1].og[1]',1,2,3,'ow[2][1].oh','ow[2][1].os[1][0]', 'ow[2][1].oj[1]',3,'ow[2][1].om[1]','ow[2][1].ok+5','ow[2][1].ok+6','ow[2][1].ok+7','ow[2][1].ol[0][1]',1,2,3,4,5,6,7,'ow[2][1].ol[0][2]',1,2,3,4,5,6,7,'ox',1, 'oz[0][1]',1,'oz[1][0]',1,'oz[1][1]',1,'pg',1,'ph',1,2,3,'pi',1,2,3,'pj[0][0][0]',1,2,3,'pj[0][0][1]',1,2,3,'pj[0][1][0]',1,2,3,'pj[0][1][1]',1,2,3, 'pj[0][2][0]',1,2,3,'pj[0][2][1]',1,2,3,'pk',1,2,3,'pl',1,2,3,'pm[0][0][0][0]',1,2,3,'pm[0][0][0][1]',1,2,3,'pm[0][1][0][0]',1,2,3,'pm[0][1][0][1]',1,2,3, 'pm[1][0][0][0]',1,2,3,'pm[1][0][0][1]',1,2,3,'pm[1][1][0][0]',1,2,3,'pm[1][1][0][1]',1,2,3,'pm[2][0][0][0]',1,2,3,'pm[2][0][0][1]',1,2,3,'pm[2][1][0][0]',1,2, 3,'pm[2][1][0][1]',1,2,3,'pn','po','pp',1,2,3,'pq',1,'pr',1,'pz[0][1]','ps[0][0][0]+3','pt[1]','ps[0][0][0]+5','ps[0][0][0]+6','ps[0][0][0]+7','ps[0][0][1]',1, 2,3,4,5,6,7,'ps[1][0][0]',1,2,3,4,5,6,7,'ps[1][0][1]',1,2,3,4,5,6,7,'ps[2][0][0]',1,2,3,4,5,6,7,'ps[2][0][1]',1,2,3,4,5,6,7,'qi.qa',1,2,3,'qi.qe[1][0]',5,6,7, 'qj',1,'qp+2','qp+3','qr[0][1]','qp+5','qp+6','qp+7','qt',1,2,3,'qu',1,2,3,'rg.qv',1,2,3,4,5,6,7,'rg.qw',1,2,3,4,5,6,7,'rg.qx[0]',1,2,3,4,5,6,7,'rg.qx[1]',1,2, 3,4,5,6,7,'rg.qx[2]',1,2,3,4,5,6,7,'rg.qy',1,2,3,'rg.qz',1,2,3,'rg.ra[0][0][0][0]',1,2,3,'rg.ra[0][0][1][0]',1,2,3,'rg.ra[0][0][2][0]',1,2,3, 'rg.ra[0][1][0][0]',1,2,3,'rg.ra[0][1][1][0]',1,2,3,'rg.ra[0][1][2][0]',1,2,3,'rg.ra[0][2][0][0]',1,2,3,'rg.ra[0][2][1][0]',1,2,3,'rg.ra[0][2][2][0]',1,2,3, 'rg.rb',1,2,3,4,5,6,7,'rg.rc',1,2,3,4,5,6,7,'rg.rd[0]',1,2,3,'rg.rd[1]',1,2,3,'rg.re',1,2,3,4,5,6,7,'rg.rf[0][0]',1,2,3,4,5,6,7,'rg.rf[1][0]',1,2,3,4,5,6,7, 'rh.qv',1,2,3,4,5,6,7,'rh.qw',1,2,3,4,5,6,7,'rh.qx[0]',1,2,3,4,5,6,7,'rh.qx[1]',1,2,3,4,5,6,7,'rh.qx[2]',1,2,3,4,5,6,7,'rh.qy',1,2,3,'rh.qz',1,2,3, 'rh.ra[0][0][0][0]',1,2,3,'rh.ra[0][0][1][0]',1,2,3,'rh.ra[0][0][2][0]',1,2,3,'rh.ra[0][1][0][0]',1,2,3,'rh.ra[0][1][1][0]',1,2,3,'rh.ra[0][1][2][0]',1,2,3, 'rh.ra[0][2][0][0]',1,2,3,'rh.ra[0][2][1][0]',1,2,3,'rh.ra[0][2][2][0]',1,2,3,'rh.rb',1,2,3,4,5,6,7,'rh.rc',1,2,3,4,5,6,7,'rh.rd[0]',1,2,3,'rh.rd[1]',1,2,3, 'rh.re',1,2,3,4,5,6,7,'rh.rf[0][0]',1,2,3,4,5,6,7,'rh.rf[1][0]',1,2,3,4,5,6,7,'ri','+3171','rs[0].rj','rs[0].rq[1]','rs[0].rq[2]',3,4,5,6,7,'rs[0].rk[0][1]',1, 2,3,4,5,6,7,'rs[0].rk[0][2]',1,2,3,4,5,6,7,'rt[0].rj','rt[0].rq[1]','rt[0].rq[2]',3,4,5,6,7,'rt[0].rk[0][1]',1,2,3,4,5,6,7,'rt[0].rk[0][2]',1,2,3,4,5,6,7, 'ru.rj','ru.rq[1]','ru.rq[2]',3,4,5,6,7,'ru.rk[0][1]',1,2,3,4,5,6,7,'ru.rk[0][2]',1,2,3,4,5,6,7,'rv[0]',1,2,3,4,5,6,7 ], ey=>[ 'ez','fn.fj[0][1][0]','fn.fi[1][0]','fn.fl[1][0][0]','fn.fl[1][1][0]','fn.fl[1][2][0]','fn.fl[2][0][0]','fn.fl[2][1][0]','fn.fl[2][2][0]','fq','gg[1]','fr[1]', 1,'fu[0][1]',1,2,3,'fu[1][0]',1,2,3,'fu[1][1]',1,2,3,'fu[2][0]',1,2,3,'fu[2][1]',1,2,3,'gz',1,2,3,'ha[0]','ha[1]','hb','hc',1,2,3,'hd','he[0][0][0][0]',1,2,3, 'he[0][0][0][1]',1,2,3,'he[0][0][1][0]',1,2,3,'he[0][0][1][1]',1,2,3,'he[1][0][0][0]',1,2,3,'he[1][0][0][1]',1,2,3,'he[1][0][1][0]',1,2,3,'he[1][0][1][1]',1,2, 3,'hf',1,2,3,'hg',1,2,3,'ii.hh',1,'ii.hi',1,2,3,'ii.ht.hj',1,2,3,'ii.ht.hl[0][0][1]',1,2,3,'ii.ht.hl[0][0][2]',1,2,3,'ii.ht.hl[0][1][0]',1,2,3, 'ii.ht.hl[0][1][1]',1,2,3,'ii.ht.hl[0][1][2]',1,2,3,'ii.ht.hl[0][2][0]',1,2,3,'ii.ht.hl[0][2][1]',1,2,3,'ii.ht.hl[0][2][2]',1,2,3,'ii.ht.hl[1][0][0]',1,2,3, 'ii.ht.hl[1][0][1]',1,2,3,'ii.ht.hl[1][0][2]',1,2,3,'ii.ht.hl[1][1][0]',1,2,3,'ii.ht.hl[1][1][1]',1,2,3,'ii.ht.hl[1][1][2]',1,2,3,'ii.ht.hl[1][2][0]',1,2,3, 'ii.ht.hl[1][2][1]',1,2,3,'ii.ht.hl[1][2][2]',1,2,3,'ii.ht.hl[2][0][0]',1,2,3,'ii.ht.hl[2][0][1]',1,2,3,'ii.ht.hl[2][0][2]',1,2,3,'ii.ht.hl[2][1][0]',1,2,3, 'ii.ht.hl[2][1][1]',1,2,3,'ii.ht.hl[2][1][2]',1,2,3,'ii.ht.hl[2][2][0]',1,2,3,'ii.ht.hl[2][2][1]',1,2,3,'ii.ht.hl[2][2][2]',1,2,3,'ii.hu.hj',1,2,3, 'ii.hu.hl[0][0][1]',1,2,3,'ii.hu.hl[0][0][2]',1,2,3,'ii.hu.hl[0][1][0]',1,2,3,'ii.hu.hl[0][1][1]',1,2,3,'ii.hu.hl[0][1][2]',1,2,3,'ii.hu.hl[0][2][0]',1,2,3, 'ii.hu.hl[0][2][1]',1,2,3,'ii.hu.hl[0][2][2]',1,2,3,'ii.hu.hl[1][0][0]',1,2,3,'ii.hu.hl[1][0][1]',1,2,3,'ii.hu.hl[1][0][2]',1,2,3,'ii.hu.hl[1][1][0]',1,2,3, 'ii.hu.hl[1][1][1]',1,2,3,'ii.hu.hl[1][1][2]',1,2,3,'ii.hu.hl[1][2][0]',1,2,3,'ii.hu.hl[1][2][1]',1,2,3,'ii.hu.hl[1][2][2]',1,2,3,'ii.hu.hl[2][0][0]',1,2,3, 'ii.hu.hl[2][0][1]',1,2,3,'ii.hu.hl[2][0][2]',1,2,3,'ii.hu.hl[2][1][0]',1,2,3,'ii.hu.hl[2][1][1]',1,2,3,'ii.hu.hl[2][1][2]',1,2,3,'ii.hu.hl[2][2][0]',1,2,3, 'ii.hu.hl[2][2][1]',1,2,3,'ii.hu.hl[2][2][2]',1,2,3,'ii.hv','ii.hw','ii.hx[0]',1,2,3,'ii.ig[0][0][0].hy',1,'ii.ig[0][0][0].ie+2','ii.ig[0][0][0].ie+3', 'ii.ig[0][0][0].ie+4','ii.ig[0][0][0].ie+5','ii.ig[0][0][0].ie+6','ii.ig[0][0][0].ie+7','ii.ig[1][0][0].hy',1,'ii.ig[1][0][0].ie+2','ii.ig[1][0][0].ie+3', 'ii.ig[1][0][0].ie+4','ii.ig[1][0][0].ie+5','ii.ig[1][0][0].ie+6','ii.ig[1][0][0].ie+7','ii.ig[2][0][0].hy',1,'ii.ig[2][0][0].ie+2','ii.ig[2][0][0].ie+3', 'ii.ig[2][0][0].ie+4','ii.ig[2][0][0].ie+5','ii.ig[2][0][0].ie+6','ii.ig[2][0][0].ie+7','ii.ih.hy',1,'ii.ih.ie+2','ii.ih.ie+3','ii.ih.ie+4','ii.ih.ie+5', 'ii.ih.ie+6','ii.ih.ie+7','ij.hh',1,'ij.hi',1,2,3,'ij.ht.hj',1,2,3,'ij.ht.hl[0][0][1]',1,2,3,'ij.ht.hl[0][0][2]',1,2,3,'ij.ht.hl[0][1][0]',1,2,3, 'ij.ht.hl[0][1][1]',1,2,3,'ij.ht.hl[0][1][2]',1,2,3,'ij.ht.hl[0][2][0]',1,2,3,'ij.ht.hl[0][2][1]',1,2,3,'ij.ht.hl[0][2][2]',1,2,3,'ij.ht.hl[1][0][0]',1,2,3, 'ij.ht.hl[1][0][1]',1,2,3,'ij.ht.hl[1][0][2]',1,2,3,'ij.ht.hl[1][1][0]',1,2,3,'ij.ht.hl[1][1][1]',1,2,3,'ij.ht.hl[1][1][2]',1,2,3,'ij.ht.hl[1][2][0]',1,2,3, 'ij.ht.hl[1][2][1]',1,2,3,'ij.ht.hl[1][2][2]',1,2,3,'ij.ht.hl[2][0][0]',1,2,3,'ij.ht.hl[2][0][1]',1,2,3,'ij.ht.hl[2][0][2]',1,2,3,'ij.ht.hl[2][1][0]',1,2,3, 'ij.ht.hl[2][1][1]',1,2,3,'ij.ht.hl[2][1][2]',1,2,3,'ij.ht.hl[2][2][0]',1,2,3,'ij.ht.hl[2][2][1]',1,2,3,'ij.ht.hl[2][2][2]',1,2,3,'ij.hu.hj',1,2,3, 'ij.hu.hl[0][0][1]',1,2,3,'ij.hu.hl[0][0][2]',1,2,3,'ij.hu.hl[0][1][0]',1,2,3,'ij.hu.hl[0][1][1]',1,2,3,'ij.hu.hl[0][1][2]',1,2,3,'ij.hu.hl[0][2][0]',1,2,3, 'ij.hu.hl[0][2][1]',1,2,3,'ij.hu.hl[0][2][2]',1,2,3,'ij.hu.hl[1][0][0]',1,2,3,'ij.hu.hl[1][0][1]',1,2,3,'ij.hu.hl[1][0][2]',1,2,3,'ij.hu.hl[1][1][0]',1,2,3, 'ij.hu.hl[1][1][1]',1,2,3,'ij.hu.hl[1][1][2]',1,2,3,'ij.hu.hl[1][2][0]',1,2,3,'ij.hu.hl[1][2][1]',1,2,3,'ij.hu.hl[1][2][2]',1,2,3,'ij.hu.hl[2][0][0]',1,2,3, 'ij.hu.hl[2][0][1]',1,2,3,'ij.hu.hl[2][0][2]',1,2,3,'ij.hu.hl[2][1][0]',1,2,3,'ij.hu.hl[2][1][1]',1,2,3,'ij.hu.hl[2][1][2]',1,2,3,'ij.hu.hl[2][2][0]',1,2,3, 'ij.hu.hl[2][2][1]',1,2,3,'ij.hu.hl[2][2][2]',1,2,3,'ij.hv','ij.hw','ij.hx[0]',1,2,3,'ij.ig[0][0][0].hy',1,'ij.ig[0][0][0].ie+2','ij.ig[0][0][0].ie+3', 'ij.ig[0][0][0].ie+4','ij.ig[0][0][0].ie+5','ij.ig[0][0][0].ie+6','ij.ig[0][0][0].ie+7','ij.ig[1][0][0].hy',1,'ij.ig[1][0][0].ie+2','ij.ig[1][0][0].ie+3', 'ij.ig[1][0][0].ie+4','ij.ig[1][0][0].ie+5','ij.ig[1][0][0].ie+6','ij.ig[1][0][0].ie+7','ij.ig[2][0][0].hy',1,'ij.ig[2][0][0].ie+2','ij.ig[2][0][0].ie+3', 'ij.ig[2][0][0].ie+4','ij.ig[2][0][0].ie+5','ij.ig[2][0][0].ie+6','ij.ig[2][0][0].ie+7','ij.ih.hy',1,'ij.ih.ie+2','ij.ih.ie+3','ij.ih.ie+4','ij.ih.ie+5', 'ij.ih.ie+6','ij.ih.ie+7','ik.hh',1,'ik.hi',1,2,3,'ik.ht.hj',1,2,3,'ik.ht.hl[0][0][1]',1,2,3,'ik.ht.hl[0][0][2]',1,2,3,'ik.ht.hl[0][1][0]',1,2,3, 'ik.ht.hl[0][1][1]',1,2,3,'ik.ht.hl[0][1][2]',1,2,3,'ik.ht.hl[0][2][0]',1,2,3,'ik.ht.hl[0][2][1]',1,2,3,'ik.ht.hl[0][2][2]',1,2,3,'ik.ht.hl[1][0][0]',1,2,3, 'ik.ht.hl[1][0][1]',1,2,3,'ik.ht.hl[1][0][2]',1,2,3,'ik.ht.hl[1][1][0]',1,2,3,'ik.ht.hl[1][1][1]',1,2,3,'ik.ht.hl[1][1][2]',1,2,3,'ik.ht.hl[1][2][0]',1,2,3, 'ik.ht.hl[1][2][1]',1,2,3,'ik.ht.hl[1][2][2]',1,2,3,'ik.ht.hl[2][0][0]',1,2,3,'ik.ht.hl[2][0][1]',1,2,3,'ik.ht.hl[2][0][2]',1,2,3,'ik.ht.hl[2][1][0]',1,2,3, 'ik.ht.hl[2][1][1]',1,2,3,'ik.ht.hl[2][1][2]',1,2,3,'ik.ht.hl[2][2][0]',1,2,3,'ik.ht.hl[2][2][1]',1,2,3,'ik.ht.hl[2][2][2]',1,2,3,'ik.hu.hj',1,2,3, 'ik.hu.hl[0][0][1]',1,2,3,'ik.hu.hl[0][0][2]',1,2,3,'ik.hu.hl[0][1][0]',1,2,3,'ik.hu.hl[0][1][1]',1,2,3,'ik.hu.hl[0][1][2]',1,2,3,'ik.hu.hl[0][2][0]',1,2,3, 'ik.hu.hl[0][2][1]',1,2,3,'ik.hu.hl[0][2][2]',1,2,3,'ik.hu.hl[1][0][0]',1,2,3,'ik.hu.hl[1][0][1]',1,2,3,'ik.hu.hl[1][0][2]',1,2,3,'ik.hu.hl[1][1][0]',1,2,3, 'ik.hu.hl[1][1][1]',1,2,3,'ik.hu.hl[1][1][2]',1,2,3,'ik.hu.hl[1][2][0]',1,2,3,'ik.hu.hl[1][2][1]',1,2,3,'ik.hu.hl[1][2][2]',1,2,3,'ik.hu.hl[2][0][0]',1,2,3, 'ik.hu.hl[2][0][1]',1,2,3,'ik.hu.hl[2][0][2]',1,2,3,'ik.hu.hl[2][1][0]',1,2,3,'ik.hu.hl[2][1][1]',1,2,3,'ik.hu.hl[2][1][2]',1,2,3,'ik.hu.hl[2][2][0]',1,2,3, 'ik.hu.hl[2][2][1]',1,2,3,'ik.hu.hl[2][2][2]',1,2,3,'ik.hv','ik.hw','ik.hx[0]',1,2,3,'ik.ig[0][0][0].hy',1,'ik.ig[0][0][0].ie+2','ik.ig[0][0][0].ie+3', 'ik.ig[0][0][0].ie+4','ik.ig[0][0][0].ie+5','ik.ig[0][0][0].ie+6','ik.ig[0][0][0].ie+7','ik.ig[1][0][0].hy',1,'ik.ig[1][0][0].ie+2','ik.ig[1][0][0].ie+3', 'ik.ig[1][0][0].ie+4','ik.ig[1][0][0].ie+5','ik.ig[1][0][0].ie+6','ik.ig[1][0][0].ie+7','ik.ig[2][0][0].hy',1,'ik.ig[2][0][0].ie+2','ik.ig[2][0][0].ie+3', 'ik.ig[2][0][0].ie+4','ik.ig[2][0][0].ie+5','ik.ig[2][0][0].ie+6','ik.ig[2][0][0].ie+7','ik.ih.hy',1,'ik.ih.ie+2','ik.ih.ie+3','ik.ih.ie+4','ik.ih.ie+5', 'ik.ih.ie+6','ik.ih.ie+7','iu.il','jt.db.bo.bh[0][1]','jt.be.bd[0][1][0]',3,'iu.ir[0][1]',1,'jt.db.cn.ck[0][0][1][1]',3,'iu.ir[1][0]',1, 'jt.db.cn.ck[0][0][2][1]',3,'iu.ir[1][1]','jt.db.bq[0][1].bh[0][1]','jt.be.af[1]',3,'iu.ir[2][0]',1,'jt.be.ah[0][0][0]','jt.be.ah[1][0][0]','iu.ir[2][1]',1, 'jt.db.cn.ck[0][1][2][1]',3,'jr.ji[0][0][1][0]','jt.db.bq[1][0].bh[0][1]','jt.db.bq[1][0].bh[0][2]',3,'jt.be.aj[0][0][0]','jt.be.av','jt.be.aw',7, 'jr.ji[0][0][1][1]','jt.db.cy','jt.db.cz',3,'jt.be.aj[0][0][1]','jt.db.bq[1][1].bh[0][1]','jt.db.bq[1][1].bh[0][2]',7,'jr.ji[0][0][1][2]',1, 'jt.db.da[1][0][1][0]',3,'jt.be.aj[0][1][0]',5,'jt.db.da[2][0][1][0]',7,'jr.ji[0][0][2][0]',1,2,3,'jt.be.aj[0][1][1]',5,6,7,'jr.ji[0][0][2][1]',1,2,3, 'jt.be.aj[0][2][0]',5,6,7,'jr.ji[0][0][2][2]',1,2,3,'jt.be.aj[0][2][1]',5,6,7,'jt.be.az[0][0][2]','jt.db.bv','jt.dl[0][0]','jt.db.bw[0]','jt.be.aj[1][0][0]', 'jt.db.bw[2]','jt.db.bx',3,'jt.be.az[0][1][0]',5,'jt.db.by',7,'jt.be.aj[1][0][1]',1,'jt.db.bz',3,'jt.be.az[0][1][1]',5,'jt.dm[1][0]',7,'jt.be.aj[1][1][0]',1, 'jt.db.ca',3,'jt.be.az[0][1][2]',5,'jt.db.cb',7,'jt.be.aj[1][1][1]',1,'jt.db.cc',3,'jt.be.az[0][2][0]',5,'jt.dp',7,'jt.be.aj[1][2][0]',1,'jt.dq',3, 'jt.be.az[0][2][1]',5,'jt.dr','jt.ds','jt.be.aj[1][2][1]','jt.du',2,3,'jt.be.az[0][2][2]','jt.dv',6,'jt.dx[0][1]','jt.be.aj[2][0][0]','jt.dx[1][0]',2, 'jt.dx[1][1]','jt.be.az[1][0][0]','jt.dx[2][0]',6,'jt.dx[2][1]','jt.be.aj[2][0][1]','jt.eb[1][0]',2,3,'jt.be.az[1][0][1]','jt.eb[1][1]',6,7,'jt.be.aj[2][1][0]', 'jt.eb[1][2]',2,3,'jt.be.az[1][0][2]','jt.eb[2][0]',6,7,'jt.be.aj[2][1][1]','jt.eb[2][1]',2,3,'jt.be.az[1][1][0]','jt.eb[2][2]',6,7,'jt.be.aj[2][2][0]','jt.ec', 2,'jt.ed','jt.be.az[1][1][1]','jt.ee',6,7,'jt.be.aj[2][2][1]','jt.ef',2,'jt.eg','jt.be.az[1][1][2]','jt.ei','jt.ej',7,'jt.be.ak',1,'jt.el[0][0][0]', 'jt.el[0][0][1]','jt.be.az[1][2][0]','jt.el[0][1][1]','jt.el[1][0][0]','jt.el[1][0][1]','jt.be.al','jt.be.am','jt.be.an','jt.el[2][0][1]','jt.be.ao', 'jt.el[2][1][1]','jt.em[0][0][0]','jt.em[0][0][1]','jt.em[0][1][0]','jt.em[0][1][1]','jt.em[0][2][0]','jt.em[0][2][1]','jt.be.az[1][2][2]','jt.em[1][0][1]', 'jt.em[1][1][0]','jt.em[1][1][1]','jt.em[1][2][0]','jt.em[1][2][1]','jt.en',7,'jt.be.ba',1,'jt.eo','jt.ep',4,5,6,'jt.ev.eq','jt.be.bb',1,2,3,'jt.ev.eu+5', 'jt.ev.eu+6','jt.ev.eu+7','jt.ew.eq',1,2,3,'jt.ew.eu+4','jt.ew.eu+5','jt.ew.eu+6','jt.ew.eu+7','jt.ex',1,2,3 ], aa=>[ 'ab','db.bo.bh[0][1]','be.bd[0][1][0]',3,'be.ad',5,'db.cn.ck[0][0][1][1]',7,'be.ae',1,'db.cn.ck[0][0][2][1]',3,'be.af[0]','db.bq[0][1].bh[0][1]','be.af[1]',1, 'be.ag',1,'be.ah[0][0][0]','be.ah[1][0][0]','be.ai',1,'db.cn.ck[0][1][2][1]',3,'be.at[2]','db.bq[1][0].bh[0][1]','db.bq[1][0].bh[0][2]',7,'be.aj[0][0][0]', 'be.av','be.aw',3,'be.ax[0][0][0]','db.cy','db.cz',7,'be.aj[0][0][1]','db.bq[1][1].bh[0][1]','db.bq[1][1].bh[0][2]',3,'be.ax[0][0][1]',5,'db.da[1][0][1][0]',7, 'be.aj[0][1][0]',1,'db.da[2][0][1][0]',3,'be.ay',5,6,7,'be.aj[0][1][1]',1,2,3,'be.az[0][0][0]',5,6,7,'be.aj[0][2][0]',1,2,3,'be.az[0][0][1]',5,6,7, 'be.aj[0][2][1]',1,2,3,'be.az[0][0][2]','db.bv','dl[0][0]','db.bw[0]','be.aj[1][0][0]','db.bw[2]','db.bx',3,'be.az[0][1][0]',5,'db.by',7,'be.aj[1][0][1]',1, 'db.bz',3,'be.az[0][1][1]',5,'dm[1][0]',7,'be.aj[1][1][0]',1,'db.ca',3,'be.az[0][1][2]',5,'db.cb',7,'be.aj[1][1][1]',1,'db.cc',3,'be.az[0][2][0]',5,'dp',7, 'be.aj[1][2][0]',1,'dq',3,'be.az[0][2][1]',5,'dr','ds','be.aj[1][2][1]','du',2,3,'be.az[0][2][2]','dv',6,'dx[0][1]','be.aj[2][0][0]','dx[1][0]',2,'dx[1][1]', 'be.az[1][0][0]','dx[2][0]',6,'dx[2][1]','be.aj[2][0][1]','eb[1][0]',2,3,'be.az[1][0][1]','eb[1][1]',6,7,'be.aj[2][1][0]','eb[1][2]',2,3,'be.az[1][0][2]', 'eb[2][0]',6,7,'be.aj[2][1][1]','eb[2][1]',2,3,'be.az[1][1][0]','eb[2][2]',6,7,'be.aj[2][2][0]','ec',2,'ed','be.az[1][1][1]','ee',6,7,'be.aj[2][2][1]','ef',2, 'eg','be.az[1][1][2]','ei','ej',7,'be.ak',1,'el[0][0][0]','el[0][0][1]','be.az[1][2][0]','el[0][1][1]','el[1][0][0]','el[1][0][1]','be.al','be.am','be.an', 'el[2][0][1]','be.ao','el[2][1][1]','em[0][0][0]','em[0][0][1]','em[0][1][0]','em[0][1][1]','em[0][2][0]','em[0][2][1]','be.az[1][2][2]','em[1][0][1]', 'em[1][1][0]','em[1][1][1]','em[1][2][0]','em[1][2][1]','en',7,'be.ba',1,'eo','ep',4,5,6,'ev.eq','be.bb',1,2,3,'ev.eu+5','ev.eu+6','ev.eu+7','ew.eq',1,2,3, 'ew.eu+4','ew.eu+5','ew.eu+6','ew.eu+7','ex',1,2,3 ], rw=>[ 'rx','uo.sc[1]','uo.sh[0][1]','uo.um.ud','uo.rz[0][1]','aar[0][0].aah[2][0]','uo.sh[1][1]','aar[0][0].aai','uo.rz[0][2]','uo.sm','uo.sh[2][1]','uo.so', 'uo.rz[1][0]',1,'ux[0][0]','aar[0][0].aak','uo.rz[1][1]',1,'ux[0][1]','vh.va[0][0][1]','uo.rz[1][2]','vh.va[0][1][1]','ux[0][2]','vh.va[0][2][1]','uo.sq[1]', 'vh.vc','ux[1][0]','aar[0][0].aap','uo.sr','wi.wg','ux[1][1]',3,'uo.sv[1][0][0][2]','ws.wo[1]','ux[1][2]','aar[0][0].aaq','uo.sv[1][0][1][0]',1, 'uo.to.te[0][0][0][1]','aar[0][1].aag','uo.sv[1][0][1][1]','aar[0][1].aah[0][1]','uo.to.te[1][0][0][1]','aar[0][1].aah[1][1]','uo.sv[1][0][1][2]', 'aar[0][1].aah[2][1]','uo.to.tg',3,'uo.to.th',1,'uo.to.ti',1,'uo.to.tj[0]',1,'ws.wr[2][0]',3,'uo.to.tj[1]',1,'ws.wr[2][2]',3,'uo.to.tk',1,'ye.yb[1][1][0][1]', 'aar[0][1].aan','uo.to.tl','aaf[0][0][0]','ye.yb[1][1][1][1]','aaf[0][2][0]','uo.to.tm','aaf[1][1][0]','uo.to.tn','aaf[2][0][0]','vn[0][1][1]','aaf[2][2][0]', 'ye.yb[2][0][1][1]','uo.um.ue[1][0][2]+7','uo.um.ue[1][1][0]',1,'ye.yb[2][1][0][1]','aar[1][0].aah[0][0]','vn[0][1][2]','aar[1][0].aah[1][0]', 'ye.yb[2][1][1][1]','aar[1][0].aah[2][0]','uo.um.ue[1][1][1]','aar[1][0].aai','ye.yc[1][0]',3,'vn[0][2][0]','aar[1][0].aaj','ye.yd',7,'uo.um.ue[1][1][2]', 'aar[1][0].aak',2,3,'vn[0][2][1]','aar[1][0].aal',6,7,'uo.um.uf','aar[1][0].aam','aar[1][0].aan','aar[1][0].aao[0]','vn[0][2][2]','aar[1][0].aap',6,7, 'uo.um.ug',1,'uo.um.uh[0]',1,'vn[1][0][0]','aar[1][0].aaq','uo.um.uh[1]',1,2,'aar[1][1].aag','uo.um.uh[2]','aar[1][1].aah[0][1]','vn[1][0][1]', 'aar[1][1].aah[1][1]','uo.um.ui','aar[1][1].aah[2][1]','aar[1][1].aai',3,4,5,'vn[1][0][2]',7,'uo.um.uj[0]',1,'aar[1][1].aak',3,'uo.um.uk[0]','uo.um.uk[1]', 'uo.um.uk[2]','uo.um.ul','up[1][0].rz[0][0]','up[1][0].sc[1]','up[1][0].sh[0][1]','up[1][0].um.ud','up[1][0].rz[0][1]','aar[1][1].aao[1]','up[1][0].sh[1][1]',3, 'up[1][0].rz[0][2]','up[1][0].sm','up[1][0].sh[2][1]','up[1][0].so','up[1][0].rz[1][0]',1,'vn[1][1][2]',3,'up[1][0].rz[1][1]',1,'aar[2][0].aag', 'aar[2][0].aah[0][0]','up[1][0].rz[1][2]','aar[2][0].aah[1][0]','vn[1][2][0]','aar[2][0].aah[2][0]','up[1][0].sq[1]','aar[2][0].aai',2,3,'up[1][0].sr', 'aar[2][0].aaj','vn[1][2][1]',3,'up[1][0].sv[1][0][0][2]','aar[2][0].aak',2,3,'up[1][0].sv[1][0][1][0]','aar[2][0].aal','up[1][0].to.te[0][0][0][1]',3, 'up[1][0].sv[1][0][1][1]','aar[2][0].aam','up[1][0].to.te[1][0][0][1]','aar[2][0].aao[0]','up[1][0].sv[1][0][1][2]','aar[2][0].aap','up[1][0].to.tg',3, 'up[1][0].to.th',1,'up[1][0].to.ti',1,'up[1][0].to.tj[0]','aar[2][0].aaq','vn[2][0][1]',3,'up[1][0].to.tj[1]','aar[2][1].aag','aar[2][1].aah[0][0]', 'aar[2][1].aah[0][1]','up[1][0].to.tk','aar[2][1].aah[1][1]','vn[2][0][2]','aar[2][1].aah[2][1]','up[1][0].to.tl',1,2,3,'up[1][0].to.tm',1,'up[1][0].to.tn',1, 'aar[2][1].aak','up[1][0].um.ue[1][0][2]+5','up[1][0].um.ue[1][0][2]+6','up[1][0].um.ue[1][0][2]+7','up[1][0].um.ue[1][1][0]',1,'vn[2][1][1]',3,'aar[2][1].aam', 'aar[2][1].aan','aar[2][1].aao[0]','aar[2][1].aao[1]','up[1][0].um.ue[1][1][1]',1,'vn[2][1][2]',3,4,5,6,7,'up[1][0].um.ue[1][1][2]',1,'vn[2][2][0]',3,4,5,6,7, 'up[1][0].um.uf',1,'vn[2][2][1]',3,4,5,6,7,'up[1][0].um.ug',1,'up[1][0].um.uh[0]',1,2,3,'up[1][0].um.uh[1]',1,2,3,'up[1][0].um.uh[2]',1,2,3,'up[1][0].um.ui',1, 2,3,'vp','vq','vr[0][0]','vr[1][0]','up[1][0].um.uj[0]','vs',2,3,'up[1][0].um.uk[0]','up[1][0].um.uk[1]','up[1][0].um.uk[2]','up[1][0].um.ul', 'up[2][0].rz[0][0]','up[2][0].sc[1]','up[2][0].sh[0][1]','up[2][0].um.ud','up[2][0].rz[0][1]',1,'up[2][0].sh[1][1]',3,'up[2][0].rz[0][2]','up[2][0].sm', 'up[2][0].sh[2][1]','up[2][0].so','up[2][0].rz[1][0]',1,2,3,'up[2][0].rz[1][1]',1,2,3,'up[2][0].rz[1][2]',1,2,3,'up[2][0].sq[1]',1,2,3,'up[2][0].sr',1,2,3, 'up[2][0].sv[1][0][0][2]',1,2,3,'up[2][0].sv[1][0][1][0]',1,'up[2][0].to.te[0][0][0][1]',3,'up[2][0].sv[1][0][1][1]',1,'up[2][0].to.te[1][0][0][1]',3, 'up[2][0].sv[1][0][1][2]',1,'up[2][0].to.tg',3,'up[2][0].to.th',1,'up[2][0].to.ti',1,'up[2][0].to.tj[0]',1,2,3,'up[2][0].to.tj[1]',1,2,3,'up[2][0].to.tk',1,2,3, 'up[2][0].to.tl',1,2,3,'up[2][0].to.tm',1,'up[2][0].to.tn',1,'up[2][0].um.ue[1][0][2]+4','up[2][0].um.ue[1][0][2]+5','up[2][0].um.ue[1][0][2]+6', 'up[2][0].um.ue[1][0][2]+7','up[2][0].um.ue[1][1][0]',1,2,3,4,5,6,7,'up[2][0].um.ue[1][1][1]',1,2,3,4,5,6,7,'up[2][0].um.ue[1][1][2]',1,2,3,4,5,6,7, 'up[2][0].um.uf',1,2,3,4,5,6,7,'up[2][0].um.ug',1,'up[2][0].um.uh[0]',1,2,3,'up[2][0].um.uh[1]',1,2,3,'up[2][0].um.uh[2]',1,2,3,'up[2][0].um.ui',1,2,3,4,5,6,7, 'up[2][0].um.uj[0]',1,2,3,'up[2][0].um.uk[0]','up[2][0].um.uk[1]','up[2][0].um.uk[2]','up[2][0].um.ul' ]}, 2 => { kc=>[ 'mg.kd',1,2,3,'mg.ke',1,2,3,4,5,6,7,'mg.kf',1,2,3,'mg.kg',1,2,3,'mg.kh',1,'mg.ki','mg+23','mg.kw.kj[0][0]',1,2,3,'mg.kw.kj[0][1]',1,2,3,'mg.kw.kj[1][0]',1,2,3, 'mg.kw.kj[1][1]',1,2,3,'mg.kw.kj[2][0]',1,2,3,'mg.kw.kj[2][1]',1,2,3,'mg.kx',1,2,3,4,5,6,7,'mg.ky',1,2,3,'mg.lf[0][1]',5,6,7,'mg.lc[1]',1,2,3,4,5,6,7, 'mg.ld[0][0][2]',1,2,3,4,5,6,7,'mg.ld[1][0][0]',1,2,3,4,5,6,7,'mg.ld[1][0][1]',1,2,3,4,5,6,7,'mg.ld[1][0][2]',1,2,3,4,5,6,7,'mg.lp[0][0].li',1, 'mg.lp[0][0].lk+2','mg.lp[0][0].lk+3','mg.lp[0][0].lm[0][0][1]','mg.lp[0][0].lk+5','mg.lp[0][0].lk+6','mg.lp[0][0].lk+7','mg.lp[0][0].lm[0][0][2]',1,2,3, 'mg.lp[0][0].lm[0][1][0]',1,2,3,'mg.lp[0][0].lm[0][1][1]',1,2,3,'mg.lp[0][0].lm[0][1][2]',1,2,3,'mg.lp[0][0].lm[0][2][0]',1,2,3,'mg.lp[0][0].lm[0][2][1]',1,2,3, 'mg.lp[0][0].lm[0][2][2]',1,2,3,'mg.lp[0][1].li',1,'mg.lp[0][1].lk+2','mg.lp[0][1].lk+3','mg.lp[0][1].lm[0][0][1]','mg.lp[0][1].lk+5','mg.lp[0][1].lk+6', 'mg.lp[0][1].lk+7','mg.lp[0][1].lm[0][0][2]',1,2,3,'mg.lp[0][1].lm[0][1][0]',1,2,3,'mg.lp[0][1].lm[0][1][1]',1,2,3,'mg.lp[0][1].lm[0][1][2]',1,2,3, 'mg.lp[0][1].lm[0][2][0]',1,2,3,'mg.lp[0][1].lm[0][2][1]',1,2,3,'mg.lp[0][1].lm[0][2][2]',1,2,3,'mg.lp[1][0].li',1,'mg.lp[1][0].lk+2','mg.lp[1][0].lk+3', 'mg.lp[1][0].lm[0][0][1]','mg.lp[1][0].lk+5','mg.lp[1][0].lk+6','mg.lp[1][0].lk+7','mg.lp[1][0].lm[0][0][2]',1,2,3,'mg.lp[1][0].lm[0][1][0]',1,2,3, 'mg.lp[1][0].lm[0][1][1]',1,2,3,'mg.lp[1][0].lm[0][1][2]',1,2,3,'mg.lp[1][0].lm[0][2][0]',1,2,3,'mg.lp[1][0].lm[0][2][1]',1,2,3,'mg.lp[1][0].lm[0][2][2]',1,2,3, 'mg.lp[1][1].li',1,'mg.lp[1][1].lk+2','mg.lp[1][1].lk+3','mg.lp[1][1].lm[0][0][1]','mg.lp[1][1].lk+5','mg.lp[1][1].lk+6','mg.lp[1][1].lk+7', 'mg.lp[1][1].lm[0][0][2]',1,2,3,'mg.lp[1][1].lm[0][1][0]',1,2,3,'mg.lp[1][1].lm[0][1][1]',1,2,3,'mg.lp[1][1].lm[0][1][2]',1,2,3,'mg.lp[1][1].lm[0][2][0]',1,2,3, 'mg.lp[1][1].lm[0][2][1]',1,2,3,'mg.lp[1][1].lm[0][2][2]',1,2,3,'mg.lq.li',1,'mg.lq.lk+2','mg.lq.lk+3','mg.lq.lm[0][0][1]','mg.lq.lk+5','mg.lq.lk+6', 'mg.lq.lk+7','mg.lq.lm[0][0][2]',1,2,3,'mg.lq.lm[0][1][0]',1,2,3,'mg.lq.lm[0][1][1]',1,2,3,'mg.lq.lm[0][1][2]',1,2,3,'mg.lq.lm[0][2][0]',1,2,3, 'mg.lq.lm[0][2][1]',1,2,3,'mg.lq.lm[0][2][2]',1,2,3,'mg.lr',1,2,3,4,5,6,7,'mg.ls',1,2,3,4,5,6,7,'mg.lt','mg+301','mg.lu',1,'mg.lv',1,'mg.lw','mg.lx', 'mg.ly[0][0][0][0]','mg.ly[0][0][1][0]','mg.ly[0][1][0][0]','mg.ly[0][1][1][0]','mg.ly[0][2][0][0]','mg.ly[0][2][1][0]','mg.lz','mg+315','mg.ma',1,2,3,'mg.mb', 1,2,3,'mg.mc',1,2,3,'mg.md[0][0]',1,2,3,4,5,6,7,'mg.md[1][0]',1,2,3,4,5,6,7,'mg.me[0]',1,'mg.mf[0]',1,'mg.mf[1]',1,'mg.mf[2]',1,'mh.kd',1,2,3,'mh.ke',1,2,3,4,5, 6,7,'mh.kf',1,2,3,'mh.kg',1,2,3,'mh.kh',1,'mh.ki','mh+23','mh.kw.kj[0][0]',1,2,3,'mh.kw.kj[0][1]',1,2,3,'mh.kw.kj[1][0]',1,2,3,'mh.kw.kj[1][1]',1,2,3, 'mh.kw.kj[2][0]',1,2,3,'mh.kw.kj[2][1]',1,2,3,'mh.kx',1,2,3,4,5,6,7,'mh.ky',1,2,3,'mh.lf[0][1]',5,6,7,'mh.lc[1]',1,2,3,4,5,6,7,'mh.ld[0][0][2]',1,2,3,4,5,6,7, 'mh.ld[1][0][0]',1,2,3,4,5,6,7,'mh.ld[1][0][1]',1,2,3,4,5,6,7,'mh.ld[1][0][2]',1,2,3,4,5,6,7,'mh.lp[0][0].li',1,'mh.lp[0][0].lk+2','mh.lp[0][0].lk+3', 'mh.lp[0][0].lm[0][0][1]','mh.lp[0][0].lk+5','mh.lp[0][0].lk+6','mh.lp[0][0].lk+7','mh.lp[0][0].lm[0][0][2]',1,2,3,'mh.lp[0][0].lm[0][1][0]',1,2,3, 'mh.lp[0][0].lm[0][1][1]',1,2,3,'mh.lp[0][0].lm[0][1][2]',1,2,3,'mh.lp[0][0].lm[0][2][0]',1,2,3,'mh.lp[0][0].lm[0][2][1]',1,2,3,'mh.lp[0][0].lm[0][2][2]',1,2,3, 'mh.lp[0][1].li',1,'mh.lp[0][1].lk+2','mh.lp[0][1].lk+3','mh.lp[0][1].lm[0][0][1]','mh.lp[0][1].lk+5','mh.lp[0][1].lk+6','mh.lp[0][1].lk+7', 'mh.lp[0][1].lm[0][0][2]',1,2,3,'mh.lp[0][1].lm[0][1][0]',1,2,3,'mh.lp[0][1].lm[0][1][1]',1,2,3,'mh.lp[0][1].lm[0][1][2]',1,2,3,'mh.lp[0][1].lm[0][2][0]',1,2,3, 'mh.lp[0][1].lm[0][2][1]',1,2,3,'mh.lp[0][1].lm[0][2][2]',1,2,3,'mh.lp[1][0].li',1,'mh.lp[1][0].lk+2','mh.lp[1][0].lk+3','mh.lp[1][0].lm[0][0][1]', 'mh.lp[1][0].lk+5','mh.lp[1][0].lk+6','mh.lp[1][0].lk+7','mh.lp[1][0].lm[0][0][2]',1,2,3,'mh.lp[1][0].lm[0][1][0]',1,2,3,'mh.lp[1][0].lm[0][1][1]',1,2,3, 'mh.lp[1][0].lm[0][1][2]',1,2,3,'mh.lp[1][0].lm[0][2][0]',1,2,3,'mh.lp[1][0].lm[0][2][1]',1,2,3,'mh.lp[1][0].lm[0][2][2]',1,2,3,'mh.lp[1][1].li',1, 'mh.lp[1][1].lk+2','mh.lp[1][1].lk+3','mh.lp[1][1].lm[0][0][1]','mh.lp[1][1].lk+5','mh.lp[1][1].lk+6','mh.lp[1][1].lk+7','mh.lp[1][1].lm[0][0][2]',1,2,3, 'mh.lp[1][1].lm[0][1][0]',1,2,3,'mh.lp[1][1].lm[0][1][1]',1,2,3,'mh.lp[1][1].lm[0][1][2]',1,2,3,'mh.lp[1][1].lm[0][2][0]',1,2,3,'mh.lp[1][1].lm[0][2][1]',1,2,3, 'mh.lp[1][1].lm[0][2][2]',1,2,3,'mh.lq.li',1,'mh.lq.lk+2','mh.lq.lk+3','mh.lq.lm[0][0][1]','mh.lq.lk+5','mh.lq.lk+6','mh.lq.lk+7','mh.lq.lm[0][0][2]',1,2,3, 'mh.lq.lm[0][1][0]',1,2,3,'mh.lq.lm[0][1][1]',1,2,3,'mh.lq.lm[0][1][2]',1,2,3,'mh.lq.lm[0][2][0]',1,2,3,'mh.lq.lm[0][2][1]',1,2,3,'mh.lq.lm[0][2][2]',1,2,3, 'mh.lr',1,2,3,4,5,6,7,'mh.ls',1,2,3,4,5,6,7,'mh.lt','mh+301','mh.lu',1,'mh.lv',1,'mh.lw','mh.lx','mh.ly[0][0][0][0]','mh.ly[0][0][1][0]','mh.ly[0][1][0][0]', 'mh.ly[0][1][1][0]','mh.ly[0][2][0][0]','mh.ly[0][2][1][0]','mh.lz','mh+315','mh.ma',1,2,3,'mh.mb',1,2,3,'mh.mc',1,2,3,'mh.md[0][0]',1,2,3,4,5,6,7, 'mh.md[1][0]',1,2,3,4,5,6,7,'mh.me[0]',1,'mh.mf[0]',1,'mh.mf[1]',1,'mh.mf[2]',1,'mi.kd',1,2,3,'mi.ke',1,2,3,4,5,6,7,'mi.kf',1,2,3,'mi.kg',1,2,3,'mi.kh',1, 'mi.ki','mi+23','mi.kw.kj[0][0]',1,2,3,'mi.kw.kj[0][1]',1,2,3,'mi.kw.kj[1][0]',1,2,3,'mi.kw.kj[1][1]',1,2,3,'mi.kw.kj[2][0]',1,2,3,'mi.kw.kj[2][1]',1,2,3, 'mi.kx',1,2,3,4,5,6,7,'mi.ky',1,2,3,'mi.lf[0][1]',5,6,7,'mi.lc[1]',1,2,3,4,5,6,7,'mi.ld[0][0][2]',1,2,3,4,5,6,7,'mi.ld[1][0][0]',1,2,3,4,5,6,7,'mi.ld[1][0][1]', 1,2,3,4,5,6,7,'mi.ld[1][0][2]',1,2,3,4,5,6,7,'mi.lp[0][0].li',1,'mi.lp[0][0].lk+2','mi.lp[0][0].lk+3','mi.lp[0][0].lm[0][0][1]','mi.lp[0][0].lk+5', 'mi.lp[0][0].lk+6','mi.lp[0][0].lk+7','mi.lp[0][0].lm[0][0][2]',1,2,3,'mi.lp[0][0].lm[0][1][0]',1,2,3,'mi.lp[0][0].lm[0][1][1]',1,2,3,'mi.lp[0][0].lm[0][1][2]', 1,2,3,'mi.lp[0][0].lm[0][2][0]',1,2,3,'mi.lp[0][0].lm[0][2][1]',1,2,3,'mi.lp[0][0].lm[0][2][2]',1,2,3,'mi.lp[0][1].li',1,'mi.lp[0][1].lk+2','mi.lp[0][1].lk+3', 'mi.lp[0][1].lm[0][0][1]','mi.lp[0][1].lk+5','mi.lp[0][1].lk+6','mi.lp[0][1].lk+7','mi.lp[0][1].lm[0][0][2]',1,2,3,'mi.lp[0][1].lm[0][1][0]',1,2,3, 'mi.lp[0][1].lm[0][1][1]',1,2,3,'mi.lp[0][1].lm[0][1][2]',1,2,3,'mi.lp[0][1].lm[0][2][0]',1,2,3,'mi.lp[0][1].lm[0][2][1]',1,2,3,'mi.lp[0][1].lm[0][2][2]',1,2,3, 'mi.lp[1][0].li',1,'mi.lp[1][0].lk+2','mi.lp[1][0].lk+3','mi.lp[1][0].lm[0][0][1]','mi.lp[1][0].lk+5','mi.lp[1][0].lk+6','mi.lp[1][0].lk+7', 'mi.lp[1][0].lm[0][0][2]',1,2,3,'mi.lp[1][0].lm[0][1][0]',1,2,3,'mi.lp[1][0].lm[0][1][1]',1,2,3,'mi.lp[1][0].lm[0][1][2]',1,2,3,'mi.lp[1][0].lm[0][2][0]',1,2,3, 'mi.lp[1][0].lm[0][2][1]',1,2,3,'mi.lp[1][0].lm[0][2][2]',1,2,3,'mi.lp[1][1].li',1,'mi.lp[1][1].lk+2','mi.lp[1][1].lk+3','mi.lp[1][1].lm[0][0][1]', 'mi.lp[1][1].lk+5','mi.lp[1][1].lk+6','mi.lp[1][1].lk+7','mi.lp[1][1].lm[0][0][2]',1,2,3,'mi.lp[1][1].lm[0][1][0]',1,2,3,'mi.lp[1][1].lm[0][1][1]',1,2,3, 'mi.lp[1][1].lm[0][1][2]',1,2,3,'mi.lp[1][1].lm[0][2][0]',1,2,3,'mi.lp[1][1].lm[0][2][1]',1,2,3,'mi.lp[1][1].lm[0][2][2]',1,2,3,'mi.lq.li',1,'mi.lq.lk+2', 'mi.lq.lk+3','mi.lq.lm[0][0][1]','mi.lq.lk+5','mi.lq.lk+6','mi.lq.lk+7','mi.lq.lm[0][0][2]',1,2,3,'mi.lq.lm[0][1][0]',1,2,3,'mi.lq.lm[0][1][1]',1,2,3, 'mi.lq.lm[0][1][2]',1,2,3,'mi.lq.lm[0][2][0]',1,2,3,'mi.lq.lm[0][2][1]',1,2,3,'mi.lq.lm[0][2][2]',1,2,3,'mi.lr',1,2,3,4,5,6,7,'mi.ls',1,2,3,4,5,6,7,'mi.lt', 'mi+301','mi.lu',1,'mi.lv',1,'mi.lw','mi.lx','mi.ly[0][0][0][0]','mi.ly[0][0][1][0]','mi.ly[0][1][0][0]','mi.ly[0][1][1][0]','mi.ly[0][2][0][0]', 'mi.ly[0][2][1][0]','mi.lz','mi+315','mi.ma',1,2,3,'mi.mb',1,2,3,'mi.mc',1,2,3,'mi.md[0][0]',1,2,3,4,5,6,7,'mi.md[1][0]',1,2,3,4,5,6,7,'mi.me[0]',1,'mi.mf[0]', 1,'mi.mf[1]',1,'mi.mf[2]',1,'mj',1,2,3,4,5,6,7,'ou[0][0].mk[0]',1,2,3,4,5,6,7,'ou[0][0].mk[1]',1,2,3,4,5,6,7,'ou[0][0].ms',1,'ou[0][0].mt',1,'ou[0][0].mu[0]',1, 'ou[0][0].mu[1]',1,'ou[0][0].mw[1][0]',1,2,3,'ou[0][0].nq.nc',1,2,3,4,5,6,7,'ou[0][0].nq.nd',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.nf',1,2,3,4,5,6,7,'ou[0][0].nq.ng',1,'ou[0][0].nq.nh',1,'ou[0][0].nq.ni',1,'ou[0][0].nq.nj',1,2,3, 'ou[0][0].nq.nk',1,2,3,'ou[0][0].nq.nl',1,2,3,'ou[0][0].nq.nm',1,'ou[0][0].nq.nn',1,2,3,4,5,6,7,'ou[0][0].nq.no',1,'ou[0][0].nq.np',1,2,3,'ou[0][0].nr[0][0]',1, 'ou[0][0].nx[1]',3,'ou[0][0].oa[0][2]',5,'ou[0][0].oa[1][0]',7,'ou[0][0].oa[1][1]',1,'ou[0][0].oa[1][2]',1,'ou[0][0].oa[2][0]',1,'ou[0][0].oa[2][1]',1, 'ou[0][0].oa[2][2]',1,'ou[0][0].og[0]',1,2,3,'ou[0][0].og[1]',1,2,3,'ou[0][0].oh','ou[0][0].os[1][0]','ou[0][0].oj[1]',3,'ou[0][0].om[1]','ou[0][0].ok+5', 'ou[0][0].ok+6','ou[0][0].ok+7','ou[0][0].ol[0][1]',1,2,3,4,5,6,7,'ou[0][0].ol[0][2]',1,2,3,4,5,6,7,'ov.mk[0]',1,2,3,4,5,6,7,'ov.mk[1]',1,2,3,4,5,6,7,'ov.ms',1, 'ov.mt',1,'ov.mu[0]',1,'ov.mu[1]',1,'ov.mw[1][0]',1,2,3,'ov.nq.nc',1,2,3,4,5,6,7,'ov.nq.nd',1,2,3,4,5,6,7,'ov.nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][1][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ov.nq.nf', 1,2,3,4,5,6,7,'ov.nq.ng',1,'ov.nq.nh',1,'ov.nq.ni',1,'ov.nq.nj',1,2,3,'ov.nq.nk',1,2,3,'ov.nq.nl',1,2,3,'ov.nq.nm',1,'ov.nq.nn',1,2,3,4,5,6,7,'ov.nq.no',1, 'ov.nq.np',1,2,3,'ov.nr[0][0]',1,'ov.nx[1]',3,'ov.oa[0][2]',5,'ov.oa[1][0]',7,'ov.oa[1][1]',1,'ov.oa[1][2]',1,'ov.oa[2][0]',1,'ov.oa[2][1]',1,'ov.oa[2][2]',1, 'ov.og[0]',1,2,3,'ov.og[1]',1,2,3,'ov.oh','ov.os[1][0]','ov.oj[1]',3,'ov.om[1]','ov.ok+5','ov.ok+6','ov.ok+7','ov.ol[0][1]',1,2,3,4,5,6,7,'ov.ol[0][2]',1,2,3,4, 5,6,7,'ow[0][0].mk[0]',1,2,3,4,5,6,7,'ow[0][0].mk[1]',1,2,3,4,5,6,7,'ow[0][0].ms',1,'ow[0][0].mt',1,'ow[0][0].mu[0]',1,'ow[0][0].mu[1]',1,'ow[0][0].mw[1][0]',1, 2,3,'ow[0][0].nq.nc',1,2,3,4,5,6,7,'ow[0][0].nq.nd',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.nf',1, 2,3,4,5,6,7,'ow[0][0].nq.ng',1,'ow[0][0].nq.nh',1,'ow[0][0].nq.ni',1,'ow[0][0].nq.nj',1,2,3,'ow[0][0].nq.nk',1,2,3,'ow[0][0].nq.nl',1,2,3,'ow[0][0].nq.nm',1, 'ow[0][0].nq.nn',1,2,3,4,5,6,7,'ow[0][0].nq.no',1,'ow[0][0].nq.np',1,2,3,'ow[0][0].nr[0][0]',1,'ow[0][0].nx[1]',3,'ow[0][0].oa[0][2]',5,'ow[0][0].oa[1][0]',7, 'ow[0][0].oa[1][1]',1,'ow[0][0].oa[1][2]',1,'ow[0][0].oa[2][0]',1,'ow[0][0].oa[2][1]',1,'ow[0][0].oa[2][2]',1,'ow[0][0].og[0]',1,2,3,'ow[0][0].og[1]',1,2,3, 'ow[0][0].oh','ow[0][0].os[1][0]','ow[0][0].oj[1]',3,'ow[0][0].om[1]','ow[0][0].ok+5','ow[0][0].ok+6','ow[0][0].ok+7','ow[0][0].ol[0][1]',1,2,3,4,5,6,7, 'ow[0][0].ol[0][2]',1,2,3,4,5,6,7,'ow[0][1].mk[0]',1,2,3,4,5,6,7,'ow[0][1].mk[1]',1,2,3,4,5,6,7,'ow[0][1].ms',1,'ow[0][1].mt',1,'ow[0][1].mu[0]',1, 'ow[0][1].mu[1]',1,'ow[0][1].mw[1][0]',1,2,3,'ow[0][1].nq.nc',1,2,3,4,5,6,7,'ow[0][1].nq.nd',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[0][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[0][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.nf',1,2,3,4,5,6,7,'ow[0][1].nq.ng',1,'ow[0][1].nq.nh',1,'ow[0][1].nq.ni',1,'ow[0][1].nq.nj',1,2,3, 'ow[0][1].nq.nk',1,2,3,'ow[0][1].nq.nl',1,2,3,'ow[0][1].nq.nm',1,'ow[0][1].nq.nn',1,2,3,4,5,6,7,'ow[0][1].nq.no',1,'ow[0][1].nq.np',1,2,3,'ow[0][1].nr[0][0]',1, 'ow[0][1].nx[1]',3,'ow[0][1].oa[0][2]',5,'ow[0][1].oa[1][0]',7,'ow[0][1].oa[1][1]',1,'ow[0][1].oa[1][2]',1,'ow[0][1].oa[2][0]',1,'ow[0][1].oa[2][1]',1, 'ow[0][1].oa[2][2]',1,'ow[0][1].og[0]',1,2,3,'ow[0][1].og[1]',1,2,3,'ow[0][1].oh','ow[0][1].os[1][0]','ow[0][1].oj[1]',3,'ow[0][1].om[1]','ow[0][1].ok+5', 'ow[0][1].ok+6','ow[0][1].ok+7','ow[0][1].ol[0][1]',1,2,3,4,5,6,7,'ow[0][1].ol[0][2]',1,2,3,4,5,6,7,'ow[1][0].mk[0]',1,2,3,4,5,6,7,'ow[1][0].mk[1]',1,2,3,4,5,6, 7,'ow[1][0].ms',1,'ow[1][0].mt',1,'ow[1][0].mu[0]',1,'ow[1][0].mu[1]',1,'ow[1][0].mw[1][0]',1,2,3,'ow[1][0].nq.nc',1,2,3,4,5,6,7,'ow[1][0].nq.nd',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][0][0]',1, 2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.nf',1,2,3,4,5,6,7,'ow[1][0].nq.ng',1,'ow[1][0].nq.nh',1, 'ow[1][0].nq.ni',1,'ow[1][0].nq.nj',1,2,3,'ow[1][0].nq.nk',1,2,3,'ow[1][0].nq.nl',1,2,3,'ow[1][0].nq.nm',1,'ow[1][0].nq.nn',1,2,3,4,5,6,7,'ow[1][0].nq.no',1, 'ow[1][0].nq.np',1,2,3,'ow[1][0].nr[0][0]',1,'ow[1][0].nx[1]',3,'ow[1][0].oa[0][2]',5,'ow[1][0].oa[1][0]',7,'ow[1][0].oa[1][1]',1,'ow[1][0].oa[1][2]',1, 'ow[1][0].oa[2][0]',1,'ow[1][0].oa[2][1]',1,'ow[1][0].oa[2][2]',1,'ow[1][0].og[0]',1,2,3,'ow[1][0].og[1]',1,2,3,'ow[1][0].oh','ow[1][0].os[1][0]', 'ow[1][0].oj[1]',3,'ow[1][0].om[1]','ow[1][0].ok+5','ow[1][0].ok+6','ow[1][0].ok+7','ow[1][0].ol[0][1]',1,2,3,4,5,6,7,'ow[1][0].ol[0][2]',1,2,3,4,5,6,7, 'ow[1][1].mk[0]',1,2,3,4,5,6,7,'ow[1][1].mk[1]',1,2,3,4,5,6,7,'ow[1][1].ms',1,'ow[1][1].mt',1,'ow[1][1].mu[0]',1,'ow[1][1].mu[1]',1,'ow[1][1].mw[1][0]',1,2,3, 'ow[1][1].nq.nc',1,2,3,4,5,6,7,'ow[1][1].nq.nd',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[1][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.nf',1, 2,3,4,5,6,7,'ow[1][1].nq.ng',1,'ow[1][1].nq.nh',1,'ow[1][1].nq.ni',1,'ow[1][1].nq.nj',1,2,3,'ow[1][1].nq.nk',1,2,3,'ow[1][1].nq.nl',1,2,3,'ow[1][1].nq.nm',1, 'ow[1][1].nq.nn',1,2,3,4,5,6,7,'ow[1][1].nq.no',1,'ow[1][1].nq.np',1,2,3,'ow[1][1].nr[0][0]',1,'ow[1][1].nx[1]',3,'ow[1][1].oa[0][2]',5,'ow[1][1].oa[1][0]',7, 'ow[1][1].oa[1][1]',1,'ow[1][1].oa[1][2]',1,'ow[1][1].oa[2][0]',1,'ow[1][1].oa[2][1]',1,'ow[1][1].oa[2][2]',1,'ow[1][1].og[0]',1,2,3,'ow[1][1].og[1]',1,2,3, 'ow[1][1].oh','ow[1][1].os[1][0]','ow[1][1].oj[1]',3,'ow[1][1].om[1]','ow[1][1].ok+5','ow[1][1].ok+6','ow[1][1].ok+7','ow[1][1].ol[0][1]',1,2,3,4,5,6,7, 'ow[1][1].ol[0][2]',1,2,3,4,5,6,7,'ow[2][0].mk[0]',1,2,3,4,5,6,7,'ow[2][0].mk[1]',1,2,3,4,5,6,7,'ow[2][0].ms',1,'ow[2][0].mt',1,'ow[2][0].mu[0]',1, 'ow[2][0].mu[1]',1,'ow[2][0].mw[1][0]',1,2,3,'ow[2][0].nq.nc',1,2,3,4,5,6,7,'ow[2][0].nq.nd',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[2][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[2][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.nf',1,2,3,4,5,6,7,'ow[2][0].nq.ng',1,'ow[2][0].nq.nh',1,'ow[2][0].nq.ni',1,'ow[2][0].nq.nj',1,2,3, 'ow[2][0].nq.nk',1,2,3,'ow[2][0].nq.nl',1,2,3,'ow[2][0].nq.nm',1,'ow[2][0].nq.nn',1,2,3,4,5,6,7,'ow[2][0].nq.no',1,'ow[2][0].nq.np',1,2,3,'ow[2][0].nr[0][0]',1, 'ow[2][0].nx[1]',3,'ow[2][0].oa[0][2]',5,'ow[2][0].oa[1][0]',7,'ow[2][0].oa[1][1]',1,'ow[2][0].oa[1][2]',1,'ow[2][0].oa[2][0]',1,'ow[2][0].oa[2][1]',1, 'ow[2][0].oa[2][2]',1,'ow[2][0].og[0]',1,2,3,'ow[2][0].og[1]',1,2,3,'ow[2][0].oh','ow[2][0].os[1][0]','ow[2][0].oj[1]',3,'ow[2][0].om[1]','ow[2][0].ok+5', 'ow[2][0].ok+6','ow[2][0].ok+7','ow[2][0].ol[0][1]',1,2,3,4,5,6,7,'ow[2][0].ol[0][2]',1,2,3,4,5,6,7,'ow[2][1].mk[0]',1,2,3,4,5,6,7,'ow[2][1].mk[1]',1,2,3,4,5,6, 7,'ow[2][1].ms',1,'ow[2][1].mt',1,'ow[2][1].mu[0]',1,'ow[2][1].mu[1]',1,'ow[2][1].mw[1][0]',1,2,3,'ow[2][1].nq.nc',1,2,3,4,5,6,7,'ow[2][1].nq.nd',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][0][0]',1, 2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.nf',1,2,3,4,5,6,7,'ow[2][1].nq.ng',1,'ow[2][1].nq.nh',1, 'ow[2][1].nq.ni',1,'ow[2][1].nq.nj',1,2,3,'ow[2][1].nq.nk',1,2,3,'ow[2][1].nq.nl',1,2,3,'ow[2][1].nq.nm',1,'ow[2][1].nq.nn',1,2,3,4,5,6,7,'ow[2][1].nq.no',1, 'ow[2][1].nq.np',1,2,3,'ow[2][1].nr[0][0]',1,'ow[2][1].nx[1]',3,'ow[2][1].oa[0][2]',5,'ow[2][1].oa[1][0]',7,'ow[2][1].oa[1][1]',1,'ow[2][1].oa[1][2]',1, 'ow[2][1].oa[2][0]',1,'ow[2][1].oa[2][1]',1,'ow[2][1].oa[2][2]',1,'ow[2][1].og[0]',1,2,3,'ow[2][1].og[1]',1,2,3,'ow[2][1].oh','ow[2][1].os[1][0]', 'ow[2][1].oj[1]',3,'ow[2][1].om[1]','ow[2][1].ok+5','ow[2][1].ok+6','ow[2][1].ok+7','ow[2][1].ol[0][1]',1,2,3,4,5,6,7,'ow[2][1].ol[0][2]',1,2,3,4,5,6,7,'ox',1, 'oz[0][1]',1,'oz[1][0]',1,'oz[1][1]',1,'pg',1,'ph',1,2,3,'pi',1,2,3,'pj[0][0][0]',1,2,3,'pj[0][0][1]',1,2,3,'pj[0][1][0]',1,2,3,'pj[0][1][1]',1,2,3, 'pj[0][2][0]',1,2,3,'pj[0][2][1]',1,2,3,'pk',1,2,3,'pl',1,2,3,'pm[0][0][0][0]',1,2,3,'pm[0][0][0][1]',1,2,3,'pm[0][1][0][0]',1,2,3,'pm[0][1][0][1]',1,2,3, 'pm[1][0][0][0]',1,2,3,'pm[1][0][0][1]',1,2,3,'pm[1][1][0][0]',1,2,3,'pm[1][1][0][1]',1,2,3,'pm[2][0][0][0]',1,2,3,'pm[2][0][0][1]',1,2,3,'pm[2][1][0][0]',1,2, 3,'pm[2][1][0][1]',1,2,3,'pn','po','pp',1,2,3,'pq',1,'pr',1,'pz[0][1]','ps[0][0][0]+3','pt[1]','ps[0][0][0]+5','ps[0][0][0]+6','ps[0][0][0]+7','ps[0][0][1]',1, 2,3,4,5,6,7,'ps[1][0][0]',1,2,3,4,5,6,7,'ps[1][0][1]',1,2,3,4,5,6,7,'ps[2][0][0]',1,2,3,4,5,6,7,'ps[2][0][1]',1,2,3,4,5,6,7,'qi.qa',1,2,3,'qi.qe[1][0]',5,6,7, 'qj',1,'qp+2','qp+3','qr[0][1]','qp+5','qp+6','qp+7','qt',1,2,3,'qu',1,2,3,'rg.qv',1,2,3,4,5,6,7,'rg.qw',1,2,3,4,5,6,7,'rg.qx[0]',1,2,3,4,5,6,7,'rg.qx[1]',1,2, 3,4,5,6,7,'rg.qx[2]',1,2,3,4,5,6,7,'rg.qy',1,2,3,'rg.qz',1,2,3,'rg.ra[0][0][0][0]',1,2,3,'rg.ra[0][0][1][0]',1,2,3,'rg.ra[0][0][2][0]',1,2,3, 'rg.ra[0][1][0][0]',1,2,3,'rg.ra[0][1][1][0]',1,2,3,'rg.ra[0][1][2][0]',1,2,3,'rg.ra[0][2][0][0]',1,2,3,'rg.ra[0][2][1][0]',1,2,3,'rg.ra[0][2][2][0]',1,2,3, 'rg.rb',1,2,3,4,5,6,7,'rg.rc',1,2,3,4,5,6,7,'rg.rd[0]',1,2,3,'rg.rd[1]',1,2,3,'rg.re',1,2,3,4,5,6,7,'rg.rf[0][0]',1,2,3,4,5,6,7,'rg.rf[1][0]',1,2,3,4,5,6,7, 'rh.qv',1,2,3,4,5,6,7,'rh.qw',1,2,3,4,5,6,7,'rh.qx[0]',1,2,3,4,5,6,7,'rh.qx[1]',1,2,3,4,5,6,7,'rh.qx[2]',1,2,3,4,5,6,7,'rh.qy',1,2,3,'rh.qz',1,2,3, 'rh.ra[0][0][0][0]',1,2,3,'rh.ra[0][0][1][0]',1,2,3,'rh.ra[0][0][2][0]',1,2,3,'rh.ra[0][1][0][0]',1,2,3,'rh.ra[0][1][1][0]',1,2,3,'rh.ra[0][1][2][0]',1,2,3, 'rh.ra[0][2][0][0]',1,2,3,'rh.ra[0][2][1][0]',1,2,3,'rh.ra[0][2][2][0]',1,2,3,'rh.rb',1,2,3,4,5,6,7,'rh.rc',1,2,3,4,5,6,7,'rh.rd[0]',1,2,3,'rh.rd[1]',1,2,3, 'rh.re',1,2,3,4,5,6,7,'rh.rf[0][0]',1,2,3,4,5,6,7,'rh.rf[1][0]',1,2,3,4,5,6,7,'ri','+3171','rs[0].rj','rs[0].rq[1]','rs[0].rq[2]',3,4,5,6,7,'rs[0].rk[0][1]',1, 2,3,4,5,6,7,'rs[0].rk[0][2]',1,2,3,4,5,6,7,'rt[0].rj','rt[0].rq[1]','rt[0].rq[2]',3,4,5,6,7,'rt[0].rk[0][1]',1,2,3,4,5,6,7,'rt[0].rk[0][2]',1,2,3,4,5,6,7, 'ru.rj','ru.rq[1]','ru.rq[2]',3,4,5,6,7,'ru.rk[0][1]',1,2,3,4,5,6,7,'ru.rk[0][2]',1,2,3,4,5,6,7,'rv[0]',1,2,3,4,5,6,7 ], ey=>[ 'ez','fn.fj[0][1][0]','fn.fi[1][0]','fn.fl[1][0][0]','fn.fl[1][1][0]','fn.fl[1][2][0]','fn.fl[2][0][0]','fn.fl[2][1][0]','fn.fl[2][2][0]','fn+9','fq','gg[1]', 'fr[1]',1,'fu[0][1]',1,2,3,'fu[1][0]',1,2,3,'fu[1][1]',1,2,3,'fu[2][0]',1,2,3,'fu[2][1]',1,2,3,'gz',1,2,3,'ha[0]','ha[1]','hb','+41','hc',1,2,3,'hd','+47', 'he[0][0][0][0]',1,2,3,'he[0][0][0][1]',1,2,3,'he[0][0][1][0]',1,2,3,'he[0][0][1][1]',1,2,3,'he[1][0][0][0]',1,2,3,'he[1][0][0][1]',1,2,3,'he[1][0][1][0]',1,2, 3,'he[1][0][1][1]',1,2,3,'hf',1,2,3,'hg',1,2,3,'ii.hh',1,'ii.hi',1,2,3,'ii.ht.hj',1,2,3,'ii.ht.hl[0][0][1]',1,2,3,'ii.ht.hl[0][0][2]',1,2,3,'ii.ht.hl[0][1][0]', 1,2,3,'ii.ht.hl[0][1][1]',1,2,3,'ii.ht.hl[0][1][2]',1,2,3,'ii.ht.hl[0][2][0]',1,2,3,'ii.ht.hl[0][2][1]',1,2,3,'ii.ht.hl[0][2][2]',1,2,3,'ii.ht.hl[1][0][0]',1,2, 3,'ii.ht.hl[1][0][1]',1,2,3,'ii.ht.hl[1][0][2]',1,2,3,'ii.ht.hl[1][1][0]',1,2,3,'ii.ht.hl[1][1][1]',1,2,3,'ii.ht.hl[1][1][2]',1,2,3,'ii.ht.hl[1][2][0]',1,2,3, 'ii.ht.hl[1][2][1]',1,2,3,'ii.ht.hl[1][2][2]',1,2,3,'ii.ht.hl[2][0][0]',1,2,3,'ii.ht.hl[2][0][1]',1,2,3,'ii.ht.hl[2][0][2]',1,2,3,'ii.ht.hl[2][1][0]',1,2,3, 'ii.ht.hl[2][1][1]',1,2,3,'ii.ht.hl[2][1][2]',1,2,3,'ii.ht.hl[2][2][0]',1,2,3,'ii.ht.hl[2][2][1]',1,2,3,'ii.ht.hl[2][2][2]',1,2,3,'ii.hu.hj',1,2,3, 'ii.hu.hl[0][0][1]',1,2,3,'ii.hu.hl[0][0][2]',1,2,3,'ii.hu.hl[0][1][0]',1,2,3,'ii.hu.hl[0][1][1]',1,2,3,'ii.hu.hl[0][1][2]',1,2,3,'ii.hu.hl[0][2][0]',1,2,3, 'ii.hu.hl[0][2][1]',1,2,3,'ii.hu.hl[0][2][2]',1,2,3,'ii.hu.hl[1][0][0]',1,2,3,'ii.hu.hl[1][0][1]',1,2,3,'ii.hu.hl[1][0][2]',1,2,3,'ii.hu.hl[1][1][0]',1,2,3, 'ii.hu.hl[1][1][1]',1,2,3,'ii.hu.hl[1][1][2]',1,2,3,'ii.hu.hl[1][2][0]',1,2,3,'ii.hu.hl[1][2][1]',1,2,3,'ii.hu.hl[1][2][2]',1,2,3,'ii.hu.hl[2][0][0]',1,2,3, 'ii.hu.hl[2][0][1]',1,2,3,'ii.hu.hl[2][0][2]',1,2,3,'ii.hu.hl[2][1][0]',1,2,3,'ii.hu.hl[2][1][1]',1,2,3,'ii.hu.hl[2][1][2]',1,2,3,'ii.hu.hl[2][2][0]',1,2,3, 'ii.hu.hl[2][2][1]',1,2,3,'ii.hu.hl[2][2][2]',1,2,3,'ii.hv','ii.hw','ii.hx[0]',1,2,3,'ii.ig[0][0][0].hy',1,'ii.ig[0][0][0].ie+2','ii.ig[0][0][0].ie+3', 'ii.ig[0][0][0].ie+4','ii.ig[0][0][0].ie+5','ii.ig[0][0][0].ie+6','ii.ig[0][0][0].ie+7','ii.ig[1][0][0].hy',1,'ii.ig[1][0][0].ie+2','ii.ig[1][0][0].ie+3', 'ii.ig[1][0][0].ie+4','ii.ig[1][0][0].ie+5','ii.ig[1][0][0].ie+6','ii.ig[1][0][0].ie+7','ii.ig[2][0][0].hy',1,'ii.ig[2][0][0].ie+2','ii.ig[2][0][0].ie+3', 'ii.ig[2][0][0].ie+4','ii.ig[2][0][0].ie+5','ii.ig[2][0][0].ie+6','ii.ig[2][0][0].ie+7','ii.ih.hy',1,'ii.ih.ie+2','ii.ih.ie+3','ii.ih.ie+4','ii.ih.ie+5', 'ii.ih.ie+6','ii.ih.ie+7','ij.hh',1,'ij.hi',1,2,3,'ij.ht.hj',1,2,3,'ij.ht.hl[0][0][1]',1,2,3,'ij.ht.hl[0][0][2]',1,2,3,'ij.ht.hl[0][1][0]',1,2,3, 'ij.ht.hl[0][1][1]',1,2,3,'ij.ht.hl[0][1][2]',1,2,3,'ij.ht.hl[0][2][0]',1,2,3,'ij.ht.hl[0][2][1]',1,2,3,'ij.ht.hl[0][2][2]',1,2,3,'ij.ht.hl[1][0][0]',1,2,3, 'ij.ht.hl[1][0][1]',1,2,3,'ij.ht.hl[1][0][2]',1,2,3,'ij.ht.hl[1][1][0]',1,2,3,'ij.ht.hl[1][1][1]',1,2,3,'ij.ht.hl[1][1][2]',1,2,3,'ij.ht.hl[1][2][0]',1,2,3, 'ij.ht.hl[1][2][1]',1,2,3,'ij.ht.hl[1][2][2]',1,2,3,'ij.ht.hl[2][0][0]',1,2,3,'ij.ht.hl[2][0][1]',1,2,3,'ij.ht.hl[2][0][2]',1,2,3,'ij.ht.hl[2][1][0]',1,2,3, 'ij.ht.hl[2][1][1]',1,2,3,'ij.ht.hl[2][1][2]',1,2,3,'ij.ht.hl[2][2][0]',1,2,3,'ij.ht.hl[2][2][1]',1,2,3,'ij.ht.hl[2][2][2]',1,2,3,'ij.hu.hj',1,2,3, 'ij.hu.hl[0][0][1]',1,2,3,'ij.hu.hl[0][0][2]',1,2,3,'ij.hu.hl[0][1][0]',1,2,3,'ij.hu.hl[0][1][1]',1,2,3,'ij.hu.hl[0][1][2]',1,2,3,'ij.hu.hl[0][2][0]',1,2,3, 'ij.hu.hl[0][2][1]',1,2,3,'ij.hu.hl[0][2][2]',1,2,3,'ij.hu.hl[1][0][0]',1,2,3,'ij.hu.hl[1][0][1]',1,2,3,'ij.hu.hl[1][0][2]',1,2,3,'ij.hu.hl[1][1][0]',1,2,3, 'ij.hu.hl[1][1][1]',1,2,3,'ij.hu.hl[1][1][2]',1,2,3,'ij.hu.hl[1][2][0]',1,2,3,'ij.hu.hl[1][2][1]',1,2,3,'ij.hu.hl[1][2][2]',1,2,3,'ij.hu.hl[2][0][0]',1,2,3, 'ij.hu.hl[2][0][1]',1,2,3,'ij.hu.hl[2][0][2]',1,2,3,'ij.hu.hl[2][1][0]',1,2,3,'ij.hu.hl[2][1][1]',1,2,3,'ij.hu.hl[2][1][2]',1,2,3,'ij.hu.hl[2][2][0]',1,2,3, 'ij.hu.hl[2][2][1]',1,2,3,'ij.hu.hl[2][2][2]',1,2,3,'ij.hv','ij.hw','ij.hx[0]',1,2,3,'ij.ig[0][0][0].hy',1,'ij.ig[0][0][0].ie+2','ij.ig[0][0][0].ie+3', 'ij.ig[0][0][0].ie+4','ij.ig[0][0][0].ie+5','ij.ig[0][0][0].ie+6','ij.ig[0][0][0].ie+7','ij.ig[1][0][0].hy',1,'ij.ig[1][0][0].ie+2','ij.ig[1][0][0].ie+3', 'ij.ig[1][0][0].ie+4','ij.ig[1][0][0].ie+5','ij.ig[1][0][0].ie+6','ij.ig[1][0][0].ie+7','ij.ig[2][0][0].hy',1,'ij.ig[2][0][0].ie+2','ij.ig[2][0][0].ie+3', 'ij.ig[2][0][0].ie+4','ij.ig[2][0][0].ie+5','ij.ig[2][0][0].ie+6','ij.ig[2][0][0].ie+7','ij.ih.hy',1,'ij.ih.ie+2','ij.ih.ie+3','ij.ih.ie+4','ij.ih.ie+5', 'ij.ih.ie+6','ij.ih.ie+7','ik.hh',1,'ik.hi',1,2,3,'ik.ht.hj',1,2,3,'ik.ht.hl[0][0][1]',1,2,3,'ik.ht.hl[0][0][2]',1,2,3,'ik.ht.hl[0][1][0]',1,2,3, 'ik.ht.hl[0][1][1]',1,2,3,'ik.ht.hl[0][1][2]',1,2,3,'ik.ht.hl[0][2][0]',1,2,3,'ik.ht.hl[0][2][1]',1,2,3,'ik.ht.hl[0][2][2]',1,2,3,'ik.ht.hl[1][0][0]',1,2,3, 'ik.ht.hl[1][0][1]',1,2,3,'ik.ht.hl[1][0][2]',1,2,3,'ik.ht.hl[1][1][0]',1,2,3,'ik.ht.hl[1][1][1]',1,2,3,'ik.ht.hl[1][1][2]',1,2,3,'ik.ht.hl[1][2][0]',1,2,3, 'ik.ht.hl[1][2][1]',1,2,3,'ik.ht.hl[1][2][2]',1,2,3,'ik.ht.hl[2][0][0]',1,2,3,'ik.ht.hl[2][0][1]',1,2,3,'ik.ht.hl[2][0][2]',1,2,3,'ik.ht.hl[2][1][0]',1,2,3, 'ik.ht.hl[2][1][1]',1,2,3,'ik.ht.hl[2][1][2]',1,2,3,'ik.ht.hl[2][2][0]',1,2,3,'ik.ht.hl[2][2][1]',1,2,3,'ik.ht.hl[2][2][2]',1,2,3,'ik.hu.hj',1,2,3, 'ik.hu.hl[0][0][1]',1,2,3,'ik.hu.hl[0][0][2]',1,2,3,'ik.hu.hl[0][1][0]',1,2,3,'ik.hu.hl[0][1][1]',1,2,3,'ik.hu.hl[0][1][2]',1,2,3,'ik.hu.hl[0][2][0]',1,2,3, 'ik.hu.hl[0][2][1]',1,2,3,'ik.hu.hl[0][2][2]',1,2,3,'ik.hu.hl[1][0][0]',1,2,3,'ik.hu.hl[1][0][1]',1,2,3,'ik.hu.hl[1][0][2]',1,2,3,'ik.hu.hl[1][1][0]',1,2,3, 'ik.hu.hl[1][1][1]',1,2,3,'ik.hu.hl[1][1][2]',1,2,3,'ik.hu.hl[1][2][0]',1,2,3,'ik.hu.hl[1][2][1]',1,2,3,'ik.hu.hl[1][2][2]',1,2,3,'ik.hu.hl[2][0][0]',1,2,3, 'ik.hu.hl[2][0][1]',1,2,3,'ik.hu.hl[2][0][2]',1,2,3,'ik.hu.hl[2][1][0]',1,2,3,'ik.hu.hl[2][1][1]',1,2,3,'ik.hu.hl[2][1][2]',1,2,3,'ik.hu.hl[2][2][0]',1,2,3, 'ik.hu.hl[2][2][1]',1,2,3,'ik.hu.hl[2][2][2]',1,2,3,'ik.hv','ik.hw','ik.hx[0]',1,2,3,'ik.ig[0][0][0].hy',1,'ik.ig[0][0][0].ie+2','ik.ig[0][0][0].ie+3', 'ik.ig[0][0][0].ie+4','ik.ig[0][0][0].ie+5','ik.ig[0][0][0].ie+6','ik.ig[0][0][0].ie+7','ik.ig[1][0][0].hy',1,'ik.ig[1][0][0].ie+2','ik.ig[1][0][0].ie+3', 'ik.ig[1][0][0].ie+4','ik.ig[1][0][0].ie+5','ik.ig[1][0][0].ie+6','ik.ig[1][0][0].ie+7','ik.ig[2][0][0].hy',1,'ik.ig[2][0][0].ie+2','ik.ig[2][0][0].ie+3', 'ik.ig[2][0][0].ie+4','ik.ig[2][0][0].ie+5','ik.ig[2][0][0].ie+6','ik.ig[2][0][0].ie+7','ik.ih.hy',1,'ik.ih.ie+2','ik.ih.ie+3','ik.ih.ie+4','ik.ih.ie+5', 'ik.ih.ie+6','ik.ih.ie+7','iu.il','jt.db.bo.bh[0][1]','jt.be.bd[0][1][0]',3,'iu.ir[0][1]',1,'jt.db.cn.ck[0][0][1][1]',3,'iu.ir[1][0]',1, 'jt.db.cn.ck[0][0][2][1]',3,'iu.ir[1][1]','jt.db.bq[0][1].bh[0][1]','jt.be.af[1]',3,'iu.ir[2][0]',1,'jt.be.ah[0][0][0]','jt.be.ah[1][0][0]','iu.ir[2][1]',1, 'jt.db.cn.ck[0][1][2][1]',3,'jr.ji[0][0][1][0]','jt.db.bq[1][0].bh[0][1]','jt.db.bq[1][0].bh[0][2]',3,'jt.be.aj[0][0][0]','jt.be.av','jt.be.aw',7, 'jr.ji[0][0][1][1]','jt.db.cy','jt.db.cz',3,'jt.be.aj[0][0][1]','jt.db.bq[1][1].bh[0][1]','jt.db.bq[1][1].bh[0][2]',7,'jr.ji[0][0][1][2]',1, 'jt.db.da[1][0][1][0]',3,'jt.be.aj[0][1][0]',5,'jt.db.da[2][0][1][0]',7,'jr.ji[0][0][2][0]',1,2,3,'jt.be.aj[0][1][1]',5,6,7,'jr.ji[0][0][2][1]',1,2,3, 'jt.be.aj[0][2][0]',5,6,7,'jr.ji[0][0][2][2]',1,2,3,'jt.be.aj[0][2][1]',5,6,7,'jt.be.az[0][0][2]',5,'jt.db.bv',7,'jt.be.aj[1][0][0]','jt.db.bw[1]', 'jt.db.bw[2]',3,'jt.be.az[0][1][0]',5,'jt.dm[0][1]',7,'jt.be.aj[1][0][1]',1,'jt.dm[0][2]',3,'jt.be.az[0][1][1]',5,'jt.dm[1][0]',7,'jt.be.aj[1][1][0]',1, 'jt.dm[1][1]',3,'jt.be.az[0][1][2]',5,'jt.dm[1][2]',7,'jt.be.aj[1][1][1]',1,'jt.dn',3,'jt.be.az[0][2][0]',5,'jt.dp',7,'jt.be.aj[1][2][0]',1,'jt.dq',3, 'jt.be.az[0][2][1]',5,'jt.dr','jt.ds','jt.be.aj[1][2][1]',1,'jt.du',3,'jt.be.az[0][2][2]',5,'jt.dv',7,'jt.be.aj[2][0][0]',1,'jt.dx[1][0]',3,'jt.be.az[1][0][0]', 5,'jt.dx[2][0]',7,'jt.be.aj[2][0][1]',1,'jt.eb[1][0]',3,'jt.be.az[1][0][1]',5,'jt.eb[1][1]',7,'jt.be.aj[2][1][0]',1,'jt.eb[1][2]',3,'jt.be.az[1][0][2]',5, 'jt.eb[2][0]',7,'jt.be.aj[2][1][1]',1,'jt.eb[2][1]',3,'jt.be.az[1][1][0]',5,'jt.eb[2][2]',7,'jt.be.aj[2][2][0]',1,'jt.ec',3,'jt.be.az[1][1][1]',5,'jt.ee',7, 'jt.be.aj[2][2][1]',1,'jt.ef',3,'jt.be.az[1][1][2]','jt.eh','jt.ei',7,'jt.be.ak',1,'jt.ek',3,'jt.be.az[1][2][0]','jt.el[0][0][1]','jt.el[0][1][0]', 'jt.el[0][1][1]','jt.be.al','jt.be.am','jt.be.an','jt.el[1][1][1]','jt.be.ao','jt.el[2][0][1]','jt.el[2][1][0]','jt.el[2][1][1]','jt.em[0][0][0]', 'jt.em[0][0][1]','jt.em[0][1][0]','jt.em[0][1][1]','jt.be.az[1][2][2]','jt.em[0][2][1]','jt.em[1][0][0]','jt.em[1][0][1]','jt.em[1][1][0]','jt.em[1][1][1]', 'jt.em[1][2][0]','jt.em[1][2][1]','jt.be.ba',1,2,3,'jt.eo',5,'jt.ep',7,'jt.be.bb',1,'jt.ev.eq',3,2,3,'jt.ev.eu+4','jt.ev.eu+5','jt.ev.eu+6','jt.ev.eu+7', 'jt.ew.eq',1,2,3,'jt.ew.eu+4','jt.ew.eu+5','jt.ew.eu+6','jt.ew.eu+7','jt.ex',1,2,3 ], aa=>[ 'ab','db.bo.bh[0][1]','be.bd[0][1][0]',3,'be.ad',5,'db.cn.ck[0][0][1][1]',7,'be.ae',1,'db.cn.ck[0][0][2][1]',3,'be.af[0]','db.bq[0][1].bh[0][1]','be.af[1]',1, 'be.ag',1,'be.ah[0][0][0]','be.ah[1][0][0]','be.ai',1,'db.cn.ck[0][1][2][1]',3,'be.at[2]','db.bq[1][0].bh[0][1]','db.bq[1][0].bh[0][2]',7,'be.aj[0][0][0]', 'be.av','be.aw',3,'be.ax[0][0][0]','db.cy','db.cz',7,'be.aj[0][0][1]','db.bq[1][1].bh[0][1]','db.bq[1][1].bh[0][2]',3,'be.ax[0][0][1]',5,'db.da[1][0][1][0]',7, 'be.aj[0][1][0]',1,'db.da[2][0][1][0]',3,'be.ay',5,6,7,'be.aj[0][1][1]',1,2,3,'be.az[0][0][0]',5,6,7,'be.aj[0][2][0]',1,2,3,'be.az[0][0][1]',5,6,7, 'be.aj[0][2][1]',1,2,3,'be.az[0][0][2]',5,'db.bv',7,'be.aj[1][0][0]','db.bw[1]','db.bw[2]',3,'be.az[0][1][0]',5,'dm[0][1]',7,'be.aj[1][0][1]',1,'dm[0][2]',3, 'be.az[0][1][1]',5,'dm[1][0]',7,'be.aj[1][1][0]',1,'dm[1][1]',3,'be.az[0][1][2]',5,'dm[1][2]',7,'be.aj[1][1][1]',1,'dn',3,'be.az[0][2][0]',5,'dp',7, 'be.aj[1][2][0]',1,'dq',3,'be.az[0][2][1]',5,'dr','ds','be.aj[1][2][1]',1,'du',3,'be.az[0][2][2]',5,'dv',7,'be.aj[2][0][0]',1,'dx[1][0]',3,'be.az[1][0][0]',5, 'dx[2][0]',7,'be.aj[2][0][1]',1,'eb[1][0]',3,'be.az[1][0][1]',5,'eb[1][1]',7,'be.aj[2][1][0]',1,'eb[1][2]',3,'be.az[1][0][2]',5,'eb[2][0]',7,'be.aj[2][1][1]',1, 'eb[2][1]',3,'be.az[1][1][0]',5,'eb[2][2]',7,'be.aj[2][2][0]',1,'ec',3,'be.az[1][1][1]',5,'ee',7,'be.aj[2][2][1]',1,'ef',3,'be.az[1][1][2]','eh','ei',7,'be.ak', 1,'ek',3,'be.az[1][2][0]','el[0][0][1]','el[0][1][0]','el[0][1][1]','be.al','be.am','be.an','el[1][1][1]','be.ao','el[2][0][1]','el[2][1][0]','el[2][1][1]', 'em[0][0][0]','em[0][0][1]','em[0][1][0]','em[0][1][1]','be.az[1][2][2]','em[0][2][1]','em[1][0][0]','em[1][0][1]','em[1][1][0]','em[1][1][1]','em[1][2][0]', 'em[1][2][1]','be.ba',1,2,3,'eo',5,'ep',7,'be.bb',1,'ev.eq',3,2,3,'ev.eu+4','ev.eu+5','ev.eu+6','ev.eu+7','ew.eq',1,2,3,'ew.eu+4','ew.eu+5','ew.eu+6','ew.eu+7', 'ex',1,2,3 ], rw=>[ 'rx','uo.sc[1]','uo.sh[0][1]','uo.um.ud','uo.rz[0][1]','aar[0][0].aah[2][0]','uo.sh[1][1]',3,'uo.rz[0][2]','uo.sm','uo.sh[2][1]','uo.so','uo.rz[1][0]',1, 'ux[0][0]',3,'uo.rz[1][1]',1,'ux[0][1]','vh.va[0][0][1]','uo.rz[1][2]','vh.va[0][1][1]','ux[0][2]','vh.va[0][2][1]','uo.sq[1]','vh.vc','ux[1][0]', 'aar[0][0].aao[1]','uo.sr','wi.wg','ux[1][1]',3,'uo.sv[1][0][0][2]','ws.wo[1]','ux[1][2]',3,'uo.sv[1][0][1][0]',1,'uo.to.te[0][0][0][1]',3,'uo.sv[1][0][1][1]', 'aar[0][1].aah[0][0]','uo.to.te[1][0][0][1]','aar[0][1].aah[1][0]','uo.sv[1][0][1][2]','aar[0][1].aah[2][0]','uo.to.tg',3,'uo.to.th',1,'uo.to.ti',1, 'uo.to.tj[0]',1,'ws.wr[2][0]',3,'uo.to.tj[1]',1,'ws.wr[2][2]',3,'uo.to.tk',1,'ye.yb[1][1][0][1]',3,'uo.to.tl','aaf[0][0][0]','ye.yb[1][1][1][1]','aaf[0][2][0]', 'uo.to.tm','aaf[1][1][0]','uo.to.tn','aaf[2][0][0]','vn[0][1][1]','aaf[2][2][0]','ye.yb[2][0][1][1]','uo.um.ue[1][0][2]+7','uo.um.ue[1][1][0]',1, 'ye.yb[2][1][0][1]',3,'vn[0][1][2]','aar[1][0].aah[0][0]','ye.yb[2][1][1][1]','aar[1][0].aah[1][0]','uo.um.ue[1][1][1]','aar[1][0].aah[2][0]','ye.yc[1][0]',3, 'vn[0][2][0]',5,'ye.yd',7,'uo.um.ue[1][1][2]',1,2,3,'vn[0][2][1]',5,6,7,'uo.um.uf',1,2,3,'vn[0][2][2]','aar[1][0].aan','aar[1][0].aao[0]','aar[1][0].aao[1]', 'uo.um.ug',1,'uo.um.uh[0]',1,'vn[1][0][0]',3,'uo.um.uh[1]',1,'aar[1][0].aaq',3,'uo.um.uh[2]',1,'vn[1][0][1]','aar[1][1].aah[0][0]','uo.um.ui', 'aar[1][1].aah[1][0]','aar[1][1].aah[1][1]','aar[1][1].aah[2][0]','aar[1][1].aah[2][1]',5,'vn[1][0][2]',7,'uo.um.uj[0]',1,'aar[1][1].aaj',3,'uo.um.uk[0]', 'uo.um.uk[1]','uo.um.uk[2]','uo.um.ul','up[1][0].rz[0][0]','up[1][0].sc[1]','up[1][0].sh[0][1]','up[1][0].um.ud','up[1][0].rz[0][1]',1,'up[1][0].sh[1][1]', 'aar[1][1].aan','up[1][0].rz[0][2]','up[1][0].sm','up[1][0].sh[2][1]','up[1][0].so','up[1][0].rz[1][0]',1,'vn[1][1][2]',3,'up[1][0].rz[1][1]',1,'aar[1][1].aaq', 3,'up[1][0].rz[1][2]',1,'vn[1][2][0]','aar[2][0].aah[0][0]','up[1][0].sq[1]','aar[2][0].aah[1][0]','aar[2][0].aah[1][1]','aar[2][0].aah[2][0]','up[1][0].sr',1, 'vn[1][2][1]',3,'up[1][0].sv[1][0][0][2]',1,'aar[2][0].aaj',3,'up[1][0].sv[1][0][1][0]',1,'up[1][0].to.te[0][0][0][1]',3,'up[1][0].sv[1][0][1][1]',1, 'up[1][0].to.te[1][0][0][1]',3,'up[1][0].sv[1][0][1][2]',1,'up[1][0].to.tg','aar[2][0].aan','up[1][0].to.th','aar[2][0].aao[1]','up[1][0].to.ti',1, 'up[1][0].to.tj[0]',1,'vn[2][0][1]',3,'up[1][0].to.tj[1]',1,'aar[2][0].aaq',3,'up[1][0].to.tk',1,'vn[2][0][2]','aar[2][1].aah[0][0]','up[1][0].to.tl', 'aar[2][1].aah[1][0]','aar[2][1].aah[1][1]','aar[2][1].aah[2][0]','up[1][0].to.tm',1,'up[1][0].to.tn',1,'up[1][0].um.ue[1][0][2]+4','up[1][0].um.ue[1][0][2]+5', 'aar[2][1].aaj','up[1][0].um.ue[1][0][2]+7','up[1][0].um.ue[1][1][0]',1,'vn[2][1][1]',3,4,5,'aar[2][1].aal',7,'up[1][0].um.ue[1][1][1]',1,'vn[2][1][2]', 'aar[2][1].aan','aar[2][1].aao[0]','aar[2][1].aao[1]','aar[2][1].aap',7,'up[1][0].um.ue[1][1][2]',1,'vn[2][2][0]',3,4,5,'aar[2][1].aaq',7,'up[1][0].um.uf',1, 'vn[2][2][1]',3,4,5,6,7,'up[1][0].um.ug',1,'up[1][0].um.uh[0]',1,2,3,'up[1][0].um.uh[1]',1,2,3,'up[1][0].um.uh[2]',1,2,3,'up[1][0].um.ui',1,2,3,'vp','vq', 'vr[0][0]','vr[1][0]','up[1][0].um.uj[0]','vs',2,3,'up[1][0].um.uk[0]','up[1][0].um.uk[1]','up[1][0].um.uk[2]','up[1][0].um.ul','up[2][0].rz[0][0]', 'up[2][0].sc[1]','up[2][0].sh[0][1]','up[2][0].um.ud','up[2][0].rz[0][1]',1,'up[2][0].sh[1][1]',3,'up[2][0].rz[0][2]','up[2][0].sm','up[2][0].sh[2][1]', 'up[2][0].so','up[2][0].rz[1][0]',1,2,3,'up[2][0].rz[1][1]',1,2,3,'up[2][0].rz[1][2]',1,2,3,'up[2][0].sq[1]',1,2,3,'up[2][0].sr',1,2,3, 'up[2][0].sv[1][0][0][2]',1,2,3,'up[2][0].sv[1][0][1][0]',1,'up[2][0].to.te[0][0][0][1]',3,'up[2][0].sv[1][0][1][1]',1,'up[2][0].to.te[1][0][0][1]',3, 'up[2][0].sv[1][0][1][2]',1,'up[2][0].to.tg',3,'up[2][0].to.th',1,'up[2][0].to.ti',1,'up[2][0].to.tj[0]',1,2,3,'up[2][0].to.tj[1]',1,2,3,'up[2][0].to.tk',1,2,3, 'up[2][0].to.tl',1,2,3,'up[2][0].to.tm',1,'up[2][0].to.tn',1,'up[2][0].um.ue[1][0][2]+4','up[2][0].um.ue[1][0][2]+5','up[2][0].um.ue[1][0][2]+6', 'up[2][0].um.ue[1][0][2]+7','up[2][0].um.ue[1][1][0]',1,2,3,4,5,6,7,'up[2][0].um.ue[1][1][1]',1,2,3,4,5,6,7,'up[2][0].um.ue[1][1][2]',1,2,3,4,5,6,7, 'up[2][0].um.uf',1,2,3,4,5,6,7,'up[2][0].um.ug',1,'up[2][0].um.uh[0]',1,2,3,'up[2][0].um.uh[1]',1,2,3,'up[2][0].um.uh[2]',1,2,3,'up[2][0].um.ui',1,2,3,4,5,6,7, 'up[2][0].um.uj[0]',1,2,3,'up[2][0].um.uk[0]','up[2][0].um.uk[1]','up[2][0].um.uk[2]','up[2][0].um.ul' ]}, 4 => { kc=>[ 'mg.kd',1,2,3,'mg.ke',1,2,3,4,5,6,7,'mg.kf',1,2,3,'mg.kg',1,2,3,'mg.kh',1,'mg.ki','mg+23','mg.kw.kj[0][0]',1,2,3,'mg.kw.kj[0][1]',1,2,3,'mg.kw.kj[1][0]',1,2,3, 'mg.kw.kj[1][1]',1,2,3,'mg.kw.kj[2][0]',1,2,3,'mg.kw.kj[2][1]',1,2,3,'mg.kx',1,2,3,4,5,6,7,'mg.ky',1,2,3,'mg.lf[0][1]',5,6,7,'mg.lc[1]',1,2,3,4,5,6,7, 'mg.ld[0][0][2]',1,2,3,4,5,6,7,'mg.ld[1][0][0]',1,2,3,4,5,6,7,'mg.ld[1][0][1]',1,2,3,4,5,6,7,'mg.ld[1][0][2]',1,2,3,4,5,6,7,'mg.lp[0][0].li',1, 'mg.lp[0][0].lk+2','mg.lp[0][0].lk+3','mg.lp[0][0].lm[0][0][1]','mg.lp[0][0].lk+5','mg.lp[0][0].lk+6','mg.lp[0][0].lk+7','mg.lp[0][0].lm[0][0][2]',1,2,3, 'mg.lp[0][0].lm[0][1][0]',1,2,3,'mg.lp[0][0].lm[0][1][1]',1,2,3,'mg.lp[0][0].lm[0][1][2]',1,2,3,'mg.lp[0][0].lm[0][2][0]',1,2,3,'mg.lp[0][0].lm[0][2][1]',1,2,3, 'mg.lp[0][0].lm[0][2][2]',1,2,3,'mg.lp[0][1].li',1,'mg.lp[0][1].lk+2','mg.lp[0][1].lk+3','mg.lp[0][1].lm[0][0][1]','mg.lp[0][1].lk+5','mg.lp[0][1].lk+6', 'mg.lp[0][1].lk+7','mg.lp[0][1].lm[0][0][2]',1,2,3,'mg.lp[0][1].lm[0][1][0]',1,2,3,'mg.lp[0][1].lm[0][1][1]',1,2,3,'mg.lp[0][1].lm[0][1][2]',1,2,3, 'mg.lp[0][1].lm[0][2][0]',1,2,3,'mg.lp[0][1].lm[0][2][1]',1,2,3,'mg.lp[0][1].lm[0][2][2]',1,2,3,'mg.lp[1][0].li',1,'mg.lp[1][0].lk+2','mg.lp[1][0].lk+3', 'mg.lp[1][0].lm[0][0][1]','mg.lp[1][0].lk+5','mg.lp[1][0].lk+6','mg.lp[1][0].lk+7','mg.lp[1][0].lm[0][0][2]',1,2,3,'mg.lp[1][0].lm[0][1][0]',1,2,3, 'mg.lp[1][0].lm[0][1][1]',1,2,3,'mg.lp[1][0].lm[0][1][2]',1,2,3,'mg.lp[1][0].lm[0][2][0]',1,2,3,'mg.lp[1][0].lm[0][2][1]',1,2,3,'mg.lp[1][0].lm[0][2][2]',1,2,3, 'mg.lp[1][1].li',1,'mg.lp[1][1].lk+2','mg.lp[1][1].lk+3','mg.lp[1][1].lm[0][0][1]','mg.lp[1][1].lk+5','mg.lp[1][1].lk+6','mg.lp[1][1].lk+7', 'mg.lp[1][1].lm[0][0][2]',1,2,3,'mg.lp[1][1].lm[0][1][0]',1,2,3,'mg.lp[1][1].lm[0][1][1]',1,2,3,'mg.lp[1][1].lm[0][1][2]',1,2,3,'mg.lp[1][1].lm[0][2][0]',1,2,3, 'mg.lp[1][1].lm[0][2][1]',1,2,3,'mg.lp[1][1].lm[0][2][2]',1,2,3,'mg.lq.li',1,'mg.lq.lk+2','mg.lq.lk+3','mg.lq.lm[0][0][1]','mg.lq.lk+5','mg.lq.lk+6', 'mg.lq.lk+7','mg.lq.lm[0][0][2]',1,2,3,'mg.lq.lm[0][1][0]',1,2,3,'mg.lq.lm[0][1][1]',1,2,3,'mg.lq.lm[0][1][2]',1,2,3,'mg.lq.lm[0][2][0]',1,2,3, 'mg.lq.lm[0][2][1]',1,2,3,'mg.lq.lm[0][2][2]',1,2,3,'mg.lr',1,2,3,4,5,6,7,'mg.ls',1,2,3,4,5,6,7,'mg.lt','mg+301','mg.lu',1,'mg.lv',1,'mg.lw','mg.lx', 'mg.ly[0][0][0][0]','mg.ly[0][0][1][0]','mg.ly[0][1][0][0]','mg.ly[0][1][1][0]','mg.ly[0][2][0][0]','mg.ly[0][2][1][0]','mg.lz','mg+315','mg.ma',1,2,3,'mg.mb', 1,2,3,'mg.mc',1,2,3,'mg.md[0][0]',1,2,3,4,5,6,7,'mg.md[1][0]',1,2,3,4,5,6,7,'mg.me[0]',1,'mg.mf[0]',1,'mg.mf[1]',1,'mg.mf[2]',1,'mh.kd',1,2,3,'mh.ke',1,2,3,4,5, 6,7,'mh.kf',1,2,3,'mh.kg',1,2,3,'mh.kh',1,'mh.ki','mh+23','mh.kw.kj[0][0]',1,2,3,'mh.kw.kj[0][1]',1,2,3,'mh.kw.kj[1][0]',1,2,3,'mh.kw.kj[1][1]',1,2,3, 'mh.kw.kj[2][0]',1,2,3,'mh.kw.kj[2][1]',1,2,3,'mh.kx',1,2,3,4,5,6,7,'mh.ky',1,2,3,'mh.lf[0][1]',5,6,7,'mh.lc[1]',1,2,3,4,5,6,7,'mh.ld[0][0][2]',1,2,3,4,5,6,7, 'mh.ld[1][0][0]',1,2,3,4,5,6,7,'mh.ld[1][0][1]',1,2,3,4,5,6,7,'mh.ld[1][0][2]',1,2,3,4,5,6,7,'mh.lp[0][0].li',1,'mh.lp[0][0].lk+2','mh.lp[0][0].lk+3', 'mh.lp[0][0].lm[0][0][1]','mh.lp[0][0].lk+5','mh.lp[0][0].lk+6','mh.lp[0][0].lk+7','mh.lp[0][0].lm[0][0][2]',1,2,3,'mh.lp[0][0].lm[0][1][0]',1,2,3, 'mh.lp[0][0].lm[0][1][1]',1,2,3,'mh.lp[0][0].lm[0][1][2]',1,2,3,'mh.lp[0][0].lm[0][2][0]',1,2,3,'mh.lp[0][0].lm[0][2][1]',1,2,3,'mh.lp[0][0].lm[0][2][2]',1,2,3, 'mh.lp[0][1].li',1,'mh.lp[0][1].lk+2','mh.lp[0][1].lk+3','mh.lp[0][1].lm[0][0][1]','mh.lp[0][1].lk+5','mh.lp[0][1].lk+6','mh.lp[0][1].lk+7', 'mh.lp[0][1].lm[0][0][2]',1,2,3,'mh.lp[0][1].lm[0][1][0]',1,2,3,'mh.lp[0][1].lm[0][1][1]',1,2,3,'mh.lp[0][1].lm[0][1][2]',1,2,3,'mh.lp[0][1].lm[0][2][0]',1,2,3, 'mh.lp[0][1].lm[0][2][1]',1,2,3,'mh.lp[0][1].lm[0][2][2]',1,2,3,'mh.lp[1][0].li',1,'mh.lp[1][0].lk+2','mh.lp[1][0].lk+3','mh.lp[1][0].lm[0][0][1]', 'mh.lp[1][0].lk+5','mh.lp[1][0].lk+6','mh.lp[1][0].lk+7','mh.lp[1][0].lm[0][0][2]',1,2,3,'mh.lp[1][0].lm[0][1][0]',1,2,3,'mh.lp[1][0].lm[0][1][1]',1,2,3, 'mh.lp[1][0].lm[0][1][2]',1,2,3,'mh.lp[1][0].lm[0][2][0]',1,2,3,'mh.lp[1][0].lm[0][2][1]',1,2,3,'mh.lp[1][0].lm[0][2][2]',1,2,3,'mh.lp[1][1].li',1, 'mh.lp[1][1].lk+2','mh.lp[1][1].lk+3','mh.lp[1][1].lm[0][0][1]','mh.lp[1][1].lk+5','mh.lp[1][1].lk+6','mh.lp[1][1].lk+7','mh.lp[1][1].lm[0][0][2]',1,2,3, 'mh.lp[1][1].lm[0][1][0]',1,2,3,'mh.lp[1][1].lm[0][1][1]',1,2,3,'mh.lp[1][1].lm[0][1][2]',1,2,3,'mh.lp[1][1].lm[0][2][0]',1,2,3,'mh.lp[1][1].lm[0][2][1]',1,2,3, 'mh.lp[1][1].lm[0][2][2]',1,2,3,'mh.lq.li',1,'mh.lq.lk+2','mh.lq.lk+3','mh.lq.lm[0][0][1]','mh.lq.lk+5','mh.lq.lk+6','mh.lq.lk+7','mh.lq.lm[0][0][2]',1,2,3, 'mh.lq.lm[0][1][0]',1,2,3,'mh.lq.lm[0][1][1]',1,2,3,'mh.lq.lm[0][1][2]',1,2,3,'mh.lq.lm[0][2][0]',1,2,3,'mh.lq.lm[0][2][1]',1,2,3,'mh.lq.lm[0][2][2]',1,2,3, 'mh.lr',1,2,3,4,5,6,7,'mh.ls',1,2,3,4,5,6,7,'mh.lt','mh+301','mh.lu',1,'mh.lv',1,'mh.lw','mh.lx','mh.ly[0][0][0][0]','mh.ly[0][0][1][0]','mh.ly[0][1][0][0]', 'mh.ly[0][1][1][0]','mh.ly[0][2][0][0]','mh.ly[0][2][1][0]','mh.lz','mh+315','mh.ma',1,2,3,'mh.mb',1,2,3,'mh.mc',1,2,3,'mh.md[0][0]',1,2,3,4,5,6,7, 'mh.md[1][0]',1,2,3,4,5,6,7,'mh.me[0]',1,'mh.mf[0]',1,'mh.mf[1]',1,'mh.mf[2]',1,'mi.kd',1,2,3,'mi.ke',1,2,3,4,5,6,7,'mi.kf',1,2,3,'mi.kg',1,2,3,'mi.kh',1, 'mi.ki','mi+23','mi.kw.kj[0][0]',1,2,3,'mi.kw.kj[0][1]',1,2,3,'mi.kw.kj[1][0]',1,2,3,'mi.kw.kj[1][1]',1,2,3,'mi.kw.kj[2][0]',1,2,3,'mi.kw.kj[2][1]',1,2,3, 'mi.kx',1,2,3,4,5,6,7,'mi.ky',1,2,3,'mi.lf[0][1]',5,6,7,'mi.lc[1]',1,2,3,4,5,6,7,'mi.ld[0][0][2]',1,2,3,4,5,6,7,'mi.ld[1][0][0]',1,2,3,4,5,6,7,'mi.ld[1][0][1]', 1,2,3,4,5,6,7,'mi.ld[1][0][2]',1,2,3,4,5,6,7,'mi.lp[0][0].li',1,'mi.lp[0][0].lk+2','mi.lp[0][0].lk+3','mi.lp[0][0].lm[0][0][1]','mi.lp[0][0].lk+5', 'mi.lp[0][0].lk+6','mi.lp[0][0].lk+7','mi.lp[0][0].lm[0][0][2]',1,2,3,'mi.lp[0][0].lm[0][1][0]',1,2,3,'mi.lp[0][0].lm[0][1][1]',1,2,3,'mi.lp[0][0].lm[0][1][2]', 1,2,3,'mi.lp[0][0].lm[0][2][0]',1,2,3,'mi.lp[0][0].lm[0][2][1]',1,2,3,'mi.lp[0][0].lm[0][2][2]',1,2,3,'mi.lp[0][1].li',1,'mi.lp[0][1].lk+2','mi.lp[0][1].lk+3', 'mi.lp[0][1].lm[0][0][1]','mi.lp[0][1].lk+5','mi.lp[0][1].lk+6','mi.lp[0][1].lk+7','mi.lp[0][1].lm[0][0][2]',1,2,3,'mi.lp[0][1].lm[0][1][0]',1,2,3, 'mi.lp[0][1].lm[0][1][1]',1,2,3,'mi.lp[0][1].lm[0][1][2]',1,2,3,'mi.lp[0][1].lm[0][2][0]',1,2,3,'mi.lp[0][1].lm[0][2][1]',1,2,3,'mi.lp[0][1].lm[0][2][2]',1,2,3, 'mi.lp[1][0].li',1,'mi.lp[1][0].lk+2','mi.lp[1][0].lk+3','mi.lp[1][0].lm[0][0][1]','mi.lp[1][0].lk+5','mi.lp[1][0].lk+6','mi.lp[1][0].lk+7', 'mi.lp[1][0].lm[0][0][2]',1,2,3,'mi.lp[1][0].lm[0][1][0]',1,2,3,'mi.lp[1][0].lm[0][1][1]',1,2,3,'mi.lp[1][0].lm[0][1][2]',1,2,3,'mi.lp[1][0].lm[0][2][0]',1,2,3, 'mi.lp[1][0].lm[0][2][1]',1,2,3,'mi.lp[1][0].lm[0][2][2]',1,2,3,'mi.lp[1][1].li',1,'mi.lp[1][1].lk+2','mi.lp[1][1].lk+3','mi.lp[1][1].lm[0][0][1]', 'mi.lp[1][1].lk+5','mi.lp[1][1].lk+6','mi.lp[1][1].lk+7','mi.lp[1][1].lm[0][0][2]',1,2,3,'mi.lp[1][1].lm[0][1][0]',1,2,3,'mi.lp[1][1].lm[0][1][1]',1,2,3, 'mi.lp[1][1].lm[0][1][2]',1,2,3,'mi.lp[1][1].lm[0][2][0]',1,2,3,'mi.lp[1][1].lm[0][2][1]',1,2,3,'mi.lp[1][1].lm[0][2][2]',1,2,3,'mi.lq.li',1,'mi.lq.lk+2', 'mi.lq.lk+3','mi.lq.lm[0][0][1]','mi.lq.lk+5','mi.lq.lk+6','mi.lq.lk+7','mi.lq.lm[0][0][2]',1,2,3,'mi.lq.lm[0][1][0]',1,2,3,'mi.lq.lm[0][1][1]',1,2,3, 'mi.lq.lm[0][1][2]',1,2,3,'mi.lq.lm[0][2][0]',1,2,3,'mi.lq.lm[0][2][1]',1,2,3,'mi.lq.lm[0][2][2]',1,2,3,'mi.lr',1,2,3,4,5,6,7,'mi.ls',1,2,3,4,5,6,7,'mi.lt', 'mi+301','mi.lu',1,'mi.lv',1,'mi.lw','mi.lx','mi.ly[0][0][0][0]','mi.ly[0][0][1][0]','mi.ly[0][1][0][0]','mi.ly[0][1][1][0]','mi.ly[0][2][0][0]', 'mi.ly[0][2][1][0]','mi.lz','mi+315','mi.ma',1,2,3,'mi.mb',1,2,3,'mi.mc',1,2,3,'mi.md[0][0]',1,2,3,4,5,6,7,'mi.md[1][0]',1,2,3,4,5,6,7,'mi.me[0]',1,'mi.mf[0]', 1,'mi.mf[1]',1,'mi.mf[2]',1,'mj',1,2,3,4,5,6,7,'ou[0][0].mk[0]',1,2,3,4,5,6,7,'ou[0][0].mk[1]',1,2,3,4,5,6,7,'ou[0][0].ms',1,'ou[0][0].mt',1,'ou[0][0].mu[0]',1, 'ou[0][0].mu[1]',1,'ou[0][0].mw[1][0]',1,2,3,'ou[0][0].nq.nc',1,2,3,4,5,6,7,'ou[0][0].nq.nd',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.nf',1,2,3,4,5,6,7,'ou[0][0].nq.ng',1,'ou[0][0].nq.nh',1,'ou[0][0].nq.ni',1,'ou[0][0].nq+102', 'ou[0][0].nq+103','ou[0][0].nq.nj',1,2,3,'ou[0][0].nq.nk',1,2,3,'ou[0][0].nq.nl',1,2,3,'ou[0][0].nq.nm',1,'ou[0][0].nq+118','ou[0][0].nq+119','ou[0][0].nq.nn', 1,2,3,4,5,6,7,'ou[0][0].nq.no',1,'ou[0][0].nq+130','ou[0][0].nq+131','ou[0][0].nq.np',1,2,3,'ou[0][0].nr[0][0]',1,'ou[0][0].nx[1]',3,'ou[0][0].oa[0][2]',5, 'ou[0][0].oa[1][0]',7,'ou[0][0].oa[1][1]',1,'ou[0][0].oa[1][2]',1,'ou[0][0].oa[2][0]',1,'ou[0][0].oa[2][1]',1,'ou[0][0].oa[2][2]',1,'ou[0][0]+182', 'ou[0][0]+183','ou[0][0].og[0]',1,2,3,'ou[0][0].og[1]',1,2,3,'ou[0][0].oh','ou[0][0].os[1][0]','ou[0][0].oj[1]',3,'ou[0][0].om[1]','ou[0][0].ok+5', 'ou[0][0].ok+6','ou[0][0].ok+7','ou[0][0].ol[0][1]',1,2,3,4,5,6,7,'ou[0][0].ol[0][2]',1,2,3,4,5,6,7,'ov.mk[0]',1,2,3,4,5,6,7,'ov.mk[1]',1,2,3,4,5,6,7,'ov.ms',1, 'ov.mt',1,'ov.mu[0]',1,'ov.mu[1]',1,'ov.mw[1][0]',1,2,3,'ov.nq.nc',1,2,3,4,5,6,7,'ov.nq.nd',1,2,3,4,5,6,7,'ov.nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][1][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ov.nq.nf', 1,2,3,4,5,6,7,'ov.nq.ng',1,'ov.nq.nh',1,'ov.nq.ni',1,'ov.nq+102','ov.nq+103','ov.nq.nj',1,2,3,'ov.nq.nk',1,2,3,'ov.nq.nl',1,2,3,'ov.nq.nm',1,'ov.nq+118', 'ov.nq+119','ov.nq.nn',1,2,3,4,5,6,7,'ov.nq.no',1,'ov.nq+130','ov.nq+131','ov.nq.np',1,2,3,'ov.nr[0][0]',1,'ov.nx[1]',3,'ov.oa[0][2]',5,'ov.oa[1][0]',7, 'ov.oa[1][1]',1,'ov.oa[1][2]',1,'ov.oa[2][0]',1,'ov.oa[2][1]',1,'ov.oa[2][2]',1,'ov+182','ov+183','ov.og[0]',1,2,3,'ov.og[1]',1,2,3,'ov.oh','ov.os[1][0]', 'ov.oj[1]',3,'ov.om[1]','ov.ok+5','ov.ok+6','ov.ok+7','ov.ol[0][1]',1,2,3,4,5,6,7,'ov.ol[0][2]',1,2,3,4,5,6,7,'ow[0][0].mk[0]',1,2,3,4,5,6,7,'ow[0][0].mk[1]',1, 2,3,4,5,6,7,'ow[0][0].ms',1,'ow[0][0].mt',1,'ow[0][0].mu[0]',1,'ow[0][0].mu[1]',1,'ow[0][0].mw[1][0]',1,2,3,'ow[0][0].nq.nc',1,2,3,4,5,6,7,'ow[0][0].nq.nd',1,2, 3,4,5,6,7,'ow[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7, 'ow[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][0][0]',1, 2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.nf',1,2,3,4,5,6,7,'ow[0][0].nq.ng',1, 'ow[0][0].nq.nh',1,'ow[0][0].nq.ni',1,'ow[0][0].nq+102','ow[0][0].nq+103','ow[0][0].nq.nj',1,2,3,'ow[0][0].nq.nk',1,2,3,'ow[0][0].nq.nl',1,2,3,'ow[0][0].nq.nm', 1,'ow[0][0].nq+118','ow[0][0].nq+119','ow[0][0].nq.nn',1,2,3,4,5,6,7,'ow[0][0].nq.no',1,'ow[0][0].nq+130','ow[0][0].nq+131','ow[0][0].nq.np',1,2,3, 'ow[0][0].nr[0][0]',1,'ow[0][0].nx[1]',3,'ow[0][0].oa[0][2]',5,'ow[0][0].oa[1][0]',7,'ow[0][0].oa[1][1]',1,'ow[0][0].oa[1][2]',1,'ow[0][0].oa[2][0]',1, 'ow[0][0].oa[2][1]',1,'ow[0][0].oa[2][2]',1,'ow[0][0]+182','ow[0][0]+183','ow[0][0].og[0]',1,2,3,'ow[0][0].og[1]',1,2,3,'ow[0][0].oh','ow[0][0].os[1][0]', 'ow[0][0].oj[1]',3,'ow[0][0].om[1]','ow[0][0].ok+5','ow[0][0].ok+6','ow[0][0].ok+7','ow[0][0].ol[0][1]',1,2,3,4,5,6,7,'ow[0][0].ol[0][2]',1,2,3,4,5,6,7, 'ow[0][1].mk[0]',1,2,3,4,5,6,7,'ow[0][1].mk[1]',1,2,3,4,5,6,7,'ow[0][1].ms',1,'ow[0][1].mt',1,'ow[0][1].mu[0]',1,'ow[0][1].mu[1]',1,'ow[0][1].mw[1][0]',1,2,3, 'ow[0][1].nq.nc',1,2,3,4,5,6,7,'ow[0][1].nq.nd',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[0][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.nf',1, 2,3,4,5,6,7,'ow[0][1].nq.ng',1,'ow[0][1].nq.nh',1,'ow[0][1].nq.ni',1,'ow[0][1].nq+102','ow[0][1].nq+103','ow[0][1].nq.nj',1,2,3,'ow[0][1].nq.nk',1,2,3, 'ow[0][1].nq.nl',1,2,3,'ow[0][1].nq.nm',1,'ow[0][1].nq+118','ow[0][1].nq+119','ow[0][1].nq.nn',1,2,3,4,5,6,7,'ow[0][1].nq.no',1,'ow[0][1].nq+130', 'ow[0][1].nq+131','ow[0][1].nq.np',1,2,3,'ow[0][1].nr[0][0]',1,'ow[0][1].nx[1]',3,'ow[0][1].oa[0][2]',5,'ow[0][1].oa[1][0]',7,'ow[0][1].oa[1][1]',1, 'ow[0][1].oa[1][2]',1,'ow[0][1].oa[2][0]',1,'ow[0][1].oa[2][1]',1,'ow[0][1].oa[2][2]',1,'ow[0][1]+182','ow[0][1]+183','ow[0][1].og[0]',1,2,3,'ow[0][1].og[1]',1, 2,3,'ow[0][1].oh','ow[0][1].os[1][0]','ow[0][1].oj[1]',3,'ow[0][1].om[1]','ow[0][1].ok+5','ow[0][1].ok+6','ow[0][1].ok+7','ow[0][1].ol[0][1]',1,2,3,4,5,6,7, 'ow[0][1].ol[0][2]',1,2,3,4,5,6,7,'ow[1][0].mk[0]',1,2,3,4,5,6,7,'ow[1][0].mk[1]',1,2,3,4,5,6,7,'ow[1][0].ms',1,'ow[1][0].mt',1,'ow[1][0].mu[0]',1, 'ow[1][0].mu[1]',1,'ow[1][0].mw[1][0]',1,2,3,'ow[1][0].nq.nc',1,2,3,4,5,6,7,'ow[1][0].nq.nd',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.nf',1,2,3,4,5,6,7,'ow[1][0].nq.ng',1,'ow[1][0].nq.nh',1,'ow[1][0].nq.ni',1,'ow[1][0].nq+102', 'ow[1][0].nq+103','ow[1][0].nq.nj',1,2,3,'ow[1][0].nq.nk',1,2,3,'ow[1][0].nq.nl',1,2,3,'ow[1][0].nq.nm',1,'ow[1][0].nq+118','ow[1][0].nq+119','ow[1][0].nq.nn', 1,2,3,4,5,6,7,'ow[1][0].nq.no',1,'ow[1][0].nq+130','ow[1][0].nq+131','ow[1][0].nq.np',1,2,3,'ow[1][0].nr[0][0]',1,'ow[1][0].nx[1]',3,'ow[1][0].oa[0][2]',5, 'ow[1][0].oa[1][0]',7,'ow[1][0].oa[1][1]',1,'ow[1][0].oa[1][2]',1,'ow[1][0].oa[2][0]',1,'ow[1][0].oa[2][1]',1,'ow[1][0].oa[2][2]',1,'ow[1][0]+182', 'ow[1][0]+183','ow[1][0].og[0]',1,2,3,'ow[1][0].og[1]',1,2,3,'ow[1][0].oh','ow[1][0].os[1][0]','ow[1][0].oj[1]',3,'ow[1][0].om[1]','ow[1][0].ok+5', 'ow[1][0].ok+6','ow[1][0].ok+7','ow[1][0].ol[0][1]',1,2,3,4,5,6,7,'ow[1][0].ol[0][2]',1,2,3,4,5,6,7,'ow[1][1].mk[0]',1,2,3,4,5,6,7,'ow[1][1].mk[1]',1,2,3,4,5,6, 7,'ow[1][1].ms',1,'ow[1][1].mt',1,'ow[1][1].mu[0]',1,'ow[1][1].mu[1]',1,'ow[1][1].mw[1][0]',1,2,3,'ow[1][1].nq.nc',1,2,3,4,5,6,7,'ow[1][1].nq.nd',1,2,3,4,5,6,7, 'ow[1][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][0][0]',1, 2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7, 'ow[1][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.nf',1,2,3,4,5,6,7,'ow[1][1].nq.ng',1,'ow[1][1].nq.nh',1, 'ow[1][1].nq.ni',1,'ow[1][1].nq+102','ow[1][1].nq+103','ow[1][1].nq.nj',1,2,3,'ow[1][1].nq.nk',1,2,3,'ow[1][1].nq.nl',1,2,3,'ow[1][1].nq.nm',1, 'ow[1][1].nq+118','ow[1][1].nq+119','ow[1][1].nq.nn',1,2,3,4,5,6,7,'ow[1][1].nq.no',1,'ow[1][1].nq+130','ow[1][1].nq+131','ow[1][1].nq.np',1,2,3, 'ow[1][1].nr[0][0]',1,'ow[1][1].nx[1]',3,'ow[1][1].oa[0][2]',5,'ow[1][1].oa[1][0]',7,'ow[1][1].oa[1][1]',1,'ow[1][1].oa[1][2]',1,'ow[1][1].oa[2][0]',1, 'ow[1][1].oa[2][1]',1,'ow[1][1].oa[2][2]',1,'ow[1][1]+182','ow[1][1]+183','ow[1][1].og[0]',1,2,3,'ow[1][1].og[1]',1,2,3,'ow[1][1].oh','ow[1][1].os[1][0]', 'ow[1][1].oj[1]',3,'ow[1][1].om[1]','ow[1][1].ok+5','ow[1][1].ok+6','ow[1][1].ok+7','ow[1][1].ol[0][1]',1,2,3,4,5,6,7,'ow[1][1].ol[0][2]',1,2,3,4,5,6,7, 'ow[2][0].mk[0]',1,2,3,4,5,6,7,'ow[2][0].mk[1]',1,2,3,4,5,6,7,'ow[2][0].ms',1,'ow[2][0].mt',1,'ow[2][0].mu[0]',1,'ow[2][0].mu[1]',1,'ow[2][0].mw[1][0]',1,2,3, 'ow[2][0].nq.nc',1,2,3,4,5,6,7,'ow[2][0].nq.nd',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[2][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.nf',1, 2,3,4,5,6,7,'ow[2][0].nq.ng',1,'ow[2][0].nq.nh',1,'ow[2][0].nq.ni',1,'ow[2][0].nq+102','ow[2][0].nq+103','ow[2][0].nq.nj',1,2,3,'ow[2][0].nq.nk',1,2,3, 'ow[2][0].nq.nl',1,2,3,'ow[2][0].nq.nm',1,'ow[2][0].nq+118','ow[2][0].nq+119','ow[2][0].nq.nn',1,2,3,4,5,6,7,'ow[2][0].nq.no',1,'ow[2][0].nq+130', 'ow[2][0].nq+131','ow[2][0].nq.np',1,2,3,'ow[2][0].nr[0][0]',1,'ow[2][0].nx[1]',3,'ow[2][0].oa[0][2]',5,'ow[2][0].oa[1][0]',7,'ow[2][0].oa[1][1]',1, 'ow[2][0].oa[1][2]',1,'ow[2][0].oa[2][0]',1,'ow[2][0].oa[2][1]',1,'ow[2][0].oa[2][2]',1,'ow[2][0]+182','ow[2][0]+183','ow[2][0].og[0]',1,2,3,'ow[2][0].og[1]',1, 2,3,'ow[2][0].oh','ow[2][0].os[1][0]','ow[2][0].oj[1]',3,'ow[2][0].om[1]','ow[2][0].ok+5','ow[2][0].ok+6','ow[2][0].ok+7','ow[2][0].ol[0][1]',1,2,3,4,5,6,7, 'ow[2][0].ol[0][2]',1,2,3,4,5,6,7,'ow[2][1].mk[0]',1,2,3,4,5,6,7,'ow[2][1].mk[1]',1,2,3,4,5,6,7,'ow[2][1].ms',1,'ow[2][1].mt',1,'ow[2][1].mu[0]',1, 'ow[2][1].mu[1]',1,'ow[2][1].mw[1][0]',1,2,3,'ow[2][1].nq.nc',1,2,3,4,5,6,7,'ow[2][1].nq.nd',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.nf',1,2,3,4,5,6,7,'ow[2][1].nq.ng',1,'ow[2][1].nq.nh',1,'ow[2][1].nq.ni',1,'ow[2][1].nq+102', 'ow[2][1].nq+103','ow[2][1].nq.nj',1,2,3,'ow[2][1].nq.nk',1,2,3,'ow[2][1].nq.nl',1,2,3,'ow[2][1].nq.nm',1,'ow[2][1].nq+118','ow[2][1].nq+119','ow[2][1].nq.nn', 1,2,3,4,5,6,7,'ow[2][1].nq.no',1,'ow[2][1].nq+130','ow[2][1].nq+131','ow[2][1].nq.np',1,2,3,'ow[2][1].nr[0][0]',1,'ow[2][1].nx[1]',3,'ow[2][1].oa[0][2]',5, 'ow[2][1].oa[1][0]',7,'ow[2][1].oa[1][1]',1,'ow[2][1].oa[1][2]',1,'ow[2][1].oa[2][0]',1,'ow[2][1].oa[2][1]',1,'ow[2][1].oa[2][2]',1,'ow[2][1]+182', 'ow[2][1]+183','ow[2][1].og[0]',1,2,3,'ow[2][1].og[1]',1,2,3,'ow[2][1].oh','ow[2][1].os[1][0]','ow[2][1].oj[1]',3,'ow[2][1].om[1]','ow[2][1].ok+5', 'ow[2][1].ok+6','ow[2][1].ok+7','ow[2][1].ol[0][1]',1,2,3,4,5,6,7,'ow[2][1].ol[0][2]',1,2,3,4,5,6,7,'ox',1,'oz[0][1]',1,'oz[1][0]',1,'oz[1][1]',1,'pg',1, '+2802','+2803','ph',1,2,3,'pi',1,2,3,'pj[0][0][0]',1,2,3,'pj[0][0][1]',1,2,3,'pj[0][1][0]',1,2,3,'pj[0][1][1]',1,2,3,'pj[0][2][0]',1,2,3,'pj[0][2][1]',1,2,3, 'pk',1,2,3,'pl',1,2,3,'pm[0][0][0][0]',1,2,3,'pm[0][0][0][1]',1,2,3,'pm[0][1][0][0]',1,2,3,'pm[0][1][0][1]',1,2,3,'pm[1][0][0][0]',1,2,3,'pm[1][0][0][1]',1,2,3, 'pm[1][1][0][0]',1,2,3,'pm[1][1][0][1]',1,2,3,'pm[2][0][0][0]',1,2,3,'pm[2][0][0][1]',1,2,3,'pm[2][1][0][0]',1,2,3,'pm[2][1][0][1]',1,2,3,'pn','po','+2894', '+2895','pp',1,2,3,'pq',1,'+2902','+2903','pr',1,'pz[0][1]','ps[0][0][0]+3','pt[1]','ps[0][0][0]+5','ps[0][0][0]+6','ps[0][0][0]+7','ps[0][0][1]',1,2,3,4,5,6,7, 'ps[1][0][0]',1,2,3,4,5,6,7,'ps[1][0][1]',1,2,3,4,5,6,7,'ps[2][0][0]',1,2,3,4,5,6,7,'ps[2][0][1]',1,2,3,4,5,6,7,'qi.qa',1,2,3,'qi.qe[1][0]',5,6,7,'qj',1,'qp+2', 'qp+3','qr[0][1]','qp+5','qp+6','qp+7','qt',1,2,3,'qu',1,2,3,'rg.qv',1,2,3,4,5,6,7,'rg.qw',1,2,3,4,5,6,7,'rg.qx[0]',1,2,3,4,5,6,7,'rg.qx[1]',1,2,3,4,5,6,7, 'rg.qx[2]',1,2,3,4,5,6,7,'rg.qy',1,2,3,'rg.qz',1,2,3,'rg.ra[0][0][0][0]',1,2,3,'rg.ra[0][0][1][0]',1,2,3,'rg.ra[0][0][2][0]',1,2,3,'rg.ra[0][1][0][0]',1,2,3, 'rg.ra[0][1][1][0]',1,2,3,'rg.ra[0][1][2][0]',1,2,3,'rg.ra[0][2][0][0]',1,2,3,'rg.ra[0][2][1][0]',1,2,3,'rg.ra[0][2][2][0]',1,2,3,'rg.rb',1,2,3,4,5,6,7,'rg.rc', 1,2,3,4,5,6,7,'rg.rd[0]',1,2,3,'rg.rd[1]',1,2,3,'rg.re',1,2,3,4,5,6,7,'rg.rf[0][0]',1,2,3,4,5,6,7,'rg.rf[1][0]',1,2,3,4,5,6,7,'rh.qv',1,2,3,4,5,6,7,'rh.qw',1,2, 3,4,5,6,7,'rh.qx[0]',1,2,3,4,5,6,7,'rh.qx[1]',1,2,3,4,5,6,7,'rh.qx[2]',1,2,3,4,5,6,7,'rh.qy',1,2,3,'rh.qz',1,2,3,'rh.ra[0][0][0][0]',1,2,3,'rh.ra[0][0][1][0]', 1,2,3,'rh.ra[0][0][2][0]',1,2,3,'rh.ra[0][1][0][0]',1,2,3,'rh.ra[0][1][1][0]',1,2,3,'rh.ra[0][1][2][0]',1,2,3,'rh.ra[0][2][0][0]',1,2,3,'rh.ra[0][2][1][0]',1,2, 3,'rh.ra[0][2][2][0]',1,2,3,'rh.rb',1,2,3,4,5,6,7,'rh.rc',1,2,3,4,5,6,7,'rh.rd[0]',1,2,3,'rh.rd[1]',1,2,3,'rh.re',1,2,3,4,5,6,7,'rh.rf[0][0]',1,2,3,4,5,6,7, 'rh.rf[1][0]',1,2,3,4,5,6,7,'ri','+3241','rs[0].rj','rs[0].rq[1]','rs[0].rq[2]',3,4,5,6,7,'rs[0].rk[0][1]',1,2,3,4,5,6,7,'rs[0].rk[0][2]',1,2,3,4,5,6,7, 'rt[0].rj','rt[0].rq[1]','rt[0].rq[2]',3,4,5,6,7,'rt[0].rk[0][1]',1,2,3,4,5,6,7,'rt[0].rk[0][2]',1,2,3,4,5,6,7,'ru.rj','ru.rq[1]','ru.rq[2]',3,4,5,6,7, 'ru.rk[0][1]',1,2,3,4,5,6,7,'ru.rk[0][2]',1,2,3,4,5,6,7,'rv[0]',1,2,3,4,5,6,7,'+3322','+3323' ], ey=>[ 'ez','fn.fj[0][1][0]','fn.fi[1][0]','fn.fl[1][0][0]','fn.fl[1][1][0]','fn.fl[1][2][0]','fn.fl[2][0][0]','fn.fl[2][1][0]','fn.fl[2][2][0]','fn+9','fn+10', 'fn+11','fq','gg[1]','fr[1]',1,'fu[0][1]',1,2,3,'fu[1][0]',1,2,3,'fu[1][1]',1,2,3,'fu[2][0]',1,2,3,'fu[2][1]',1,2,3,'gz',1,2,3,'ha[0]','ha[1]','hb','+43','hc', 1,2,3,'hd','+49','+50','+51','he[0][0][0][0]',1,2,3,'he[0][0][0][1]',1,2,3,'he[0][0][1][0]',1,2,3,'he[0][0][1][1]',1,2,3,'he[1][0][0][0]',1,2,3, 'he[1][0][0][1]',1,2,3,'he[1][0][1][0]',1,2,3,'he[1][0][1][1]',1,2,3,'hf',1,2,3,'hg',1,2,3,'ii.hh',1,'ii+2','ii+3','ii.hi',1,2,3,'ii.ht.hj',1,2,3, 'ii.ht.hl[0][0][1]',1,2,3,'ii.ht.hl[0][0][2]',1,2,3,'ii.ht.hl[0][1][0]',1,2,3,'ii.ht.hl[0][1][1]',1,2,3,'ii.ht.hl[0][1][2]',1,2,3,'ii.ht.hl[0][2][0]',1,2,3, 'ii.ht.hl[0][2][1]',1,2,3,'ii.ht.hl[0][2][2]',1,2,3,'ii.ht.hl[1][0][0]',1,2,3,'ii.ht.hl[1][0][1]',1,2,3,'ii.ht.hl[1][0][2]',1,2,3,'ii.ht.hl[1][1][0]',1,2,3, 'ii.ht.hl[1][1][1]',1,2,3,'ii.ht.hl[1][1][2]',1,2,3,'ii.ht.hl[1][2][0]',1,2,3,'ii.ht.hl[1][2][1]',1,2,3,'ii.ht.hl[1][2][2]',1,2,3,'ii.ht.hl[2][0][0]',1,2,3, 'ii.ht.hl[2][0][1]',1,2,3,'ii.ht.hl[2][0][2]',1,2,3,'ii.ht.hl[2][1][0]',1,2,3,'ii.ht.hl[2][1][1]',1,2,3,'ii.ht.hl[2][1][2]',1,2,3,'ii.ht.hl[2][2][0]',1,2,3, 'ii.ht.hl[2][2][1]',1,2,3,'ii.ht.hl[2][2][2]',1,2,3,'ii.hu.hj',1,2,3,'ii.hu.hl[0][0][1]',1,2,3,'ii.hu.hl[0][0][2]',1,2,3,'ii.hu.hl[0][1][0]',1,2,3, 'ii.hu.hl[0][1][1]',1,2,3,'ii.hu.hl[0][1][2]',1,2,3,'ii.hu.hl[0][2][0]',1,2,3,'ii.hu.hl[0][2][1]',1,2,3,'ii.hu.hl[0][2][2]',1,2,3,'ii.hu.hl[1][0][0]',1,2,3, 'ii.hu.hl[1][0][1]',1,2,3,'ii.hu.hl[1][0][2]',1,2,3,'ii.hu.hl[1][1][0]',1,2,3,'ii.hu.hl[1][1][1]',1,2,3,'ii.hu.hl[1][1][2]',1,2,3,'ii.hu.hl[1][2][0]',1,2,3, 'ii.hu.hl[1][2][1]',1,2,3,'ii.hu.hl[1][2][2]',1,2,3,'ii.hu.hl[2][0][0]',1,2,3,'ii.hu.hl[2][0][1]',1,2,3,'ii.hu.hl[2][0][2]',1,2,3,'ii.hu.hl[2][1][0]',1,2,3, 'ii.hu.hl[2][1][1]',1,2,3,'ii.hu.hl[2][1][2]',1,2,3,'ii.hu.hl[2][2][0]',1,2,3,'ii.hu.hl[2][2][1]',1,2,3,'ii.hu.hl[2][2][2]',1,2,3,'ii.hv','ii.hw','ii+226', 'ii+227','ii.hx[0]',1,2,3,'ii.ig[0][0][0].hy',1,'ii.ig[0][0][0].ie+2','ii.ig[0][0][0].ie+3','ii.ig[0][0][0].ie+4','ii.ig[0][0][0].ie+5','ii.ig[0][0][0].ie+6', 'ii.ig[0][0][0].ie+7','ii.ig[1][0][0].hy',1,'ii.ig[1][0][0].ie+2','ii.ig[1][0][0].ie+3','ii.ig[1][0][0].ie+4','ii.ig[1][0][0].ie+5','ii.ig[1][0][0].ie+6', 'ii.ig[1][0][0].ie+7','ii.ig[2][0][0].hy',1,'ii.ig[2][0][0].ie+2','ii.ig[2][0][0].ie+3','ii.ig[2][0][0].ie+4','ii.ig[2][0][0].ie+5','ii.ig[2][0][0].ie+6', 'ii.ig[2][0][0].ie+7','ii.ih.hy',1,'ii.ih.ie+2','ii.ih.ie+3','ii.ih.ie+4','ii.ih.ie+5','ii.ih.ie+6','ii.ih.ie+7','ij.hh',1,'ij+2','ij+3','ij.hi',1,2,3, 'ij.ht.hj',1,2,3,'ij.ht.hl[0][0][1]',1,2,3,'ij.ht.hl[0][0][2]',1,2,3,'ij.ht.hl[0][1][0]',1,2,3,'ij.ht.hl[0][1][1]',1,2,3,'ij.ht.hl[0][1][2]',1,2,3, 'ij.ht.hl[0][2][0]',1,2,3,'ij.ht.hl[0][2][1]',1,2,3,'ij.ht.hl[0][2][2]',1,2,3,'ij.ht.hl[1][0][0]',1,2,3,'ij.ht.hl[1][0][1]',1,2,3,'ij.ht.hl[1][0][2]',1,2,3, 'ij.ht.hl[1][1][0]',1,2,3,'ij.ht.hl[1][1][1]',1,2,3,'ij.ht.hl[1][1][2]',1,2,3,'ij.ht.hl[1][2][0]',1,2,3,'ij.ht.hl[1][2][1]',1,2,3,'ij.ht.hl[1][2][2]',1,2,3, 'ij.ht.hl[2][0][0]',1,2,3,'ij.ht.hl[2][0][1]',1,2,3,'ij.ht.hl[2][0][2]',1,2,3,'ij.ht.hl[2][1][0]',1,2,3,'ij.ht.hl[2][1][1]',1,2,3,'ij.ht.hl[2][1][2]',1,2,3, 'ij.ht.hl[2][2][0]',1,2,3,'ij.ht.hl[2][2][1]',1,2,3,'ij.ht.hl[2][2][2]',1,2,3,'ij.hu.hj',1,2,3,'ij.hu.hl[0][0][1]',1,2,3,'ij.hu.hl[0][0][2]',1,2,3, 'ij.hu.hl[0][1][0]',1,2,3,'ij.hu.hl[0][1][1]',1,2,3,'ij.hu.hl[0][1][2]',1,2,3,'ij.hu.hl[0][2][0]',1,2,3,'ij.hu.hl[0][2][1]',1,2,3,'ij.hu.hl[0][2][2]',1,2,3, 'ij.hu.hl[1][0][0]',1,2,3,'ij.hu.hl[1][0][1]',1,2,3,'ij.hu.hl[1][0][2]',1,2,3,'ij.hu.hl[1][1][0]',1,2,3,'ij.hu.hl[1][1][1]',1,2,3,'ij.hu.hl[1][1][2]',1,2,3, 'ij.hu.hl[1][2][0]',1,2,3,'ij.hu.hl[1][2][1]',1,2,3,'ij.hu.hl[1][2][2]',1,2,3,'ij.hu.hl[2][0][0]',1,2,3,'ij.hu.hl[2][0][1]',1,2,3,'ij.hu.hl[2][0][2]',1,2,3, 'ij.hu.hl[2][1][0]',1,2,3,'ij.hu.hl[2][1][1]',1,2,3,'ij.hu.hl[2][1][2]',1,2,3,'ij.hu.hl[2][2][0]',1,2,3,'ij.hu.hl[2][2][1]',1,2,3,'ij.hu.hl[2][2][2]',1,2,3, 'ij.hv','ij.hw','ij+226','ij+227','ij.hx[0]',1,2,3,'ij.ig[0][0][0].hy',1,'ij.ig[0][0][0].ie+2','ij.ig[0][0][0].ie+3','ij.ig[0][0][0].ie+4', 'ij.ig[0][0][0].ie+5','ij.ig[0][0][0].ie+6','ij.ig[0][0][0].ie+7','ij.ig[1][0][0].hy',1,'ij.ig[1][0][0].ie+2','ij.ig[1][0][0].ie+3','ij.ig[1][0][0].ie+4', 'ij.ig[1][0][0].ie+5','ij.ig[1][0][0].ie+6','ij.ig[1][0][0].ie+7','ij.ig[2][0][0].hy',1,'ij.ig[2][0][0].ie+2','ij.ig[2][0][0].ie+3','ij.ig[2][0][0].ie+4', 'ij.ig[2][0][0].ie+5','ij.ig[2][0][0].ie+6','ij.ig[2][0][0].ie+7','ij.ih.hy',1,'ij.ih.ie+2','ij.ih.ie+3','ij.ih.ie+4','ij.ih.ie+5','ij.ih.ie+6','ij.ih.ie+7', 'ik.hh',1,'ik+2','ik+3','ik.hi',1,2,3,'ik.ht.hj',1,2,3,'ik.ht.hl[0][0][1]',1,2,3,'ik.ht.hl[0][0][2]',1,2,3,'ik.ht.hl[0][1][0]',1,2,3,'ik.ht.hl[0][1][1]',1,2,3, 'ik.ht.hl[0][1][2]',1,2,3,'ik.ht.hl[0][2][0]',1,2,3,'ik.ht.hl[0][2][1]',1,2,3,'ik.ht.hl[0][2][2]',1,2,3,'ik.ht.hl[1][0][0]',1,2,3,'ik.ht.hl[1][0][1]',1,2,3, 'ik.ht.hl[1][0][2]',1,2,3,'ik.ht.hl[1][1][0]',1,2,3,'ik.ht.hl[1][1][1]',1,2,3,'ik.ht.hl[1][1][2]',1,2,3,'ik.ht.hl[1][2][0]',1,2,3,'ik.ht.hl[1][2][1]',1,2,3, 'ik.ht.hl[1][2][2]',1,2,3,'ik.ht.hl[2][0][0]',1,2,3,'ik.ht.hl[2][0][1]',1,2,3,'ik.ht.hl[2][0][2]',1,2,3,'ik.ht.hl[2][1][0]',1,2,3,'ik.ht.hl[2][1][1]',1,2,3, 'ik.ht.hl[2][1][2]',1,2,3,'ik.ht.hl[2][2][0]',1,2,3,'ik.ht.hl[2][2][1]',1,2,3,'ik.ht.hl[2][2][2]',1,2,3,'ik.hu.hj',1,2,3,'ik.hu.hl[0][0][1]',1,2,3, 'ik.hu.hl[0][0][2]',1,2,3,'ik.hu.hl[0][1][0]',1,2,3,'ik.hu.hl[0][1][1]',1,2,3,'ik.hu.hl[0][1][2]',1,2,3,'ik.hu.hl[0][2][0]',1,2,3,'ik.hu.hl[0][2][1]',1,2,3, 'ik.hu.hl[0][2][2]',1,2,3,'ik.hu.hl[1][0][0]',1,2,3,'ik.hu.hl[1][0][1]',1,2,3,'ik.hu.hl[1][0][2]',1,2,3,'ik.hu.hl[1][1][0]',1,2,3,'ik.hu.hl[1][1][1]',1,2,3, 'ik.hu.hl[1][1][2]',1,2,3,'ik.hu.hl[1][2][0]',1,2,3,'ik.hu.hl[1][2][1]',1,2,3,'ik.hu.hl[1][2][2]',1,2,3,'ik.hu.hl[2][0][0]',1,2,3,'ik.hu.hl[2][0][1]',1,2,3, 'ik.hu.hl[2][0][2]',1,2,3,'ik.hu.hl[2][1][0]',1,2,3,'ik.hu.hl[2][1][1]',1,2,3,'ik.hu.hl[2][1][2]',1,2,3,'ik.hu.hl[2][2][0]',1,2,3,'ik.hu.hl[2][2][1]',1,2,3, 'ik.hu.hl[2][2][2]',1,2,3,'ik.hv','ik.hw','ik+226','ik+227','ik.hx[0]',1,2,3,'ik.ig[0][0][0].hy',1,'ik.ig[0][0][0].ie+2','ik.ig[0][0][0].ie+3', 'ik.ig[0][0][0].ie+4','ik.ig[0][0][0].ie+5','ik.ig[0][0][0].ie+6','ik.ig[0][0][0].ie+7','ik.ig[1][0][0].hy',1,'ik.ig[1][0][0].ie+2','ik.ig[1][0][0].ie+3', 'ik.ig[1][0][0].ie+4','ik.ig[1][0][0].ie+5','ik.ig[1][0][0].ie+6','ik.ig[1][0][0].ie+7','ik.ig[2][0][0].hy',1,'ik.ig[2][0][0].ie+2','ik.ig[2][0][0].ie+3', 'ik.ig[2][0][0].ie+4','ik.ig[2][0][0].ie+5','ik.ig[2][0][0].ie+6','ik.ig[2][0][0].ie+7','ik.ih.hy',1,'ik.ih.ie+2','ik.ih.ie+3','ik.ih.ie+4','ik.ih.ie+5', 'ik.ih.ie+6','ik.ih.ie+7','iu.il','jt.db.bo.bh[0][1]','jt.be.bd[0][1][0]',3,'iu.ir[0][1]',1,'jt.db.cn.ck[0][0][1][1]',3,'iu.ir[1][0]',1, 'jt.db.cn.ck[0][0][2][1]',3,'iu.ir[1][1]','jt.db.bq[0][1].bh[0][1]','jt.be.af[1]',3,'iu.ir[2][0]',1,'jt.be.ah[0][0][0]','jt.be.ah[1][0][0]','iu.ir[2][1]',1, 'jt.db.cn.ck[0][1][2][1]',3,'jr.ji[0][0][1][0]','jt.db.bq[1][0].bh[0][1]','jt.db.bq[1][0].bh[0][2]',3,'jt.be.aj[0][0][0]','jt.be.av','jt.be.aw',7, 'jr.ji[0][0][1][1]','jt.db.cy','jt.db.cz',3,'jt.be.aj[0][0][1]','jt.db.bq[1][1].bh[0][1]','jt.db.bq[1][1].bh[0][2]',7,'jr.ji[0][0][1][2]',1, 'jt.db.da[1][0][1][0]',3,'jt.be.aj[0][1][0]',5,'jt.db.da[2][0][1][0]',7,'jr.ji[0][0][2][0]',1,2,3,'jt.be.aj[0][1][1]',5,6,7,'jr.ji[0][0][2][1]',1,2,3, 'jt.be.aj[0][2][0]',5,6,7,'jr.ji[0][0][2][2]',1,2,3,'jt.be.aj[0][2][1]',5,6,7,'jt.be.az[0][0][2]',5,'jt.db.bv',7,'jt.be.aj[1][0][0]','jt.db.bw[1]', 'jt.db.bw[2]',3,'jt.be.az[0][1][0]',5,6,7,'jt.be.aj[1][0][1]',1,2,3,'jt.be.az[0][1][1]',5,6,7,'jt.be.aj[1][1][0]',1,2,3,'jt.be.az[0][1][2]',5,6,7, 'jt.be.aj[1][1][1]',1,2,3,'jt.be.az[0][2][0]',5,6,7,'jt.be.aj[1][2][0]',1,2,3,'jt.be.az[0][2][1]',5,6,7,'jt.be.aj[1][2][1]','jt.ds','jt.dt',3, 'jt.be.az[0][2][2]',5,6,7,'jt.be.aj[2][0][0]',1,'jt.dx[0][1]',3,'jt.be.az[1][0][0]',5,'jt.dx[1][1]',7,'jt.be.aj[2][0][1]',1,'jt.dx[2][1]',3,'jt.be.az[1][0][1]', 5,6,7,'jt.be.aj[2][1][0]',1,2,3,'jt.be.az[1][0][2]',5,6,7,'jt.be.aj[2][1][1]',1,2,3,'jt.be.az[1][1][0]',5,6,7,'jt.be.aj[2][2][0]',1,2,3,'jt.be.az[1][1][1]',5, 'jt.ed',7,'jt.be.aj[2][2][1]',1,2,3,'jt.be.az[1][1][2]',5,'jt.eg','jt.eh','jt.be.ak',1,'jt.ej',3,'jt.be.az[1][2][0]',5,'jt.el[0][0][0]','jt.el[0][0][1]', 'jt.be.al','jt.be.am','jt.be.an','jt.el[1][0][1]','jt.be.ao','jt.el[1][1][1]','jt.el[2][0][0]','jt.el[2][0][1]','jt.el[2][1][0]','jt.el[2][1][1]', 'jt.em[0][0][0]','jt.em[0][0][1]','jt.be.az[1][2][2]','jt.em[0][1][1]','jt.em[0][2][0]','jt.em[0][2][1]','jt.em[1][0][0]','jt.em[1][0][1]','jt.em[1][1][0]', 'jt.em[1][1][1]','jt.be.ba','jt.em[1][2][1]',2,3,'jt.en',5,6,7,'jt.be.bb',1,2,3,'jt.ep',1,2,3,'jt.ev.eq',1,2,3,'jt.ev.eu+4','jt.ev.eu+5','jt.ev.eu+6', 'jt.ev.eu+7','jt.ew.eq',1,2,3,'jt.ew.eu+4','jt.ew.eu+5','jt.ew.eu+6','jt.ew.eu+7','jt.ex',1,2,3 ], aa=>[ 'ab','db.bo.bh[0][1]','be.bd[0][1][0]',3,'be.ad',5,'db.cn.ck[0][0][1][1]',7,'be.ae',1,'db.cn.ck[0][0][2][1]',3,'be.af[0]','db.bq[0][1].bh[0][1]','be.af[1]',1, 'be.ag',1,'be.ah[0][0][0]','be.ah[1][0][0]','be.ai',1,'db.cn.ck[0][1][2][1]',3,'be.at[2]','db.bq[1][0].bh[0][1]','db.bq[1][0].bh[0][2]',7,'be.aj[0][0][0]', 'be.av','be.aw',3,'be.ax[0][0][0]','db.cy','db.cz',7,'be.aj[0][0][1]','db.bq[1][1].bh[0][1]','db.bq[1][1].bh[0][2]',3,'be.ax[0][0][1]',5,'db.da[1][0][1][0]',7, 'be.aj[0][1][0]',1,'db.da[2][0][1][0]',3,'be.ay',5,6,7,'be.aj[0][1][1]',1,2,3,'be.az[0][0][0]',5,6,7,'be.aj[0][2][0]',1,2,3,'be.az[0][0][1]',5,6,7, 'be.aj[0][2][1]',1,2,3,'be.az[0][0][2]',5,'db.bv',7,'be.aj[1][0][0]','db.bw[1]','db.bw[2]',3,'be.az[0][1][0]',5,6,7,'be.aj[1][0][1]',1,2,3,'be.az[0][1][1]',5,6, 7,'be.aj[1][1][0]',1,2,3,'be.az[0][1][2]',5,6,7,'be.aj[1][1][1]',1,2,3,'be.az[0][2][0]',5,6,7,'be.aj[1][2][0]',1,2,3,'be.az[0][2][1]',5,6,7,'be.aj[1][2][1]', 'ds','dt',3,'be.az[0][2][2]',5,6,7,'be.aj[2][0][0]',1,'dx[0][1]',3,'be.az[1][0][0]',5,'dx[1][1]',7,'be.aj[2][0][1]',1,'dx[2][1]',3,'be.az[1][0][1]',5,6,7, 'be.aj[2][1][0]',1,2,3,'be.az[1][0][2]',5,6,7,'be.aj[2][1][1]',1,2,3,'be.az[1][1][0]',5,6,7,'be.aj[2][2][0]',1,2,3,'be.az[1][1][1]',5,'ed',7,'be.aj[2][2][1]',1, 2,3,'be.az[1][1][2]',5,'eg','eh','be.ak',1,'ej',3,'be.az[1][2][0]',5,'el[0][0][0]','el[0][0][1]','be.al','be.am','be.an','el[1][0][1]','be.ao','el[1][1][1]', 'el[2][0][0]','el[2][0][1]','el[2][1][0]','el[2][1][1]','em[0][0][0]','em[0][0][1]','be.az[1][2][2]','em[0][1][1]','em[0][2][0]','em[0][2][1]','em[1][0][0]', 'em[1][0][1]','em[1][1][0]','em[1][1][1]','be.ba','em[1][2][1]',2,3,'en',5,6,7,'be.bb',1,2,3,'ep',1,2,3,'ev.eq',1,2,3,'ev.eu+4','ev.eu+5','ev.eu+6','ev.eu+7', 'ew.eq',1,2,3,'ew.eu+4','ew.eu+5','ew.eu+6','ew.eu+7','ex',1,2,3 ], rw=>[ 'rx','uo.sc[1]','uo.sh[0][1]','uo.um.ud','uo.rz[0][1]','aar[0][0].aah[2][0]','uo.sh[1][1]',3,'uo.rz[0][2]','uo.sm','uo.sh[2][1]','uo.so','uo.rz[1][0]',1, 'ux[0][0]',3,'uo.rz[1][1]',1,'ux[0][1]','vh.va[0][0][1]','uo.rz[1][2]','vh.va[0][1][1]','ux[0][2]','vh.va[0][2][1]','uo.sq[1]','vh.vc','ux[1][0]', 'aar[0][0].aao[1]','uo.sr','wi.wg','ux[1][1]',3,'uo.sv[1][0][0][2]','ws.wo[1]','ux[1][2]',3,'uo.sv[1][0][1][0]',1,'uo.to.te[0][0][0][1]',3,'uo.sv[1][0][1][1]', 'aar[0][1].aah[0][0]','uo.to.te[1][0][0][1]','aar[0][1].aah[1][0]','uo.sv[1][0][1][2]','aar[0][1].aah[2][0]','uo.to.tg',3,'uo.to.th',1,'uo.to.ti',1, 'uo.to.tj[0]',1,'ws.wr[2][0]',3,'uo.to.tj[1]',1,'ws.wr[2][2]',3,'uo.to.tk',1,'ye.yb[1][1][0][1]',3,'uo.to.tl','aaf[0][0][0]','ye.yb[1][1][1][1]','aaf[0][2][0]', 'uo.to.tm','aaf[1][1][0]','uo.to.tn','aaf[2][0][0]','vn[0][1][1]','aaf[2][2][0]','ye.yb[2][0][1][1]','uo.um.ue[1][0][2]+7','uo.um.ue[1][1][0]',1, 'ye.yb[2][1][0][1]',3,'vn[0][1][2]','aar[1][0].aah[0][0]','ye.yb[2][1][1][1]','aar[1][0].aah[1][0]','uo.um.ue[1][1][1]','aar[1][0].aah[2][0]','ye.yc[1][0]',3, 'vn[0][2][0]',5,'ye.yd',7,'uo.um.ue[1][1][2]',1,2,3,'vn[0][2][1]',5,6,7,'uo.um.uf',1,2,3,'vn[0][2][2]','aar[1][0].aan','aar[1][0].aao[0]','aar[1][0].aao[1]', 'uo.um.ug',1,6,7,'uo.um.uh[0]',1,2,3,'uo.um.uh[1]',1,2,3,'uo.um.uh[2]','aar[1][1].aah[0][0]','aar[1][1].aah[0][1]','aar[1][1].aah[1][0]','uo.um.ui', 'aar[1][1].aah[2][0]','aar[1][1].aah[2][1]',3,'vn[1][0][2]',5,6,7,'uo.um.uj[0]',1,2,3,'uo.um.uk[0]','uo.um.uk[1]','uo.um.uk[2]','uo.um.ul','up[1][0].rz[0][0]', 'up[1][0].sc[1]','up[1][0].sh[0][1]','up[1][0].um.ud','up[1][0].rz[0][1]','aar[1][1].aan','up[1][0].sh[1][1]','aar[1][1].aao[1]','up[1][0].rz[0][2]', 'up[1][0].sm','up[1][0].sh[2][1]','up[1][0].so','up[1][0].rz[1][0]',1,2,3,'up[1][0].rz[1][1]',1,2,3,'up[1][0].rz[1][2]','aar[2][0].aah[0][0]', 'aar[2][0].aah[0][1]','aar[2][0].aah[1][0]','up[1][0].sq[1]','aar[2][0].aah[2][0]','aar[2][0].aah[2][1]',3,'up[1][0].sr',1,2,3,'up[1][0].sv[1][0][0][2]',1,2,3, 'up[1][0].sv[1][0][1][0]',1,'up[1][0].to.te[0][0][0][1]',3,'up[1][0].sv[1][0][1][1]',1,'up[1][0].to.te[1][0][0][1]',3,'up[1][0].sv[1][0][1][2]','aar[2][0].aan', 'up[1][0].to.tg','aar[2][0].aao[1]','up[1][0].to.th',1,'up[1][0].to.ti',1,'up[1][0].to.tj[0]',1,2,3,'up[1][0].to.tj[1]',1,2,3,'up[1][0].to.tk', 'aar[2][1].aah[0][0]','aar[2][1].aah[0][1]','aar[2][1].aah[1][0]','up[1][0].to.tl','aar[2][1].aah[2][0]','aar[2][1].aah[2][1]',3,'up[1][0].to.tm',1, 'up[1][0].to.tn',1,'aar[2][1].aaj','up[1][0].um.ue[1][0][2]+5','up[1][0].um.ue[1][0][2]+6','up[1][0].um.ue[1][0][2]+7','up[1][0].um.ue[1][1][0]',1,2,3, 'aar[2][1].aal',5,6,7,'up[1][0].um.ue[1][1][1]','aar[2][1].aan','aar[2][1].aao[0]','aar[2][1].aao[1]','aar[2][1].aap',5,6,7,'up[1][0].um.ue[1][1][2]',1,2,3, 'aar[2][1].aaq',5,6,7,'up[1][0].um.uf',1,2,3,4,5,6,7,'up[1][0].um.ug',1,'vn[2][2][2]+2','vn[2][2][2]+3','up[1][0].um.uh[0]',1,2,3,'up[1][0].um.uh[1]',1,2,3, 'up[1][0].um.uh[2]',1,2,3,'up[1][0].um.ui','vq','vr[0][0]','vr[1][0]','vr[2][0]','vs',6,7,'up[1][0].um.uj[0]','vt',2,3,'up[1][0].um.uk[0]','up[1][0].um.uk[1]', 'up[1][0].um.uk[2]','up[1][0].um.ul','up[2][0].rz[0][0]','up[2][0].sc[1]','up[2][0].sh[0][1]','up[2][0].um.ud','up[2][0].rz[0][1]',1,'up[2][0].sh[1][1]',3, 'up[2][0].rz[0][2]','up[2][0].sm','up[2][0].sh[2][1]','up[2][0].so','up[2][0].rz[1][0]',1,2,3,'up[2][0].rz[1][1]',1,2,3,'up[2][0].rz[1][2]',1,2,3, 'up[2][0].sq[1]',1,2,3,'up[2][0].sr',1,2,3,'up[2][0].sv[1][0][0][2]',1,2,3,'up[2][0].sv[1][0][1][0]',1,'up[2][0].to.te[0][0][0][1]',3,'up[2][0].sv[1][0][1][1]', 1,'up[2][0].to.te[1][0][0][1]',3,'up[2][0].sv[1][0][1][2]',1,'up[2][0].to.tg',3,'up[2][0].to.th',1,'up[2][0].to.ti',1,'up[2][0].to.tj[0]',1,2,3, 'up[2][0].to.tj[1]',1,2,3,'up[2][0].to.tk',1,2,3,'up[2][0].to.tl',1,2,3,'up[2][0].to.tm',1,'up[2][0].to.tn',1,'up[2][0].um.ue[1][0][2]+4', 'up[2][0].um.ue[1][0][2]+5','up[2][0].um.ue[1][0][2]+6','up[2][0].um.ue[1][0][2]+7','up[2][0].um.ue[1][1][0]',1,2,3,4,5,6,7,'up[2][0].um.ue[1][1][1]',1,2,3,4,5, 6,7,'up[2][0].um.ue[1][1][2]',1,2,3,4,5,6,7,'up[2][0].um.uf',1,2,3,4,5,6,7,'up[2][0].um.ug',1,'up[2][0].um+110','up[2][0].um+111','up[2][0].um.uh[0]',1,2,3, 'up[2][0].um.uh[1]',1,2,3,'up[2][0].um.uh[2]',1,2,3,'up[2][0].um.ui',1,2,3,4,5,6,7,'up[2][0].um.uj[0]',1,2,3,'up[2][0].um.uk[0]','up[2][0].um.uk[1]', 'up[2][0].um.uk[2]','up[2][0].um.ul' ]}, ); my %sizeofs = ( 1 => { kc=>{ 1 => [qw(mg.lt mg.lw mi.lw mi.ly[0][1][0][0] ou[0][0].my ou[0][0].nu ov.mr ov.my ow[0][1].na ow[2][0].mr)], 2 => [qw(ou[0][0].ob[2][0][0] ov.oa[0][2] ov.oj[1] ow[0][0].oa[1][1] ow[1][1].ob[0][0][0] ow[2][1].ms oz[1][1] py qn rs[0].rl)], 4 => [qw(mg.kd mg.lg mh.kw.ks[0] mh.mb ov.nq.nj ow[0][0].on ow[0][1].oh ow[1][0].nq.nk pm[2][0][0][0] rg.ra[0][0][1][0])], 8 => [qw(mg.kw.kp[1] mg.lc[1] mi.lp[1][1].ll ou[0][0].ol[0][1] ov.mk[0] ow[1][0].nq.ne[0][0][0][0] ow[1][1].nq.ne[0][1][0][0] ow[2][0].nq.ne[0][2][2][0] ow[2][1].nq.ne[0][1][1][0] rh.rf[1][0])], 24 => [qw(mg.kw mh.kw mi.kw rs[0] rt[0] ru)], 36 => [qw(mg.lp[0][0] mg.lp[0][1] mg.lp[1][0] mg.lp[1][1] mg.lq mh.lp[0][0] mh.lq mi.lp[0][0] mi.lp[1][0] mi.lq)], 130 => [qw(ou[0][0].nq ov.nq ow[0][0].nq ow[0][1].nq ow[1][0].nq ow[1][1].nq ow[2][0].nq ow[2][1].nq)], 132 => [qw(rg rh)], 208 => [qw(ou[0][0] ov ow[0][0] ow[0][1] ow[1][0] ow[1][1] ow[2][0] ow[2][1])], 352 => [qw(mg mh mi)]}, ey=>{ 1 => [qw(fn.fj[0][0][0] fx ij.ih.ia ik.ig[0][0][0].id ik.ig[1][0][0].ic jf jt.be.av jt.dc.bo.bh[0][0] jt.dc.bp.bi jt.dc.bq[1][0].bh[0][1])], 2 => [qw(ij.hu.hm ij.ih.hy ik.ht.hm jt.db.cn.ck[0][0][2][1] jt.db.cn.ck[0][1][0][0] jt.db.cr[1][0] jt.db.cr[2][0] jt.db.cw jt.dc.cn.ck[0][1][0][1] jy[1][1][0][2])], 4 => [qw(gx ii.ht.hl[0][0][0] ik.hu.hl[0][1][0] jt.db.bq[0][0].bk[0][2] jt.dc.bq[1][0].bl[1] jt.dc.bq[1][0].bn jt.dc.cn.ci jt.dc.cn.cm[1][0][0][0] jt.dj.df[2][0] jt.dj.dh[1][0])], 8 => [qw(fp ij.ih ik.ih ik.ih.ie je jr.ji[0][0][1][2] jr.ji[0][0][2][0] jt.be.aj[0][1][0] jt.be.az[1][1][2] jt.be.ba)], 9 => [qw(fn fo)], 12 => [qw(jt.db.bo jt.db.bp jt.db.bq[0][0] jt.db.bq[0][1] jt.db.bq[1][1] jt.dc.bo jt.dc.bp jt.dc.bq[0][0] jt.dc.bq[0][1] jt.dc.bq[1][1])], 24 => [qw(iu jt.db.cn jt.dc.cn)], 72 => [qw(jr js jt.dj)], 106 => [qw(jt.db jt.dc)], 108 => [qw(ii.ht ii.hu ij.ht ij.hu ik.ht ik.hu)], 212 => [qw(jt.be)], 227 => [qw(jt)], 260 => [qw(ii ij ik)]}, aa=>{ 1 => [qw(be.au db.bp.bh[0][0] dc.bq[0][1].bh[0][2] dc.bq[1][0].bh[0][1] dc.bw[0] dz eg el[0][1][0] el[0][1][1] em[1][1][1])], 2 => [qw(be.aw be.bd[0][2][0] db.cr[2][0] db.ct db.da[2][0][0][0] dc.cs dc.da[0][0][1][0] dc.da[1][0][0][0] ed ew.er)], 4 => [qw(db.bp.bk[0][1] db.bq[1][0].bk[0][1] db.cn.ci db.cn.cm[1][0][0][0] dc.bq[0][1].bl[1] dc.bq[1][1].bn dc.bs[2][2] dc.cn.cm[1][0][0][0] dn en)], 8 => [qw(be.aj[0][0][0] be.aj[0][1][1] be.aj[1][2][0] be.ax[0][0][0] be.az[0][0][2] be.az[0][1][1] be.az[0][2][0] be.az[1][1][2] dc.cn.ch ev.eu)], 12 => [qw(db.bo db.bp db.bq[0][0] db.bq[0][1] db.bq[1][0] db.bq[1][1] dc.bo dc.bp dc.bq[0][0] dc.bq[0][1])], 24 => [qw(db.cn dc.cn)], 72 => [qw(dj)], 106 => [qw(db dc)], 212 => [qw(be)]}, rw=>{ 1 => [qw(uo.um.uk[1] uo.un.uc[2] up[0][0].um.ul up[1][0].sc[1] up[1][0].sl up[2][0].un.ud ws.wo[1] zk aar[0][0].aam aar[2][0].aah[2][0])], 2 => [qw(uo.tp.te[1][0][0][1] uo.un.ug up[0][0].tp.tn up[0][0].tq.te[1][0][0][1] up[1][0].sh[0][0] up[1][0].ta[2] up[2][0].to.te[0][0][0][0] ws.wr[2][1] ye.yb[0][0][0][0] yv)], 4 => [qw(uo.sv[1][0][0][0] uo.to.td[0][0] uo.to.td[0][1] uo.to.tl up[0][0].to.td[1][2] up[2][0].to.td[1][1] ux[0][2] zw[2][2] aac[1][0][0][0] aar[1][0].aak)], 8 => [qw(uo.um.ue[0][0][0] uo.um.ui uo.un.ue[0][1][0] up[0][0].un.ue[0][0][2] up[0][0].un.ue[1][1][0] up[1][0].un.ue[0][0][2] up[1][0].un.ue[1][0][1] vn[0][1][2] wv aar[0][0].aap)], 36 => [qw(wi)], 39 => [qw(aar[0][0] aar[0][1] aar[1][0] aar[1][1] aar[2][0] aar[2][1])], 48 => [qw(xh)], 50 => [qw(vh)], 60 => [qw(ws wt)], 72 => [qw(uo.to uo.tq uo.ub up[0][0].to up[0][0].tq up[1][0].tp up[1][0].tq up[2][0].tp up[2][0].tq up[2][0].ub)], 92 => [qw(ye)], 138 => [qw(uo uo.um uo.un up[0][0] up[0][0].un up[1][0].um up[1][0].un up[2][0] up[2][0].um up[2][0].un)]}}, 2 => { kc=>{ 1 => [qw(mg.lt mg.lw mi.lw mi.ly[0][1][0][0] ou[0][0].my ou[0][0].nu ov.mr ov.my ow[0][1].na ow[2][0].mr)], 2 => [qw(ou[0][0].ob[2][0][0] ov.oa[0][2] ov.oj[1] ow[0][0].oa[1][1] ow[1][1].ob[0][0][0] ow[2][1].ms oz[1][1] py qn rs[0].rl)], 4 => [qw(mg.kd mg.lg mh.kw.ks[0] mh.mb ov.nq.nj ow[0][0].on ow[0][1].oh ow[1][0].nq.nk pm[2][0][0][0] rg.ra[0][0][1][0])], 8 => [qw(mg.kw.kp[1] mg.lc[1] mi.lp[1][1].ll ou[0][0].ol[0][1] ov.mk[0] ow[1][0].nq.ne[0][0][0][0] ow[1][1].nq.ne[0][1][0][0] ow[2][0].nq.ne[0][2][2][0] ow[2][1].nq.ne[0][1][1][0] rh.rf[1][0])], 24 => [qw(mg.kw mh.kw mi.kw rs[0] rt[0] ru)], 36 => [qw(mg.lp[0][0] mg.lp[0][1] mg.lp[1][0] mg.lp[1][1] mg.lq mh.lp[0][0] mh.lq mi.lp[0][0] mi.lp[1][0] mi.lq)], 130 => [qw(ou[0][0].nq ov.nq ow[0][0].nq ow[0][1].nq ow[1][0].nq ow[1][1].nq ow[2][0].nq ow[2][1].nq)], 132 => [qw(rg rh)], 208 => [qw(ou[0][0] ov ow[0][0] ow[0][1] ow[1][0] ow[1][1] ow[2][0] ow[2][1])], 352 => [qw(mg mh mi)]}, ey=>{ 1 => [qw(fn.fj[0][0][0] fx ij.ih.ia ik.ig[0][0][0].id ik.ig[1][0][0].ic jf jt.be.av jt.dc.bo.bh[0][0] jt.dc.bp.bi jt.dc.bq[1][0].bh[0][1])], 2 => [qw(ij.hu.hm ij.ih.hy ik.ht.hm jt.db.cn.ck[0][0][2][1] jt.db.cn.ck[0][1][0][0] jt.db.cr[1][0] jt.db.cr[2][0] jt.db.cw jt.dc.cn.ck[0][1][0][1] jy[1][1][0][2])], 4 => [qw(gx ii.ht.hl[0][0][0] ik.hu.hl[0][1][0] jt.db.bq[0][0].bk[0][2] jt.dc.bq[1][0].bl[1] jt.dc.bq[1][0].bn jt.dc.cn.ci jt.dc.cn.cm[1][0][0][0] jt.dj.df[2][0] jt.dj.dh[1][0])], 8 => [qw(fp ij.ih ik.ih ik.ih.ie je jr.ji[0][0][1][2] jr.ji[0][0][2][0] jt.be.aj[0][1][0] jt.be.az[1][1][2] jt.be.ba)], 10 => [qw(fn fo)], 12 => [qw(jt.db.bo jt.db.bp jt.db.bq[0][0] jt.db.bq[0][1] jt.db.bq[1][1] jt.dc.bo jt.dc.bp jt.dc.bq[0][0] jt.dc.bq[0][1] jt.dc.bq[1][1])], 24 => [qw(iu jt.db.cn jt.dc.cn)], 72 => [qw(jr js jt.dj)], 108 => [qw(ii.ht ii.hu ij.ht ij.hu ik.ht ik.hu jt.db jt.dc)], 212 => [qw(jt.be)], 230 => [qw(jt)], 260 => [qw(ii ij ik)]}, aa=>{ 1 => [qw(be.au db.bp.bh[0][0] dc.bq[0][1].bh[0][2] dc.bq[1][0].bh[0][1] dc.bw[0] dz eg el[0][1][0] el[0][1][1] em[1][1][1])], 2 => [qw(be.aw be.bd[0][2][0] db.cr[2][0] db.ct db.da[2][0][0][0] dc.cs dc.da[0][0][1][0] dc.da[1][0][0][0] ed ew.er)], 4 => [qw(db.bp.bk[0][1] db.bq[1][0].bk[0][1] db.cn.ci db.cn.cm[1][0][0][0] dc.bq[0][1].bl[1] dc.bq[1][1].bn dc.bs[2][2] dc.cn.cm[1][0][0][0] dn en)], 8 => [qw(be.aj[0][0][0] be.aj[0][1][1] be.aj[1][2][0] be.ax[0][0][0] be.az[0][0][2] be.az[0][1][1] be.az[0][2][0] be.az[1][1][2] dc.cn.ch ev.eu)], 12 => [qw(db.bo db.bp db.bq[0][0] db.bq[0][1] db.bq[1][0] db.bq[1][1] dc.bo dc.bp dc.bq[0][0] dc.bq[0][1])], 24 => [qw(db.cn dc.cn)], 72 => [qw(dj)], 108 => [qw(db dc)], 212 => [qw(be)]}, rw=>{ 1 => [qw(uo.um.uk[1] uo.un.uc[2] up[0][0].um.ul up[1][0].sc[1] up[1][0].sl up[2][0].un.ud ws.wo[1] zk aar[0][0].aam aar[2][0].aah[2][0])], 2 => [qw(uo.tp.te[1][0][0][1] uo.un.ug up[0][0].tp.tn up[0][0].tq.te[1][0][0][1] up[1][0].sh[0][0] up[1][0].ta[2] up[2][0].to.te[0][0][0][0] ws.wr[2][1] ye.yb[0][0][0][0] yv)], 4 => [qw(uo.sv[1][0][0][0] uo.to.td[0][0] uo.to.td[0][1] uo.to.tl up[0][0].to.td[1][2] up[2][0].to.td[1][1] ux[0][2] zw[2][2] aac[1][0][0][0] aar[1][0].aak)], 8 => [qw(uo.um.ue[0][0][0] uo.um.ui uo.un.ue[0][1][0] up[0][0].un.ue[0][0][2] up[0][0].un.ue[1][1][0] up[1][0].un.ue[0][0][2] up[1][0].un.ue[1][0][1] vn[0][1][2] wv aar[0][0].aap)], 36 => [qw(wi)], 40 => [qw(aar[0][0] aar[0][1] aar[1][0] aar[1][1] aar[2][0] aar[2][1])], 48 => [qw(xh)], 50 => [qw(vh)], 60 => [qw(ws wt)], 72 => [qw(uo.to uo.tq uo.ub up[0][0].to up[0][0].tq up[1][0].tp up[1][0].tq up[2][0].tp up[2][0].tq up[2][0].ub)], 92 => [qw(ye)], 138 => [qw(uo uo.um uo.un up[0][0] up[0][0].un up[1][0].um up[1][0].un up[2][0] up[2][0].um up[2][0].un)]}}, 4 => { kc=>{ 1 => [qw(mg.lt mg.lw mi.lw mi.ly[0][1][0][0] ou[0][0].my ou[0][0].nu ov.mr ov.my ow[0][1].na ow[2][0].mr)], 2 => [qw(ou[0][0].ob[2][0][0] ov.oa[0][2] ov.oj[1] ow[0][0].oa[1][1] ow[1][1].ob[0][0][0] ow[2][1].ms oz[1][1] py qn rs[0].rl)], 4 => [qw(mg.kd mg.lg mh.kw.ks[0] mh.mb ov.nq.nj ow[0][0].on ow[0][1].oh ow[1][0].nq.nk pm[2][0][0][0] rg.ra[0][0][1][0])], 8 => [qw(mg.kw.kp[1] mg.lc[1] mi.lp[1][1].ll ou[0][0].ol[0][1] ov.mk[0] ow[1][0].nq.ne[0][0][0][0] ow[1][1].nq.ne[0][1][0][0] ow[2][0].nq.ne[0][2][2][0] ow[2][1].nq.ne[0][1][1][0] rh.rf[1][0])], 24 => [qw(mg.kw mh.kw mi.kw rs[0] rt[0] ru)], 36 => [qw(mg.lp[0][0] mg.lp[0][1] mg.lp[1][0] mg.lp[1][1] mg.lq mh.lp[0][0] mh.lq mi.lp[0][0] mi.lp[1][0] mi.lq)], 132 => [qw(rg rh)], 136 => [qw(ou[0][0].nq ov.nq ow[0][0].nq ow[0][1].nq ow[1][0].nq ow[1][1].nq ow[2][0].nq ow[2][1].nq)], 216 => [qw(ou[0][0] ov ow[0][0] ow[0][1] ow[1][0] ow[1][1] ow[2][0] ow[2][1])], 352 => [qw(mg mh mi)]}, ey=>{ 1 => [qw(fn.fj[0][0][0] fx ij.ih.ia ik.ig[0][0][0].id ik.ig[1][0][0].ic jf jt.be.av jt.dc.bo.bh[0][0] jt.dc.bp.bi jt.dc.bq[1][0].bh[0][1])], 2 => [qw(ij.hu.hm ij.ih.hy ik.ht.hm jt.db.cn.ck[0][0][2][1] jt.db.cn.ck[0][1][0][0] jt.db.cr[1][0] jt.db.cr[2][0] jt.db.cw jt.dc.cn.ck[0][1][0][1] jy[1][1][0][2])], 4 => [qw(gx ii.ht.hl[0][0][0] ik.hu.hl[0][1][0] jt.db.bq[0][0].bk[0][2] jt.dc.bq[1][0].bl[1] jt.dc.bq[1][0].bn jt.dc.cn.ci jt.dc.cn.cm[1][0][0][0] jt.dj.df[2][0] jt.dj.dh[1][0])], 8 => [qw(fp ij.ih ik.ih ik.ih.ie je jr.ji[0][0][1][2] jr.ji[0][0][2][0] jt.be.aj[0][1][0] jt.be.az[1][1][2] jt.be.ba)], 12 => [qw(fo jt.db.bo jt.db.bp jt.db.bq[1][0] jt.db.bq[1][1] jt.dc.bo jt.dc.bp jt.dc.bq[0][0] jt.dc.bq[0][1] jt.dc.bq[1][1])], 24 => [qw(iu jt.db.cn jt.dc.cn)], 72 => [qw(jr js jt.dj)], 108 => [qw(ii.ht ii.hu ij.ht ij.hu ik.ht ik.hu jt.db jt.dc)], 212 => [qw(jt.be)], 236 => [qw(jt)], 264 => [qw(ii ij ik)]}, aa=>{ 1 => [qw(be.an db.bo.bi dc.bo.bh[0][2] dc.bq[1][1].bh[0][1] dc.bu dz el[0][0][1] el[0][1][0] el[0][1][1] em[1][1][1])], 2 => [qw(be.aw be.bd[0][2][0] db.cs db.cu[1][1] db.da[2][0][1][0] dc.cr[2][0] dc.da[0][0][1][0] dc.da[1][0][1][0] ed ew.er)], 4 => [qw(db.bo.bk[0][1] db.cn.ci db.cn.cm[1][0][0][0] dc.bq[0][1].bl[1] dc.bq[1][0].bl[1] dc.bs[2][1] dc.ca dj.df[1][1] dn en)], 8 => [qw(be.aj[0][0][0] be.aj[0][1][1] be.aj[1][1][0] be.aj[1][1][1] be.ak be.az[0][0][1] be.az[0][1][0] be.az[0][1][1] be.az[1][1][0] be.az[1][1][2])], 12 => [qw(db.bo db.bq[0][0] db.bq[1][0] db.bq[1][1] dc.bo dc.bp dc.bq[0][0] dc.bq[0][1] dc.bq[1][0] dc.bq[1][1])], 24 => [qw(db.cn dc.cn)], 72 => [qw(dj)], 108 => [qw(db dc)], 212 => [qw(be)]}, rw=>{ 1 => [qw(uo.um.uk[1] up[0][0].sb up[0][0].um.ul up[1][0].sc[1] up[1][0].ub.tz up[2][0].un.uc[2] ws.wo[0] aar[0][0].aah[2][0] aar[0][0].aam aar[2][1].aah[0][0])], 2 => [qw(uo.um.ug up[0][0].ta[2] up[0][0].tq.te[0][0][0][0] up[0][0].tq.te[1][0][0][1] up[1][0].sh[0][0] up[1][0].to.te[0][0][0][0] up[2][0].to.te[0][0][0][0] wt.wr[0][2] ye.yb[0][0][1][0] yv)], 4 => [qw(uo.tc uo.to.td[0][0] uo.to.td[0][2] up[0][0].tq.tj[1] up[2][0].to.td[1][1] up[2][0].tp.td[0][0] wi.wc zw[2][2] aac[1][0][0][0] aar[1][1].aal)], 8 => [qw(uo.um.ue[0][0][0] uo.un.ue[0][0][2] up[0][0].un.ue[0][0][0] up[0][0].un.ue[0][1][0] up[1][0].un.ue[0][0][2] up[1][0].un.ue[1][1][2] vn[0][1][1] vn[2][1][1] xi[1][2] aar[0][0].aap)], 36 => [qw(wi)], 40 => [qw(aar[0][0] aar[0][1] aar[1][0] aar[1][1] aar[2][0] aar[2][1])], 48 => [qw(xh)], 50 => [qw(vh)], 60 => [qw(ws wt)], 72 => [qw(uo.to uo.tp uo.tq uo.ub up[0][0].tq up[1][0].tp up[2][0].to up[2][0].tp up[2][0].tq up[2][0].ub)], 92 => [qw(ye)], 140 => [qw(uo uo.um uo.un up[0][0].um up[0][0].un up[1][0] up[1][0].um up[1][0].un up[2][0] up[2][0].um)]}}, ); my $types = <<'ENDTYPES'; typedef union { unsigned long long ab; union { #pragma pack( push, 2 ) struct { unsigned long ac, ad, ae; signed short af[2], ag; signed char ah[2][1][1]; signed long long ai, aj[3][3][2], ak; unsigned char al; signed char am; signed char an; unsigned ao; }; #pragma pack( pop ) signed long ap; #pragma pack( push, 4 ) struct { unsigned long aq, ar, as[1][2]; int at[3]; unsigned char au, av; unsigned short aw; signed long long ax[1][1][2]; unsigned long long ay, az[2][3][3]; unsigned long long ba; signed long bb; }; #pragma pack( pop ) signed long long bc; unsigned short bd[1][3][1]; } be; union { unsigned bf, bg; #pragma pack( push, 1 ) union { signed char bh[1][3], bi; unsigned long bj; int bk[1][3], bl[2]; signed long bm, bn; } bo, bp, bq[2][2]; #pragma pack( pop ) int br[3]; struct { signed long bs[3][3], bt[3][3]; signed char bu; signed short bv; unsigned char bw[3]; signed long bx, by; signed long long bz; unsigned long ca, cb; unsigned cc; }; unsigned long long cd; union { unsigned ce, cf; unsigned long cg; signed long long ch; int ci; unsigned short cj[1][2]; unsigned short ck[1][2][3][2]; int cl, cm[3][1][1][1]; } cn; #pragma pack( push, 1 ) struct { unsigned short co, cp[1]; unsigned short cq, cr[3][1]; signed short cs; signed short ct, cu[2][3]; unsigned short cv, cw; unsigned char cx, cy; signed short cz, da[3][1][2][1]; }; #pragma pack( pop ) } db, dc; signed short dd; struct { struct { signed long de; int df[3][3], dg; unsigned long dh[2][3]; signed long di; } dj; struct { signed short dk, dl[2][1]; signed long dm[2][3], dn; unsigned dp, dq; signed char dr, ds, dt; signed long du; }; union { unsigned char dv; unsigned char dw; signed short dx[3][2]; signed char dy, dz; int ea, eb[3][3]; }; unsigned short ec, ed; struct { unsigned long ee; unsigned short ef; signed char eg, eh, ei; signed short ej, ek; unsigned char el[3][2][2], em[2][3][2]; signed long en; unsigned char eo; unsigned long ep; }; union { signed long eq; unsigned short er; int es, et; signed long long eu; } ev, ew; signed long ex; }; } aa; typedef struct { union { int ez; unsigned fa; union { int fb, fc, fd; signed char fe; signed char ff; signed long long fg, fh; signed short fi[2][1]; unsigned char fj[1][3][1], fk; signed char fl[3][3][1]; unsigned short fm; } fn, fo; unsigned long long fp; }; union { unsigned short fq, fr[2]; #pragma pack( push, 2 ) union { unsigned short fs; unsigned ft, fu[3][2]; signed long fv; signed char fw; unsigned char fx, fy; unsigned long long fz, ga; signed short gb, gc, gd; }; #pragma pack( pop ) signed char ge, gf, gg[3]; union { unsigned long long gh; unsigned gi; unsigned long gj, gk; signed long long gl[1]; }; union { int gm, gn; unsigned char go; signed long long gp; int gq; signed char gr; unsigned long gs; unsigned long long gt; } gu, gv[1][2]; struct { signed long long gw[2]; int gx, gy, gz; signed char ha[2], hb; unsigned long hc; signed char hd; unsigned he[2][1][2][2]; int hf; unsigned hg; }; }; struct { signed short hh; unsigned long hi; #pragma pack( push, 4 ) union { signed long hj; unsigned long hk, hl[3][3][3]; signed short hm; signed long hn; signed long long ho; unsigned hp; signed long long hq, hr; unsigned long hs[3][2]; } ht, hu; #pragma pack( pop ) unsigned char hv, hw; int hx[1]; union { signed short hy, hz; unsigned char ia, ib; unsigned char ic, id; unsigned long long ie; } ig[3][1][1], ih; } ii, ij, ik; union { union { unsigned long il, im; signed char in, io; signed char ip; signed long iq; unsigned ir[3][2], is, it; } iu; unsigned long iv, iw; #pragma pack( push, 4 ) union { unsigned char ix, iy, iz; unsigned char ja, jb; unsigned short jc, jd; signed long long je; unsigned char jf, jg; }; #pragma pack( pop ) #pragma pack( push, 1 ) union { int jh; unsigned long long ji[1][1][3][3]; unsigned char jj; signed long jk, jl; unsigned jm; signed char jn, jo; unsigned long long jp; signed short jq; } jr, js; #pragma pack( pop ) aa jt; union { unsigned long long ju, jv; unsigned short jw; unsigned short jx, jy[3][2][1][3]; unsigned short jz; unsigned char ka, kb; }; }; } ey; typedef struct { #pragma pack( push, 2 ) struct { struct { int kd; signed long long ke; unsigned long kf, kg; signed short kh; unsigned char ki; }; union { signed long kj[3][2], kk[1]; unsigned long kl, km, kn[1][2]; signed long long ko; signed long long kp[3], kq, kr; signed long ks[1]; signed char kt, ku; signed long kv; } kw; unsigned long long kx; union { unsigned long long ky; signed char kz; unsigned long la; signed long long lb, lc[2]; unsigned long long ld[2][1][3]; unsigned le, lf[1][2], lg; signed short lh; }; union { signed short li, lj[1][1]; unsigned long long lk, ll; signed long lm[1][3][3]; unsigned short ln; unsigned long long lo[2][1]; } lp[2][2], lq; struct { unsigned long long lr, ls; signed char lt; signed short lu, lv; unsigned char lw, lx; unsigned char ly[1][3][2][1], lz; int ma, mb; unsigned long mc; signed long long md[2][1]; }; unsigned short me[1], mf[3]; } mg, mh, mi; #pragma pack( pop ) signed long long mj; struct { union { unsigned long long mk[2], ml; unsigned long long mm; unsigned long mn, mo; signed long mp; signed char mq; signed char mr; }; unsigned short ms, mt; union { signed short mu[2]; unsigned mv, mw[2][1]; signed char mx[1]; signed char my, mz; unsigned char na; signed long long nb[1]; }; struct { unsigned long long nc, nd, ne[1][3][3][1]; signed long long nf; signed short ng, nh, ni; unsigned nj, nk, nl; unsigned short nm; signed long long nn; unsigned short no; signed long np; } nq; #pragma pack( push, 1 ) union { signed long long nr[1][1], ns; unsigned char nt, nu, nv; unsigned nw; unsigned short nx[2]; signed long ny, nz; signed short oa[3][3], ob[3][1][1]; signed char oc, od; signed long oe, of; }; #pragma pack( pop ) unsigned long og[2]; union { int oh; signed long oi; signed short oj[2]; signed long long ok, ol[1][3]; unsigned om[3], on; unsigned long oo, op; signed short oq[3], or; unsigned char os[2][1], ot; }; } ou[1][1], ov, ow[3][2]; struct { union { signed short ox, oy, oz[2][2]; unsigned short pa, pb; int pc; unsigned short pd; signed char pe; unsigned short pf; }; signed short pg; int ph; struct { unsigned pi; signed long pj[1][3][2], pk; unsigned long pl; unsigned long pm[3][2][1][2]; signed char pn, po; unsigned pp; signed short pq; }; #pragma pack( push, 1 ) union { unsigned short pr; unsigned long long ps[3][1][2]; unsigned pt[2]; signed char pu; signed long long pv, pw[2]; unsigned short px; signed short py; signed short pz[1][2]; }; #pragma pack( pop ) }; #pragma pack( push, 2 ) struct { union { unsigned long long qa, qb; unsigned long long qc, qd[1][1]; unsigned long qe[2][1], qf; signed short qg; unsigned qh; } qi; union { signed short qj; signed short qk, ql; signed short qm; unsigned short qn; unsigned char qo; signed long long qp; signed short qq; signed long qr[1][2], qs; }; signed long qt, qu; struct { signed long long qv; signed long long qw, qx[3]; signed long qy, qz, ra[1][3][3][1]; signed long long rb, rc; unsigned long rd[2]; signed long long re, rf[2][1]; } rg, rh; unsigned char ri; union { unsigned long long rj; signed long long rk[1][3]; signed short rl, rm; signed long long rn; int ro; unsigned char rp, rq[3], rr; } rs[1], rt[1], ru; unsigned long long rv[1]; }; #pragma pack( pop ) } kc; typedef union { int rx, ry; union { signed long rz[2][3], sa[1][2]; union { signed char sb, sc[2]; unsigned short sd, se; signed long sf, sg; signed short sh[3][2], si; signed short sj; }; #pragma pack( push, 4 ) struct { unsigned long long sk; unsigned char sl; signed char sm; unsigned char sn, so; int sp[1][2]; unsigned sq[2], sr; }; #pragma pack( pop ) unsigned long ss, st, su; union { unsigned long sv[2][1][2][3]; signed long long sw, sx; unsigned sy, sz; signed short ta[3], tb; unsigned long tc; }; struct { signed long td[3][3]; signed short te[2][1][1][2], tf, tg; signed short th, ti; signed long tj[2]; int tk, tl; signed short tm, tn; } to, tp, tq; #pragma pack( push, 4 ) struct { unsigned long tr, ts; signed short tt; unsigned tu, tv; unsigned short tw; signed long tx[3][3][1], ty; signed char tz; unsigned ua; } ub; #pragma pack( pop ) struct { signed char uc[3]; signed char ud; unsigned long long ue[2][2][3], uf; unsigned short ug; unsigned long uh[3]; unsigned long long ui; unsigned uj[1]; signed char uk[3], ul; } um, un; } uo, up[3][1]; signed char uq; #pragma pack( push, 1 ) union { unsigned long ur; struct { unsigned short us, ut[2][1]; unsigned short uu, uv; unsigned long uw, ux[2][3]; unsigned char uy; }; struct { signed short uz[1][3][1][3]; signed char va[1][3][2], vb; signed char vc; signed short vd[1][3][2]; signed short ve[1][1], vf; signed long long vg; } vh; unsigned vi; unsigned long vj; }; #pragma pack( pop ) #pragma pack( push, 4 ) union { #pragma pack( push, 1 ) struct { unsigned long long vk[3]; unsigned long long vl; signed long long vm, vn[3][3][3], vo; signed char vp; unsigned char vq, vr[3][1]; unsigned long vs, vt; }; #pragma pack( pop ) signed long vu, vv, vw; signed long long vx; unsigned char vy, vz; struct { unsigned long long wa, wb; unsigned long wc; unsigned char wd[1][1]; unsigned we; unsigned char wf, wg; unsigned wh; } wi; struct { unsigned wj; unsigned long long wk, wl, wm; unsigned wn; signed char wo[3]; unsigned short wp, wq[2], wr[3][3]; } ws, wt; #pragma pack( push, 1 ) union { signed long long wu, wv, ww; unsigned long wx[1][3]; unsigned short wy, wz[1][2]; unsigned long long xa; }; #pragma pack( pop ) }; #pragma pack( pop ) #pragma pack( push, 2 ) union { #pragma pack( push, 4 ) union { unsigned short xb; signed long long xc[3][2]; signed short xd; signed short xe; signed char xf, xg; } xh; #pragma pack( pop ) signed long long xi[3][3], xj; unsigned xk[2][2]; #pragma pack( push, 4 ) union { unsigned char xl; unsigned char xm, xn[1]; signed short xo; unsigned xp, xq; signed long xr; }; #pragma pack( pop ) unsigned short xs[2][1]; signed long long xt, xu[3]; }; #pragma pack( pop ) #pragma pack( push, 2 ) union { struct { unsigned long xv; unsigned xw, xx[3][1]; signed short xy, xz[2][1][1][3]; unsigned char ya; unsigned short yb[3][2][2][2], yc[3][1], yd; } ye; int yf[2][3], yg; int yh, yi, yj; unsigned short yk; union { unsigned char yl; unsigned char ym; signed long long yn; unsigned long long yo, yp; unsigned short yq[2]; unsigned char yr; unsigned ys, yt; }; }; #pragma pack( pop ) union { union { signed long yu; signed short yv, yw, yx; unsigned short yy[1][3], yz; signed short za, zb, zc[2][2]; signed char zd[2][1], ze; int zf[2][2]; unsigned char zg, zh; signed short zi; }; #pragma pack( push, 4 ) union { signed long long zj; signed char zk, zl; signed short zm; int zn[1][2]; unsigned char zo[3]; }; #pragma pack( pop ) signed char zp, zq, zr; union { unsigned short zs[1]; signed char zt, zu; unsigned zv[1][2][2]; unsigned zw[3][3]; unsigned char zx[1][3]; }; struct { unsigned long long zy; signed long zz, aaa[2]; int aab, aac[3][3][1][1], aad; unsigned char aae, aaf[3][3][1]; }; struct { unsigned char aag, aah[3][2]; unsigned aai, aaj, aak; signed long aal; unsigned char aam; signed char aan, aao[2]; signed long long aap; unsigned aaq; } aar[3][2]; unsigned long aas, aat, aau[1][2][2]; }; } rw; ENDTYPES my $SEED = 0; my $data = pack 'C*', map { ($SEED = (($SEED+13)*2869) % 8191) % 256 } 1..3324; my($succ, $fail); sub reccmp { my($ident, $ref, $val, $sparse) = @_; my $id = ref $ref; unless ($id) { if ($ref eq $val) { $succ++ } else { $fail++; diag("value mismatch for '$ident' (expected $ref, got $val)\n"); } return $ref eq $val; } if ($id eq 'ARRAY') { if ($sparse or @$ref == @$val) { $succ++; reccmp($ident."[$_]", $ref->[$_], $val->[$_], $sparse) for 0..$#$ref; } else { $fail++; diag("different array size for '$ident' (expected ", scalar @$ref, ", got ", scalar @$val, ")\n"); } } elsif ($id eq 'HASH') { if ($sparse or @{[keys %$ref]} == @{[keys %$val]}) { $succ++; for my $key (keys %$ref) { if (exists $val->{$key}) { $succ++; reccmp($ident.".$key", $ref->{$key}, $val->{$key}, $sparse); } else { $fail++; diag("member '$key' not found in '$ident'\n"); } } } else { $fail++; diag("different struct member count for '$ident' (expected ", scalar @{[keys %$ref]}, ", got ", scalar @{[keys %$val]}, ")\n"); } } } sub hexdump { my $data = shift; my $dump = ''; while (length $data) { my($i, $d, $t) = (0, '', ''); for my $c (unpack 'C*', substr $data, 0, 16, '') { $d .= sprintf "%02X", $c; $d .= ' '; $t .= $c < 32 || $c > 126 ? '.' : chr $c; next if ++$i % 4; $d .= ' '; $t .= ' ' unless $i % 8; } $dump .= sprintf "%-53s%s\n", $d, $t; } $dump; } sub chkpack { my($packref, $init, $off) = @_; $off ||= 0; for (my $i = 0; $i < length $$packref; ++$i) { my $o = ord substr $data, $off+$i, 1; my $p = ord substr $$packref, $i, 1; unless ($p == $o or $p == 0 or (defined $init and $p == $init)) { diag("inconsistent data in chkpack (init=$init, o=$o, p=$p):\n", "data @ offset $off:\n", hexdump(substr $data, $off, length $$packref), "packref:\n", hexdump($$packref)); return 0; } } return 1; } sub sparsecopy { my $ref = shift; my $id = ref $ref or return $ref; if ($id eq 'ARRAY') { return [ map { sparsecopy($ref->[$_]) } 0 .. ($#$ref/2) ]; } elsif ($id eq 'HASH') { my $i = 0; return { map { ++$i%2 ? ($_ => sparsecopy($ref->{$_})) : () } sort keys %$ref }; } } sub reccheck { my($cont, $meth, $id) = @_; my $r = ref $cont or return (0, 0); my($ok, $rcok) = (0, 0); my($o, $ro); if ($r eq 'ARRAY') { for my $ix (0 .. $#$cont) { ($o,$ro) = $meth->("$id\[$ix\]", $cont->[$ix]); $ok += $o; $rcok += $ro; ($o,$ro) = reccheck($cont->[$ix], $meth, "$id\[$ix\]"); $ok += $o; $rcok += $ro; } } elsif ($r eq 'HASH') { for my $mem (keys %$cont) { my $new = defined $id ? "$id.$mem" : $mem; ($o,$ro) = $meth->($new, $cont->{$mem}); $ok += $o; $rcok += $ro; ($o,$ro) = reccheck($cont->{$mem}, $meth, $new); $ok += $o; $rcok += $ro; } } ($ok, $rcok); } sub checkrc { my $rc = shift; while ($rc =~ /REFCNT\s*=\s*(\d+)/g) { if ($1 == 1) { $succ++ } else { diag("REFCNT = $1, should be 1\n"); $fail++; } } } my $p = Convert::Binary::C->new( ByteOrder => 'LittleEndian', ShortSize => 2, IntSize => 4, LongSize => 4, PointerSize => 4, FloatSize => 4, DoubleSize => 8, Alignment => 4 ); $p->parse($types); my $first = 1; my $debug = Convert::Binary::C::feature('debug'); for my $align (4, sort keys %reference) { if ($first) { $first = 0 } else { $p->configure(Alignment => $align) if $align; } my $sizeof = $reference{$align}{sizeof}; my $content = $reference{$align}{content}; my $sparse = { map { ( $_ => sparsecopy($content->{$_}) ) } keys %$content }; my $members = $members{$align}; my $sizeofs = $sizeofs{$align}; # perform a basic size check first for my $type (keys %$sizeof) { is($p->sizeof($type), $sizeof->{$type}, "sizeof($type)"); } # test if the unpack method works for my $type (keys %$content) { my $cont = $p->unpack($type, $data); $succ = $fail = 0; reccmp($type, $content->{$type}, $cont, 0); ok($fail == 0 && $succ > 0); # check reference counts SKIP: { skip 'no debug support', 1 unless $debug; $succ = $fail = 0; checkrc(Convert::Binary::C::__DUMP__($cont)); ok($fail == 0 && $succ > 0); } } # test if the pack method works correctly for my $type (keys %$content) { my $packed = $p->pack($type, $content->{$type}); is(length $packed, $sizeof->{$type}, "length pack($type)"); ok(chkpack(\$packed)); my $cont = $p->unpack($type, $packed); $succ = $fail = 0; reccmp($type, $content->{$type}, $cont, 0); ok($fail == 0 && $succ > 0); # is($fail, 0); # check reference count SKIP: { skip 'no debug support', 1 unless $debug; $succ = $fail = 0; checkrc(Convert::Binary::C::__DUMP__($packed)); ok($fail == 0 && $succ > 0); } } # test if pack also works for sparse data for my $type (keys %$sparse) { my $packed = $p->pack($type, $sparse->{$type}); is(length $packed, $sizeof->{$type}, "length pack($type) [sparse]"); ok(chkpack(\$packed)); my $cont = $p->unpack($type, $packed); $succ = $fail = 0; reccmp($type, $sparse->{$type}, $cont, 1); ok($fail == 0 && $succ > 0); # is($fail, 0); } # test the 3-arg version of pack for my $type (keys %$sparse) { my $packed = 'x' x $sizeof->{$type}; $p->pack($type, $sparse->{$type}, $packed); is(length $packed, $sizeof->{$type}, "length pack($type) [sparse, 3-arg]"); ok(chkpack(\$packed, ord 'x')); my $cont = $p->unpack($type, $packed); $succ = $fail = 0; reccmp($type, $sparse->{$type}, $cont, 1); ok($fail == 0 && $succ > 0); # is($fail, 0); # check reference count SKIP: { skip 'no debug support', 1 unless $debug; $succ = $fail = 0; checkrc(Convert::Binary::C::__DUMP__($packed)); ok($fail == 0 && $succ > 0); } } # test if the member(), offsetof() and typeof() methods work correctly for my $id (keys %$members) { $fail = 0; my $ref = $members->{$id}; for my $offs (0 .. $sizeof->{$id}-1) { my $m = $p->member($id, $offs); my @m = $p->member($id, $offs); my $r = $ref->[$offs]; my $diag = "(type=$id, offset=$offs):\n" . "\$m = '$m'\n" . "\@m = (" . join(', ', map { "'$_'" } @m) . ")\n"; # print "# member( '$id', $offs ) = (", join(', ', map "'$offs'", @m), ")\n"; unless ($m eq $m[0]) { diag("member mismatch for different contexts $diag"); $fail++; } if (@m > 1) { my %seen; for my $m (@m) { if ($seen{$m}++) { diag("duplicate member ($m) found in list context output $diag"); $fail++; } } } $r =~ /^\d+$/o and $r = "$ref->[$offs-$r]+$r"; $r =~ /^\w/o and $r = ".$r"; unless ($m eq $r) { diag("member mismatch (expected $r, got $m) $diag"); $fail++; } unless ($m =~ /^\+\d+$/) { my $t = $p->typeof($id.$m); unless (defined $t) { diag("undefined type for member ($id.$m) $diag"); $fail++; } } my $o = $p->offsetof($id, $m); unless (defined $o and $o == $offs) { diag("offsetof('$id', '$m') == $o, expected $offs\n"); $fail++; } } is($fail, 0); } # test if the sizeof() methods works for compound members for my $id (keys %$sizeofs) { $fail = 0; my $ref = $sizeofs->{$id}; for my $size (keys %$ref) { for my $member (@{$ref->{$size}}) { $size == $p->sizeof("$id.$member") or $fail++; } } is($fail, 0); } # test if the unpack method works for compound members for my $type (keys %$content) { my($ok, $rcok) = reccheck($content->{$type}, \&unpackcheck, $type); ok($ok); SKIP: { skip 'no debug support', 1 unless $debug; ok($rcok); } } # test if the pack method works for compound members for my $type (keys %$content) { my($ok, $rcok) = reccheck($content->{$type}, \&packcheck, $type); ok($ok); SKIP: { skip 'no debug support', 1 unless $debug; ok($rcok); } } # test Format tag (offsetof and sizeof are already validated above) for my $id (keys %$members) { my @members = $p->member($id); my %seen; for my $m (@members) { next if $m =~ /\[[^0]+\]/; $fail = $succ = 0; while ($m) { $m =~ s/(?:\[\d*\])+$//; last if $seen{$m}++; my $offs = $p->offsetof($id, $m); my $size = $p->sizeof($id.$m); my $bin = substr $data, $offs, $size; my($str) = $bin =~ /^([^\x00]*)/; my $pl = $m; my $rv; $pl =~ s/\.(\w+)/{$1}/g; $p->tag($id.$m, Format => 'Binary'); $rv = $p->unpack($id.$m, $bin); $rv eq $bin or $fail++; $rv = $p->pack($id.$m, $bin); $rv eq $bin or $fail++; $rv = $p->unpack($id, $data); eval "\$rv->$pl" eq $bin or $fail++; $p->tag($id.$m, Format => 'String'); $rv = $p->unpack($id.$m, $bin); $rv eq $str or $fail++; # use re 'debug'; $rv = $p->pack($id.$m, $str); length($rv) == $size or $fail++; $rv =~ /^\Q$str\E\x00*$/ or $fail++; $rv = $p->unpack($id, $data); eval "\$rv->$pl" eq $str or $fail++; $p->tag($id.$m, Format => undef); $m =~ s/\.\w+$//; $succ++; } if ($succ) { is($fail, 0); } } } } sub unpackcheck { my($id, $ref) = @_; my($type, $member) = split /\./, $id, 2; my $off = defined $member ? $p->offsetof($type, $member) : 0; my $size = $p->sizeof($id); my $d = substr $data, $off, $size; my $cont = $p->unpack($id, $d); $succ = $fail = 0; reccmp($id, $ref, $cont, 0); my $ok = $fail == 0 && $succ > 0; $ok or diag("check failed for unpack('$id')\n"); $succ = $fail = 0; $debug and checkrc(Convert::Binary::C::__DUMP__($cont)); my $rcok = $fail == 0 && $succ > 0; $rcok or !$debug or diag("refcount check failed for unpack('$id')\n"); ($ok, $rcok); } sub packcheck { my($id, $ref) = @_; my($type, $member) = split /\./, $id, 2; my $off = defined $member ? $p->offsetof($type, $member) : 0; my $size = $p->sizeof($id); my $d = substr($data, $off, $size); my $packed = $p->pack($id, $ref); my $ok = 1; $size == length $packed or $ok = 0, diag("size check failed for pack('$id')\n"); chkpack( \$packed, 0, $off ) or $ok = 0, diag("chkpack check failed for pack('$id')\n"); my $cont = $p->unpack($id, $packed); $succ = $fail = 0; reccmp($id, $ref, $cont, 0); $fail == 0 && $succ > 0 or $ok = 0, diag("check failed for pack('$id')\n"); $succ = $fail = 0; $debug and checkrc(Convert::Binary::C::__DUMP__($cont)); my $rcok = $fail == 0 && $succ > 0; $rcok or !$debug or diag("refcount check failed for unpack('$id')\n"); ($ok, $rcok); } Convert-Binary-C-0.85/tests/601_speed.t0000644000175000001440000000607214677003452016235 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; use Convert::Binary::C::Cached; $^W = 1; BEGIN { plan tests => 11; } my $CCCFG = require './tests/include/config.pl'; push @{$CCCFG->{Define}}, 'CACHE_TEST=1'; push @{$CCCFG->{Include}}, 'tests/include'; eval { require Data::Dumper }; $Data_Dumper = $@; eval { require IO::File }; $IO_File = $@; if( $Data_Dumper or $IO_File ) { my $req; $req = 'IO::File' if $IO_File; $req = 'Data::Dumper' if $Data_Dumper; $req = 'Data::Dumper and IO::File' if $Data_Dumper && $IO_File; skip( "caching requires $req", 0 ) for 1 .. 11; exit; } else { ok(1) } eval { my @dummy = times }; if( $@ ) { print "# no times() funtion, trying Time::HiRes...\n"; eval { require Time::HiRes; *main::mytime = \&Time::HiRes::time; $required_time = 5; $time_per_test = 1; }; if( $@ ) { print "# can't load Time::HiRes, using time()...\n"; *main::mytime = sub { time }; $required_time = 20; $time_per_test = 4; } } else { print "# using times() for timing...\n"; *main::mytime = sub { my @t = times; $t[0]+$t[1] }; $required_time = 5; $time_per_test = 1; } $cache = 'tests/cache.cbc'; -e $cache and unlink $cache; # check "normal" C::B::C object $tests = 5; $next_test_time = 0; $iterations = 0; $start_time = mytime(); $elapsed_time = 0; $fail = 0; while ($elapsed_time < $required_time) { eval { $c = Convert::Binary::C->new( %$CCCFG ); $c->parse_file( 'tests/include/include.c' ); }; $@ and $fail = 1 and last; $iterations++; $elapsed_time = mytime() - $start_time; # this is just to prevent the user from stopping the test if( $elapsed_time >= $next_test_time and $tests > 0 ) { $tests--; $next_test_time += $time_per_test; ok(1); } } ok(1) while $tests-- > 0; ok( $fail, 0, "failed to perform reference speed test ($@)" ); print "# uncached: $iterations iterations in $elapsed_time seconds\n"; # create cache file eval { $c = Convert::Binary::C::Cached->new( Cache => $cache, %$CCCFG ); $c->parse_file( 'tests/include/include.c' ); }; ok($@,'',"failed to create cache file for speed test"); # not ok if cache file doesn't exist now ok( -e $cache ); # check cached object (this should be a lot faster) $start_time = mytime(); eval { for( 1 .. $iterations ) { $c = Convert::Binary::C::Cached->new( Cache => $cache, %$CCCFG ); $c->parse_file( 'tests/include/include.c' ); } }; ok( $@, '', "failed to perform cached speed test ($@)" ); $cached_time = mytime() - $start_time; $speedup = $cached_time < 0.001 ? 1000 : $elapsed_time / $cached_time; print "# cached: $iterations iterations in $cached_time seconds\n"; print "# speedup is $speedup\n"; # a speedup of 2 is acceptable ok( $speedup > 2 ); -e $cache and unlink $cache; Convert-Binary-C-0.85/tests/222_ieee.t0000644000175000001440000000565414677003452016050 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 50; } $reason = Convert::Binary::C::feature('ieeefp') ? '' : 'no IEEE floating point'; $SIG{__WARN__} = sub { push @warn, $_[0] }; my $c = eval { Convert::Binary::C->new }; skip($reason,$@,''); # check with reference data while( ) { s/^\s*//; s/\s*$//; s/#.*//; /\S/ or next; my($value, $double, $single) = split /\s*\|\s*/; my $sb = hex2str( $single ); my $db = hex2str( $double ); my $sl = reverse $sb; my $dl = reverse $db; my($u,$p); print "# checking $value\n"; # Single Precision, BigEndian $c->FloatSize( length $sb )->ByteOrder( 'BigEndian' ); $p = $c->pack('float', $value); printf "# pack(\$value) => %s\n", hexdump($p); skip( $reason, $p, $sb ); $u = $c->unpack('float', $sb); print "# unpack(\$sb) => $u\n"; skip( $reason, delta_ok( $value, $u, 1e-7 ) ); # Double Precision, BigEndian $c->FloatSize( length $db )->ByteOrder( 'BigEndian' ); $p = $c->pack('float', $value); printf "# pack(\$value) => %s\n", hexdump($p); skip( $reason, $p, $db ); $u = $c->unpack('float', $db); print "# unpack(\$db) => $u\n"; skip( $reason, delta_ok( $value, $u, 1e-15 ) ); # Single Precision, LittleEndian $c->FloatSize( length $sl )->ByteOrder( 'LittleEndian' ); $p = $c->pack('float', $value); printf "# pack(\$value) => %s\n", hexdump($p); skip( $reason, $p, $sl ); $u = $c->unpack('float', $sl); print "# unpack(\$sl) => $u\n"; skip( $reason, delta_ok( $value, $u, 1e-7 ) ); # Double Precision, LittleEndian $c->FloatSize( length $dl )->ByteOrder( 'LittleEndian' ); $p = $c->pack('float', $value); printf "# pack(\$value) => %s\n", hexdump($p); skip( $reason, $p, $dl ); $u = $c->unpack('float', $dl); print "# unpack(\$dl) => $u\n"; skip( $reason, delta_ok( $value, $u, 1e-15 ) ); } skip( $reason, scalar @warn, 0, "unexpected warnings" ); sub delta_ok { my($ref, $val, $delta) = @_; abs($val-$ref) <= $delta * abs($ref) and return 1; # catch the different cases of 'infinity' $ref > 1e10 and $val !~ /^[+-]?\d*(?:\.\d*)(?:[eE][+-]?\d+)?$/ and return 1; return 0; } sub hex2str { pack 'C*', map hex, split ' ', $_[0] } sub hexdump { join ' ', map { sprintf '%02X', $_ } unpack 'C*', $_[0] } __DATA__ -1.0 | BF F0 00 00 00 00 00 00 | BF 80 00 00 0.0 | 00 00 00 00 00 00 00 00 | 00 00 00 00 0.4 | 3F D9 99 99 99 99 99 9A | 3E CC CC CD 1.0 | 3F F0 00 00 00 00 00 00 | 3F 80 00 00 3.1415926535 | 40 09 21 FB 54 41 17 44 | 40 49 0F DB 1.220703125e-4 | 3F 20 00 00 00 00 00 00 | 39 00 00 00 Convert-Binary-C-0.85/tests/001_init.t0000644000175000001440000001164014677003452016067 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 29; use constant SUCCEED => 1; use constant FAIL => 0; #=================================================================== # try to require the modules (2 tests) #=================================================================== require_ok('Convert::Binary::C'); require_ok('Convert::Binary::C::Cached'); #=================================================================== # check if we build the right object (4 tests) #=================================================================== eval { $p = Convert::Binary::C->new }; is($@, '', "create Convert::Binary::C object"); is(ref $p, 'Convert::Binary::C', "blessed Convert::Binary::C reference"); eval { $p = Convert::Binary::C::Cached->new }; is($@, '', "create Convert::Binary::C::Cached object"); is(ref $p, 'Convert::Binary::C::Cached', "blessed Convert::Binary::C::Cached reference"); #=================================================================== # check initialization during construction (4 tests) #=================================================================== eval { $p = Convert::Binary::C->new( PointerSize => 4, EnumSize => 4, IntSize => 4, Alignment => 2, ByteOrder => 'BigEndian', EnumType => 'Both' ); }; is($@, '', "create Convert::Binary::C object with arguments"); is(ref $p, 'Convert::Binary::C', "blessed Convert::Binary::C reference"); @warn = (); eval { local $SIG{__WARN__} = sub { push @warn, $_[0] }; $p = Convert::Binary::C::Cached->new( Cache => 'tests/cache.cbc', PointerSize => 4, EnumSize => 4, IntSize => 4, Alignment => 2, ByteOrder => 'BigEndian', EnumType => 'Both' ); }; is($@, '', "create Convert::Binary::C::Cached object with arguments"); is(ref $p, 'Convert::Binary::C::Cached', "blessed Convert::Binary::C::Cached reference"); if (@warn) { my $ok = 1; printf "# %d warning(s) issued:\n", scalar @warn; for (@warn) { diag($_); /Cannot load (?:Data::Dumper|IO::File), disabling cache at $0/ or $ok = 0; } ok($ok, 'warnings'); } else { pass('warnings') } #=================================================================== # check unknown options in constructor (2 tests) #=================================================================== eval { $p = Convert::Binary::C->new( FOO => 123, ByteOrder => 'BigEndian', BAR => ['abc'] ); }; like($@, qr/Invalid option 'FOO' at \Q$0/); eval { $p = Convert::Binary::C::Cached->new( FOO => 123, ByteOrder => 'BigEndian', BAR => ['abc'] ); }; like($@, qr/Invalid option 'FOO' at \Q$0/); #=================================================================== # check invalid construction (2 tests) #=================================================================== eval { $p = Convert::Binary::C->new( FOO ); }; like($@, qr/Number of configuration arguments to new must be even at \Q$0/); eval { $p = Convert::Binary::C::Cached->new( FOO ); }; like($@, qr/Number of configuration arguments to new must be even at \Q$0/); #=================================================================== # check invalid construction (2 tests) #=================================================================== eval { $p = Convert::Binary::C->new( ByteOrder => 'FOO' ); }; like($@, qr/ByteOrder must be.*not 'FOO' at \Q$0/); eval { $p = Convert::Binary::C::Cached->new( ByteOrder => 'FOO' ); }; like($@, qr/ByteOrder must be.*not 'FOO' at \Q$0/); #=================================================================== # check undefined feature (2 tests) #=================================================================== eval { $p = Convert::Binary::C::feature('foobar'); }; is($@, ''); ok(not defined $p); #=================================================================== # check calling feature as method (2 tests) #=================================================================== eval { $p = Convert::Binary::C->new; $p = $p->feature('debug'); }; is($@, ''); ok(defined $p); #=================================================================== # check object corruption (8 tests) #=================================================================== for my $class (qw(Convert::Binary::C Convert::Binary::C::Cached)) { eval { $p = $class->new }; is($@, ''); eval { $p->{''} = 0 }; like($@, qr/^Modification of a read-only value attempted/); $tmp = delete $p->{''}; eval { $p->clean }; like($@, qr/THIS is corrupt/); $p->{''} = $tmp; $e = {'' => $tmp}; bless $e, ref $p; eval { $e->clean }; like($@, qr/THIS->hv is corrupt/); # don't forget to rebless to avoid warnings during cleanup bless $e, 'main'; } Convert-Binary-C-0.85/tests/216_language.t0000644000175000001440000000733314677003452016723 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 43 } eval { $c = Convert::Binary::C->new; }; ok($@,'',"failed to create Convert::Binary::C object"); #------------------------ # check the void keyword #------------------------ eval { $c->clean->DisabledKeywords( [] ); $c->parse( "typedef int void;" ); }; ok($@, qr/(parse|syntax) error/); eval { $c->clean->DisabledKeywords( ['void'] ); $c->parse( "typedef int void;" ); @td = $c->typedef_names; }; ok($@,''); ok( scalar @td, 1 ); ok( $td[0], 'void' ); #------------------------ # check the C99 keywords #------------------------ eval { $c->clean->DisabledKeywords( [] ); $c->parse( "struct inline { int restrict; };" ); }; ok($@, qr/(parse|syntax) error/); eval { $c->clean->DisabledKeywords( [qw( inline restrict )] ); $c->parse( "struct inline { int restrict; };" ); @st = $c->struct_names; }; ok($@, ''); ok( scalar @st, 1 ); ok( $st[0], 'inline' ); my @c99decl = ( 'void funky(const int * const restrict foo[const restrict 8]);', 'void funky(const int * const foo[const restrict 8]);', 'void funky(const int * const foo[static const restrict 8]);', 'void funky(const int * const foo[const restrict static 8]);', 'void funky(const int * const foo[static 8]);', 'void funky(restrict int * const foo[restrict 8]);', ); $c->DisabledKeywords([]); for my $c99 (@c99decl) { eval { $c->clean->parse($c99) }; ok($@, ''); } #-------------------- # check C++ comments #-------------------- eval { $c->clean->DisabledKeywords( [] ); $c->parse( "struct foo { int a[8//*comment*/4]; };\n" ) }; ok($@, qr/(parse|syntax) error/); eval { $c->clean->HasCPPComments( 0 ); $c->parse( "struct foo { char a[8//*comment*/4]; };\n" ); $s = $c->sizeof('foo'); }; ok($@, ''); ok( $s, 2 ); #----------------------------- # check (some) GNU extensions #----------------------------- eval { $c->clean->parse( "typedef __signed __extension__ long long _signed;" ); }; ok($@, qr/(parse|syntax) error/); eval { $c->clean->Define( qw( __signed=signed __extension__= ) ); $c->parse( "typedef __signed __extension__ long long _signed;" ); }; ok($@, ''); eval { $c->clean->parse( <clean->KeywordMap( { __signed => 'signed', __extension__ => undef } ); $c->parse( <clean->Define( [] ); $c->parse( <clean->parse( <clean->DisabledKeywords( ['signed'] ); $c->parse( <clean->parse("$code\n"); $s = $c->sizeof('test'); @m = $c->member('test'); }; ok($@, '', $code); ok($s, 0); ok(scalar @m, 0); } Convert-Binary-C-0.85/tests/235_basic.t0000644000175000001440000000240714677003452016217 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 54 } my $c = Convert::Binary::C->new; for my $t ( 'char' , 'signed char' , 'unsigned char' , 'short' , 'signed short' , 'unsigned short' , 'short int' , 'signed short int' , 'unsigned short int' , 'int' , 'signed int' , 'unsigned int' , 'long' , 'signed long' , 'unsigned long' , 'long int' , 'signed long int' , 'unsigned long int' , 'long long int' , 'signed long long int' , 'unsigned long long int' , 'long long' , 'signed long long' , 'unsigned long long' , 'float' , 'double' , 'long double' ) { my $in = $t; $in =~ s/\b/ /g; ok($c->typeof($in), $t); ok($c->sizeof($in) > 0); } Convert-Binary-C-0.85/tests/207_typedef.t0000644000175000001440000000564514677003452016604 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 30 } eval { $c = Convert::Binary::C->new; }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $c->parse(<<'EOF'); /* just some C stuff */ typedef struct car truck, mobile[3], *vehicle; typedef enum { MONDAY, JANUARY, Y2K } day, month[4][5], *year; struct car { int wheel; int gear; }; /* the only way to execute the default_declaring_list */ /* rule is some strange construct like this... */ typedef const foo, *bar, baz[2][3]; EOF }; ok($@,'',"parse() failed"); # catch all warnings for further checks $SIG{__WARN__} = sub { push @warn, $_[0] }; sub chkwarn { ok( scalar @warn, scalar @_, "wrong number of warnings" ); ok( shift @warn, $_ ) for @_; @warn = (); } #----------------------------------------------------- # check what has been parsed... #----------------------------------------------------- @names = eval { $c->typedef_names }; ok( $@, '' ); $n_names = eval { $c->typedef_names }; ok( $@, '' ); @defs = eval { $c->typedef }; ok( $@, '' ); $n_defs = eval { $c->typedef }; ok( $@, '' ); ok( $n_names, 9, "wrong number of typedefs has been parsed" ); ok( $n_names, $n_defs, "typedef_names/typedef mismatch" ); ok( scalar @names, $n_names, "typedef_names array/scalar mismatch" ); ok( scalar @defs, $n_defs, "typedef array/scalar mismatch" ); #----------------------------------------------------- # some heavy typedefing ;-) #----------------------------------------------------- eval { $c->clean->IntSize(4)->parse(<def('f') }; ok( $@, '' ); ok( $r,'typedef'); $r = eval { $c->offsetof('f', '[1][2]+1') }; ok( $@, '' ); ok( $r, 29 ); $r = eval { $c->offsetof('f[9]', '[1]+2') }; ok( $@, '' ); ok( $r, 6 ); $r = eval { $c->sizeof('f[9]') }; ok( $@, '' ); ok( $r, 20 ); $r = eval { $c->sizeof('g') }; ok( $@, '' ); ok( $r, 400 ); $r = eval { $c->typeof('f[9]') }; ok( $@, '' ); ok( $r, 'd' ); $r = eval { $c->member('f', 29) }; ok( $@, '' ); ok( $r, '[1][2]+1' ); $r = eval { $c->member('f[9]', 6) }; ok( $@, '' ); ok( $r, '[1]+2' ); $r = eval { $c->member('g', 256) }; ok( $@, '' ); ok( $r, '[1].x[2][4]' ); ok( scalar @warn, 0, "unexpected warnings" ); print "# $_" for @warn; Convert-Binary-C-0.85/tests/234_format.t0000644000175000001440000001326214677003452016426 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 148 } # TODO: different alignments my $c = Convert::Binary::C->new( ByteOrder => 'LittleEndian', IntSize => 4, CharSize => 1, EnumSize => 4 ); eval { $c->parse(<tag($_, Format => 'String') }; ok($@, ''); } for (qw( xxx flexbin )) { eval { $c->tag($_, Format => 'Binary') }; ok($@, ''); } ok($c->unpack('string', "Hello\0Worl"), "Hello"); ok($c->unpack('test.type', "Foo\0Bar!!!"), "Foo"); $data = "Hello World\0Flex Array"; ok($c->unpack('test.flex', $data), "Hell"); ok($c->unpack('flexbin', $data), $data); eval { $c->tag('flexbin', Format => 'Binary'); $c->tag('u_8', Format => 'String'); }; ok($@,''); ok($c->pack('flexbin', undef), ''); ok($c->pack('u_8', undef), "\x00"); ok($c->pack('xxx', undef), "\x00"x12); eval { $c->tag('u_8', Format => undef) }; ok($@,''); eval { $c->tag('flexbin', Format => 'String') }; ok($@,''); ok($c->unpack('flexbin', $data), "Hello World"); ok($c->pack('flexbin', undef), ''); eval { $c->tag('test.flex', Format => undef) }; ok($@,''); eval { $c->tag('test.flex.y', Format => 'String') }; ok($@,''); $data = "XXXXHello World\0Flex Array"; $rv = $c->unpack('test.flex', $data); ok($rv->{x} != 0); ok($rv->{y}, "Hello World"); eval { $c->tag('test.flex.y', Format => 'Binary') }; ok($@,''); $rv = $c->unpack('test.flex', $data); ok($rv->{x} != 0); ok($rv->{y}, "Hello World\0Flex Arr"); $data = 'X' x $c->sizeof('test'); substr($data, $c->offsetof('test', 'type'), 8) = "String!\0"; substr($data, $c->offsetof('test', 'yyy'), 12) = "Hello,\0World"; $rv = $c->unpack('test', $data); ok($rv->{type}, "String!"); ok($rv->{yyy}, "Hello,\0World"); eval { $c->tag('array', Format => 'String') }; ok($@, ''); $rv = $c->unpack('array', "Hello"); ok($rv, "Hell"); eval { $c->tag('array', Format => 'Binary') }; ok($@, ''); $rv = $c->unpack('array', "Hello\0W"); ok($rv, "Hell"); $c->Alignment(4); eval { $c->tag('xxx', Format => 'String') }; ok($@, ''); $string = "The big brown fox jumps over the lazy dog.\0Just another Perl hacker,\n"; $data = pack("Vc10C13xVVVV", 123456789, 65 .. 74, 200 .. 212, 111111111, 222222222, 333333333, 444444444) . $string; $rv = $c->unpack('test', $data); ok($rv->{version}, 123456789); ok($rv->{type}, join '', map chr, 65 .. 74); ok(join(':', @{$rv->{data}}), join(':', 200 .. 212)); ok($rv->{binary}{a}, 111111111); ok($rv->{binary}{b}, 222222222); ok($rv->{binary}{c}, 333333333); ok($rv->{flex}{x}, 444444444); ok($rv->{flex}{y}, "The big brown fox jumps over the lazy dog.\0Just another Perl hacker,"); ok($rv->{pad_it}, ord 'T'); ok($rv->{yyy}, 'big brown fo'); eval { $c->tag('test.flex.y', Format => 'String') }; ok($@, ''); $old_rv = $rv = $c->unpack('test', $data); ok($rv->{version}, 123456789); ok($rv->{type}, join '', map chr, 65 .. 74); ok(join(':', @{$rv->{data}}), join(':', 200 .. 212)); ok($rv->{binary}{a}, 111111111); ok($rv->{binary}{b}, 222222222); ok($rv->{binary}{c}, 333333333); ok($rv->{flex}{x}, 444444444); ok($rv->{flex}{y}, 'The big brown fox jumps over the lazy dog.'); ok($rv->{pad_it}, ord 'T'); ok($rv->{yyy}, 'big brown fo'); eval { $c->tag('test.flex', Format => 'Binary') }; ok($@, ''); $rv = $c->unpack('test', $data); ok($rv->{flex}, pack 'V', 444444444); eval { $c->tag('test.flex', Format => undef) }; ok($@, ''); $rv = $c->pack('test', $old_rv); $data =~ s/\x00[^\x00]+$/\x00\x00/; ok($rv, $data); eval { $c->tag('weekday', Format => 'Binary', Hooks => { pack => sub { push @p, @_; pack 'V', $_[0] }, unpack => sub { push @u, @_; $_[0] ? unpack 'V', $_[0] : undef } }); }; ok($@, ''); $rv = $c->pack('weekday', 2); ok($rv, pack('V', 2)); ok(scalar @p, 1); ok($p[0], 2); $rv = $c->unpack('weekday', pack('V', 3)); ok($rv, 3); ok(scalar @u, 1); ok($u[0], pack('V', 3)); @p = (); @u = (); { my @w; local $SIG{__WARN__} = sub { push @w, @_ }; $rv = $c->unpack('weekday', 'x'); ok(scalar @w, 1); ok($w[0], qr/Data too short/); ok(not defined $rv); ok(scalar @u, 1); ok($u[0], ''); @w = (); $rv = $c->unpack('array', 'x'); ok(scalar @w, 0); ok($rv, ''); } eval { $c->tag('multi', Format => 'Binary') }; ok($@, ''); for (0 .. 23) { $rv = $c->unpack('multi', 'x'x$_); ok($rv, ''); } for (24 .. 47) { $rv = $c->unpack('multi', 'x'x$_); ok($rv, 'x'x24); } $rv = $c->unpack('multi', 'abcd'x12); ok($rv, 'abcd'x12); $rv = $c->pack('multi', ''); ok($rv, ''); for (1 .. 24) { $rv = $c->pack('multi', 'x'x$_); ok($rv, ('x'x$_).("\x00"x(24-$_))); } eval { $c->tag('multi', Format => 'String') }; ok($@, ''); $rv = $c->pack('multi', ''); ok($rv, "\x00"x24); # ----------------- # bitfields cannot be tagged eval { $c->tag('bits.y', Format => 'Binary'); }; ok($@, qr/Cannot use 'Format' tag on bitfields/); Convert-Binary-C-0.85/tests/230_compiler.t0000644000175000001440000000263514677003452016746 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; use vars '%config'; $^W = 1; BEGIN { %cc = map { /^(.*?([\w-]+))\.cfg$/ ? ( $2 => { cfg => "$1.cfg", bin => "$1.bin", dat => "$1.dat" } ) : () } glob 'tests/compiler/*.cfg'; plan tests => 2 * keys %cc; } sub slurp { my $file = shift; local *F; open F, $file or die "$file: $!\n"; my $data = do { local $/; }; close F; return $data; } for my $cur (sort keys %cc) { print "# -- $cur --\n"; my $dat = eval slurp($cc{$cur}{dat}); my $bin = slurp($cc{$cur}{bin}); $bin =~ s/\s+//gms; $bin = pack "H*", $bin; do "./$cc{$cur}{cfg}"; my $c = Convert::Binary::C->new( %config ); $c->parse_file('tests/compiler/test.h'); my $pck = $c->pack('test', $dat); my $pass = 0; my $fail = 0; for my $i (0 .. $c->sizeof('test')-1) { my $a = ord substr $pck, $i, 1; my $b = ord substr $bin, $i, 1; next if $b == 0; $pass++; next if $a == $b; $fail++; print "# [$i] $a != $b\n"; } print "# pass=$pass fail=$fail\n"; ok($pass > 0); ok($fail == 0); } Convert-Binary-C-0.85/tests/240_offsetof.t0000644000175000001440000002513314677003452016746 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 377; use Convert::Binary::C @ARGV; my $c = Convert::Binary::C->new( IntSize => 4, CharSize => 1, Alignment => 1 ); eval { $c->parse(<<'ENDC'); struct normal { int a; char b[3]; char c[3][3][3]; }; struct flexible { int a; char b[]; }; ENDC }; is($@, '', "parse C code"); my @tests = ( [ 'normal', 'a' => 0 ], [ 'normal', 'b' => 4 ], [ 'normal', 'b[0]' => 4 ], [ 'normal', 'b[1]' => 5 ], [ 'normal', 'b[2]' => 6 ], [ 'normal', 'b[3]' => 7 ], [ 'normal', 'b[4]' => 8 ], [ 'normal', 'b[+4]' => 8 ], [ 'normal', 'b[+1000000]' => 1000004 ], [ 'normal', 'b[-0]' => 4 ], [ 'normal', 'b[-1]' => 3 ], [ 'normal', 'b[-2]' => 2 ], [ 'normal', 'b[-3]' => 1 ], [ 'normal', 'b[-4]' => 0 ], [ 'normal', 'b[-5]' => -1 ], [ 'normal', 'b[-1000000]' => -999996 ], [ 'normal', 'c' => 7 ], [ 'normal', 'c[0]' => 7 ], [ 'normal', 'c[+1]' => 16 ], [ 'normal', 'c[-1]' => -2 ], [ 'normal', 'c[+100]' => 907 ], [ 'normal', 'c[-100]' => -893 ], [ 'normal', 'c[0][0]' => 7 ], [ 'normal', 'c[0][+1]' => 10 ], [ 'normal', 'c[0][-1]' => 4 ], [ 'normal', 'c[0][+100]' => 307 ], [ 'normal', 'c[0][-100]' => -293 ], [ 'normal', 'c[+1][0]' => 16 ], [ 'normal', 'c[+1][+1]' => 19 ], [ 'normal', 'c[+1][-1]' => 13 ], [ 'normal', 'c[+1][+100]' => 316 ], [ 'normal', 'c[+1][-100]' => -284 ], [ 'normal', 'c[-1][0]' => -2 ], [ 'normal', 'c[-1][+1]' => 1 ], [ 'normal', 'c[-1][-1]' => -5 ], [ 'normal', 'c[-1][+100]' => 298 ], [ 'normal', 'c[-1][-100]' => -302 ], [ 'normal', 'c[+100][0]' => 907 ], [ 'normal', 'c[+100][+1]' => 910 ], [ 'normal', 'c[+100][-1]' => 904 ], [ 'normal', 'c[+100][+100]' => 1207 ], [ 'normal', 'c[+100][-100]' => 607 ], [ 'normal', 'c[-100][0]' => -893 ], [ 'normal', 'c[-100][+1]' => -890 ], [ 'normal', 'c[-100][-1]' => -896 ], [ 'normal', 'c[-100][+100]' => -593 ], [ 'normal', 'c[-100][-100]' => -1193 ], [ 'normal', 'c[0][0][0]' => 7 ], [ 'normal', 'c[0][0][+1]' => 8 ], [ 'normal', 'c[0][0][-1]' => 6 ], [ 'normal', 'c[0][0][+100]' => 107 ], [ 'normal', 'c[0][0][-100]' => -93 ], [ 'normal', 'c[0][+1][0]' => 10 ], [ 'normal', 'c[0][+1][+1]' => 11 ], [ 'normal', 'c[0][+1][-1]' => 9 ], [ 'normal', 'c[0][+1][+100]' => 110 ], [ 'normal', 'c[0][+1][-100]' => -90 ], [ 'normal', 'c[0][-1][0]' => 4 ], [ 'normal', 'c[0][-1][+1]' => 5 ], [ 'normal', 'c[0][-1][-1]' => 3 ], [ 'normal', 'c[0][-1][+100]' => 104 ], [ 'normal', 'c[0][-1][-100]' => -96 ], [ 'normal', 'c[0][+100][0]' => 307 ], [ 'normal', 'c[0][+100][+1]' => 308 ], [ 'normal', 'c[0][+100][-1]' => 306 ], [ 'normal', 'c[0][+100][+100]' => 407 ], [ 'normal', 'c[0][+100][-100]' => 207 ], [ 'normal', 'c[0][-100][0]' => -293 ], [ 'normal', 'c[0][-100][+1]' => -292 ], [ 'normal', 'c[0][-100][-1]' => -294 ], [ 'normal', 'c[0][-100][+100]' => -193 ], [ 'normal', 'c[0][-100][-100]' => -393 ], [ 'normal', 'c[+1][0][0]' => 16 ], [ 'normal', 'c[+1][0][+1]' => 17 ], [ 'normal', 'c[+1][0][-1]' => 15 ], [ 'normal', 'c[+1][0][+100]' => 116 ], [ 'normal', 'c[+1][0][-100]' => -84 ], [ 'normal', 'c[+1][+1][0]' => 19 ], [ 'normal', 'c[+1][+1][+1]' => 20 ], [ 'normal', 'c[+1][+1][-1]' => 18 ], [ 'normal', 'c[+1][+1][+100]' => 119 ], [ 'normal', 'c[+1][+1][-100]' => -81 ], [ 'normal', 'c[+1][-1][0]' => 13 ], [ 'normal', 'c[+1][-1][+1]' => 14 ], [ 'normal', 'c[+1][-1][-1]' => 12 ], [ 'normal', 'c[+1][-1][+100]' => 113 ], [ 'normal', 'c[+1][-1][-100]' => -87 ], [ 'normal', 'c[+1][+100][0]' => 316 ], [ 'normal', 'c[+1][+100][+1]' => 317 ], [ 'normal', 'c[+1][+100][-1]' => 315 ], [ 'normal', 'c[+1][+100][+100]' => 416 ], [ 'normal', 'c[+1][+100][-100]' => 216 ], [ 'normal', 'c[+1][-100][0]' => -284 ], [ 'normal', 'c[+1][-100][+1]' => -283 ], [ 'normal', 'c[+1][-100][-1]' => -285 ], [ 'normal', 'c[+1][-100][+100]' => -184 ], [ 'normal', 'c[+1][-100][-100]' => -384 ], [ 'normal', 'c[-1][0][0]' => -2 ], [ 'normal', 'c[-1][0][+1]' => -1 ], [ 'normal', 'c[-1][0][-1]' => -3 ], [ 'normal', 'c[-1][0][+100]' => 98 ], [ 'normal', 'c[-1][0][-100]' => -102 ], [ 'normal', 'c[-1][+1][0]' => 1 ], [ 'normal', 'c[-1][+1][+1]' => 2 ], [ 'normal', 'c[-1][+1][-1]' => 0 ], [ 'normal', 'c[-1][+1][+100]' => 101 ], [ 'normal', 'c[-1][+1][-100]' => -99 ], [ 'normal', 'c[-1][-1][0]' => -5 ], [ 'normal', 'c[-1][-1][+1]' => -4 ], [ 'normal', 'c[-1][-1][-1]' => -6 ], [ 'normal', 'c[-1][-1][+100]' => 95 ], [ 'normal', 'c[-1][-1][-100]' => -105 ], [ 'normal', 'c[-1][+100][0]' => 298 ], [ 'normal', 'c[-1][+100][+1]' => 299 ], [ 'normal', 'c[-1][+100][-1]' => 297 ], [ 'normal', 'c[-1][+100][+100]' => 398 ], [ 'normal', 'c[-1][+100][-100]' => 198 ], [ 'normal', 'c[-1][-100][0]' => -302 ], [ 'normal', 'c[-1][-100][+1]' => -301 ], [ 'normal', 'c[-1][-100][-1]' => -303 ], [ 'normal', 'c[-1][-100][+100]' => -202 ], [ 'normal', 'c[-1][-100][-100]' => -402 ], [ 'normal', 'c[+100][0][0]' => 907 ], [ 'normal', 'c[+100][0][+1]' => 908 ], [ 'normal', 'c[+100][0][-1]' => 906 ], [ 'normal', 'c[+100][0][+100]' => 1007 ], [ 'normal', 'c[+100][0][-100]' => 807 ], [ 'normal', 'c[+100][+1][0]' => 910 ], [ 'normal', 'c[+100][+1][+1]' => 911 ], [ 'normal', 'c[+100][+1][-1]' => 909 ], [ 'normal', 'c[+100][+1][+100]' => 1010 ], [ 'normal', 'c[+100][+1][-100]' => 810 ], [ 'normal', 'c[+100][-1][0]' => 904 ], [ 'normal', 'c[+100][-1][+1]' => 905 ], [ 'normal', 'c[+100][-1][-1]' => 903 ], [ 'normal', 'c[+100][-1][+100]' => 1004 ], [ 'normal', 'c[+100][-1][-100]' => 804 ], [ 'normal', 'c[+100][+100][0]' => 1207 ], [ 'normal', 'c[+100][+100][+1]' => 1208 ], [ 'normal', 'c[+100][+100][-1]' => 1206 ], [ 'normal', 'c[+100][+100][+100]' => 1307 ], [ 'normal', 'c[+100][+100][-100]' => 1107 ], [ 'normal', 'c[+100][-100][0]' => 607 ], [ 'normal', 'c[+100][-100][+1]' => 608 ], [ 'normal', 'c[+100][-100][-1]' => 606 ], [ 'normal', 'c[+100][-100][+100]' => 707 ], [ 'normal', 'c[+100][-100][-100]' => 507 ], [ 'normal', 'c[-100][0][0]' => -893 ], [ 'normal', 'c[-100][0][+1]' => -892 ], [ 'normal', 'c[-100][0][-1]' => -894 ], [ 'normal', 'c[-100][0][+100]' => -793 ], [ 'normal', 'c[-100][0][-100]' => -993 ], [ 'normal', 'c[-100][+1][0]' => -890 ], [ 'normal', 'c[-100][+1][+1]' => -889 ], [ 'normal', 'c[-100][+1][-1]' => -891 ], [ 'normal', 'c[-100][+1][+100]' => -790 ], [ 'normal', 'c[-100][+1][-100]' => -990 ], [ 'normal', 'c[-100][-1][0]' => -896 ], [ 'normal', 'c[-100][-1][+1]' => -895 ], [ 'normal', 'c[-100][-1][-1]' => -897 ], [ 'normal', 'c[-100][-1][+100]' => -796 ], [ 'normal', 'c[-100][-1][-100]' => -996 ], [ 'normal', 'c[-100][+100][0]' => -593 ], [ 'normal', 'c[-100][+100][+1]' => -592 ], [ 'normal', 'c[-100][+100][-1]' => -594 ], [ 'normal', 'c[-100][+100][+100]' => -493 ], [ 'normal', 'c[-100][+100][-100]' => -693 ], [ 'normal', 'c[-100][-100][0]' => -1193 ], [ 'normal', 'c[-100][-100][+1]' => -1192 ], [ 'normal', 'c[-100][-100][-1]' => -1194 ], [ 'normal', 'c[-100][-100][+100]' => -1093 ], [ 'normal', 'c[-100][-100][-100]' => -1293 ], [ 'flexible', 'a' => 0 ], [ 'flexible', 'b' => 4 ], [ 'flexible', 'b[0]' => 4 ], [ 'flexible', 'b[1]' => 5 ], [ 'flexible', 'b[2]' => 6 ], [ 'flexible', 'b[3]' => 7 ], [ 'flexible', 'b[4]' => 8 ], [ 'flexible', 'b[+4]' => 8 ], [ 'flexible', 'b[+1000000]' => 1000004 ], [ 'flexible', 'b[-0]' => 4 ], [ 'flexible', 'b[-1]' => 3 ], [ 'flexible', 'b[-2]' => 2 ], [ 'flexible', 'b[-3]' => 1 ], [ 'flexible', 'b[-4]' => 0 ], [ 'flexible', 'b[-5]' => -1 ], [ 'flexible', 'b[-1000000]' => -999996 ], ); for my $t (@tests) { my $offs = eval { $c->offsetof($t->[0], $t->[1]) }; is($@, '', "eval { offsetof($t->[0], $t->[1]) }"); is($offs, $t->[2], "offsetof($t->[0], $t->[1]) == $t->[2]"); } Convert-Binary-C-0.85/tests/215_local.t0000644000175000001440000000315114677003452016223 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 9; } my $CCCFG = require './tests/include/config.pl'; eval { $c = Convert::Binary::C->new; }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( <<'ENDC' ); enum Zoo { APE, BEAR }; static int a = 23; static int test( int abc ) { int x, y; y = abc; x = y * y; return x; } static void foo( void ) { enum Bar { FOO, BAR } xxx; typedef enum _foo foo; struct _bar { int test; struct _bar *xxx; }; { enum Bar; struct _bar; } } typedef unsigned long u_32; static void bar( void ) { enum Bar { BAR, FOO } xxx; typedef enum _foo foo; struct _bar { int test; struct _bar *xxx; }; } struct _bar { int foo; }; ENDC }; ok($@,'',"failed to parse code"); # check that only global types have been parsed eval { @enum = $c->enum; @comp = $c->compound; @type = $c->typedef; }; ok($@,'',"failed to get types"); ok( scalar @enum, 1, "got more/less enums than expected" ); ok( scalar @comp, 1, "got more/less compounds than expected" ); ok( scalar @type, 1, "got more/less typedefs than expected" ); ok( $enum[0]{identifier}, "Zoo" ); ok( $comp[0]{identifier}, "_bar" ); ok( $type[0]{declarator}, "u_32" ); Convert-Binary-C-0.85/tests/203_warnings.t0000644000175000001440000017366014677003452016773 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; use Convert::Binary::C::Cached; $^W = 1; BEGIN { plan tests => 7302 } my($code, $data); $code = do { local $/; }; $data = "abcd"; my %code = ( macro => <<'ENDC', #define FOO 1 #define FOO 2 ENDC assert => <<'ENDC', #assert THIS(is) garbage #assert VOID() ENDC assert_syntax => <<'ENDC', #assert TEST(assertion) #if #TEST () /* this is a syntax error */ #endif ENDC include => <<'ENDC', #include ENDC endif => <<'ENDC', #ifdef FOO BLABLA #endif #endif ENDC else => <<'ENDC', #else ENDC elif => <<'ENDC', #elif 1 ENDC unknown => <<'ENDC', #foobar ENDC pragma_pack_1 => <<'ENDC', #pragma pack(1) struct foo { int x; }; #pragma pack(3) ENDC pragma_pack_2 => <<'ENDC', #pragma pack(push, 5) struct foo { int x; }; #pragma pack(0) ENDC pragma_pack_3 => <<'ENDC', #pragma pack(1) struct foo { int x; }; #pragma pack(0) ENDC ); eval_test(q{ $p->configure; # (1) Useless use of configure in void context Convert::Binary::C::feature('foo'); # (1) Useless use of feature in void context $p->feature('foo'); # (1) Useless use of feature in void context $x = Convert::Binary::C::feature(); # (E) Usage: Convert::Binary::C::feature(feat) $x = Convert::Binary::C::feature(1, 2); # (E) Usage: Convert::Binary::C::feature(feat) $x = $p->feature(); # (E) Usage: Convert::Binary::C::feature(feat) $x = $p->feature(1, 2); # (E) Usage: Convert::Binary::C::feature(feat) Convert::Binary::C::native('IntSize'); # (1) Useless use of native in void context $p->native('IntSize'); # (1) Useless use of native in void context $x = Convert::Binary::C::native('foo', 'bar'); # (E) Usage: Convert::Binary::C::native(property) $x = $p->native('foo', 'bar'); # (E) Usage: Convert::Binary::C::native(property) $x = $p->native('foobar'); # (E) Invalid property 'foobar' $p->member('xxx', 666); # (E) Call to member without parse data $p->def('xxx'); # (1) Useless use of def in void context $p->pack('xxx', {foo=>123}); # (1) Useless use of pack in void context $p->unpack('xxx', 'yyy'); # (1) Useless use of unpack in void context $p->sizeof('xxx'); # (1) Useless use of sizeof in void context $p->typeof('xxx'); # (1) Useless use of typeof in void context $p->offsetof('xxx', 'yyy'); # (E) Call to offsetof without parse data $p->member('xxx', 123); # (E) Call to member without parse data $p->enum_names; # (E) Call to enum_names without parse data $p->enum; # (E) Call to enum without parse data $p->compound_names; # (E) Call to compound_names without parse data $p->compound; # (E) Call to compound without parse data $p->struct_names; # (E) Call to struct_names without parse data $p->struct; # (E) Call to struct without parse data $p->union_names; # (E) Call to union_names without parse data $p->union; # (E) Call to union without parse data $p->typedef_names; # (E) Call to typedef_names without parse data $p->typedef; # (E) Call to typedef without parse data $p->dependencies; # (E) Call to dependencies without parse data $p->sourcify; # (E) Call to sourcify without parse data $p->macro_names; # (E) Call to macro_names without parse data $p->macro; # (E) Call to macro without parse data $p->defined('foo'); # (E) Call to defined without parse data $p->parse_file(''); # (E) Cannot find input file '' $p->parse_file('foobar.c'); # (E) Cannot find input file 'foobar.c' $p->Include('tests/include/files', 'include/files'); # no errors/warnings $p->parse_file('empty.h')->clean; # no errors/warnings // $p->parse_file('nlnone.h')->clean; # (2) file is not newline-terminated $p->parse_file('nlunix.h')->clean; # no errors/warnings $p->parse_file('nldos.h')->clean; # no errors/warnings $p->parse_file('nlmac.h')->clean; # no errors/warnings // $p->parse_file('ifnonl.h')->clean; # (2) file is not newline-terminated $p->parse('')->clean; # no errors/warnings $p->parse("typedef int foo;")->clean; # no errors/warnings $p->parse("typedef int foo;\n")->clean; # no errors/warnings $p->parse("typedef int foo;\r\n")->clean; # no errors/warnings $p->parse("typedef int foo;\r")->clean; # no errors/warnings $p->Define(qw( DEFINE=3 DEFINE=2 )); $p->parse(''); # (E) macro ... DEFINE ... redefined $p->Define(['=']); $p->parse(''); # (E) void macro name $p->Define(['=']); $p->Define(['FOO=']); $p->parse("#if\n#endif\n"); # (E) void condition for a #if/#elif $p->parse("#if 0\n#elif\n#endif\n"); # (E) void condition for a #if/#elif $p->parse("#if FOO\n#endif\n"); # (E) void condition (after expansion) for a #if/#elif $p->parse("#if 0\n#elif FOO\n#endif\n"); # (E) void condition (after expansion) for a #if/#elif $p->Assert(qw{ PRED(answer) 1(foo) }); $p->parse(''); # (E) illegal assertion name for #assert $p->Assert([qw{ PRED(answer) SYNTAX) }]); $p->parse(''); # (E) syntax error in #assert $p->Assert([qw{ PRED(answer) UNFINISHED( }]); $p->parse(''); # (E) unfinished #assert $p->Assert([]); $x = $p->pack('signed int', 1); # no warning $x = $p->unpack('signed int', $x); # no warning $x = $p->sizeof('long long'); # no warning $x = $p->typeof('long double'); # no warning $p->parse($code{pragma_pack_1}); # (E) line 5: invalid argument 3 to #pragma pack $p->parse($code{pragma_pack_2}); # (E) line 1: invalid argument 5 to #pragma pack $p->parse($code{pragma_pack_3}); # no warning $p->parse($code{macro}); # (E) macro ... FOO ... redefined $p->parse($code{assert}); # (2) (warning) ... trailing garbage in #assert # (E) void assertion in #assert $p->parse($code{assert_syntax}); # (E) syntax error for assertion in #if $p->parse($code{include}); # (E) file ... not_here.h ... not found $p->parse($code{endif}); # (2) (warning) ... trailing garbage in #ifdef # (E) unmatched #endif $p->parse($code{else}); # (E) rogue #else $p->parse($code{elif}); # (E) rogue #elif $p->parse($code{unknown}); # (E) unknown cpp directive '#foobar' $p->parse($code); # (2) (warning) ... trailing garbage in #assert # (2) (warning) ... trailing garbage in #ifdef $p->def('xxx'); # (1) Useless use of def in void context $p->dependencies; # (1) Useless use of dependencies in void context $p->sourcify; # (1) Useless use of sourcify in void context $p->clone; # (1) Useless use of clone in void context $p->configure(Include => 'Boo'); # (E) Include wants a reference to an array of strings $p->Include({ Boo => 'Boo' }); # (E) Include wants an array reference $p->Include('Boo', ['Boo']); # (E) Argument 2 to Include must not be a reference $p->Include(['Boo'], ['Boo']); # (E) Invalid number of arguments to Include $p->ByteOrder(['Boo']); # (E) ByteOrder must be a string value, not a reference $p->ByteOrder('Boo'); # (E) ByteOrder must be 'BigEndian' or 'LittleEndian', not 'Boo' $p->FloatSize([1]); # (E) FloatSize must be an integer value, not a reference $p->FloatSize(13); # (E) FloatSize must be 0, 1, 2, 4, 8, 12 or 16, not 13 $p->FloatSize(1); # no warning $p->StdCVersion([1]); # (E) StdCVersion must be undef or an integer value, not a reference $p->StdCVersion(undef); # no warnings $p->HostedC([1]); # (E) HostedC must be undef or a boolean value, not a reference $p->HostedC(undef); # no warnings $p->configure(DisabledKeywords => 42); # (E) DisabledKeywords wants a reference to an array of strings $p->configure(DisabledKeywords => { foo => 42 }); # (E) DisabledKeywords wants an array reference $p->configure(Bitfields => 42); # (E) Bitfields wants a hash reference $p->configure(Bitfields => []); # (E) Bitfields wants a hash reference $p->configure(Bitfields => { Engine => 'FooBar' }); # (E) Unknown bitfield layout engine 'FooBar' $p->configure(Bitfields => { Engine => 'Simple' }); # no warning $p->configure(Bitfields => { ByteOrder => 'BigEndian' }); # (E) Invalid option 'ByteOrder' for bitfield layout engine 'Simple' $p->configure(Bitfields => { NoSuchOption => 42 }); # (E) Invalid option 'NoSuchOption' for bitfield layout engine 'Simple' $x = $p->def(''); # no warning $x = $p->def('struct '); # no warning $x = $p->def('notthere'); # no warning $x = $p->sourcify; # no warning $x = $p->sourcify('foo'); # (E) Sourcification of individual types is not yet supported $x = $p->sourcify({ foo => 1 }, 'foo'); # (E) Sourcification of individual types is not yet supported $x = $p->sourcify([ 1 ], 'foo', 'bar'); # (E) Sourcification of individual types is not yet supported $x = $p->sourcify([ 1 ]); # (E) Need a hash reference for configuration options $x = $p->sourcify({ foo => 1 }); # (E) Invalid option 'foo' $x = $p->sourcify({ Context => 1 }); # no warning $p->pack('xxx', 'yyy'); # (1) Useless use of pack in void context $x = $p->pack('', 1); # (E) Cannot find '' $x = $p->pack('na', 'yyy'); # (E) Cannot find 'na' $x = $p->pack('nodef', 'yyy'); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->pack('xxx', 'yyy'); # (E) Got no definition for 'union xxx' $p->pack('na', 'yyy', $data); # (E) Cannot find 'na' $x = $p->pack('hasbf', {}); # no warning $x = $p->pack('t_unsafe', []); # (1) Unsafe values used in pack('t_unsafe') $x = $p->pack('s_unsafe', {}); # (1) Unsafe values used in pack('s_unsafe') $x = $p->pack('nonnative', 0); # [ ieeefp] (1) Cannot pack 1 byte floating point values # [!ieeefp] (1) Cannot pack non-native floating point values $p->pack('enum enu', 'A', ['xxxx']); # (E) Type of arg 3 to pack must be string $p->pack('enum enu', 'A', 'xxxx'); # (E) Modification of a read-only value attempted $x = $p->pack('enum enu', 'A', 'xxxx'); # no warning $x = $p->pack('test.foo', 23); # (1) 'test.foo' should be an array reference $x = $p->pack('test.foo', {}); # (1) 'test.foo' should be an array reference $x = $p->pack('test.foo', sub { 1 }); # (1) 'test.foo' should be an array reference $x = $p->pack('test.bar', []); # (1) 'test.bar' should be a scalar value $x = $p->pack('test.xxx', {}); # (1) 'test.xxx' should be a scalar value $x = $p->pack('test', {foo => {}}); # (1) 'test.foo' should be an array reference $x = $p->pack('test', {foo => [undef, {}] }); # (1) 'test.foo[1]' should be an array reference $x = $p->pack('test', {foo => [undef, [1]] }); # (1) 'test.foo[1][0]' should be a hash reference $x = $p->pack('test', {foo => [undef, [{a => {}}]]}); # (1) 'test.foo[1][0].a' should be a scalar value $x = $p->pack('test', {foo => [undef, [{b => {}}]]}); # (1) 'test.foo[1][0].b' should be an array reference $x = []; $x->[1]{d}[2] = 1; $x = $p->pack('stuff', $x); # (1) 'stuff[1].d[2]' should be an array reference $x = []; $x->[10]{u} = 1; $x = $p->pack('stuff', $x); # (1) 'stuff[10].u' should be a hash reference $x = []; $x->[11]{u} = [1]; $x = $p->pack('stuff', $x); # (1) 'stuff[11].u' should be a hash reference $x = []; $x->[8]{u}{b} = {}; $x = $p->pack('stuff', $x); # (1) 'stuff[8].u.b' should be an array reference $x = []; $x->[7]{u}{b} = [undef, {}]; $x = $p->pack('stuff', $x); # (1) 'stuff[7].u.b[1]' should be a scalar value $x = []; $x->[6]{d}[5][4] = undef; $x = $p->pack('stuff', $x); # no warning $x = []; $x->[6]{d}[5][4] = sub { 1 }; $x = $p->pack('stuff', $x); # (1) 'stuff[6].d[5][4]' should be a scalar value $x = $p->pack('unsigned char', 42); # no warning $x = $p->pack('double', 42); # no warning $x = $p->pack('short double', 42); # (E) Unsupported basic type 'short double' $x = $p->pack('fp_unsupp', 42); # (1) Unsupported floating point type 'short float' in pack $x = $p->pack('hasbf.bf', {}); # no warning $p->unpack('test', $data); # (1) Useless use of unpack in void context $x = $p->unpack('', $data); # (E) Cannot find '' $x = $p->unpack('na', $data); # (E) Cannot find 'na' $x = $p->unpack('nodef', $data); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->unpack('xxx', $data); # (E) Got no definition for 'union xxx' $x = $p->unpack('test', $data); # (1) Data too short @x = $p->unpack('test', $data); # no warning $x = $p->unpack('array', ''); # no warning $x = $p->unpack('hasbf', $data); # no warning $x = $p->unpack('t_unsafe', $data); # (1) Unsafe values used in unpack('t_unsafe') # (1) Data too short $x = $p->unpack('s_unsafe', $data); # (1) Unsafe values used in unpack('s_unsafe') # (1) Data too short $x = $p->unpack('nonnative', 'x'); # [ ieeefp] (1) Cannot unpack 1 byte floating point values # [!ieeefp] (1) Cannot unpack non-native floating point values $x = $p->unpack('multiple', 'x'x100); # (1) Member 'a' used more than once in struct multiple defined in [buffer](62) # (1) Member 'b' used more than once in union defined in [buffer](66) $x = $p->unpack('unsigned char', 'x'x100); # no warning $x = $p->unpack('double', 'x'x100); # no warning $x = $p->unpack('signed float', 'x'x100); # (E) Unsupported basic type 'signed float' $x = $p->unpack('fp_unsupp', 'x'x100); # (1) Unsupported floating point type 'short float' in unpack $x = $p->unpack('hasbf.bf', 'x'x100); # no warning $p->initializer('test'); # (1) Useless use of initializer in void context $p->initializer('test', $data); # (1) Useless use of initializer in void context $x = $p->initializer('', $data); # (E) Cannot find '' $x = $p->initializer('na'); # (E) Cannot find 'na' $x = $p->initializer('na', $data); # (E) Cannot find 'na' $x = $p->initializer('nodef', $data); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->initializer('xxx', $data); # (E) Got no definition for 'union xxx' $x = $p->initializer('test.foo', 23); # (1) 'test.foo' should be an array reference $x = $p->initializer('test.foo', {}); # (1) 'test.foo' should be an array reference $x = $p->initializer('test.foo', sub { 1 }); # (1) 'test.foo' should be an array reference $x = $p->initializer('test.bar', []); # (1) 'test.bar' should be a scalar value $x = $p->initializer('test.xxx', {}); # (1) 'test.xxx' should be a scalar value $x = $p->initializer('test', {foo => {}}); # (1) 'test.foo' should be an array reference $x = $p->initializer('test', {foo => [undef, {}] }); # (1) 'test.foo[1]' should be an array reference $x = $p->initializer('test', {foo => [undef, [1]] }); # (1) 'test.foo[1][0]' should be a hash reference $x = $p->initializer('test', {foo => [undef, [{a => {}}]]}); # (1) 'test.foo[1][0].a' should be a scalar value $x = $p->initializer('test', {foo => [undef, [{b => {}}]]}); # (1) 'test.foo[1][0].b' should be an array reference $x = []; $x->[1]{d}[2] = 1; $x = $p->initializer('stuff', $x); # (1) 'stuff[1].d[2]' should be an array reference $x = []; $x->[10]{c} = 1; $x = $p->initializer('stuff', $x); # (1) 'stuff[10].c' should be a hash reference $x = []; $x->[11]{c} = [1]; $x = $p->initializer('stuff', $x); # (1) 'stuff[11].c' should be a hash reference $x = []; $x->[8]{c}{b} = {}; $x = $p->initializer('stuff', $x); # (1) 'stuff[8].c.b' should be an array reference $x = []; $x->[7]{c}{b} = [undef, {}]; $x = $p->initializer('stuff', $x); # (1) 'stuff[7].c.b[1]' should be a scalar value $x = []; $x->[6]{d}[5][4] = undef; $x = $p->initializer('stuff', $x); # no warning $x = []; $x->[6]{d}[5][4] = sub { 1 }; $x = $p->initializer('stuff', $x); # (1) 'stuff[6].d[5][4]' should be a scalar value $p->sizeof('na'); # (1) Useless use of sizeof in void context $x = $p->sizeof(''); # (E) Cannot find '' $x = $p->sizeof('na'); # (E) Cannot find 'na' $x = $p->sizeof('long ='); # (E) Cannot find 'long =' $x = $p->sizeof('nodef'); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->sizeof('xxx'); # (E) Got no definition for 'union xxx' $x = $p->sizeof('hasbf'); # no warning $x = $p->sizeof('hasbf.bf.c'); # (E) Cannot use sizeof on bitfields $x = $p->sizeof('t_unsafe'); # (1) Unsafe values used in sizeof('t_unsafe') $x = $p->sizeof('s_unsafe'); # (1) Unsafe values used in sizeof('s_unsafe') $x = $p->sizeof('enum enu . foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->sizeof('enumtype.foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->sizeof('ptrtype.foo'); # (E) Cannot access member 'foo' of pointer type $x = $p->sizeof('scalar.foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->sizeof('enumtype [0]'); # (E) Cannot use type as an array $x = $p->sizeof('test.666'); # (E) Struct members must start with a character or an underscore $x = $p->sizeof('test.foo.d'); # (E) Cannot access member 'd' of array type $x = $p->sizeof('test.bar.d'); # (E) Cannot access member 'd' of non-compound type $x = $p->sizeof('test.yyy.d'); # (E) Cannot access member 'd' of pointer type $x = $p->sizeof('test.ptr.d'); # (E) Cannot access member 'd' of pointer type $x = $p->sizeof('test.xxx[1]'); # (E) Cannot use 'xxx' as an array $x = $p->sizeof('test.bar[1]'); # (E) Cannot use 'bar' as an array $x = $p->sizeof('test.bar()'); # (E) Invalid character '(' (0x28) in compound member expression $x = $p->sizeof('test.bar+'); # (E) Invalid character '+' (0x2B) in compound member expression $x = $p->sizeof('test.bar+a'); # (E) Invalid character '+' (0x2B) in compound member expression $x = $p->sizeof('test.bar a'); # (E) Invalid character 'a' (0x61) in compound member expression $x = $p->sizeof('test bar'); # (E) Invalid character 'b' (0x62) in compound member expression $x = $p->sizeof('test.bar+1'); # no warning $x = $p->sizeof('test.foo[1][2'); # (E) Incomplete compound member expression $x = $p->sizeof('test.foo[1][2].d'); # (E) Cannot find struct member 'd' $x = $p->sizeof('test.foo[a]'); # (E) Array indices must be constant decimal values $x = $p->sizeof('test.foo[0x1]'); # (E) Index operator not terminated correctly $x = $p->sizeof('test.foo[2]'); # no warning $x = $p->sizeof('test.foo[1][2][0]'); # (E) Cannot use 'foo' as a 3-dimensional array $x = $p->sizeof('array[1][2]'); # (E) Cannot use type as a 2-dimensional array $p->typeof('na'); # (1) Useless use of typeof in void context $x = $p->typeof(''); # (E) Cannot find '' $x = $p->typeof('na'); # (E) Cannot find 'na' $x = $p->typeof('nodef'); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->typeof('xxx'); # (E) Got no definition for 'union xxx' $x = $p->typeof('enum enu . foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->typeof('enumtype.foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->typeof('ptrtype.foo'); # (E) Cannot access member 'foo' of pointer type $x = $p->typeof('scalar.foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->typeof('enumtype [0]'); # (E) Cannot use type as an array $x = $p->typeof('test.666'); # (E) Struct members must start with a character or an underscore $x = $p->typeof('test.foo.d'); # (E) Cannot access member 'd' of array type $x = $p->typeof('test.bar.d'); # (E) Cannot access member 'd' of non-compound type $x = $p->typeof('test.yyy.d'); # (E) Cannot access member 'd' of pointer type $x = $p->typeof('test.ptr.d'); # (E) Cannot access member 'd' of pointer type $x = $p->typeof('test.xxx[1]'); # (E) Cannot use 'xxx' as an array $x = $p->typeof('test.bar[1]'); # (E) Cannot use 'bar' as an array $x = $p->typeof('test.bar()'); # (E) Invalid character '(' (0x28) in compound member expression $x = $p->typeof('test.bar+'); # (E) Invalid character '+' (0x2B) in compound member expression $x = $p->typeof('test.bar+a'); # (E) Invalid character '+' (0x2B) in compound member expression $x = $p->typeof('test.bar+1'); # no warning $x = $p->typeof('test.foo[1][2'); # (E) Incomplete compound member expression $x = $p->typeof('test.foo[1][2].d'); # (E) Cannot find struct member 'd' $x = $p->typeof('test.foo[a]'); # (E) Array indices must be constant decimal values $x = $p->typeof('test.foo[0x1]'); # (E) Index operator not terminated correctly $x = $p->typeof('test.foo[2]'); # no warning $x = $p->typeof('test.foo[1][2][0]'); # (E) Cannot use 'foo' as a 3-dimensional array $p->offsetof('xxx', 666); # (1) Useless use of offsetof in void context $x = $p->offsetof('', 666); # (E) Cannot find '' $x = $p->offsetof('abc', 666); # (E) Cannot find 'abc' $x = $p->offsetof('nodef', 666); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->offsetof('xxx', 666); # (E) Got no definition for 'union xxx' $x = $p->offsetof('ptrtype', '666'); # (E) Invalid character '6' (0x36) in compound member expression $x = $p->offsetof('scalar', '666'); # (E) Invalid character '6' (0x36) in compound member expression $x = $p->offsetof('enu', '666'); # (E) Invalid character '6' (0x36) in compound member expression $x = $p->offsetof('ptrtype', 'a66'); # (E) Cannot access member 'a66' of pointer type $x = $p->offsetof('scalar', 'a66'); # (E) Cannot access member 'a66' of non-compound type $x = $p->offsetof('enu', 'a66'); # (E) Cannot access member 'a66' of non-compound type $x = $p->offsetof('long int', 'a66'); # (E) Cannot access member 'a66' of non-compound type $x = $p->offsetof('test', 'foo[0][0].666'); # (E) Struct members must start with a character or an underscore $x = $p->offsetof('test', 'foo.d'); # (E) Cannot access member 'd' of array type $x = $p->offsetof('test', 'bar.d'); # (E) Cannot access member 'd' of non-compound type $x = $p->offsetof('test', 'yyy.d'); # (E) Cannot access member 'd' of pointer type $x = $p->offsetof('test', 'ptr.d'); # (E) Cannot access member 'd' of pointer type $x = $p->offsetof('test', 'xxx[1]'); # (E) Cannot use 'xxx' as an array $x = $p->offsetof('test', 'bar[1]'); # (E) Cannot use 'bar' as an array $x = $p->offsetof('test', 'bar()'); # (E) Invalid character '(' (0x28) in compound member expression $x = $p->offsetof('test', 'foo[1][2'); # (E) Incomplete compound member expression $x = $p->offsetof('test', 'foo[1][2].d'); # (E) Cannot find struct member 'd' $x = $p->offsetof('test', 'foo[a]'); # (E) Array indices must be constant decimal values $x = $p->offsetof('test', 'foo[0x1]'); # (E) Index operator not terminated correctly $x = $p->offsetof('test', 'foo[+'); # (E) Array indices must be constant decimal values $x = $p->offsetof('test', 'foo[+%'); # (E) Array indices must be constant decimal values $x = $p->offsetof('test', 'foo['); # (E) Incomplete compound member expression $x = $p->offsetof('test', 'foo[%'); # (E) Array indices must be constant decimal values $x = $p->offsetof('test', 'foo[ '); # (E) Incomplete compound member expression $x = $p->offsetof('test', 'foo[ %'); # (E) Array indices must be constant decimal values $x = $p->offsetof('test', 'foo[2]'); # no warning $x = $p->offsetof('test', 'foo[1][2][0]'); # (E) Cannot use 'foo' as a 3-dimensional array $x = $p->offsetof('array', '[1][2]'); # (E) Cannot use type as a 2-dimensional array $x = $p->offsetof('hasbf', 'nobf'); # no warning $x = $p->offsetof('s_unsafe', 'foo'); # (1) Unsafe values used in offsetof('s_unsafe') $x = $p->offsetof('test.bar', 'foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->offsetof('test.arx[3][4]', 'uni[3].str.c'); # (E) Cannot find struct member 'arx' $x = $p->offsetof('test.ary[3][4]', 'uni[3].bar.c'); # (E) Cannot find union member 'bar' $x = $p->offsetof('test.ary[3][4]', 'uni[3].str.c'); # (E) Cannot find struct member 'c' $x = $p->offsetof('test.ary[2][4]', 'uni[3].str.c'); # (E) Cannot find struct member 'c' $x = $p->offsetof('test.ary[2][3]', 'uni[6].str.c'); # (E) Cannot find struct member 'c' $x = $p->offsetof('test.ary[2][3]', 'uni[1].str.c'); # (E) Cannot find struct member 'c' $x = $p->offsetof('test.ary[2][3].uni.a', 'xxx'); # (E) Cannot access member 'a' of array type $x = $p->offsetof('test.ary[2][3].uni', 'xxx'); # (E) Cannot access member 'xxx' of array type $x = $p->offsetof('test.ary[2][3]', 'uni.xxx'); # (E) Cannot access member 'xxx' of array type $x = $p->offsetof('test.ary[2][3].uni[0].a', 'xxx'); # (E) Cannot access member 'xxx' of non-compound type $x = $p->offsetof('test.ary[2][3].uni[0].str.a', 'b'); # (E) Cannot access member 'b' of pointer type $x = $p->offsetof('test.ary[2][2]', 'uni'); # no warning $x = $p->offsetof('test.ary[2][2]', ''); # (1) Empty string passed as member expression $x = $p->offsetof('test.ary[2][2]', "\t "); # (1) Empty string passed as member expression $x = $p->offsetof('hasbf', 'bf'); # no warning $x = $p->offsetof('hasbf', 'bf.c'); # (E) Cannot use offsetof on bitfields $p->member('xxx', 6666); # (1) Useless use of member in void context $x = $p->member('', 6666); # (E) Cannot find '' $x = $p->member('abc', 6666); # (E) Cannot find 'abc' $x = $p->member('nodef', 6666); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->member('xxx', 6666); # (E) Got no definition for 'union xxx' $x = $p->member('ptrtype', 6666); # (E) Cannot use member on a pointer type $x = $p->member('scalar', 6666); # (E) Cannot use member on a basic type $x = $p->member('long long', 6666); # (E) Cannot use member on a basic type $x = $p->member('enu', 6666); # (E) Cannot use member on an enum $x = $p->member('test', 6666); # (E) Offset 6666 out of range $x = $p->member('test', -10); # (E) Offset -10 out of range $x = $p->member('hasbf', 1); # no warning $x = $p->member('s_unsafe', 1); # (1) Unsafe values used in member('s_unsafe') $x = $p->member('test.bar', 6666); # (E) Cannot use member on a basic type $x = $p->member('test.arx[3][4]', 6666); # (E) Cannot find struct member 'arx' $x = $p->member('test.ary[3][4]', 6666); # (E) Offset 6666 out of range $x = $p->member('test.ary[2][4]', 6666); # (E) Offset 6666 out of range $x = $p->member('test.ary[2][3]', 6666); # (E) Offset 6666 out of range $x = $p->member('test.ary[2][3].uni.a', 6666); # (E) Cannot access member 'a' of array type $x = $p->member('test.ary[2][3].uni', 0); # no error $x = $p->member('test.ary[2][3].uni[0].a', 6666); # (E) Cannot use member on an enum $x = $p->member('test.ary[2][3].uni[0].str.a', 6666); # (E) Cannot use member on a pointer type $p->member('xxx'); # (1) Useless use of member in void context $x = $p->member(''); # (E) Cannot find '' $x = $p->member('abc'); # (E) Cannot find 'abc' $x = $p->member('nodef'); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->member('xxx'); # (E) Got no definition for 'union xxx' $x = $p->member('ptrtype'); # (E) Cannot use member on a pointer type $x = $p->member('scalar'); # (E) Cannot use member on a basic type $x = $p->member('long long'); # (E) Cannot use member on a basic type $x = $p->member('enu'); # (E) Cannot use member on an enum $x = $p->member('hasbf'); # no warning $x = $p->member('s_unsafe'); # (1) Unsafe values used in member('s_unsafe') $x = $p->member('test.bar'); # (E) Cannot use member on a basic type $x = $p->member('test.arx[3][4]'); # (E) Cannot find struct member 'arx' $x = $p->member('test.ary[3][4]'); # no warning $x = $p->member('test.ary[2][4]'); # no warning $x = $p->member('test.ary[2][3].uni.a'); # (E) Cannot access member 'a' of array type $x = $p->member('test.ary[2][3].uni'); # no error $x = $p->member('test.ary[2][3].uni[0].a'); # (E) Cannot use member on an enum $x = $p->member('test.ary[2][3].uni[0].str.a'); # (E) Cannot use member on a pointer type $p->enum_names; # (1) Useless use of enum_names in void context $p->enum; # (1) Useless use of enum in void context $x = $p->enum('na'); # no warning $x = $p->enum('enum na'); # no warning @x = $p->enum('enu', ''); # no warning $x = $p->enum('enum enu'); # no warning $p->compound_names; # (1) Useless use of compound_names in void context $p->compound; # (1) Useless use of compound in void context @x = $p->compound('na', ''); # no warning $x = $p->compound('union na'); # no warning $x = $p->compound('struct na'); # no warning $x = $p->compound('__hasbf'); # no warning $x = $p->compound('test'); # no warning $x = $p->compound('struct __hasbf'); # no warning $x = $p->compound('union test'); # no warning $x = $p->compound('union __hasbf'); # no warning $x = $p->compound('struct test'); # no warning $p->struct_names; # (1) Useless use of struct_names in void context $p->struct; # (1) Useless use of struct in void context $x = $p->struct('na'); # no warning $x = $p->struct('union na'); # no warning $x = $p->struct('struct na'); # no warning $x = $p->struct('__hasbf'); # no warning $x = $p->struct('struct test'); # no warning $p->union_names; # (1) Useless use of union_names in void context $p->union; # (1) Useless use of union in void context $x = $p->union('na'); # no warning $x = $p->union('union na'); # no warning $x = $p->union('struct na'); # no warning $x = $p->union('test'); # no warning $x = $p->union('union __hasbf'); # no warning $p->typedef_names; # (1) Useless use of typedef_names in void context $p->typedef; # (1) Useless use of typedef in void context @x = $p->typedef('na', ''); # no warning $p->macro_names; # (1) Useless use of macro_names in void context $p->macro; # (1) Useless use of macro in void context $x = $p->macro('foo'); # no warning @x = $p->macro('foo', 'bar'); # no warning $x = $p->pack('e_unsafe', 'SAFE'); # no warning $x = $p->pack('e_unsafe', 'GOOD'); # no warning $x = $p->pack('e_unsafe', 'UNSAFE'); # (1) Enumerator value 'UNSAFE' is unsafe $x = $p->pack('e_unsafe', 'BAD'); # (1) Enumerator value 'BAD' is unsafe $p->EnumType('Integer'); $x = $p->unpack('e_unsafe', $data); # no warning $p->EnumType('String'); $x = $p->unpack('e_unsafe', $data); # (1) Enumeration 'e_unsafe' contains unsafe values $p->EnumType('Both'); $x = $p->unpack('e_unsafe', $data); # (1) Enumeration 'e_unsafe' contains unsafe values $p->EnumType('Integer'); $x = $p->unpack('e_unsafe_noname', $data); # no warning $p->EnumType('String'); $x = $p->unpack('e_unsafe_noname', $data); # (1) Enumeration contains unsafe values $p->EnumType('Both'); $x = $p->unpack('e_unsafe_noname', $data); # (1) Enumeration contains unsafe values $p->arg('test'); # (1) Useless use of arg in void context $x = $p->arg('test'); # (E) Unknown argument type 'test' in arg $p->tag('stuff[0]', Format => 'String'); # (E) Cannot tag array members $p->tag('stuff[0].d[1]', Format => 'String'); # (E) Cannot tag array members $p->tag('stuff[0].d[1][2]', Format => 'String'); # (E) Cannot tag array members $p->untag('stuff[0].d[1][2]', 'Format'); # (E) Cannot tag array members $p->tag('stuff[0].d', Format => 'String'); # no error $p->tag('stuff[0].a', Format => 'String'); # no error $p->tag('stuff', Format => 'String'); # no error $p->tag('noway'); # (1) Useless use of tag in void context $x = $p->tag('noway'); # (E) Cannot find 'noway' $p->tag('test.bar', { foo => 1 }); # (1) Useless use of tag in void context $x = $p->tag('test.bar', { foo => 1 }); # (E) Tag name must be a string, not a reference $p->tag('test.bar', 'foo'); # (1) Useless use of tag in void context $x = $p->tag('test.bar', 'foo'); # (E) Invalid tag name 'foo' $p->tag('test.bar', 'Format'); # (1) Useless use of tag in void context $x = $p->tag('test.bar', 'Format'); # no error $p->tag('test.bar', Format => 'foo'); # (E) Invalid value 'foo' for Format tag $p->tag('test.bar', Format => 'String', 'foo'); # (E) Invalid number of arguments to tag $p->tag('test.bar', Format => 'String', foo => 1); # (E) Invalid tag name 'foo' $p->tag('test.bar', Format => { foo => 1 }); # (E) Value for Format tag must not be a reference $p->tag('test.bar', Hooks => 'foo'); # (E) Need a hash reference to define hooks for 'test.bar' $p->tag('int', Hooks => 'foo'); # (E) Need a hash reference to define hooks for 'int' $p->tag('test', Hooks => 'foo'); # (E) Need a hash reference to define hooks for 'test' $p->tag('test', Hooks => {pack => 42}); # (E) pack hook defined for 'test' is not a code or array reference $p->tag('test', Hooks => {pack => {foo => 42}}); # (E) pack hook defined for 'test' is not a code or array reference $p->tag('test', Hooks => {pack => [42]}); # (E) pack hook defined for 'test' is not a code reference $p->tag('test', Hooks => {unpack => []}); # (E) Need at least a code reference in unpack hook for type 'test' $p->tag('test', Hooks => {this_is_no_hook => \&id}); # (E) Invalid hook type 'this_is_no_hook' $p->tag('test', Hooks => {pack => sub {$_[0]}}); # no error $p->tag('test', Hooks => {unpack => [sub {$_[0]}]}); # no error $p->tag('test', Hooks => {pack => \&id, unpack => \&id}); # no error $p->tag('noway', Hooks => undef); # (E) Cannot find 'noway' $p->tag('test.bar', Hooks => undef); # no error $p->tag('int', Hooks => undef); # no error $p->tag('enumtype', Hooks => undef); # no error $p->tag('test', Hooks => undef); # no error $p->tag('test.foo', Dimension => 42); # no error $p->tag('test.foo', Dimension => '42'); # no error $p->tag('test.foo', Dimension => '*'); # no error $p->tag('test.foo', Dimension => sub { 42 }); # no error $p->tag('test.foo', Dimension => [sub { 42 }]); # no error $p->tag('test.foo', Dimension => 'ival'); # no error $p->tag('array', Dimension => 'bar'); # (E) Cannot use member expression 'bar' as Dimension tag for 'array' when not within a compound type $p->tag('array', Dimension => sub{42}); # no error $p->tag('array', Dimension => [sub{42}]); # no error $p->tag('array', Dimension => [sub{42}, $p->arg('SELF')]); # no error $p->tag('array', Dimension => [sub{42}, $p->arg('TYPE')]); # (E) TYPE argument not allowed $p->tag('array', Dimension => [sub{42}, $p->arg('DATA')]); # (E) DATA argument not allowed $p->tag('array', Dimension => [sub{42}, $p->arg('HOOK')]); # no error $p->tag('test.foo', Dimension => 'ptr'); # (E) Cannot use a pointer type in member 'ptr' to determine a dimension for 'test.foo' $p->tag('test.foo', Dimension => 'nonono'); # (E) Cannot find struct member 'nonono' $p->tag('test.foo', Dimension => 'bar'); # (E) Cannot use member 'bar' located behind 'test.foo' in layout to determine a dimension $p->tag('enumtype', Dimension => 'bar'); # (E) Cannot use Dimension tag on an enum 'enumtype' $p->tag('enumtype', Dimension => undef); # (E) Cannot use Dimension tag on an enum 'enumtype' $p->untag('enumtype', 'Dimension'); # (E) Cannot use Dimension tag on an enum 'enumtype' $p->tag('test.foo', Dimension => {}); # (E) Invalid Dimension tag for 'test.foo' $p->tag('test.foo', Dimension => -1); # (E) Cannot use negative value -1 in Dimension tag for 'test.foo' $p->tag('test.foo', Dimension => '-2'); # (E) Cannot use negative value -2 in Dimension tag for 'test.foo' $p->tag('test.foo', Dimension => 0); # no error $p->tag('test.foo', Dimension => '0'); # no error $p->tag('test.foo', Dimension => ''); # (E) Invalid Dimension tag for 'test.foo' $p->tag('test.foo', Dimension => sub{42}); # no error $p->tag('test.foo', Dimension => [sub{42}]); # no error $p->tag('test.foo', Dimension => [sub{42}, $p->arg('SELF')]); # no error $p->tag('test.foo', Dimension => [sub{42}, $p->arg('TYPE')]); # (E) TYPE argument not allowed $p->tag('test.foo', Dimension => [sub{42}, $p->arg('DATA')]); # no error $p->tag('test.foo', Dimension => [sub{42}, $p->arg('HOOK')]); # no error $p->tag('test.ary', Dimension => 'foo[4][1].a'); # (E) Cannot use index 4 into array of size 2 $p->tag('test.ary', Dimension => 'foo[1][3].a'); # (E) Cannot use index 3 into array of size 3 $p->tag('test.ary', Dimension => 'foo[1][-2].a'); # (E) Cannot use negative index -2 into array $p->tag('test.ary', Dimension => 'foo[1][1].a+8'); # (E) Cannot use offset in compound member expression $p->tag('test.ary', Dimension => 'foo[1][1].a'); # no error $x = $p->unpack('test.ary', 'x'x$p->sizeof('test.ary')); # (1) Missing parent to look up 'foo[1][1].a' $p->tag('test.foo', Dimension => undef); # no error $p->tag('dimtag_fail.array', Dimension => 'u.a.len[0]'); # no error (offset 1 + size 1 <= offset 3) $p->tag('dimtag_fail.array', Dimension => 'u.a.len[1]'); # no error (offset 2 + size 1 <= offset 3) $p->tag('dimtag_fail.array', Dimension => 'u.a.len[2]'); # (E) Cannot use member 'u.a.len[2]' located at same offset as 'dimtag_fail.array' in layout to determine a dimension $p->tag('dimtag_fail.array', Dimension => 'u.a.len[3]'); # (E) Cannot use member 'u.a.len[3]' located behind 'dimtag_fail.array' in layout to determine a dimension $p->tag('dimtag_fail.array', Dimension => 'u.b.len[0]'); # (E) Cannot use member 'u.b.len[0]' overlapping with 'dimtag_fail.array' in layout to determine a dimension $p->tag('dimtag_fail.array', Dimension => 'u.b.len[1]'); # (E) Cannot use member 'u.b.len[1]' located behind 'dimtag_fail.array' in layout to determine a dimension $p->tag('dimtag_fail.array', Dimension => undef); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # no error $p->tag('test.foo', Format => 'Binary'); # no error, just to fool Dimension tag... $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Expected an array reference to look up index '1' in 'foo[1][1].a', not a string value $p->tag('test.foo', Format => undef); # no error $p->tag('test.foo', Hooks => {unpack=>sub{[]}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot lookup index '1' in array of size '0' (in 'foo[1][1].a') $p->tag('test.foo', Hooks => undef); # no error $p->tag('inner_struct', Format => 'Binary'); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Expected a hash reference to look up member 'a' in 'foo[1][1].a', not a string value $p->tag('inner_struct', Format => undef); # no error $p->tag('inner_struct', Hooks => {unpack=>sub{{foo=>1}}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot find member 'a' in hash (in 'foo[1][1].a') $p->tag('inner_struct', Hooks => undef); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # no error (just to be safe) $p->tag('inner_struct.a', Hooks => {unpack=>sub{{}}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot use a hash reference in 'foo[1][1].a' as dimension $p->tag('inner_struct.a', Hooks => {unpack=>sub{[]}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot use an array reference in 'foo[1][1].a' as dimension $p->tag('inner_struct.a', Hooks => {unpack=>sub{sub{}}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot use a code reference in 'foo[1][1].a' as dimension $p->tag('inner_struct.a', Hooks => {unpack=>sub{undef}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot use an undefined value in 'foo[1][1].a' as dimension $p->tag('inner_struct.a', Hooks => {unpack=>sub{'foo'}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot use a string value ('foo') in 'foo[1][1].a' as dimension $p->tag('inner_struct.a', Hooks => undef); # no error $p->tag('test.ary', Dimension => sub {1}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # no error $p->tag('test.ary', Dimension => sub {{}}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (1) Cannot use a hash reference as dimension $p->tag('test.ary', Dimension => sub {[]}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (1) Cannot use an array reference as dimension $p->tag('test.ary', Dimension => sub {sub{}}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (1) Cannot use a code reference as dimension $p->tag('test.ary', Dimension => sub {undef}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (1) Cannot use an undefined value as dimension $p->tag('test.ary', Dimension => sub {'foo'}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (1) Cannot use a string value ('foo') as dimension $p->tag('test.ary', Dimension => sub {die "BOO!!!"}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (E) BOO!!! $p->tag('test.ary', Dimension => undef); # no error $p->IntSize(4); $p->tag('char', Format => 'Binary'); # no error $p->tag('int', Format => 'Binary'); # no error $p->tag('array', Format => 'Binary'); # no error $p->tag('inner.u.x', Format => 'String'); # no error $x = $p->pack('char', 'xx'); # (1) Source string "xx" is longer (2 bytes) than 'char' (1 byte) while packing 'Binary' format $x = $p->pack('char', 'abcdefghijklmno'); # (1) /Source string "abcdefghijklmno" is longer \(15 bytes\) than 'char' \(1 byte\) while packing 'Binary' format/ $x = $p->pack('char', 'abcdefghijklmnop'); # (1) /Source string "abcdefghijkl\.\.\." is longer \(16 bytes\) than 'char' \(1 byte\) while packing 'Binary' format/ $x = $p->pack('char', 'abcdefghijklmnopq'); # (1) /Source string "abcdefghijkl\.\.\." is longer \(17 bytes\) than 'char' \(1 byte\) while packing 'Binary' format/ $x = $p->pack('char', 'abcdefghijklmnopqr'); # (1) /Source string "abcdefghijkl\.\.\." is longer \(18 bytes\) than 'char' \(1 byte\) while packing 'Binary' format/ $x = $p->pack('int', 'x'x5); # (1) Source string "xxxxx" is longer (5 bytes) than 'int' (4 bytes) while packing 'Binary' format $x = $p->pack('int', 'x'x43); # (1) /Source string "xxxxxxxxxxxx\.\.\." is longer \(43 bytes\) than 'int' \(4 bytes\) while packing 'Binary' format/ $x = $p->pack('int', { hash => 1 }); # (1) /Source string "HASH.*?" is longer \(\d+ bytes\) than 'int' \(4 bytes\) while packing 'Binary' format \(Are you sure you want to pack a reference type\?\)/ $x = $p->pack('int', [ 1, 2, 3 ]); # (1) /Source string "ARRAY.*?" is longer \(\d+ bytes\) than 'int' \(4 bytes\) while packing 'Binary' format \(Are you sure you want to pack a reference type\?\)/ $x = $p->pack('int', 'x'x4); # no warning $x = $p->pack('inner', { u => { x => 'x'x5 } }); # (1) Source string "xxxxx" is longer (5 bytes) than 'inner.u.x' (4 bytes) while packing 'String' format $x = $p->pack('inner', { u => { x => 'x'x42 } }); # (1) /Source string "xxxxxxxxxxxx\.\.\." is longer \(42 bytes\) than 'inner\.u\.x' \(4 bytes\) while packing 'String' format/ $x = $p->pack('inner', { u => { x => { hash => 1 } } }); # (1) /Source string "HASH.*?" is longer \(\d+ bytes\) than 'inner\.u\.x' \(4 bytes\) while packing 'String' format \(Are you sure you want to pack a reference type\?\)/ $x = $p->pack('inner', { u => { x => [ 1, 2, 3 ] } }); # (1) /Source string "ARRAY.*?" is longer \(\d+ bytes\) than 'inner\.u\.x' \(4 bytes\) while packing 'String' format \(Are you sure you want to pack a reference type\?\)/ $x = $p->pack('inner', { u => { x => 'x'x4 } }); # no warning $x = $p->unpack('int', ''); # (1) Data too short $x = $p->unpack('array', ''); # no warning $p->tag('char', Format => undef); # no error $p->tag('int', Format => undef); # no error $p->tag('array', Format => undef); # no error $p->tag('inner.u.x', Format => undef); # no error $p->tag('hasbf.bf.c', Format => 'Binary'); # (E) Cannot use 'Format' tag on bitfields $p->tag('hasbf.bf.c', ByteOrder => 'BigEndian'); # (E) Cannot use 'ByteOrder' tag on bitfields }, [0 .. 2], [qw( Convert::Binary::C Convert::Binary::C::Cached )]); sub id { $_[0] } sub rv0 { return () } sub rv2 { return ($_[0], 42) } sub eval_test { my($test, $levels, $classes) = @_; my(@warn, $p); $SIG{__WARN__} = sub { push @warn, shift }; my @tests; for (split $/, $test) { my $active = 1; print "# $_\n"; /^\s*$/ and next; /^\s*\/\// and next; my($c, $f, $l, $w) = /^(.*;)?(?:\s*#(?:\s*\[\s*([^\]]*?)\s*\])?(?:\s*\(([E\d])\))?\s*(.*?))?\s*$/; print "# [$c] [$f] [$l] [$w] => "; for my $feat (split /\s*,\s*/, $f) { my($neg, $name) = $feat =~ /(!?)\s*([-\w]+)/; my $have = Convert::Binary::C::feature($name); print "($name=$have) "; ($neg xor $have) or $active = 0; } printf "%sactive\n", $active ? '' : 'in'; if (defined $c) { push @tests, { code => $c, warnings => [] }; } if ($active and @tests and defined $l) { if ($w =~ m[ ^ / (.*) / $ ]x) { $w = $1; } else { $w = quotemeta $w; $w =~ s/(?:\\\s)+(?:\\\.){3}(?:\\\s)+/.*/g; } if ($l eq 'E') { $tests[-1]{error} = qr/$w/; } else { push @{$tests[-1]{warnings}}, { level => $l, regex => qr/$w.*?\s+at\s+\(eval\s+\d+\)/ }; } } } for $class (@$classes) { for $level (@$levels) { print <new( Alignment => 1, Warnings => $level == 2 ) }; ok($@, '', "failed to create $class object"); for my $t (@tests) { my @warnings = map { $_->{level} <= $level ? $_->{regex} : () } @{$t->{warnings}}; @warn = (); print "# evaluating code: $t->{code}\n"; eval $t->{code}; if ($@) { my $err = $@; $err =~ s/^/# /gms; $err =~ s/[\r\n]+$//gms; print "# error:\n$err\n"; } if (exists $t->{error}) { ok($@, $t->{error}, "wrong error"); } else { ok($@, '', "failed to evaluate code"); } chomp @warn; if (@warn) { printf "# got %d warning(s):\n", scalar @warn; for (@warn) { s/^/# /gms; s/[\r\n]+$//gms; print "$_\n"; } } else { print "# got no warnings\n"; } ok(scalar @warn, scalar @warnings, "got more/less warnings than expected"); if (@warn != @warnings) { for (0 .. ($#warnings > $#warn ? $#warnings : $#warn)) { print "# (", $_+1, ") '", $warn[$_] || 'undef', "' =~ /", $warnings[$_] || 'undef', "/\n"; } } ok($warn[$_], $warnings[$_]) for 0 .. $#warnings; } } } $SIG{__WARN__} = 'DEFAULT'; } __DATA__ #assert THIS(is) garbage #assert TEST(assertion) #if #TEST (assertion) typedef struct __nodef nodef; #endif #if #TEST (nothing) # error "boo!" #endif #ifdef FOO BLABLA #endif typedef union __hasbf hasbf; typedef struct ptrstruct *ptrtype; typedef int scalar; typedef float nonnative; typedef enum enu enumtype; enum enu { A }; struct test { int ival; enum yyy *xxx; union xxx *yyy; ptrtype *ptr; int (*test[2])[3]; struct inner_struct { int a; int b[2]; int c[2][3]; } foo[2][3]; struct { int a; union { enum enu a; struct { long *a; char b[10]; } str; } uni[5]; } ary[3][4]; int bar; }; union __hasbf { struct { int a:1; int b:2; int c:3; int :10; } bf; unsigned short nobf; }; struct multiple { long a; char b; short a; union { int c; unsigned b; }; }; enum e_unsafe { SAFE = 42, GOOD, UNSAFE = &2, /* pointer op makes it unsafe */ BAD }; typedef int t_unsafe[(char)600]; /* cast makes it unsafe */ struct s_unsafe { int foo[BAD]; /* uuuhhh!! */ }; typedef struct { enum { SAFE2 = 42, GOOD2, UNSAFE2 = *2, /* pointer op makes it unsafe */ BAD2 } noname; } e_unsafe_noname; typedef short float fp_unsupp; typedef struct { int b; struct { int x; char b[sizeof(int)]; } c; union { int x; char b[sizeof(int)]; } u; } inner; typedef struct { int a; inner; int d[6][6]; } stuff[12]; typedef int array[]; struct dimtag_fail { union { struct { char a; char len[]; /* starts at offset 1 */ } a; struct { short a; short len[]; /* starts at offset 2 */ } b; } u; char foo; int array[2]; /* starts at offset 3 */ }; Convert-Binary-C-0.85/tests/209_sourcify.t0000644000175000001440000001156114677003452017003 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 98 } my $CCCFG = require './tests/include/config.pl'; eval { $orig = Convert::Binary::C->new( %$CCCFG ); @clone = map { Convert::Binary::C->new( %$CCCFG ) } 1 .. 2; }; ok($@,'',"failed to create Convert::Binary::C objects"); eval { $orig->parse_file( 'tests/include/include.c' ); $orig->parse( <sourcify; $dump2 = $orig->sourcify; $dump3 = $orig->sourcify; }; ok($@,'',"failed to dump definitions"); ok( $dump1, $dump2, "dumps 1+2 differ" ); ok( $dump2, $dump3, "dumps 2+3 differ" ); ok( !/^#line/m ) for $dump1, $dump2, $dump3; ok( !/^#define/m ) for $dump1, $dump2, $dump3; eval { $dump1 = $orig->sourcify( { Context => 1 } ); $dump2 = $orig->sourcify( { Context => 1 } ); $dump3 = $orig->sourcify( { Context => 1 } ); }; ok($@,'',"failed to dump definitions with context"); ok( $dump1, $dump2, "context dumps 1+2 differ" ); ok( $dump2, $dump3, "context dumps 2+3 differ" ); ok( /^#line\s+\d+\s+"[^"]+"/m ) for $dump1, $dump2, $dump3; ok( !/^#define/m ) for $dump1, $dump2, $dump3; eval { $dump1 = $orig->sourcify( { Defines => 1 } ); $dump2 = $orig->sourcify( { Defines => 1 } ); $dump3 = $orig->sourcify( { Defines => 1 } ); }; ok($@,'',"failed to dump definitions with context"); ok( $dump1, $dump2, "context dumps 1+2 differ" ); ok( $dump2, $dump3, "context dumps 2+3 differ" ); ok( !/^#line/m ) for $dump1, $dump2, $dump3; ok( /^#define\s+\w+/m ) for $dump1, $dump2, $dump3; eval { $dump1 = $orig->sourcify( { Context => 1, Defines => 1 } ); $dump2 = $orig->sourcify( { Context => 1, Defines => 1 } ); $dump3 = $orig->sourcify( { Context => 1, Defines => 1 } ); }; ok($@,'',"failed to dump definitions with context"); ok( $dump1, $dump2, "context dumps 1+2 differ" ); ok( $dump2, $dump3, "context dumps 2+3 differ" ); ok( /^#line\s+\d+\s+"[^"]+"/m ) for $dump1, $dump2, $dump3; ok( /^#define\s+\w+/m ) for $dump1, $dump2, $dump3; eval { $clone[0]->parse( $orig->sourcify( { Context => 1, Defines => 1 } ) ); }; ok($@,'',"failed to parse clone data (0)"); eval { $clone[1]->parse( $clone[0]->sourcify( { Context => 1, Defines => 1 } ) ); }; ok($@,'',"failed to parse clone data (1)"); for my $meth ( qw( enum compound struct union typedef macro ) ) { my $meth_names = $meth.'_names'; my @orig_names = sort $orig->$meth_names(); print "# checking if any names exist\n"; ok( @orig_names > 0 ); for my $c ( 0 .. $#clone ) { print "# checking counts for \$clone[$c]->$meth_names\n"; ok(scalar $orig->$_(), scalar $clone[$c]->$_(), "count mismatch in $_ ($c)") for $meth, $meth_names; print "# checking parsed names for \$clone[$c]->$meth_names\n"; ok(join( ',', @orig_names ), join( ',', sort $clone[$c]->$meth_names() ), "parsed names differ in $meth_names ($c)" ); my @failed = map { print "# checking \$clone[$c]->$meth( \"$_\" )\n"; reccmp($orig->$meth($_), $clone[$c]->$meth($_)) ? () : $_ } @orig_names; print "# $_\n" for @failed; ok(scalar @failed, 0, "$meth failed cloning"); } } eval { $orig->clean->parse( <clean->parse( $orig->sourcify ); }; ok($@,'',"failed to parse sourcified code"); eval { $orig->clean->parse( 'typedef struct { ' . 'struct { 'x42 . 'int a;' . ' } a;'x42 . ' } rec;' ); }; ok($@,'',"failed to parse C code"); eval { $clone[1]->clean->parse( $orig->sourcify ); }; ok($@,'',"failed to parse sourcified code"); sub reccmp { my($ref, $val) = @_; unless (ref $ref) { return 1 unless defined $ref || defined $val; return 0 unless defined $ref && defined $val; my $r = $ref eq $val; print "# $ref ne $val\n" unless $r; return $r; } if( ref $ref eq 'ARRAY' ) { @$ref == @$val or return 0; for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ) or return 0; } } elsif( ref $ref eq 'HASH' ) { @{[keys %$ref]} == @{[keys %$val]} or return 0; for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ) or return 0; } } else { return 0 } return 1; } Convert-Binary-C-0.85/tests/236_typeinfo.t0000644000175000001440000000462414677003452016777 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 49 } my $c = Convert::Binary::C->new; $c->parse(<enum(' foo', 'no', "enum \t bar"); ok(defined $foo); ok($foo->{identifier}, 'foo'); ok($foo->{sign}, 0); ok(join(',', keys %{$foo->{enumerators}}), 'FOO'); ok($foo->{enumerators}{FOO}, 0); ok(defined $bar); ok($bar->{identifier}, 'bar'); ok($bar->{sign}, 1); ok(join(',', keys %{$bar->{enumerators}}), 'BAR'); ok($bar->{enumerators}{BAR}, -1); ok(not defined $ndef); ($abc, $ndef, $def) = $c->struct(' abc', 'union u1', "struct \t def"); ok(defined $abc); ok($abc->{identifier}, 'abc'); ok($abc->{type}, 'struct'); ok($abc->{pack}, 0); ok(defined $def); ok($def->{identifier}, 'def'); ok($def->{type}, 'struct'); ok($def->{pack}, 1); ok(not defined $ndef); ($u1, $ndef, $u2) = $c->union(' u1', 'struct def', "union \t u2"); ok(defined $u1); ok($u1->{identifier}, 'u1'); ok($u1->{type}, 'union'); ok($u1->{pack}, 1); ok(defined $u2); ok($u2->{identifier}, 'u2'); ok($u2->{type}, 'union'); ok($u2->{pack}, 0); ok(not defined $ndef); ($abc, $ndef, $u1) = $c->compound(' abc', 'union no', "union \t u1"); ok(defined $abc); ok($abc->{identifier}, 'abc'); ok($abc->{type}, 'struct'); ok($abc->{pack}, 0); ok(defined $u1); ok($u1->{identifier}, 'u1'); ok($u1->{type}, 'union'); ok($u1->{pack}, 1); ok(not defined $ndef); ($u_16, $ndef, $u_32) = $c->typedef('u_16', ' u_32', "u_32"); ok(defined $u_16); ok($u_16->{declarator}, 'u_16'); ok($u_16->{type}, 'unsigned short'); ok(defined $u_32); ok($u_32->{declarator}, 'u_32'); ok($u_32->{type}, 'unsigned int'); ok(not defined $ndef); ($pk0, $pk2) = $c->struct('pack0', 'pack2'); ok(defined $pk0); ok(defined $pk2); ok($pk0->{pack}, 0); ok($pk2->{pack}, 2); Convert-Binary-C-0.85/tests/202_misc.t0000644000175000001440000002060014677003452016056 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 207 } #=================================================================== # perform some average stuff #=================================================================== eval { $p = Convert::Binary::C->new( PointerSize => 4, EnumSize => 4, IntSize => 4, LongSize => 4, Alignment => 2, ByteOrder => 'BigEndian', EnumType => 'String' ); $q = Convert::Binary::C->new; }; ok($@,''); #----------------------------------- # create some average ( ?? :-) code #----------------------------------- $code = <<'CCODE'; #define ONLY_ONE 1 typedef struct abc abc_type; typedef struct never ever; struct abc { abc_type *p1; #if ONLY_ONE > 1 abc_type *p2; #endif }; typedef unsigned long u32; #define Day( which ) \ which ## DAY typedef enum { Day( MON ), Day( TUES ), Day( WEDNES ), } day; # \ define __SIX__ \ ( sizeof( unsigned char * ) + sizeof( short ) ) # define SIXTEEN \ (sizeof "Hello\"\xfworld\069!") typedef union zap { signed long za[__SIX__]; short zb[SIXTEEN]; char zc[sizeof(struct never (*[2][3])[4])]; ever *zd[sizeof( abc_type )]; } ZAP; CCODE #----------------------- # try to parse the code #----------------------- eval { $p->parse( $code ); $q->parse( $code ); }; ok($@,''); #------------------------ # reconfigure the parser #------------------------ eval { $p->configure( Alignment => 8, EnumSize => 0 ); }; ok($@,''); #-------------------------------- # and parse some additional code #-------------------------------- $code = <<'CCODE'; typedef struct { abc_type xxx; u32 dusel, *fusel; int musel[((1<<1)+4)&0x00000002]; union { char bytes[(12/2)%4][(0x10|010)>>3]; day today; long value; } test; struct ints fubar; union zap hello; } husel; #pragma pack( push, 1 ) struct packer { char i; short am; char really; long packed; }; #pragma pack( pop ) struct nopack { char i; short am; char not; long packed; }; CCODE $c99_code = <<'CCODE' . $code; #define \ MYINTS( ... \ ) { int __VA_ARGS__; } struct ints MYINTS( a, b, c ); CCODE #----------------------- # try to parse the code #----------------------- eval { $q->HasMacroVAARGS( 0 ); $q->parse( $c99_code ); }; ok($@,qr/invalid macro argument/); eval { $p->parse( $c99_code ) }; ok($@,''); #------------------------ # reconfigure the parser #------------------------ eval { $p->Alignment( 4 ) }; ok($@,''); #------------------- # test some offsets #------------------- ok($p->offsetof('packer', 'i'), 0); ok($p->offsetof('packer', 'am'), 1); ok($p->offsetof('packer', 'really'), 3); ok($p->offsetof('packer', 'packed'), 4); ok($p->offsetof('nopack', 'i'), 0); ok($p->offsetof('nopack', 'am'), 2); ok($p->offsetof('nopack', 'not'), 4); ok($p->offsetof('nopack', 'packed'), 8); #------------------------ # now try some unpacking #------------------------ # on a pack()ed struct $data = pack( 'cnCN', -47, 0x1234, 0x55, 2000000000 ); eval { $result = $p->unpack( 'packer', $data ) }; ok($@,''); $refres = { i => -47, am => 0x1234, really => 0x55, packed => 2000000000, }; reccmp( $refres, $result ); # on a 'normal' struct $data = pack( 'cxnCx3N', -47, 0x1234, 0x55, 2000000000 ); eval { $result = $p->unpack( 'nopack', $data ) }; ok($@,''); $refres = { i => -47, am => 0x1234, not => 0x55, packed => 2000000000, }; reccmp( $refres, $result ); #----------------------- # test something bigger #----------------------- $data = pack( "N5c8N3C48", 123, 4711, 0xDEADBEEF, -42, 42, 1, 0, 0, 0, -2, 3, 0, 0, -10000, 5000, 8000, 1..48 ); eval { $result = $p->unpack( 'husel', $data ) }; ok($@,''); eval { undef $p }; ok($@,''); $refres = { xxx => { p1 => 123 }, dusel => 4711, fusel => 0xDEADBEEF, musel => [ -42, 42 ], test => { bytes => [ [ 1, 0, 0 ], [ 0, -2, 3 ] ], today => 'TUESDAY', value => 16777216, }, fubar => { a => -10000, b => 5000, c => 8000, }, hello => { za => [16909060, 84281096, 151653132, 219025168, 286397204, 353769240], zb => [258, 772, 1286, 1800, 2314, 2828, 3342, 3856, 4370, 4884, 5398, 5912, 6426, 6940, 7454, 7968], zc => [1..24], zd => [16909060, 84281096, 151653132, 219025168], }, }; reccmp( $refres, $result ); #------------------------------------------------ # test pack/unpack/sizeof/typeof for basic types #------------------------------------------------ $p = Convert::Binary::C->new; @tests = ( ['char', $p->CharSize ], ['short', $p->ShortSize ], ['int', $p->IntSize ], ['long', $p->LongSize ], ['long long', $p->LongLongSize ], ['float', $p->FloatSize ], ['double', $p->DoubleSize ], ['long double', $p->LongDoubleSize], ); for( @tests ) { my $size = eval { $p->sizeof( $_->[0] ) }; ok( $@, '' ); ok( $size, $_->[1] ); } check_basic( $p ); # must work without parse data, too $p->clean; check_basic( $p ); #-------------------------------- # test offsetof in strange cases #-------------------------------- eval { $p->configure( IntSize => 4 , LongSize => 4 , PointerSize => 4 , EnumSize => 4 , Alignment => 4 )->parse(<offsetof( $_->[0], $_->[1] ) }; ok( $@, '' ); ok( $off, $_->[2] ); } ok( scalar @warn, 1 ); ok( $warn[0], qr/^Empty string passed as member expression/ ); #------------------------------ # some simple tests for member #------------------------------ @tests = ( ['foo', '.ary[0].x', 4], ['foo.ary[2]', '.x', 0], ['foo.ary[2]', '.y', 4], ['foo.ary', '[2].y', 20], ['foo.aryary[2]', '[2].y', 20], ['a', '[9]', 36], ['test', '.zap[5].day', 64], ['test.zap[2]', '.day', 4], ['test', '.zap[5].day+1', 65], ); @warn = (); ok( $@, '' ); for( @tests ) { my @m = eval { $p->member( $_->[0], $_->[2] ) }; ok( $@, '' ); ok( scalar @m, 1 ); ok( $m[0], $_->[1] ); } ok( scalar @warn, 0 ); #------------------------------ # test 64-bit negative numbers #------------------------------ $p->clean->parse(<LongLongSize(8); for my $bo (qw( BigEndian LittleEndian )) { $p->ByteOrder($bo); my $x = $p->pack('i_64', -1); ok($x, pack('C*', (255)x8)); } sub check_basic { my $c = shift; for my $t ( 'signed char' , 'unsigned short int' , 'long int' , 'signed int' , 'long long' ) { ok( eval { $c->typeof( $t ) }, $t ); ok( eval { $c->sizeof( $t ) } > 0 ); ok( eval { $c->unpack( $t, $c->pack($t, 42) ) }, 42 ); } } sub reccmp { my($ref, $val) = @_; my $id = ref $ref; unless( $id ) { ok( $ref, $val ); return; } if( $id eq 'ARRAY' ) { ok( @$ref == @$val ); for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ); } } elsif( $id eq 'HASH' ) { ok( @{[keys %$ref]} == @{[keys %$val]} ); for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ); } } } Convert-Binary-C-0.85/tests/602_threads.t0000644000175000001440000001176514677003452016575 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Config; use Convert::Binary::C @ARGV; use constant NUM_THREADS => 4; $^W = 1; BEGIN { plan tests => NUM_THREADS } my $CCCFG = require './tests/include/config.pl'; #=================================================================== # load appropriate threads module and start a couple of threads #=================================================================== my $have_threads = ($Config{useithreads} && $] >= 5.008) || $Config{use5005threads}; my $reason = $Config{useithreads} || $Config{use5005threads} ? "unsupported threads configuration" : "no threads"; if ($have_threads && $] > 5.009004 && $] < 5.010001) { # Threads are broken between 5.9.4 and 5.10.1 $reason = "threads are broken in this perl version"; $have_threads = 0; } my @t; if ($have_threads) { if ($Config{use5005threads}) { require Thread; @t = map { Thread->new( \&task, $_ ) } 1 .. NUM_THREADS; } elsif ($Config{useithreads} && $] >= 5.008) { require threads; @t = map { threads->new( \&task, $_ ) } 1 .. NUM_THREADS; } } else { Convert::Binary::C->new->parse(''); # allocate/free some memory @t = 1 .. NUM_THREADS } skip($have_threads ? '' : $reason, $have_threads ? $_->join : $_, '', "thread failed") for @t; sub task { my $arg = shift; my $p; eval { $p = Convert::Binary::C->new( %$CCCFG, EnumSize => 0, ); if ($arg % 2) { print "# parse_file ($arg) called\n"; $p->parse_file('tests/include/include.c'); print "# parse_file ($arg) returned\n"; } else { open FH, "tests/include/include.c" or die; my $code = do { local $/; }; close FH; print "# parse ($arg) called\n"; $p->parse($code); print "# parse ($arg) returned\n"; } }; $@ and return $@; # some simplified checks from the parse test my @enum_ids = $p->enum_names; my @compound_ids = $p->compound_names; my @struct_ids = $p->struct_names; my @union_ids = $p->union_names; my @typedef_ids = $p->typedef_names; @enum_ids == 1 or return "incorrect number of enum identifiers"; @compound_ids == 20 or return "incorrect number of compound identifiers"; @struct_ids == 19 or return "incorrect number of struct identifiers"; @union_ids == 1 or return "incorrect number of union identifiers"; @typedef_ids == 54 or return "incorrect number of typedef identifiers"; my @enums = $p->enum; my @compounds = $p->compound; my @structs = $p->struct; my @unions = $p->union; my @typedefs = $p->typedef; @enums == 12 or return "incorrect number of enums"; @compounds == 26 or return "incorrect number of compounds"; @structs == 20 or return "incorrect number of structs"; @unions == 6 or return "incorrect number of unions"; @typedefs == 54 or return "incorrect number of typedefs"; my %size = do { local (@ARGV, $/) = ('tests/include/sizeof.pl'); eval <> }; my $max_size = 0; my @fail = (); local $SIG{__WARN__} = sub { print "# unexpected warning: $_[0]"; push @fail, $_[0]; }; for my $t (keys %size) { my $s = eval { $p->sizeof($t) }; if ($@) { print "# sizeof failed for '$t': $@\n"; } elsif ($size{$t} != $s) { print "# incorrect size for '$t' (expected $size{$t}, got $s)\n"; } else { $max_size = $s if $s > $max_size; next; } push @fail, $t unless $s == $size{$t} } @fail == 0 or return "size test failed for [@fail]"; # don't use random data as it may cause failures # for floating point values my $data = pack 'C*', map { $_ & 0xFF } 1 .. $max_size; @fail = (); for my $id (@enum_ids, @compound_ids, @typedef_ids) { # skip long doubles next if grep { $id eq $_ } qw( __convert_long_double float_t double_t ); my $x = eval { $p->unpack($id, $data) }; if( $@ ) { print "# ($arg) unpack failed for '$id': $@\n"; push @fail, $id; next; } my $packed = eval { $p->pack($id, $x) }; if ($@) { print "# ($arg) pack failed for '$id': $@\n"; push @fail, $id; next; } unless (chkpack($data, $packed)) { print "# ($arg) inconsistent pack/unpack data for '$id'\n"; push @fail, $id; next; } } @fail == 0 or return "pack test failed for [@fail]\n"; print "# tests ($arg) finished successfully\n"; return ''; } sub chkpack { my($orig, $pack) = @_; for (my $i = 0; $i < length $pack; ++$i) { my $p = ord substr $pack, $i, 1; if ($i < length $orig) { my $o = ord substr $orig, $i, 1; return 0 unless $p == $o or $p == 0; } else { return 0 unless $p == 0; } } return 1; } Convert-Binary-C-0.85/tests/221_asm.t0000644000175000001440000000677514677003452015725 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 14; } my $c = eval { Convert::Binary::C->new( KeywordMap => { __asm__ => 'asm', __volatile__ => 'volatile' } ); }; ok($@,''); my $d = eval { Convert::Binary::C->new( DisabledKeywords => [ 'asm' ] ) }; ok($@,''); for my $code ( do { local $/; split /-{20,}\r?\n?/, } ) { my $out = $code; $out =~ s/^/# /mg; print '# ', '-'x72, "\n", $out, '# ', '-'x72, "\n"; my @pass = map { $_ ? '' : qr/\S/ } $code =~ /\((\d+)(?:,(\d+))*\)/m; eval { $c->clean->parse( $code ) }; ok($@, $pass[0]); eval { $d->clean->parse( $code ) }; ok($@, $pass[1]); } ################################################################################ # CODE SNIPPETS ################################################################################ __DATA__ /* (1,1) function-like calls aren't a problem anyway */ void main() { asm("foo"); __asm__("foo"); asm("\n\ global memctl\n\ memctl:\n\ movq &75,%d0\n\ trap &0\n\ bcc.b noerror\n\ jmp cerror%\n\ noerror:\n\ movq &0,%d0\n\ rts"); } -------------------------------------------------- /* (1,0) this one's a lot better ;-) */ void main() { __asm__ ("" : : "r" (reference)); } -------------------------------------------------- /* (1,0) even more complex statements */ void main() { __asm__ __volatile__ ("getcon cr%1, %0" : "=r" (res) : "n" (k)); __asm__ __volatile__ ("putcon %0, cr%1" : : "r" (mm), "n" (k)); __asm__ __volatile__ ("putcfg %0, %1, %2" : : "r" (mm), "n" (s), "r" (mw)); __asm__ __volatile__ ("ld.b %m0, r63" : : "o" (((char*)mm)[s])); __asm__ __volatile__ ("" : "+m"(x->a) : "r"(x) : "memory", "cc"); __asm__ ("" : "=r"(tmp), "=r"(ret)); asm volatile ("sleep"); asm("%0"::"r"(1.5)); } -------------------------------------------------- /* (1,0) declarators */ void main() { register unsigned long long r18 asm ("r18"); register unsigned long long r19 asm ("r19"); register unsigned long long r0 asm ("r0") = 0; register unsigned long long r1 asm ("r1") = 1; register int r2 asm ("r2") = i >> 31; register int r3 asm ("r3") = j >> 31; } -------------------------------------------------- /* (1,0) declarators */ __asm__ ("foo"); __asm__ ("foo"); register unsigned long long r18 asm ("r18"); -------------------------------------------------- /* (1,0) from the gcc regression tests */ f(){asm("f":::"cc");} g(x,y){asm("g"::"%r"(x), "r"(y));} void foo (void) asm ("_bar"); void main() { asm("": "+r" (v) : "r" (0), "r" (1)); __asm__ ("mull %3" : "=a" (rp[0]), "=d" (rp[1]) : "%0" (7), "rm" (7)); asm volatile ("" : : : "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"); asm volatile ("test0 X%0Y%[arg]Z" : [arg] "=g" (x)); asm volatile ("test1 X%[out]Y%[in]Z" : [out] "=g" (y) : [in] "0"(y)); asm volatile ("test2 X%a0Y%a[arg]Z" : : [arg] "p" (&z)); asm volatile ("test3 %[in]" : [inout] "=g"(x) : "[inout]" (x), [in] "g" (y)); } Convert-Binary-C-0.85/tests/239_macros.t0000644000175000001440000001054514677003452016430 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 54; use Convert::Binary::C @ARGV; my @stdname = qw( __STDC_HOSTED__ __STDC_VERSION__ ); my @stddef = qw( __STDC_HOSTED__=1 __STDC_VERSION__=199901L ); my $c = Convert::Binary::C->new; eval { $c->parse(''); }; is($@, '', 'parse an empty string'); is(scalar $c->macro_names, scalar @stdname, 'STDC macro name count'); is(join(',', sort $c->macro_names), join(',', sort @stdname), 'STDC macro names'); is(scalar $c->macro, scalar @stddef, 'STDC macro count'); is(scalar $c->macro('FOO', 'BAR', 'BAZ'), 3, 'macro count'); is(join(',', sort map { trim_macro($_) } $c->macro), join(',', sort @stddef), 'STDC macro definitions'); is(join(',', map { trim_macro($_) } $c->macro(@stdname)), join(',', @stddef), 'STDC macro definitions (arg)'); is(trim_macro(scalar $c->macro('__STDC_HOSTED__')), '__STDC_HOSTED__=1', 'STDC macro definition (scalar context)'); is_deeply([map { defined $_ ? trim_macro($_) : undef } $c->macro('FOOBAR', @stdname)], [undef, @stddef], 'STDC macro definitions (arg)'); for my $m ($c->macro_names) { ok($c->defined($m), "$m defined"); } ok(!$c->defined('FOOBAR'), 'FOOBAR not defined'); my @name = qw{ DEFINED MULTIPLY }; my @def = ('DEFINED', 'MULTIPLY(x,y)=((x)*(y))'); eval { $c->parse(<macro_names, @stdname + @name, 'macro name count'); is(join(',', sort $c->macro_names), join(',', sort @stdname, @name), 'macro names'); is(scalar $c->macro, 4, 'macro count'); is(join(',', sort map { trim_macro($_) } $c->macro), join(',', sort @stddef, @def), 'macro definitions'); is(join(',', map { trim_macro($_) } $c->macro(@name)), join(',', @def), 'macro definitions (arg)'); is(trim_macro(scalar $c->macro('DEFINED')), 'DEFINED', 'macro definition (scalar context)'); is_deeply([map { defined $_ ? trim_macro($_) : undef } $c->macro('NOT_DEFINED', @name)], [undef, @def], 'STDC macro definitions (arg)'); for my $m ($c->macro_names) { ok($c->defined($m), "$m defined"); } ok(!$c->defined('NOT_DEFINED'), 'NOT_DEFINED not defined'); my $src = $c->sourcify({ Defines => 1 }); my @srcdef = $src =~ /^#define\s+(.*)$/gm; is(join(',', sort map { trim_macro($_) } @srcdef), join(',', sort @def), 'sourcify'); my @cfg = ( { does_reset => 1, config => [ HasCPPComments => 1 ] }, { does_reset => 0, config => [ PointerSize => 2 ] }, { does_reset => 1, config => [ HasMacroVAARGS => 1 ] }, { does_reset => 0, config => [ Warnings => 1 ] }, { does_reset => 1, config => [ Include => ['a'] ] }, { does_reset => 1, config => [ Define => ['b'] ] }, { does_reset => 1, config => [ Assert => ['a(b)'] ] }, ); $c->configure(HasCPPComments => 0, PointerSize => 4, HasMacroVAARGS => 0, Warnings => 0, Include => [], Define => [], Assert => []); my $d = $c->clone; for my $t (@cfg) { $c->clean->parse("#define DEFINED\n"); ok($c->defined('DEFINED'), 'DEFINED defined'); $c->configure(@{$t->{config}}); if ($t->{does_reset}) { ok(!$c->defined('DEFINED'), "DEFINED not defined after $t->{config}[0]"); } else { ok($c->defined('DEFINED'), "DEFINED still defined after $t->{config}[0]"); } my($meth, @arg) = map { ref $_ ? @$_ : $_ } @{$t->{config}}; $d->clean->parse("#define DEFINED\n"); ok($d->defined('DEFINED'), 'DEFINED defined'); $d->$meth(@arg); if ($t->{does_reset}) { ok(!$d->defined('DEFINED'), "DEFINED not defined after $meth"); } else { ok($d->defined('DEFINED'), "DEFINED still defined after $meth"); } } sub trim_macro { my $m = shift; my @p; if ($m =~ /^(\w+\([^)]+\))(?:\s+(.*))?$/) { push @p, $1; defined $2 and push @p, $2; } elsif ($m =~ /^(\w+)(?:\s+(.*))?$/) { push @p, $1; defined $2 and push @p, $2; } else { die "unexpected macro format in [$m]\n"; } for (@p) { s/\s+//g } return join '=', @p; } Convert-Binary-C-0.85/tests/208_float.t0000644000175000001440000000314014677003452016236 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 30 } eval { $p = Convert::Binary::C->new; }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $p->parse(<<'EOF'); struct floating { struct { char a; float b; double c; } a[4]; float b[4]; double c[4]; }; EOF }; ok($@,'',"parse() failed"); $data = { a => [ { a => 42, b => -5.0 , c => 4.2e33 }, { a => 43, b => 1.5 , c => 3.14159 }, { a => 44, b => 3.14159, c => 1.5 }, { a => 45, b => 4.2e33 , c => -5.0 }, ], b => [-5.0, 1.5, 3.14159, 4.2e33], c => [-5.0, 1.5, 3.14159, 4.2e33], }; $packed = $p->pack( 'floating', $data ); $unpacked = $p->unpack( 'floating', $packed ); reccmp( $data, $unpacked ); sub reccmp { my($ref, $val) = @_; my $id = ref $ref; unless( $id ) { # special treatment because floats can be inaccurate abs( ($ref - $val) / $ref ) < 1e-6 ? ok(1) : ok($val, $ref); return; } if( $id eq 'ARRAY' ) { ok( @$ref == @$val ); for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ); } } elsif( $id eq 'HASH' ) { ok( @{[keys %$ref]} == @{[keys %$val]} ); for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ); } } } Convert-Binary-C-0.85/tests/213_string.t0000644000175000001440000001037514677003452016443 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 91 } eval { $C{B} = Convert::Binary::C->new( LongSize => 4, LongLongSize => 8, ByteOrder => 'BigEndian' ); }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $C{B}->parse( <<'ENDC' ); typedef signed long long int i_64; typedef unsigned long long int u_64; typedef signed long int i_32; typedef unsigned long int u_32; ENDC }; ok($@,'',"failed to parse code"); eval { $C{L} = $C{B}->clone->ByteOrder( 'LittleEndian' ); }; ok($@,'',"failed to clone LittleEndian object"); @bytes = ( 0xAB, 0x54, 0xA9, 0x8C, 0xEB, 0x1F, 0x0A, 0xD2 ); $str{B} = pack 'C*', @bytes; $str{L} = pack 'C*', reverse @bytes; %order = ( B => 'BigEndian', L => 'LittleEndian', ); @tests = ( { type => 'u_64', B => "12345678901234567890", L => "12345678901234567890", }, { type => 'i_64', B => "-6101065172474983726", L => "-6101065172474983726", }, { type => 'u_32', B => "2874452364", L => "3944680146", }, { type => 'i_32', B => "-1420514932", L => "-350287150", }, ); for my $test ( @tests ) { for my $bo ( qw( B L ) ) { print "# unpack $order{$bo} $test->{type}\n"; eval { $val = $C{$bo}->unpack( $test->{type}, $str{$bo} ) }; ok($@,'',"unpack failed"); ok($val, $test->{$bo}, "wrong value"); } } @tests = ( { type => 'u_64', B => " + 12345678901234567890", L => "12345678901234567890", }, { type => 'i_64', B => " -6101065172474983726", L => "- 6101065172474983726", }, { type => 'u_32', B => " + 2874452364", L => "3944680146", }, { type => 'i_32', B => "- 1420514932", L => " - 350287150", }, ); for my $test ( @tests ) { for my $bo ( qw( B L ) ) { print "# pack $order{$bo} $test->{type}\n"; eval { $val = $C{$bo}->pack( $test->{type}, $test->{$bo} ) }; ok($@,'',"pack failed for $order{$bo} $test->{type} test"); ok(length($val), $C{$bo}->sizeof($test->{type}), "wrong string size" ); ok($val, substr($str{$bo}, 0, length($val)), "wrong string"); } } @tests = ( { name => 'dec', type => 'u_64', str => pack("C*", 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0x0E), B => " 81985529216486670", L => "1066697293388129025", }, { name => 'hex', type => 'u_64', str => pack("C*", 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0x0E), B => "0x0123456789aBCd0E", L => " 0x0ECdaB8967452301", }, { name => 'oct', type => 'u_64', str => pack("C*", 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0x0E), B => "04432126361152746416", L => " 073155270454721221401", }, { name => 'bin', type => 'u_64', str => pack("C*", 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0x0E), B => " 0b100100011010001010110011110001001101010111100110100001110 ", L => "0b111011001101101010111000100101100111010001010010001100000001 ", }, { name => 'dec', type => 'u_32', str => pack("C*", 0x00, 0xaf, 0xfe, 0x00), B => " 11533824 ", L => " 16690944", }, { name => 'hex', type => 'u_32', str => pack("C*", 0x00, 0xaf, 0xfe, 0x00), B => " 0x00AffE00", L => "0x00FeaF00 ", }, { name => 'oct', type => 'u_32', str => pack("C*", 0x00, 0xaf, 0xfe, 0x00), B => " 053777000", L => " 077527400 ", }, { name => 'bin', type => 'u_32', str => pack("C*", 0x00, 0xaf, 0xfe, 0x00), B => " 0b101011111111111000000000", L => " 0b111111101010111100000000", }, ); for my $test ( @tests ) { for my $bo ( qw( B L ) ) { print "# pack $test->{name} $order{$bo} $test->{type}\n"; eval { $val = $C{$bo}->pack( $test->{type}, $test->{$bo} ) }; ok($@,'',"pack failed for $order{$bo} $test->{type} test"); ok(length($val), $C{$bo}->sizeof($test->{type}), "wrong string size" ); ok($val, substr($test->{str}, 0, length($val)), "wrong string"); } } Convert-Binary-C-0.85/tests/201_config.t0000644000175000001440000004710514677003452016400 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; use constant SUCCEED => 1; use constant FAIL => 0; $^W = 1; BEGIN { plan tests => 2070 } $debug = Convert::Binary::C::feature( 'debug' ); ok( defined $debug ); $RDBG = $debug ? '' : 'no debugging'; # passing references as options is not legal, so this is # always checked for non-list options @refs = ( { in => [12], result => FAIL }, { in => \123, result => FAIL }, { in => {1,2}, result => FAIL }, ); $thisfile = quotemeta "at $0"; sub check_config { my $opt = ref($_[0]) eq 'HASH' ? shift : {}; my $reason = $opt->{skip} || ''; my $option = shift; my $value; for my $config ( @_ ) { my @warn; { local $SIG{__WARN__} = sub { push @warn, shift }; my $reference = $config->{out} || $config->{in}; eval { $p = Convert::Binary::C->new }; skip($reason, $@, '', "failed to create Convert::Binary::C object"); print "# \$p->configure( $option => $config->{in} )\n"; eval { $p->configure( $option => $config->{in} ) }; if( $@ ) { my $err = $@; $err =~ s/^/# /g; print "# failed due to:\n$err"; } skip( $reason, ($@ eq '' ? SUCCEED : FAIL), $config->{result}, "$option => $config->{in}" ); skip( $reason, $@, qr/$option must be.*not.*$thisfile/ ) if $config->{result} == FAIL; print "# \$p->$option( $config->{in} )\n"; eval { $p->$option( $config->{in} ) }; if( $@ ) { my $err = $@; $err =~ s/^/# /g; print "# failed due to:\n$err"; } skip( $reason, ($@ eq '' ? SUCCEED : FAIL), $config->{result}, "$option => $config->{in}" ); skip( $reason, $@, qr/$option must be.*not.*$thisfile/ ) if $config->{result} == FAIL; if( $config->{result} == SUCCEED ) { print "# \$value = \$p->configure( $option )\n"; eval { $value = $p->configure( $option ) }; skip( $reason, $@, '', "cannot get value for '$option' via configure" ); skip( $reason, $value, $reference, "invalid value for '$option' via configure" ); print "# \$value = \$p->$option\n"; eval { $value = $p->$option() }; skip( $reason, $@, '', "cannot get value for '$option' via $option" ); skip( $reason, $value, $reference, "invalid value for '$option' via $option" ); } } if( exists $config->{warnings} ) { my $fail = 0; for my $warning ( @warn ) { print "# $warning"; my $expected = 0; $warning =~ $_ and $expected++ for @{$config->{warnings}}; $expected == 1 or $fail++; } skip( $reason, $fail, 0, "unexpected warnings issued for option '$option'" ); } else { for my $warning ( @warn ) { print "# unexpected warning: $warning"; } skip( $reason, scalar @warn, 0, "warnings issued for option '$option'" ); } } print "# \$p->configure( $option )\n"; my @warn; { local $SIG{__WARN__} = sub { push @warn, shift }; eval { $p->configure( $option ) }; } skip( $reason, $@, '', "failed to call configure in void context" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } skip( $reason, scalar @warn, 1, "invalid number of warnings issued" ); skip( $reason, $warn[0], qr/Useless use of configure in void context.*$thisfile/ ); print "# \$p->$option\n"; @warn = (); { local $SIG{__WARN__} = sub { push @warn, shift }; eval { $p->$option() }; } skip( $reason, $@, '', "failed to call $option in void context" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } skip( $reason, scalar @warn, 1, "invalid number of warnings issued" ); skip( $reason, $warn[0], qr/Useless use of $option in void context.*$thisfile/ ); } sub check_config_bool { my $opt = ref($_[0]) eq 'HASH' ? shift : {}; my $option = shift; my @tests = ( { in => 0, out => 0, result => SUCCEED }, { in => 1, out => 1, result => SUCCEED }, { in => 4711, out => 1, result => SUCCEED }, { in => -42, out => 1, result => SUCCEED }, @refs ); check_config( $opt, $option, @tests ); } sub check_option_strlist { my $option = shift; my @warn; my @tests = ( { in => \4711, result => FAIL, error => qr/$option wants an array reference/ }, { in => [], result => SUCCEED }, { in => { key => 'val' }, result => FAIL, error => qr/$option wants an array reference/ }, { in => ['const', 'void'], result => SUCCEED }, ); local $SIG{__WARN__} = sub { push @warn, shift }; for my $config ( @tests ) { @warn = (); eval { $p = Convert::Binary::C->new }; ok($@, '', "failed to create Convert::Binary::C object"); print "# \$p->configure( $option => $config->{in} )\n"; eval { $p->configure( $option => $config->{in} ) }; if( $@ ) { my $err = $@; $err =~ s/^/# /g; print "# failed due to:\n$err"; } ok( ($@ eq '' ? SUCCEED : FAIL), $config->{result}, "$option => $config->{in}" ); ok( $@, $config->{error} ) if $config->{result} == FAIL; print "# \$p->$option( $config->{in} )\n"; eval { $p->$option( $config->{in} ) }; if( $@ ) { my $err = $@; $err =~ s/^/# /g; print "# failed due to:\n$err"; } ok( ($@ eq '' ? SUCCEED : FAIL), $config->{result}, "$option => $config->{in}" ); ok( $@, $config->{error} ) if $config->{result} == FAIL; if( $config->{result} == SUCCEED ) { print "# \$value = \$p->configure( $option )\n"; eval { $value = $p->configure( $option ) }; ok( $@, '', "cannot get value for '$option' via configure" ); ok( "@$value", "@{$config->{in}}", "invalid value for '$option' via configure" ); print "# \$value = \$p->$option\n"; eval { $value = $p->$option() }; ok( $@, '', "cannot get value for '$option' via $option" ); ok( "@$value", "@{$config->{in}}", "invalid value for '$option' via $option" ); } for my $warning ( @warn ) { print "# unexpected warning: $warning"; } ok( scalar @warn, 0, "warnings issued for option '$option'" ); } @warn = (); print "# \$p->configure( $option )\n"; eval { $p->configure( $option ) }; ok( $@, '', "failed to call configure in void context" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } ok( scalar @warn, 1, "invalid number of warnings issued" ); ok( $warn[0], qr/Useless use of configure in void context.*$thisfile/ ); @warn = (); print "# \$p->$option\n"; eval { $p->$option() }; ok( $@, '', "failed to call $option in void context" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } ok( scalar @warn, 1, "invalid number of warnings issued" ); ok( $warn[0], qr/Useless use of $option in void context.*$thisfile/ ); } sub check_option_strlist_args { my $option = shift; my @warn; eval { $p = Convert::Binary::C->new; $p->$option( [qw(foo bar)] ); $p->$option( 'include' ); $p->$option( qw(a b c) ); $value = $p->$option(); }; ok( $@, '', "failed to call $option with various arguments" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } ok( scalar @warn, 0, "invalid number of warnings issued" ); ok( "@$value", "@{[qw(foo bar include a b c)]}", "invalid value for '$option'" ); } sub compare_config { my($cfg1, $cfg2) = @_; my $fail = 0; scalar keys %$cfg1 == scalar keys %$cfg2 or $fail++; for my $key ( keys %$cfg1 ) { if( ref $cfg1->{$key} eq 'ARRAY' ) { "@{$cfg1->{$key}}" eq "@{$cfg2->{$key}}" or $fail++; } elsif( ref $cfg1->{$key} eq 'HASH' ) { "@{[sort keys %{$cfg1->{$key}}]}" eq "@{[sort keys %{$cfg1->{$key}}]}" or $fail++; for( sort keys %{$cfg1->{$key}} ) { if( defined( $cfg1->{$key}{$_} ) != defined( $cfg2->{$key}{$_} ) ) { $fail++; } if( defined( $cfg1->{$key}{$_} ) and defined( $cfg2->{$key}{$_} ) and $cfg1->{$key}{$_} ne $cfg2->{$key}{$_} ) { $fail++; } } } else { if (defined($cfg1->{$key}) && defined($cfg2->{$key})) { $cfg1->{$key} eq $cfg2->{$key} or $fail++; } else { defined($cfg1->{$key}) == defined($cfg2->{$key}) or $fail++; } } } return $fail == 0; } sub checkrc { my $rc = shift; my $fail = 0; my $succ = 0; while( $rc =~ /SV\s*=\s*(\S+).*?REFCNT\s*=\s*(\d+)/g ) { if( $2 == 1 ) { $succ++ } elsif ($1 eq 'NULL' && $2 >= 1) { # we hit &PL_sv_undef... $succ++ } else { print "# REFCNT = $2 for Sv$1, should be 1\n"; $fail++; } } return $succ > 0 && $fail == 0; } @tests = ( { in => -2, result => FAIL }, { in => -1, result => SUCCEED }, { in => 0, result => SUCCEED }, { in => 1, result => SUCCEED }, { in => 2, result => SUCCEED }, { in => 3, result => FAIL }, { in => 4, result => SUCCEED }, { in => 5, result => FAIL }, { in => 6, result => FAIL }, { in => 7, result => FAIL }, { in => 8, result => SUCCEED }, { in => 9, result => FAIL }, @refs ); check_config( 'EnumSize', @tests ); @tests = ( { in => -1, result => FAIL }, { in => 0, result => SUCCEED }, { in => 1, result => SUCCEED }, { in => 2, result => SUCCEED }, { in => 3, result => FAIL }, { in => 4, result => SUCCEED }, { in => 5, result => FAIL }, { in => 6, result => FAIL }, { in => 7, result => FAIL }, { in => 8, result => SUCCEED }, { in => 9, result => FAIL }, @refs ); check_config( $_, @tests ) for qw( PointerSize IntSize CharSize ShortSize LongSize LongLongSize ); @tests = ( { in => -1, result => FAIL }, { in => 0, result => SUCCEED }, { in => 1, result => SUCCEED }, { in => 2, result => SUCCEED }, { in => 3, result => FAIL }, { in => 4, result => SUCCEED }, { in => 5, result => FAIL }, { in => 6, result => FAIL }, { in => 7, result => FAIL }, { in => 8, result => SUCCEED }, { in => 9, result => FAIL }, { in => 10, result => FAIL }, { in => 11, result => FAIL }, { in => 12, result => SUCCEED }, { in => 13, result => FAIL }, { in => 14, result => FAIL }, { in => 15, result => FAIL }, { in => 16, result => SUCCEED }, { in => 17, result => FAIL }, @refs ); check_config( $_, @tests ) for qw( FloatSize DoubleSize LongDoubleSize ); @tests = ( { in => -1, result => FAIL }, { in => 0, result => SUCCEED }, { in => 1, result => SUCCEED }, { in => 2, result => SUCCEED }, { in => 3, result => FAIL }, { in => 4, result => SUCCEED }, { in => 5, result => FAIL }, { in => 6, result => FAIL }, { in => 7, result => FAIL }, { in => 8, result => SUCCEED }, { in => 9, result => FAIL }, { in => 10, result => FAIL }, { in => 11, result => FAIL }, { in => 12, result => FAIL }, { in => 13, result => FAIL }, { in => 14, result => FAIL }, { in => 15, result => FAIL }, { in => 16, result => SUCCEED }, { in => 17, result => FAIL }, @refs ); check_config( $_, @tests ) for qw( Alignment CompoundAlignment ); check_config( 'ByteOrder', { in => 'BigEndian', result => SUCCEED }, { in => 'LittleEndian', result => SUCCEED }, { in => 'NoEndian', result => FAIL }, @refs ); check_config( 'EnumType', { in => 'Integer', result => SUCCEED }, { in => 'String', result => SUCCEED }, { in => 'Both', result => SUCCEED }, { in => 'None', result => FAIL }, @refs ); check_config_bool( $_ ) for qw( UnsignedBitfields UnsignedChars Warnings HasCPPComments HasMacroVAARGS ); check_option_strlist( $_ ) for qw( Include Define Assert DisabledKeywords ); check_option_strlist_args( $_ ) for qw( Include Define Assert); { my @warn; eval { require Tie::Hash::Indexed }; $@ and eval { require Tie::IxHash }; $@ and push @warn, qr/^Couldn't load a module for member ordering.*$thisfile/; @tests = ( { in => 0, out => 0, result => SUCCEED, warnings => [] }, { in => 1, out => 1, result => SUCCEED, warnings => \@warn }, { in => 4711, out => 1, result => SUCCEED, warnings => \@warn }, { in => -42, out => 1, result => SUCCEED, warnings => \@warn }, @refs ); check_config( 'OrderMembers', @tests ); } #=================================================================== # check DisabledKeywords option #=================================================================== eval { $p = Convert::Binary::C->new; $p->configure( DisabledKeywords => ['void', 'foo', 'const'] ); }; ok( $@, qr/Cannot disable unknown keyword 'foo'.*$thisfile/ ); eval { $p = Convert::Binary::C->new; $p->DisabledKeywords( 'void', 'foo', 'const' ); }; ok( $@, qr/DisabledKeywords cannot take more than one argument.*$thisfile/ ); eval { $p = Convert::Binary::C->new; $p->DisabledKeywords( ['auto', 'enum'] ); $p->DisabledKeywords( ['void', 'while', 'register'] ); }; ok( $@, qr/Cannot disable unknown keyword 'while'.*$thisfile/ ); $kw = $p->DisabledKeywords; ok( "@$kw", "auto enum", 'DisabledKeywords did not preserve configuration' ); #=================================================================== # check KeywordMap option #=================================================================== eval { $p = Convert::Binary::C->new; $p->configure( KeywordMap => 5 ); }; ok( $@, qr/KeywordMap wants a hash reference.*$thisfile/ ); eval { $p = Convert::Binary::C->new; $p->configure( KeywordMap => [ __xxx__ => 'foo' ] ); }; ok( $@, qr/KeywordMap wants a hash reference.*$thisfile/ ); eval { $p = Convert::Binary::C->new; $p->KeywordMap( { '' => 'int' } ); }; ok( $@, qr/Cannot use empty string as a keyword.*$thisfile/ ); eval { $p = Convert::Binary::C->new; $p->KeywordMap( { '1_d' => 'int' } ); }; ok( $@, qr/Cannot use '1_d' as a keyword.*$thisfile/ ); eval { $p = Convert::Binary::C->new; $p->KeywordMap( { '_d' => [] } ); }; ok( $@, qr/Cannot use a reference as a keyword.*$thisfile/ ); eval { $p = Convert::Binary::C->new; $p->KeywordMap( { '_d' => 'foo' } ); }; ok( $@, qr/Cannot use 'foo' as a keyword.*$thisfile/ ); eval { $p = Convert::Binary::C->new; $p->KeywordMap( {'__const' => 'const', '__restrict' => undef} ); $p->KeywordMap( {'__volatile' => 'volatile', '__foo' => 'foo'} ); }; ok( $@, qr/Cannot use 'foo' as a keyword.*$thisfile/ ); $kw = $p->KeywordMap; ok( "@{[sort keys %$kw]}", "__const __restrict", 'KeywordMap did not preserve configuration' ); #=================================================================== # check invalid configuration #=================================================================== @tests = ( { value => [1, 2, 3], result => FAIL, error => qr/Invalid number of arguments to configure.*$thisfile/ }, { value => [[1], 2], result => FAIL, error => qr/Option name must be a string, not a reference.*$thisfile/ }, ); foreach $config ( @tests ) { eval { $p = Convert::Binary::C->new; $p->configure( @{$config->{value}} ); }; ok( ($@ eq '' ? SUCCEED : FAIL), $config->{result}, "invalid configuration: " . join(', ', @{$config->{value}}) ); ok( $@, $config->{error} ) if exists $config->{error}; } #=================================================================== # check invalid option #=================================================================== eval { $p = Convert::Binary::C->new; $p->configure( Something => 'xxx', ByteOrder => 'BigEndian', EnumSize => 0, ); }; ok( $@, qr/Invalid option 'Something'.*$thisfile/ ); #=================================================================== # check invalid method #=================================================================== eval { $p = Convert::Binary::C->new; $p->some_method( 1, 2, 3 ); }; ok( $@, qr/Invalid method some_method called.*$thisfile/ ); #=================================================================== # check configure returning the whole configuration #=================================================================== %config = ( 'KeywordMap' => {}, 'DisabledKeywords' => [], 'UnsignedBitfields' => 0, 'UnsignedChars' => 0, 'CharSize' => 1, 'ShortSize' => 2, 'EnumType' => 'Integer', 'EnumSize' => 4, 'Include' => [ '/usr/include' ], 'DoubleSize' => 4, 'FloatSize' => 4, 'HasCPPComments' => 1, 'Alignment' => 1, 'CompoundAlignment' => 1, 'Define' => [ 'DEBUGGING', 'FOO=123' ], 'HasMacroVAARGS' => 1, 'LongSize' => 4, 'Warnings' => 0, 'ByteOrder' => 'LittleEndian', 'Assert' => [], 'IntSize' => 4, 'PointerSize' => 4, 'LongLongSize' => 8, 'LongDoubleSize' => 12, 'OrderMembers' => 0, 'Bitfields' => { Engine => 'Simple', BlockSize => 2 }, 'StdCVersion' => undef, 'HostedC' => 0, ); eval { $p = Convert::Binary::C->new( %config ); $cfg = $p->configure; }; ok( $@, '', "failed to retrieve configuration" ); ok( compare_config( \%config, $cfg ) ); #=================================================================== # check option chaining #=================================================================== %newcfg = ( 'KeywordMap' => {'__signed__' => 'signed', '__restrict' => undef}, 'DisabledKeywords' => ['const', 'register'], 'UnsignedBitfields' => 1, 'UnsignedChars' => 1, 'CharSize' => 2, 'ShortSize' => 4, 'EnumType' => 'Both', 'EnumSize' => 0, 'Include' => [ '/usr/local/include', '/usr/include', '/include' ], 'DoubleSize' => 8, 'FloatSize' => 8, 'HasCPPComments' => 1, 'Alignment' => 2, 'CompoundAlignment' => 4, 'Define' => [ 'DEBUGGING', 'FOO=123', 'BAR=456' ], 'HasMacroVAARGS' => 1, 'LongSize' => 4, 'Warnings' => 1, 'ByteOrder' => 'BigEndian', 'Assert' => [], 'IntSize' => 4, 'PointerSize' => 2, 'LongLongSize' => 8, 'LongDoubleSize' => 12, 'OrderMembers' => 0, 'Bitfields' => { Engine => 'Simple', BlockSize => 4 }, 'StdCVersion' => 199901, 'HostedC' => undef, ); @warn = (); eval { local $SIG{__WARN__} = sub { push @warn, shift }; $p = Convert::Binary::C->new( %config ); $p->UnsignedChars( 1 )->configure( ShortSize => 4, EnumType => 'Both', EnumSize => 0 ) ->Include( ['/usr/local/include'] )->DoubleSize( 8 ) ->CompoundAlignment( 4 ); $p->FloatSize( 8 )->Include( qw( /usr/include /include ) )->DisabledKeywords( [qw( const register )] ) ->Alignment( 2 )->Define( qw( BAR=456 ) )->configure( ByteOrder => 'BigEndian' ); $p->configure( PointerSize => 2 )->Warnings( 1 )->UnsignedBitfields( 1 ) ->KeywordMap( {'__signed__' => 'signed', '__restrict' => undef} ); $p->CharSize(2); $p->Bitfields( { BlockSize => 4 } ); $p->configure(StdCVersion => 199901); $p->HostedC(undef); $cfg = $p->configure; }; ok( $@, '', "failed to configure object" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } ok( scalar @warn, 0, "invalid number of warnings issued" ); ok( compare_config( \%newcfg, $cfg ) ); $debug and $result = checkrc( Convert::Binary::C::__DUMP__( $cfg ) ); skip( $RDBG, $result ); Convert-Binary-C-0.85/tests/217_preproc.t0000644000175000001440000001356114677003452016613 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 43; use Convert::Binary::C @ARGV; use strict; BEGIN { $^W = 1 } my $c = eval { Convert::Binary::C->new(Define => ['b=a'], Include => ['tests/include/files', 'include/files']); }; is($@, '', "create Convert::Binary::C::Cached object"); #-------------------- # check of ucpp bugs #-------------------- eval { $c->parse(<<'END'); #define a int b x; END }; is($@, '', "parse code"); # eval { # $c->parse( <<'END' ); # #include "ifnonl.h" # typedef int foo; # END # }; # is($@, '', "failed to parse code"); #---------------------------- # check if #ident is ignored #---------------------------- my $s = eval { $c->parse(<<'END'); #ident "bla bla" typedef int xxx; END $c->sizeof('xxx'); }; is($@, '', "parse code with #ident correctly"); is($s, $c->sizeof('int')); #------------------------------ # check #warn / #warning #------------------------------ { my @warn; local $SIG{'__WARN__'} = sub { push @warn, $_[0] }; $s = $c->clean->parse('#warning "A #warning!"'); ok($s); is(scalar @warn, 1); like($warn[0], qr/#warning/); @warn = (); $s = $c->clean->parse('#warn "A #warn!"'); ok($s); is(scalar @warn, 1); like($warn[0], qr/#warn/); } #---------------- # various checks #---------------- $c->clean; eval { $c->parse(<<'END'); #include "unmatched.h" END }; like($@, qr/unterminated #if construction/); like($@, qr/included from \[buffer\]:1/); $c->clean->CharSize(1)->Warnings(1); my @warn; $s = eval { local $SIG{__WARN__} = sub { push @warn, @_ }; $c->parse(<<'END'); ??=include "trigraph.h" END $c->sizeof('array'); }; is($@, ''); is($s, 42); is(scalar @warn, 5); like($warn[0], qr/^\[buffer\], line 1: \(warning\) trigraph \?\?= encountered/); like($warn[1], qr/trigraph\.h, line 1: \(warning\) trigraph \?\?= encountered/); like($warn[1], qr/included from \[buffer\]:1/); like($warn[2], qr/trigraph\.h, line 3: \(warning\) trigraph \?\?\( encountered/); like($warn[2], qr/included from \[buffer\]:1/); like($warn[3], qr/trigraph\.h, line 3: \(warning\) trigraph \?\?\) encountered/); like($warn[3], qr/included from \[buffer\]:1/); like($warn[4], qr/^\[buffer\]: \(warning\) 4 trigraph\(s\) encountered/); #-------------------------------------------- # promotion of conditional operator operands #-------------------------------------------- $c->clean; eval { $c->parse(<<'END'); enum test { #if 1 > (0 ? (~1) : (~1)) SS0 = 1, #else SS0 = 0, #endif #if 1 > (1 ? (~1) : (~1)) SS1 = 1, #else SS1 = 0, #endif #if 1 > (0 ? (~1U) : (~1)) US0 = 1, #else US0 = 0, #endif #if 1 > (1 ? (~1U) : (~1)) US1 = 1, #else US1 = 0, #endif #if 1 > (0 ? (~1) : (~1U)) SU0 = 1, #else SU0 = 0, #endif #if 1 > (1 ? (~1) : (~1U)) SU1 = 1, #else SU1 = 0, #endif #if 1 > (0 ? (~1U) : (~1U)) UU0 = 1, #else UU0 = 0, #endif #if 1 > (1 ? (~1U) : (~1U)) UU1 = 1, #else UU1 = 0, #endif }; END }; is($@, ''); is_deeply($c->enum('test')->{enumerators}, { SS0 => 1, SS1 => 1, US0 => 0, US1 => 0, SU0 => 0, SU1 => 0, UU0 => 0, UU1 => 0, }, 'operands of conditional operator promoted correctly'); #--------------------------------------------------------- # make sure that the promotion fix doesn't break anything #--------------------------------------------------------- $c->clean; eval { $c->parse(<<'END'); #if 1 ? 0 : 1/0 # error broken #else # define OK #endif END }; is($@, ''); ok($c->defined('OK'), 'branch of conditional operator not evaluated'); #--------------------------------------------------------- $c->clean; eval { $c->parse(<<'END'); #if (1 || 1/0) && !(0 && 2/0) # define OK #else # error broken #endif END }; is($@, ''); ok($c->defined('OK'), 'branch of short-circuiting operator not evaluated'); #--------------------------------------------------------- $c->clean; eval { $c->parse(<<'END'); #if 1 + 2 + 3 / 3 == 6 - (1 << 1) # define OK #else # error broken #endif END }; is($@, ''); ok($c->defined('OK'), 'arithmetic expressions evaluated correctly'); #--------------------------------------------------------- $c->clean; eval { $c->parse(<<'END'); #if (1 && 3 == 4 - 1 ? 5 - 3 : 7) == 2 # define OK #else # error broken #endif END }; is($@, ''); ok($c->defined('OK'), 'arithmetic expressions evaluated correctly'); #------------------------- # tests arithmetic errors #------------------------- $c->clean; eval { $c->parse(<<'END'); #if 18446744073709551615U #endif END }; is($@, ''); $c->clean; eval { $c->parse(<<'END'); #if 18446744073709551616U #endif END }; like($@, qr/constant too large/); #------------------------------ # test StdCVersion and HostedC #------------------------------ $c = Convert::Binary::C->new; is($c->StdCVersion, 199901, "StdCVersion default"); is($c->HostedC, 1, "HostedC default"); my $code = <clean ->configure(StdCVersion => undef, HostedC => undef) ->parse($code); is($c->unpack('test', $c->pack('test', 'STDC')), -1); is($c->unpack('test', $c->pack('test', 'HOSTED')), -1); $c->clean ->configure(StdCVersion => '4711', HostedC => 0) ->parse($code); is($c->unpack('test', $c->pack('test', 'STDC')), 4711); is($c->unpack('test', $c->pack('test', 'HOSTED')), 0); $c->clean ->configure(StdCVersion => '199901', HostedC => 1) ->parse($code); is($c->unpack('test', $c->pack('test', 'STDC')), 199901); is($c->unpack('test', $c->pack('test', 'HOSTED')), 1); # TODO: more arith checks (errors/warnings) Convert-Binary-C-0.85/tests/226_indexed.t0000644000175000001440000000446514677003452016564 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 45 } my $reason = do { my @w; local $SIG{__WARN__} = sub { push @w, @_ }; my $c = Convert::Binary::C->new( OrderMembers => 1 ); (grep /Couldn't load a module for member ordering/, @w) ? "member ordering requires indexed hashes" : ""; }; my $order = $reason ? 0 : 1; my @keys = grep !/do|if/, 'aa' .. 'zz'; my $members = join "\n", map "unsigned char $_;", @keys; my $u = Convert::Binary::C->new( OrderMembers => 0 ); my $o = Convert::Binary::C->new( OrderMembers => $order ); for my $c ( $u, $o ) { $c->parse( <sizeof('order'); my $unp_u = $u->unpack( 'order', $data ); my $unp_o = $o->unpack( 'order', $data ); if ($order) { print "# Using ", ref tied %$unp_o, " for ordering\n"; } my $fail = 0; my $keys = join ',', @keys; for( @keys ) { $unp_u->{$_} == $unp_o->{$_} or $fail++; $unp_u->{foo}[0]{$_} == $unp_o->{foo}[0]{$_} or $fail++; $unp_u->{foo}[1]{$_} == $unp_o->{foo}[1]{$_} or $fail++; } ok( $fail, 0 ); skip( $reason, $keys.",foo", join(',', keys %$unp_o) ); skip( $reason, $keys, join(',', keys %{$unp_o->{foo}[0]}) ); skip( $reason, $keys, join(',', keys %{$unp_o->{foo}[1]}) ); my $list = pack 'C*', map { rand(256) } 1 .. 10*$u->sizeof('order'); my @unp_u = $u->unpack('order', $list); my @unp_o = $o->unpack('order', $list); ok(scalar @unp_u, scalar @unp_o); for my $i (0 .. $#unp_u) { $unp_u = $unp_u[$i]; $unp_o = $unp_o[$i]; $fail = 0; for( @keys ) { $unp_u->{$_} == $unp_o->{$_} or $fail++; $unp_u->{foo}[0]{$_} == $unp_o->{foo}[0]{$_} or $fail++; $unp_u->{foo}[1]{$_} == $unp_o->{foo}[1]{$_} or $fail++; } ok( $fail, 0 ); skip( $reason, $keys.",foo", join(',', keys %$unp_o) ); skip( $reason, $keys, join(',', keys %{$unp_o->{foo}[0]}) ); skip( $reason, $keys, join(',', keys %{$unp_o->{foo}[1]}) ); } Convert-Binary-C-0.85/tests/503_bfgeneric.t0000644000175000001440000616544214677003452017077 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 9031; use Convert::Binary::C @ARGV; use strict; $^W = 1; my $BIN = $] < 5.006 ? '%x' : '%08b'; my @compiler = ( { 'name' => 'cygwin/gcc32_plain', 'config' => { 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 12, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'decosf_alpha/cc_plain', 'config' => { 'LongSize' => 8, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 8, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 16, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'freebsd_alpha/gcc_plain', 'config' => { 'LongSize' => 8, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 8, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'hpux11_ia64/cc_plain', 'config' => { 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'BigEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 16, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'linux/armgcc34_plain', 'config' => { 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 4, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'CompoundAlignment' => 4 } }, { 'name' => 'linux/gcc41_plain', 'config' => { 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 4, 'LongLongSize' => 8, 'LongDoubleSize' => 12, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'linux/hppagcc33_plain', 'config' => { 'LongSize' => 8, 'IntSize' => 4, 'ByteOrder' => 'BigEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 8, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 16, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'linux/vaxgcc33_plain', 'config' => { 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 4, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'linux_parisc64/gcc_plain', 'config' => { 'ByteOrder' => 'BigEndian', 'LongSize' => '4', 'IntSize' => '4', 'ShortSize' => '2', 'DoubleSize' => '8', 'CharSize' => '1', 'PointerSize' => '4', 'EnumSize' => '4', 'FloatSize' => '4', 'LongLongSize' => '8', 'Alignment' => '8', 'LongDoubleSize' => '8', 'HasCPPComments' => 1, 'CompoundAlignment' => '1' } } ); my @c = eval { map { Convert::Binary::C->new(Bitfields => {Engine => 'Generic'}, EnumType => 'String', %{$_->{config}}) } @compiler }; is($@, '', "failed to create Convert::Binary::C objects"); sub debug { $ENV{CBC_TEST_DEBUG} and diag(@_); } sub showbits { join ' ', map { sprintf $BIN, $_ } unpack "C*", shift; } sub get_data { my $want = shift || 'list'; my $term = shift || '[-=]'; local $_; my @lines; while () { if (/^($term)$/) { $term = $1; last; } push @lines, $_ } if ($want eq 'list') { chomp @lines; return $term, @lines; } return $term, join('', @lines); } sub reccmp { my($ref, $val) = @_; unless (defined $ref and defined $val) { return defined($ref) == defined($val); } ref $ref or return $ref eq $val; if (ref $ref eq 'ARRAY') { @$ref == @$val or return 0; for (0..$#$ref) { reccmp($ref->[$_], $val->[$_]) or return 0; } } elsif (ref $ref eq 'HASH') { @{[keys %$ref]} == @{[keys %$val]} or return 0; for (keys %$ref) { reccmp($ref->{$_}, $val->{$_}) or return 0; } } else { return 0 } return 1; } while (1) { my(undef, $code) = get_data('block'); last if $code !~ /\S/; debug("Code:\n$code"); eval { $_->clean->parse($code) for @c }; is($@, '', "parse code") or diag($code); is(scalar $c[0]->compound_names, 1, join(', ', $c[0]->compound_names)); my($type) = $c[0]->compound_names; while (1) { my($term, $init, @packed) = get_data; debug("Init: $init"); my $data = eval $init; my $succ = 0; for (@packed) { $_ = pack "H*", $_ } for my $i (0 .. $#packed) { debug("Compiler: [$i] $compiler[$i]{name}"); $c[$i]->sizeof($type) == length($packed[$i]) and $succ++; my $p = $c[$i]->pack($type, $data); if ($p eq $packed[$i]) { $succ++; } else { diag("[$i] $compiler[$i]{name}\n", $code, "data = $init\n", "expected: ", showbits($packed[$i]), "\n", " got: ", showbits($p), "\n"); } my $u = $c[$i]->unpack($type, $packed[$i]); if (reccmp($data, $u)) { $succ++; } else { diag("[$i] $compiler[$i]{name}\n", $code, "data = $init\n"); eval { require Data::Dumper; diag(Data::Dumper->Dump([$data, $u], [qw(*expected *got)])); }; } } is($succ, 3*@packed, "$type ($init)"); last if $term eq '='; } } __DATA__ struct basic { unsigned int a:9; }; - {a=>509} fd010000 fd010000 fd010000 fe800000 fd010000 fd010000 fe800000 fd010000 fe800000 - {a=>352} 60010000 60010000 60010000 b0000000 60010000 60010000 b0000000 60010000 b0000000 - {a=>349} 5d010000 5d010000 5d010000 ae800000 5d010000 5d010000 ae800000 5d010000 ae800000 - {a=>398} 8e010000 8e010000 8e010000 c7000000 8e010000 8e010000 c7000000 8e010000 c7000000 - {a=>453} c5010000 c5010000 c5010000 e2800000 c5010000 c5010000 e2800000 c5010000 e2800000 = struct basic { unsigned int a:9; unsigned int b:2; }; - {a=>228,b=>3} e4060000 e4060000 e4060000 72600000 e4060000 e4060000 72600000 e4060000 72600000 - {a=>163,b=>0} a3000000 a3000000 a3000000 51800000 a3000000 a3000000 51800000 a3000000 51800000 - {a=>333,b=>3} 4d070000 4d070000 4d070000 a6e00000 4d070000 4d070000 a6e00000 4d070000 a6e00000 - {a=>495,b=>3} ef070000 ef070000 ef070000 f7e00000 ef070000 ef070000 f7e00000 ef070000 f7e00000 - {a=>193,b=>3} c1060000 c1060000 c1060000 60e00000 c1060000 c1060000 60e00000 c1060000 60e00000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; }; - {a=>115,b=>1} 73020000 73020000 73020000 39a00000 73020000 73020000 39a00000 73020000 39a00000 - {a=>283,b=>0} 1b010000 1b010000 1b010000 8d800000 1b010000 1b010000 8d800000 1b010000 8d800000 - {a=>12,b=>1} 0c020000 0c020000 0c020000 06200000 0c020000 0c020000 06200000 0c020000 06200000 - {a=>417,b=>3} a1070000 a1070000 a1070000 d0e00000 a1070000 a1070000 d0e00000 a1070000 d0e00000 - {a=>129,b=>2} 81040000 81040000 81040000 40c00000 81040000 81040000 40c00000 81040000 40c00000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; unsigned int c:2; }; - {c=>1,a=>473,b=>1} d9430000 d9430000 d9430000 eca10000 d9430000 d9430000 eca10000 d9430000 eca10000 - {c=>2,a=>149,b=>2} 95840000 95840000 95840000 4ac20000 95840000 95840000 4ac20000 95840000 4ac20000 - {c=>3,a=>227,b=>2} e3c40000 e3c40000 e3c40000 71c30000 e3c40000 e3c40000 71c30000 e3c40000 71c30000 - {c=>0,a=>114,b=>0} 72000000 72000000 72000000 39000000 72000000 72000000 39000000 72000000 39000000 - {c=>2,a=>83,b=>3} 53860000 53860000 53860000 29e20000 53860000 53860000 29e20000 53860000 29e20000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; unsigned int c:2; unsigned int d; }; - {c=>0,a=>134,b=>3,d=>231} 86060000e7000000 86060000e7000000 86060000e7000000 43600000000000e7 86060000e7000000 86060000e7000000 43600000000000e7 86060000e7000000 43600000000000e7 - {c=>0,a=>60,b=>0,d=>10} 3c0000000a000000 3c0000000a000000 3c0000000a000000 1e0000000000000a 3c0000000a000000 3c0000000a000000 1e0000000000000a 3c0000000a000000 1e0000000000000a - {c=>2,a=>170,b=>2,d=>252} aa840000fc000000 aa840000fc000000 aa840000fc000000 55420000000000fc aa840000fc000000 aa840000fc000000 55420000000000fc aa840000fc000000 55420000000000fc - {c=>3,a=>53,b=>1,d=>248} 35c20000f8000000 35c20000f8000000 35c20000f8000000 1aa30000000000f8 35c20000f8000000 35c20000f8000000 1aa30000000000f8 35c20000f8000000 1aa30000000000f8 - {c=>3,a=>74,b=>3,d=>85} 4ac6000055000000 4ac6000055000000 4ac6000055000000 2563000000000055 4ac6000055000000 4ac6000055000000 2563000000000055 4ac6000055000000 2563000000000055 = struct basic { char a; unsigned int b:9; }; - {a=>95,b=>334} 5f4e0100 5f4e0100 5f4e0100 5fa70000 5f4e0100 5f4e0100 5fa70000 5f4e0100 5fa70000 - {a=>43,b=>139} 2b8b0000 2b8b0000 2b8b0000 2b458000 2b8b0000 2b8b0000 2b458000 2b8b0000 2b458000 - {a=>103,b=>500} 67f40100 67f40100 67f40100 67fa0000 67f40100 67f40100 67fa0000 67f40100 67fa0000 - {a=>-82,b=>491} aeeb0100 aeeb0100 aeeb0100 aef58000 aeeb0100 aeeb0100 aef58000 aeeb0100 aef58000 - {a=>-81,b=>456} afc80100 afc80100 afc80100 afe40000 afc80100 afc80100 afe40000 afc80100 afe40000 = struct basic { char a; unsigned int b:9; unsigned int c:2; }; - {c=>1,a=>62,b=>455} 3ec70300 3ec70300 3ec70300 3ee3a000 3ec70300 3ec70300 3ee3a000 3ec70300 3ee3a000 - {c=>0,a=>-46,b=>32} d2200000 d2200000 d2200000 d2100000 d2200000 d2200000 d2100000 d2200000 d2100000 - {c=>0,a=>55,b=>501} 37f50100 37f50100 37f50100 37fa8000 37f50100 37f50100 37fa8000 37f50100 37fa8000 - {c=>3,a=>72,b=>97} 48610600 48610600 48610600 4830e000 48610600 48610600 4830e000 48610600 4830e000 - {c=>3,a=>91,b=>180} 5bb40600 5bb40600 5bb40600 5b5a6000 5bb40600 5bb40600 5b5a6000 5bb40600 5b5a6000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-64,b=>1} c0010200 c0010200 c0010200 c000a000 c0010200 c0010200 c000a000 c0010200 c000a000 - {c=>3,a=>43,b=>409} 2b990700 2b990700 2b990700 2bcce000 2b990700 2b990700 2bcce000 2b990700 2bcce000 - {c=>1,a=>-30,b=>413} e29d0300 e29d0300 e29d0300 e2cea000 e29d0300 e29d0300 e2cea000 e29d0300 e2cea000 - {c=>3,a=>107,b=>399} 6b8f0700 6b8f0700 6b8f0700 6bc7e000 6b8f0700 6b8f0700 6bc7e000 6b8f0700 6bc7e000 - {c=>2,a=>-59,b=>474} c5da0500 c5da0500 c5da0500 c5ed4000 c5da0500 c5da0500 c5ed4000 c5da0500 c5ed4000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>0,a=>-60,b=>352,d=>2} c4608100 c4608100 c4608100 c4b00200 c4608100 c4608100 c4b00200 c4608100 c4b00200 - {c=>1,a=>89,b=>103,d=>2} 59678200 59678200 59678200 5933a200 59678200 59678200 5933a200 59678200 5933a200 - {c=>0,a=>31,b=>136,d=>2} 1f888000 1f888000 1f888000 1f440200 1f888000 1f888000 1f440200 1f888000 1f440200 - {c=>0,a=>-103,b=>343,d=>0} 99570100 99570100 99570100 99ab8000 99570100 99570100 99ab8000 99570100 99ab8000 - {c=>2,a=>-102,b=>358,d=>0} 9a660500 9a660500 9a660500 9ab34000 9a660500 9a660500 9ab34000 9a660500 9ab34000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>205,c=>0,a=>57,b=>85,d=>3} 3955c000cd000000 3955c000cd000000 3955c000cd000000 392a8300000000cd 3955c000cd000000 3955c000cd000000 392a8300000000cd 3955c000cd000000 392a8300000000cd - {e=>218,c=>2,a=>-89,b=>129,d=>1} a7814400da000000 a7814400da000000 a7814400da000000 a740c100000000da a7814400da000000 a7814400da000000 a740c100000000da a7814400da000000 a740c100000000da - {e=>90,c=>3,a=>105,b=>77,d=>1} 694d46005a000000 694d46005a000000 694d46005a000000 6926e1000000005a 694d46005a000000 694d46005a000000 6926e1000000005a 694d46005a000000 6926e1000000005a - {e=>82,c=>3,a=>89,b=>507,d=>0} 59fb070052000000 59fb070052000000 59fb070052000000 59fde00000000052 59fb070052000000 59fb070052000000 59fde00000000052 59fb070052000000 59fde00000000052 - {e=>10,c=>1,a=>-7,b=>126,d=>0} f97e02000a000000 f97e02000a000000 f97e02000a000000 f93f20000000000a f97e02000a000000 f97e02000a000000 f93f20000000000a f97e02000a000000 f93f20000000000a = struct basic { short a; unsigned int b:9; }; - {a=>44,b=>211} 2c00d300 2c00d300 2c00d300 002c6980 2c00d300 2c00d300 002c6980 2c00d300 002c6980 - {a=>106,b=>55} 6a003700 6a003700 6a003700 006a1b80 6a003700 6a003700 006a1b80 6a003700 006a1b80 - {a=>-99,b=>100} 9dff6400 9dff6400 9dff6400 ff9d3200 9dff6400 9dff6400 ff9d3200 9dff6400 ff9d3200 - {a=>-25,b=>17} e7ff1100 e7ff1100 e7ff1100 ffe70880 e7ff1100 e7ff1100 ffe70880 e7ff1100 ffe70880 - {a=>-60,b=>31} c4ff1f00 c4ff1f00 c4ff1f00 ffc40f80 c4ff1f00 c4ff1f00 ffc40f80 c4ff1f00 ffc40f80 = struct basic { short a; unsigned int b:9; unsigned int c:2; }; - {c=>0,a=>-3,b=>65} fdff4100 fdff4100 fdff4100 fffd2080 fdff4100 fdff4100 fffd2080 fdff4100 fffd2080 - {c=>3,a=>127,b=>141} 7f008d06 7f008d06 7f008d06 007f46e0 7f008d06 7f008d06 007f46e0 7f008d06 007f46e0 - {c=>1,a=>-53,b=>123} cbff7b02 cbff7b02 cbff7b02 ffcb3da0 cbff7b02 cbff7b02 ffcb3da0 cbff7b02 ffcb3da0 - {c=>3,a=>-110,b=>69} 92ff4506 92ff4506 92ff4506 ff9222e0 92ff4506 92ff4506 ff9222e0 92ff4506 ff9222e0 - {c=>1,a=>-63,b=>183} c1ffb702 c1ffb702 c1ffb702 ffc15ba0 c1ffb702 c1ffb702 ffc15ba0 c1ffb702 ffc15ba0 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-32,b=>280} e0ff1803 e0ff1803 e0ff1803 ffe08c20 e0ff1803 e0ff1803 ffe08c20 e0ff1803 ffe08c20 - {c=>0,a=>-76,b=>473} b4ffd901 b4ffd901 b4ffd901 ffb4ec80 b4ffd901 b4ffd901 ffb4ec80 b4ffd901 ffb4ec80 - {c=>2,a=>-60,b=>271} c4ff0f05 c4ff0f05 c4ff0f05 ffc487c0 c4ff0f05 c4ff0f05 ffc487c0 c4ff0f05 ffc487c0 - {c=>1,a=>72,b=>50} 48003202 48003202 48003202 00481920 48003202 48003202 00481920 48003202 00481920 - {c=>1,a=>-97,b=>440} 9fffb803 9fffb803 9fffb803 ff9fdc20 9fffb803 9fffb803 ff9fdc20 9fffb803 ff9fdc20 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>3,a=>-78,b=>286,d=>1} b2ff1e47 b2ff1e47 b2ff1e47 ffb28f61 b2ff1e47 b2ff1e47 ffb28f61 b2ff1e47 ffb28f61 - {c=>2,a=>-105,b=>330,d=>3} 97ff4ac5 97ff4ac5 97ff4ac5 ff97a543 97ff4ac5 97ff4ac5 ff97a543 97ff4ac5 ff97a543 - {c=>0,a=>73,b=>33,d=>1} 49002140 49002140 49002140 00491081 49002140 49002140 00491081 49002140 00491081 - {c=>0,a=>-67,b=>463,d=>2} bdffcf81 bdffcf81 bdffcf81 ffbde782 bdffcf81 bdffcf81 ffbde782 bdffcf81 ffbde782 - {c=>0,a=>87,b=>452,d=>2} 5700c481 5700c481 5700c481 0057e202 5700c481 5700c481 0057e202 5700c481 0057e202 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>78,c=>2,a=>-39,b=>178,d=>3} d9ffb2c44e000000 d9ffb2c44e000000 d9ffb2c44e000000 ffd959430000004e d9ffb2c44e000000 d9ffb2c44e000000 ffd959430000004e d9ffb2c44e000000 ffd959430000004e - {e=>4,c=>2,a=>51,b=>65,d=>2} 3300418404000000 3300418404000000 3300418404000000 003320c200000004 3300418404000000 3300418404000000 003320c200000004 3300418404000000 003320c200000004 - {e=>225,c=>1,a=>-16,b=>99,d=>1} f0ff6342e1000000 f0ff6342e1000000 f0ff6342e1000000 fff031a1000000e1 f0ff6342e1000000 f0ff6342e1000000 fff031a1000000e1 f0ff6342e1000000 fff031a1000000e1 - {e=>23,c=>0,a=>-1,b=>254,d=>0} fffffe0017000000 fffffe0017000000 fffffe0017000000 ffff7f0000000017 fffffe0017000000 fffffe0017000000 ffff7f0000000017 fffffe0017000000 ffff7f0000000017 - {e=>75,c=>0,a=>7,b=>128,d=>1} 070080404b000000 070080404b000000 070080404b000000 000740010000004b 070080404b000000 070080404b000000 000740010000004b 070080404b000000 000740010000004b = struct basic { int a; unsigned int b:9; }; - {a=>26,b=>294} 1a00000026010000 1a00000026010000 1a00000026010000 0000001a93000000 1a00000026010000 1a00000026010000 0000001a93000000 1a00000026010000 0000001a93000000 - {a=>120,b=>54} 7800000036000000 7800000036000000 7800000036000000 000000781b000000 7800000036000000 7800000036000000 000000781b000000 7800000036000000 000000781b000000 - {a=>-16,b=>377} f0ffffff79010000 f0ffffff79010000 f0ffffff79010000 fffffff0bc800000 f0ffffff79010000 f0ffffff79010000 fffffff0bc800000 f0ffffff79010000 fffffff0bc800000 - {a=>38,b=>179} 26000000b3000000 26000000b3000000 26000000b3000000 0000002659800000 26000000b3000000 26000000b3000000 0000002659800000 26000000b3000000 0000002659800000 - {a=>116,b=>289} 7400000021010000 7400000021010000 7400000021010000 0000007490800000 7400000021010000 7400000021010000 0000007490800000 7400000021010000 0000007490800000 = struct basic { int a; unsigned int b:9; unsigned int c:2; }; - {c=>1,a=>49,b=>430} 31000000ae030000 31000000ae030000 31000000ae030000 00000031d7200000 31000000ae030000 31000000ae030000 00000031d7200000 31000000ae030000 00000031d7200000 - {c=>3,a=>118,b=>459} 76000000cb070000 76000000cb070000 76000000cb070000 00000076e5e00000 76000000cb070000 76000000cb070000 00000076e5e00000 76000000cb070000 00000076e5e00000 - {c=>0,a=>1,b=>148} 0100000094000000 0100000094000000 0100000094000000 000000014a000000 0100000094000000 0100000094000000 000000014a000000 0100000094000000 000000014a000000 - {c=>0,a=>-80,b=>164} b0ffffffa4000000 b0ffffffa4000000 b0ffffffa4000000 ffffffb052000000 b0ffffffa4000000 b0ffffffa4000000 ffffffb052000000 b0ffffffa4000000 ffffffb052000000 - {c=>3,a=>-5,b=>38} fbffffff26060000 fbffffff26060000 fbffffff26060000 fffffffb13600000 fbffffff26060000 fbffffff26060000 fffffffb13600000 fbffffff26060000 fffffffb13600000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>0,a=>73,b=>253} 49000000fd000000 49000000fd000000 49000000fd000000 000000497e800000 49000000fd000000 49000000fd000000 000000497e800000 49000000fd000000 000000497e800000 - {c=>3,a=>91,b=>302} 5b0000002e070000 5b0000002e070000 5b0000002e070000 0000005b97600000 5b0000002e070000 5b0000002e070000 0000005b97600000 5b0000002e070000 0000005b97600000 - {c=>3,a=>30,b=>58} 1e0000003a060000 1e0000003a060000 1e0000003a060000 0000001e1d600000 1e0000003a060000 1e0000003a060000 0000001e1d600000 1e0000003a060000 0000001e1d600000 - {c=>0,a=>-109,b=>436} 93ffffffb4010000 93ffffffb4010000 93ffffffb4010000 ffffff93da000000 93ffffffb4010000 93ffffffb4010000 ffffff93da000000 93ffffffb4010000 ffffff93da000000 - {c=>3,a=>-89,b=>300} a7ffffff2c070000 a7ffffff2c070000 a7ffffff2c070000 ffffffa796600000 a7ffffff2c070000 a7ffffff2c070000 ffffffa796600000 a7ffffff2c070000 ffffffa796600000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>2,a=>-81,b=>332,d=>0} afffffff4c050000 afffffff4c050000 afffffff4c050000 ffffffafa6400000 afffffff4c050000 afffffff4c050000 ffffffafa6400000 afffffff4c050000 ffffffafa6400000 - {c=>0,a=>-118,b=>311,d=>3} 8affffff37c10000 8affffff37c10000 8affffff37c10000 ffffff8a9b830000 8affffff37c10000 8affffff37c10000 ffffff8a9b830000 8affffff37c10000 ffffff8a9b830000 - {c=>2,a=>93,b=>362,d=>1} 5d0000006a450000 5d0000006a450000 5d0000006a450000 0000005db5410000 5d0000006a450000 5d0000006a450000 0000005db5410000 5d0000006a450000 0000005db5410000 - {c=>0,a=>122,b=>370,d=>0} 7a00000072010000 7a00000072010000 7a00000072010000 0000007ab9000000 7a00000072010000 7a00000072010000 0000007ab9000000 7a00000072010000 0000007ab9000000 - {c=>2,a=>87,b=>107,d=>2} 570000006b840000 570000006b840000 570000006b840000 0000005735c20000 570000006b840000 570000006b840000 0000005735c20000 570000006b840000 0000005735c20000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>246,c=>1,a=>109,b=>275,d=>1} 6d00000013430000f6000000 6d00000013430000f6000000 6d00000013430000f6000000 0000006d89a10000000000f6 6d00000013430000f6000000 6d00000013430000f6000000 0000006d89a10000000000f6 6d00000013430000f6000000 0000006d89a10000000000f6 - {e=>120,c=>3,a=>80,b=>215,d=>2} 50000000d786000078000000 50000000d786000078000000 50000000d786000078000000 000000506be2000000000078 50000000d786000078000000 50000000d786000078000000 000000506be2000000000078 50000000d786000078000000 000000506be2000000000078 - {e=>236,c=>0,a=>88,b=>484,d=>2} 58000000e4810000ec000000 58000000e4810000ec000000 58000000e4810000ec000000 00000058f2020000000000ec 58000000e4810000ec000000 58000000e4810000ec000000 00000058f2020000000000ec 58000000e4810000ec000000 00000058f2020000000000ec - {e=>9,c=>1,a=>-20,b=>117,d=>2} ecffffff7582000009000000 ecffffff7582000009000000 ecffffff7582000009000000 ffffffec3aa2000000000009 ecffffff7582000009000000 ecffffff7582000009000000 ffffffec3aa2000000000009 ecffffff7582000009000000 ffffffec3aa2000000000009 - {e=>135,c=>3,a=>126,b=>333,d=>1} 7e0000004d47000087000000 7e0000004d47000087000000 7e0000004d47000087000000 0000007ea6e1000000000087 7e0000004d47000087000000 7e0000004d47000087000000 0000007ea6e1000000000087 7e0000004d47000087000000 0000007ea6e1000000000087 = struct basic { long a; unsigned int b:9; }; - {a=>-90,b=>99} a6ffffff63000000 a6ffffffffffffff6300000000000000 a6ffffffffffffff6300000000000000 ffffffa631800000 a6ffffff63000000 a6ffffff63000000 ffffffffffffffa63180000000000000 a6ffffff63000000 ffffffa631800000 - {a=>18,b=>50} 1200000032000000 12000000000000003200000000000000 12000000000000003200000000000000 0000001219000000 1200000032000000 1200000032000000 00000000000000121900000000000000 1200000032000000 0000001219000000 - {a=>-120,b=>264} 88ffffff08010000 88ffffffffffffff0801000000000000 88ffffffffffffff0801000000000000 ffffff8884000000 88ffffff08010000 88ffffff08010000 ffffffffffffff888400000000000000 88ffffff08010000 ffffff8884000000 - {a=>23,b=>32} 1700000020000000 17000000000000002000000000000000 17000000000000002000000000000000 0000001710000000 1700000020000000 1700000020000000 00000000000000171000000000000000 1700000020000000 0000001710000000 - {a=>42,b=>321} 2a00000041010000 2a000000000000004101000000000000 2a000000000000004101000000000000 0000002aa0800000 2a00000041010000 2a00000041010000 000000000000002aa080000000000000 2a00000041010000 0000002aa0800000 = struct basic { long a; unsigned int b:9; unsigned int c:2; }; - {c=>3,a=>37,b=>303} 250000002f070000 25000000000000002f07000000000000 25000000000000002f07000000000000 0000002597e00000 250000002f070000 250000002f070000 000000000000002597e0000000000000 250000002f070000 0000002597e00000 - {c=>3,a=>-87,b=>458} a9ffffffca070000 a9ffffffffffffffca07000000000000 a9ffffffffffffffca07000000000000 ffffffa9e5600000 a9ffffffca070000 a9ffffffca070000 ffffffffffffffa9e560000000000000 a9ffffffca070000 ffffffa9e5600000 - {c=>3,a=>-86,b=>453} aaffffffc5070000 aaffffffffffffffc507000000000000 aaffffffffffffffc507000000000000 ffffffaae2e00000 aaffffffc5070000 aaffffffc5070000 ffffffffffffffaae2e0000000000000 aaffffffc5070000 ffffffaae2e00000 - {c=>0,a=>96,b=>71} 6000000047000000 60000000000000004700000000000000 60000000000000004700000000000000 0000006023800000 6000000047000000 6000000047000000 00000000000000602380000000000000 6000000047000000 0000006023800000 - {c=>0,a=>-46,b=>254} d2fffffffe000000 d2fffffffffffffffe00000000000000 d2fffffffffffffffe00000000000000 ffffffd27f000000 d2fffffffe000000 d2fffffffe000000 ffffffffffffffd27f00000000000000 d2fffffffe000000 ffffffd27f000000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-123,b=>56} 85ffffff38020000 85ffffffffffffff3802000000000000 85ffffffffffffff3802000000000000 ffffff851c200000 85ffffff38020000 85ffffff38020000 ffffffffffffff851c20000000000000 85ffffff38020000 ffffff851c200000 - {c=>1,a=>-36,b=>276} dcffffff14030000 dcffffffffffffff1403000000000000 dcffffffffffffff1403000000000000 ffffffdc8a200000 dcffffff14030000 dcffffff14030000 ffffffffffffffdc8a20000000000000 dcffffff14030000 ffffffdc8a200000 - {c=>2,a=>26,b=>453} 1a000000c5050000 1a00000000000000c505000000000000 1a00000000000000c505000000000000 0000001ae2c00000 1a000000c5050000 1a000000c5050000 000000000000001ae2c0000000000000 1a000000c5050000 0000001ae2c00000 - {c=>0,a=>95,b=>479} 5f000000df010000 5f00000000000000df01000000000000 5f00000000000000df01000000000000 0000005fef800000 5f000000df010000 5f000000df010000 000000000000005fef80000000000000 5f000000df010000 0000005fef800000 - {c=>1,a=>28,b=>16} 1c00000010020000 1c000000000000001002000000000000 1c000000000000001002000000000000 0000001c08200000 1c00000010020000 1c00000010020000 000000000000001c0820000000000000 1c00000010020000 0000001c08200000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>3,a=>-75,b=>292,d=>0} b5ffffff24070000 b5ffffffffffffff2407000000000000 b5ffffffffffffff2407000000000000 ffffffb592600000 b5ffffff24070000 b5ffffff24070000 ffffffffffffffb59260000000000000 b5ffffff24070000 ffffffb592600000 - {c=>0,a=>24,b=>330,d=>0} 180000004a010000 18000000000000004a01000000000000 18000000000000004a01000000000000 00000018a5000000 180000004a010000 180000004a010000 0000000000000018a500000000000000 180000004a010000 00000018a5000000 - {c=>3,a=>2,b=>332,d=>1} 020000004c470000 02000000000000004c47000000000000 02000000000000004c47000000000000 00000002a6610000 020000004c470000 020000004c470000 0000000000000002a661000000000000 020000004c470000 00000002a6610000 - {c=>2,a=>74,b=>257,d=>1} 4a00000001450000 4a000000000000000145000000000000 4a000000000000000145000000000000 0000004a80c10000 4a00000001450000 4a00000001450000 000000000000004a80c1000000000000 4a00000001450000 0000004a80c10000 - {c=>2,a=>106,b=>208,d=>3} 6a000000d0c40000 6a00000000000000d0c4000000000000 6a00000000000000d0c4000000000000 0000006a68430000 6a000000d0c40000 6a000000d0c40000 000000000000006a6843000000000000 6a000000d0c40000 0000006a68430000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>118,c=>0,a=>26,b=>490,d=>2} 1a000000ea81000076000000 1a00000000000000ea81000076000000 1a00000000000000ea81000076000000 0000001af502000000000076 1a000000ea81000076000000 1a000000ea81000076000000 000000000000001af502000000000076 1a000000ea81000076000000 0000001af502000000000076 - {e=>200,c=>0,a=>6,b=>418,d=>1} 06000000a2410000c8000000 0600000000000000a2410000c8000000 0600000000000000a2410000c8000000 00000006d1010000000000c8 06000000a2410000c8000000 06000000a2410000c8000000 0000000000000006d1010000000000c8 06000000a2410000c8000000 00000006d1010000000000c8 - {e=>40,c=>1,a=>41,b=>444,d=>2} 29000000bc83000028000000 2900000000000000bc83000028000000 2900000000000000bc83000028000000 00000029de22000000000028 29000000bc83000028000000 29000000bc83000028000000 0000000000000029de22000000000028 29000000bc83000028000000 00000029de22000000000028 - {e=>154,c=>0,a=>0,b=>88,d=>3} 0000000058c000009a000000 000000000000000058c000009a000000 000000000000000058c000009a000000 000000002c0300000000009a 0000000058c000009a000000 0000000058c000009a000000 00000000000000002c0300000000009a 0000000058c000009a000000 000000002c0300000000009a - {e=>163,c=>3,a=>-5,b=>393,d=>0} fbffffff89070000a3000000 fbffffffffffffff89070000a3000000 fbffffffffffffff89070000a3000000 fffffffbc4e00000000000a3 fbffffff89070000a3000000 fbffffff89070000a3000000 fffffffffffffffbc4e00000000000a3 fbffffff89070000a3000000 fffffffbc4e00000000000a3 = struct uchar { unsigned char a:1; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>1} 01 01 01 80 01000000 01 80 01 80 = struct uchar { unsigned char a:1; unsigned char b:1; }; - {a=>1,b=>0} 01 01 01 80 01000000 01 80 01 80 - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>0,b=>1} 02 02 02 40 02000000 02 40 02 40 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>1,b=>1} 07 07 07 e0 07000000 07 e0 07 e0 - {c=>1,a=>0,b=>0} 04 04 04 20 04000000 04 20 04 20 - {c=>0,a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {c=>1,a=>1,b=>1} 07 07 07 e0 07000000 07 e0 07 e0 - {c=>1,a=>1,b=>0} 05 05 05 a0 05000000 05 a0 05 a0 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>0,b=>1,d=>1} 0e 0e 0e 70 0e000000 0e 70 0e 70 - {c=>0,a=>1,b=>0,d=>0} 01 01 01 80 01000000 01 80 01 80 - {c=>0,a=>0,b=>1,d=>1} 0a 0a 0a 50 0a000000 0a 50 0a 50 - {c=>1,a=>0,b=>0,d=>1} 0c 0c 0c 30 0c000000 0c 30 0c 30 - {c=>0,a=>1,b=>0,d=>0} 01 01 01 80 01000000 01 80 01 80 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned int e; }; - {e=>111,c=>1,a=>1,b=>1,d=>1} 0f0000006f000000 0f0000006f000000 0f0000006f000000 f00000000000006f 0f0000006f000000 0f0000006f000000 f00000000000006f 0f0000006f000000 f00000000000006f - {e=>24,c=>0,a=>0,b=>1,d=>0} 0200000018000000 0200000018000000 0200000018000000 4000000000000018 0200000018000000 0200000018000000 4000000000000018 0200000018000000 4000000000000018 - {e=>185,c=>0,a=>0,b=>1,d=>0} 02000000b9000000 02000000b9000000 02000000b9000000 40000000000000b9 02000000b9000000 02000000b9000000 40000000000000b9 02000000b9000000 40000000000000b9 - {e=>229,c=>1,a=>0,b=>1,d=>1} 0e000000e5000000 0e000000e5000000 0e000000e5000000 70000000000000e5 0e000000e5000000 0e000000e5000000 70000000000000e5 0e000000e5000000 70000000000000e5 - {e=>255,c=>0,a=>1,b=>0,d=>1} 09000000ff000000 09000000ff000000 09000000ff000000 90000000000000ff 09000000ff000000 09000000ff000000 90000000000000ff 09000000ff000000 90000000000000ff = struct uchar { char a; unsigned char b:1; }; - {a=>-120,b=>1} 8801 8801 8801 8880 88010000 8801 8880 8801 8880 - {a=>70,b=>0} 4600 4600 4600 4600 46000000 4600 4600 4600 4600 - {a=>81,b=>0} 5100 5100 5100 5100 51000000 5100 5100 5100 5100 - {a=>56,b=>1} 3801 3801 3801 3880 38010000 3801 3880 3801 3880 - {a=>126,b=>0} 7e00 7e00 7e00 7e00 7e000000 7e00 7e00 7e00 7e00 = struct uchar { char a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>16,b=>1} 1003 1003 1003 10c0 10030000 1003 10c0 1003 10c0 - {c=>0,a=>90,b=>1} 5a01 5a01 5a01 5a80 5a010000 5a01 5a80 5a01 5a80 - {c=>0,a=>-85,b=>0} ab00 ab00 ab00 ab00 ab000000 ab00 ab00 ab00 ab00 - {c=>0,a=>74,b=>1} 4a01 4a01 4a01 4a80 4a010000 4a01 4a80 4a01 4a80 - {c=>0,a=>-127,b=>0} 8100 8100 8100 8100 81000000 8100 8100 8100 8100 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>-84,b=>0,d=>1} ac06 ac06 ac06 ac60 ac060000 ac06 ac60 ac06 ac60 - {c=>1,a=>-93,b=>1,d=>0} a303 a303 a303 a3c0 a3030000 a303 a3c0 a303 a3c0 - {c=>1,a=>-94,b=>1,d=>1} a207 a207 a207 a2e0 a2070000 a207 a2e0 a207 a2e0 - {c=>1,a=>116,b=>0,d=>0} 7402 7402 7402 7440 74020000 7402 7440 7402 7440 - {c=>1,a=>92,b=>0,d=>1} 5c06 5c06 5c06 5c60 5c060000 5c06 5c60 5c06 5c60 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>1,c=>0,a=>-104,b=>1,d=>0} 9809 9809 9809 9890 98090000 9809 9890 9809 9890 - {e=>0,c=>1,a=>-94,b=>0,d=>0} a202 a202 a202 a240 a2020000 a202 a240 a202 a240 - {e=>0,c=>0,a=>113,b=>1,d=>0} 7101 7101 7101 7180 71010000 7101 7180 7101 7180 - {e=>1,c=>0,a=>25,b=>1,d=>1} 190d 190d 190d 19b0 190d0000 190d 19b0 190d 19b0 - {e=>0,c=>0,a=>-21,b=>1,d=>1} eb05 eb05 eb05 eba0 eb050000 eb05 eba0 eb05 eba0 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>1,c=>1,a=>58,b=>1,d=>0,f=>7} 3a0b000007000000 3a0b000007000000 3a0b000007000000 3ad0000000000007 3a0b000007000000 3a0b000007000000 3ad0000000000007 3a0b000007000000 3ad0000000000007 - {e=>0,c=>0,a=>9,b=>0,d=>1,f=>220} 09040000dc000000 09040000dc000000 09040000dc000000 09200000000000dc 09040000dc000000 09040000dc000000 09200000000000dc 09040000dc000000 09200000000000dc - {e=>0,c=>1,a=>123,b=>1,d=>0,f=>59} 7b0300003b000000 7b0300003b000000 7b0300003b000000 7bc000000000003b 7b0300003b000000 7b0300003b000000 7bc000000000003b 7b0300003b000000 7bc000000000003b - {e=>0,c=>1,a=>-113,b=>1,d=>1,f=>172} 8f070000ac000000 8f070000ac000000 8f070000ac000000 8fe00000000000ac 8f070000ac000000 8f070000ac000000 8fe00000000000ac 8f070000ac000000 8fe00000000000ac - {e=>0,c=>1,a=>75,b=>0,d=>1,f=>175} 4b060000af000000 4b060000af000000 4b060000af000000 4b600000000000af 4b060000af000000 4b060000af000000 4b600000000000af 4b060000af000000 4b600000000000af = struct uchar { short a; unsigned char b:1; }; - {a=>-46,b=>1} d2ff0100 d2ff0100 d2ff0100 ffd28000 d2ff0100 d2ff0100 ffd28000 d2ff0100 ffd28000 - {a=>32,b=>1} 20000100 20000100 20000100 00208000 20000100 20000100 00208000 20000100 00208000 - {a=>-26,b=>0} e6ff0000 e6ff0000 e6ff0000 ffe60000 e6ff0000 e6ff0000 ffe60000 e6ff0000 ffe60000 - {a=>122,b=>0} 7a000000 7a000000 7a000000 007a0000 7a000000 7a000000 007a0000 7a000000 007a0000 - {a=>-51,b=>0} cdff0000 cdff0000 cdff0000 ffcd0000 cdff0000 cdff0000 ffcd0000 cdff0000 ffcd0000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>14,b=>0} 0e000200 0e000200 0e000200 000e4000 0e000200 0e000200 000e4000 0e000200 000e4000 - {c=>1,a=>-41,b=>0} d7ff0200 d7ff0200 d7ff0200 ffd74000 d7ff0200 d7ff0200 ffd74000 d7ff0200 ffd74000 - {c=>1,a=>-93,b=>1} a3ff0300 a3ff0300 a3ff0300 ffa3c000 a3ff0300 a3ff0300 ffa3c000 a3ff0300 ffa3c000 - {c=>0,a=>-76,b=>1} b4ff0100 b4ff0100 b4ff0100 ffb48000 b4ff0100 b4ff0100 ffb48000 b4ff0100 ffb48000 - {c=>0,a=>-111,b=>0} 91ff0000 91ff0000 91ff0000 ff910000 91ff0000 91ff0000 ff910000 91ff0000 ff910000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>0,a=>7,b=>1,d=>0} 07000100 07000100 07000100 00078000 07000100 07000100 00078000 07000100 00078000 - {c=>0,a=>64,b=>0,d=>0} 40000000 40000000 40000000 00400000 40000000 40000000 00400000 40000000 00400000 - {c=>1,a=>7,b=>0,d=>0} 07000200 07000200 07000200 00074000 07000200 07000200 00074000 07000200 00074000 - {c=>1,a=>-72,b=>1,d=>1} b8ff0700 b8ff0700 b8ff0700 ffb8e000 b8ff0700 b8ff0700 ffb8e000 b8ff0700 ffb8e000 - {c=>1,a=>62,b=>0,d=>1} 3e000600 3e000600 3e000600 003e6000 3e000600 3e000600 003e6000 3e000600 003e6000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>1,a=>-108,b=>1,d=>0} 94ff0300 94ff0300 94ff0300 ff94c000 94ff0300 94ff0300 ff94c000 94ff0300 ff94c000 - {e=>1,c=>0,a=>-125,b=>1,d=>0} 83ff0900 83ff0900 83ff0900 ff839000 83ff0900 83ff0900 ff839000 83ff0900 ff839000 - {e=>0,c=>1,a=>52,b=>1,d=>0} 34000300 34000300 34000300 0034c000 34000300 34000300 0034c000 34000300 0034c000 - {e=>0,c=>0,a=>-93,b=>0,d=>0} a3ff0000 a3ff0000 a3ff0000 ffa30000 a3ff0000 a3ff0000 ffa30000 a3ff0000 ffa30000 - {e=>1,c=>0,a=>-128,b=>0,d=>1} 80ff0c00 80ff0c00 80ff0c00 ff803000 80ff0c00 80ff0c00 ff803000 80ff0c00 ff803000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>0,a=>72,b=>1,d=>1,f=>111} 480005006f000000 480005006f000000 480005006f000000 0048a0000000006f 480005006f000000 480005006f000000 0048a0000000006f 480005006f000000 0048a0000000006f - {e=>0,c=>1,a=>-44,b=>0,d=>0,f=>40} d4ff020028000000 d4ff020028000000 d4ff020028000000 ffd4400000000028 d4ff020028000000 d4ff020028000000 ffd4400000000028 d4ff020028000000 ffd4400000000028 - {e=>1,c=>1,a=>121,b=>1,d=>0,f=>41} 79000b0029000000 79000b0029000000 79000b0029000000 0079d00000000029 79000b0029000000 79000b0029000000 0079d00000000029 79000b0029000000 0079d00000000029 - {e=>0,c=>1,a=>-68,b=>1,d=>0,f=>136} bcff030088000000 bcff030088000000 bcff030088000000 ffbcc00000000088 bcff030088000000 bcff030088000000 ffbcc00000000088 bcff030088000000 ffbcc00000000088 - {e=>0,c=>0,a=>-73,b=>1,d=>0,f=>25} b7ff010019000000 b7ff010019000000 b7ff010019000000 ffb7800000000019 b7ff010019000000 b7ff010019000000 ffb7800000000019 b7ff010019000000 ffb7800000000019 = struct uchar { int a; unsigned char b:1; }; - {a=>-57,b=>0} c7ffffff00000000 c7ffffff00000000 c7ffffff00000000 ffffffc700000000 c7ffffff00000000 c7ffffff00000000 ffffffc700000000 c7ffffff00000000 ffffffc700000000 - {a=>-29,b=>0} e3ffffff00000000 e3ffffff00000000 e3ffffff00000000 ffffffe300000000 e3ffffff00000000 e3ffffff00000000 ffffffe300000000 e3ffffff00000000 ffffffe300000000 - {a=>-23,b=>0} e9ffffff00000000 e9ffffff00000000 e9ffffff00000000 ffffffe900000000 e9ffffff00000000 e9ffffff00000000 ffffffe900000000 e9ffffff00000000 ffffffe900000000 - {a=>-128,b=>1} 80ffffff01000000 80ffffff01000000 80ffffff01000000 ffffff8080000000 80ffffff01000000 80ffffff01000000 ffffff8080000000 80ffffff01000000 ffffff8080000000 - {a=>-58,b=>0} c6ffffff00000000 c6ffffff00000000 c6ffffff00000000 ffffffc600000000 c6ffffff00000000 c6ffffff00000000 ffffffc600000000 c6ffffff00000000 ffffffc600000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-78,b=>1} b2ffffff03000000 b2ffffff03000000 b2ffffff03000000 ffffffb2c0000000 b2ffffff03000000 b2ffffff03000000 ffffffb2c0000000 b2ffffff03000000 ffffffb2c0000000 - {c=>0,a=>-100,b=>1} 9cffffff01000000 9cffffff01000000 9cffffff01000000 ffffff9c80000000 9cffffff01000000 9cffffff01000000 ffffff9c80000000 9cffffff01000000 ffffff9c80000000 - {c=>0,a=>-27,b=>0} e5ffffff00000000 e5ffffff00000000 e5ffffff00000000 ffffffe500000000 e5ffffff00000000 e5ffffff00000000 ffffffe500000000 e5ffffff00000000 ffffffe500000000 - {c=>1,a=>-123,b=>1} 85ffffff03000000 85ffffff03000000 85ffffff03000000 ffffff85c0000000 85ffffff03000000 85ffffff03000000 ffffff85c0000000 85ffffff03000000 ffffff85c0000000 - {c=>0,a=>-84,b=>0} acffffff00000000 acffffff00000000 acffffff00000000 ffffffac00000000 acffffff00000000 acffffff00000000 ffffffac00000000 acffffff00000000 ffffffac00000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>82,b=>0,d=>0} 5200000002000000 5200000002000000 5200000002000000 0000005240000000 5200000002000000 5200000002000000 0000005240000000 5200000002000000 0000005240000000 - {c=>0,a=>20,b=>0,d=>1} 1400000004000000 1400000004000000 1400000004000000 0000001420000000 1400000004000000 1400000004000000 0000001420000000 1400000004000000 0000001420000000 - {c=>1,a=>95,b=>0,d=>0} 5f00000002000000 5f00000002000000 5f00000002000000 0000005f40000000 5f00000002000000 5f00000002000000 0000005f40000000 5f00000002000000 0000005f40000000 - {c=>0,a=>71,b=>0,d=>0} 4700000000000000 4700000000000000 4700000000000000 0000004700000000 4700000000000000 4700000000000000 0000004700000000 4700000000000000 0000004700000000 - {c=>1,a=>-38,b=>0,d=>0} daffffff02000000 daffffff02000000 daffffff02000000 ffffffda40000000 daffffff02000000 daffffff02000000 ffffffda40000000 daffffff02000000 ffffffda40000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>0,a=>-32,b=>1,d=>1} e0ffffff05000000 e0ffffff05000000 e0ffffff05000000 ffffffe0a0000000 e0ffffff05000000 e0ffffff05000000 ffffffe0a0000000 e0ffffff05000000 ffffffe0a0000000 - {e=>0,c=>1,a=>-34,b=>1,d=>1} deffffff07000000 deffffff07000000 deffffff07000000 ffffffdee0000000 deffffff07000000 deffffff07000000 ffffffdee0000000 deffffff07000000 ffffffdee0000000 - {e=>1,c=>1,a=>70,b=>1,d=>1} 460000000f000000 460000000f000000 460000000f000000 00000046f0000000 460000000f000000 460000000f000000 00000046f0000000 460000000f000000 00000046f0000000 - {e=>0,c=>1,a=>127,b=>1,d=>1} 7f00000007000000 7f00000007000000 7f00000007000000 0000007fe0000000 7f00000007000000 7f00000007000000 0000007fe0000000 7f00000007000000 0000007fe0000000 - {e=>1,c=>0,a=>54,b=>1,d=>1} 360000000d000000 360000000d000000 360000000d000000 00000036b0000000 360000000d000000 360000000d000000 00000036b0000000 360000000d000000 00000036b0000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>0,a=>-63,b=>1,d=>1,f=>112} c1ffffff0500000070000000 c1ffffff0500000070000000 c1ffffff0500000070000000 ffffffc1a000000000000070 c1ffffff0500000070000000 c1ffffff0500000070000000 ffffffc1a000000000000070 c1ffffff0500000070000000 ffffffc1a000000000000070 - {e=>0,c=>1,a=>-107,b=>0,d=>0,f=>190} 95ffffff02000000be000000 95ffffff02000000be000000 95ffffff02000000be000000 ffffff9540000000000000be 95ffffff02000000be000000 95ffffff02000000be000000 ffffff9540000000000000be 95ffffff02000000be000000 ffffff9540000000000000be - {e=>0,c=>0,a=>-47,b=>1,d=>1,f=>78} d1ffffff050000004e000000 d1ffffff050000004e000000 d1ffffff050000004e000000 ffffffd1a00000000000004e d1ffffff050000004e000000 d1ffffff050000004e000000 ffffffd1a00000000000004e d1ffffff050000004e000000 ffffffd1a00000000000004e - {e=>1,c=>0,a=>65,b=>1,d=>1,f=>14} 410000000d0000000e000000 410000000d0000000e000000 410000000d0000000e000000 00000041b00000000000000e 410000000d0000000e000000 410000000d0000000e000000 00000041b00000000000000e 410000000d0000000e000000 00000041b00000000000000e - {e=>1,c=>0,a=>52,b=>0,d=>1,f=>169} 340000000c000000a9000000 340000000c000000a9000000 340000000c000000a9000000 0000003430000000000000a9 340000000c000000a9000000 340000000c000000a9000000 0000003430000000000000a9 340000000c000000a9000000 0000003430000000000000a9 = struct uchar { long a; unsigned char b:1; }; - {a=>118,b=>0} 7600000000000000 76000000000000000000000000000000 76000000000000000000000000000000 0000007600000000 7600000000000000 7600000000000000 00000000000000760000000000000000 7600000000000000 0000007600000000 - {a=>-95,b=>1} a1ffffff01000000 a1ffffffffffffff0100000000000000 a1ffffffffffffff0100000000000000 ffffffa180000000 a1ffffff01000000 a1ffffff01000000 ffffffffffffffa18000000000000000 a1ffffff01000000 ffffffa180000000 - {a=>38,b=>0} 2600000000000000 26000000000000000000000000000000 26000000000000000000000000000000 0000002600000000 2600000000000000 2600000000000000 00000000000000260000000000000000 2600000000000000 0000002600000000 - {a=>50,b=>0} 3200000000000000 32000000000000000000000000000000 32000000000000000000000000000000 0000003200000000 3200000000000000 3200000000000000 00000000000000320000000000000000 3200000000000000 0000003200000000 - {a=>81,b=>0} 5100000000000000 51000000000000000000000000000000 51000000000000000000000000000000 0000005100000000 5100000000000000 5100000000000000 00000000000000510000000000000000 5100000000000000 0000005100000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>97,b=>0} 6100000000000000 61000000000000000000000000000000 61000000000000000000000000000000 0000006100000000 6100000000000000 6100000000000000 00000000000000610000000000000000 6100000000000000 0000006100000000 - {c=>0,a=>-20,b=>0} ecffffff00000000 ecffffffffffffff0000000000000000 ecffffffffffffff0000000000000000 ffffffec00000000 ecffffff00000000 ecffffff00000000 ffffffffffffffec0000000000000000 ecffffff00000000 ffffffec00000000 - {c=>0,a=>-81,b=>0} afffffff00000000 afffffffffffffff0000000000000000 afffffffffffffff0000000000000000 ffffffaf00000000 afffffff00000000 afffffff00000000 ffffffffffffffaf0000000000000000 afffffff00000000 ffffffaf00000000 - {c=>0,a=>75,b=>0} 4b00000000000000 4b000000000000000000000000000000 4b000000000000000000000000000000 0000004b00000000 4b00000000000000 4b00000000000000 000000000000004b0000000000000000 4b00000000000000 0000004b00000000 - {c=>0,a=>-108,b=>1} 94ffffff01000000 94ffffffffffffff0100000000000000 94ffffffffffffff0100000000000000 ffffff9480000000 94ffffff01000000 94ffffff01000000 ffffffffffffff948000000000000000 94ffffff01000000 ffffff9480000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>101,b=>1,d=>0} 6500000003000000 65000000000000000300000000000000 65000000000000000300000000000000 00000065c0000000 6500000003000000 6500000003000000 0000000000000065c000000000000000 6500000003000000 00000065c0000000 - {c=>0,a=>-71,b=>0,d=>1} b9ffffff04000000 b9ffffffffffffff0400000000000000 b9ffffffffffffff0400000000000000 ffffffb920000000 b9ffffff04000000 b9ffffff04000000 ffffffffffffffb92000000000000000 b9ffffff04000000 ffffffb920000000 - {c=>1,a=>-61,b=>0,d=>1} c3ffffff06000000 c3ffffffffffffff0600000000000000 c3ffffffffffffff0600000000000000 ffffffc360000000 c3ffffff06000000 c3ffffff06000000 ffffffffffffffc36000000000000000 c3ffffff06000000 ffffffc360000000 - {c=>1,a=>-98,b=>0,d=>1} 9effffff06000000 9effffffffffffff0600000000000000 9effffffffffffff0600000000000000 ffffff9e60000000 9effffff06000000 9effffff06000000 ffffffffffffff9e6000000000000000 9effffff06000000 ffffff9e60000000 - {c=>0,a=>86,b=>0,d=>0} 5600000000000000 56000000000000000000000000000000 56000000000000000000000000000000 0000005600000000 5600000000000000 5600000000000000 00000000000000560000000000000000 5600000000000000 0000005600000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>1,a=>-117,b=>1,d=>1} 8bffffff07000000 8bffffffffffffff0700000000000000 8bffffffffffffff0700000000000000 ffffff8be0000000 8bffffff07000000 8bffffff07000000 ffffffffffffff8be000000000000000 8bffffff07000000 ffffff8be0000000 - {e=>1,c=>0,a=>47,b=>1,d=>1} 2f0000000d000000 2f000000000000000d00000000000000 2f000000000000000d00000000000000 0000002fb0000000 2f0000000d000000 2f0000000d000000 000000000000002fb000000000000000 2f0000000d000000 0000002fb0000000 - {e=>1,c=>1,a=>-116,b=>0,d=>0} 8cffffff0a000000 8cffffffffffffff0a00000000000000 8cffffffffffffff0a00000000000000 ffffff8c50000000 8cffffff0a000000 8cffffff0a000000 ffffffffffffff8c5000000000000000 8cffffff0a000000 ffffff8c50000000 - {e=>1,c=>1,a=>-118,b=>0,d=>1} 8affffff0e000000 8affffffffffffff0e00000000000000 8affffffffffffff0e00000000000000 ffffff8a70000000 8affffff0e000000 8affffff0e000000 ffffffffffffff8a7000000000000000 8affffff0e000000 ffffff8a70000000 - {e=>1,c=>1,a=>-38,b=>0,d=>1} daffffff0e000000 daffffffffffffff0e00000000000000 daffffffffffffff0e00000000000000 ffffffda70000000 daffffff0e000000 daffffff0e000000 ffffffffffffffda7000000000000000 daffffff0e000000 ffffffda70000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>1,a=>-47,b=>0,d=>1,f=>41} d1ffffff0600000029000000 d1ffffffffffffff0600000029000000 d1ffffffffffffff0600000029000000 ffffffd16000000000000029 d1ffffff0600000029000000 d1ffffff0600000029000000 ffffffffffffffd16000000000000029 d1ffffff0600000029000000 ffffffd16000000000000029 - {e=>0,c=>1,a=>-89,b=>1,d=>0,f=>152} a7ffffff0300000098000000 a7ffffffffffffff0300000098000000 a7ffffffffffffff0300000098000000 ffffffa7c000000000000098 a7ffffff0300000098000000 a7ffffff0300000098000000 ffffffffffffffa7c000000000000098 a7ffffff0300000098000000 ffffffa7c000000000000098 - {e=>1,c=>1,a=>114,b=>1,d=>1,f=>37} 720000000f00000025000000 72000000000000000f00000025000000 72000000000000000f00000025000000 00000072f000000000000025 720000000f00000025000000 720000000f00000025000000 0000000000000072f000000000000025 720000000f00000025000000 00000072f000000000000025 - {e=>1,c=>1,a=>127,b=>1,d=>1,f=>22} 7f0000000f00000016000000 7f000000000000000f00000016000000 7f000000000000000f00000016000000 0000007ff000000000000016 7f0000000f00000016000000 7f0000000f00000016000000 000000000000007ff000000000000016 7f0000000f00000016000000 0000007ff000000000000016 - {e=>0,c=>0,a=>-95,b=>1,d=>0,f=>125} a1ffffff010000007d000000 a1ffffffffffffff010000007d000000 a1ffffffffffffff010000007d000000 ffffffa1800000000000007d a1ffffff010000007d000000 a1ffffff010000007d000000 ffffffffffffffa1800000000000007d a1ffffff010000007d000000 ffffffa1800000000000007d = struct ushort { unsigned short a:1; }; - {a=>1} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 - {a=>1} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 - {a=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 = struct ushort { unsigned short a:1; unsigned short b:1; }; - {a=>1,b=>1} 0300 0300 0300 c000 03000000 0300 c000 0300 c000 - {a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>1,b=>0} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 - {a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>0,b=>1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; }; - {c=>1,a=>0,b=>1} 0600 0600 0600 6000 06000000 0600 6000 0600 6000 - {c=>0,a=>1,b=>1} 0300 0300 0300 c000 03000000 0300 c000 0300 c000 - {c=>1,a=>0,b=>1} 0600 0600 0600 6000 06000000 0600 6000 0600 6000 - {c=>0,a=>0,b=>1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 - {c=>1,a=>0,b=>1} 0600 0600 0600 6000 06000000 0600 6000 0600 6000 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>0,b=>0,d=>1} 0800 0800 0800 1000 08000000 0800 1000 0800 1000 - {c=>1,a=>1,b=>1,d=>0} 0700 0700 0700 e000 07000000 0700 e000 0700 e000 - {c=>1,a=>1,b=>1,d=>1} 0f00 0f00 0f00 f000 0f000000 0f00 f000 0f00 f000 - {c=>1,a=>1,b=>0,d=>0} 0500 0500 0500 a000 05000000 0500 a000 0500 a000 - {c=>1,a=>0,b=>0,d=>0} 0400 0400 0400 2000 04000000 0400 2000 0400 2000 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned int e; }; - {e=>78,c=>1,a=>0,b=>0,d=>1} 0c0000004e000000 0c0000004e000000 0c0000004e000000 300000000000004e 0c0000004e000000 0c0000004e000000 300000000000004e 0c0000004e000000 300000000000004e - {e=>118,c=>1,a=>1,b=>0,d=>0} 0500000076000000 0500000076000000 0500000076000000 a000000000000076 0500000076000000 0500000076000000 a000000000000076 0500000076000000 a000000000000076 - {e=>65,c=>0,a=>0,b=>1,d=>1} 0a00000041000000 0a00000041000000 0a00000041000000 5000000000000041 0a00000041000000 0a00000041000000 5000000000000041 0a00000041000000 5000000000000041 - {e=>216,c=>0,a=>0,b=>1,d=>1} 0a000000d8000000 0a000000d8000000 0a000000d8000000 50000000000000d8 0a000000d8000000 0a000000d8000000 50000000000000d8 0a000000d8000000 50000000000000d8 - {e=>98,c=>0,a=>0,b=>1,d=>1} 0a00000062000000 0a00000062000000 0a00000062000000 5000000000000062 0a00000062000000 0a00000062000000 5000000000000062 0a00000062000000 5000000000000062 = struct ushort { char a; unsigned short b:1; }; - {a=>22,b=>1} 1601 1601 1601 1680 16010000 1601 1680 1601 1680 - {a=>-76,b=>0} b400 b400 b400 b400 b4000000 b400 b400 b400 b400 - {a=>101,b=>1} 6501 6501 6501 6580 65010000 6501 6580 6501 6580 - {a=>110,b=>0} 6e00 6e00 6e00 6e00 6e000000 6e00 6e00 6e00 6e00 - {a=>19,b=>1} 1301 1301 1301 1380 13010000 1301 1380 1301 1380 = struct ushort { char a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>103,b=>1} 6701 6701 6701 6780 67010000 6701 6780 6701 6780 - {c=>1,a=>-109,b=>1} 9303 9303 9303 93c0 93030000 9303 93c0 9303 93c0 - {c=>1,a=>-16,b=>0} f002 f002 f002 f040 f0020000 f002 f040 f002 f040 - {c=>1,a=>124,b=>1} 7c03 7c03 7c03 7cc0 7c030000 7c03 7cc0 7c03 7cc0 - {c=>1,a=>109,b=>0} 6d02 6d02 6d02 6d40 6d020000 6d02 6d40 6d02 6d40 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>-25,b=>1,d=>0} e701 e701 e701 e780 e7010000 e701 e780 e701 e780 - {c=>1,a=>-79,b=>0,d=>0} b102 b102 b102 b140 b1020000 b102 b140 b102 b140 - {c=>1,a=>102,b=>0,d=>1} 6606 6606 6606 6660 66060000 6606 6660 6606 6660 - {c=>0,a=>125,b=>1,d=>1} 7d05 7d05 7d05 7da0 7d050000 7d05 7da0 7d05 7da0 - {c=>0,a=>5,b=>1,d=>1} 0505 0505 0505 05a0 05050000 0505 05a0 0505 05a0 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>1,c=>0,a=>9,b=>1,d=>0} 0909 0909 0909 0990 09090000 0909 0990 0909 0990 - {e=>1,c=>0,a=>44,b=>1,d=>1} 2c0d 2c0d 2c0d 2cb0 2c0d0000 2c0d 2cb0 2c0d 2cb0 - {e=>0,c=>0,a=>44,b=>0,d=>0} 2c00 2c00 2c00 2c00 2c000000 2c00 2c00 2c00 2c00 - {e=>1,c=>1,a=>-13,b=>0,d=>1} f30e f30e f30e f370 f30e0000 f30e f370 f30e f370 - {e=>0,c=>1,a=>-2,b=>0,d=>0} fe02 fe02 fe02 fe40 fe020000 fe02 fe40 fe02 fe40 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>1,c=>1,a=>107,b=>1,d=>0,f=>112} 6b0b000070000000 6b0b000070000000 6b0b000070000000 6bd0000000000070 6b0b000070000000 6b0b000070000000 6bd0000000000070 6b0b000070000000 6bd0000000000070 - {e=>0,c=>1,a=>-68,b=>1,d=>1,f=>129} bc07000081000000 bc07000081000000 bc07000081000000 bce0000000000081 bc07000081000000 bc07000081000000 bce0000000000081 bc07000081000000 bce0000000000081 - {e=>0,c=>0,a=>72,b=>1,d=>1,f=>226} 48050000e2000000 48050000e2000000 48050000e2000000 48a00000000000e2 48050000e2000000 48050000e2000000 48a00000000000e2 48050000e2000000 48a00000000000e2 - {e=>0,c=>0,a=>-102,b=>0,d=>1,f=>147} 9a04000093000000 9a04000093000000 9a04000093000000 9a20000000000093 9a04000093000000 9a04000093000000 9a20000000000093 9a04000093000000 9a20000000000093 - {e=>1,c=>1,a=>-25,b=>1,d=>1,f=>7} e70f000007000000 e70f000007000000 e70f000007000000 e7f0000000000007 e70f000007000000 e70f000007000000 e7f0000000000007 e70f000007000000 e7f0000000000007 = struct ushort { short a; unsigned short b:1; }; - {a=>89,b=>1} 59000100 59000100 59000100 00598000 59000100 59000100 00598000 59000100 00598000 - {a=>-24,b=>0} e8ff0000 e8ff0000 e8ff0000 ffe80000 e8ff0000 e8ff0000 ffe80000 e8ff0000 ffe80000 - {a=>53,b=>1} 35000100 35000100 35000100 00358000 35000100 35000100 00358000 35000100 00358000 - {a=>60,b=>1} 3c000100 3c000100 3c000100 003c8000 3c000100 3c000100 003c8000 3c000100 003c8000 - {a=>-33,b=>1} dfff0100 dfff0100 dfff0100 ffdf8000 dfff0100 dfff0100 ffdf8000 dfff0100 ffdf8000 = struct ushort { short a; unsigned short b:1; unsigned short c:1; }; - {c=>1,a=>-21,b=>0} ebff0200 ebff0200 ebff0200 ffeb4000 ebff0200 ebff0200 ffeb4000 ebff0200 ffeb4000 - {c=>0,a=>65,b=>0} 41000000 41000000 41000000 00410000 41000000 41000000 00410000 41000000 00410000 - {c=>0,a=>-82,b=>0} aeff0000 aeff0000 aeff0000 ffae0000 aeff0000 aeff0000 ffae0000 aeff0000 ffae0000 - {c=>1,a=>-45,b=>0} d3ff0200 d3ff0200 d3ff0200 ffd34000 d3ff0200 d3ff0200 ffd34000 d3ff0200 ffd34000 - {c=>1,a=>-105,b=>0} 97ff0200 97ff0200 97ff0200 ff974000 97ff0200 97ff0200 ff974000 97ff0200 ff974000 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>5,b=>1,d=>1} 05000500 05000500 05000500 0005a000 05000500 05000500 0005a000 05000500 0005a000 - {c=>1,a=>-68,b=>1,d=>0} bcff0300 bcff0300 bcff0300 ffbcc000 bcff0300 bcff0300 ffbcc000 bcff0300 ffbcc000 - {c=>1,a=>-4,b=>0,d=>0} fcff0200 fcff0200 fcff0200 fffc4000 fcff0200 fcff0200 fffc4000 fcff0200 fffc4000 - {c=>1,a=>122,b=>1,d=>1} 7a000700 7a000700 7a000700 007ae000 7a000700 7a000700 007ae000 7a000700 007ae000 - {c=>1,a=>-64,b=>1,d=>0} c0ff0300 c0ff0300 c0ff0300 ffc0c000 c0ff0300 c0ff0300 ffc0c000 c0ff0300 ffc0c000 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>1,c=>1,a=>96,b=>1,d=>1} 60000f00 60000f00 60000f00 0060f000 60000f00 60000f00 0060f000 60000f00 0060f000 - {e=>0,c=>0,a=>-110,b=>1,d=>0} 92ff0100 92ff0100 92ff0100 ff928000 92ff0100 92ff0100 ff928000 92ff0100 ff928000 - {e=>1,c=>1,a=>-47,b=>1,d=>0} d1ff0b00 d1ff0b00 d1ff0b00 ffd1d000 d1ff0b00 d1ff0b00 ffd1d000 d1ff0b00 ffd1d000 - {e=>0,c=>1,a=>71,b=>1,d=>0} 47000300 47000300 47000300 0047c000 47000300 47000300 0047c000 47000300 0047c000 - {e=>1,c=>1,a=>-110,b=>1,d=>1} 92ff0f00 92ff0f00 92ff0f00 ff92f000 92ff0f00 92ff0f00 ff92f000 92ff0f00 ff92f000 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>-77,b=>1,d=>0,f=>56} b3ff030038000000 b3ff030038000000 b3ff030038000000 ffb3c00000000038 b3ff030038000000 b3ff030038000000 ffb3c00000000038 b3ff030038000000 ffb3c00000000038 - {e=>0,c=>0,a=>108,b=>1,d=>1,f=>82} 6c00050052000000 6c00050052000000 6c00050052000000 006ca00000000052 6c00050052000000 6c00050052000000 006ca00000000052 6c00050052000000 006ca00000000052 - {e=>0,c=>0,a=>4,b=>1,d=>1,f=>96} 0400050060000000 0400050060000000 0400050060000000 0004a00000000060 0400050060000000 0400050060000000 0004a00000000060 0400050060000000 0004a00000000060 - {e=>0,c=>0,a=>93,b=>1,d=>1,f=>28} 5d0005001c000000 5d0005001c000000 5d0005001c000000 005da0000000001c 5d0005001c000000 5d0005001c000000 005da0000000001c 5d0005001c000000 005da0000000001c - {e=>1,c=>0,a=>40,b=>1,d=>1,f=>174} 28000d00ae000000 28000d00ae000000 28000d00ae000000 0028b000000000ae 28000d00ae000000 28000d00ae000000 0028b000000000ae 28000d00ae000000 0028b000000000ae = struct ushort { int a; unsigned short b:1; }; - {a=>88,b=>1} 5800000001000000 5800000001000000 5800000001000000 0000005880000000 5800000001000000 5800000001000000 0000005880000000 5800000001000000 0000005880000000 - {a=>-118,b=>1} 8affffff01000000 8affffff01000000 8affffff01000000 ffffff8a80000000 8affffff01000000 8affffff01000000 ffffff8a80000000 8affffff01000000 ffffff8a80000000 - {a=>122,b=>1} 7a00000001000000 7a00000001000000 7a00000001000000 0000007a80000000 7a00000001000000 7a00000001000000 0000007a80000000 7a00000001000000 0000007a80000000 - {a=>-125,b=>0} 83ffffff00000000 83ffffff00000000 83ffffff00000000 ffffff8300000000 83ffffff00000000 83ffffff00000000 ffffff8300000000 83ffffff00000000 ffffff8300000000 - {a=>-83,b=>0} adffffff00000000 adffffff00000000 adffffff00000000 ffffffad00000000 adffffff00000000 adffffff00000000 ffffffad00000000 adffffff00000000 ffffffad00000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>-73,b=>1} b7ffffff01000000 b7ffffff01000000 b7ffffff01000000 ffffffb780000000 b7ffffff01000000 b7ffffff01000000 ffffffb780000000 b7ffffff01000000 ffffffb780000000 - {c=>1,a=>41,b=>0} 2900000002000000 2900000002000000 2900000002000000 0000002940000000 2900000002000000 2900000002000000 0000002940000000 2900000002000000 0000002940000000 - {c=>0,a=>-10,b=>0} f6ffffff00000000 f6ffffff00000000 f6ffffff00000000 fffffff600000000 f6ffffff00000000 f6ffffff00000000 fffffff600000000 f6ffffff00000000 fffffff600000000 - {c=>1,a=>46,b=>1} 2e00000003000000 2e00000003000000 2e00000003000000 0000002ec0000000 2e00000003000000 2e00000003000000 0000002ec0000000 2e00000003000000 0000002ec0000000 - {c=>0,a=>91,b=>1} 5b00000001000000 5b00000001000000 5b00000001000000 0000005b80000000 5b00000001000000 5b00000001000000 0000005b80000000 5b00000001000000 0000005b80000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>62,b=>1,d=>1} 3e00000005000000 3e00000005000000 3e00000005000000 0000003ea0000000 3e00000005000000 3e00000005000000 0000003ea0000000 3e00000005000000 0000003ea0000000 - {c=>1,a=>-98,b=>1,d=>1} 9effffff07000000 9effffff07000000 9effffff07000000 ffffff9ee0000000 9effffff07000000 9effffff07000000 ffffff9ee0000000 9effffff07000000 ffffff9ee0000000 - {c=>0,a=>-94,b=>0,d=>0} a2ffffff00000000 a2ffffff00000000 a2ffffff00000000 ffffffa200000000 a2ffffff00000000 a2ffffff00000000 ffffffa200000000 a2ffffff00000000 ffffffa200000000 - {c=>0,a=>36,b=>1,d=>0} 2400000001000000 2400000001000000 2400000001000000 0000002480000000 2400000001000000 2400000001000000 0000002480000000 2400000001000000 0000002480000000 - {c=>1,a=>-4,b=>0,d=>1} fcffffff06000000 fcffffff06000000 fcffffff06000000 fffffffc60000000 fcffffff06000000 fcffffff06000000 fffffffc60000000 fcffffff06000000 fffffffc60000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>0,c=>0,a=>96,b=>0,d=>0} 6000000000000000 6000000000000000 6000000000000000 0000006000000000 6000000000000000 6000000000000000 0000006000000000 6000000000000000 0000006000000000 - {e=>1,c=>0,a=>127,b=>1,d=>0} 7f00000009000000 7f00000009000000 7f00000009000000 0000007f90000000 7f00000009000000 7f00000009000000 0000007f90000000 7f00000009000000 0000007f90000000 - {e=>1,c=>0,a=>40,b=>0,d=>0} 2800000008000000 2800000008000000 2800000008000000 0000002810000000 2800000008000000 2800000008000000 0000002810000000 2800000008000000 0000002810000000 - {e=>1,c=>0,a=>96,b=>0,d=>1} 600000000c000000 600000000c000000 600000000c000000 0000006030000000 600000000c000000 600000000c000000 0000006030000000 600000000c000000 0000006030000000 - {e=>0,c=>0,a=>-42,b=>0,d=>1} d6ffffff04000000 d6ffffff04000000 d6ffffff04000000 ffffffd620000000 d6ffffff04000000 d6ffffff04000000 ffffffd620000000 d6ffffff04000000 ffffffd620000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>15,b=>0,d=>0,f=>0} 0f0000000200000000000000 0f0000000200000000000000 0f0000000200000000000000 0000000f4000000000000000 0f0000000200000000000000 0f0000000200000000000000 0000000f4000000000000000 0f0000000200000000000000 0000000f4000000000000000 - {e=>1,c=>0,a=>-90,b=>1,d=>1,f=>104} a6ffffff0d00000068000000 a6ffffff0d00000068000000 a6ffffff0d00000068000000 ffffffa6b000000000000068 a6ffffff0d00000068000000 a6ffffff0d00000068000000 ffffffa6b000000000000068 a6ffffff0d00000068000000 ffffffa6b000000000000068 - {e=>1,c=>0,a=>-53,b=>1,d=>0,f=>14} cbffffff090000000e000000 cbffffff090000000e000000 cbffffff090000000e000000 ffffffcb900000000000000e cbffffff090000000e000000 cbffffff090000000e000000 ffffffcb900000000000000e cbffffff090000000e000000 ffffffcb900000000000000e - {e=>0,c=>1,a=>41,b=>0,d=>1,f=>247} 2900000006000000f7000000 2900000006000000f7000000 2900000006000000f7000000 0000002960000000000000f7 2900000006000000f7000000 2900000006000000f7000000 0000002960000000000000f7 2900000006000000f7000000 0000002960000000000000f7 - {e=>1,c=>1,a=>-21,b=>0,d=>0,f=>111} ebffffff0a0000006f000000 ebffffff0a0000006f000000 ebffffff0a0000006f000000 ffffffeb500000000000006f ebffffff0a0000006f000000 ebffffff0a0000006f000000 ffffffeb500000000000006f ebffffff0a0000006f000000 ffffffeb500000000000006f = struct ushort { long a; unsigned short b:1; }; - {a=>-109,b=>0} 93ffffff00000000 93ffffffffffffff0000000000000000 93ffffffffffffff0000000000000000 ffffff9300000000 93ffffff00000000 93ffffff00000000 ffffffffffffff930000000000000000 93ffffff00000000 ffffff9300000000 - {a=>68,b=>1} 4400000001000000 44000000000000000100000000000000 44000000000000000100000000000000 0000004480000000 4400000001000000 4400000001000000 00000000000000448000000000000000 4400000001000000 0000004480000000 - {a=>-127,b=>0} 81ffffff00000000 81ffffffffffffff0000000000000000 81ffffffffffffff0000000000000000 ffffff8100000000 81ffffff00000000 81ffffff00000000 ffffffffffffff810000000000000000 81ffffff00000000 ffffff8100000000 - {a=>-101,b=>1} 9bffffff01000000 9bffffffffffffff0100000000000000 9bffffffffffffff0100000000000000 ffffff9b80000000 9bffffff01000000 9bffffff01000000 ffffffffffffff9b8000000000000000 9bffffff01000000 ffffff9b80000000 - {a=>65,b=>1} 4100000001000000 41000000000000000100000000000000 41000000000000000100000000000000 0000004180000000 4100000001000000 4100000001000000 00000000000000418000000000000000 4100000001000000 0000004180000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>-118,b=>0} 8affffff00000000 8affffffffffffff0000000000000000 8affffffffffffff0000000000000000 ffffff8a00000000 8affffff00000000 8affffff00000000 ffffffffffffff8a0000000000000000 8affffff00000000 ffffff8a00000000 - {c=>0,a=>98,b=>1} 6200000001000000 62000000000000000100000000000000 62000000000000000100000000000000 0000006280000000 6200000001000000 6200000001000000 00000000000000628000000000000000 6200000001000000 0000006280000000 - {c=>0,a=>20,b=>0} 1400000000000000 14000000000000000000000000000000 14000000000000000000000000000000 0000001400000000 1400000000000000 1400000000000000 00000000000000140000000000000000 1400000000000000 0000001400000000 - {c=>0,a=>-71,b=>0} b9ffffff00000000 b9ffffffffffffff0000000000000000 b9ffffffffffffff0000000000000000 ffffffb900000000 b9ffffff00000000 b9ffffff00000000 ffffffffffffffb90000000000000000 b9ffffff00000000 ffffffb900000000 - {c=>0,a=>-104,b=>1} 98ffffff01000000 98ffffffffffffff0100000000000000 98ffffffffffffff0100000000000000 ffffff9880000000 98ffffff01000000 98ffffff01000000 ffffffffffffff988000000000000000 98ffffff01000000 ffffff9880000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>31,b=>1,d=>1} 1f00000005000000 1f000000000000000500000000000000 1f000000000000000500000000000000 0000001fa0000000 1f00000005000000 1f00000005000000 000000000000001fa000000000000000 1f00000005000000 0000001fa0000000 - {c=>1,a=>105,b=>0,d=>1} 6900000006000000 69000000000000000600000000000000 69000000000000000600000000000000 0000006960000000 6900000006000000 6900000006000000 00000000000000696000000000000000 6900000006000000 0000006960000000 - {c=>1,a=>-124,b=>1,d=>0} 84ffffff03000000 84ffffffffffffff0300000000000000 84ffffffffffffff0300000000000000 ffffff84c0000000 84ffffff03000000 84ffffff03000000 ffffffffffffff84c000000000000000 84ffffff03000000 ffffff84c0000000 - {c=>1,a=>11,b=>1,d=>1} 0b00000007000000 0b000000000000000700000000000000 0b000000000000000700000000000000 0000000be0000000 0b00000007000000 0b00000007000000 000000000000000be000000000000000 0b00000007000000 0000000be0000000 - {c=>1,a=>21,b=>0,d=>1} 1500000006000000 15000000000000000600000000000000 15000000000000000600000000000000 0000001560000000 1500000006000000 1500000006000000 00000000000000156000000000000000 1500000006000000 0000001560000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>0,c=>0,a=>51,b=>0,d=>0} 3300000000000000 33000000000000000000000000000000 33000000000000000000000000000000 0000003300000000 3300000000000000 3300000000000000 00000000000000330000000000000000 3300000000000000 0000003300000000 - {e=>1,c=>1,a=>16,b=>1,d=>1} 100000000f000000 10000000000000000f00000000000000 10000000000000000f00000000000000 00000010f0000000 100000000f000000 100000000f000000 0000000000000010f000000000000000 100000000f000000 00000010f0000000 - {e=>1,c=>1,a=>-30,b=>1,d=>1} e2ffffff0f000000 e2ffffffffffffff0f00000000000000 e2ffffffffffffff0f00000000000000 ffffffe2f0000000 e2ffffff0f000000 e2ffffff0f000000 ffffffffffffffe2f000000000000000 e2ffffff0f000000 ffffffe2f0000000 - {e=>1,c=>0,a=>-27,b=>1,d=>0} e5ffffff09000000 e5ffffffffffffff0900000000000000 e5ffffffffffffff0900000000000000 ffffffe590000000 e5ffffff09000000 e5ffffff09000000 ffffffffffffffe59000000000000000 e5ffffff09000000 ffffffe590000000 - {e=>0,c=>0,a=>44,b=>1,d=>1} 2c00000005000000 2c000000000000000500000000000000 2c000000000000000500000000000000 0000002ca0000000 2c00000005000000 2c00000005000000 000000000000002ca000000000000000 2c00000005000000 0000002ca0000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>-43,b=>1,d=>0,f=>98} d5ffffff0300000062000000 d5ffffffffffffff0300000062000000 d5ffffffffffffff0300000062000000 ffffffd5c000000000000062 d5ffffff0300000062000000 d5ffffff0300000062000000 ffffffffffffffd5c000000000000062 d5ffffff0300000062000000 ffffffd5c000000000000062 - {e=>1,c=>0,a=>-40,b=>1,d=>1,f=>138} d8ffffff0d0000008a000000 d8ffffffffffffff0d0000008a000000 d8ffffffffffffff0d0000008a000000 ffffffd8b00000000000008a d8ffffff0d0000008a000000 d8ffffff0d0000008a000000 ffffffffffffffd8b00000000000008a d8ffffff0d0000008a000000 ffffffd8b00000000000008a - {e=>1,c=>0,a=>14,b=>1,d=>1,f=>44} 0e0000000d0000002c000000 0e000000000000000d0000002c000000 0e000000000000000d0000002c000000 0000000eb00000000000002c 0e0000000d0000002c000000 0e0000000d0000002c000000 000000000000000eb00000000000002c 0e0000000d0000002c000000 0000000eb00000000000002c - {e=>1,c=>1,a=>-30,b=>1,d=>0,f=>32} e2ffffff0b00000020000000 e2ffffffffffffff0b00000020000000 e2ffffffffffffff0b00000020000000 ffffffe2d000000000000020 e2ffffff0b00000020000000 e2ffffff0b00000020000000 ffffffffffffffe2d000000000000020 e2ffffff0b00000020000000 ffffffe2d000000000000020 - {e=>0,c=>1,a=>87,b=>0,d=>1,f=>216} 5700000006000000d8000000 570000000000000006000000d8000000 570000000000000006000000d8000000 0000005760000000000000d8 5700000006000000d8000000 5700000006000000d8000000 000000000000005760000000000000d8 5700000006000000d8000000 0000005760000000000000d8 = struct uint { unsigned int a:1; }; - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 = struct uint { unsigned int a:1; unsigned int b:1; }; - {a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {c=>1,a=>1,b=>0} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {c=>0,a=>1,b=>1} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {c=>1,a=>0,b=>0} 04000000 04000000 04000000 20000000 04000000 04000000 20000000 04000000 20000000 - {c=>0,a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>1,b=>1,d=>0} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {c=>0,a=>0,b=>0,d=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {c=>1,a=>0,b=>0,d=>1} 0c000000 0c000000 0c000000 30000000 0c000000 0c000000 30000000 0c000000 30000000 - {c=>0,a=>0,b=>1,d=>0} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {c=>1,a=>0,b=>1,d=>0} 06000000 06000000 06000000 60000000 06000000 06000000 60000000 06000000 60000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned char e; }; - {e=>191,c=>1,a=>1,b=>1,d=>1} 0fbf0000 0fbf0000 0fbf0000 f0bf0000 0fbf0000 0fbf0000 f0bf0000 0fbf0000 f0bf0000 - {e=>169,c=>0,a=>1,b=>0,d=>0} 01a90000 01a90000 01a90000 80a90000 01a90000 01a90000 80a90000 01a90000 80a90000 - {e=>146,c=>0,a=>1,b=>1,d=>0} 03920000 03920000 03920000 c0920000 03920000 03920000 c0920000 03920000 c0920000 - {e=>101,c=>1,a=>1,b=>0,d=>0} 05650000 05650000 05650000 a0650000 05650000 05650000 a0650000 05650000 a0650000 - {e=>214,c=>0,a=>0,b=>1,d=>0} 02d60000 02d60000 02d60000 40d60000 02d60000 02d60000 40d60000 02d60000 40d60000 = struct uint { char a; unsigned int b:1; }; - {a=>75,b=>1} 4b010000 4b010000 4b010000 4b800000 4b010000 4b010000 4b800000 4b010000 4b800000 - {a=>-108,b=>1} 94010000 94010000 94010000 94800000 94010000 94010000 94800000 94010000 94800000 - {a=>-66,b=>0} be000000 be000000 be000000 be000000 be000000 be000000 be000000 be000000 be000000 - {a=>70,b=>0} 46000000 46000000 46000000 46000000 46000000 46000000 46000000 46000000 46000000 - {a=>42,b=>0} 2a000000 2a000000 2a000000 2a000000 2a000000 2a000000 2a000000 2a000000 2a000000 = struct uint { char a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-100,b=>1} 9c030000 9c030000 9c030000 9cc00000 9c030000 9c030000 9cc00000 9c030000 9cc00000 - {c=>1,a=>93,b=>0} 5d020000 5d020000 5d020000 5d400000 5d020000 5d020000 5d400000 5d020000 5d400000 - {c=>1,a=>40,b=>0} 28020000 28020000 28020000 28400000 28020000 28020000 28400000 28020000 28400000 - {c=>1,a=>-20,b=>1} ec030000 ec030000 ec030000 ecc00000 ec030000 ec030000 ecc00000 ec030000 ecc00000 - {c=>1,a=>5,b=>0} 05020000 05020000 05020000 05400000 05020000 05020000 05400000 05020000 05400000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>-26,b=>0,d=>0} e6000000 e6000000 e6000000 e6000000 e6000000 e6000000 e6000000 e6000000 e6000000 - {c=>0,a=>-121,b=>0,d=>0} 87000000 87000000 87000000 87000000 87000000 87000000 87000000 87000000 87000000 - {c=>1,a=>2,b=>0,d=>1} 02060000 02060000 02060000 02600000 02060000 02060000 02600000 02060000 02600000 - {c=>1,a=>-54,b=>1,d=>0} ca030000 ca030000 ca030000 cac00000 ca030000 ca030000 cac00000 ca030000 cac00000 - {c=>1,a=>79,b=>0,d=>0} 4f020000 4f020000 4f020000 4f400000 4f020000 4f020000 4f400000 4f020000 4f400000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>0,c=>1,a=>123,b=>0,d=>1} 7b060000 7b060000 7b060000 7b600000 7b060000 7b060000 7b600000 7b060000 7b600000 - {e=>0,c=>0,a=>-85,b=>1,d=>0} ab010000 ab010000 ab010000 ab800000 ab010000 ab010000 ab800000 ab010000 ab800000 - {e=>0,c=>1,a=>108,b=>1,d=>0} 6c030000 6c030000 6c030000 6cc00000 6c030000 6c030000 6cc00000 6c030000 6cc00000 - {e=>0,c=>0,a=>5,b=>1,d=>0} 05010000 05010000 05010000 05800000 05010000 05010000 05800000 05010000 05800000 - {e=>1,c=>0,a=>37,b=>0,d=>0} 25080000 25080000 25080000 25100000 25080000 25080000 25100000 25080000 25100000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>1,c=>1,a=>-3,b=>0,d=>0,f=>33} fd0a2100 fd0a2100 fd0a2100 fd502100 fd0a2100 fd0a2100 fd502100 fd0a2100 fd502100 - {e=>1,c=>0,a=>-54,b=>1,d=>1,f=>25} ca0d1900 ca0d1900 ca0d1900 cab01900 ca0d1900 ca0d1900 cab01900 ca0d1900 cab01900 - {e=>1,c=>1,a=>99,b=>0,d=>0,f=>1} 630a0100 630a0100 630a0100 63500100 630a0100 630a0100 63500100 630a0100 63500100 - {e=>0,c=>0,a=>36,b=>0,d=>1,f=>171} 2404ab00 2404ab00 2404ab00 2420ab00 2404ab00 2404ab00 2420ab00 2404ab00 2420ab00 - {e=>0,c=>0,a=>-112,b=>0,d=>1,f=>44} 90042c00 90042c00 90042c00 90202c00 90042c00 90042c00 90202c00 90042c00 90202c00 = struct uint { short a; unsigned int b:1; }; - {a=>17,b=>1} 11000100 11000100 11000100 00118000 11000100 11000100 00118000 11000100 00118000 - {a=>-109,b=>0} 93ff0000 93ff0000 93ff0000 ff930000 93ff0000 93ff0000 ff930000 93ff0000 ff930000 - {a=>66,b=>1} 42000100 42000100 42000100 00428000 42000100 42000100 00428000 42000100 00428000 - {a=>15,b=>0} 0f000000 0f000000 0f000000 000f0000 0f000000 0f000000 000f0000 0f000000 000f0000 - {a=>67,b=>1} 43000100 43000100 43000100 00438000 43000100 43000100 00438000 43000100 00438000 = struct uint { short a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-17,b=>0} efff0200 efff0200 efff0200 ffef4000 efff0200 efff0200 ffef4000 efff0200 ffef4000 - {c=>0,a=>-96,b=>0} a0ff0000 a0ff0000 a0ff0000 ffa00000 a0ff0000 a0ff0000 ffa00000 a0ff0000 ffa00000 - {c=>0,a=>19,b=>0} 13000000 13000000 13000000 00130000 13000000 13000000 00130000 13000000 00130000 - {c=>1,a=>-75,b=>1} b5ff0300 b5ff0300 b5ff0300 ffb5c000 b5ff0300 b5ff0300 ffb5c000 b5ff0300 ffb5c000 - {c=>0,a=>-26,b=>1} e6ff0100 e6ff0100 e6ff0100 ffe68000 e6ff0100 e6ff0100 ffe68000 e6ff0100 ffe68000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>-128,b=>0,d=>1} 80ff0400 80ff0400 80ff0400 ff802000 80ff0400 80ff0400 ff802000 80ff0400 ff802000 - {c=>0,a=>6,b=>0,d=>1} 06000400 06000400 06000400 00062000 06000400 06000400 00062000 06000400 00062000 - {c=>1,a=>-76,b=>1,d=>0} b4ff0300 b4ff0300 b4ff0300 ffb4c000 b4ff0300 b4ff0300 ffb4c000 b4ff0300 ffb4c000 - {c=>0,a=>-60,b=>1,d=>0} c4ff0100 c4ff0100 c4ff0100 ffc48000 c4ff0100 c4ff0100 ffc48000 c4ff0100 ffc48000 - {c=>1,a=>-102,b=>1,d=>1} 9aff0700 9aff0700 9aff0700 ff9ae000 9aff0700 9aff0700 ff9ae000 9aff0700 ff9ae000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>0,c=>0,a=>-11,b=>0,d=>1} f5ff0400 f5ff0400 f5ff0400 fff52000 f5ff0400 f5ff0400 fff52000 f5ff0400 fff52000 - {e=>1,c=>0,a=>-23,b=>1,d=>1} e9ff0d00 e9ff0d00 e9ff0d00 ffe9b000 e9ff0d00 e9ff0d00 ffe9b000 e9ff0d00 ffe9b000 - {e=>1,c=>1,a=>81,b=>0,d=>0} 51000a00 51000a00 51000a00 00515000 51000a00 51000a00 00515000 51000a00 00515000 - {e=>0,c=>0,a=>16,b=>0,d=>0} 10000000 10000000 10000000 00100000 10000000 10000000 00100000 10000000 00100000 - {e=>1,c=>1,a=>90,b=>1,d=>0} 5a000b00 5a000b00 5a000b00 005ad000 5a000b00 5a000b00 005ad000 5a000b00 005ad000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>0,c=>1,a=>108,b=>0,d=>1,f=>91} 6c00065b 6c00065b 6c00065b 006c605b 6c00065b 6c00065b 006c605b 6c00065b 006c605b - {e=>0,c=>0,a=>113,b=>1,d=>0,f=>123} 7100017b 7100017b 7100017b 0071807b 7100017b 7100017b 0071807b 7100017b 0071807b - {e=>0,c=>0,a=>-118,b=>1,d=>1,f=>27} 8aff051b 8aff051b 8aff051b ff8aa01b 8aff051b 8aff051b ff8aa01b 8aff051b ff8aa01b - {e=>0,c=>0,a=>105,b=>1,d=>1,f=>227} 690005e3 690005e3 690005e3 0069a0e3 690005e3 690005e3 0069a0e3 690005e3 0069a0e3 - {e=>0,c=>1,a=>58,b=>0,d=>0,f=>37} 3a000225 3a000225 3a000225 003a4025 3a000225 3a000225 003a4025 3a000225 003a4025 = struct uint { int a; unsigned int b:1; }; - {a=>123,b=>0} 7b00000000000000 7b00000000000000 7b00000000000000 0000007b00000000 7b00000000000000 7b00000000000000 0000007b00000000 7b00000000000000 0000007b00000000 - {a=>-82,b=>1} aeffffff01000000 aeffffff01000000 aeffffff01000000 ffffffae80000000 aeffffff01000000 aeffffff01000000 ffffffae80000000 aeffffff01000000 ffffffae80000000 - {a=>-71,b=>0} b9ffffff00000000 b9ffffff00000000 b9ffffff00000000 ffffffb900000000 b9ffffff00000000 b9ffffff00000000 ffffffb900000000 b9ffffff00000000 ffffffb900000000 - {a=>-16,b=>0} f0ffffff00000000 f0ffffff00000000 f0ffffff00000000 fffffff000000000 f0ffffff00000000 f0ffffff00000000 fffffff000000000 f0ffffff00000000 fffffff000000000 - {a=>82,b=>0} 5200000000000000 5200000000000000 5200000000000000 0000005200000000 5200000000000000 5200000000000000 0000005200000000 5200000000000000 0000005200000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>-82,b=>1} aeffffff01000000 aeffffff01000000 aeffffff01000000 ffffffae80000000 aeffffff01000000 aeffffff01000000 ffffffae80000000 aeffffff01000000 ffffffae80000000 - {c=>1,a=>76,b=>1} 4c00000003000000 4c00000003000000 4c00000003000000 0000004cc0000000 4c00000003000000 4c00000003000000 0000004cc0000000 4c00000003000000 0000004cc0000000 - {c=>0,a=>90,b=>1} 5a00000001000000 5a00000001000000 5a00000001000000 0000005a80000000 5a00000001000000 5a00000001000000 0000005a80000000 5a00000001000000 0000005a80000000 - {c=>0,a=>-87,b=>1} a9ffffff01000000 a9ffffff01000000 a9ffffff01000000 ffffffa980000000 a9ffffff01000000 a9ffffff01000000 ffffffa980000000 a9ffffff01000000 ffffffa980000000 - {c=>1,a=>-70,b=>0} baffffff02000000 baffffff02000000 baffffff02000000 ffffffba40000000 baffffff02000000 baffffff02000000 ffffffba40000000 baffffff02000000 ffffffba40000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>103,b=>1,d=>1} 6700000005000000 6700000005000000 6700000005000000 00000067a0000000 6700000005000000 6700000005000000 00000067a0000000 6700000005000000 00000067a0000000 - {c=>0,a=>-102,b=>1,d=>0} 9affffff01000000 9affffff01000000 9affffff01000000 ffffff9a80000000 9affffff01000000 9affffff01000000 ffffff9a80000000 9affffff01000000 ffffff9a80000000 - {c=>1,a=>8,b=>1,d=>1} 0800000007000000 0800000007000000 0800000007000000 00000008e0000000 0800000007000000 0800000007000000 00000008e0000000 0800000007000000 00000008e0000000 - {c=>1,a=>24,b=>0,d=>1} 1800000006000000 1800000006000000 1800000006000000 0000001860000000 1800000006000000 1800000006000000 0000001860000000 1800000006000000 0000001860000000 - {c=>0,a=>-37,b=>1,d=>1} dbffffff05000000 dbffffff05000000 dbffffff05000000 ffffffdba0000000 dbffffff05000000 dbffffff05000000 ffffffdba0000000 dbffffff05000000 ffffffdba0000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>73,b=>0,d=>0} 490000000a000000 490000000a000000 490000000a000000 0000004950000000 490000000a000000 490000000a000000 0000004950000000 490000000a000000 0000004950000000 - {e=>0,c=>0,a=>-47,b=>1,d=>1} d1ffffff05000000 d1ffffff05000000 d1ffffff05000000 ffffffd1a0000000 d1ffffff05000000 d1ffffff05000000 ffffffd1a0000000 d1ffffff05000000 ffffffd1a0000000 - {e=>1,c=>1,a=>105,b=>0,d=>1} 690000000e000000 690000000e000000 690000000e000000 0000006970000000 690000000e000000 690000000e000000 0000006970000000 690000000e000000 0000006970000000 - {e=>1,c=>0,a=>39,b=>1,d=>1} 270000000d000000 270000000d000000 270000000d000000 00000027b0000000 270000000d000000 270000000d000000 00000027b0000000 270000000d000000 00000027b0000000 - {e=>0,c=>1,a=>-19,b=>0,d=>0} edffffff02000000 edffffff02000000 edffffff02000000 ffffffed40000000 edffffff02000000 edffffff02000000 ffffffed40000000 edffffff02000000 ffffffed40000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>0,c=>1,a=>-13,b=>0,d=>0,f=>179} f3ffffff02b30000 f3ffffff02b30000 f3ffffff02b30000 fffffff340b30000 f3ffffff02b30000 f3ffffff02b30000 fffffff340b30000 f3ffffff02b30000 fffffff340b30000 - {e=>0,c=>1,a=>-50,b=>0,d=>1,f=>86} ceffffff06560000 ceffffff06560000 ceffffff06560000 ffffffce60560000 ceffffff06560000 ceffffff06560000 ffffffce60560000 ceffffff06560000 ffffffce60560000 - {e=>1,c=>1,a=>127,b=>0,d=>1,f=>197} 7f0000000ec50000 7f0000000ec50000 7f0000000ec50000 0000007f70c50000 7f0000000ec50000 7f0000000ec50000 0000007f70c50000 7f0000000ec50000 0000007f70c50000 - {e=>0,c=>1,a=>22,b=>0,d=>1,f=>205} 1600000006cd0000 1600000006cd0000 1600000006cd0000 0000001660cd0000 1600000006cd0000 1600000006cd0000 0000001660cd0000 1600000006cd0000 0000001660cd0000 - {e=>1,c=>1,a=>-24,b=>1,d=>0,f=>208} e8ffffff0bd00000 e8ffffff0bd00000 e8ffffff0bd00000 ffffffe8d0d00000 e8ffffff0bd00000 e8ffffff0bd00000 ffffffe8d0d00000 e8ffffff0bd00000 ffffffe8d0d00000 = struct uint { long a; unsigned int b:1; }; - {a=>125,b=>0} 7d00000000000000 7d000000000000000000000000000000 7d000000000000000000000000000000 0000007d00000000 7d00000000000000 7d00000000000000 000000000000007d0000000000000000 7d00000000000000 0000007d00000000 - {a=>76,b=>0} 4c00000000000000 4c000000000000000000000000000000 4c000000000000000000000000000000 0000004c00000000 4c00000000000000 4c00000000000000 000000000000004c0000000000000000 4c00000000000000 0000004c00000000 - {a=>118,b=>1} 7600000001000000 76000000000000000100000000000000 76000000000000000100000000000000 0000007680000000 7600000001000000 7600000001000000 00000000000000768000000000000000 7600000001000000 0000007680000000 - {a=>39,b=>1} 2700000001000000 27000000000000000100000000000000 27000000000000000100000000000000 0000002780000000 2700000001000000 2700000001000000 00000000000000278000000000000000 2700000001000000 0000002780000000 - {a=>117,b=>0} 7500000000000000 75000000000000000000000000000000 75000000000000000000000000000000 0000007500000000 7500000000000000 7500000000000000 00000000000000750000000000000000 7500000000000000 0000007500000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>96,b=>1} 6000000001000000 60000000000000000100000000000000 60000000000000000100000000000000 0000006080000000 6000000001000000 6000000001000000 00000000000000608000000000000000 6000000001000000 0000006080000000 - {c=>0,a=>85,b=>0} 5500000000000000 55000000000000000000000000000000 55000000000000000000000000000000 0000005500000000 5500000000000000 5500000000000000 00000000000000550000000000000000 5500000000000000 0000005500000000 - {c=>0,a=>-120,b=>1} 88ffffff01000000 88ffffffffffffff0100000000000000 88ffffffffffffff0100000000000000 ffffff8880000000 88ffffff01000000 88ffffff01000000 ffffffffffffff888000000000000000 88ffffff01000000 ffffff8880000000 - {c=>1,a=>46,b=>1} 2e00000003000000 2e000000000000000300000000000000 2e000000000000000300000000000000 0000002ec0000000 2e00000003000000 2e00000003000000 000000000000002ec000000000000000 2e00000003000000 0000002ec0000000 - {c=>1,a=>-15,b=>1} f1ffffff03000000 f1ffffffffffffff0300000000000000 f1ffffffffffffff0300000000000000 fffffff1c0000000 f1ffffff03000000 f1ffffff03000000 fffffffffffffff1c000000000000000 f1ffffff03000000 fffffff1c0000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>1,a=>86,b=>0,d=>0} 5600000002000000 56000000000000000200000000000000 56000000000000000200000000000000 0000005640000000 5600000002000000 5600000002000000 00000000000000564000000000000000 5600000002000000 0000005640000000 - {c=>0,a=>-29,b=>1,d=>1} e3ffffff05000000 e3ffffffffffffff0500000000000000 e3ffffffffffffff0500000000000000 ffffffe3a0000000 e3ffffff05000000 e3ffffff05000000 ffffffffffffffe3a000000000000000 e3ffffff05000000 ffffffe3a0000000 - {c=>0,a=>97,b=>1,d=>0} 6100000001000000 61000000000000000100000000000000 61000000000000000100000000000000 0000006180000000 6100000001000000 6100000001000000 00000000000000618000000000000000 6100000001000000 0000006180000000 - {c=>1,a=>92,b=>1,d=>0} 5c00000003000000 5c000000000000000300000000000000 5c000000000000000300000000000000 0000005cc0000000 5c00000003000000 5c00000003000000 000000000000005cc000000000000000 5c00000003000000 0000005cc0000000 - {c=>1,a=>-52,b=>0,d=>1} ccffffff06000000 ccffffffffffffff0600000000000000 ccffffffffffffff0600000000000000 ffffffcc60000000 ccffffff06000000 ccffffff06000000 ffffffffffffffcc6000000000000000 ccffffff06000000 ffffffcc60000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>46,b=>1,d=>0} 2e0000000b000000 2e000000000000000b00000000000000 2e000000000000000b00000000000000 0000002ed0000000 2e0000000b000000 2e0000000b000000 000000000000002ed000000000000000 2e0000000b000000 0000002ed0000000 - {e=>0,c=>1,a=>6,b=>0,d=>1} 0600000006000000 06000000000000000600000000000000 06000000000000000600000000000000 0000000660000000 0600000006000000 0600000006000000 00000000000000066000000000000000 0600000006000000 0000000660000000 - {e=>0,c=>1,a=>-88,b=>1,d=>0} a8ffffff03000000 a8ffffffffffffff0300000000000000 a8ffffffffffffff0300000000000000 ffffffa8c0000000 a8ffffff03000000 a8ffffff03000000 ffffffffffffffa8c000000000000000 a8ffffff03000000 ffffffa8c0000000 - {e=>1,c=>1,a=>61,b=>0,d=>0} 3d0000000a000000 3d000000000000000a00000000000000 3d000000000000000a00000000000000 0000003d50000000 3d0000000a000000 3d0000000a000000 000000000000003d5000000000000000 3d0000000a000000 0000003d50000000 - {e=>1,c=>1,a=>-91,b=>0,d=>1} a5ffffff0e000000 a5ffffffffffffff0e00000000000000 a5ffffffffffffff0e00000000000000 ffffffa570000000 a5ffffff0e000000 a5ffffff0e000000 ffffffffffffffa57000000000000000 a5ffffff0e000000 ffffffa570000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>1,c=>0,a=>0,b=>0,d=>0,f=>3} 0000000008030000 00000000000000000803000000000000 00000000000000000803000000000000 0000000010030000 0000000008030000 0000000008030000 00000000000000001003000000000000 0000000008030000 0000000010030000 - {e=>1,c=>0,a=>-78,b=>1,d=>0,f=>176} b2ffffff09b00000 b2ffffffffffffff09b0000000000000 b2ffffffffffffff09b0000000000000 ffffffb290b00000 b2ffffff09b00000 b2ffffff09b00000 ffffffffffffffb290b0000000000000 b2ffffff09b00000 ffffffb290b00000 - {e=>0,c=>1,a=>-121,b=>1,d=>1,f=>153} 87ffffff07990000 87ffffffffffffff0799000000000000 87ffffffffffffff0799000000000000 ffffff87e0990000 87ffffff07990000 87ffffff07990000 ffffffffffffff87e099000000000000 87ffffff07990000 ffffff87e0990000 - {e=>0,c=>1,a=>-50,b=>1,d=>0,f=>143} ceffffff038f0000 ceffffffffffffff038f000000000000 ceffffffffffffff038f000000000000 ffffffcec08f0000 ceffffff038f0000 ceffffff038f0000 ffffffffffffffcec08f000000000000 ceffffff038f0000 ffffffcec08f0000 - {e=>0,c=>1,a=>-106,b=>0,d=>0,f=>229} 96ffffff02e50000 96ffffffffffffff02e5000000000000 96ffffffffffffff02e5000000000000 ffffff9640e50000 96ffffff02e50000 96ffffff02e50000 ffffffffffffff9640e5000000000000 96ffffff02e50000 ffffff9640e50000 = struct ulong { unsigned long a:1; }; - {a=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 - {a=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 - {a=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 - {a=>1} 01000000 0100000000000000 0100000000000000 80000000 01000000 01000000 8000000000000000 01000000 80000000 - {a=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 = struct ulong { unsigned long a:1; unsigned long b:1; }; - {a=>0,b=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 - {a=>1,b=>1} 03000000 0300000000000000 0300000000000000 c0000000 03000000 03000000 c000000000000000 03000000 c0000000 - {a=>1,b=>0} 01000000 0100000000000000 0100000000000000 80000000 01000000 01000000 8000000000000000 01000000 80000000 - {a=>1,b=>1} 03000000 0300000000000000 0300000000000000 c0000000 03000000 03000000 c000000000000000 03000000 c0000000 - {a=>0,b=>1} 02000000 0200000000000000 0200000000000000 40000000 02000000 02000000 4000000000000000 02000000 40000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; }; - {c=>0,a=>0,b=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 - {c=>0,a=>1,b=>1} 03000000 0300000000000000 0300000000000000 c0000000 03000000 03000000 c000000000000000 03000000 c0000000 - {c=>0,a=>0,b=>1} 02000000 0200000000000000 0200000000000000 40000000 02000000 02000000 4000000000000000 02000000 40000000 - {c=>1,a=>0,b=>1} 06000000 0600000000000000 0600000000000000 60000000 06000000 06000000 6000000000000000 06000000 60000000 - {c=>1,a=>0,b=>0} 04000000 0400000000000000 0400000000000000 20000000 04000000 04000000 2000000000000000 04000000 20000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>1,a=>1,b=>1,d=>0} 07000000 0700000000000000 0700000000000000 e0000000 07000000 07000000 e000000000000000 07000000 e0000000 - {c=>1,a=>0,b=>0,d=>0} 04000000 0400000000000000 0400000000000000 20000000 04000000 04000000 2000000000000000 04000000 20000000 - {c=>0,a=>1,b=>1,d=>1} 0b000000 0b00000000000000 0b00000000000000 d0000000 0b000000 0b000000 d000000000000000 0b000000 d0000000 - {c=>0,a=>1,b=>0,d=>0} 01000000 0100000000000000 0100000000000000 80000000 01000000 01000000 8000000000000000 01000000 80000000 - {c=>1,a=>0,b=>1,d=>0} 06000000 0600000000000000 0600000000000000 60000000 06000000 06000000 6000000000000000 06000000 60000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned char e; }; - {e=>171,c=>0,a=>1,b=>0,d=>0} 01ab0000 01ab000000000000 01ab000000000000 80ab0000 01ab0000 01ab0000 80ab000000000000 01ab0000 80ab0000 - {e=>112,c=>0,a=>0,b=>0,d=>0} 00700000 0070000000000000 0070000000000000 00700000 00700000 00700000 0070000000000000 00700000 00700000 - {e=>62,c=>0,a=>0,b=>0,d=>1} 083e0000 083e000000000000 083e000000000000 103e0000 083e0000 083e0000 103e000000000000 083e0000 103e0000 - {e=>210,c=>0,a=>0,b=>1,d=>1} 0ad20000 0ad2000000000000 0ad2000000000000 50d20000 0ad20000 0ad20000 50d2000000000000 0ad20000 50d20000 - {e=>159,c=>1,a=>0,b=>1,d=>1} 0e9f0000 0e9f000000000000 0e9f000000000000 709f0000 0e9f0000 0e9f0000 709f000000000000 0e9f0000 709f0000 = struct ulong { char a; unsigned long b:1; }; - {a=>-121,b=>1} 87010000 8701000000000000 8701000000000000 87800000 87010000 87010000 8780000000000000 87010000 87800000 - {a=>50,b=>1} 32010000 3201000000000000 3201000000000000 32800000 32010000 32010000 3280000000000000 32010000 32800000 - {a=>-89,b=>1} a7010000 a701000000000000 a701000000000000 a7800000 a7010000 a7010000 a780000000000000 a7010000 a7800000 - {a=>92,b=>0} 5c000000 5c00000000000000 5c00000000000000 5c000000 5c000000 5c000000 5c00000000000000 5c000000 5c000000 - {a=>-41,b=>0} d7000000 d700000000000000 d700000000000000 d7000000 d7000000 d7000000 d700000000000000 d7000000 d7000000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>-46,b=>1} d2030000 d203000000000000 d203000000000000 d2c00000 d2030000 d2030000 d2c0000000000000 d2030000 d2c00000 - {c=>0,a=>-85,b=>0} ab000000 ab00000000000000 ab00000000000000 ab000000 ab000000 ab000000 ab00000000000000 ab000000 ab000000 - {c=>0,a=>78,b=>0} 4e000000 4e00000000000000 4e00000000000000 4e000000 4e000000 4e000000 4e00000000000000 4e000000 4e000000 - {c=>0,a=>-50,b=>0} ce000000 ce00000000000000 ce00000000000000 ce000000 ce000000 ce000000 ce00000000000000 ce000000 ce000000 - {c=>1,a=>-57,b=>1} c7030000 c703000000000000 c703000000000000 c7c00000 c7030000 c7030000 c7c0000000000000 c7030000 c7c00000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-7,b=>0,d=>1} f9040000 f904000000000000 f904000000000000 f9200000 f9040000 f9040000 f920000000000000 f9040000 f9200000 - {c=>0,a=>69,b=>0,d=>0} 45000000 4500000000000000 4500000000000000 45000000 45000000 45000000 4500000000000000 45000000 45000000 - {c=>1,a=>78,b=>1,d=>1} 4e070000 4e07000000000000 4e07000000000000 4ee00000 4e070000 4e070000 4ee0000000000000 4e070000 4ee00000 - {c=>1,a=>19,b=>0,d=>0} 13020000 1302000000000000 1302000000000000 13400000 13020000 13020000 1340000000000000 13020000 13400000 - {c=>1,a=>-18,b=>1,d=>0} ee030000 ee03000000000000 ee03000000000000 eec00000 ee030000 ee030000 eec0000000000000 ee030000 eec00000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>0,a=>-82,b=>1,d=>1} ae0d0000 ae0d000000000000 ae0d000000000000 aeb00000 ae0d0000 ae0d0000 aeb0000000000000 ae0d0000 aeb00000 - {e=>1,c=>1,a=>125,b=>0,d=>1} 7d0e0000 7d0e000000000000 7d0e000000000000 7d700000 7d0e0000 7d0e0000 7d70000000000000 7d0e0000 7d700000 - {e=>1,c=>1,a=>-119,b=>0,d=>1} 890e0000 890e000000000000 890e000000000000 89700000 890e0000 890e0000 8970000000000000 890e0000 89700000 - {e=>1,c=>1,a=>39,b=>0,d=>1} 270e0000 270e000000000000 270e000000000000 27700000 270e0000 270e0000 2770000000000000 270e0000 27700000 - {e=>0,c=>1,a=>14,b=>0,d=>0} 0e020000 0e02000000000000 0e02000000000000 0e400000 0e020000 0e020000 0e40000000000000 0e020000 0e400000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>-3,b=>1,d=>0,f=>197} fd09c500 fd09c50000000000 fd09c50000000000 fd90c500 fd09c500 fd09c500 fd90c50000000000 fd09c500 fd90c500 - {e=>0,c=>1,a=>87,b=>0,d=>0,f=>225} 5702e100 5702e10000000000 5702e10000000000 5740e100 5702e100 5702e100 5740e10000000000 5702e100 5740e100 - {e=>0,c=>1,a=>-120,b=>1,d=>1,f=>123} 88077b00 88077b0000000000 88077b0000000000 88e07b00 88077b00 88077b00 88e07b0000000000 88077b00 88e07b00 - {e=>1,c=>0,a=>-101,b=>0,d=>0,f=>120} 9b087800 9b08780000000000 9b08780000000000 9b107800 9b087800 9b087800 9b10780000000000 9b087800 9b107800 - {e=>1,c=>1,a=>13,b=>0,d=>1,f=>245} 0d0ef500 0d0ef50000000000 0d0ef50000000000 0d70f500 0d0ef500 0d0ef500 0d70f50000000000 0d0ef500 0d70f500 = struct ulong { short a; unsigned long b:1; }; - {a=>-34,b=>1} deff0100 deff010000000000 deff010000000000 ffde8000 deff0100 deff0100 ffde800000000000 deff0100 ffde8000 - {a=>-97,b=>1} 9fff0100 9fff010000000000 9fff010000000000 ff9f8000 9fff0100 9fff0100 ff9f800000000000 9fff0100 ff9f8000 - {a=>125,b=>0} 7d000000 7d00000000000000 7d00000000000000 007d0000 7d000000 7d000000 007d000000000000 7d000000 007d0000 - {a=>-4,b=>1} fcff0100 fcff010000000000 fcff010000000000 fffc8000 fcff0100 fcff0100 fffc800000000000 fcff0100 fffc8000 - {a=>-46,b=>0} d2ff0000 d2ff000000000000 d2ff000000000000 ffd20000 d2ff0000 d2ff0000 ffd2000000000000 d2ff0000 ffd20000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; }; - {c=>0,a=>54,b=>1} 36000100 3600010000000000 3600010000000000 00368000 36000100 36000100 0036800000000000 36000100 00368000 - {c=>1,a=>25,b=>1} 19000300 1900030000000000 1900030000000000 0019c000 19000300 19000300 0019c00000000000 19000300 0019c000 - {c=>1,a=>-112,b=>1} 90ff0300 90ff030000000000 90ff030000000000 ff90c000 90ff0300 90ff0300 ff90c00000000000 90ff0300 ff90c000 - {c=>0,a=>53,b=>1} 35000100 3500010000000000 3500010000000000 00358000 35000100 35000100 0035800000000000 35000100 00358000 - {c=>0,a=>-72,b=>0} b8ff0000 b8ff000000000000 b8ff000000000000 ffb80000 b8ff0000 b8ff0000 ffb8000000000000 b8ff0000 ffb80000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-37,b=>0,d=>1} dbff0400 dbff040000000000 dbff040000000000 ffdb2000 dbff0400 dbff0400 ffdb200000000000 dbff0400 ffdb2000 - {c=>1,a=>59,b=>0,d=>1} 3b000600 3b00060000000000 3b00060000000000 003b6000 3b000600 3b000600 003b600000000000 3b000600 003b6000 - {c=>1,a=>-10,b=>1,d=>1} f6ff0700 f6ff070000000000 f6ff070000000000 fff6e000 f6ff0700 f6ff0700 fff6e00000000000 f6ff0700 fff6e000 - {c=>0,a=>-39,b=>1,d=>0} d9ff0100 d9ff010000000000 d9ff010000000000 ffd98000 d9ff0100 d9ff0100 ffd9800000000000 d9ff0100 ffd98000 - {c=>0,a=>26,b=>0,d=>1} 1a000400 1a00040000000000 1a00040000000000 001a2000 1a000400 1a000400 001a200000000000 1a000400 001a2000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>77,b=>1,d=>0} 4d000b00 4d000b0000000000 4d000b0000000000 004dd000 4d000b00 4d000b00 004dd00000000000 4d000b00 004dd000 - {e=>0,c=>0,a=>71,b=>1,d=>1} 47000500 4700050000000000 4700050000000000 0047a000 47000500 47000500 0047a00000000000 47000500 0047a000 - {e=>1,c=>0,a=>12,b=>1,d=>0} 0c000900 0c00090000000000 0c00090000000000 000c9000 0c000900 0c000900 000c900000000000 0c000900 000c9000 - {e=>1,c=>1,a=>-120,b=>1,d=>1} 88ff0f00 88ff0f0000000000 88ff0f0000000000 ff88f000 88ff0f00 88ff0f00 ff88f00000000000 88ff0f00 ff88f000 - {e=>0,c=>0,a=>-106,b=>0,d=>1} 96ff0400 96ff040000000000 96ff040000000000 ff962000 96ff0400 96ff0400 ff96200000000000 96ff0400 ff962000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>93,b=>1,d=>0,f=>203} 5d000bcb 5d000bcb00000000 5d000bcb00000000 005dd0cb 5d000bcb 5d000bcb 005dd0cb00000000 5d000bcb 005dd0cb - {e=>1,c=>1,a=>-61,b=>1,d=>0,f=>222} c3ff0bde c3ff0bde00000000 c3ff0bde00000000 ffc3d0de c3ff0bde c3ff0bde ffc3d0de00000000 c3ff0bde ffc3d0de - {e=>0,c=>1,a=>-4,b=>0,d=>0,f=>177} fcff02b1 fcff02b100000000 fcff02b100000000 fffc40b1 fcff02b1 fcff02b1 fffc40b100000000 fcff02b1 fffc40b1 - {e=>0,c=>1,a=>-34,b=>1,d=>1,f=>92} deff075c deff075c00000000 deff075c00000000 ffdee05c deff075c deff075c ffdee05c00000000 deff075c ffdee05c - {e=>0,c=>1,a=>6,b=>0,d=>1,f=>117} 06000675 0600067500000000 0600067500000000 00066075 06000675 06000675 0006607500000000 06000675 00066075 = struct ulong { int a; unsigned long b:1; }; - {a=>20,b=>1} 1400000001000000 1400000001000000 1400000001000000 0000001480000000 1400000001000000 1400000001000000 0000001480000000 1400000001000000 0000001480000000 - {a=>-70,b=>1} baffffff01000000 baffffff01000000 baffffff01000000 ffffffba80000000 baffffff01000000 baffffff01000000 ffffffba80000000 baffffff01000000 ffffffba80000000 - {a=>-124,b=>0} 84ffffff00000000 84ffffff00000000 84ffffff00000000 ffffff8400000000 84ffffff00000000 84ffffff00000000 ffffff8400000000 84ffffff00000000 ffffff8400000000 - {a=>-106,b=>0} 96ffffff00000000 96ffffff00000000 96ffffff00000000 ffffff9600000000 96ffffff00000000 96ffffff00000000 ffffff9600000000 96ffffff00000000 ffffff9600000000 - {a=>25,b=>1} 1900000001000000 1900000001000000 1900000001000000 0000001980000000 1900000001000000 1900000001000000 0000001980000000 1900000001000000 0000001980000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>42,b=>0} 2a00000002000000 2a00000002000000 2a00000002000000 0000002a40000000 2a00000002000000 2a00000002000000 0000002a40000000 2a00000002000000 0000002a40000000 - {c=>1,a=>-120,b=>1} 88ffffff03000000 88ffffff03000000 88ffffff03000000 ffffff88c0000000 88ffffff03000000 88ffffff03000000 ffffff88c0000000 88ffffff03000000 ffffff88c0000000 - {c=>1,a=>-122,b=>1} 86ffffff03000000 86ffffff03000000 86ffffff03000000 ffffff86c0000000 86ffffff03000000 86ffffff03000000 ffffff86c0000000 86ffffff03000000 ffffff86c0000000 - {c=>0,a=>-34,b=>0} deffffff00000000 deffffff00000000 deffffff00000000 ffffffde00000000 deffffff00000000 deffffff00000000 ffffffde00000000 deffffff00000000 ffffffde00000000 - {c=>0,a=>-40,b=>0} d8ffffff00000000 d8ffffff00000000 d8ffffff00000000 ffffffd800000000 d8ffffff00000000 d8ffffff00000000 ffffffd800000000 d8ffffff00000000 ffffffd800000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>44,b=>1,d=>0} 2c00000001000000 2c00000001000000 2c00000001000000 0000002c80000000 2c00000001000000 2c00000001000000 0000002c80000000 2c00000001000000 0000002c80000000 - {c=>1,a=>119,b=>1,d=>0} 7700000003000000 7700000003000000 7700000003000000 00000077c0000000 7700000003000000 7700000003000000 00000077c0000000 7700000003000000 00000077c0000000 - {c=>1,a=>30,b=>1,d=>0} 1e00000003000000 1e00000003000000 1e00000003000000 0000001ec0000000 1e00000003000000 1e00000003000000 0000001ec0000000 1e00000003000000 0000001ec0000000 - {c=>0,a=>-76,b=>0,d=>0} b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 ffffffb400000000 - {c=>1,a=>71,b=>0,d=>1} 4700000006000000 4700000006000000 4700000006000000 0000004760000000 4700000006000000 4700000006000000 0000004760000000 4700000006000000 0000004760000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>0,c=>0,a=>-96,b=>1,d=>0} a0ffffff01000000 a0ffffff01000000 a0ffffff01000000 ffffffa080000000 a0ffffff01000000 a0ffffff01000000 ffffffa080000000 a0ffffff01000000 ffffffa080000000 - {e=>0,c=>0,a=>112,b=>1,d=>0} 7000000001000000 7000000001000000 7000000001000000 0000007080000000 7000000001000000 7000000001000000 0000007080000000 7000000001000000 0000007080000000 - {e=>1,c=>0,a=>-48,b=>1,d=>0} d0ffffff09000000 d0ffffff09000000 d0ffffff09000000 ffffffd090000000 d0ffffff09000000 d0ffffff09000000 ffffffd090000000 d0ffffff09000000 ffffffd090000000 - {e=>0,c=>0,a=>101,b=>0,d=>0} 6500000000000000 6500000000000000 6500000000000000 0000006500000000 6500000000000000 6500000000000000 0000006500000000 6500000000000000 0000006500000000 - {e=>0,c=>0,a=>113,b=>1,d=>1} 7100000005000000 7100000005000000 7100000005000000 00000071a0000000 7100000005000000 7100000005000000 00000071a0000000 7100000005000000 00000071a0000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>53,b=>0,d=>1,f=>237} 350000000eed0000 350000000eed0000 350000000eed0000 0000003570ed0000 350000000eed0000 350000000eed0000 0000003570ed0000 350000000eed0000 0000003570ed0000 - {e=>1,c=>0,a=>-64,b=>1,d=>0,f=>197} c0ffffff09c50000 c0ffffff09c50000 c0ffffff09c50000 ffffffc090c50000 c0ffffff09c50000 c0ffffff09c50000 ffffffc090c50000 c0ffffff09c50000 ffffffc090c50000 - {e=>0,c=>1,a=>-88,b=>1,d=>0,f=>178} a8ffffff03b20000 a8ffffff03b20000 a8ffffff03b20000 ffffffa8c0b20000 a8ffffff03b20000 a8ffffff03b20000 ffffffa8c0b20000 a8ffffff03b20000 ffffffa8c0b20000 - {e=>1,c=>1,a=>-104,b=>0,d=>1,f=>185} 98ffffff0eb90000 98ffffff0eb90000 98ffffff0eb90000 ffffff9870b90000 98ffffff0eb90000 98ffffff0eb90000 ffffff9870b90000 98ffffff0eb90000 ffffff9870b90000 - {e=>1,c=>1,a=>121,b=>0,d=>1,f=>176} 790000000eb00000 790000000eb00000 790000000eb00000 0000007970b00000 790000000eb00000 790000000eb00000 0000007970b00000 790000000eb00000 0000007970b00000 = struct ulong { long a; unsigned long b:1; }; - {a=>123,b=>0} 7b00000000000000 7b000000000000000000000000000000 7b000000000000000000000000000000 0000007b00000000 7b00000000000000 7b00000000000000 000000000000007b0000000000000000 7b00000000000000 0000007b00000000 - {a=>-51,b=>1} cdffffff01000000 cdffffffffffffff0100000000000000 cdffffffffffffff0100000000000000 ffffffcd80000000 cdffffff01000000 cdffffff01000000 ffffffffffffffcd8000000000000000 cdffffff01000000 ffffffcd80000000 - {a=>123,b=>0} 7b00000000000000 7b000000000000000000000000000000 7b000000000000000000000000000000 0000007b00000000 7b00000000000000 7b00000000000000 000000000000007b0000000000000000 7b00000000000000 0000007b00000000 - {a=>-16,b=>1} f0ffffff01000000 f0ffffffffffffff0100000000000000 f0ffffffffffffff0100000000000000 fffffff080000000 f0ffffff01000000 f0ffffff01000000 fffffffffffffff08000000000000000 f0ffffff01000000 fffffff080000000 - {a=>-33,b=>1} dfffffff01000000 dfffffffffffffff0100000000000000 dfffffffffffffff0100000000000000 ffffffdf80000000 dfffffff01000000 dfffffff01000000 ffffffffffffffdf8000000000000000 dfffffff01000000 ffffffdf80000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>65,b=>1} 4100000003000000 41000000000000000300000000000000 41000000000000000300000000000000 00000041c0000000 4100000003000000 4100000003000000 0000000000000041c000000000000000 4100000003000000 00000041c0000000 - {c=>1,a=>108,b=>0} 6c00000002000000 6c000000000000000200000000000000 6c000000000000000200000000000000 0000006c40000000 6c00000002000000 6c00000002000000 000000000000006c4000000000000000 6c00000002000000 0000006c40000000 - {c=>1,a=>-3,b=>1} fdffffff03000000 fdffffffffffffff0300000000000000 fdffffffffffffff0300000000000000 fffffffdc0000000 fdffffff03000000 fdffffff03000000 fffffffffffffffdc000000000000000 fdffffff03000000 fffffffdc0000000 - {c=>0,a=>48,b=>1} 3000000001000000 30000000000000000100000000000000 30000000000000000100000000000000 0000003080000000 3000000001000000 3000000001000000 00000000000000308000000000000000 3000000001000000 0000003080000000 - {c=>0,a=>39,b=>0} 2700000000000000 27000000000000000000000000000000 27000000000000000000000000000000 0000002700000000 2700000000000000 2700000000000000 00000000000000270000000000000000 2700000000000000 0000002700000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-118,b=>0,d=>1} 8affffff04000000 8affffffffffffff0400000000000000 8affffffffffffff0400000000000000 ffffff8a20000000 8affffff04000000 8affffff04000000 ffffffffffffff8a2000000000000000 8affffff04000000 ffffff8a20000000 - {c=>1,a=>-68,b=>1,d=>1} bcffffff07000000 bcffffffffffffff0700000000000000 bcffffffffffffff0700000000000000 ffffffbce0000000 bcffffff07000000 bcffffff07000000 ffffffffffffffbce000000000000000 bcffffff07000000 ffffffbce0000000 - {c=>0,a=>-88,b=>1,d=>1} a8ffffff05000000 a8ffffffffffffff0500000000000000 a8ffffffffffffff0500000000000000 ffffffa8a0000000 a8ffffff05000000 a8ffffff05000000 ffffffffffffffa8a000000000000000 a8ffffff05000000 ffffffa8a0000000 - {c=>0,a=>-79,b=>0,d=>1} b1ffffff04000000 b1ffffffffffffff0400000000000000 b1ffffffffffffff0400000000000000 ffffffb120000000 b1ffffff04000000 b1ffffff04000000 ffffffffffffffb12000000000000000 b1ffffff04000000 ffffffb120000000 - {c=>1,a=>-62,b=>0,d=>0} c2ffffff02000000 c2ffffffffffffff0200000000000000 c2ffffffffffffff0200000000000000 ffffffc240000000 c2ffffff02000000 c2ffffff02000000 ffffffffffffffc24000000000000000 c2ffffff02000000 ffffffc240000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-102,b=>1,d=>0} 9affffff0b000000 9affffffffffffff0b00000000000000 9affffffffffffff0b00000000000000 ffffff9ad0000000 9affffff0b000000 9affffff0b000000 ffffffffffffff9ad000000000000000 9affffff0b000000 ffffff9ad0000000 - {e=>1,c=>0,a=>-99,b=>1,d=>0} 9dffffff09000000 9dffffffffffffff0900000000000000 9dffffffffffffff0900000000000000 ffffff9d90000000 9dffffff09000000 9dffffff09000000 ffffffffffffff9d9000000000000000 9dffffff09000000 ffffff9d90000000 - {e=>0,c=>0,a=>3,b=>0,d=>0} 0300000000000000 03000000000000000000000000000000 03000000000000000000000000000000 0000000300000000 0300000000000000 0300000000000000 00000000000000030000000000000000 0300000000000000 0000000300000000 - {e=>1,c=>0,a=>6,b=>1,d=>0} 0600000009000000 06000000000000000900000000000000 06000000000000000900000000000000 0000000690000000 0600000009000000 0600000009000000 00000000000000069000000000000000 0600000009000000 0000000690000000 - {e=>0,c=>1,a=>105,b=>0,d=>0} 6900000002000000 69000000000000000200000000000000 69000000000000000200000000000000 0000006940000000 6900000002000000 6900000002000000 00000000000000694000000000000000 6900000002000000 0000006940000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>73,b=>1,d=>1,f=>147} 490000000d930000 49000000000000000d93000000000000 49000000000000000d93000000000000 00000049b0930000 490000000d930000 490000000d930000 0000000000000049b093000000000000 490000000d930000 00000049b0930000 - {e=>0,c=>1,a=>9,b=>0,d=>0,f=>160} 0900000002a00000 090000000000000002a0000000000000 090000000000000002a0000000000000 0000000940a00000 0900000002a00000 0900000002a00000 000000000000000940a0000000000000 0900000002a00000 0000000940a00000 - {e=>0,c=>1,a=>78,b=>1,d=>1,f=>51} 4e00000007330000 4e000000000000000733000000000000 4e000000000000000733000000000000 0000004ee0330000 4e00000007330000 4e00000007330000 000000000000004ee033000000000000 4e00000007330000 0000004ee0330000 - {e=>1,c=>0,a=>96,b=>1,d=>1,f=>245} 600000000df50000 60000000000000000df5000000000000 60000000000000000df5000000000000 00000060b0f50000 600000000df50000 600000000df50000 0000000000000060b0f5000000000000 600000000df50000 00000060b0f50000 - {e=>0,c=>0,a=>101,b=>1,d=>1,f=>35} 6500000005230000 65000000000000000523000000000000 65000000000000000523000000000000 00000065a0230000 6500000005230000 6500000005230000 0000000000000065a023000000000000 6500000005230000 00000065a0230000 = struct umixed { unsigned char a:1; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>1} 01 01 01 80 01000000 01 80 01 80 = struct umixed { unsigned char a:1; unsigned short b:1; }; - {a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>0,b=>1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 - {a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>0,b=>1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 - {a=>1,b=>0} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; }; - {c=>0,a=>1,b=>1} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {c=>1,a=>0,b=>0} 04000000 04000000 04000000 20000000 04000000 04000000 20000000 04000000 20000000 - {c=>1,a=>0,b=>1} 06000000 06000000 06000000 60000000 06000000 06000000 60000000 06000000 60000000 - {c=>0,a=>1,b=>1} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {c=>0,a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; unsigned long d:1; }; - {c=>1,a=>1,b=>0,d=>1} 0d000000 0d00000000000000 0d00000000000000 b0000000 0d000000 0d000000 b000000000000000 0d000000 b0000000 - {c=>0,a=>0,b=>0,d=>1} 08000000 0800000000000000 0800000000000000 10000000 08000000 08000000 1000000000000000 08000000 10000000 - {c=>1,a=>1,b=>0,d=>1} 0d000000 0d00000000000000 0d00000000000000 b0000000 0d000000 0d000000 b000000000000000 0d000000 b0000000 - {c=>0,a=>0,b=>1,d=>0} 02000000 0200000000000000 0200000000000000 40000000 02000000 02000000 4000000000000000 02000000 40000000 - {c=>0,a=>0,b=>1,d=>1} 0a000000 0a00000000000000 0a00000000000000 50000000 0a000000 0a000000 5000000000000000 0a000000 50000000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; unsigned long d:1; unsigned char e; }; - {e=>216,c=>0,a=>1,b=>0,d=>1} 09d80000 09d8000000000000 09d8000000000000 90d80000 09d80000 09d80000 90d8000000000000 09d80000 90d80000 - {e=>111,c=>0,a=>0,b=>1,d=>0} 026f0000 026f000000000000 026f000000000000 406f0000 026f0000 026f0000 406f000000000000 026f0000 406f0000 - {e=>156,c=>1,a=>0,b=>0,d=>0} 049c0000 049c000000000000 049c000000000000 209c0000 049c0000 049c0000 209c000000000000 049c0000 209c0000 - {e=>93,c=>0,a=>0,b=>1,d=>0} 025d0000 025d000000000000 025d000000000000 405d0000 025d0000 025d0000 405d000000000000 025d0000 405d0000 - {e=>187,c=>0,a=>0,b=>1,d=>0} 02bb0000 02bb000000000000 02bb000000000000 40bb0000 02bb0000 02bb0000 40bb000000000000 02bb0000 40bb0000 = struct umixed { char a; unsigned char b:1; }; - {a=>122,b=>0} 7a00 7a00 7a00 7a00 7a000000 7a00 7a00 7a00 7a00 - {a=>102,b=>0} 6600 6600 6600 6600 66000000 6600 6600 6600 6600 - {a=>105,b=>0} 6900 6900 6900 6900 69000000 6900 6900 6900 6900 - {a=>6,b=>1} 0601 0601 0601 0680 06010000 0601 0680 0601 0680 - {a=>110,b=>0} 6e00 6e00 6e00 6e00 6e000000 6e00 6e00 6e00 6e00 = struct umixed { char a; unsigned char b:1; unsigned short c:1; }; - {c=>0,a=>-64,b=>0} c000 c000 c000 c000 c0000000 c000 c000 c000 c000 - {c=>0,a=>92,b=>1} 5c01 5c01 5c01 5c80 5c010000 5c01 5c80 5c01 5c80 - {c=>1,a=>-60,b=>1} c403 c403 c403 c4c0 c4030000 c403 c4c0 c403 c4c0 - {c=>0,a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {c=>0,a=>-90,b=>1} a601 a601 a601 a680 a6010000 a601 a680 a601 a680 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>43,b=>0,d=>1} 2b060000 2b060000 2b060000 2b600000 2b060000 2b060000 2b600000 2b060000 2b600000 - {c=>0,a=>65,b=>1,d=>1} 41050000 41050000 41050000 41a00000 41050000 41050000 41a00000 41050000 41a00000 - {c=>1,a=>-28,b=>0,d=>1} e4060000 e4060000 e4060000 e4600000 e4060000 e4060000 e4600000 e4060000 e4600000 - {c=>1,a=>-67,b=>1,d=>0} bd030000 bd030000 bd030000 bdc00000 bd030000 bd030000 bdc00000 bd030000 bdc00000 - {c=>1,a=>-56,b=>0,d=>1} c8060000 c8060000 c8060000 c8600000 c8060000 c8060000 c8600000 c8060000 c8600000 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-36,b=>0,d=>0} dc0a0000 dc0a000000000000 dc0a000000000000 dc500000 dc0a0000 dc0a0000 dc50000000000000 dc0a0000 dc500000 - {e=>1,c=>1,a=>-40,b=>1,d=>1} d80f0000 d80f000000000000 d80f000000000000 d8f00000 d80f0000 d80f0000 d8f0000000000000 d80f0000 d8f00000 - {e=>0,c=>1,a=>56,b=>0,d=>1} 38060000 3806000000000000 3806000000000000 38600000 38060000 38060000 3860000000000000 38060000 38600000 - {e=>0,c=>1,a=>18,b=>1,d=>0} 12030000 1203000000000000 1203000000000000 12c00000 12030000 12030000 12c0000000000000 12030000 12c00000 - {e=>1,c=>0,a=>-68,b=>1,d=>0} bc090000 bc09000000000000 bc09000000000000 bc900000 bc090000 bc090000 bc90000000000000 bc090000 bc900000 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>77,b=>0,d=>0,f=>112} 4d0a7000 4d0a700000000000 4d0a700000000000 4d507000 4d0a7000 4d0a7000 4d50700000000000 4d0a7000 4d507000 - {e=>1,c=>0,a=>115,b=>0,d=>1,f=>9} 730c0900 730c090000000000 730c090000000000 73300900 730c0900 730c0900 7330090000000000 730c0900 73300900 - {e=>0,c=>0,a=>-25,b=>0,d=>0,f=>91} e7005b00 e7005b0000000000 e7005b0000000000 e7005b00 e7005b00 e7005b00 e7005b0000000000 e7005b00 e7005b00 - {e=>0,c=>0,a=>-68,b=>1,d=>0,f=>5} bc010500 bc01050000000000 bc01050000000000 bc800500 bc010500 bc010500 bc80050000000000 bc010500 bc800500 - {e=>0,c=>1,a=>86,b=>0,d=>0,f=>30} 56021e00 56021e0000000000 56021e0000000000 56401e00 56021e00 56021e00 56401e0000000000 56021e00 56401e00 = struct umixed { short a; unsigned char b:1; }; - {a=>49,b=>0} 31000000 31000000 31000000 00310000 31000000 31000000 00310000 31000000 00310000 - {a=>84,b=>1} 54000100 54000100 54000100 00548000 54000100 54000100 00548000 54000100 00548000 - {a=>-73,b=>0} b7ff0000 b7ff0000 b7ff0000 ffb70000 b7ff0000 b7ff0000 ffb70000 b7ff0000 ffb70000 - {a=>92,b=>0} 5c000000 5c000000 5c000000 005c0000 5c000000 5c000000 005c0000 5c000000 005c0000 - {a=>76,b=>0} 4c000000 4c000000 4c000000 004c0000 4c000000 4c000000 004c0000 4c000000 004c0000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; }; - {c=>1,a=>-69,b=>0} bbff0200 bbff0200 bbff0200 ffbb4000 bbff0200 bbff0200 ffbb4000 bbff0200 ffbb4000 - {c=>1,a=>103,b=>0} 67000200 67000200 67000200 00674000 67000200 67000200 00674000 67000200 00674000 - {c=>0,a=>-68,b=>0} bcff0000 bcff0000 bcff0000 ffbc0000 bcff0000 bcff0000 ffbc0000 bcff0000 ffbc0000 - {c=>0,a=>-31,b=>0} e1ff0000 e1ff0000 e1ff0000 ffe10000 e1ff0000 e1ff0000 ffe10000 e1ff0000 ffe10000 - {c=>0,a=>87,b=>1} 57000100 57000100 57000100 00578000 57000100 57000100 00578000 57000100 00578000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>0,a=>-26,b=>1,d=>0} e6ff0100 e6ff0100 e6ff0100 ffe68000 e6ff0100 e6ff0100 ffe68000 e6ff0100 ffe68000 - {c=>1,a=>41,b=>0,d=>1} 29000600 29000600 29000600 00296000 29000600 29000600 00296000 29000600 00296000 - {c=>0,a=>47,b=>1,d=>1} 2f000500 2f000500 2f000500 002fa000 2f000500 2f000500 002fa000 2f000500 002fa000 - {c=>0,a=>-115,b=>0,d=>0} 8dff0000 8dff0000 8dff0000 ff8d0000 8dff0000 8dff0000 ff8d0000 8dff0000 ff8d0000 - {c=>1,a=>16,b=>1,d=>0} 10000300 10000300 10000300 0010c000 10000300 10000300 0010c000 10000300 0010c000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-24,b=>0,d=>0} e8ff0a00 e8ff0a0000000000 e8ff0a0000000000 ffe85000 e8ff0a00 e8ff0a00 ffe8500000000000 e8ff0a00 ffe85000 - {e=>1,c=>1,a=>-4,b=>1,d=>0} fcff0b00 fcff0b0000000000 fcff0b0000000000 fffcd000 fcff0b00 fcff0b00 fffcd00000000000 fcff0b00 fffcd000 - {e=>0,c=>0,a=>-80,b=>1,d=>0} b0ff0100 b0ff010000000000 b0ff010000000000 ffb08000 b0ff0100 b0ff0100 ffb0800000000000 b0ff0100 ffb08000 - {e=>0,c=>0,a=>18,b=>1,d=>0} 12000100 1200010000000000 1200010000000000 00128000 12000100 12000100 0012800000000000 12000100 00128000 - {e=>0,c=>0,a=>-46,b=>1,d=>0} d2ff0100 d2ff010000000000 d2ff010000000000 ffd28000 d2ff0100 d2ff0100 ffd2800000000000 d2ff0100 ffd28000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>5,b=>0,d=>0,f=>113} 05000a71 05000a7100000000 05000a7100000000 00055071 05000a71 05000a71 0005507100000000 05000a71 00055071 - {e=>0,c=>0,a=>67,b=>1,d=>1,f=>126} 4300057e 4300057e00000000 4300057e00000000 0043a07e 4300057e 4300057e 0043a07e00000000 4300057e 0043a07e - {e=>0,c=>0,a=>49,b=>0,d=>1,f=>165} 310004a5 310004a500000000 310004a500000000 003120a5 310004a5 310004a5 003120a500000000 310004a5 003120a5 - {e=>1,c=>0,a=>0,b=>0,d=>1,f=>40} 00000c28 00000c2800000000 00000c2800000000 00003028 00000c28 00000c28 0000302800000000 00000c28 00003028 - {e=>0,c=>1,a=>66,b=>0,d=>1,f=>177} 420006b1 420006b100000000 420006b100000000 004260b1 420006b1 420006b1 004260b100000000 420006b1 004260b1 = struct umixed { int a; unsigned char b:1; }; - {a=>-94,b=>0} a2ffffff00000000 a2ffffff00000000 a2ffffff00000000 ffffffa200000000 a2ffffff00000000 a2ffffff00000000 ffffffa200000000 a2ffffff00000000 ffffffa200000000 - {a=>-14,b=>0} f2ffffff00000000 f2ffffff00000000 f2ffffff00000000 fffffff200000000 f2ffffff00000000 f2ffffff00000000 fffffff200000000 f2ffffff00000000 fffffff200000000 - {a=>-40,b=>0} d8ffffff00000000 d8ffffff00000000 d8ffffff00000000 ffffffd800000000 d8ffffff00000000 d8ffffff00000000 ffffffd800000000 d8ffffff00000000 ffffffd800000000 - {a=>89,b=>0} 5900000000000000 5900000000000000 5900000000000000 0000005900000000 5900000000000000 5900000000000000 0000005900000000 5900000000000000 0000005900000000 - {a=>-2,b=>1} feffffff01000000 feffffff01000000 feffffff01000000 fffffffe80000000 feffffff01000000 feffffff01000000 fffffffe80000000 feffffff01000000 fffffffe80000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; }; - {c=>0,a=>114,b=>1} 7200000001000000 7200000001000000 7200000001000000 0000007280000000 7200000001000000 7200000001000000 0000007280000000 7200000001000000 0000007280000000 - {c=>1,a=>-68,b=>1} bcffffff03000000 bcffffff03000000 bcffffff03000000 ffffffbcc0000000 bcffffff03000000 bcffffff03000000 ffffffbcc0000000 bcffffff03000000 ffffffbcc0000000 - {c=>0,a=>60,b=>1} 3c00000001000000 3c00000001000000 3c00000001000000 0000003c80000000 3c00000001000000 3c00000001000000 0000003c80000000 3c00000001000000 0000003c80000000 - {c=>0,a=>-105,b=>1} 97ffffff01000000 97ffffff01000000 97ffffff01000000 ffffff9780000000 97ffffff01000000 97ffffff01000000 ffffff9780000000 97ffffff01000000 ffffff9780000000 - {c=>1,a=>-90,b=>0} a6ffffff02000000 a6ffffff02000000 a6ffffff02000000 ffffffa640000000 a6ffffff02000000 a6ffffff02000000 ffffffa640000000 a6ffffff02000000 ffffffa640000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>44,b=>0,d=>1} 2c00000006000000 2c00000006000000 2c00000006000000 0000002c60000000 2c00000006000000 2c00000006000000 0000002c60000000 2c00000006000000 0000002c60000000 - {c=>1,a=>-90,b=>0,d=>0} a6ffffff02000000 a6ffffff02000000 a6ffffff02000000 ffffffa640000000 a6ffffff02000000 a6ffffff02000000 ffffffa640000000 a6ffffff02000000 ffffffa640000000 - {c=>1,a=>-11,b=>0,d=>0} f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 fffffff540000000 f5ffffff02000000 f5ffffff02000000 fffffff540000000 f5ffffff02000000 fffffff540000000 - {c=>1,a=>18,b=>1,d=>1} 1200000007000000 1200000007000000 1200000007000000 00000012e0000000 1200000007000000 1200000007000000 00000012e0000000 1200000007000000 00000012e0000000 - {c=>0,a=>-25,b=>0,d=>0} e7ffffff00000000 e7ffffff00000000 e7ffffff00000000 ffffffe700000000 e7ffffff00000000 e7ffffff00000000 ffffffe700000000 e7ffffff00000000 ffffffe700000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>0,c=>0,a=>-47,b=>1,d=>0} d1ffffff01000000 d1ffffff01000000 d1ffffff01000000 ffffffd180000000 d1ffffff01000000 d1ffffff01000000 ffffffd180000000 d1ffffff01000000 ffffffd180000000 - {e=>0,c=>1,a=>-12,b=>0,d=>1} f4ffffff06000000 f4ffffff06000000 f4ffffff06000000 fffffff460000000 f4ffffff06000000 f4ffffff06000000 fffffff460000000 f4ffffff06000000 fffffff460000000 - {e=>1,c=>1,a=>-74,b=>1,d=>0} b6ffffff0b000000 b6ffffff0b000000 b6ffffff0b000000 ffffffb6d0000000 b6ffffff0b000000 b6ffffff0b000000 ffffffb6d0000000 b6ffffff0b000000 ffffffb6d0000000 - {e=>1,c=>1,a=>-49,b=>1,d=>0} cfffffff0b000000 cfffffff0b000000 cfffffff0b000000 ffffffcfd0000000 cfffffff0b000000 cfffffff0b000000 ffffffcfd0000000 cfffffff0b000000 ffffffcfd0000000 - {e=>1,c=>1,a=>61,b=>1,d=>0} 3d0000000b000000 3d0000000b000000 3d0000000b000000 0000003dd0000000 3d0000000b000000 3d0000000b000000 0000003dd0000000 3d0000000b000000 0000003dd0000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>-19,b=>0,d=>0,f=>112} edffffff0a700000 edffffff0a700000 edffffff0a700000 ffffffed50700000 edffffff0a700000 edffffff0a700000 ffffffed50700000 edffffff0a700000 ffffffed50700000 - {e=>1,c=>0,a=>-74,b=>1,d=>0,f=>149} b6ffffff09950000 b6ffffff09950000 b6ffffff09950000 ffffffb690950000 b6ffffff09950000 b6ffffff09950000 ffffffb690950000 b6ffffff09950000 ffffffb690950000 - {e=>0,c=>1,a=>-124,b=>1,d=>1,f=>78} 84ffffff074e0000 84ffffff074e0000 84ffffff074e0000 ffffff84e04e0000 84ffffff074e0000 84ffffff074e0000 ffffff84e04e0000 84ffffff074e0000 ffffff84e04e0000 - {e=>1,c=>0,a=>-25,b=>0,d=>0,f=>222} e7ffffff08de0000 e7ffffff08de0000 e7ffffff08de0000 ffffffe710de0000 e7ffffff08de0000 e7ffffff08de0000 ffffffe710de0000 e7ffffff08de0000 ffffffe710de0000 - {e=>0,c=>0,a=>127,b=>1,d=>0,f=>81} 7f00000001510000 7f00000001510000 7f00000001510000 0000007f80510000 7f00000001510000 7f00000001510000 0000007f80510000 7f00000001510000 0000007f80510000 = struct umixed { long a; unsigned char b:1; }; - {a=>127,b=>0} 7f00000000000000 7f000000000000000000000000000000 7f000000000000000000000000000000 0000007f00000000 7f00000000000000 7f00000000000000 000000000000007f0000000000000000 7f00000000000000 0000007f00000000 - {a=>66,b=>1} 4200000001000000 42000000000000000100000000000000 42000000000000000100000000000000 0000004280000000 4200000001000000 4200000001000000 00000000000000428000000000000000 4200000001000000 0000004280000000 - {a=>13,b=>1} 0d00000001000000 0d000000000000000100000000000000 0d000000000000000100000000000000 0000000d80000000 0d00000001000000 0d00000001000000 000000000000000d8000000000000000 0d00000001000000 0000000d80000000 - {a=>114,b=>0} 7200000000000000 72000000000000000000000000000000 72000000000000000000000000000000 0000007200000000 7200000000000000 7200000000000000 00000000000000720000000000000000 7200000000000000 0000007200000000 - {a=>-73,b=>1} b7ffffff01000000 b7ffffffffffffff0100000000000000 b7ffffffffffffff0100000000000000 ffffffb780000000 b7ffffff01000000 b7ffffff01000000 ffffffffffffffb78000000000000000 b7ffffff01000000 ffffffb780000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; }; - {c=>1,a=>105,b=>0} 6900000002000000 69000000000000000200000000000000 69000000000000000200000000000000 0000006940000000 6900000002000000 6900000002000000 00000000000000694000000000000000 6900000002000000 0000006940000000 - {c=>1,a=>-8,b=>0} f8ffffff02000000 f8ffffffffffffff0200000000000000 f8ffffffffffffff0200000000000000 fffffff840000000 f8ffffff02000000 f8ffffff02000000 fffffffffffffff84000000000000000 f8ffffff02000000 fffffff840000000 - {c=>0,a=>5,b=>0} 0500000000000000 05000000000000000000000000000000 05000000000000000000000000000000 0000000500000000 0500000000000000 0500000000000000 00000000000000050000000000000000 0500000000000000 0000000500000000 - {c=>1,a=>-123,b=>0} 85ffffff02000000 85ffffffffffffff0200000000000000 85ffffffffffffff0200000000000000 ffffff8540000000 85ffffff02000000 85ffffff02000000 ffffffffffffff854000000000000000 85ffffff02000000 ffffff8540000000 - {c=>1,a=>103,b=>1} 6700000003000000 67000000000000000300000000000000 67000000000000000300000000000000 00000067c0000000 6700000003000000 6700000003000000 0000000000000067c000000000000000 6700000003000000 00000067c0000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>-17,b=>1,d=>0} efffffff03000000 efffffffffffffff0300000000000000 efffffffffffffff0300000000000000 ffffffefc0000000 efffffff03000000 efffffff03000000 ffffffffffffffefc000000000000000 efffffff03000000 ffffffefc0000000 - {c=>1,a=>-127,b=>1,d=>0} 81ffffff03000000 81ffffffffffffff0300000000000000 81ffffffffffffff0300000000000000 ffffff81c0000000 81ffffff03000000 81ffffff03000000 ffffffffffffff81c000000000000000 81ffffff03000000 ffffff81c0000000 - {c=>1,a=>102,b=>1,d=>1} 6600000007000000 66000000000000000700000000000000 66000000000000000700000000000000 00000066e0000000 6600000007000000 6600000007000000 0000000000000066e000000000000000 6600000007000000 00000066e0000000 - {c=>1,a=>-88,b=>1,d=>1} a8ffffff07000000 a8ffffffffffffff0700000000000000 a8ffffffffffffff0700000000000000 ffffffa8e0000000 a8ffffff07000000 a8ffffff07000000 ffffffffffffffa8e000000000000000 a8ffffff07000000 ffffffa8e0000000 - {c=>1,a=>15,b=>1,d=>1} 0f00000007000000 0f000000000000000700000000000000 0f000000000000000700000000000000 0000000fe0000000 0f00000007000000 0f00000007000000 000000000000000fe000000000000000 0f00000007000000 0000000fe0000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>118,b=>1,d=>1} 760000000f000000 76000000000000000f00000000000000 76000000000000000f00000000000000 00000076f0000000 760000000f000000 760000000f000000 0000000000000076f000000000000000 760000000f000000 00000076f0000000 - {e=>1,c=>0,a=>-90,b=>0,d=>1} a6ffffff0c000000 a6ffffffffffffff0c00000000000000 a6ffffffffffffff0c00000000000000 ffffffa630000000 a6ffffff0c000000 a6ffffff0c000000 ffffffffffffffa63000000000000000 a6ffffff0c000000 ffffffa630000000 - {e=>0,c=>0,a=>103,b=>0,d=>0} 6700000000000000 67000000000000000000000000000000 67000000000000000000000000000000 0000006700000000 6700000000000000 6700000000000000 00000000000000670000000000000000 6700000000000000 0000006700000000 - {e=>0,c=>1,a=>-84,b=>0,d=>1} acffffff06000000 acffffffffffffff0600000000000000 acffffffffffffff0600000000000000 ffffffac60000000 acffffff06000000 acffffff06000000 ffffffffffffffac6000000000000000 acffffff06000000 ffffffac60000000 - {e=>1,c=>1,a=>92,b=>0,d=>0} 5c0000000a000000 5c000000000000000a00000000000000 5c000000000000000a00000000000000 0000005c50000000 5c0000000a000000 5c0000000a000000 000000000000005c5000000000000000 5c0000000a000000 0000005c50000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>51,b=>0,d=>0,f=>187} 3300000008bb0000 330000000000000008bb000000000000 330000000000000008bb000000000000 0000003310bb0000 3300000008bb0000 3300000008bb0000 000000000000003310bb000000000000 3300000008bb0000 0000003310bb0000 - {e=>0,c=>1,a=>-115,b=>1,d=>1,f=>46} 8dffffff072e0000 8dffffffffffffff072e000000000000 8dffffffffffffff072e000000000000 ffffff8de02e0000 8dffffff072e0000 8dffffff072e0000 ffffffffffffff8de02e000000000000 8dffffff072e0000 ffffff8de02e0000 - {e=>1,c=>0,a=>105,b=>0,d=>0,f=>59} 69000000083b0000 6900000000000000083b000000000000 6900000000000000083b000000000000 00000069103b0000 69000000083b0000 69000000083b0000 0000000000000069103b000000000000 69000000083b0000 00000069103b0000 - {e=>1,c=>1,a=>-128,b=>0,d=>1,f=>86} 80ffffff0e560000 80ffffffffffffff0e56000000000000 80ffffffffffffff0e56000000000000 ffffff8070560000 80ffffff0e560000 80ffffff0e560000 ffffffffffffff807056000000000000 80ffffff0e560000 ffffff8070560000 - {e=>1,c=>1,a=>24,b=>1,d=>1,f=>117} 180000000f750000 18000000000000000f75000000000000 18000000000000000f75000000000000 00000018f0750000 180000000f750000 180000000f750000 0000000000000018f075000000000000 180000000f750000 00000018f0750000 = struct smixed { signed char a:1; }; - {a=>-1} 01 01 01 80 01000000 01 80 01 80 - {a=>-1} 01 01 01 80 01000000 01 80 01 80 - {a=>-1} 01 01 01 80 01000000 01 80 01 80 - {a=>-1} 01 01 01 80 01000000 01 80 01 80 - {a=>-1} 01 01 01 80 01000000 01 80 01 80 = struct smixed { signed char a:1; signed short b:1; }; - {a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>-1,b=>0} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 - {a=>0,b=>-1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 - {a=>0,b=>-1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 - {a=>0,b=>-1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 = struct smixed { signed char a:1; signed short b:1; signed int c:1; }; - {c=>0,a=>0,b=>-1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {c=>-1,a=>-1,b=>0} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {c=>0,a=>0,b=>-1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {c=>-1,a=>0,b=>0} 04000000 04000000 04000000 20000000 04000000 04000000 20000000 04000000 20000000 - {c=>0,a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct smixed { signed char a:1; signed short b:1; signed int c:1; signed long d:1; }; - {c=>-1,a=>-1,b=>-1,d=>-1} 0f000000 0f00000000000000 0f00000000000000 f0000000 0f000000 0f000000 f000000000000000 0f000000 f0000000 - {c=>0,a=>-1,b=>0,d=>0} 01000000 0100000000000000 0100000000000000 80000000 01000000 01000000 8000000000000000 01000000 80000000 - {c=>-1,a=>0,b=>-1,d=>-1} 0e000000 0e00000000000000 0e00000000000000 70000000 0e000000 0e000000 7000000000000000 0e000000 70000000 - {c=>-1,a=>-1,b=>0,d=>0} 05000000 0500000000000000 0500000000000000 a0000000 05000000 05000000 a000000000000000 05000000 a0000000 - {c=>0,a=>-1,b=>0,d=>-1} 09000000 0900000000000000 0900000000000000 90000000 09000000 09000000 9000000000000000 09000000 90000000 = struct smixed { signed char a:1; signed short b:1; signed int c:1; signed long d:1; signed int e; }; - {e=>-8,c=>0,a=>-1,b=>0,d=>-1} 09000000f8ffffff 09000000f8ffffff 09000000f8ffffff 90000000fffffff8 09000000f8ffffff 09000000f8ffffff 90000000fffffff8 09000000f8ffffff 90000000fffffff8 - {e=>93,c=>-1,a=>0,b=>-1,d=>0} 060000005d000000 060000005d000000 060000005d000000 600000000000005d 060000005d000000 060000005d000000 600000000000005d 060000005d000000 600000000000005d - {e=>98,c=>-1,a=>-1,b=>-1,d=>-1} 0f00000062000000 0f00000062000000 0f00000062000000 f000000000000062 0f00000062000000 0f00000062000000 f000000000000062 0f00000062000000 f000000000000062 - {e=>-79,c=>0,a=>0,b=>-1,d=>-1} 0a000000b1ffffff 0a000000b1ffffff 0a000000b1ffffff 50000000ffffffb1 0a000000b1ffffff 0a000000b1ffffff 50000000ffffffb1 0a000000b1ffffff 50000000ffffffb1 - {e=>-60,c=>-1,a=>0,b=>0,d=>-1} 0c000000c4ffffff 0c000000c4ffffff 0c000000c4ffffff 30000000ffffffc4 0c000000c4ffffff 0c000000c4ffffff 30000000ffffffc4 0c000000c4ffffff 30000000ffffffc4 = struct smixed { char a; signed char b:1; }; - {a=>28,b=>0} 1c00 1c00 1c00 1c00 1c000000 1c00 1c00 1c00 1c00 - {a=>-89,b=>-1} a701 a701 a701 a780 a7010000 a701 a780 a701 a780 - {a=>52,b=>-1} 3401 3401 3401 3480 34010000 3401 3480 3401 3480 - {a=>91,b=>0} 5b00 5b00 5b00 5b00 5b000000 5b00 5b00 5b00 5b00 - {a=>-106,b=>0} 9600 9600 9600 9600 96000000 9600 9600 9600 9600 = struct smixed { char a; signed char b:1; signed short c:1; }; - {c=>-1,a=>-38,b=>0} da02 da02 da02 da40 da020000 da02 da40 da02 da40 - {c=>0,a=>-57,b=>-1} c701 c701 c701 c780 c7010000 c701 c780 c701 c780 - {c=>-1,a=>-94,b=>-1} a203 a203 a203 a2c0 a2030000 a203 a2c0 a203 a2c0 - {c=>-1,a=>107,b=>-1} 6b03 6b03 6b03 6bc0 6b030000 6b03 6bc0 6b03 6bc0 - {c=>0,a=>-95,b=>0} a100 a100 a100 a100 a1000000 a100 a100 a100 a100 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>35,b=>-1,d=>0} 23010000 23010000 23010000 23800000 23010000 23010000 23800000 23010000 23800000 - {c=>-1,a=>-97,b=>-1,d=>0} 9f030000 9f030000 9f030000 9fc00000 9f030000 9f030000 9fc00000 9f030000 9fc00000 - {c=>0,a=>79,b=>-1,d=>-1} 4f050000 4f050000 4f050000 4fa00000 4f050000 4f050000 4fa00000 4f050000 4fa00000 - {c=>0,a=>-2,b=>0,d=>-1} fe040000 fe040000 fe040000 fe200000 fe040000 fe040000 fe200000 fe040000 fe200000 - {c=>-1,a=>52,b=>-1,d=>0} 34030000 34030000 34030000 34c00000 34030000 34030000 34c00000 34030000 34c00000 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>0,c=>0,a=>63,b=>-1,d=>-1} 3f050000 3f05000000000000 3f05000000000000 3fa00000 3f050000 3f050000 3fa0000000000000 3f050000 3fa00000 - {e=>-1,c=>0,a=>105,b=>0,d=>-1} 690c0000 690c000000000000 690c000000000000 69300000 690c0000 690c0000 6930000000000000 690c0000 69300000 - {e=>0,c=>-1,a=>84,b=>0,d=>-1} 54060000 5406000000000000 5406000000000000 54600000 54060000 54060000 5460000000000000 54060000 54600000 - {e=>-1,c=>0,a=>40,b=>-1,d=>-1} 280d0000 280d000000000000 280d000000000000 28b00000 280d0000 280d0000 28b0000000000000 280d0000 28b00000 - {e=>0,c=>0,a=>114,b=>-1,d=>0} 72010000 7201000000000000 7201000000000000 72800000 72010000 72010000 7280000000000000 72010000 72800000 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>-50,b=>-1,d=>-1,f=>37} ce0f000025000000 ce0f000025000000 ce0f000025000000 cef0000000000025 ce0f000025000000 ce0f000025000000 cef0000000000025 ce0f000025000000 cef0000000000025 - {e=>-1,c=>-1,a=>-111,b=>-1,d=>-1,f=>-13} 910f0000f3ffffff 910f0000f3ffffff 910f0000f3ffffff 91f00000fffffff3 910f0000f3ffffff 910f0000f3ffffff 91f00000fffffff3 910f0000f3ffffff 91f00000fffffff3 - {e=>0,c=>0,a=>-7,b=>0,d=>-1,f=>-107} f904000095ffffff f904000095ffffff f904000095ffffff f9200000ffffff95 f904000095ffffff f904000095ffffff f9200000ffffff95 f904000095ffffff f9200000ffffff95 - {e=>0,c=>-1,a=>8,b=>0,d=>-1,f=>-10} 08060000f6ffffff 08060000f6ffffff 08060000f6ffffff 08600000fffffff6 08060000f6ffffff 08060000f6ffffff 08600000fffffff6 08060000f6ffffff 08600000fffffff6 - {e=>-1,c=>-1,a=>-89,b=>0,d=>-1,f=>127} a70e00007f000000 a70e00007f000000 a70e00007f000000 a77000000000007f a70e00007f000000 a70e00007f000000 a77000000000007f a70e00007f000000 a77000000000007f = struct smixed { short a; signed char b:1; }; - {a=>-94,b=>-1} a2ff0100 a2ff0100 a2ff0100 ffa28000 a2ff0100 a2ff0100 ffa28000 a2ff0100 ffa28000 - {a=>19,b=>-1} 13000100 13000100 13000100 00138000 13000100 13000100 00138000 13000100 00138000 - {a=>-68,b=>-1} bcff0100 bcff0100 bcff0100 ffbc8000 bcff0100 bcff0100 ffbc8000 bcff0100 ffbc8000 - {a=>-102,b=>-1} 9aff0100 9aff0100 9aff0100 ff9a8000 9aff0100 9aff0100 ff9a8000 9aff0100 ff9a8000 - {a=>-111,b=>-1} 91ff0100 91ff0100 91ff0100 ff918000 91ff0100 91ff0100 ff918000 91ff0100 ff918000 = struct smixed { short a; signed char b:1; signed short c:1; }; - {c=>-1,a=>41,b=>0} 29000200 29000200 29000200 00294000 29000200 29000200 00294000 29000200 00294000 - {c=>-1,a=>99,b=>0} 63000200 63000200 63000200 00634000 63000200 63000200 00634000 63000200 00634000 - {c=>-1,a=>-58,b=>0} c6ff0200 c6ff0200 c6ff0200 ffc64000 c6ff0200 c6ff0200 ffc64000 c6ff0200 ffc64000 - {c=>-1,a=>28,b=>0} 1c000200 1c000200 1c000200 001c4000 1c000200 1c000200 001c4000 1c000200 001c4000 - {c=>-1,a=>-117,b=>0} 8bff0200 8bff0200 8bff0200 ff8b4000 8bff0200 8bff0200 ff8b4000 8bff0200 ff8b4000 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>-1,a=>114,b=>-1,d=>-1} 72000700 72000700 72000700 0072e000 72000700 72000700 0072e000 72000700 0072e000 - {c=>0,a=>-58,b=>-1,d=>-1} c6ff0500 c6ff0500 c6ff0500 ffc6a000 c6ff0500 c6ff0500 ffc6a000 c6ff0500 ffc6a000 - {c=>-1,a=>15,b=>-1,d=>0} 0f000300 0f000300 0f000300 000fc000 0f000300 0f000300 000fc000 0f000300 000fc000 - {c=>0,a=>-98,b=>0,d=>0} 9eff0000 9eff0000 9eff0000 ff9e0000 9eff0000 9eff0000 ff9e0000 9eff0000 ff9e0000 - {c=>-1,a=>26,b=>0,d=>0} 1a000200 1a000200 1a000200 001a4000 1a000200 1a000200 001a4000 1a000200 001a4000 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>-1,c=>0,a=>-4,b=>0,d=>0} fcff0800 fcff080000000000 fcff080000000000 fffc1000 fcff0800 fcff0800 fffc100000000000 fcff0800 fffc1000 - {e=>-1,c=>0,a=>6,b=>0,d=>-1} 06000c00 06000c0000000000 06000c0000000000 00063000 06000c00 06000c00 0006300000000000 06000c00 00063000 - {e=>0,c=>-1,a=>40,b=>-1,d=>-1} 28000700 2800070000000000 2800070000000000 0028e000 28000700 28000700 0028e00000000000 28000700 0028e000 - {e=>-1,c=>0,a=>32,b=>-1,d=>0} 20000900 2000090000000000 2000090000000000 00209000 20000900 20000900 0020900000000000 20000900 00209000 - {e=>0,c=>-1,a=>-119,b=>0,d=>-1} 89ff0600 89ff060000000000 89ff060000000000 ff896000 89ff0600 89ff0600 ff89600000000000 89ff0600 ff896000 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>0,c=>0,a=>-8,b=>-1,d=>-1,f=>-2} f8ff0500feffffff f8ff0500feffffff f8ff0500feffffff fff8a000fffffffe f8ff0500feffffff f8ff0500feffffff fff8a000fffffffe f8ff0500feffffff fff8a000fffffffe - {e=>-1,c=>0,a=>-61,b=>-1,d=>0,f=>-61} c3ff0900c3ffffff c3ff0900c3ffffff c3ff0900c3ffffff ffc39000ffffffc3 c3ff0900c3ffffff c3ff0900c3ffffff ffc39000ffffffc3 c3ff0900c3ffffff ffc39000ffffffc3 - {e=>0,c=>0,a=>63,b=>-1,d=>-1,f=>-95} 3f000500a1ffffff 3f000500a1ffffff 3f000500a1ffffff 003fa000ffffffa1 3f000500a1ffffff 3f000500a1ffffff 003fa000ffffffa1 3f000500a1ffffff 003fa000ffffffa1 - {e=>0,c=>0,a=>60,b=>0,d=>0,f=>92} 3c0000005c000000 3c0000005c000000 3c0000005c000000 003c00000000005c 3c0000005c000000 3c0000005c000000 003c00000000005c 3c0000005c000000 003c00000000005c - {e=>0,c=>-1,a=>-67,b=>0,d=>-1,f=>19} bdff060013000000 bdff060013000000 bdff060013000000 ffbd600000000013 bdff060013000000 bdff060013000000 ffbd600000000013 bdff060013000000 ffbd600000000013 = struct smixed { int a; signed char b:1; }; - {a=>95,b=>-1} 5f00000001000000 5f00000001000000 5f00000001000000 0000005f80000000 5f00000001000000 5f00000001000000 0000005f80000000 5f00000001000000 0000005f80000000 - {a=>50,b=>0} 3200000000000000 3200000000000000 3200000000000000 0000003200000000 3200000000000000 3200000000000000 0000003200000000 3200000000000000 0000003200000000 - {a=>-64,b=>-1} c0ffffff01000000 c0ffffff01000000 c0ffffff01000000 ffffffc080000000 c0ffffff01000000 c0ffffff01000000 ffffffc080000000 c0ffffff01000000 ffffffc080000000 - {a=>-33,b=>-1} dfffffff01000000 dfffffff01000000 dfffffff01000000 ffffffdf80000000 dfffffff01000000 dfffffff01000000 ffffffdf80000000 dfffffff01000000 ffffffdf80000000 - {a=>-44,b=>-1} d4ffffff01000000 d4ffffff01000000 d4ffffff01000000 ffffffd480000000 d4ffffff01000000 d4ffffff01000000 ffffffd480000000 d4ffffff01000000 ffffffd480000000 = struct smixed { int a; signed char b:1; signed short c:1; }; - {c=>0,a=>-115,b=>0} 8dffffff00000000 8dffffff00000000 8dffffff00000000 ffffff8d00000000 8dffffff00000000 8dffffff00000000 ffffff8d00000000 8dffffff00000000 ffffff8d00000000 - {c=>-1,a=>-6,b=>0} faffffff02000000 faffffff02000000 faffffff02000000 fffffffa40000000 faffffff02000000 faffffff02000000 fffffffa40000000 faffffff02000000 fffffffa40000000 - {c=>0,a=>40,b=>-1} 2800000001000000 2800000001000000 2800000001000000 0000002880000000 2800000001000000 2800000001000000 0000002880000000 2800000001000000 0000002880000000 - {c=>-1,a=>-100,b=>-1} 9cffffff03000000 9cffffff03000000 9cffffff03000000 ffffff9cc0000000 9cffffff03000000 9cffffff03000000 ffffff9cc0000000 9cffffff03000000 ffffff9cc0000000 - {c=>-1,a=>-26,b=>-1} e6ffffff03000000 e6ffffff03000000 e6ffffff03000000 ffffffe6c0000000 e6ffffff03000000 e6ffffff03000000 ffffffe6c0000000 e6ffffff03000000 ffffffe6c0000000 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>111,b=>-1,d=>0} 6f00000001000000 6f00000001000000 6f00000001000000 0000006f80000000 6f00000001000000 6f00000001000000 0000006f80000000 6f00000001000000 0000006f80000000 - {c=>-1,a=>-15,b=>-1,d=>0} f1ffffff03000000 f1ffffff03000000 f1ffffff03000000 fffffff1c0000000 f1ffffff03000000 f1ffffff03000000 fffffff1c0000000 f1ffffff03000000 fffffff1c0000000 - {c=>-1,a=>27,b=>-1,d=>0} 1b00000003000000 1b00000003000000 1b00000003000000 0000001bc0000000 1b00000003000000 1b00000003000000 0000001bc0000000 1b00000003000000 0000001bc0000000 - {c=>0,a=>95,b=>-1,d=>0} 5f00000001000000 5f00000001000000 5f00000001000000 0000005f80000000 5f00000001000000 5f00000001000000 0000005f80000000 5f00000001000000 0000005f80000000 - {c=>0,a=>40,b=>0,d=>0} 2800000000000000 2800000000000000 2800000000000000 0000002800000000 2800000000000000 2800000000000000 0000002800000000 2800000000000000 0000002800000000 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>0,c=>0,a=>106,b=>0,d=>-1} 6a00000004000000 6a00000004000000 6a00000004000000 0000006a20000000 6a00000004000000 6a00000004000000 0000006a20000000 6a00000004000000 0000006a20000000 - {e=>0,c=>0,a=>-60,b=>-1,d=>-1} c4ffffff05000000 c4ffffff05000000 c4ffffff05000000 ffffffc4a0000000 c4ffffff05000000 c4ffffff05000000 ffffffc4a0000000 c4ffffff05000000 ffffffc4a0000000 - {e=>-1,c=>-1,a=>21,b=>0,d=>-1} 150000000e000000 150000000e000000 150000000e000000 0000001570000000 150000000e000000 150000000e000000 0000001570000000 150000000e000000 0000001570000000 - {e=>-1,c=>-1,a=>12,b=>0,d=>0} 0c0000000a000000 0c0000000a000000 0c0000000a000000 0000000c50000000 0c0000000a000000 0c0000000a000000 0000000c50000000 0c0000000a000000 0000000c50000000 - {e=>0,c=>-1,a=>-11,b=>-1,d=>-1} f5ffffff07000000 f5ffffff07000000 f5ffffff07000000 fffffff5e0000000 f5ffffff07000000 f5ffffff07000000 fffffff5e0000000 f5ffffff07000000 fffffff5e0000000 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>1,b=>-1,d=>-1,f=>-92} 010000000f000000a4ffffff 010000000f000000a4ffffff00000000 010000000f000000a4ffffff00000000 00000001f0000000ffffffa4 010000000f000000a4ffffff 010000000f000000a4ffffff 00000001f0000000ffffffa400000000 010000000f000000a4ffffff 00000001f0000000ffffffa4 - {e=>-1,c=>-1,a=>-79,b=>0,d=>0,f=>47} b1ffffff0a0000002f000000 b1ffffff0a0000002f00000000000000 b1ffffff0a0000002f00000000000000 ffffffb1500000000000002f b1ffffff0a0000002f000000 b1ffffff0a0000002f000000 ffffffb1500000000000002f00000000 b1ffffff0a0000002f000000 ffffffb1500000000000002f - {e=>-1,c=>-1,a=>81,b=>-1,d=>0,f=>-106} 510000000b00000096ffffff 510000000b00000096ffffff00000000 510000000b00000096ffffff00000000 00000051d0000000ffffff96 510000000b00000096ffffff 510000000b00000096ffffff 00000051d0000000ffffff9600000000 510000000b00000096ffffff 00000051d0000000ffffff96 - {e=>0,c=>0,a=>15,b=>0,d=>-1,f=>2} 0f0000000400000002000000 0f000000040000000200000000000000 0f000000040000000200000000000000 0000000f2000000000000002 0f0000000400000002000000 0f0000000400000002000000 0000000f200000000000000200000000 0f0000000400000002000000 0000000f2000000000000002 - {e=>0,c=>0,a=>91,b=>-1,d=>0,f=>98} 5b0000000100000062000000 5b000000010000006200000000000000 5b000000010000006200000000000000 0000005b8000000000000062 5b0000000100000062000000 5b0000000100000062000000 0000005b800000000000006200000000 5b0000000100000062000000 0000005b8000000000000062 = struct smixed { long a; signed char b:1; }; - {a=>60,b=>-1} 3c00000001000000 3c000000000000000100000000000000 3c000000000000000100000000000000 0000003c80000000 3c00000001000000 3c00000001000000 000000000000003c8000000000000000 3c00000001000000 0000003c80000000 - {a=>125,b=>-1} 7d00000001000000 7d000000000000000100000000000000 7d000000000000000100000000000000 0000007d80000000 7d00000001000000 7d00000001000000 000000000000007d8000000000000000 7d00000001000000 0000007d80000000 - {a=>-23,b=>-1} e9ffffff01000000 e9ffffffffffffff0100000000000000 e9ffffffffffffff0100000000000000 ffffffe980000000 e9ffffff01000000 e9ffffff01000000 ffffffffffffffe98000000000000000 e9ffffff01000000 ffffffe980000000 - {a=>-14,b=>-1} f2ffffff01000000 f2ffffffffffffff0100000000000000 f2ffffffffffffff0100000000000000 fffffff280000000 f2ffffff01000000 f2ffffff01000000 fffffffffffffff28000000000000000 f2ffffff01000000 fffffff280000000 - {a=>51,b=>0} 3300000000000000 33000000000000000000000000000000 33000000000000000000000000000000 0000003300000000 3300000000000000 3300000000000000 00000000000000330000000000000000 3300000000000000 0000003300000000 = struct smixed { long a; signed char b:1; signed short c:1; }; - {c=>-1,a=>-105,b=>-1} 97ffffff03000000 97ffffffffffffff0300000000000000 97ffffffffffffff0300000000000000 ffffff97c0000000 97ffffff03000000 97ffffff03000000 ffffffffffffff97c000000000000000 97ffffff03000000 ffffff97c0000000 - {c=>0,a=>31,b=>0} 1f00000000000000 1f000000000000000000000000000000 1f000000000000000000000000000000 0000001f00000000 1f00000000000000 1f00000000000000 000000000000001f0000000000000000 1f00000000000000 0000001f00000000 - {c=>0,a=>43,b=>0} 2b00000000000000 2b000000000000000000000000000000 2b000000000000000000000000000000 0000002b00000000 2b00000000000000 2b00000000000000 000000000000002b0000000000000000 2b00000000000000 0000002b00000000 - {c=>0,a=>-128,b=>0} 80ffffff00000000 80ffffffffffffff0000000000000000 80ffffffffffffff0000000000000000 ffffff8000000000 80ffffff00000000 80ffffff00000000 ffffffffffffff800000000000000000 80ffffff00000000 ffffff8000000000 - {c=>-1,a=>101,b=>0} 6500000002000000 65000000000000000200000000000000 65000000000000000200000000000000 0000006540000000 6500000002000000 6500000002000000 00000000000000654000000000000000 6500000002000000 0000006540000000 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>18,b=>0,d=>-1} 1200000004000000 12000000000000000400000000000000 12000000000000000400000000000000 0000001220000000 1200000004000000 1200000004000000 00000000000000122000000000000000 1200000004000000 0000001220000000 - {c=>-1,a=>-93,b=>-1,d=>0} a3ffffff03000000 a3ffffffffffffff0300000000000000 a3ffffffffffffff0300000000000000 ffffffa3c0000000 a3ffffff03000000 a3ffffff03000000 ffffffffffffffa3c000000000000000 a3ffffff03000000 ffffffa3c0000000 - {c=>-1,a=>-110,b=>-1,d=>-1} 92ffffff07000000 92ffffffffffffff0700000000000000 92ffffffffffffff0700000000000000 ffffff92e0000000 92ffffff07000000 92ffffff07000000 ffffffffffffff92e000000000000000 92ffffff07000000 ffffff92e0000000 - {c=>-1,a=>-52,b=>0,d=>-1} ccffffff06000000 ccffffffffffffff0600000000000000 ccffffffffffffff0600000000000000 ffffffcc60000000 ccffffff06000000 ccffffff06000000 ffffffffffffffcc6000000000000000 ccffffff06000000 ffffffcc60000000 - {c=>0,a=>120,b=>-1,d=>-1} 7800000005000000 78000000000000000500000000000000 78000000000000000500000000000000 00000078a0000000 7800000005000000 7800000005000000 0000000000000078a000000000000000 7800000005000000 00000078a0000000 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>-1,c=>-1,a=>-121,b=>0,d=>-1} 87ffffff0e000000 87ffffffffffffff0e00000000000000 87ffffffffffffff0e00000000000000 ffffff8770000000 87ffffff0e000000 87ffffff0e000000 ffffffffffffff877000000000000000 87ffffff0e000000 ffffff8770000000 - {e=>0,c=>0,a=>-86,b=>0,d=>-1} aaffffff04000000 aaffffffffffffff0400000000000000 aaffffffffffffff0400000000000000 ffffffaa20000000 aaffffff04000000 aaffffff04000000 ffffffffffffffaa2000000000000000 aaffffff04000000 ffffffaa20000000 - {e=>-1,c=>0,a=>115,b=>-1,d=>0} 7300000009000000 73000000000000000900000000000000 73000000000000000900000000000000 0000007390000000 7300000009000000 7300000009000000 00000000000000739000000000000000 7300000009000000 0000007390000000 - {e=>-1,c=>-1,a=>26,b=>-1,d=>-1} 1a0000000f000000 1a000000000000000f00000000000000 1a000000000000000f00000000000000 0000001af0000000 1a0000000f000000 1a0000000f000000 000000000000001af000000000000000 1a0000000f000000 0000001af0000000 - {e=>-1,c=>-1,a=>-108,b=>-1,d=>-1} 94ffffff0f000000 94ffffffffffffff0f00000000000000 94ffffffffffffff0f00000000000000 ffffff94f0000000 94ffffff0f000000 94ffffff0f000000 ffffffffffffff94f000000000000000 94ffffff0f000000 ffffff94f0000000 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>26,b=>0,d=>-1,f=>-117} 1a0000000e0000008bffffff 1a000000000000000e0000008bffffff 1a000000000000000e0000008bffffff 0000001a70000000ffffff8b 1a0000000e0000008bffffff 1a0000000e0000008bffffff 000000000000001a70000000ffffff8b 1a0000000e0000008bffffff 0000001a70000000ffffff8b - {e=>-1,c=>0,a=>-97,b=>0,d=>-1,f=>99} 9fffffff0c00000063000000 9fffffffffffffff0c00000063000000 9fffffffffffffff0c00000063000000 ffffff9f3000000000000063 9fffffff0c00000063000000 9fffffff0c00000063000000 ffffffffffffff9f3000000000000063 9fffffff0c00000063000000 ffffff9f3000000000000063 - {e=>0,c=>-1,a=>-23,b=>-1,d=>0,f=>63} e9ffffff030000003f000000 e9ffffffffffffff030000003f000000 e9ffffffffffffff030000003f000000 ffffffe9c00000000000003f e9ffffff030000003f000000 e9ffffff030000003f000000 ffffffffffffffe9c00000000000003f e9ffffff030000003f000000 ffffffe9c00000000000003f - {e=>0,c=>-1,a=>95,b=>0,d=>-1,f=>108} 5f000000060000006c000000 5f00000000000000060000006c000000 5f00000000000000060000006c000000 0000005f600000000000006c 5f000000060000006c000000 5f000000060000006c000000 000000000000005f600000000000006c 5f000000060000006c000000 0000005f600000000000006c - {e=>-1,c=>0,a=>-97,b=>0,d=>0,f=>86} 9fffffff0800000056000000 9fffffffffffffff0800000056000000 9fffffffffffffff0800000056000000 ffffff9f1000000000000056 9fffffff0800000056000000 9fffffff0800000056000000 ffffffffffffff9f1000000000000056 9fffffff0800000056000000 ffffff9f1000000000000056 = struct mixed { unsigned char a:1; }; - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>0} 00 00 00 00 00000000 00 00 00 00 = struct mixed { unsigned char a:1; signed char b:1; }; - {a=>0,b=>-1} 02 02 02 40 02000000 02 40 02 40 - {a=>1,b=>0} 01 01 01 80 01000000 01 80 01 80 - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1,b=>0} 01 01 01 80 01000000 01 80 01 80 - {a=>1,b=>0} 01 01 01 80 01000000 01 80 01 80 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; }; - {c=>1,a=>0,b=>0} 0400 0400 0400 2000 04000000 0400 2000 0400 2000 - {c=>1,a=>1,b=>-1} 0700 0700 0700 e000 07000000 0700 e000 0700 e000 - {c=>1,a=>0,b=>0} 0400 0400 0400 2000 04000000 0400 2000 0400 2000 - {c=>1,a=>1,b=>-1} 0700 0700 0700 e000 07000000 0700 e000 0700 e000 - {c=>1,a=>0,b=>-1} 0600 0600 0600 6000 06000000 0600 6000 0600 6000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; }; - {c=>0,a=>1,b=>0,d=>-1} 0900 0900 0900 9000 09000000 0900 9000 0900 9000 - {c=>0,a=>1,b=>0,d=>-1} 0900 0900 0900 9000 09000000 0900 9000 0900 9000 - {c=>0,a=>1,b=>-1,d=>0} 0300 0300 0300 c000 03000000 0300 c000 0300 c000 - {c=>1,a=>1,b=>-1,d=>0} 0700 0700 0700 e000 07000000 0700 e000 0700 e000 - {c=>1,a=>0,b=>-1,d=>-1} 0e00 0e00 0e00 7000 0e000000 0e00 7000 0e00 7000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>0,b=>-1,d=>-1} 1e000000 1e000000 1e000000 78000000 1e000000 1e000000 78000000 1e000000 78000000 - {e=>0,c=>1,a=>1,b=>-1,d=>-1} 0f000000 0f000000 0f000000 f0000000 0f000000 0f000000 f0000000 0f000000 f0000000 - {e=>1,c=>1,a=>0,b=>0,d=>0} 14000000 14000000 14000000 28000000 14000000 14000000 28000000 14000000 28000000 - {e=>0,c=>1,a=>1,b=>0,d=>-1} 0d000000 0d000000 0d000000 b0000000 0d000000 0d000000 b0000000 0d000000 b0000000 - {e=>0,c=>0,a=>1,b=>0,d=>-1} 09000000 09000000 09000000 90000000 09000000 09000000 90000000 09000000 90000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; }; - {e=>0,c=>0,a=>0,b=>0,d=>-1,f=>-1} 28000000 28000000 28000000 14000000 28000000 28000000 14000000 28000000 14000000 - {e=>0,c=>0,a=>1,b=>0,d=>-1,f=>-1} 29000000 29000000 29000000 94000000 29000000 29000000 94000000 29000000 94000000 - {e=>0,c=>1,a=>0,b=>-1,d=>-1,f=>-1} 2e000000 2e000000 2e000000 74000000 2e000000 2e000000 74000000 2e000000 74000000 - {e=>1,c=>0,a=>0,b=>-1,d=>-1,f=>0} 1a000000 1a000000 1a000000 58000000 1a000000 1a000000 58000000 1a000000 58000000 - {e=>0,c=>0,a=>0,b=>0,d=>0,f=>-1} 20000000 20000000 20000000 04000000 20000000 20000000 04000000 20000000 04000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; }; - {e=>0,c=>0,a=>0,g=>0,b=>-1,d=>0,f=>0} 02000000 0200000000000000 0200000000000000 40000000 02000000 02000000 4000000000000000 02000000 40000000 - {e=>1,c=>0,a=>1,g=>0,b=>0,d=>-1,f=>-1} 39000000 3900000000000000 3900000000000000 9c000000 39000000 39000000 9c00000000000000 39000000 9c000000 - {e=>1,c=>0,a=>1,g=>1,b=>0,d=>0,f=>0} 51000000 5100000000000000 5100000000000000 8a000000 51000000 51000000 8a00000000000000 51000000 8a000000 - {e=>0,c=>0,a=>1,g=>0,b=>-1,d=>-1,f=>0} 0b000000 0b00000000000000 0b00000000000000 d0000000 0b000000 0b000000 d000000000000000 0b000000 d0000000 - {e=>0,c=>1,a=>0,g=>1,b=>-1,d=>0,f=>0} 46000000 4600000000000000 4600000000000000 62000000 46000000 46000000 6200000000000000 46000000 62000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; signed long h:1; }; - {e=>1,a=>1,d=>-1,c=>1,h=>0,b=>-1,g=>1,f=>-1} 7f000000 7f00000000000000 7f00000000000000 fe000000 7f000000 7f000000 fe00000000000000 7f000000 fe000000 - {e=>0,a=>0,d=>-1,c=>1,h=>0,b=>0,g=>0,f=>0} 0c000000 0c00000000000000 0c00000000000000 30000000 0c000000 0c000000 3000000000000000 0c000000 30000000 - {e=>1,a=>0,d=>-1,c=>0,h=>-1,b=>0,g=>1,f=>0} d8000000 d800000000000000 d800000000000000 1b000000 d8000000 d8000000 1b00000000000000 d8000000 1b000000 - {e=>1,a=>0,d=>-1,c=>0,h=>-1,b=>0,g=>0,f=>0} 98000000 9800000000000000 9800000000000000 19000000 98000000 98000000 1900000000000000 98000000 19000000 - {e=>1,a=>1,d=>0,c=>1,h=>0,b=>-1,g=>0,f=>0} 17000000 1700000000000000 1700000000000000 e8000000 17000000 17000000 e800000000000000 17000000 e8000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; signed long h:1; unsigned char i; }; - {e=>1,a=>0,d=>-1,c=>1,h=>-1,b=>-1,g=>0,f=>-1,i=>162} bea20000 bea2000000000000 bea2000000000000 7da20000 bea20000 bea20000 7da2000000000000 bea20000 7da20000 - {e=>1,a=>1,d=>0,c=>0,h=>0,b=>-1,g=>0,f=>0,i=>113} 13710000 1371000000000000 1371000000000000 c8710000 13710000 13710000 c871000000000000 13710000 c8710000 - {e=>0,a=>1,d=>0,c=>1,h=>0,b=>0,g=>1,f=>-1,i=>177} 65b10000 65b1000000000000 65b1000000000000 a6b10000 65b10000 65b10000 a6b1000000000000 65b10000 a6b10000 - {e=>0,a=>1,d=>-1,c=>1,h=>0,b=>0,g=>1,f=>-1,i=>254} 6dfe0000 6dfe000000000000 6dfe000000000000 b6fe0000 6dfe0000 6dfe0000 b6fe000000000000 6dfe0000 b6fe0000 - {e=>1,a=>0,d=>-1,c=>0,h=>0,b=>0,g=>0,f=>-1,i=>196} 38c40000 38c4000000000000 38c4000000000000 1cc40000 38c40000 38c40000 1cc4000000000000 38c40000 1cc40000 = struct mixed { char a; unsigned char b:1; }; - {a=>59,b=>1} 3b01 3b01 3b01 3b80 3b010000 3b01 3b80 3b01 3b80 - {a=>126,b=>1} 7e01 7e01 7e01 7e80 7e010000 7e01 7e80 7e01 7e80 - {a=>58,b=>1} 3a01 3a01 3a01 3a80 3a010000 3a01 3a80 3a01 3a80 - {a=>84,b=>0} 5400 5400 5400 5400 54000000 5400 5400 5400 5400 - {a=>-59,b=>1} c501 c501 c501 c580 c5010000 c501 c580 c501 c580 = struct mixed { char a; unsigned char b:1; signed char c:1; }; - {c=>0,a=>-8,b=>1} f801 f801 f801 f880 f8010000 f801 f880 f801 f880 - {c=>-1,a=>-61,b=>1} c303 c303 c303 c3c0 c3030000 c303 c3c0 c303 c3c0 - {c=>0,a=>38,b=>0} 2600 2600 2600 2600 26000000 2600 2600 2600 2600 - {c=>0,a=>103,b=>1} 6701 6701 6701 6780 67010000 6701 6780 6701 6780 - {c=>0,a=>-74,b=>0} b600 b600 b600 b600 b6000000 b600 b600 b600 b600 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>-1,a=>-94,b=>0,d=>0} a202 a202 a202 a240 a2020000 a202 a240 a202 a240 - {c=>0,a=>18,b=>1,d=>0} 1201 1201 1201 1280 12010000 1201 1280 1201 1280 - {c=>0,a=>83,b=>1,d=>1} 5305 5305 5305 53a0 53050000 5305 53a0 5305 53a0 - {c=>-1,a=>41,b=>1,d=>1} 2907 2907 2907 29e0 29070000 2907 29e0 2907 29e0 - {c=>-1,a=>28,b=>0,d=>1} 1c06 1c06 1c06 1c60 1c060000 1c06 1c60 1c06 1c60 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>-1,a=>112,b=>1,d=>0} 7003 7003 7003 70c0 70030000 7003 70c0 7003 70c0 - {e=>-1,c=>0,a=>72,b=>1,d=>1} 480d 480d 480d 48b0 480d0000 480d 48b0 480d 48b0 - {e=>-1,c=>0,a=>33,b=>0,d=>1} 210c 210c 210c 2130 210c0000 210c 2130 210c 2130 - {e=>-1,c=>-1,a=>57,b=>1,d=>0} 390b 390b 390b 39d0 390b0000 390b 39d0 390b 39d0 - {e=>0,c=>0,a=>99,b=>1,d=>1} 6305 6305 6305 63a0 63050000 6305 63a0 6305 63a0 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>0,a=>-16,b=>0,d=>0,f=>1} f0100000 f0100000 f0100000 f0080000 f0100000 f0100000 f0080000 f0100000 f0080000 - {e=>0,c=>0,a=>35,b=>0,d=>1,f=>1} 23140000 23140000 23140000 23280000 23140000 23140000 23280000 23140000 23280000 - {e=>0,c=>-1,a=>24,b=>1,d=>0,f=>1} 18130000 18130000 18130000 18c80000 18130000 18130000 18c80000 18130000 18c80000 - {e=>-1,c=>0,a=>-56,b=>0,d=>1,f=>1} c81c0000 c81c0000 c81c0000 c8380000 c81c0000 c81c0000 c8380000 c81c0000 c8380000 - {e=>0,c=>0,a=>-67,b=>1,d=>0,f=>0} bd010000 bd010000 bd010000 bd800000 bd010000 bd010000 bd800000 bd010000 bd800000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>0,a=>-105,g=>0,b=>0,d=>0,f=>0} 97080000 97080000 97080000 97100000 97080000 97080000 97100000 97080000 97100000 - {e=>0,c=>-1,a=>101,g=>-1,b=>0,d=>0,f=>0} 65220000 65220000 65220000 65440000 65220000 65220000 65440000 65220000 65440000 - {e=>0,c=>0,a=>-86,g=>-1,b=>0,d=>1,f=>0} aa240000 aa240000 aa240000 aa240000 aa240000 aa240000 aa240000 aa240000 aa240000 - {e=>0,c=>-1,a=>-47,g=>-1,b=>0,d=>0,f=>0} d1220000 d1220000 d1220000 d1440000 d1220000 d1220000 d1440000 d1220000 d1440000 - {e=>0,c=>0,a=>117,g=>-1,b=>1,d=>0,f=>0} 75210000 75210000 75210000 75840000 75210000 75210000 75840000 75210000 75840000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>77,d=>0,c=>0,h=>0,b=>1,g=>0,f=>1} 4d190000 4d19000000000000 4d19000000000000 4d980000 4d190000 4d190000 4d98000000000000 4d190000 4d980000 - {e=>-1,a=>-38,d=>1,c=>-1,h=>1,b=>0,g=>0,f=>0} da4e0000 da4e000000000000 da4e000000000000 da720000 da4e0000 da4e0000 da72000000000000 da4e0000 da720000 - {e=>-1,a=>-89,d=>0,c=>0,h=>1,b=>1,g=>-1,f=>1} a7790000 a779000000000000 a779000000000000 a79e0000 a7790000 a7790000 a79e000000000000 a7790000 a79e0000 - {e=>0,a=>-55,d=>1,c=>-1,h=>1,b=>1,g=>-1,f=>1} c9770000 c977000000000000 c977000000000000 c9ee0000 c9770000 c9770000 c9ee000000000000 c9770000 c9ee0000 - {e=>0,a=>76,d=>0,c=>-1,h=>0,b=>0,g=>-1,f=>1} 4c320000 4c32000000000000 4c32000000000000 4c4c0000 4c320000 4c320000 4c4c000000000000 4c320000 4c4c0000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>0,a=>51,d=>1,c=>0,h=>1,b=>1,g=>-1,f=>0,i=>-1} 33e50000 33e5000000000000 33e5000000000000 33a70000 33e50000 33e50000 33a7000000000000 33e50000 33a70000 - {e=>0,a=>101,d=>0,c=>-1,h=>1,b=>0,g=>-1,f=>0,i=>-1} 65e20000 65e2000000000000 65e2000000000000 65470000 65e20000 65e20000 6547000000000000 65e20000 65470000 - {e=>0,a=>-74,d=>1,c=>-1,h=>0,b=>0,g=>0,f=>0,i=>0} b6060000 b606000000000000 b606000000000000 b6600000 b6060000 b6060000 b660000000000000 b6060000 b6600000 - {e=>0,a=>124,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 7c970000 7c97000000000000 7c97000000000000 7ce90000 7c970000 7c970000 7ce9000000000000 7c970000 7ce90000 - {e=>-1,a=>24,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} 181b0000 181b000000000000 181b000000000000 18d80000 181b0000 181b0000 18d8000000000000 181b0000 18d80000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-115,d=>0,j=>73,c=>-1,h=>1,b=>0,g=>0,f=>0,i=>-1} 8dca4900 8dca490000000000 8dca490000000000 8d534900 8dca4900 8dca4900 8d53490000000000 8dca4900 8d534900 - {e=>0,a=>112,d=>0,j=>186,c=>0,h=>1,b=>0,g=>0,f=>1,i=>0} 7050ba00 7050ba0000000000 7050ba0000000000 700aba00 7050ba00 7050ba00 700aba0000000000 7050ba00 700aba00 - {e=>0,a=>27,d=>0,j=>247,c=>-1,h=>1,b=>1,g=>0,f=>1,i=>0} 1b53f700 1b53f70000000000 1b53f70000000000 1bcaf700 1b53f700 1b53f700 1bcaf70000000000 1b53f700 1bcaf700 - {e=>-1,a=>0,d=>1,j=>68,c=>-1,h=>1,b=>0,g=>0,f=>0,i=>0} 004e4400 004e440000000000 004e440000000000 00724400 004e4400 004e4400 0072440000000000 004e4400 00724400 - {e=>-1,a=>116,d=>0,j=>30,c=>-1,h=>1,b=>0,g=>-1,f=>1,i=>0} 747a1e00 747a1e0000000000 747a1e0000000000 745e1e00 747a1e00 747a1e00 745e1e0000000000 747a1e00 745e1e00 = struct mixed { short a; unsigned char b:1; }; - {a=>43,b=>0} 2b000000 2b000000 2b000000 002b0000 2b000000 2b000000 002b0000 2b000000 002b0000 - {a=>-77,b=>0} b3ff0000 b3ff0000 b3ff0000 ffb30000 b3ff0000 b3ff0000 ffb30000 b3ff0000 ffb30000 - {a=>-127,b=>0} 81ff0000 81ff0000 81ff0000 ff810000 81ff0000 81ff0000 ff810000 81ff0000 ff810000 - {a=>-70,b=>0} baff0000 baff0000 baff0000 ffba0000 baff0000 baff0000 ffba0000 baff0000 ffba0000 - {a=>-21,b=>0} ebff0000 ebff0000 ebff0000 ffeb0000 ebff0000 ebff0000 ffeb0000 ebff0000 ffeb0000 = struct mixed { short a; unsigned char b:1; signed char c:1; }; - {c=>0,a=>1,b=>1} 01000100 01000100 01000100 00018000 01000100 01000100 00018000 01000100 00018000 - {c=>-1,a=>-65,b=>0} bfff0200 bfff0200 bfff0200 ffbf4000 bfff0200 bfff0200 ffbf4000 bfff0200 ffbf4000 - {c=>0,a=>-122,b=>0} 86ff0000 86ff0000 86ff0000 ff860000 86ff0000 86ff0000 ff860000 86ff0000 ff860000 - {c=>-1,a=>-8,b=>1} f8ff0300 f8ff0300 f8ff0300 fff8c000 f8ff0300 f8ff0300 fff8c000 f8ff0300 fff8c000 - {c=>-1,a=>50,b=>1} 32000300 32000300 32000300 0032c000 32000300 32000300 0032c000 32000300 0032c000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>0,a=>24,b=>1,d=>1} 18000500 18000500 18000500 0018a000 18000500 18000500 0018a000 18000500 0018a000 - {c=>0,a=>-41,b=>0,d=>1} d7ff0400 d7ff0400 d7ff0400 ffd72000 d7ff0400 d7ff0400 ffd72000 d7ff0400 ffd72000 - {c=>-1,a=>-82,b=>0,d=>0} aeff0200 aeff0200 aeff0200 ffae4000 aeff0200 aeff0200 ffae4000 aeff0200 ffae4000 - {c=>0,a=>124,b=>1,d=>0} 7c000100 7c000100 7c000100 007c8000 7c000100 7c000100 007c8000 7c000100 007c8000 - {c=>0,a=>-85,b=>0,d=>1} abff0400 abff0400 abff0400 ffab2000 abff0400 abff0400 ffab2000 abff0400 ffab2000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>-1,c=>0,a=>92,b=>1,d=>0} 5c000900 5c000900 5c000900 005c9000 5c000900 5c000900 005c9000 5c000900 005c9000 - {e=>0,c=>0,a=>104,b=>1,d=>0} 68000100 68000100 68000100 00688000 68000100 68000100 00688000 68000100 00688000 - {e=>-1,c=>-1,a=>-96,b=>1,d=>0} a0ff0b00 a0ff0b00 a0ff0b00 ffa0d000 a0ff0b00 a0ff0b00 ffa0d000 a0ff0b00 ffa0d000 - {e=>0,c=>0,a=>-66,b=>0,d=>1} beff0400 beff0400 beff0400 ffbe2000 beff0400 beff0400 ffbe2000 beff0400 ffbe2000 - {e=>0,c=>0,a=>126,b=>0,d=>0} 7e000000 7e000000 7e000000 007e0000 7e000000 7e000000 007e0000 7e000000 007e0000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>0,a=>-15,b=>1,d=>1,f=>1} f1ff1500 f1ff1500 f1ff1500 fff1a800 f1ff1500 f1ff1500 fff1a800 f1ff1500 fff1a800 - {e=>-1,c=>-1,a=>15,b=>0,d=>0,f=>1} 0f001a00 0f001a00 0f001a00 000f5800 0f001a00 0f001a00 000f5800 0f001a00 000f5800 - {e=>-1,c=>-1,a=>75,b=>1,d=>1,f=>1} 4b001f00 4b001f00 4b001f00 004bf800 4b001f00 4b001f00 004bf800 4b001f00 004bf800 - {e=>0,c=>0,a=>127,b=>0,d=>0,f=>1} 7f001000 7f001000 7f001000 007f0800 7f001000 7f001000 007f0800 7f001000 007f0800 - {e=>-1,c=>-1,a=>0,b=>0,d=>0,f=>0} 00000a00 00000a00 00000a00 00005000 00000a00 00000a00 00005000 00000a00 00005000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>0,a=>-96,g=>0,b=>0,d=>1,f=>0} a0ff0c00 a0ff0c00 a0ff0c00 ffa03000 a0ff0c00 a0ff0c00 ffa03000 a0ff0c00 ffa03000 - {e=>-1,c=>-1,a=>-116,g=>-1,b=>0,d=>1,f=>1} 8cff3e00 8cff3e00 8cff3e00 ff8c7c00 8cff3e00 8cff3e00 ff8c7c00 8cff3e00 ff8c7c00 - {e=>0,c=>0,a=>16,g=>0,b=>1,d=>0,f=>1} 10001100 10001100 10001100 00108800 10001100 10001100 00108800 10001100 00108800 - {e=>-1,c=>0,a=>108,g=>-1,b=>1,d=>0,f=>1} 6c003900 6c003900 6c003900 006c9c00 6c003900 6c003900 006c9c00 6c003900 006c9c00 - {e=>-1,c=>0,a=>89,g=>0,b=>1,d=>1,f=>0} 59000d00 59000d00 59000d00 0059b000 59000d00 59000d00 0059b000 59000d00 0059b000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>0,a=>-94,d=>1,c=>0,h=>1,b=>0,g=>0,f=>0} a2ff4400 a2ff440000000000 a2ff440000000000 ffa22200 a2ff4400 a2ff4400 ffa2220000000000 a2ff4400 ffa22200 - {e=>-1,a=>-38,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>1} daff3d00 daff3d0000000000 daff3d0000000000 ffdabc00 daff3d00 daff3d00 ffdabc0000000000 daff3d00 ffdabc00 - {e=>0,a=>-42,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>0} d6ff2000 d6ff200000000000 d6ff200000000000 ffd60400 d6ff2000 d6ff2000 ffd6040000000000 d6ff2000 ffd60400 - {e=>0,a=>-80,d=>0,c=>0,h=>1,b=>0,g=>0,f=>0} b0ff4000 b0ff400000000000 b0ff400000000000 ffb00200 b0ff4000 b0ff4000 ffb0020000000000 b0ff4000 ffb00200 - {e=>0,a=>-7,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1} f9ff5100 f9ff510000000000 f9ff510000000000 fff98a00 f9ff5100 f9ff5100 fff98a0000000000 f9ff5100 fff98a00 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>-1,a=>106,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} 6a001f00 6a001f0000000000 6a001f0000000000 006af800 6a001f00 6a001f00 006af80000000000 6a001f00 006af800 - {e=>0,a=>10,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>-1} 0a00e000 0a00e00000000000 0a00e00000000000 000a0700 0a00e000 0a00e000 000a070000000000 0a00e000 000a0700 - {e=>-1,a=>93,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0,i=>0} 5d000c00 5d000c0000000000 5d000c0000000000 005d3000 5d000c00 5d000c00 005d300000000000 5d000c00 005d3000 - {e=>-1,a=>-24,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1,i=>0} e8ff5900 e8ff590000000000 e8ff590000000000 ffe89a00 e8ff5900 e8ff5900 ffe89a0000000000 e8ff5900 ffe89a00 - {e=>0,a=>-98,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>1,i=>-1} 9efff000 9efff00000000000 9efff00000000000 ff9e0f00 9efff000 9efff000 ff9e0f0000000000 9efff000 ff9e0f00 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-30,d=>0,j=>167,c=>0,h=>1,b=>1,g=>0,f=>0,i=>0} e2ff49a7 e2ff49a700000000 e2ff49a700000000 ffe292a7 e2ff49a7 e2ff49a7 ffe292a700000000 e2ff49a7 ffe292a7 - {e=>0,a=>34,d=>1,j=>13,c=>0,h=>1,b=>1,g=>0,f=>0,i=>-1} 2200c50d 2200c50d00000000 2200c50d00000000 0022a30d 2200c50d 2200c50d 0022a30d00000000 2200c50d 0022a30d - {e=>-1,a=>-125,d=>0,j=>209,c=>0,h=>0,b=>0,g=>0,f=>0,i=>0} 83ff08d1 83ff08d100000000 83ff08d100000000 ff8310d1 83ff08d1 83ff08d1 ff8310d100000000 83ff08d1 ff8310d1 - {e=>0,a=>57,d=>0,j=>197,c=>0,h=>0,b=>0,g=>-1,f=>1,i=>-1} 3900b0c5 3900b0c500000000 3900b0c500000000 00390dc5 3900b0c5 3900b0c5 00390dc500000000 3900b0c5 00390dc5 - {e=>-1,a=>101,d=>1,j=>141,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 65009f8d 65009f8d00000000 65009f8d00000000 0065f98d 65009f8d 65009f8d 0065f98d00000000 65009f8d 0065f98d = struct mixed { int a; unsigned char b:1; }; - {a=>59,b=>1} 3b00000001000000 3b00000001000000 3b00000001000000 0000003b80000000 3b00000001000000 3b00000001000000 0000003b80000000 3b00000001000000 0000003b80000000 - {a=>25,b=>0} 1900000000000000 1900000000000000 1900000000000000 0000001900000000 1900000000000000 1900000000000000 0000001900000000 1900000000000000 0000001900000000 - {a=>-69,b=>1} bbffffff01000000 bbffffff01000000 bbffffff01000000 ffffffbb80000000 bbffffff01000000 bbffffff01000000 ffffffbb80000000 bbffffff01000000 ffffffbb80000000 - {a=>106,b=>0} 6a00000000000000 6a00000000000000 6a00000000000000 0000006a00000000 6a00000000000000 6a00000000000000 0000006a00000000 6a00000000000000 0000006a00000000 - {a=>112,b=>1} 7000000001000000 7000000001000000 7000000001000000 0000007080000000 7000000001000000 7000000001000000 0000007080000000 7000000001000000 0000007080000000 = struct mixed { int a; unsigned char b:1; signed char c:1; }; - {c=>-1,a=>17,b=>0} 1100000002000000 1100000002000000 1100000002000000 0000001140000000 1100000002000000 1100000002000000 0000001140000000 1100000002000000 0000001140000000 - {c=>-1,a=>-75,b=>1} b5ffffff03000000 b5ffffff03000000 b5ffffff03000000 ffffffb5c0000000 b5ffffff03000000 b5ffffff03000000 ffffffb5c0000000 b5ffffff03000000 ffffffb5c0000000 - {c=>-1,a=>86,b=>0} 5600000002000000 5600000002000000 5600000002000000 0000005640000000 5600000002000000 5600000002000000 0000005640000000 5600000002000000 0000005640000000 - {c=>0,a=>-126,b=>1} 82ffffff01000000 82ffffff01000000 82ffffff01000000 ffffff8280000000 82ffffff01000000 82ffffff01000000 ffffff8280000000 82ffffff01000000 ffffff8280000000 - {c=>-1,a=>49,b=>1} 3100000003000000 3100000003000000 3100000003000000 00000031c0000000 3100000003000000 3100000003000000 00000031c0000000 3100000003000000 00000031c0000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>-1,a=>-126,b=>0,d=>0} 82ffffff02000000 82ffffff02000000 82ffffff02000000 ffffff8240000000 82ffffff02000000 82ffffff02000000 ffffff8240000000 82ffffff02000000 ffffff8240000000 - {c=>0,a=>-97,b=>0,d=>1} 9fffffff04000000 9fffffff04000000 9fffffff04000000 ffffff9f20000000 9fffffff04000000 9fffffff04000000 ffffff9f20000000 9fffffff04000000 ffffff9f20000000 - {c=>0,a=>25,b=>0,d=>0} 1900000000000000 1900000000000000 1900000000000000 0000001900000000 1900000000000000 1900000000000000 0000001900000000 1900000000000000 0000001900000000 - {c=>0,a=>-28,b=>1,d=>1} e4ffffff05000000 e4ffffff05000000 e4ffffff05000000 ffffffe4a0000000 e4ffffff05000000 e4ffffff05000000 ffffffe4a0000000 e4ffffff05000000 ffffffe4a0000000 - {c=>-1,a=>112,b=>1,d=>0} 7000000003000000 7000000003000000 7000000003000000 00000070c0000000 7000000003000000 7000000003000000 00000070c0000000 7000000003000000 00000070c0000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>-1,a=>122,b=>0,d=>1} 7a00000006000000 7a00000006000000 7a00000006000000 0000007a60000000 7a00000006000000 7a00000006000000 0000007a60000000 7a00000006000000 0000007a60000000 - {e=>-1,c=>-1,a=>-41,b=>1,d=>0} d7ffffff0b000000 d7ffffff0b000000 d7ffffff0b000000 ffffffd7d0000000 d7ffffff0b000000 d7ffffff0b000000 ffffffd7d0000000 d7ffffff0b000000 ffffffd7d0000000 - {e=>-1,c=>-1,a=>67,b=>0,d=>0} 430000000a000000 430000000a000000 430000000a000000 0000004350000000 430000000a000000 430000000a000000 0000004350000000 430000000a000000 0000004350000000 - {e=>0,c=>0,a=>-109,b=>0,d=>1} 93ffffff04000000 93ffffff04000000 93ffffff04000000 ffffff9320000000 93ffffff04000000 93ffffff04000000 ffffff9320000000 93ffffff04000000 ffffff9320000000 - {e=>0,c=>0,a=>-80,b=>1,d=>0} b0ffffff01000000 b0ffffff01000000 b0ffffff01000000 ffffffb080000000 b0ffffff01000000 b0ffffff01000000 ffffffb080000000 b0ffffff01000000 ffffffb080000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>-1,a=>-35,b=>1,d=>0,f=>0} ddffffff03000000 ddffffff03000000 ddffffff03000000 ffffffddc0000000 ddffffff03000000 ddffffff03000000 ffffffddc0000000 ddffffff03000000 ffffffddc0000000 - {e=>-1,c=>-1,a=>-61,b=>0,d=>0,f=>0} c3ffffff0a000000 c3ffffff0a000000 c3ffffff0a000000 ffffffc350000000 c3ffffff0a000000 c3ffffff0a000000 ffffffc350000000 c3ffffff0a000000 ffffffc350000000 - {e=>0,c=>0,a=>94,b=>0,d=>0,f=>1} 5e00000010000000 5e00000010000000 5e00000010000000 0000005e08000000 5e00000010000000 5e00000010000000 0000005e08000000 5e00000010000000 0000005e08000000 - {e=>0,c=>-1,a=>-17,b=>0,d=>0,f=>0} efffffff02000000 efffffff02000000 efffffff02000000 ffffffef40000000 efffffff02000000 efffffff02000000 ffffffef40000000 efffffff02000000 ffffffef40000000 - {e=>-1,c=>-1,a=>-4,b=>0,d=>1,f=>0} fcffffff0e000000 fcffffff0e000000 fcffffff0e000000 fffffffc70000000 fcffffff0e000000 fcffffff0e000000 fffffffc70000000 fcffffff0e000000 fffffffc70000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>-1,a=>66,g=>0,b=>0,d=>0,f=>1} 420000001a000000 420000001a000000 420000001a000000 0000004258000000 420000001a000000 420000001a000000 0000004258000000 420000001a000000 0000004258000000 - {e=>0,c=>-1,a=>88,g=>-1,b=>0,d=>1,f=>1} 5800000036000000 5800000036000000 5800000036000000 000000586c000000 5800000036000000 5800000036000000 000000586c000000 5800000036000000 000000586c000000 - {e=>-1,c=>0,a=>22,g=>0,b=>0,d=>0,f=>0} 1600000008000000 1600000008000000 1600000008000000 0000001610000000 1600000008000000 1600000008000000 0000001610000000 1600000008000000 0000001610000000 - {e=>0,c=>-1,a=>54,g=>-1,b=>0,d=>0,f=>1} 3600000032000000 3600000032000000 3600000032000000 000000364c000000 3600000032000000 3600000032000000 000000364c000000 3600000032000000 000000364c000000 - {e=>-1,c=>-1,a=>98,g=>-1,b=>0,d=>0,f=>0} 620000002a000000 620000002a000000 620000002a000000 0000006254000000 620000002a000000 620000002a000000 0000006254000000 620000002a000000 0000006254000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>-102,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>0} 9affffff2d000000 9affffff2d000000 9affffff2d000000 ffffff9ab4000000 9affffff2d000000 9affffff2d000000 ffffff9ab4000000 9affffff2d000000 ffffff9ab4000000 - {e=>-1,a=>84,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0} 540000000c000000 540000000c000000 540000000c000000 0000005430000000 540000000c000000 540000000c000000 0000005430000000 540000000c000000 0000005430000000 - {e=>-1,a=>-63,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>0} c1ffffff0f000000 c1ffffff0f000000 c1ffffff0f000000 ffffffc1f0000000 c1ffffff0f000000 c1ffffff0f000000 ffffffc1f0000000 c1ffffff0f000000 ffffffc1f0000000 - {e=>0,a=>-36,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>1} dcffffff31000000 dcffffff31000000 dcffffff31000000 ffffffdc8c000000 dcffffff31000000 dcffffff31000000 ffffffdc8c000000 dcffffff31000000 ffffffdc8c000000 - {e=>0,a=>17,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>0} 1100000021000000 1100000021000000 1100000021000000 0000001184000000 1100000021000000 1100000021000000 0000001184000000 1100000021000000 0000001184000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>0,a=>98,d=>1,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>-1} 62000000e4000000 62000000e4000000 62000000e4000000 0000006227000000 62000000e4000000 62000000e4000000 0000006227000000 62000000e4000000 0000006227000000 - {e=>0,a=>-97,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 9fffffff93000000 9fffffff93000000 9fffffff93000000 ffffff9fc9000000 9fffffff93000000 9fffffff93000000 ffffff9fc9000000 9fffffff93000000 ffffff9fc9000000 - {e=>-1,a=>15,d=>1,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>0} 0f0000001e000000 0f0000001e000000 0f0000001e000000 0000000f78000000 0f0000001e000000 0f0000001e000000 0000000f78000000 0f0000001e000000 0000000f78000000 - {e=>-1,a=>-3,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} fdffffff1b000000 fdffffff1b000000 fdffffff1b000000 fffffffdd8000000 fdffffff1b000000 fdffffff1b000000 fffffffdd8000000 fdffffff1b000000 fffffffdd8000000 - {e=>0,a=>101,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>1,i=>-1} 65000000b4000000 65000000b4000000 65000000b4000000 000000652d000000 65000000b4000000 65000000b4000000 000000652d000000 65000000b4000000 000000652d000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-121,d=>1,j=>162,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>0} 87ffffff6ca20000 87ffffff6ca20000 87ffffff6ca20000 ffffff8736a20000 87ffffff6ca20000 87ffffff6ca20000 ffffff8736a20000 87ffffff6ca20000 ffffff8736a20000 - {e=>0,a=>-14,d=>1,j=>104,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>-1} f2ffffff96680000 f2ffffff96680000 f2ffffff96680000 fffffff269680000 f2ffffff96680000 f2ffffff96680000 fffffff269680000 f2ffffff96680000 fffffff269680000 - {e=>-1,a=>4,d=>0,j=>93,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>0} 040000001a5d0000 040000001a5d0000 040000001a5d0000 00000004585d0000 040000001a5d0000 040000001a5d0000 00000004585d0000 040000001a5d0000 00000004585d0000 - {e=>-1,a=>17,d=>0,j=>133,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} 1100000009850000 1100000009850000 1100000009850000 0000001190850000 1100000009850000 1100000009850000 0000001190850000 1100000009850000 0000001190850000 - {e=>0,a=>56,d=>0,j=>65,c=>-1,h=>0,b=>0,g=>-1,f=>0,i=>-1} 38000000a2410000 38000000a2410000 38000000a2410000 0000003845410000 38000000a2410000 38000000a2410000 0000003845410000 38000000a2410000 0000003845410000 = struct mixed { long a; unsigned char b:1; }; - {a=>99,b=>1} 6300000001000000 63000000000000000100000000000000 63000000000000000100000000000000 0000006380000000 6300000001000000 6300000001000000 00000000000000638000000000000000 6300000001000000 0000006380000000 - {a=>8,b=>0} 0800000000000000 08000000000000000000000000000000 08000000000000000000000000000000 0000000800000000 0800000000000000 0800000000000000 00000000000000080000000000000000 0800000000000000 0000000800000000 - {a=>-122,b=>0} 86ffffff00000000 86ffffffffffffff0000000000000000 86ffffffffffffff0000000000000000 ffffff8600000000 86ffffff00000000 86ffffff00000000 ffffffffffffff860000000000000000 86ffffff00000000 ffffff8600000000 - {a=>-2,b=>1} feffffff01000000 feffffffffffffff0100000000000000 feffffffffffffff0100000000000000 fffffffe80000000 feffffff01000000 feffffff01000000 fffffffffffffffe8000000000000000 feffffff01000000 fffffffe80000000 - {a=>102,b=>0} 6600000000000000 66000000000000000000000000000000 66000000000000000000000000000000 0000006600000000 6600000000000000 6600000000000000 00000000000000660000000000000000 6600000000000000 0000006600000000 = struct mixed { long a; unsigned char b:1; signed char c:1; }; - {c=>-1,a=>96,b=>0} 6000000002000000 60000000000000000200000000000000 60000000000000000200000000000000 0000006040000000 6000000002000000 6000000002000000 00000000000000604000000000000000 6000000002000000 0000006040000000 - {c=>-1,a=>59,b=>0} 3b00000002000000 3b000000000000000200000000000000 3b000000000000000200000000000000 0000003b40000000 3b00000002000000 3b00000002000000 000000000000003b4000000000000000 3b00000002000000 0000003b40000000 - {c=>-1,a=>120,b=>1} 7800000003000000 78000000000000000300000000000000 78000000000000000300000000000000 00000078c0000000 7800000003000000 7800000003000000 0000000000000078c000000000000000 7800000003000000 00000078c0000000 - {c=>0,a=>-13,b=>1} f3ffffff01000000 f3ffffffffffffff0100000000000000 f3ffffffffffffff0100000000000000 fffffff380000000 f3ffffff01000000 f3ffffff01000000 fffffffffffffff38000000000000000 f3ffffff01000000 fffffff380000000 - {c=>0,a=>-28,b=>0} e4ffffff00000000 e4ffffffffffffff0000000000000000 e4ffffffffffffff0000000000000000 ffffffe400000000 e4ffffff00000000 e4ffffff00000000 ffffffffffffffe40000000000000000 e4ffffff00000000 ffffffe400000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>0,a=>109,b=>1,d=>0} 6d00000001000000 6d000000000000000100000000000000 6d000000000000000100000000000000 0000006d80000000 6d00000001000000 6d00000001000000 000000000000006d8000000000000000 6d00000001000000 0000006d80000000 - {c=>0,a=>107,b=>0,d=>0} 6b00000000000000 6b000000000000000000000000000000 6b000000000000000000000000000000 0000006b00000000 6b00000000000000 6b00000000000000 000000000000006b0000000000000000 6b00000000000000 0000006b00000000 - {c=>0,a=>28,b=>1,d=>1} 1c00000005000000 1c000000000000000500000000000000 1c000000000000000500000000000000 0000001ca0000000 1c00000005000000 1c00000005000000 000000000000001ca000000000000000 1c00000005000000 0000001ca0000000 - {c=>0,a=>72,b=>0,d=>1} 4800000004000000 48000000000000000400000000000000 48000000000000000400000000000000 0000004820000000 4800000004000000 4800000004000000 00000000000000482000000000000000 4800000004000000 0000004820000000 - {c=>0,a=>-52,b=>0,d=>1} ccffffff04000000 ccffffffffffffff0400000000000000 ccffffffffffffff0400000000000000 ffffffcc20000000 ccffffff04000000 ccffffff04000000 ffffffffffffffcc2000000000000000 ccffffff04000000 ffffffcc20000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>0,a=>25,b=>0,d=>1} 1900000004000000 19000000000000000400000000000000 19000000000000000400000000000000 0000001920000000 1900000004000000 1900000004000000 00000000000000192000000000000000 1900000004000000 0000001920000000 - {e=>-1,c=>-1,a=>59,b=>1,d=>1} 3b0000000f000000 3b000000000000000f00000000000000 3b000000000000000f00000000000000 0000003bf0000000 3b0000000f000000 3b0000000f000000 000000000000003bf000000000000000 3b0000000f000000 0000003bf0000000 - {e=>-1,c=>0,a=>124,b=>0,d=>1} 7c0000000c000000 7c000000000000000c00000000000000 7c000000000000000c00000000000000 0000007c30000000 7c0000000c000000 7c0000000c000000 000000000000007c3000000000000000 7c0000000c000000 0000007c30000000 - {e=>-1,c=>0,a=>74,b=>0,d=>0} 4a00000008000000 4a000000000000000800000000000000 4a000000000000000800000000000000 0000004a10000000 4a00000008000000 4a00000008000000 000000000000004a1000000000000000 4a00000008000000 0000004a10000000 - {e=>-1,c=>0,a=>-39,b=>0,d=>1} d9ffffff0c000000 d9ffffffffffffff0c00000000000000 d9ffffffffffffff0c00000000000000 ffffffd930000000 d9ffffff0c000000 d9ffffff0c000000 ffffffffffffffd93000000000000000 d9ffffff0c000000 ffffffd930000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>-1,c=>-1,a=>-33,b=>0,d=>0,f=>0} dfffffff0a000000 dfffffffffffffff0a00000000000000 dfffffffffffffff0a00000000000000 ffffffdf50000000 dfffffff0a000000 dfffffff0a000000 ffffffffffffffdf5000000000000000 dfffffff0a000000 ffffffdf50000000 - {e=>0,c=>0,a=>-57,b=>1,d=>0,f=>0} c7ffffff01000000 c7ffffffffffffff0100000000000000 c7ffffffffffffff0100000000000000 ffffffc780000000 c7ffffff01000000 c7ffffff01000000 ffffffffffffffc78000000000000000 c7ffffff01000000 ffffffc780000000 - {e=>0,c=>-1,a=>-10,b=>0,d=>1,f=>0} f6ffffff06000000 f6ffffffffffffff0600000000000000 f6ffffffffffffff0600000000000000 fffffff660000000 f6ffffff06000000 f6ffffff06000000 fffffffffffffff66000000000000000 f6ffffff06000000 fffffff660000000 - {e=>0,c=>-1,a=>52,b=>0,d=>0,f=>1} 3400000012000000 34000000000000001200000000000000 34000000000000001200000000000000 0000003448000000 3400000012000000 3400000012000000 00000000000000344800000000000000 3400000012000000 0000003448000000 - {e=>-1,c=>0,a=>127,b=>0,d=>0,f=>0} 7f00000008000000 7f000000000000000800000000000000 7f000000000000000800000000000000 0000007f10000000 7f00000008000000 7f00000008000000 000000000000007f1000000000000000 7f00000008000000 0000007f10000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>0,c=>-1,a=>-7,g=>0,b=>0,d=>0,f=>1} f9ffffff12000000 f9ffffffffffffff1200000000000000 f9ffffffffffffff1200000000000000 fffffff948000000 f9ffffff12000000 f9ffffff12000000 fffffffffffffff94800000000000000 f9ffffff12000000 fffffff948000000 - {e=>0,c=>0,a=>18,g=>-1,b=>1,d=>0,f=>1} 1200000031000000 12000000000000003100000000000000 12000000000000003100000000000000 000000128c000000 1200000031000000 1200000031000000 00000000000000128c00000000000000 1200000031000000 000000128c000000 - {e=>-1,c=>-1,a=>84,g=>0,b=>0,d=>1,f=>1} 540000001e000000 54000000000000001e00000000000000 54000000000000001e00000000000000 0000005478000000 540000001e000000 540000001e000000 00000000000000547800000000000000 540000001e000000 0000005478000000 - {e=>0,c=>-1,a=>21,g=>0,b=>0,d=>1,f=>0} 1500000006000000 15000000000000000600000000000000 15000000000000000600000000000000 0000001560000000 1500000006000000 1500000006000000 00000000000000156000000000000000 1500000006000000 0000001560000000 - {e=>-1,c=>-1,a=>-2,g=>-1,b=>1,d=>0,f=>1} feffffff3b000000 feffffffffffffff3b00000000000000 feffffffffffffff3b00000000000000 fffffffedc000000 feffffff3b000000 feffffff3b000000 fffffffffffffffedc00000000000000 feffffff3b000000 fffffffedc000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>11,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1} 0b00000059000000 0b000000000000005900000000000000 0b000000000000005900000000000000 0000000b9a000000 0b00000059000000 0b00000059000000 000000000000000b9a00000000000000 0b00000059000000 0000000b9a000000 - {e=>0,a=>-17,d=>0,c=>0,h=>1,b=>0,g=>0,f=>0} efffffff40000000 efffffffffffffff4000000000000000 efffffffffffffff4000000000000000 ffffffef02000000 efffffff40000000 efffffff40000000 ffffffffffffffef0200000000000000 efffffff40000000 ffffffef02000000 - {e=>-1,a=>2,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>0} 020000000f000000 02000000000000000f00000000000000 02000000000000000f00000000000000 00000002f0000000 020000000f000000 020000000f000000 0000000000000002f000000000000000 020000000f000000 00000002f0000000 - {e=>0,a=>6,d=>1,c=>-1,h=>0,b=>1,g=>-1,f=>1} 0600000037000000 06000000000000003700000000000000 06000000000000003700000000000000 00000006ec000000 0600000037000000 0600000037000000 0000000000000006ec00000000000000 0600000037000000 00000006ec000000 - {e=>0,a=>103,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>0} 6700000021000000 67000000000000002100000000000000 67000000000000002100000000000000 0000006784000000 6700000021000000 6700000021000000 00000000000000678400000000000000 6700000021000000 0000006784000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>-1,a=>-66,d=>0,c=>0,h=>0,b=>1,g=>0,f=>1,i=>-1} beffffff99000000 beffffffffffffff9900000000000000 beffffffffffffff9900000000000000 ffffffbe99000000 beffffff99000000 beffffff99000000 ffffffffffffffbe9900000000000000 beffffff99000000 ffffffbe99000000 - {e=>0,a=>-106,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>0} 96ffffff60000000 96ffffffffffffff6000000000000000 96ffffffffffffff6000000000000000 ffffff9606000000 96ffffff60000000 96ffffff60000000 ffffffffffffff960600000000000000 96ffffff60000000 ffffff9606000000 - {e=>-1,a=>-86,d=>0,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} aaffffff09000000 aaffffffffffffff0900000000000000 aaffffffffffffff0900000000000000 ffffffaa90000000 aaffffff09000000 aaffffff09000000 ffffffffffffffaa9000000000000000 aaffffff09000000 ffffffaa90000000 - {e=>-1,a=>-98,d=>0,c=>0,h=>0,b=>0,g=>0,f=>1,i=>0} 9effffff18000000 9effffffffffffff1800000000000000 9effffffffffffff1800000000000000 ffffff9e18000000 9effffff18000000 9effffff18000000 ffffffffffffff9e1800000000000000 9effffff18000000 ffffff9e18000000 - {e=>0,a=>40,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1,i=>0} 2800000051000000 28000000000000005100000000000000 28000000000000005100000000000000 000000288a000000 2800000051000000 2800000051000000 00000000000000288a00000000000000 2800000051000000 000000288a000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-49,d=>1,j=>205,c=>0,h=>0,b=>1,g=>0,f=>1,i=>-1} cfffffff9dcd0000 cfffffffffffffff9dcd000000000000 cfffffffffffffff9dcd000000000000 ffffffcfb9cd0000 cfffffff9dcd0000 cfffffff9dcd0000 ffffffffffffffcfb9cd000000000000 cfffffff9dcd0000 ffffffcfb9cd0000 - {e=>-1,a=>126,d=>0,j=>0,c=>-1,h=>1,b=>1,g=>-1,f=>0,i=>0} 7e0000006b000000 7e000000000000006b00000000000000 7e000000000000006b00000000000000 0000007ed6000000 7e0000006b000000 7e0000006b000000 000000000000007ed600000000000000 7e0000006b000000 0000007ed6000000 - {e=>0,a=>-31,d=>0,j=>105,c=>-1,h=>0,b=>1,g=>0,f=>0,i=>-1} e1ffffff83690000 e1ffffffffffffff8369000000000000 e1ffffffffffffff8369000000000000 ffffffe1c1690000 e1ffffff83690000 e1ffffff83690000 ffffffffffffffe1c169000000000000 e1ffffff83690000 ffffffe1c1690000 - {e=>-1,a=>-1,d=>1,j=>21,c=>-1,h=>0,b=>1,g=>-1,f=>0,i=>0} ffffffff2f150000 ffffffffffffffff2f15000000000000 ffffffffffffffff2f15000000000000 fffffffff4150000 ffffffff2f150000 ffffffff2f150000 fffffffffffffffff415000000000000 ffffffff2f150000 fffffffff4150000 - {e=>-1,a=>99,d=>0,j=>132,c=>0,h=>0,b=>0,g=>0,f=>1,i=>0} 6300000018840000 63000000000000001884000000000000 63000000000000001884000000000000 0000006318840000 6300000018840000 6300000018840000 00000000000000631884000000000000 6300000018840000 0000006318840000 = struct force_align1 { unsigned char a:1; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>1} 01 01 01 80 01000000 01 80 01 80 = struct force_align1 { unsigned char a:1; unsigned char b:1; }; - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>0,b=>1} 02 02 02 40 02000000 02 40 02 40 - {a=>0,b=>1} 02 02 02 40 02000000 02 40 02 40 - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; }; - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0,b=>1} 02 02 02 40 02000000 02 40 02 40 - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>1,b=>0} 01 01 01 80 01000000 01 80 01 80 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; unsigned char c:1; }; - {c=>1,a=>1,b=>0} 0101 0101 0101 8080 01010000 0101 8080 0101 8080 - {c=>1,a=>1,b=>1} 0301 0301 0301 c080 03010000 0301 c080 0301 c080 - {c=>0,a=>1,b=>1} 0300 0300 0300 c000 03000000 0300 c000 0300 c000 - {c=>0,a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {c=>0,a=>1,b=>0} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; unsigned char c:1; unsigned int d; }; - {c=>0,a=>0,b=>1,d=>114} 0200000072000000 0200000072000000 0200000072000000 4000000000000072 0200000072000000 0200000072000000 4000000000000072 0200000072000000 4000000000000072 - {c=>0,a=>1,b=>0,d=>177} 01000000b1000000 01000000b1000000 01000000b1000000 80000000000000b1 01000000b1000000 01000000b1000000 80000000000000b1 01000000b1000000 80000000000000b1 - {c=>1,a=>1,b=>1,d=>163} 03010000a3000000 03010000a3000000 03010000a3000000 c0800000000000a3 03010000a3000000 03010000a3000000 c0800000000000a3 03010000a3000000 c0800000000000a3 - {c=>0,a=>0,b=>1,d=>180} 02000000b4000000 02000000b4000000 02000000b4000000 40000000000000b4 02000000b4000000 02000000b4000000 40000000000000b4 02000000b4000000 40000000000000b4 - {c=>0,a=>1,b=>0,d=>131} 0100000083000000 0100000083000000 0100000083000000 8000000000000083 0100000083000000 0100000083000000 8000000000000083 0100000083000000 8000000000000083 = struct force_align1 { char a; unsigned char b:1; }; - {a=>105,b=>1} 6901 6901 6901 6980 69010000 6901 6980 6901 6980 - {a=>-17,b=>1} ef01 ef01 ef01 ef80 ef010000 ef01 ef80 ef01 ef80 - {a=>-128,b=>1} 8001 8001 8001 8080 80010000 8001 8080 8001 8080 - {a=>35,b=>0} 2300 2300 2300 2300 23000000 2300 2300 2300 2300 - {a=>-120,b=>0} 8800 8800 8800 8800 88000000 8800 8800 8800 8800 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>87,b=>0} 5700 5700 5700 5700 57000000 5700 5700 5700 5700 - {c=>0,a=>12,b=>1} 0c01 0c01 0c01 0c80 0c010000 0c01 0c80 0c01 0c80 - {c=>0,a=>107,b=>0} 6b00 6b00 6b00 6b00 6b000000 6b00 6b00 6b00 6b00 - {c=>1,a=>-100,b=>0} 9c02 9c02 9c02 9c40 9c020000 9c02 9c40 9c02 9c40 - {c=>1,a=>-61,b=>0} c302 c302 c302 c340 c3020000 c302 c340 c302 c340 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>0,a=>-59,b=>0} c500 c500 c500 c500 c5000000 c500 c500 c500 c500 - {c=>0,a=>-128,b=>0} 8000 8000 8000 8000 80000000 8000 8000 8000 8000 - {c=>0,a=>-43,b=>1} d501 d501 d501 d580 d5010000 d501 d580 d501 d580 - {c=>0,a=>55,b=>0} 3700 3700 3700 3700 37000000 3700 3700 3700 3700 - {c=>0,a=>-27,b=>1} e501 e501 e501 e580 e5010000 e501 e580 e501 e580 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>-22,b=>1,d=>0} ea0300 ea0300 ea0300 eac000 ea030000 ea0300 eac000 ea0300 eac000 - {c=>1,a=>115,b=>1,d=>0} 730300 730300 730300 73c000 73030000 730300 73c000 730300 73c000 - {c=>1,a=>-2,b=>0,d=>0} fe0200 fe0200 fe0200 fe4000 fe020000 fe0200 fe4000 fe0200 fe4000 - {c=>0,a=>-40,b=>1,d=>0} d80100 d80100 d80100 d88000 d8010000 d80100 d88000 d80100 d88000 - {c=>1,a=>52,b=>0,d=>0} 340200 340200 340200 344000 34020000 340200 344000 340200 344000 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>84,c=>0,a=>-2,b=>1,d=>1} fe01010054000000 fe01010054000000 fe01010054000000 fe80800000000054 fe01010054000000 fe01010054000000 fe80800000000054 fe01010054000000 fe80800000000054 - {e=>26,c=>1,a=>-22,b=>0,d=>1} ea0201001a000000 ea0201001a000000 ea0201001a000000 ea4080000000001a ea0201001a000000 ea0201001a000000 ea4080000000001a ea0201001a000000 ea4080000000001a - {e=>229,c=>0,a=>-4,b=>1,d=>0} fc010000e5000000 fc010000e5000000 fc010000e5000000 fc800000000000e5 fc010000e5000000 fc010000e5000000 fc800000000000e5 fc010000e5000000 fc800000000000e5 - {e=>140,c=>0,a=>-121,b=>0,d=>1} 870001008c000000 870001008c000000 870001008c000000 870080000000008c 870001008c000000 870001008c000000 870080000000008c 870001008c000000 870080000000008c - {e=>135,c=>0,a=>23,b=>0,d=>0} 1700000087000000 1700000087000000 1700000087000000 1700000000000087 1700000087000000 1700000087000000 1700000000000087 1700000087000000 1700000000000087 = struct force_align1 { short a; unsigned char b:1; }; - {a=>108,b=>1} 6c000100 6c000100 6c000100 006c8000 6c000100 6c000100 006c8000 6c000100 006c8000 - {a=>-114,b=>0} 8eff0000 8eff0000 8eff0000 ff8e0000 8eff0000 8eff0000 ff8e0000 8eff0000 ff8e0000 - {a=>64,b=>1} 40000100 40000100 40000100 00408000 40000100 40000100 00408000 40000100 00408000 - {a=>19,b=>1} 13000100 13000100 13000100 00138000 13000100 13000100 00138000 13000100 00138000 - {a=>-123,b=>0} 85ff0000 85ff0000 85ff0000 ff850000 85ff0000 85ff0000 ff850000 85ff0000 ff850000 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>-11,b=>1} f5ff0100 f5ff0100 f5ff0100 fff58000 f5ff0100 f5ff0100 fff58000 f5ff0100 fff58000 - {c=>1,a=>90,b=>0} 5a000200 5a000200 5a000200 005a4000 5a000200 5a000200 005a4000 5a000200 005a4000 - {c=>0,a=>107,b=>0} 6b000000 6b000000 6b000000 006b0000 6b000000 6b000000 006b0000 6b000000 006b0000 - {c=>0,a=>-75,b=>1} b5ff0100 b5ff0100 b5ff0100 ffb58000 b5ff0100 b5ff0100 ffb58000 b5ff0100 ffb58000 - {c=>1,a=>-80,b=>0} b0ff0200 b0ff0200 b0ff0200 ffb04000 b0ff0200 b0ff0200 ffb04000 b0ff0200 ffb04000 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>1,a=>105,b=>1} 69000300 69000300 69000300 0069c000 69000300 69000300 0069c000 69000300 0069c000 - {c=>0,a=>49,b=>1} 31000100 31000100 31000100 00318000 31000100 31000100 00318000 31000100 00318000 - {c=>1,a=>37,b=>0} 25000200 25000200 25000200 00254000 25000200 25000200 00254000 25000200 00254000 - {c=>0,a=>-82,b=>0} aeff0000 aeff0000 aeff0000 ffae0000 aeff0000 aeff0000 ffae0000 aeff0000 ffae0000 - {c=>1,a=>-88,b=>1} a8ff0300 a8ff0300 a8ff0300 ffa8c000 a8ff0300 a8ff0300 ffa8c000 a8ff0300 ffa8c000 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>0,a=>-121,b=>1,d=>0} 87ff0100 87ff0100 87ff0100 ff878000 87ff0100 87ff0100 ff878000 87ff0100 ff878000 - {c=>1,a=>80,b=>0,d=>1} 50000201 50000201 50000201 00504080 50000201 50000201 00504080 50000201 00504080 - {c=>0,a=>-79,b=>1,d=>1} b1ff0101 b1ff0101 b1ff0101 ffb18080 b1ff0101 b1ff0101 ffb18080 b1ff0101 ffb18080 - {c=>0,a=>106,b=>1,d=>0} 6a000100 6a000100 6a000100 006a8000 6a000100 6a000100 006a8000 6a000100 006a8000 - {c=>1,a=>113,b=>0,d=>1} 71000201 71000201 71000201 00714080 71000201 71000201 00714080 71000201 00714080 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>56,c=>0,a=>80,b=>0,d=>0} 5000000038000000 5000000038000000 5000000038000000 0050000000000038 5000000038000000 5000000038000000 0050000000000038 5000000038000000 0050000000000038 - {e=>189,c=>1,a=>6,b=>1,d=>1} 06000301bd000000 06000301bd000000 06000301bd000000 0006c080000000bd 06000301bd000000 06000301bd000000 0006c080000000bd 06000301bd000000 0006c080000000bd - {e=>198,c=>1,a=>-106,b=>0,d=>0} 96ff0200c6000000 96ff0200c6000000 96ff0200c6000000 ff964000000000c6 96ff0200c6000000 96ff0200c6000000 ff964000000000c6 96ff0200c6000000 ff964000000000c6 - {e=>167,c=>1,a=>-17,b=>1,d=>0} efff0300a7000000 efff0300a7000000 efff0300a7000000 ffefc000000000a7 efff0300a7000000 efff0300a7000000 ffefc000000000a7 efff0300a7000000 ffefc000000000a7 - {e=>89,c=>0,a=>-78,b=>1,d=>0} b2ff010059000000 b2ff010059000000 b2ff010059000000 ffb2800000000059 b2ff010059000000 b2ff010059000000 ffb2800000000059 b2ff010059000000 ffb2800000000059 = struct force_align1 { int a; unsigned char b:1; }; - {a=>19,b=>1} 1300000001000000 1300000001000000 1300000001000000 0000001380000000 1300000001000000 1300000001000000 0000001380000000 1300000001000000 0000001380000000 - {a=>79,b=>0} 4f00000000000000 4f00000000000000 4f00000000000000 0000004f00000000 4f00000000000000 4f00000000000000 0000004f00000000 4f00000000000000 0000004f00000000 - {a=>-101,b=>1} 9bffffff01000000 9bffffff01000000 9bffffff01000000 ffffff9b80000000 9bffffff01000000 9bffffff01000000 ffffff9b80000000 9bffffff01000000 ffffff9b80000000 - {a=>11,b=>1} 0b00000001000000 0b00000001000000 0b00000001000000 0000000b80000000 0b00000001000000 0b00000001000000 0000000b80000000 0b00000001000000 0000000b80000000 - {a=>79,b=>0} 4f00000000000000 4f00000000000000 4f00000000000000 0000004f00000000 4f00000000000000 4f00000000000000 0000004f00000000 4f00000000000000 0000004f00000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-25,b=>0} e7ffffff02000000 e7ffffff02000000 e7ffffff02000000 ffffffe740000000 e7ffffff02000000 e7ffffff02000000 ffffffe740000000 e7ffffff02000000 ffffffe740000000 - {c=>1,a=>-98,b=>0} 9effffff02000000 9effffff02000000 9effffff02000000 ffffff9e40000000 9effffff02000000 9effffff02000000 ffffff9e40000000 9effffff02000000 ffffff9e40000000 - {c=>0,a=>-118,b=>0} 8affffff00000000 8affffff00000000 8affffff00000000 ffffff8a00000000 8affffff00000000 8affffff00000000 ffffff8a00000000 8affffff00000000 ffffff8a00000000 - {c=>1,a=>-46,b=>1} d2ffffff03000000 d2ffffff03000000 d2ffffff03000000 ffffffd2c0000000 d2ffffff03000000 d2ffffff03000000 ffffffd2c0000000 d2ffffff03000000 ffffffd2c0000000 - {c=>0,a=>92,b=>0} 5c00000000000000 5c00000000000000 5c00000000000000 0000005c00000000 5c00000000000000 5c00000000000000 0000005c00000000 5c00000000000000 0000005c00000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>0,a=>27,b=>1} 1b00000001000000 1b00000001000000 1b00000001000000 0000001b80000000 1b00000001000000 1b00000001000000 0000001b80000000 1b00000001000000 0000001b80000000 - {c=>1,a=>71,b=>1} 4700000003000000 4700000003000000 4700000003000000 00000047c0000000 4700000003000000 4700000003000000 00000047c0000000 4700000003000000 00000047c0000000 - {c=>0,a=>53,b=>0} 3500000000000000 3500000000000000 3500000000000000 0000003500000000 3500000000000000 3500000000000000 0000003500000000 3500000000000000 0000003500000000 - {c=>0,a=>-126,b=>1} 82ffffff01000000 82ffffff01000000 82ffffff01000000 ffffff8280000000 82ffffff01000000 82ffffff01000000 ffffff8280000000 82ffffff01000000 ffffff8280000000 - {c=>0,a=>-59,b=>1} c5ffffff01000000 c5ffffff01000000 c5ffffff01000000 ffffffc580000000 c5ffffff01000000 c5ffffff01000000 ffffffc580000000 c5ffffff01000000 ffffffc580000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>49,b=>1,d=>0} 3100000003000000 3100000003000000 3100000003000000 00000031c0000000 3100000003000000 3100000003000000 00000031c0000000 3100000003000000 00000031c0000000 - {c=>1,a=>-97,b=>0,d=>0} 9fffffff02000000 9fffffff02000000 9fffffff02000000 ffffff9f40000000 9fffffff02000000 9fffffff02000000 ffffff9f40000000 9fffffff02000000 ffffff9f40000000 - {c=>1,a=>114,b=>1,d=>1} 7200000003010000 7200000003010000 7200000003010000 00000072c0800000 7200000003010000 7200000003010000 00000072c0800000 7200000003010000 00000072c0800000 - {c=>0,a=>-38,b=>1,d=>0} daffffff01000000 daffffff01000000 daffffff01000000 ffffffda80000000 daffffff01000000 daffffff01000000 ffffffda80000000 daffffff01000000 ffffffda80000000 - {c=>0,a=>-74,b=>0,d=>0} b6ffffff00000000 b6ffffff00000000 b6ffffff00000000 ffffffb600000000 b6ffffff00000000 b6ffffff00000000 ffffffb600000000 b6ffffff00000000 ffffffb600000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>174,c=>0,a=>102,b=>0,d=>1} 6600000000010000ae000000 6600000000010000ae000000 6600000000010000ae000000 0000006600800000000000ae 6600000000010000ae000000 6600000000010000ae000000 0000006600800000000000ae 6600000000010000ae000000 0000006600800000000000ae - {e=>77,c=>1,a=>85,b=>0,d=>0} 55000000020000004d000000 55000000020000004d000000 55000000020000004d000000 00000055400000000000004d 55000000020000004d000000 55000000020000004d000000 00000055400000000000004d 55000000020000004d000000 00000055400000000000004d - {e=>97,c=>1,a=>-95,b=>0,d=>1} a1ffffff0201000061000000 a1ffffff0201000061000000 a1ffffff0201000061000000 ffffffa14080000000000061 a1ffffff0201000061000000 a1ffffff0201000061000000 ffffffa14080000000000061 a1ffffff0201000061000000 ffffffa14080000000000061 - {e=>21,c=>1,a=>-30,b=>0,d=>1} e2ffffff0201000015000000 e2ffffff0201000015000000 e2ffffff0201000015000000 ffffffe24080000000000015 e2ffffff0201000015000000 e2ffffff0201000015000000 ffffffe24080000000000015 e2ffffff0201000015000000 ffffffe24080000000000015 - {e=>169,c=>0,a=>-9,b=>1,d=>0} f7ffffff01000000a9000000 f7ffffff01000000a9000000 f7ffffff01000000a9000000 fffffff780000000000000a9 f7ffffff01000000a9000000 f7ffffff01000000a9000000 fffffff780000000000000a9 f7ffffff01000000a9000000 fffffff780000000000000a9 = struct force_align1 { long a; unsigned char b:1; }; - {a=>67,b=>0} 4300000000000000 43000000000000000000000000000000 43000000000000000000000000000000 0000004300000000 4300000000000000 4300000000000000 00000000000000430000000000000000 4300000000000000 0000004300000000 - {a=>122,b=>0} 7a00000000000000 7a000000000000000000000000000000 7a000000000000000000000000000000 0000007a00000000 7a00000000000000 7a00000000000000 000000000000007a0000000000000000 7a00000000000000 0000007a00000000 - {a=>104,b=>0} 6800000000000000 68000000000000000000000000000000 68000000000000000000000000000000 0000006800000000 6800000000000000 6800000000000000 00000000000000680000000000000000 6800000000000000 0000006800000000 - {a=>-99,b=>0} 9dffffff00000000 9dffffffffffffff0000000000000000 9dffffffffffffff0000000000000000 ffffff9d00000000 9dffffff00000000 9dffffff00000000 ffffffffffffff9d0000000000000000 9dffffff00000000 ffffff9d00000000 - {a=>-11,b=>1} f5ffffff01000000 f5ffffffffffffff0100000000000000 f5ffffffffffffff0100000000000000 fffffff580000000 f5ffffff01000000 f5ffffff01000000 fffffffffffffff58000000000000000 f5ffffff01000000 fffffff580000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-95,b=>0} a1ffffff02000000 a1ffffffffffffff0200000000000000 a1ffffffffffffff0200000000000000 ffffffa140000000 a1ffffff02000000 a1ffffff02000000 ffffffffffffffa14000000000000000 a1ffffff02000000 ffffffa140000000 - {c=>0,a=>74,b=>1} 4a00000001000000 4a000000000000000100000000000000 4a000000000000000100000000000000 0000004a80000000 4a00000001000000 4a00000001000000 000000000000004a8000000000000000 4a00000001000000 0000004a80000000 - {c=>0,a=>31,b=>1} 1f00000001000000 1f000000000000000100000000000000 1f000000000000000100000000000000 0000001f80000000 1f00000001000000 1f00000001000000 000000000000001f8000000000000000 1f00000001000000 0000001f80000000 - {c=>0,a=>-31,b=>1} e1ffffff01000000 e1ffffffffffffff0100000000000000 e1ffffffffffffff0100000000000000 ffffffe180000000 e1ffffff01000000 e1ffffff01000000 ffffffffffffffe18000000000000000 e1ffffff01000000 ffffffe180000000 - {c=>0,a=>47,b=>1} 2f00000001000000 2f000000000000000100000000000000 2f000000000000000100000000000000 0000002f80000000 2f00000001000000 2f00000001000000 000000000000002f8000000000000000 2f00000001000000 0000002f80000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>1,a=>-52,b=>0} ccffffff02000000 ccffffffffffffff0200000000000000 ccffffffffffffff0200000000000000 ffffffcc40000000 ccffffff02000000 ccffffff02000000 ffffffffffffffcc4000000000000000 ccffffff02000000 ffffffcc40000000 - {c=>1,a=>9,b=>0} 0900000002000000 09000000000000000200000000000000 09000000000000000200000000000000 0000000940000000 0900000002000000 0900000002000000 00000000000000094000000000000000 0900000002000000 0000000940000000 - {c=>1,a=>9,b=>1} 0900000003000000 09000000000000000300000000000000 09000000000000000300000000000000 00000009c0000000 0900000003000000 0900000003000000 0000000000000009c000000000000000 0900000003000000 00000009c0000000 - {c=>1,a=>32,b=>1} 2000000003000000 20000000000000000300000000000000 20000000000000000300000000000000 00000020c0000000 2000000003000000 2000000003000000 0000000000000020c000000000000000 2000000003000000 00000020c0000000 - {c=>1,a=>-30,b=>0} e2ffffff02000000 e2ffffffffffffff0200000000000000 e2ffffffffffffff0200000000000000 ffffffe240000000 e2ffffff02000000 e2ffffff02000000 ffffffffffffffe24000000000000000 e2ffffff02000000 ffffffe240000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>-45,b=>1,d=>0} d3ffffff03000000 d3ffffffffffffff0300000000000000 d3ffffffffffffff0300000000000000 ffffffd3c0000000 d3ffffff03000000 d3ffffff03000000 ffffffffffffffd3c000000000000000 d3ffffff03000000 ffffffd3c0000000 - {c=>0,a=>44,b=>0,d=>0} 2c00000000000000 2c000000000000000000000000000000 2c000000000000000000000000000000 0000002c00000000 2c00000000000000 2c00000000000000 000000000000002c0000000000000000 2c00000000000000 0000002c00000000 - {c=>1,a=>88,b=>1,d=>1} 5800000003010000 58000000000000000301000000000000 58000000000000000301000000000000 00000058c0800000 5800000003010000 5800000003010000 0000000000000058c080000000000000 5800000003010000 00000058c0800000 - {c=>1,a=>99,b=>0,d=>0} 6300000002000000 63000000000000000200000000000000 63000000000000000200000000000000 0000006340000000 6300000002000000 6300000002000000 00000000000000634000000000000000 6300000002000000 0000006340000000 - {c=>1,a=>94,b=>1,d=>0} 5e00000003000000 5e000000000000000300000000000000 5e000000000000000300000000000000 0000005ec0000000 5e00000003000000 5e00000003000000 000000000000005ec000000000000000 5e00000003000000 0000005ec0000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>84,c=>1,a=>-57,b=>0,d=>1} c7ffffff0201000054000000 c7ffffffffffffff0201000054000000 c7ffffffffffffff0201000054000000 ffffffc74080000000000054 c7ffffff0201000054000000 c7ffffff0201000054000000 ffffffffffffffc74080000000000054 c7ffffff0201000054000000 ffffffc74080000000000054 - {e=>202,c=>0,a=>-67,b=>0,d=>1} bdffffff00010000ca000000 bdffffffffffffff00010000ca000000 bdffffffffffffff00010000ca000000 ffffffbd00800000000000ca bdffffff00010000ca000000 bdffffff00010000ca000000 ffffffffffffffbd00800000000000ca bdffffff00010000ca000000 ffffffbd00800000000000ca - {e=>108,c=>0,a=>108,b=>1,d=>0} 6c000000010000006c000000 6c00000000000000010000006c000000 6c00000000000000010000006c000000 0000006c800000000000006c 6c000000010000006c000000 6c000000010000006c000000 000000000000006c800000000000006c 6c000000010000006c000000 0000006c800000000000006c - {e=>5,c=>0,a=>51,b=>1,d=>0} 330000000100000005000000 33000000000000000100000005000000 33000000000000000100000005000000 000000338000000000000005 330000000100000005000000 330000000100000005000000 00000000000000338000000000000005 330000000100000005000000 000000338000000000000005 - {e=>228,c=>0,a=>-15,b=>0,d=>0} f1ffffff00000000e4000000 f1ffffffffffffff00000000e4000000 f1ffffffffffffff00000000e4000000 fffffff100000000000000e4 f1ffffff00000000e4000000 f1ffffff00000000e4000000 fffffffffffffff100000000000000e4 f1ffffff00000000e4000000 fffffff100000000000000e4 = struct force_align2 { unsigned char a:2; }; - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 = struct force_align2 { unsigned char a:2; unsigned char b:2; }; - {a=>0,b=>3} 0c 0c 0c 30 0c000000 0c 30 0c 30 - {a=>0,b=>1} 04 04 04 10 04000000 04 10 04 10 - {a=>2,b=>3} 0e 0e 0e b0 0e000000 0e b0 0e b0 - {a=>2,b=>1} 06 06 06 90 06000000 06 90 06 90 - {a=>3,b=>3} 0f 0f 0f f0 0f000000 0f f0 0f f0 = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; }; - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0,b=>1} 04 04 04 10 04000000 04 10 04 10 - {a=>1,b=>3} 0d 0d 0d 70 0d000000 0d 70 0d 70 - {a=>2,b=>0} 02 02 02 80 02000000 02 80 02 80 - {a=>0,b=>2} 08 08 08 20 08000000 08 20 08 20 = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; unsigned char c:2; }; - {c=>1,a=>1,b=>3} 0d01 0d01 0d01 7040 0d010000 0d01 7040 0d01 7040 - {c=>2,a=>2,b=>1} 0602 0602 0602 9080 06020000 0602 9080 0602 9080 - {c=>1,a=>2,b=>0} 0201 0201 0201 8040 02010000 0201 8040 0201 8040 - {c=>2,a=>3,b=>3} 0f02 0f02 0f02 f080 0f020000 0f02 f080 0f02 f080 - {c=>0,a=>1,b=>3} 0d00 0d00 0d00 7000 0d000000 0d00 7000 0d00 7000 = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; unsigned char c:2; unsigned short d; }; - {c=>0,a=>1,b=>0,d=>112} 01007000 01007000 01007000 40000070 01007000 01007000 40000070 01007000 40000070 - {c=>0,a=>3,b=>3,d=>128} 0f008000 0f008000 0f008000 f0000080 0f008000 0f008000 f0000080 0f008000 f0000080 - {c=>1,a=>2,b=>0,d=>190} 0201be00 0201be00 0201be00 804000be 0201be00 0201be00 804000be 0201be00 804000be - {c=>0,a=>3,b=>2,d=>63} 0b003f00 0b003f00 0b003f00 e000003f 0b003f00 0b003f00 e000003f 0b003f00 e000003f - {c=>2,a=>2,b=>2,d=>241} 0a02f100 0a02f100 0a02f100 a08000f1 0a02f100 0a02f100 a08000f1 0a02f100 a08000f1 = struct force_align2 { char a; unsigned char b:2; }; - {a=>74,b=>1} 4a01 4a01 4a01 4a40 4a010000 4a01 4a40 4a01 4a40 - {a=>-7,b=>1} f901 f901 f901 f940 f9010000 f901 f940 f901 f940 - {a=>102,b=>1} 6601 6601 6601 6640 66010000 6601 6640 6601 6640 - {a=>10,b=>3} 0a03 0a03 0a03 0ac0 0a030000 0a03 0ac0 0a03 0ac0 - {a=>-7,b=>2} f902 f902 f902 f980 f9020000 f902 f980 f902 f980 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; }; - {c=>3,a=>7,b=>1} 070d 070d 070d 0770 070d0000 070d 0770 070d 0770 - {c=>3,a=>50,b=>0} 320c 320c 320c 3230 320c0000 320c 3230 320c 3230 - {c=>2,a=>-125,b=>0} 8308 8308 8308 8320 83080000 8308 8320 8308 8320 - {c=>2,a=>-32,b=>0} e008 e008 e008 e020 e0080000 e008 e020 e008 e020 - {c=>1,a=>68,b=>0} 4404 4404 4404 4410 44040000 4404 4410 4404 4410 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>2,a=>-127,b=>0} 8108 8108 8108 8120 81080000 8108 8120 8108 8120 - {c=>1,a=>-27,b=>0} e504 e504 e504 e510 e5040000 e504 e510 e504 e510 - {c=>2,a=>30,b=>1} 1e09 1e09 1e09 1e60 1e090000 1e09 1e60 1e09 1e60 - {c=>0,a=>-25,b=>1} e701 e701 e701 e740 e7010000 e701 e740 e701 e740 - {c=>2,a=>-15,b=>1} f109 f109 f109 f160 f1090000 f109 f160 f109 f160 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>1,a=>75,b=>1,d=>2} 4b0502 4b0502 4b0502 4b5080 4b050200 4b0502 4b5080 4b0502 4b5080 - {c=>1,a=>18,b=>1,d=>3} 120503 120503 120503 1250c0 12050300 120503 1250c0 120503 1250c0 - {c=>2,a=>-39,b=>2,d=>0} d90a00 d90a00 d90a00 d9a000 d90a0000 d90a00 d9a000 d90a00 d9a000 - {c=>3,a=>-91,b=>2,d=>0} a50e00 a50e00 a50e00 a5b000 a50e0000 a50e00 a5b000 a50e00 a5b000 - {c=>1,a=>60,b=>1,d=>0} 3c0500 3c0500 3c0500 3c5000 3c050000 3c0500 3c5000 3c0500 3c5000 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>11,c=>2,a=>39,b=>0,d=>2} 270802000b00 270802000b00 270802000b00 27208000000b 270802000b000000 270802000b00 27208000000b 270802000b00 27208000000b - {e=>219,c=>0,a=>42,b=>3,d=>1} 2a030100db00 2a030100db00 2a030100db00 2ac0400000db 2a030100db000000 2a030100db00 2ac0400000db 2a030100db00 2ac0400000db - {e=>154,c=>0,a=>-14,b=>1,d=>1} f20101009a00 f20101009a00 f20101009a00 f2404000009a f20101009a000000 f20101009a00 f2404000009a f20101009a00 f2404000009a - {e=>86,c=>1,a=>20,b=>3,d=>1} 140701005600 140701005600 140701005600 14d040000056 1407010056000000 140701005600 14d040000056 140701005600 14d040000056 - {e=>7,c=>0,a=>-109,b=>1,d=>1} 930101000700 930101000700 930101000700 934040000007 9301010007000000 930101000700 934040000007 930101000700 934040000007 = struct force_align2 { short a; unsigned char b:2; }; - {a=>-77,b=>0} b3ff0000 b3ff0000 b3ff0000 ffb30000 b3ff0000 b3ff0000 ffb30000 b3ff0000 ffb30000 - {a=>32,b=>1} 20000100 20000100 20000100 00204000 20000100 20000100 00204000 20000100 00204000 - {a=>-116,b=>3} 8cff0300 8cff0300 8cff0300 ff8cc000 8cff0300 8cff0300 ff8cc000 8cff0300 ff8cc000 - {a=>127,b=>2} 7f000200 7f000200 7f000200 007f8000 7f000200 7f000200 007f8000 7f000200 007f8000 - {a=>47,b=>2} 2f000200 2f000200 2f000200 002f8000 2f000200 2f000200 002f8000 2f000200 002f8000 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; }; - {c=>1,a=>-56,b=>2} c8ff0600 c8ff0600 c8ff0600 ffc89000 c8ff0600 c8ff0600 ffc89000 c8ff0600 ffc89000 - {c=>1,a=>96,b=>0} 60000400 60000400 60000400 00601000 60000400 60000400 00601000 60000400 00601000 - {c=>1,a=>-89,b=>1} a7ff0500 a7ff0500 a7ff0500 ffa75000 a7ff0500 a7ff0500 ffa75000 a7ff0500 ffa75000 - {c=>1,a=>-121,b=>1} 87ff0500 87ff0500 87ff0500 ff875000 87ff0500 87ff0500 ff875000 87ff0500 ff875000 - {c=>2,a=>80,b=>3} 50000b00 50000b00 50000b00 0050e000 50000b00 50000b00 0050e000 50000b00 0050e000 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>0,a=>-50,b=>1} ceff0100 ceff0100 ceff0100 ffce4000 ceff0100 ceff0100 ffce4000 ceff0100 ffce4000 - {c=>3,a=>26,b=>0} 1a000c00 1a000c00 1a000c00 001a3000 1a000c00 1a000c00 001a3000 1a000c00 001a3000 - {c=>2,a=>-116,b=>2} 8cff0a00 8cff0a00 8cff0a00 ff8ca000 8cff0a00 8cff0a00 ff8ca000 8cff0a00 ff8ca000 - {c=>3,a=>-72,b=>2} b8ff0e00 b8ff0e00 b8ff0e00 ffb8b000 b8ff0e00 b8ff0e00 ffb8b000 b8ff0e00 ffb8b000 - {c=>1,a=>87,b=>2} 57000600 57000600 57000600 00579000 57000600 57000600 00579000 57000600 00579000 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>0,a=>-94,b=>1,d=>3} a2ff0103 a2ff0103 a2ff0103 ffa240c0 a2ff0103 a2ff0103 ffa240c0 a2ff0103 ffa240c0 - {c=>0,a=>-117,b=>0,d=>1} 8bff0001 8bff0001 8bff0001 ff8b0040 8bff0001 8bff0001 ff8b0040 8bff0001 ff8b0040 - {c=>2,a=>18,b=>2,d=>2} 12000a02 12000a02 12000a02 0012a080 12000a02 12000a02 0012a080 12000a02 0012a080 - {c=>3,a=>-15,b=>0,d=>0} f1ff0c00 f1ff0c00 f1ff0c00 fff13000 f1ff0c00 f1ff0c00 fff13000 f1ff0c00 fff13000 - {c=>0,a=>-39,b=>2,d=>3} d9ff0203 d9ff0203 d9ff0203 ffd980c0 d9ff0203 d9ff0203 ffd980c0 d9ff0203 ffd980c0 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>213,c=>2,a=>98,b=>3,d=>0} 62000b00d500 62000b00d500 62000b00d500 0062e00000d5 62000b00d5000000 62000b00d500 0062e00000d5 62000b00d500 0062e00000d5 - {e=>183,c=>3,a=>104,b=>2,d=>0} 68000e00b700 68000e00b700 68000e00b700 0068b00000b7 68000e00b7000000 68000e00b700 0068b00000b7 68000e00b700 0068b00000b7 - {e=>152,c=>3,a=>68,b=>3,d=>1} 44000f019800 44000f019800 44000f019800 0044f0400098 44000f0198000000 44000f019800 0044f0400098 44000f019800 0044f0400098 - {e=>117,c=>0,a=>83,b=>2,d=>1} 530002017500 530002017500 530002017500 005380400075 5300020175000000 530002017500 005380400075 530002017500 005380400075 - {e=>183,c=>0,a=>-82,b=>3,d=>3} aeff0303b700 aeff0303b700 aeff0303b700 ffaec0c000b7 aeff0303b7000000 aeff0303b700 ffaec0c000b7 aeff0303b700 ffaec0c000b7 = struct force_align2 { int a; unsigned char b:2; }; - {a=>-20,b=>3} ecffffff03000000 ecffffff03000000 ecffffff03000000 ffffffecc0000000 ecffffff03000000 ecffffff03000000 ffffffecc0000000 ecffffff03000000 ffffffecc0000000 - {a=>123,b=>1} 7b00000001000000 7b00000001000000 7b00000001000000 0000007b40000000 7b00000001000000 7b00000001000000 0000007b40000000 7b00000001000000 0000007b40000000 - {a=>-106,b=>0} 96ffffff00000000 96ffffff00000000 96ffffff00000000 ffffff9600000000 96ffffff00000000 96ffffff00000000 ffffff9600000000 96ffffff00000000 ffffff9600000000 - {a=>6,b=>3} 0600000003000000 0600000003000000 0600000003000000 00000006c0000000 0600000003000000 0600000003000000 00000006c0000000 0600000003000000 00000006c0000000 - {a=>60,b=>0} 3c00000000000000 3c00000000000000 3c00000000000000 0000003c00000000 3c00000000000000 3c00000000000000 0000003c00000000 3c00000000000000 0000003c00000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; }; - {c=>2,a=>55,b=>0} 3700000008000000 3700000008000000 3700000008000000 0000003720000000 3700000008000000 3700000008000000 0000003720000000 3700000008000000 0000003720000000 - {c=>2,a=>-128,b=>3} 80ffffff0b000000 80ffffff0b000000 80ffffff0b000000 ffffff80e0000000 80ffffff0b000000 80ffffff0b000000 ffffff80e0000000 80ffffff0b000000 ffffff80e0000000 - {c=>3,a=>-119,b=>3} 89ffffff0f000000 89ffffff0f000000 89ffffff0f000000 ffffff89f0000000 89ffffff0f000000 89ffffff0f000000 ffffff89f0000000 89ffffff0f000000 ffffff89f0000000 - {c=>2,a=>46,b=>0} 2e00000008000000 2e00000008000000 2e00000008000000 0000002e20000000 2e00000008000000 2e00000008000000 0000002e20000000 2e00000008000000 0000002e20000000 - {c=>2,a=>-13,b=>2} f3ffffff0a000000 f3ffffff0a000000 f3ffffff0a000000 fffffff3a0000000 f3ffffff0a000000 f3ffffff0a000000 fffffff3a0000000 f3ffffff0a000000 fffffff3a0000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>3,a=>-72,b=>3} b8ffffff0f000000 b8ffffff0f000000 b8ffffff0f000000 ffffffb8f0000000 b8ffffff0f000000 b8ffffff0f000000 ffffffb8f0000000 b8ffffff0f000000 ffffffb8f0000000 - {c=>3,a=>31,b=>0} 1f0000000c000000 1f0000000c000000 1f0000000c000000 0000001f30000000 1f0000000c000000 1f0000000c000000 0000001f30000000 1f0000000c000000 0000001f30000000 - {c=>0,a=>105,b=>1} 6900000001000000 6900000001000000 6900000001000000 0000006940000000 6900000001000000 6900000001000000 0000006940000000 6900000001000000 0000006940000000 - {c=>2,a=>74,b=>1} 4a00000009000000 4a00000009000000 4a00000009000000 0000004a60000000 4a00000009000000 4a00000009000000 0000004a60000000 4a00000009000000 0000004a60000000 - {c=>0,a=>12,b=>1} 0c00000001000000 0c00000001000000 0c00000001000000 0000000c40000000 0c00000001000000 0c00000001000000 0000000c40000000 0c00000001000000 0000000c40000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>2,a=>-93,b=>0,d=>3} a3ffffff08030000 a3ffffff08030000 a3ffffff08030000 ffffffa320c00000 a3ffffff08030000 a3ffffff08030000 ffffffa320c00000 a3ffffff08030000 ffffffa320c00000 - {c=>0,a=>-88,b=>2,d=>0} a8ffffff02000000 a8ffffff02000000 a8ffffff02000000 ffffffa880000000 a8ffffff02000000 a8ffffff02000000 ffffffa880000000 a8ffffff02000000 ffffffa880000000 - {c=>0,a=>89,b=>3,d=>0} 5900000003000000 5900000003000000 5900000003000000 00000059c0000000 5900000003000000 5900000003000000 00000059c0000000 5900000003000000 00000059c0000000 - {c=>1,a=>-61,b=>2,d=>1} c3ffffff06010000 c3ffffff06010000 c3ffffff06010000 ffffffc390400000 c3ffffff06010000 c3ffffff06010000 ffffffc390400000 c3ffffff06010000 ffffffc390400000 - {c=>0,a=>-21,b=>0,d=>1} ebffffff00010000 ebffffff00010000 ebffffff00010000 ffffffeb00400000 ebffffff00010000 ebffffff00010000 ffffffeb00400000 ebffffff00010000 ffffffeb00400000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>23,c=>0,a=>-79,b=>1,d=>3} b1ffffff01031700 b1ffffff01031700 b1ffffff01031700 ffffffb140c00017 b1ffffff01031700 b1ffffff01031700 ffffffb140c00017 b1ffffff01031700 ffffffb140c00017 - {e=>106,c=>2,a=>-36,b=>0,d=>0} dcffffff08006a00 dcffffff08006a00 dcffffff08006a00 ffffffdc2000006a dcffffff08006a00 dcffffff08006a00 ffffffdc2000006a dcffffff08006a00 ffffffdc2000006a - {e=>139,c=>3,a=>114,b=>3,d=>3} 720000000f038b00 720000000f038b00 720000000f038b00 00000072f0c0008b 720000000f038b00 720000000f038b00 00000072f0c0008b 720000000f038b00 00000072f0c0008b - {e=>151,c=>2,a=>-110,b=>0,d=>3} 92ffffff08039700 92ffffff08039700 92ffffff08039700 ffffff9220c00097 92ffffff08039700 92ffffff08039700 ffffff9220c00097 92ffffff08039700 ffffff9220c00097 - {e=>15,c=>1,a=>-72,b=>0,d=>3} b8ffffff04030f00 b8ffffff04030f00 b8ffffff04030f00 ffffffb810c0000f b8ffffff04030f00 b8ffffff04030f00 ffffffb810c0000f b8ffffff04030f00 ffffffb810c0000f = struct force_align2 { long a; unsigned char b:2; }; - {a=>-86,b=>1} aaffffff01000000 aaffffffffffffff0100000000000000 aaffffffffffffff0100000000000000 ffffffaa40000000 aaffffff01000000 aaffffff01000000 ffffffffffffffaa4000000000000000 aaffffff01000000 ffffffaa40000000 - {a=>-16,b=>0} f0ffffff00000000 f0ffffffffffffff0000000000000000 f0ffffffffffffff0000000000000000 fffffff000000000 f0ffffff00000000 f0ffffff00000000 fffffffffffffff00000000000000000 f0ffffff00000000 fffffff000000000 - {a=>-65,b=>2} bfffffff02000000 bfffffffffffffff0200000000000000 bfffffffffffffff0200000000000000 ffffffbf80000000 bfffffff02000000 bfffffff02000000 ffffffffffffffbf8000000000000000 bfffffff02000000 ffffffbf80000000 - {a=>2,b=>2} 0200000002000000 02000000000000000200000000000000 02000000000000000200000000000000 0000000280000000 0200000002000000 0200000002000000 00000000000000028000000000000000 0200000002000000 0000000280000000 - {a=>-85,b=>2} abffffff02000000 abffffffffffffff0200000000000000 abffffffffffffff0200000000000000 ffffffab80000000 abffffff02000000 abffffff02000000 ffffffffffffffab8000000000000000 abffffff02000000 ffffffab80000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; }; - {c=>3,a=>-105,b=>2} 97ffffff0e000000 97ffffffffffffff0e00000000000000 97ffffffffffffff0e00000000000000 ffffff97b0000000 97ffffff0e000000 97ffffff0e000000 ffffffffffffff97b000000000000000 97ffffff0e000000 ffffff97b0000000 - {c=>1,a=>14,b=>1} 0e00000005000000 0e000000000000000500000000000000 0e000000000000000500000000000000 0000000e50000000 0e00000005000000 0e00000005000000 000000000000000e5000000000000000 0e00000005000000 0000000e50000000 - {c=>1,a=>-120,b=>2} 88ffffff06000000 88ffffffffffffff0600000000000000 88ffffffffffffff0600000000000000 ffffff8890000000 88ffffff06000000 88ffffff06000000 ffffffffffffff889000000000000000 88ffffff06000000 ffffff8890000000 - {c=>2,a=>67,b=>3} 430000000b000000 43000000000000000b00000000000000 43000000000000000b00000000000000 00000043e0000000 430000000b000000 430000000b000000 0000000000000043e000000000000000 430000000b000000 00000043e0000000 - {c=>1,a=>85,b=>0} 5500000004000000 55000000000000000400000000000000 55000000000000000400000000000000 0000005510000000 5500000004000000 5500000004000000 00000000000000551000000000000000 5500000004000000 0000005510000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>1,a=>113,b=>1} 7100000005000000 71000000000000000500000000000000 71000000000000000500000000000000 0000007150000000 7100000005000000 7100000005000000 00000000000000715000000000000000 7100000005000000 0000007150000000 - {c=>0,a=>-59,b=>2} c5ffffff02000000 c5ffffffffffffff0200000000000000 c5ffffffffffffff0200000000000000 ffffffc580000000 c5ffffff02000000 c5ffffff02000000 ffffffffffffffc58000000000000000 c5ffffff02000000 ffffffc580000000 - {c=>2,a=>115,b=>1} 7300000009000000 73000000000000000900000000000000 73000000000000000900000000000000 0000007360000000 7300000009000000 7300000009000000 00000000000000736000000000000000 7300000009000000 0000007360000000 - {c=>1,a=>-97,b=>3} 9fffffff07000000 9fffffffffffffff0700000000000000 9fffffffffffffff0700000000000000 ffffff9fd0000000 9fffffff07000000 9fffffff07000000 ffffffffffffff9fd000000000000000 9fffffff07000000 ffffff9fd0000000 - {c=>2,a=>38,b=>2} 260000000a000000 26000000000000000a00000000000000 26000000000000000a00000000000000 00000026a0000000 260000000a000000 260000000a000000 0000000000000026a000000000000000 260000000a000000 00000026a0000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>2,a=>14,b=>0,d=>0} 0e00000008000000 0e000000000000000800000000000000 0e000000000000000800000000000000 0000000e20000000 0e00000008000000 0e00000008000000 000000000000000e2000000000000000 0e00000008000000 0000000e20000000 - {c=>3,a=>-56,b=>0,d=>3} c8ffffff0c030000 c8ffffffffffffff0c03000000000000 c8ffffffffffffff0c03000000000000 ffffffc830c00000 c8ffffff0c030000 c8ffffff0c030000 ffffffffffffffc830c0000000000000 c8ffffff0c030000 ffffffc830c00000 - {c=>1,a=>84,b=>0,d=>2} 5400000004020000 54000000000000000402000000000000 54000000000000000402000000000000 0000005410800000 5400000004020000 5400000004020000 00000000000000541080000000000000 5400000004020000 0000005410800000 - {c=>1,a=>-54,b=>2,d=>0} caffffff06000000 caffffffffffffff0600000000000000 caffffffffffffff0600000000000000 ffffffca90000000 caffffff06000000 caffffff06000000 ffffffffffffffca9000000000000000 caffffff06000000 ffffffca90000000 - {c=>0,a=>61,b=>2,d=>0} 3d00000002000000 3d000000000000000200000000000000 3d000000000000000200000000000000 0000003d80000000 3d00000002000000 3d00000002000000 000000000000003d8000000000000000 3d00000002000000 0000003d80000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>109,c=>0,a=>66,b=>0,d=>1} 4200000000016d00 420000000000000000016d0000000000 420000000000000000016d0000000000 000000420040006d 4200000000016d00 4200000000016d00 00000000000000420040006d00000000 4200000000016d00 000000420040006d - {e=>167,c=>2,a=>-15,b=>2,d=>0} f1ffffff0a00a700 f1ffffffffffffff0a00a70000000000 f1ffffffffffffff0a00a70000000000 fffffff1a00000a7 f1ffffff0a00a700 f1ffffff0a00a700 fffffffffffffff1a00000a700000000 f1ffffff0a00a700 fffffff1a00000a7 - {e=>39,c=>1,a=>92,b=>1,d=>3} 5c00000005032700 5c000000000000000503270000000000 5c000000000000000503270000000000 0000005c50c00027 5c00000005032700 5c00000005032700 000000000000005c50c0002700000000 5c00000005032700 0000005c50c00027 - {e=>135,c=>3,a=>-67,b=>0,d=>2} bdffffff0c028700 bdffffffffffffff0c02870000000000 bdffffffffffffff0c02870000000000 ffffffbd30800087 bdffffff0c028700 bdffffff0c028700 ffffffffffffffbd3080008700000000 bdffffff0c028700 ffffffbd30800087 - {e=>180,c=>1,a=>38,b=>0,d=>0} 260000000400b400 26000000000000000400b40000000000 26000000000000000400b40000000000 00000026100000b4 260000000400b400 260000000400b400 0000000000000026100000b400000000 260000000400b400 00000026100000b4 = struct mixed1 { unsigned int a:1; }; - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>1} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; }; - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>1,b=>1} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; }; - {a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>1,b=>1} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; }; - {c=>1,a=>0,b=>0} 0000000001000000 0000000001000000 0000000001000000 0000000080000000 0000000001000000 0000000001000000 0000000080000000 0000000001000000 0000000080000000 - {c=>1,a=>1,b=>1} 0300000001000000 0300000001000000 0300000001000000 c000000080000000 0300000001000000 0300000001000000 c000000080000000 0300000001000000 c000000080000000 - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 8000000000000000 - {c=>0,a=>0,b=>1} 0200000000000000 0200000000000000 0200000000000000 4000000000000000 0200000000000000 0200000000000000 4000000000000000 0200000000000000 4000000000000000 - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 8000000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; }; - {c=>0,a=>1,b=>1,d=>0} 0300000000000000 0300000000000000 0300000000000000 c000000000000000 0300000000000000 0300000000000000 c000000000000000 0300000000000000 c000000000000000 - {c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 c000000040000000 - {c=>1,a=>0,b=>0,d=>0} 0000000001000000 0000000001000000 0000000001000000 0000000080000000 0000000001000000 0000000001000000 0000000080000000 0000000001000000 0000000080000000 - {c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 c000000040000000 - {c=>0,a=>1,b=>0,d=>0} 0100000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 8000000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; }; - {e=>0,c=>0,a=>0,b=>1,d=>0} 0200000000000000 0200000000000000 0200000000000000 4000000000000000 0200000000000000 0200000000000000 4000000000000000 0200000000000000 4000000000000000 - {e=>-1,c=>0,a=>0,b=>1,d=>-1} 0200000006000000 0200000006000000 0200000006000000 4000000060000000 0200000006000000 0200000006000000 4000000060000000 0200000006000000 4000000060000000 - {e=>0,c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 c000000040000000 - {e=>-1,c=>1,a=>1,b=>0,d=>-1} 0100000007000000 0100000007000000 0100000007000000 80000000e0000000 0100000007000000 0100000007000000 80000000e0000000 0100000007000000 80000000e0000000 - {e=>0,c=>0,a=>0,b=>0,d=>0} 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; }; - {e=>-1,c=>0,a=>1,b=>0,d=>-1} 0100000006000000 0100000006000000 0100000006000000 8000000060000000 0100000006000000 0100000006000000 8000000060000000 0100000006000000 8000000060000000 - {e=>0,c=>1,a=>1,b=>0,d=>0} 0100000001000000 0100000001000000 0100000001000000 8000000080000000 0100000001000000 0100000001000000 8000000080000000 0100000001000000 8000000080000000 - {e=>-1,c=>0,a=>1,b=>0,d=>0} 0100000004000000 0100000004000000 0100000004000000 8000000020000000 0100000004000000 0100000004000000 8000000020000000 0100000004000000 8000000020000000 - {e=>0,c=>1,a=>0,b=>1,d=>-1} 0200000003000000 0200000003000000 0200000003000000 40000000c0000000 0200000003000000 0200000003000000 40000000c0000000 0200000003000000 40000000c0000000 - {e=>-1,c=>1,a=>1,b=>1,d=>-1} 0300000007000000 0300000007000000 0300000007000000 c0000000e0000000 0300000007000000 0300000007000000 c0000000e0000000 0300000007000000 c0000000e0000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; }; - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 40000000e000000080000000 - {e=>-1,c=>0,a=>0,b=>1,d=>0,f=>-1} 020000000400000001000000 020000000400000001000000 020000000400000001000000 400000002000000080000000 020000000400000001000000 020000000400000001000000 400000002000000080000000 020000000400000001000000 400000002000000080000000 - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 40000000e000000080000000 - {e=>0,c=>1,a=>0,b=>0,d=>0,f=>-1} 000000000100000001000000 000000000100000001000000 000000000100000001000000 000000008000000080000000 000000000100000001000000 000000000100000001000000 000000008000000080000000 000000000100000001000000 000000008000000080000000 - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 40000000e000000080000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; }; - {e=>0,c=>1,a=>1,g=>-1,b=>1,d=>-1,f=>-1} 030000000300000003000000 030000000300000003000000 030000000300000003000000 c0000000c0000000c0000000 030000000300000003000000 030000000300000003000000 c0000000c0000000c0000000 030000000300000003000000 c0000000c0000000c0000000 - {e=>0,c=>0,a=>1,g=>-1,b=>1,d=>0,f=>-1} 030000000000000003000000 030000000000000003000000 030000000000000003000000 c000000000000000c0000000 030000000000000003000000 030000000000000003000000 c000000000000000c0000000 030000000000000003000000 c000000000000000c0000000 - {e=>0,c=>0,a=>0,g=>-1,b=>0,d=>0,f=>-1} 000000000000000003000000 000000000000000003000000 000000000000000003000000 0000000000000000c0000000 000000000000000003000000 000000000000000003000000 0000000000000000c0000000 000000000000000003000000 0000000000000000c0000000 - {e=>0,c=>1,a=>1,g=>0,b=>1,d=>0,f=>0} 030000000100000000000000 030000000100000000000000 030000000100000000000000 c00000008000000000000000 030000000100000000000000 030000000100000000000000 c00000008000000000000000 030000000100000000000000 c00000008000000000000000 - {e=>0,c=>1,a=>0,g=>-1,b=>1,d=>0,f=>0} 020000000100000002000000 020000000100000002000000 020000000100000002000000 400000008000000040000000 020000000100000002000000 020000000100000002000000 400000008000000040000000 020000000100000002000000 400000008000000040000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; }; - {e=>0,a=>1,d=>-1,c=>0,h=>0,b=>1,g=>-1,f=>-1} 030000000200000003000000 030000000200000003000000 030000000200000003000000 c000000040000000c0000000 030000000200000003000000 030000000200000003000000 c000000040000000c0000000 030000000200000003000000 c000000040000000c0000000 - {e=>0,a=>0,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1} 020000000000000007000000 020000000000000007000000 020000000000000007000000 4000000000000000e0000000 020000000000000007000000 020000000000000007000000 4000000000000000e0000000 020000000000000007000000 4000000000000000e0000000 - {e=>0,a=>0,d=>-1,c=>1,h=>0,b=>1,g=>-1,f=>0} 020000000300000002000000 020000000300000002000000 020000000300000002000000 40000000c000000040000000 020000000300000002000000 020000000300000002000000 40000000c000000040000000 020000000300000002000000 40000000c000000040000000 - {e=>0,a=>0,d=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0} 000000000300000006000000 000000000300000006000000 000000000300000006000000 00000000c000000060000000 000000000300000006000000 000000000300000006000000 00000000c000000060000000 000000000300000006000000 00000000c000000060000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>1,g=>0,f=>-1} 030000000200000005000000 030000000200000005000000 030000000200000005000000 c000000040000000a0000000 030000000200000005000000 030000000200000005000000 c000000040000000a0000000 030000000200000005000000 c000000040000000a0000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; }; - {e=>0,a=>1,d=>0,c=>0,h=>-1,b=>0,g=>0,f=>-1} 010000000000000005000000 010000000000000005000000 010000000000000005000000 8000000000000000a0000000 010000000000000005000000 010000000000000005000000 8000000000000000a0000000 010000000000000005000000 8000000000000000a0000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>0,g=>0,f=>-1} 010000000200000005000000 010000000200000005000000 010000000200000005000000 8000000040000000a0000000 010000000200000005000000 010000000200000005000000 8000000040000000a0000000 010000000200000005000000 8000000040000000a0000000 - {e=>-1,a=>0,d=>0,c=>0,h=>0,b=>1,g=>0,f=>-1} 020000000400000001000000 020000000400000001000000 020000000400000001000000 400000002000000080000000 020000000400000001000000 020000000400000001000000 400000002000000080000000 020000000400000001000000 400000002000000080000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>1,g=>0,f=>-1} 030000000200000005000000 030000000200000005000000 030000000200000005000000 c000000040000000a0000000 030000000200000005000000 030000000200000005000000 c000000040000000a0000000 030000000200000005000000 c000000040000000a0000000 - {e=>-1,a=>1,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>-1} 010000000400000003000000 010000000400000003000000 010000000400000003000000 8000000020000000c0000000 010000000400000003000000 010000000400000003000000 8000000020000000c0000000 010000000400000003000000 8000000020000000c0000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; int i:1; }; - {e=>-1,a=>1,d=>0,c=>1,h=>-1,b=>0,g=>-1,f=>-1,i=>0} 01000000050000000700000000000000 01000000050000000700000000000000 01000000050000000700000000000000 80000000a0000000e000000000000000 01000000050000000700000000000000 01000000050000000700000000000000 80000000a0000000e000000000000000 01000000050000000700000000000000 80000000a0000000e000000000000000 - {e=>0,a=>1,d=>0,c=>0,h=>-1,b=>0,g=>0,f=>-1,i=>0} 01000000000000000500000000000000 01000000000000000500000000000000 01000000000000000500000000000000 8000000000000000a000000000000000 01000000000000000500000000000000 01000000000000000500000000000000 8000000000000000a000000000000000 01000000000000000500000000000000 8000000000000000a000000000000000 - {e=>0,a=>1,d=>-1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} 01000000030000000500000000000000 01000000030000000500000000000000 01000000030000000500000000000000 80000000c0000000a000000000000000 01000000030000000500000000000000 01000000030000000500000000000000 80000000c0000000a000000000000000 01000000030000000500000000000000 80000000c0000000a000000000000000 - {e=>0,a=>1,d=>-1,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 03000000030000000500000000000000 03000000030000000500000000000000 03000000030000000500000000000000 c0000000c0000000a000000000000000 03000000030000000500000000000000 03000000030000000500000000000000 c0000000c0000000a000000000000000 03000000030000000500000000000000 c0000000c0000000a000000000000000 - {e=>-1,a=>1,d=>-1,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 01000000060000000600000001000000 01000000060000000600000001000000 01000000060000000600000001000000 80000000600000006000000080000000 01000000060000000600000001000000 01000000060000000600000001000000 80000000600000006000000080000000 01000000060000000600000001000000 80000000600000006000000080000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; int i:1; long j; }; - {e=>-1,a=>0,d=>-1,j=>95,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 000000000600000006000000010000005f000000 000000000600000006000000010000005f00000000000000 000000000600000006000000010000005f00000000000000 000000006000000060000000800000000000005f 000000000600000006000000010000005f000000 000000000600000006000000010000005f000000 00000000600000006000000080000000000000000000005f 000000000600000006000000010000005f000000 000000006000000060000000800000000000005f - {e=>-1,a=>0,d=>0,j=>6,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 0200000005000000050000000000000006000000 020000000500000005000000000000000600000000000000 020000000500000005000000000000000600000000000000 40000000a0000000a00000000000000000000006 0200000005000000050000000000000006000000 0200000005000000050000000000000006000000 40000000a0000000a0000000000000000000000000000006 0200000005000000050000000000000006000000 40000000a0000000a00000000000000000000006 - {e=>0,a=>1,d=>-1,j=>2,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>-1} 0300000003000000010000000100000002000000 030000000300000001000000010000000200000000000000 030000000300000001000000010000000200000000000000 c0000000c0000000800000008000000000000002 0300000003000000010000000100000002000000 0300000003000000010000000100000002000000 c0000000c000000080000000800000000000000000000002 0300000003000000010000000100000002000000 c0000000c0000000800000008000000000000002 - {e=>0,a=>1,d=>0,j=>29,c=>0,h=>0,b=>1,g=>0,f=>0,i=>-1} 030000000000000000000000010000001d000000 030000000000000000000000010000001d00000000000000 030000000000000000000000010000001d00000000000000 c00000000000000000000000800000000000001d 030000000000000000000000010000001d000000 030000000000000000000000010000001d000000 c0000000000000000000000080000000000000000000001d 030000000000000000000000010000001d000000 c00000000000000000000000800000000000001d - {e=>0,a=>0,d=>-1,j=>-28,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 02000000020000000700000000000000e4ffffff 02000000020000000700000000000000e4ffffffffffffff 02000000020000000700000000000000e4ffffffffffffff 4000000040000000e000000000000000ffffffe4 02000000020000000700000000000000e4ffffff 02000000020000000700000000000000e4ffffff 4000000040000000e000000000000000ffffffffffffffe4 02000000020000000700000000000000e4ffffff 4000000040000000e000000000000000ffffffe4 = struct mixed1 { char a; unsigned int b:1; }; - {a=>110,b=>1} 6e010000 6e010000 6e010000 6e800000 6e010000 6e010000 6e800000 6e010000 6e800000 - {a=>-117,b=>1} 8b010000 8b010000 8b010000 8b800000 8b010000 8b010000 8b800000 8b010000 8b800000 - {a=>-103,b=>0} 99000000 99000000 99000000 99000000 99000000 99000000 99000000 99000000 99000000 - {a=>-42,b=>0} d6000000 d6000000 d6000000 d6000000 d6000000 d6000000 d6000000 d6000000 d6000000 - {a=>71,b=>1} 47010000 47010000 47010000 47800000 47010000 47010000 47800000 47010000 47800000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>53,b=>0} 35000000 35000000 35000000 35000000 35000000 35000000 35000000 35000000 35000000 - {c=>1,a=>5,b=>1} 05030000 05030000 05030000 05c00000 05030000 05030000 05c00000 05030000 05c00000 - {c=>0,a=>-80,b=>0} b0000000 b0000000 b0000000 b0000000 b0000000 b0000000 b0000000 b0000000 b0000000 - {c=>1,a=>100,b=>0} 64020000 64020000 64020000 64400000 64020000 64020000 64400000 64020000 64400000 - {c=>1,a=>-94,b=>1} a2030000 a2030000 a2030000 a2c00000 a2030000 a2030000 a2c00000 a2030000 a2c00000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>-121,b=>1} 87010000 87010000 87010000 87800000 87010000 87010000 87800000 87010000 87800000 - {c=>0,a=>-57,b=>1} c7010000 c7010000 c7010000 c7800000 c7010000 c7010000 c7800000 c7010000 c7800000 - {c=>0,a=>37,b=>1} 25010000 25010000 25010000 25800000 25010000 25010000 25800000 25010000 25800000 - {c=>1,a=>37,b=>1} 25030000 25030000 25030000 25c00000 25030000 25030000 25c00000 25030000 25c00000 - {c=>0,a=>-110,b=>0} 92000000 92000000 92000000 92000000 92000000 92000000 92000000 92000000 92000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>43,b=>0,d=>0} 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 - {c=>1,a=>72,b=>1,d=>0} 4803000000000000 4803000000000000 4803000000000000 48c0000000000000 4803000000000000 4803000000000000 48c0000000000000 4803000000000000 48c0000000000000 - {c=>1,a=>70,b=>0,d=>0} 4602000000000000 4602000000000000 4602000000000000 4640000000000000 4602000000000000 4602000000000000 4640000000000000 4602000000000000 4640000000000000 - {c=>1,a=>50,b=>1,d=>0} 3203000000000000 3203000000000000 3203000000000000 32c0000000000000 3203000000000000 3203000000000000 32c0000000000000 3203000000000000 32c0000000000000 - {c=>0,a=>104,b=>0,d=>0} 6800000000000000 6800000000000000 6800000000000000 6800000000000000 6800000000000000 6800000000000000 6800000000000000 6800000000000000 6800000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>0,c=>0,a=>48,b=>1,d=>1} 3001000001000000 3001000001000000 3001000001000000 3080000080000000 3001000001000000 3001000001000000 3080000080000000 3001000001000000 3080000080000000 - {e=>-1,c=>0,a=>-115,b=>1,d=>0} 8d01000002000000 8d01000002000000 8d01000002000000 8d80000040000000 8d01000002000000 8d01000002000000 8d80000040000000 8d01000002000000 8d80000040000000 - {e=>-1,c=>1,a=>-71,b=>0,d=>1} b902000003000000 b902000003000000 b902000003000000 b9400000c0000000 b902000003000000 b902000003000000 b9400000c0000000 b902000003000000 b9400000c0000000 - {e=>-1,c=>0,a=>38,b=>0,d=>0} 2600000002000000 2600000002000000 2600000002000000 2600000040000000 2600000002000000 2600000002000000 2600000040000000 2600000002000000 2600000040000000 - {e=>-1,c=>1,a=>110,b=>0,d=>0} 6e02000002000000 6e02000002000000 6e02000002000000 6e40000040000000 6e02000002000000 6e02000002000000 6e40000040000000 6e02000002000000 6e40000040000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>0,c=>0,a=>-12,b=>0,d=>1,f=>0} f400000001000000 f400000001000000 f400000001000000 f400000080000000 f400000001000000 f400000001000000 f400000080000000 f400000001000000 f400000080000000 - {e=>0,c=>0,a=>5,b=>0,d=>1,f=>0} 0500000001000000 0500000001000000 0500000001000000 0500000080000000 0500000001000000 0500000001000000 0500000080000000 0500000001000000 0500000080000000 - {e=>-1,c=>1,a=>47,b=>0,d=>0,f=>0} 2f02000002000000 2f02000002000000 2f02000002000000 2f40000040000000 2f02000002000000 2f02000002000000 2f40000040000000 2f02000002000000 2f40000040000000 - {e=>-1,c=>1,a=>87,b=>0,d=>0,f=>-1} 5702000006000000 5702000006000000 5702000006000000 5740000060000000 5702000006000000 5702000006000000 5740000060000000 5702000006000000 5740000060000000 - {e=>0,c=>0,a=>-26,b=>1,d=>1,f=>0} e601000001000000 e601000001000000 e601000001000000 e680000080000000 e601000001000000 e601000001000000 e680000080000000 e601000001000000 e680000080000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-46,b=>1,d=>1,f=>0} d201000001000000 d201000001000000 d201000001000000 d280000080000000 d201000001000000 d201000001000000 d280000080000000 d201000001000000 d280000080000000 - {e=>-1,c=>0,a=>-8,b=>1,d=>1,f=>0} f801000003000000 f801000003000000 f801000003000000 f8800000c0000000 f801000003000000 f801000003000000 f8800000c0000000 f801000003000000 f8800000c0000000 - {e=>-1,c=>1,a=>-104,b=>1,d=>0,f=>-1} 9803000006000000 9803000006000000 9803000006000000 98c0000060000000 9803000006000000 9803000006000000 98c0000060000000 9803000006000000 98c0000060000000 - {e=>0,c=>1,a=>111,b=>1,d=>1,f=>0} 6f03000001000000 6f03000001000000 6f03000001000000 6fc0000080000000 6f03000001000000 6f03000001000000 6fc0000080000000 6f03000001000000 6fc0000080000000 - {e=>-1,c=>1,a=>66,b=>1,d=>0,f=>-1} 4203000006000000 4203000006000000 4203000006000000 42c0000060000000 4203000006000000 4203000006000000 42c0000060000000 4203000006000000 42c0000060000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>0,a=>33,g=>0,b=>1,d=>1,f=>-1} 210100000500000000000000 210100000500000000000000 210100000500000000000000 21800000a000000000000000 210100000500000000000000 210100000500000000000000 21800000a000000000000000 210100000500000000000000 21800000a000000000000000 - {e=>0,c=>1,a=>-26,g=>0,b=>1,d=>1,f=>-1} e60300000500000000000000 e60300000500000000000000 e60300000500000000000000 e6c00000a000000000000000 e60300000500000000000000 e60300000500000000000000 e6c00000a000000000000000 e60300000500000000000000 e6c00000a000000000000000 - {e=>-1,c=>1,a=>-58,g=>0,b=>0,d=>1,f=>-1} c60200000700000000000000 c60200000700000000000000 c60200000700000000000000 c6400000e000000000000000 c60200000700000000000000 c60200000700000000000000 c6400000e000000000000000 c60200000700000000000000 c6400000e000000000000000 - {e=>0,c=>1,a=>-27,g=>-1,b=>0,d=>0,f=>-1} e50200000400000001000000 e50200000400000001000000 e50200000400000001000000 e54000002000000080000000 e50200000400000001000000 e50200000400000001000000 e54000002000000080000000 e50200000400000001000000 e54000002000000080000000 - {e=>-1,c=>1,a=>-33,g=>0,b=>0,d=>1,f=>0} df0200000300000000000000 df0200000300000000000000 df0200000300000000000000 df400000c000000000000000 df0200000300000000000000 df0200000300000000000000 df400000c000000000000000 df0200000300000000000000 df400000c000000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>40,d=>0,c=>1,h=>0,b=>1,g=>0,f=>0} 280300000200000000000000 280300000200000000000000 280300000200000000000000 28c000004000000000000000 280300000200000000000000 280300000200000000000000 28c000004000000000000000 280300000200000000000000 28c000004000000000000000 - {e=>-1,a=>123,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>-1} 7b0100000600000001000000 7b0100000600000001000000 7b0100000600000001000000 7b8000006000000080000000 7b0100000600000001000000 7b0100000600000001000000 7b8000006000000080000000 7b0100000600000001000000 7b8000006000000080000000 - {e=>-1,a=>102,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1} 660200000600000001000000 660200000600000001000000 660200000600000001000000 664000006000000080000000 660200000600000001000000 660200000600000001000000 664000006000000080000000 660200000600000001000000 664000006000000080000000 - {e=>0,a=>-10,d=>1,c=>1,h=>-1,b=>1,g=>0,f=>-1} f60300000500000002000000 f60300000500000002000000 f60300000500000002000000 f6c00000a000000040000000 f60300000500000002000000 f60300000500000002000000 f6c00000a000000040000000 f60300000500000002000000 f6c00000a000000040000000 - {e=>0,a=>49,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1} 310000000500000001000000 310000000500000001000000 310000000500000001000000 31000000a000000080000000 310000000500000001000000 310000000500000001000000 31000000a000000080000000 310000000500000001000000 31000000a000000080000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>-11,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>-1} f50300000300000007000000 f50300000300000007000000 f50300000300000007000000 f5c00000c0000000e0000000 f50300000300000007000000 f50300000300000007000000 f5c00000c0000000e0000000 f50300000300000007000000 f5c00000c0000000e0000000 - {e=>0,a=>-102,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>-1,i=>0} 9a0000000400000001000000 9a0000000400000001000000 9a0000000400000001000000 9a0000002000000080000000 9a0000000400000001000000 9a0000000400000001000000 9a0000002000000080000000 9a0000000400000001000000 9a0000002000000080000000 - {e=>0,a=>-33,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>0,i=>0} df0000000100000002000000 df0000000100000002000000 df0000000100000002000000 df0000008000000040000000 df0000000100000002000000 df0000000100000002000000 df0000008000000040000000 df0000000100000002000000 df0000008000000040000000 - {e=>-1,a=>-96,d=>1,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} a00100000300000000000000 a00100000300000000000000 a00100000300000000000000 a0800000c000000000000000 a00100000300000000000000 a00100000300000000000000 a0800000c000000000000000 a00100000300000000000000 a0800000c000000000000000 - {e=>-1,a=>125,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>-1} 7d0200000700000006000000 7d0200000700000006000000 7d0200000700000006000000 7d400000e000000060000000 7d0200000700000006000000 7d0200000700000006000000 7d400000e000000060000000 7d0200000700000006000000 7d400000e000000060000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>-1,a=>-41,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} d70100000600000007000000 d70100000600000007000000 d70100000600000007000000 d780000060000000e0000000 d70100000600000007000000 d70100000600000007000000 d780000060000000e0000000 d70100000600000007000000 d780000060000000e0000000 - {e=>-1,a=>51,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 330100000700000003000000 330100000700000003000000 330100000700000003000000 33800000e0000000c0000000 330100000700000003000000 330100000700000003000000 33800000e0000000c0000000 330100000700000003000000 33800000e0000000c0000000 - {e=>0,a=>43,d=>0,c=>0,h=>0,b=>1,g=>0,f=>-1,i=>-1} 2b0100000400000004000000 2b0100000400000004000000 2b0100000400000004000000 2b8000002000000020000000 2b0100000400000004000000 2b0100000400000004000000 2b8000002000000020000000 2b0100000400000004000000 2b8000002000000020000000 - {e=>0,a=>33,d=>0,c=>1,h=>-1,b=>0,g=>0,f=>0,i=>-1} 210200000000000006000000 210200000000000006000000 210200000000000006000000 214000000000000060000000 210200000000000006000000 210200000000000006000000 214000000000000060000000 210200000000000006000000 214000000000000060000000 - {e=>-1,a=>-111,d=>1,c=>1,h=>0,b=>0,g=>0,f=>-1,i=>0} 910200000700000000000000 910200000700000000000000 910200000700000000000000 91400000e000000000000000 910200000700000000000000 910200000700000000000000 91400000e000000000000000 910200000700000000000000 91400000e000000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>-1,a=>-32,d=>0,j=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>0} e0020000020000000300000001000000 e0020000020000000300000001000000 e0020000020000000300000001000000 e040000040000000c000000080000000 e0020000020000000300000001000000 e0020000020000000300000001000000 e040000040000000c000000080000000 e0020000020000000300000001000000 e040000040000000c000000080000000 - {e=>0,a=>-11,d=>0,j=>0,c=>1,h=>0,b=>1,g=>-1,f=>-1,i=>-1} f5030000040000000500000000000000 f5030000040000000500000000000000 f5030000040000000500000000000000 f5c0000020000000a000000000000000 f5030000040000000500000000000000 f5030000040000000500000000000000 f5c0000020000000a000000000000000 f5030000040000000500000000000000 f5c0000020000000a000000000000000 - {e=>0,a=>-110,d=>1,j=>-1,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>-1} 92030000010000000700000001000000 92030000010000000700000001000000 92030000010000000700000001000000 92c0000080000000e000000080000000 92030000010000000700000001000000 92030000010000000700000001000000 92c0000080000000e000000080000000 92030000010000000700000001000000 92c0000080000000e000000080000000 - {e=>-1,a=>-1,d=>0,j=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>-1} ff020000020000000700000001000000 ff020000020000000700000001000000 ff020000020000000700000001000000 ff40000040000000e000000080000000 ff020000020000000700000001000000 ff020000020000000700000001000000 ff40000040000000e000000080000000 ff020000020000000700000001000000 ff40000040000000e000000080000000 - {e=>0,a=>-47,d=>0,j=>-1,c=>1,h=>0,b=>1,g=>0,f=>0,i=>-1} d1030000000000000400000001000000 d1030000000000000400000001000000 d1030000000000000400000001000000 d1c00000000000002000000080000000 d1030000000000000400000001000000 d1030000000000000400000001000000 d1c00000000000002000000080000000 d1030000000000000400000001000000 d1c00000000000002000000080000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>0,a=>-103,d=>1,j=>0,c=>1,k=>81,h=>0,b=>1,g=>0,f=>0,i=>0} 9903000001000000000000000000000051000000 990300000100000000000000000000005100000000000000 990300000100000000000000000000005100000000000000 99c0000080000000000000000000000000000051 9903000001000000000000000000000051000000 9903000001000000000000000000000051000000 99c000008000000000000000000000000000000000000051 9903000001000000000000000000000051000000 99c0000080000000000000000000000000000051 - {e=>0,a=>5,d=>0,j=>0,c=>1,k=>-43,h=>0,b=>0,g=>0,f=>-1,i=>-1} 05020000040000000400000000000000d5ffffff 05020000040000000400000000000000d5ffffffffffffff 05020000040000000400000000000000d5ffffffffffffff 05400000200000002000000000000000ffffffd5 05020000040000000400000000000000d5ffffff 05020000040000000400000000000000d5ffffff 05400000200000002000000000000000ffffffffffffffd5 05020000040000000400000000000000d5ffffff 05400000200000002000000000000000ffffffd5 - {e=>0,a=>48,d=>0,j=>0,c=>1,k=>-96,h=>0,b=>0,g=>0,f=>-1,i=>0} 30020000040000000000000000000000a0ffffff 30020000040000000000000000000000a0ffffffffffffff 30020000040000000000000000000000a0ffffffffffffff 30400000200000000000000000000000ffffffa0 30020000040000000000000000000000a0ffffff 30020000040000000000000000000000a0ffffff 30400000200000000000000000000000ffffffffffffffa0 30020000040000000000000000000000a0ffffff 30400000200000000000000000000000ffffffa0 - {e=>-1,a=>113,d=>0,j=>-1,c=>1,k=>-112,h=>-1,b=>1,g=>0,f=>-1,i=>0} 7103000006000000020000000100000090ffffff 7103000006000000020000000100000090ffffffffffffff 7103000006000000020000000100000090ffffffffffffff 71c00000600000004000000080000000ffffff90 7103000006000000020000000100000090ffffff 7103000006000000020000000100000090ffffff 71c00000600000004000000080000000ffffffffffffff90 7103000006000000020000000100000090ffffff 71c00000600000004000000080000000ffffff90 - {e=>0,a=>124,d=>1,j=>-1,c=>1,k=>62,h=>0,b=>0,g=>0,f=>-1,i=>0} 7c0200000500000000000000010000003e000000 7c0200000500000000000000010000003e00000000000000 7c0200000500000000000000010000003e00000000000000 7c400000a000000000000000800000000000003e 7c0200000500000000000000010000003e000000 7c0200000500000000000000010000003e000000 7c400000a00000000000000080000000000000000000003e 7c0200000500000000000000010000003e000000 7c400000a000000000000000800000000000003e = struct mixed1 { short a; unsigned int b:1; }; - {a=>110,b=>1} 6e000100 6e000100 6e000100 006e8000 6e000100 6e000100 006e8000 6e000100 006e8000 - {a=>-33,b=>1} dfff0100 dfff0100 dfff0100 ffdf8000 dfff0100 dfff0100 ffdf8000 dfff0100 ffdf8000 - {a=>-68,b=>0} bcff0000 bcff0000 bcff0000 ffbc0000 bcff0000 bcff0000 ffbc0000 bcff0000 ffbc0000 - {a=>-44,b=>1} d4ff0100 d4ff0100 d4ff0100 ffd48000 d4ff0100 d4ff0100 ffd48000 d4ff0100 ffd48000 - {a=>94,b=>0} 5e000000 5e000000 5e000000 005e0000 5e000000 5e000000 005e0000 5e000000 005e0000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-20,b=>1} ecff0300 ecff0300 ecff0300 ffecc000 ecff0300 ecff0300 ffecc000 ecff0300 ffecc000 - {c=>1,a=>-53,b=>1} cbff0300 cbff0300 cbff0300 ffcbc000 cbff0300 cbff0300 ffcbc000 cbff0300 ffcbc000 - {c=>1,a=>123,b=>0} 7b000200 7b000200 7b000200 007b4000 7b000200 7b000200 007b4000 7b000200 007b4000 - {c=>1,a=>-52,b=>0} ccff0200 ccff0200 ccff0200 ffcc4000 ccff0200 ccff0200 ffcc4000 ccff0200 ffcc4000 - {c=>1,a=>93,b=>0} 5d000200 5d000200 5d000200 005d4000 5d000200 5d000200 005d4000 5d000200 005d4000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>1,a=>110,b=>0} 6e000200 6e000200 6e000200 006e4000 6e000200 6e000200 006e4000 6e000200 006e4000 - {c=>0,a=>51,b=>0} 33000000 33000000 33000000 00330000 33000000 33000000 00330000 33000000 00330000 - {c=>0,a=>118,b=>0} 76000000 76000000 76000000 00760000 76000000 76000000 00760000 76000000 00760000 - {c=>1,a=>27,b=>1} 1b000300 1b000300 1b000300 001bc000 1b000300 1b000300 001bc000 1b000300 001bc000 - {c=>0,a=>-97,b=>1} 9fff0100 9fff0100 9fff0100 ff9f8000 9fff0100 9fff0100 ff9f8000 9fff0100 ff9f8000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>1,a=>102,b=>1,d=>0} 6600030000000000 6600030000000000 6600030000000000 0066c00000000000 6600030000000000 6600030000000000 0066c00000000000 6600030000000000 0066c00000000000 - {c=>0,a=>-89,b=>1,d=>0} a7ff010000000000 a7ff010000000000 a7ff010000000000 ffa7800000000000 a7ff010000000000 a7ff010000000000 ffa7800000000000 a7ff010000000000 ffa7800000000000 - {c=>1,a=>37,b=>0,d=>0} 2500020000000000 2500020000000000 2500020000000000 0025400000000000 2500020000000000 2500020000000000 0025400000000000 2500020000000000 0025400000000000 - {c=>1,a=>111,b=>1,d=>0} 6f00030000000000 6f00030000000000 6f00030000000000 006fc00000000000 6f00030000000000 6f00030000000000 006fc00000000000 6f00030000000000 006fc00000000000 - {c=>0,a=>33,b=>0,d=>0} 2100000000000000 2100000000000000 2100000000000000 0021000000000000 2100000000000000 2100000000000000 0021000000000000 2100000000000000 0021000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>0,c=>1,a=>-77,b=>0,d=>0} b3ff020000000000 b3ff020000000000 b3ff020000000000 ffb3400000000000 b3ff020000000000 b3ff020000000000 ffb3400000000000 b3ff020000000000 ffb3400000000000 - {e=>-1,c=>0,a=>73,b=>1,d=>1} 4900010003000000 4900010003000000 4900010003000000 00498000c0000000 4900010003000000 4900010003000000 00498000c0000000 4900010003000000 00498000c0000000 - {e=>-1,c=>0,a=>50,b=>1,d=>0} 3200010002000000 3200010002000000 3200010002000000 0032800040000000 3200010002000000 3200010002000000 0032800040000000 3200010002000000 0032800040000000 - {e=>0,c=>1,a=>-125,b=>0,d=>1} 83ff020001000000 83ff020001000000 83ff020001000000 ff83400080000000 83ff020001000000 83ff020001000000 ff83400080000000 83ff020001000000 ff83400080000000 - {e=>0,c=>0,a=>55,b=>1,d=>0} 3700010000000000 3700010000000000 3700010000000000 0037800000000000 3700010000000000 3700010000000000 0037800000000000 3700010000000000 0037800000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>0,c=>1,a=>-25,b=>1,d=>1,f=>-1} e7ff030005000000 e7ff030005000000 e7ff030005000000 ffe7c000a0000000 e7ff030005000000 e7ff030005000000 ffe7c000a0000000 e7ff030005000000 ffe7c000a0000000 - {e=>0,c=>0,a=>110,b=>0,d=>0,f=>-1} 6e00000004000000 6e00000004000000 6e00000004000000 006e000020000000 6e00000004000000 6e00000004000000 006e000020000000 6e00000004000000 006e000020000000 - {e=>0,c=>0,a=>-28,b=>1,d=>0,f=>0} e4ff010000000000 e4ff010000000000 e4ff010000000000 ffe4800000000000 e4ff010000000000 e4ff010000000000 ffe4800000000000 e4ff010000000000 ffe4800000000000 - {e=>0,c=>1,a=>38,b=>1,d=>1,f=>0} 2600030001000000 2600030001000000 2600030001000000 0026c00080000000 2600030001000000 2600030001000000 0026c00080000000 2600030001000000 0026c00080000000 - {e=>-1,c=>0,a=>38,b=>0,d=>1,f=>-1} 2600000007000000 2600000007000000 2600000007000000 00260000e0000000 2600000007000000 2600000007000000 00260000e0000000 2600000007000000 00260000e0000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-35,b=>1,d=>1,f=>-1} ddff010005000000 ddff010005000000 ddff010005000000 ffdd8000a0000000 ddff010005000000 ddff010005000000 ffdd8000a0000000 ddff010005000000 ffdd8000a0000000 - {e=>0,c=>0,a=>-82,b=>0,d=>0,f=>0} aeff000000000000 aeff000000000000 aeff000000000000 ffae000000000000 aeff000000000000 aeff000000000000 ffae000000000000 aeff000000000000 ffae000000000000 - {e=>0,c=>0,a=>-124,b=>1,d=>0,f=>0} 84ff010000000000 84ff010000000000 84ff010000000000 ff84800000000000 84ff010000000000 84ff010000000000 ff84800000000000 84ff010000000000 ff84800000000000 - {e=>0,c=>0,a=>-50,b=>0,d=>1,f=>0} ceff000001000000 ceff000001000000 ceff000001000000 ffce000080000000 ceff000001000000 ceff000001000000 ffce000080000000 ceff000001000000 ffce000080000000 - {e=>-1,c=>1,a=>-121,b=>0,d=>0,f=>-1} 87ff020006000000 87ff020006000000 87ff020006000000 ff87400060000000 87ff020006000000 87ff020006000000 ff87400060000000 87ff020006000000 ff87400060000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>-1,c=>1,a=>39,g=>0,b=>1,d=>1,f=>0} 270003000300000000000000 270003000300000000000000 270003000300000000000000 0027c000c000000000000000 270003000300000000000000 270003000300000000000000 0027c000c000000000000000 270003000300000000000000 0027c000c000000000000000 - {e=>-1,c=>0,a=>-21,g=>0,b=>0,d=>0,f=>0} ebff00000200000000000000 ebff00000200000000000000 ebff00000200000000000000 ffeb00004000000000000000 ebff00000200000000000000 ebff00000200000000000000 ffeb00004000000000000000 ebff00000200000000000000 ffeb00004000000000000000 - {e=>-1,c=>1,a=>-9,g=>-1,b=>1,d=>0,f=>0} f7ff03000200000001000000 f7ff03000200000001000000 f7ff03000200000001000000 fff7c0004000000080000000 f7ff03000200000001000000 f7ff03000200000001000000 fff7c0004000000080000000 f7ff03000200000001000000 fff7c0004000000080000000 - {e=>0,c=>0,a=>39,g=>-1,b=>0,d=>1,f=>0} 270000000100000001000000 270000000100000001000000 270000000100000001000000 002700008000000080000000 270000000100000001000000 270000000100000001000000 002700008000000080000000 270000000100000001000000 002700008000000080000000 - {e=>0,c=>0,a=>-23,g=>0,b=>1,d=>1,f=>0} e9ff01000100000000000000 e9ff01000100000000000000 e9ff01000100000000000000 ffe980008000000000000000 e9ff01000100000000000000 e9ff01000100000000000000 ffe980008000000000000000 e9ff01000100000000000000 ffe980008000000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>-109,d=>1,c=>1,h=>0,b=>0,g=>0,f=>-1} 93ff02000700000000000000 93ff02000700000000000000 93ff02000700000000000000 ff934000e000000000000000 93ff02000700000000000000 93ff02000700000000000000 ff934000e000000000000000 93ff02000700000000000000 ff934000e000000000000000 - {e=>0,a=>113,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>-1} 710000000500000002000000 710000000500000002000000 710000000500000002000000 00710000a000000040000000 710000000500000002000000 710000000500000002000000 00710000a000000040000000 710000000500000002000000 00710000a000000040000000 - {e=>-1,a=>115,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>0} 730001000300000003000000 730001000300000003000000 730001000300000003000000 00738000c0000000c0000000 730001000300000003000000 730001000300000003000000 00738000c0000000c0000000 730001000300000003000000 00738000c0000000c0000000 - {e=>0,a=>86,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0} 560000000100000000000000 560000000100000000000000 560000000100000000000000 005600008000000000000000 560000000100000000000000 560000000100000000000000 005600008000000000000000 560000000100000000000000 005600008000000000000000 - {e=>-1,a=>-14,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>0} f2ff03000300000003000000 f2ff03000300000003000000 f2ff03000300000003000000 fff2c000c0000000c0000000 f2ff03000300000003000000 f2ff03000300000003000000 fff2c000c0000000c0000000 f2ff03000300000003000000 fff2c000c0000000c0000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>97,d=>1,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>0} 610000000300000003000000 610000000300000003000000 610000000300000003000000 00610000c0000000c0000000 610000000300000003000000 610000000300000003000000 00610000c0000000c0000000 610000000300000003000000 00610000c0000000c0000000 - {e=>0,a=>-1,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>0} ffff01000000000002000000 ffff01000000000002000000 ffff01000000000002000000 ffff80000000000040000000 ffff01000000000002000000 ffff01000000000002000000 ffff80000000000040000000 ffff01000000000002000000 ffff80000000000040000000 - {e=>-1,a=>62,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>0,i=>-1} 3e0000000300000005000000 3e0000000300000005000000 3e0000000300000005000000 003e0000c0000000a0000000 3e0000000300000005000000 3e0000000300000005000000 003e0000c0000000a0000000 3e0000000300000005000000 003e0000c0000000a0000000 - {e=>0,a=>-110,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>-1} 92ff01000000000006000000 92ff01000000000006000000 92ff01000000000006000000 ff9280000000000060000000 92ff01000000000006000000 92ff01000000000006000000 ff9280000000000060000000 92ff01000000000006000000 ff9280000000000060000000 - {e=>0,a=>-40,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>-1,i=>0} d8ff00000500000002000000 d8ff00000500000002000000 d8ff00000500000002000000 ffd80000a000000040000000 d8ff00000500000002000000 d8ff00000500000002000000 ffd80000a000000040000000 d8ff00000500000002000000 ffd80000a000000040000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>-1,a=>-48,d=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>0} d0ff02000200000000000000 d0ff02000200000000000000 d0ff02000200000000000000 ffd040004000000000000000 d0ff02000200000000000000 d0ff02000200000000000000 ffd040004000000000000000 d0ff02000200000000000000 ffd040004000000000000000 - {e=>0,a=>27,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 1b0000000500000005000000 1b0000000500000005000000 1b0000000500000005000000 001b0000a0000000a0000000 1b0000000500000005000000 1b0000000500000005000000 001b0000a0000000a0000000 1b0000000500000005000000 001b0000a0000000a0000000 - {e=>0,a=>47,d=>1,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>-1} 2f0001000100000006000000 2f0001000100000006000000 2f0001000100000006000000 002f80008000000060000000 2f0001000100000006000000 2f0001000100000006000000 002f80008000000060000000 2f0001000100000006000000 002f80008000000060000000 - {e=>-1,a=>24,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 180003000600000007000000 180003000600000007000000 180003000600000007000000 0018c00060000000e0000000 180003000600000007000000 180003000600000007000000 0018c00060000000e0000000 180003000600000007000000 0018c00060000000e0000000 - {e=>0,a=>-105,d=>1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>0} 97ff02000100000003000000 97ff02000100000003000000 97ff02000100000003000000 ff97400080000000c0000000 97ff02000100000003000000 97ff02000100000003000000 ff97400080000000c0000000 97ff02000100000003000000 ff97400080000000c0000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>-1,a=>-24,d=>0,j=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>0} e8ff0200020000000000000000000000 e8ff0200020000000000000000000000 e8ff0200020000000000000000000000 ffe84000400000000000000000000000 e8ff0200020000000000000000000000 e8ff0200020000000000000000000000 ffe84000400000000000000000000000 e8ff0200020000000000000000000000 ffe84000400000000000000000000000 - {e=>-1,a=>-22,d=>0,j=>0,c=>1,h=>0,b=>0,g=>-1,f=>0,i=>0} eaff0200020000000100000000000000 eaff0200020000000100000000000000 eaff0200020000000100000000000000 ffea4000400000008000000000000000 eaff0200020000000100000000000000 eaff0200020000000100000000000000 ffea4000400000008000000000000000 eaff0200020000000100000000000000 ffea4000400000008000000000000000 - {e=>0,a=>-38,d=>0,j=>-1,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} daff0100040000000300000001000000 daff0100040000000300000001000000 daff0100040000000300000001000000 ffda800020000000c000000080000000 daff0100040000000300000001000000 daff0100040000000300000001000000 ffda800020000000c000000080000000 daff0100040000000300000001000000 ffda800020000000c000000080000000 - {e=>0,a=>72,d=>1,j=>0,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 48000300050000000200000000000000 48000300050000000200000000000000 48000300050000000200000000000000 0048c000a00000004000000000000000 48000300050000000200000000000000 48000300050000000200000000000000 0048c000a00000004000000000000000 48000300050000000200000000000000 0048c000a00000004000000000000000 - {e=>0,a=>-62,d=>0,j=>0,c=>0,h=>0,b=>1,g=>-1,f=>-1,i=>0} c2ff0100040000000100000000000000 c2ff0100040000000100000000000000 c2ff0100040000000100000000000000 ffc28000200000008000000000000000 c2ff0100040000000100000000000000 c2ff0100040000000100000000000000 ffc28000200000008000000000000000 c2ff0100040000000100000000000000 ffc28000200000008000000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>-1,a=>29,d=>0,j=>-1,c=>1,k=>-52,h=>-1,b=>1,g=>0,f=>0,i=>0} 1d000300020000000200000001000000ccffffff 1d000300020000000200000001000000ccffffffffffffff 1d000300020000000200000001000000ccffffffffffffff 001dc000400000004000000080000000ffffffcc 1d000300020000000200000001000000ccffffff 1d000300020000000200000001000000ccffffff 001dc000400000004000000080000000ffffffffffffffcc 1d000300020000000200000001000000ccffffff 001dc000400000004000000080000000ffffffcc - {e=>0,a=>71,d=>0,j=>-1,c=>0,k=>11,h=>0,b=>0,g=>0,f=>0,i=>-1} 470000000000000004000000010000000b000000 470000000000000004000000010000000b00000000000000 470000000000000004000000010000000b00000000000000 004700000000000020000000800000000000000b 470000000000000004000000010000000b000000 470000000000000004000000010000000b000000 00470000000000002000000080000000000000000000000b 470000000000000004000000010000000b000000 004700000000000020000000800000000000000b - {e=>-1,a=>7,d=>0,j=>0,c=>0,k=>101,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 0700000002000000070000000000000065000000 070000000200000007000000000000006500000000000000 070000000200000007000000000000006500000000000000 0007000040000000e00000000000000000000065 0700000002000000070000000000000065000000 0700000002000000070000000000000065000000 0007000040000000e0000000000000000000000000000065 0700000002000000070000000000000065000000 0007000040000000e00000000000000000000065 - {e=>-1,a=>-19,d=>1,j=>0,c=>0,k=>8,h=>-1,b=>1,g=>0,f=>0,i=>-1} edff010003000000060000000000000008000000 edff01000300000006000000000000000800000000000000 edff01000300000006000000000000000800000000000000 ffed8000c0000000600000000000000000000008 edff010003000000060000000000000008000000 edff010003000000060000000000000008000000 ffed8000c000000060000000000000000000000000000008 edff010003000000060000000000000008000000 ffed8000c0000000600000000000000000000008 - {e=>-1,a=>71,d=>1,j=>0,c=>0,k=>-64,h=>0,b=>1,g=>-1,f=>-1,i=>-1} 47000100070000000500000000000000c0ffffff 47000100070000000500000000000000c0ffffffffffffff 47000100070000000500000000000000c0ffffffffffffff 00478000e0000000a000000000000000ffffffc0 47000100070000000500000000000000c0ffffff 47000100070000000500000000000000c0ffffff 00478000e0000000a000000000000000ffffffffffffffc0 47000100070000000500000000000000c0ffffff 00478000e0000000a000000000000000ffffffc0 = struct mixed1 { int a; unsigned int b:1; }; - {a=>-120,b=>0} 88ffffff00000000 88ffffff00000000 88ffffff00000000 ffffff8800000000 88ffffff00000000 88ffffff00000000 ffffff8800000000 88ffffff00000000 ffffff8800000000 - {a=>-74,b=>1} b6ffffff01000000 b6ffffff01000000 b6ffffff01000000 ffffffb680000000 b6ffffff01000000 b6ffffff01000000 ffffffb680000000 b6ffffff01000000 ffffffb680000000 - {a=>-4,b=>1} fcffffff01000000 fcffffff01000000 fcffffff01000000 fffffffc80000000 fcffffff01000000 fcffffff01000000 fffffffc80000000 fcffffff01000000 fffffffc80000000 - {a=>-89,b=>0} a7ffffff00000000 a7ffffff00000000 a7ffffff00000000 ffffffa700000000 a7ffffff00000000 a7ffffff00000000 ffffffa700000000 a7ffffff00000000 ffffffa700000000 - {a=>95,b=>0} 5f00000000000000 5f00000000000000 5f00000000000000 0000005f00000000 5f00000000000000 5f00000000000000 0000005f00000000 5f00000000000000 0000005f00000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>124,b=>1} 7c00000001000000 7c00000001000000 7c00000001000000 0000007c80000000 7c00000001000000 7c00000001000000 0000007c80000000 7c00000001000000 0000007c80000000 - {c=>0,a=>97,b=>1} 6100000001000000 6100000001000000 6100000001000000 0000006180000000 6100000001000000 6100000001000000 0000006180000000 6100000001000000 0000006180000000 - {c=>0,a=>-1,b=>0} ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 - {c=>0,a=>-59,b=>0} c5ffffff00000000 c5ffffff00000000 c5ffffff00000000 ffffffc500000000 c5ffffff00000000 c5ffffff00000000 ffffffc500000000 c5ffffff00000000 ffffffc500000000 - {c=>1,a=>23,b=>1} 1700000003000000 1700000003000000 1700000003000000 00000017c0000000 1700000003000000 1700000003000000 00000017c0000000 1700000003000000 00000017c0000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 0000000100000000 0100000000000000 0100000000000000 0000000100000000 0100000000000000 0000000100000000 - {c=>0,a=>-43,b=>1} d5ffffff01000000 d5ffffff01000000 d5ffffff01000000 ffffffd580000000 d5ffffff01000000 d5ffffff01000000 ffffffd580000000 d5ffffff01000000 ffffffd580000000 - {c=>0,a=>-32,b=>1} e0ffffff01000000 e0ffffff01000000 e0ffffff01000000 ffffffe080000000 e0ffffff01000000 e0ffffff01000000 ffffffe080000000 e0ffffff01000000 ffffffe080000000 - {c=>0,a=>-65,b=>1} bfffffff01000000 bfffffff01000000 bfffffff01000000 ffffffbf80000000 bfffffff01000000 bfffffff01000000 ffffffbf80000000 bfffffff01000000 ffffffbf80000000 - {c=>0,a=>-14,b=>0} f2ffffff00000000 f2ffffff00000000 f2ffffff00000000 fffffff200000000 f2ffffff00000000 f2ffffff00000000 fffffff200000000 f2ffffff00000000 fffffff200000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>89,b=>0,d=>0} 590000000000000000000000 590000000000000000000000 590000000000000000000000 000000590000000000000000 590000000000000000000000 590000000000000000000000 000000590000000000000000 590000000000000000000000 000000590000000000000000 - {c=>0,a=>-30,b=>0,d=>1} e2ffffff0000000001000000 e2ffffff0000000001000000 e2ffffff0000000001000000 ffffffe20000000080000000 e2ffffff0000000001000000 e2ffffff0000000001000000 ffffffe20000000080000000 e2ffffff0000000001000000 ffffffe20000000080000000 - {c=>1,a=>-6,b=>0,d=>0} faffffff0200000000000000 faffffff0200000000000000 faffffff0200000000000000 fffffffa4000000000000000 faffffff0200000000000000 faffffff0200000000000000 fffffffa4000000000000000 faffffff0200000000000000 fffffffa4000000000000000 - {c=>1,a=>-16,b=>1,d=>0} f0ffffff0300000000000000 f0ffffff0300000000000000 f0ffffff0300000000000000 fffffff0c000000000000000 f0ffffff0300000000000000 f0ffffff0300000000000000 fffffff0c000000000000000 f0ffffff0300000000000000 fffffff0c000000000000000 - {c=>0,a=>94,b=>1,d=>1} 5e0000000100000001000000 5e0000000100000001000000 5e0000000100000001000000 0000005e8000000080000000 5e0000000100000001000000 5e0000000100000001000000 0000005e8000000080000000 5e0000000100000001000000 0000005e8000000080000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>-1,c=>0,a=>-26,b=>1,d=>1} e6ffffff0100000003000000 e6ffffff0100000003000000 e6ffffff0100000003000000 ffffffe680000000c0000000 e6ffffff0100000003000000 e6ffffff0100000003000000 ffffffe680000000c0000000 e6ffffff0100000003000000 ffffffe680000000c0000000 - {e=>0,c=>0,a=>-38,b=>1,d=>0} daffffff0100000000000000 daffffff0100000000000000 daffffff0100000000000000 ffffffda8000000000000000 daffffff0100000000000000 daffffff0100000000000000 ffffffda8000000000000000 daffffff0100000000000000 ffffffda8000000000000000 - {e=>-1,c=>1,a=>82,b=>1,d=>1} 520000000300000003000000 520000000300000003000000 520000000300000003000000 00000052c0000000c0000000 520000000300000003000000 520000000300000003000000 00000052c0000000c0000000 520000000300000003000000 00000052c0000000c0000000 - {e=>-1,c=>1,a=>-3,b=>1,d=>0} fdffffff0300000002000000 fdffffff0300000002000000 fdffffff0300000002000000 fffffffdc000000040000000 fdffffff0300000002000000 fdffffff0300000002000000 fffffffdc000000040000000 fdffffff0300000002000000 fffffffdc000000040000000 - {e=>-1,c=>1,a=>104,b=>0,d=>1} 680000000200000003000000 680000000200000003000000 680000000200000003000000 0000006840000000c0000000 680000000200000003000000 680000000200000003000000 0000006840000000c0000000 680000000200000003000000 0000006840000000c0000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>-1,c=>0,a=>-49,b=>0,d=>1,f=>0} cfffffff0000000003000000 cfffffff0000000003000000 cfffffff0000000003000000 ffffffcf00000000c0000000 cfffffff0000000003000000 cfffffff0000000003000000 ffffffcf00000000c0000000 cfffffff0000000003000000 ffffffcf00000000c0000000 - {e=>-1,c=>1,a=>-85,b=>0,d=>1,f=>-1} abffffff0200000007000000 abffffff0200000007000000 abffffff0200000007000000 ffffffab40000000e0000000 abffffff0200000007000000 abffffff0200000007000000 ffffffab40000000e0000000 abffffff0200000007000000 ffffffab40000000e0000000 - {e=>0,c=>1,a=>-109,b=>0,d=>0,f=>0} 93ffffff0200000000000000 93ffffff0200000000000000 93ffffff0200000000000000 ffffff934000000000000000 93ffffff0200000000000000 93ffffff0200000000000000 ffffff934000000000000000 93ffffff0200000000000000 ffffff934000000000000000 - {e=>0,c=>0,a=>109,b=>0,d=>0,f=>0} 6d0000000000000000000000 6d0000000000000000000000 6d0000000000000000000000 0000006d0000000000000000 6d0000000000000000000000 6d0000000000000000000000 0000006d0000000000000000 6d0000000000000000000000 0000006d0000000000000000 - {e=>0,c=>1,a=>-3,b=>0,d=>0,f=>0} fdffffff0200000000000000 fdffffff0200000000000000 fdffffff0200000000000000 fffffffd4000000000000000 fdffffff0200000000000000 fdffffff0200000000000000 fffffffd4000000000000000 fdffffff0200000000000000 fffffffd4000000000000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-89,b=>0,d=>0,f=>-1} a7ffffff0000000004000000 a7ffffff0000000004000000 a7ffffff0000000004000000 ffffffa70000000020000000 a7ffffff0000000004000000 a7ffffff0000000004000000 ffffffa70000000020000000 a7ffffff0000000004000000 ffffffa70000000020000000 - {e=>-1,c=>0,a=>-6,b=>1,d=>1,f=>0} faffffff0100000003000000 faffffff0100000003000000 faffffff0100000003000000 fffffffa80000000c0000000 faffffff0100000003000000 faffffff0100000003000000 fffffffa80000000c0000000 faffffff0100000003000000 fffffffa80000000c0000000 - {e=>0,c=>0,a=>-60,b=>0,d=>1,f=>0} c4ffffff0000000001000000 c4ffffff0000000001000000 c4ffffff0000000001000000 ffffffc40000000080000000 c4ffffff0000000001000000 c4ffffff0000000001000000 ffffffc40000000080000000 c4ffffff0000000001000000 ffffffc40000000080000000 - {e=>-1,c=>1,a=>-65,b=>0,d=>1,f=>0} bfffffff0200000003000000 bfffffff0200000003000000 bfffffff0200000003000000 ffffffbf40000000c0000000 bfffffff0200000003000000 bfffffff0200000003000000 ffffffbf40000000c0000000 bfffffff0200000003000000 ffffffbf40000000c0000000 - {e=>0,c=>0,a=>-92,b=>0,d=>0,f=>-1} a4ffffff0000000004000000 a4ffffff0000000004000000 a4ffffff0000000004000000 ffffffa40000000020000000 a4ffffff0000000004000000 a4ffffff0000000004000000 ffffffa40000000020000000 a4ffffff0000000004000000 ffffffa40000000020000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>1,a=>23,g=>0,b=>0,d=>0,f=>0} 17000000020000000000000000000000 17000000020000000000000000000000 17000000020000000000000000000000 00000017400000000000000000000000 17000000020000000000000000000000 17000000020000000000000000000000 00000017400000000000000000000000 17000000020000000000000000000000 00000017400000000000000000000000 - {e=>0,c=>0,a=>-110,g=>-1,b=>1,d=>1,f=>0} 92ffffff010000000100000001000000 92ffffff010000000100000001000000 92ffffff010000000100000001000000 ffffff92800000008000000080000000 92ffffff010000000100000001000000 92ffffff010000000100000001000000 ffffff92800000008000000080000000 92ffffff010000000100000001000000 ffffff92800000008000000080000000 - {e=>0,c=>1,a=>6,g=>0,b=>0,d=>1,f=>-1} 06000000020000000500000000000000 06000000020000000500000000000000 06000000020000000500000000000000 0000000640000000a000000000000000 06000000020000000500000000000000 06000000020000000500000000000000 0000000640000000a000000000000000 06000000020000000500000000000000 0000000640000000a000000000000000 - {e=>-1,c=>0,a=>-15,g=>-1,b=>0,d=>1,f=>0} f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 fffffff100000000c000000080000000 f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 fffffff100000000c000000080000000 f1ffffff000000000300000001000000 fffffff100000000c000000080000000 - {e=>-1,c=>1,a=>-105,g=>-1,b=>1,d=>1,f=>-1} 97ffffff030000000700000001000000 97ffffff030000000700000001000000 97ffffff030000000700000001000000 ffffff97c0000000e000000080000000 97ffffff030000000700000001000000 97ffffff030000000700000001000000 ffffff97c0000000e000000080000000 97ffffff030000000700000001000000 ffffff97c0000000e000000080000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>-67,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1} bdffffff030000000600000003000000 bdffffff030000000600000003000000 bdffffff030000000600000003000000 ffffffbdc000000060000000c0000000 bdffffff030000000600000003000000 bdffffff030000000600000003000000 ffffffbdc000000060000000c0000000 bdffffff030000000600000003000000 ffffffbdc000000060000000c0000000 - {e=>0,a=>16,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1} 10000000020000000400000001000000 10000000020000000400000001000000 10000000020000000400000001000000 00000010400000002000000080000000 10000000020000000400000001000000 10000000020000000400000001000000 00000010400000002000000080000000 10000000020000000400000001000000 00000010400000002000000080000000 - {e=>0,a=>75,d=>0,c=>0,h=>0,b=>0,g=>0,f=>-1} 4b000000000000000400000000000000 4b000000000000000400000000000000 4b000000000000000400000000000000 0000004b000000002000000000000000 4b000000000000000400000000000000 4b000000000000000400000000000000 0000004b000000002000000000000000 4b000000000000000400000000000000 0000004b000000002000000000000000 - {e=>-1,a=>-78,d=>0,c=>1,h=>0,b=>1,g=>-1,f=>0} b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 ffffffb2c00000004000000080000000 b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 ffffffb2c00000004000000080000000 b2ffffff030000000200000001000000 ffffffb2c00000004000000080000000 - {e=>0,a=>50,d=>1,c=>1,h=>0,b=>1,g=>0,f=>0} 32000000030000000100000000000000 32000000030000000100000000000000 32000000030000000100000000000000 00000032c00000008000000000000000 32000000030000000100000000000000 32000000030000000100000000000000 00000032c00000008000000000000000 32000000030000000100000000000000 00000032c00000008000000000000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>0,a=>45,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 2d000000020000000400000005000000 2d000000020000000400000005000000 2d000000020000000400000005000000 0000002d4000000020000000a0000000 2d000000020000000400000005000000 2d000000020000000400000005000000 0000002d4000000020000000a0000000 2d000000020000000400000005000000 0000002d4000000020000000a0000000 - {e=>0,a=>-65,d=>1,c=>1,h=>-1,b=>0,g=>-1,f=>-1,i=>0} bfffffff020000000500000003000000 bfffffff020000000500000003000000 bfffffff020000000500000003000000 ffffffbf40000000a0000000c0000000 bfffffff020000000500000003000000 bfffffff020000000500000003000000 ffffffbf40000000a0000000c0000000 bfffffff020000000500000003000000 ffffffbf40000000a0000000c0000000 - {e=>-1,a=>5,d=>0,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>0} 05000000030000000600000000000000 05000000030000000600000000000000 05000000030000000600000000000000 00000005c00000006000000000000000 05000000030000000600000000000000 05000000030000000600000000000000 00000005c00000006000000000000000 05000000030000000600000000000000 00000005c00000006000000000000000 - {e=>-1,a=>53,d=>1,c=>0,h=>-1,b=>1,g=>0,f=>-1,i=>-1} 35000000010000000700000006000000 35000000010000000700000006000000 35000000010000000700000006000000 0000003580000000e000000060000000 35000000010000000700000006000000 35000000010000000700000006000000 0000003580000000e000000060000000 35000000010000000700000006000000 0000003580000000e000000060000000 - {e=>-1,a=>-98,d=>0,c=>1,h=>-1,b=>1,g=>0,f=>0,i=>-1} 9effffff030000000200000006000000 9effffff030000000200000006000000 9effffff030000000200000006000000 ffffff9ec00000004000000060000000 9effffff030000000200000006000000 9effffff030000000200000006000000 ffffff9ec00000004000000060000000 9effffff030000000200000006000000 ffffff9ec00000004000000060000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>0,a=>79,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} 4f000000010000000000000003000000 4f000000010000000000000003000000 4f000000010000000000000003000000 0000004f8000000000000000c0000000 4f000000010000000000000003000000 4f000000010000000000000003000000 0000004f8000000000000000c0000000 4f000000010000000000000003000000 0000004f8000000000000000c0000000 - {e=>0,a=>-115,d=>1,c=>0,h=>0,b=>1,g=>0,f=>-1,i=>-1} 8dffffff010000000500000004000000 8dffffff010000000500000004000000 8dffffff010000000500000004000000 ffffff8d80000000a000000020000000 8dffffff010000000500000004000000 8dffffff010000000500000004000000 ffffff8d80000000a000000020000000 8dffffff010000000500000004000000 ffffff8d80000000a000000020000000 - {e=>-1,a=>-69,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>0} bbffffff030000000200000003000000 bbffffff030000000200000003000000 bbffffff030000000200000003000000 ffffffbbc000000040000000c0000000 bbffffff030000000200000003000000 bbffffff030000000200000003000000 ffffffbbc000000040000000c0000000 bbffffff030000000200000003000000 ffffffbbc000000040000000c0000000 - {e=>-1,a=>0,d=>0,c=>1,h=>0,b=>1,g=>-1,f=>0,i=>-1} 00000000030000000200000005000000 00000000030000000200000005000000 00000000030000000200000005000000 00000000c000000040000000a0000000 00000000030000000200000005000000 00000000030000000200000005000000 00000000c000000040000000a0000000 00000000030000000200000005000000 00000000c000000040000000a0000000 - {e=>-1,a=>34,d=>1,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>-1} 22000000030000000700000004000000 22000000030000000700000004000000 22000000030000000700000004000000 00000022c0000000e000000020000000 22000000030000000700000004000000 22000000030000000700000004000000 00000022c0000000e000000020000000 22000000030000000700000004000000 00000022c0000000e000000020000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>0,a=>67,d=>0,j=>0,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>0} 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 00000043c0000000200000000000000000000000 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 00000043c0000000200000000000000000000000 4300000003000000040000000000000000000000 00000043c0000000200000000000000000000000 - {e=>0,a=>23,d=>0,j=>-1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 000000174000000020000000a000000080000000 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 000000174000000020000000a000000080000000 1700000002000000040000000500000001000000 000000174000000020000000a000000080000000 - {e=>0,a=>89,d=>0,j=>0,c=>0,h=>-1,b=>0,g=>-1,f=>-1,i=>0} 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 000000590000000020000000c000000000000000 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 000000590000000020000000c000000000000000 5900000000000000040000000300000000000000 000000590000000020000000c000000000000000 - {e=>0,a=>-97,d=>0,j=>0,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 ffffff9f4000000000000000e000000000000000 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 ffffff9f4000000000000000e000000000000000 9fffffff02000000000000000700000000000000 ffffff9f4000000000000000e000000000000000 - {e=>0,a=>-76,d=>1,j=>-1,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 ffffffb48000000080000000c000000080000000 b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 ffffffb48000000080000000c000000080000000 b4ffffff01000000010000000300000001000000 ffffffb48000000080000000c000000080000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>0,a=>-74,d=>1,j=>0,c=>1,k=>96,h=>0,b=>1,g=>-1,f=>0,i=>0} b6ffffff0300000001000000010000000000000060000000 b6ffffff03000000010000000100000000000000000000006000000000000000 b6ffffff03000000010000000100000000000000000000006000000000000000 ffffffb6c000000080000000800000000000000000000060 b6ffffff0300000001000000010000000000000060000000 b6ffffff0300000001000000010000000000000060000000 ffffffb6c0000000800000008000000000000000000000000000000000000060 b6ffffff0300000001000000010000000000000060000000 ffffffb6c000000080000000800000000000000000000060 - {e=>0,a=>89,d=>1,j=>0,c=>0,k=>-51,h=>0,b=>0,g=>-1,f=>0,i=>-1} 5900000000000000010000000500000000000000cdffffff 590000000000000001000000050000000000000000000000cdffffffffffffff 590000000000000001000000050000000000000000000000cdffffffffffffff 000000590000000080000000a000000000000000ffffffcd 5900000000000000010000000500000000000000cdffffff 5900000000000000010000000500000000000000cdffffff 000000590000000080000000a00000000000000000000000ffffffffffffffcd 5900000000000000010000000500000000000000cdffffff 000000590000000080000000a000000000000000ffffffcd - {e=>-1,a=>48,d=>0,j=>0,c=>0,k=>116,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 300000000000000002000000070000000000000074000000 3000000000000000020000000700000000000000000000007400000000000000 3000000000000000020000000700000000000000000000007400000000000000 000000300000000040000000e00000000000000000000074 300000000000000002000000070000000000000074000000 300000000000000002000000070000000000000074000000 000000300000000040000000e000000000000000000000000000000000000074 300000000000000002000000070000000000000074000000 000000300000000040000000e00000000000000000000074 - {e=>0,a=>-74,d=>0,j=>0,c=>1,k=>59,h=>0,b=>1,g=>0,f=>-1,i=>0} b6ffffff030000000400000000000000000000003b000000 b6ffffff03000000040000000000000000000000000000003b00000000000000 b6ffffff03000000040000000000000000000000000000003b00000000000000 ffffffb6c00000002000000000000000000000000000003b b6ffffff030000000400000000000000000000003b000000 b6ffffff030000000400000000000000000000003b000000 ffffffb6c000000020000000000000000000000000000000000000000000003b b6ffffff030000000400000000000000000000003b000000 ffffffb6c00000002000000000000000000000000000003b - {e=>-1,a=>63,d=>1,j=>-1,c=>0,k=>49,h=>0,b=>0,g=>-1,f=>0,i=>0} 3f0000000000000003000000010000000100000031000000 3f00000000000000030000000100000001000000000000003100000000000000 3f00000000000000030000000100000001000000000000003100000000000000 0000003f00000000c0000000800000008000000000000031 3f0000000000000003000000010000000100000031000000 3f0000000000000003000000010000000100000031000000 0000003f00000000c00000008000000080000000000000000000000000000031 3f0000000000000003000000010000000100000031000000 0000003f00000000c0000000800000008000000000000031 = struct mixed1 { long a; unsigned int b:1; }; - {a=>-77,b=>1} b3ffffff01000000 b3ffffffffffffff0100000000000000 b3ffffffffffffff0100000000000000 ffffffb380000000 b3ffffff01000000 b3ffffff01000000 ffffffffffffffb38000000000000000 b3ffffff01000000 ffffffb380000000 - {a=>-4,b=>0} fcffffff00000000 fcffffffffffffff0000000000000000 fcffffffffffffff0000000000000000 fffffffc00000000 fcffffff00000000 fcffffff00000000 fffffffffffffffc0000000000000000 fcffffff00000000 fffffffc00000000 - {a=>106,b=>1} 6a00000001000000 6a000000000000000100000000000000 6a000000000000000100000000000000 0000006a80000000 6a00000001000000 6a00000001000000 000000000000006a8000000000000000 6a00000001000000 0000006a80000000 - {a=>-44,b=>1} d4ffffff01000000 d4ffffffffffffff0100000000000000 d4ffffffffffffff0100000000000000 ffffffd480000000 d4ffffff01000000 d4ffffff01000000 ffffffffffffffd48000000000000000 d4ffffff01000000 ffffffd480000000 - {a=>-88,b=>1} a8ffffff01000000 a8ffffffffffffff0100000000000000 a8ffffffffffffff0100000000000000 ffffffa880000000 a8ffffff01000000 a8ffffff01000000 ffffffffffffffa88000000000000000 a8ffffff01000000 ffffffa880000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>-69,b=>1} bbffffff01000000 bbffffffffffffff0100000000000000 bbffffffffffffff0100000000000000 ffffffbb80000000 bbffffff01000000 bbffffff01000000 ffffffffffffffbb8000000000000000 bbffffff01000000 ffffffbb80000000 - {c=>0,a=>-85,b=>1} abffffff01000000 abffffffffffffff0100000000000000 abffffffffffffff0100000000000000 ffffffab80000000 abffffff01000000 abffffff01000000 ffffffffffffffab8000000000000000 abffffff01000000 ffffffab80000000 - {c=>0,a=>33,b=>1} 2100000001000000 21000000000000000100000000000000 21000000000000000100000000000000 0000002180000000 2100000001000000 2100000001000000 00000000000000218000000000000000 2100000001000000 0000002180000000 - {c=>1,a=>40,b=>1} 2800000003000000 28000000000000000300000000000000 28000000000000000300000000000000 00000028c0000000 2800000003000000 2800000003000000 0000000000000028c000000000000000 2800000003000000 00000028c0000000 - {c=>0,a=>-14,b=>1} f2ffffff01000000 f2ffffffffffffff0100000000000000 f2ffffffffffffff0100000000000000 fffffff280000000 f2ffffff01000000 f2ffffff01000000 fffffffffffffff28000000000000000 f2ffffff01000000 fffffff280000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>-30,b=>0} e2ffffff00000000 e2ffffffffffffff0000000000000000 e2ffffffffffffff0000000000000000 ffffffe200000000 e2ffffff00000000 e2ffffff00000000 ffffffffffffffe20000000000000000 e2ffffff00000000 ffffffe200000000 - {c=>0,a=>-60,b=>0} c4ffffff00000000 c4ffffffffffffff0000000000000000 c4ffffffffffffff0000000000000000 ffffffc400000000 c4ffffff00000000 c4ffffff00000000 ffffffffffffffc40000000000000000 c4ffffff00000000 ffffffc400000000 - {c=>1,a=>57,b=>0} 3900000002000000 39000000000000000200000000000000 39000000000000000200000000000000 0000003940000000 3900000002000000 3900000002000000 00000000000000394000000000000000 3900000002000000 0000003940000000 - {c=>1,a=>11,b=>0} 0b00000002000000 0b000000000000000200000000000000 0b000000000000000200000000000000 0000000b40000000 0b00000002000000 0b00000002000000 000000000000000b4000000000000000 0b00000002000000 0000000b40000000 - {c=>1,a=>-73,b=>1} b7ffffff03000000 b7ffffffffffffff0300000000000000 b7ffffffffffffff0300000000000000 ffffffb7c0000000 b7ffffff03000000 b7ffffff03000000 ffffffffffffffb7c000000000000000 b7ffffff03000000 ffffffb7c0000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>-46,b=>0,d=>1} d2ffffff0000000001000000 d2ffffffffffffff0000000001000000 d2ffffffffffffff0000000001000000 ffffffd20000000080000000 d2ffffff0000000001000000 d2ffffff0000000001000000 ffffffffffffffd20000000080000000 d2ffffff0000000001000000 ffffffd20000000080000000 - {c=>0,a=>27,b=>0,d=>0} 1b0000000000000000000000 1b000000000000000000000000000000 1b000000000000000000000000000000 0000001b0000000000000000 1b0000000000000000000000 1b0000000000000000000000 000000000000001b0000000000000000 1b0000000000000000000000 0000001b0000000000000000 - {c=>1,a=>1,b=>1,d=>0} 010000000300000000000000 01000000000000000300000000000000 01000000000000000300000000000000 00000001c000000000000000 010000000300000000000000 010000000300000000000000 0000000000000001c000000000000000 010000000300000000000000 00000001c000000000000000 - {c=>1,a=>71,b=>0,d=>0} 470000000200000000000000 47000000000000000200000000000000 47000000000000000200000000000000 000000474000000000000000 470000000200000000000000 470000000200000000000000 00000000000000474000000000000000 470000000200000000000000 000000474000000000000000 - {c=>0,a=>-14,b=>1,d=>1} f2ffffff0100000001000000 f2ffffffffffffff0100000001000000 f2ffffffffffffff0100000001000000 fffffff28000000080000000 f2ffffff0100000001000000 f2ffffff0100000001000000 fffffffffffffff28000000080000000 f2ffffff0100000001000000 fffffff28000000080000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>-1,c=>1,a=>19,b=>0,d=>0} 130000000200000002000000 13000000000000000200000002000000 13000000000000000200000002000000 000000134000000040000000 130000000200000002000000 130000000200000002000000 00000000000000134000000040000000 130000000200000002000000 000000134000000040000000 - {e=>-1,c=>1,a=>70,b=>0,d=>1} 460000000200000003000000 46000000000000000200000003000000 46000000000000000200000003000000 0000004640000000c0000000 460000000200000003000000 460000000200000003000000 000000000000004640000000c0000000 460000000200000003000000 0000004640000000c0000000 - {e=>-1,c=>1,a=>-112,b=>1,d=>0} 90ffffff0300000002000000 90ffffffffffffff0300000002000000 90ffffffffffffff0300000002000000 ffffff90c000000040000000 90ffffff0300000002000000 90ffffff0300000002000000 ffffffffffffff90c000000040000000 90ffffff0300000002000000 ffffff90c000000040000000 - {e=>0,c=>0,a=>90,b=>0,d=>1} 5a0000000000000001000000 5a000000000000000000000001000000 5a000000000000000000000001000000 0000005a0000000080000000 5a0000000000000001000000 5a0000000000000001000000 000000000000005a0000000080000000 5a0000000000000001000000 0000005a0000000080000000 - {e=>-1,c=>1,a=>-16,b=>1,d=>0} f0ffffff0300000002000000 f0ffffffffffffff0300000002000000 f0ffffffffffffff0300000002000000 fffffff0c000000040000000 f0ffffff0300000002000000 f0ffffff0300000002000000 fffffffffffffff0c000000040000000 f0ffffff0300000002000000 fffffff0c000000040000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>-1,c=>1,a=>92,b=>0,d=>0,f=>-1} 5c0000000200000006000000 5c000000000000000200000006000000 5c000000000000000200000006000000 0000005c4000000060000000 5c0000000200000006000000 5c0000000200000006000000 000000000000005c4000000060000000 5c0000000200000006000000 0000005c4000000060000000 - {e=>0,c=>1,a=>-112,b=>1,d=>0,f=>0} 90ffffff0300000000000000 90ffffffffffffff0300000000000000 90ffffffffffffff0300000000000000 ffffff90c000000000000000 90ffffff0300000000000000 90ffffff0300000000000000 ffffffffffffff90c000000000000000 90ffffff0300000000000000 ffffff90c000000000000000 - {e=>-1,c=>0,a=>-75,b=>1,d=>1,f=>0} b5ffffff0100000003000000 b5ffffffffffffff0100000003000000 b5ffffffffffffff0100000003000000 ffffffb580000000c0000000 b5ffffff0100000003000000 b5ffffff0100000003000000 ffffffffffffffb580000000c0000000 b5ffffff0100000003000000 ffffffb580000000c0000000 - {e=>0,c=>0,a=>-54,b=>1,d=>1,f=>-1} caffffff0100000005000000 caffffffffffffff0100000005000000 caffffffffffffff0100000005000000 ffffffca80000000a0000000 caffffff0100000005000000 caffffff0100000005000000 ffffffffffffffca80000000a0000000 caffffff0100000005000000 ffffffca80000000a0000000 - {e=>0,c=>0,a=>-3,b=>0,d=>0,f=>-1} fdffffff0000000004000000 fdffffffffffffff0000000004000000 fdffffffffffffff0000000004000000 fffffffd0000000020000000 fdffffff0000000004000000 fdffffff0000000004000000 fffffffffffffffd0000000020000000 fdffffff0000000004000000 fffffffd0000000020000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>1,a=>99,b=>1,d=>0,f=>0} 630000000300000000000000 63000000000000000300000000000000 63000000000000000300000000000000 00000063c000000000000000 630000000300000000000000 630000000300000000000000 0000000000000063c000000000000000 630000000300000000000000 00000063c000000000000000 - {e=>0,c=>1,a=>121,b=>1,d=>1,f=>0} 790000000300000001000000 79000000000000000300000001000000 79000000000000000300000001000000 00000079c000000080000000 790000000300000001000000 790000000300000001000000 0000000000000079c000000080000000 790000000300000001000000 00000079c000000080000000 - {e=>0,c=>1,a=>101,b=>0,d=>0,f=>-1} 650000000200000004000000 65000000000000000200000004000000 65000000000000000200000004000000 000000654000000020000000 650000000200000004000000 650000000200000004000000 00000000000000654000000020000000 650000000200000004000000 000000654000000020000000 - {e=>0,c=>1,a=>-100,b=>0,d=>0,f=>0} 9cffffff0200000000000000 9cffffffffffffff0200000000000000 9cffffffffffffff0200000000000000 ffffff9c4000000000000000 9cffffff0200000000000000 9cffffff0200000000000000 ffffffffffffff9c4000000000000000 9cffffff0200000000000000 ffffff9c4000000000000000 - {e=>0,c=>1,a=>-59,b=>0,d=>1,f=>0} c5ffffff0200000001000000 c5ffffffffffffff0200000001000000 c5ffffffffffffff0200000001000000 ffffffc54000000080000000 c5ffffff0200000001000000 c5ffffff0200000001000000 ffffffffffffffc54000000080000000 c5ffffff0200000001000000 ffffffc54000000080000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>0,a=>73,g=>-1,b=>1,d=>1,f=>-1} 49000000010000000500000001000000 490000000000000001000000050000000100000000000000 490000000000000001000000050000000100000000000000 0000004980000000a000000080000000 49000000010000000500000001000000 49000000010000000500000001000000 000000000000004980000000a00000008000000000000000 49000000010000000500000001000000 0000004980000000a000000080000000 - {e=>0,c=>0,a=>11,g=>0,b=>1,d=>0,f=>0} 0b000000010000000000000000000000 0b0000000000000001000000000000000000000000000000 0b0000000000000001000000000000000000000000000000 0000000b800000000000000000000000 0b000000010000000000000000000000 0b000000010000000000000000000000 000000000000000b80000000000000000000000000000000 0b000000010000000000000000000000 0000000b800000000000000000000000 - {e=>-1,c=>0,a=>-31,g=>-1,b=>1,d=>1,f=>0} e1ffffff010000000300000001000000 e1ffffffffffffff01000000030000000100000000000000 e1ffffffffffffff01000000030000000100000000000000 ffffffe180000000c000000080000000 e1ffffff010000000300000001000000 e1ffffff010000000300000001000000 ffffffffffffffe180000000c00000008000000000000000 e1ffffff010000000300000001000000 ffffffe180000000c000000080000000 - {e=>-1,c=>0,a=>-124,g=>-1,b=>1,d=>1,f=>-1} 84ffffff010000000700000001000000 84ffffffffffffff01000000070000000100000000000000 84ffffffffffffff01000000070000000100000000000000 ffffff8480000000e000000080000000 84ffffff010000000700000001000000 84ffffff010000000700000001000000 ffffffffffffff8480000000e00000008000000000000000 84ffffff010000000700000001000000 ffffff8480000000e000000080000000 - {e=>-1,c=>0,a=>-42,g=>0,b=>1,d=>0,f=>-1} d6ffffff010000000600000000000000 d6ffffffffffffff01000000060000000000000000000000 d6ffffffffffffff01000000060000000000000000000000 ffffffd6800000006000000000000000 d6ffffff010000000600000000000000 d6ffffff010000000600000000000000 ffffffffffffffd680000000600000000000000000000000 d6ffffff010000000600000000000000 ffffffd6800000006000000000000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>86,d=>0,c=>0,h=>0,b=>0,g=>0,f=>-1} 56000000000000000600000000000000 560000000000000000000000060000000000000000000000 560000000000000000000000060000000000000000000000 00000056000000006000000000000000 56000000000000000600000000000000 56000000000000000600000000000000 000000000000005600000000600000000000000000000000 56000000000000000600000000000000 00000056000000006000000000000000 - {e=>-1,a=>-97,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1} 9fffffff000000000700000001000000 9fffffffffffffff00000000070000000100000000000000 9fffffffffffffff00000000070000000100000000000000 ffffff9f00000000e000000080000000 9fffffff000000000700000001000000 9fffffff000000000700000001000000 ffffffffffffff9f00000000e00000008000000000000000 9fffffff000000000700000001000000 ffffff9f00000000e000000080000000 - {e=>0,a=>18,d=>0,c=>1,h=>-1,b=>0,g=>0,f=>0} 12000000020000000000000002000000 120000000000000002000000000000000200000000000000 120000000000000002000000000000000200000000000000 00000012400000000000000040000000 12000000020000000000000002000000 12000000020000000000000002000000 000000000000001240000000000000004000000000000000 12000000020000000000000002000000 00000012400000000000000040000000 - {e=>0,a=>-102,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>0} 9affffff010000000000000003000000 9affffffffffffff01000000000000000300000000000000 9affffffffffffff01000000000000000300000000000000 ffffff9a8000000000000000c0000000 9affffff010000000000000003000000 9affffff010000000000000003000000 ffffffffffffff9a8000000000000000c000000000000000 9affffff010000000000000003000000 ffffff9a8000000000000000c0000000 - {e=>0,a=>-36,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0} dcffffff010000000000000002000000 dcffffffffffffff01000000000000000200000000000000 dcffffffffffffff01000000000000000200000000000000 ffffffdc800000000000000040000000 dcffffff010000000000000002000000 dcffffff010000000000000002000000 ffffffffffffffdc80000000000000004000000000000000 dcffffff010000000000000002000000 ffffffdc800000000000000040000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>83,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 53000000030000000700000003000000 530000000000000003000000070000000300000000000000 530000000000000003000000070000000300000000000000 00000053c0000000e0000000c0000000 53000000030000000700000003000000 53000000030000000700000003000000 0000000000000053c0000000e0000000c000000000000000 53000000030000000700000003000000 00000053c0000000e0000000c0000000 - {e=>0,a=>35,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>0,i=>0} 23000000010000000100000001000000 230000000000000001000000010000000100000000000000 230000000000000001000000010000000100000000000000 00000023800000008000000080000000 23000000010000000100000001000000 23000000010000000100000001000000 000000000000002380000000800000008000000000000000 23000000010000000100000001000000 00000023800000008000000080000000 - {e=>-1,a=>-48,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} d0ffffff020000000700000002000000 d0ffffffffffffff02000000070000000200000000000000 d0ffffffffffffff02000000070000000200000000000000 ffffffd040000000e000000040000000 d0ffffff020000000700000002000000 d0ffffff020000000700000002000000 ffffffffffffffd040000000e00000004000000000000000 d0ffffff020000000700000002000000 ffffffd040000000e000000040000000 - {e=>-1,a=>47,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>0,i=>0} 2f000000020000000300000002000000 2f0000000000000002000000030000000200000000000000 2f0000000000000002000000030000000200000000000000 0000002f40000000c000000040000000 2f000000020000000300000002000000 2f000000020000000300000002000000 000000000000002f40000000c00000004000000000000000 2f000000020000000300000002000000 0000002f40000000c000000040000000 - {e=>-1,a=>-92,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} a4ffffff010000000300000003000000 a4ffffffffffffff01000000030000000300000000000000 a4ffffffffffffff01000000030000000300000000000000 ffffffa480000000c0000000c0000000 a4ffffff010000000300000003000000 a4ffffff010000000300000003000000 ffffffffffffffa480000000c0000000c000000000000000 a4ffffff010000000300000003000000 ffffffa480000000c0000000c0000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>0,a=>-32,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} e0ffffff010000000400000003000000 e0ffffffffffffff01000000040000000300000000000000 e0ffffffffffffff01000000040000000300000000000000 ffffffe08000000020000000c0000000 e0ffffff010000000400000003000000 e0ffffff010000000400000003000000 ffffffffffffffe08000000020000000c000000000000000 e0ffffff010000000400000003000000 ffffffe08000000020000000c0000000 - {e=>0,a=>-105,d=>1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 97ffffff020000000500000005000000 97ffffffffffffff02000000050000000500000000000000 97ffffffffffffff02000000050000000500000000000000 ffffff9740000000a0000000a0000000 97ffffff020000000500000005000000 97ffffff020000000500000005000000 ffffffffffffff9740000000a0000000a000000000000000 97ffffff020000000500000005000000 ffffff9740000000a0000000a0000000 - {e=>0,a=>95,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 5f000000030000000500000007000000 5f0000000000000003000000050000000700000000000000 5f0000000000000003000000050000000700000000000000 0000005fc0000000a0000000e0000000 5f000000030000000500000007000000 5f000000030000000500000007000000 000000000000005fc0000000a0000000e000000000000000 5f000000030000000500000007000000 0000005fc0000000a0000000e0000000 - {e=>-1,a=>-81,d=>0,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} afffffff010000000200000000000000 afffffffffffffff01000000020000000000000000000000 afffffffffffffff01000000020000000000000000000000 ffffffaf800000004000000000000000 afffffff010000000200000000000000 afffffff010000000200000000000000 ffffffffffffffaf80000000400000000000000000000000 afffffff010000000200000000000000 ffffffaf800000004000000000000000 - {e=>-1,a=>54,d=>0,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 36000000000000000200000007000000 360000000000000000000000020000000700000000000000 360000000000000000000000020000000700000000000000 000000360000000040000000e0000000 36000000000000000200000007000000 36000000000000000200000007000000 00000000000000360000000040000000e000000000000000 36000000000000000200000007000000 000000360000000040000000e0000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>0,a=>-112,d=>0,j=>0,c=>1,h=>0,b=>1,g=>-1,f=>0,i=>-1} 90ffffff03000000000000000500000000000000 90ffffffffffffff03000000000000000500000000000000 90ffffffffffffff03000000000000000500000000000000 ffffff90c000000000000000a000000000000000 90ffffff03000000000000000500000000000000 90ffffff03000000000000000500000000000000 ffffffffffffff90c000000000000000a000000000000000 90ffffff03000000000000000500000000000000 ffffff90c000000000000000a000000000000000 - {e=>0,a=>39,d=>0,j=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 2700000003000000040000000300000000000000 270000000000000003000000040000000300000000000000 270000000000000003000000040000000300000000000000 00000027c000000020000000c000000000000000 2700000003000000040000000300000000000000 2700000003000000040000000300000000000000 0000000000000027c000000020000000c000000000000000 2700000003000000040000000300000000000000 00000027c000000020000000c000000000000000 - {e=>-1,a=>113,d=>1,j=>-1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} 7100000002000000070000000200000001000000 710000000000000002000000070000000200000001000000 710000000000000002000000070000000200000001000000 0000007140000000e00000004000000080000000 7100000002000000070000000200000001000000 7100000002000000070000000200000001000000 000000000000007140000000e00000004000000080000000 7100000002000000070000000200000001000000 0000007140000000e00000004000000080000000 - {e=>0,a=>118,d=>1,j=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>-1} 7600000002000000010000000400000000000000 760000000000000002000000010000000400000000000000 760000000000000002000000010000000400000000000000 0000007640000000800000002000000000000000 7600000002000000010000000400000000000000 7600000002000000010000000400000000000000 000000000000007640000000800000002000000000000000 7600000002000000010000000400000000000000 0000007640000000800000002000000000000000 - {e=>-1,a=>80,d=>0,j=>-1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>0} 5000000002000000060000000100000001000000 500000000000000002000000060000000100000001000000 500000000000000002000000060000000100000001000000 0000005040000000600000008000000080000000 5000000002000000060000000100000001000000 5000000002000000060000000100000001000000 000000000000005040000000600000008000000080000000 5000000002000000060000000100000001000000 0000005040000000600000008000000080000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>-1,a=>2,d=>0,j=>0,c=>1,k=>-79,h=>0,b=>1,g=>0,f=>0,i=>0} 0200000003000000020000000000000000000000b1ffffff 020000000000000003000000020000000000000000000000b1ffffffffffffff 020000000000000003000000020000000000000000000000b1ffffffffffffff 00000002c0000000400000000000000000000000ffffffb1 0200000003000000020000000000000000000000b1ffffff 0200000003000000020000000000000000000000b1ffffff 0000000000000002c0000000400000000000000000000000ffffffffffffffb1 0200000003000000020000000000000000000000b1ffffff 00000002c0000000400000000000000000000000ffffffb1 - {e=>0,a=>-88,d=>1,j=>0,c=>1,k=>-90,h=>0,b=>0,g=>-1,f=>0,i=>0} a8ffffff02000000010000000100000000000000a6ffffff a8ffffffffffffff02000000010000000100000000000000a6ffffffffffffff a8ffffffffffffff02000000010000000100000000000000a6ffffffffffffff ffffffa840000000800000008000000000000000ffffffa6 a8ffffff02000000010000000100000000000000a6ffffff a8ffffff02000000010000000100000000000000a6ffffff ffffffffffffffa840000000800000008000000000000000ffffffffffffffa6 a8ffffff02000000010000000100000000000000a6ffffff ffffffa840000000800000008000000000000000ffffffa6 - {e=>0,a=>-63,d=>0,j=>-1,c=>1,k=>22,h=>-1,b=>0,g=>0,f=>-1,i=>0} c1ffffff0200000004000000020000000100000016000000 c1ffffffffffffff020000000400000002000000010000001600000000000000 c1ffffffffffffff020000000400000002000000010000001600000000000000 ffffffc14000000020000000400000008000000000000016 c1ffffff0200000004000000020000000100000016000000 c1ffffff0200000004000000020000000100000016000000 ffffffffffffffc1400000002000000040000000800000000000000000000016 c1ffffff0200000004000000020000000100000016000000 ffffffc14000000020000000400000008000000000000016 - {e=>0,a=>23,d=>1,j=>0,c=>1,k=>21,h=>0,b=>1,g=>-1,f=>-1,i=>0} 170000000300000005000000010000000000000015000000 1700000000000000030000000500000001000000000000001500000000000000 1700000000000000030000000500000001000000000000001500000000000000 00000017c0000000a0000000800000000000000000000015 170000000300000005000000010000000000000015000000 170000000300000005000000010000000000000015000000 0000000000000017c0000000a000000080000000000000000000000000000015 170000000300000005000000010000000000000015000000 00000017c0000000a0000000800000000000000000000015 - {e=>-1,a=>84,d=>1,j=>-1,c=>1,k=>47,h=>0,b=>1,g=>-1,f=>0,i=>-1} 54000000030000000300000005000000010000002f000000 5400000000000000030000000300000005000000010000002f00000000000000 5400000000000000030000000300000005000000010000002f00000000000000 00000054c0000000c0000000a0000000800000000000002f 54000000030000000300000005000000010000002f000000 54000000030000000300000005000000010000002f000000 0000000000000054c0000000c0000000a000000080000000000000000000002f 54000000030000000300000005000000010000002f000000 00000054c0000000c0000000a0000000800000000000002f = struct mixed2 { unsigned int a:2; }; - {a=>1} 01000000 01000000 01000000 40000000 01000000 01000000 40000000 01000000 40000000 - {a=>2} 02000000 02000000 02000000 80000000 02000000 02000000 80000000 02000000 80000000 - {a=>2} 02000000 02000000 02000000 80000000 02000000 02000000 80000000 02000000 80000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; }; - {a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>0,b=>2} 08000000 08000000 08000000 20000000 08000000 08000000 20000000 08000000 20000000 - {a=>3,b=>3} 0f000000 0f000000 0f000000 f0000000 0f000000 0f000000 f0000000 0f000000 f0000000 - {a=>2,b=>1} 06000000 06000000 06000000 90000000 06000000 06000000 90000000 06000000 90000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; }; - {a=>2,b=>1} 06000000 06000000 06000000 90000000 06000000 06000000 90000000 06000000 90000000 - {a=>0,b=>3} 0c000000 0c000000 0c000000 30000000 0c000000 0c000000 30000000 0c000000 30000000 - {a=>2,b=>2} 0a000000 0a000000 0a000000 a0000000 0a000000 0a000000 a0000000 0a000000 a0000000 - {a=>3,b=>0} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {a=>3,b=>1} 07000000 07000000 07000000 d0000000 07000000 07000000 d0000000 07000000 d0000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; }; - {c=>0,a=>3,b=>2} 0b00000000000000 0b00000000000000 0b00000000000000 e000000000000000 0b00000000000000 0b00000000000000 e000000000000000 0b00000000000000 e000000000000000 - {c=>2,a=>2,b=>3} 0e00000002000000 0e00000002000000 0e00000002000000 b000000080000000 0e00000002000000 0e00000002000000 b000000080000000 0e00000002000000 b000000080000000 - {c=>3,a=>2,b=>2} 0a00000003000000 0a00000003000000 0a00000003000000 a0000000c0000000 0a00000003000000 0a00000003000000 a0000000c0000000 0a00000003000000 a0000000c0000000 - {c=>1,a=>2,b=>3} 0e00000001000000 0e00000001000000 0e00000001000000 b000000040000000 0e00000001000000 0e00000001000000 b000000040000000 0e00000001000000 b000000040000000 - {c=>1,a=>0,b=>1} 0400000001000000 0400000001000000 0400000001000000 1000000040000000 0400000001000000 0400000001000000 1000000040000000 0400000001000000 1000000040000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; }; - {c=>0,a=>2,b=>2,d=>-1} 0a0000000c000000 0a0000000c000000 0a0000000c000000 a000000030000000 0a0000000c000000 0a0000000c000000 a000000030000000 0a0000000c000000 a000000030000000 - {c=>1,a=>0,b=>1,d=>0} 0400000001000000 0400000001000000 0400000001000000 1000000040000000 0400000001000000 0400000001000000 1000000040000000 0400000001000000 1000000040000000 - {c=>2,a=>2,b=>1,d=>0} 0600000002000000 0600000002000000 0600000002000000 9000000080000000 0600000002000000 0600000002000000 9000000080000000 0600000002000000 9000000080000000 - {c=>2,a=>0,b=>2,d=>0} 0800000002000000 0800000002000000 0800000002000000 2000000080000000 0800000002000000 0800000002000000 2000000080000000 0800000002000000 2000000080000000 - {c=>1,a=>1,b=>3,d=>0} 0d00000001000000 0d00000001000000 0d00000001000000 7000000040000000 0d00000001000000 0d00000001000000 7000000040000000 0d00000001000000 7000000040000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; }; - {e=>1,c=>0,a=>1,b=>2,d=>-2} 0900000018000000 0900000018000000 0900000018000000 6000000024000000 0900000018000000 0900000018000000 6000000024000000 0900000018000000 6000000024000000 - {e=>0,c=>1,a=>0,b=>2,d=>-1} 080000000d000000 080000000d000000 080000000d000000 2000000070000000 080000000d000000 080000000d000000 2000000070000000 080000000d000000 2000000070000000 - {e=>-2,c=>3,a=>3,b=>1,d=>1} 0700000027000000 0700000027000000 0700000027000000 d0000000d8000000 0700000027000000 0700000027000000 d0000000d8000000 0700000027000000 d0000000d8000000 - {e=>1,c=>3,a=>0,b=>1,d=>-1} 040000001f000000 040000001f000000 040000001f000000 10000000f4000000 040000001f000000 040000001f000000 10000000f4000000 040000001f000000 10000000f4000000 - {e=>-2,c=>0,a=>0,b=>3,d=>-2} 0c00000028000000 0c00000028000000 0c00000028000000 3000000028000000 0c00000028000000 0c00000028000000 3000000028000000 0c00000028000000 3000000028000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; }; - {e=>-1,c=>3,a=>2,b=>1,d=>1} 0600000037000000 0600000037000000 0600000037000000 90000000dc000000 0600000037000000 0600000037000000 90000000dc000000 0600000037000000 90000000dc000000 - {e=>-2,c=>0,a=>1,b=>2,d=>-2} 0900000028000000 0900000028000000 0900000028000000 6000000028000000 0900000028000000 0900000028000000 6000000028000000 0900000028000000 6000000028000000 - {e=>0,c=>3,a=>2,b=>2,d=>0} 0a00000003000000 0a00000003000000 0a00000003000000 a0000000c0000000 0a00000003000000 0a00000003000000 a0000000c0000000 0a00000003000000 a0000000c0000000 - {e=>1,c=>2,a=>1,b=>2,d=>-2} 090000001a000000 090000001a000000 090000001a000000 60000000a4000000 090000001a000000 090000001a000000 60000000a4000000 090000001a000000 60000000a4000000 - {e=>1,c=>2,a=>2,b=>3,d=>0} 0e00000012000000 0e00000012000000 0e00000012000000 b000000084000000 0e00000012000000 0e00000012000000 b000000084000000 0e00000012000000 b000000084000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; }; - {e=>0,c=>1,a=>2,b=>3,d=>0,f=>-1} 0e0000000100000003000000 0e0000000100000003000000 0e0000000100000003000000 b000000040000000c0000000 0e0000000100000003000000 0e0000000100000003000000 b000000040000000c0000000 0e0000000100000003000000 b000000040000000c0000000 - {e=>0,c=>0,a=>0,b=>2,d=>-1,f=>1} 080000000c00000001000000 080000000c00000001000000 080000000c00000001000000 200000003000000040000000 080000000c00000001000000 080000000c00000001000000 200000003000000040000000 080000000c00000001000000 200000003000000040000000 - {e=>0,c=>2,a=>0,b=>0,d=>0,f=>-2} 000000000200000002000000 000000000200000002000000 000000000200000002000000 000000008000000080000000 000000000200000002000000 000000000200000002000000 000000008000000080000000 000000000200000002000000 000000008000000080000000 - {e=>-2,c=>3,a=>2,b=>1,d=>-2,f=>-2} 060000002b00000002000000 060000002b00000002000000 060000002b00000002000000 90000000e800000080000000 060000002b00000002000000 060000002b00000002000000 90000000e800000080000000 060000002b00000002000000 90000000e800000080000000 - {e=>-2,c=>2,a=>0,b=>3,d=>-2,f=>-1} 0c0000002a00000003000000 0c0000002a00000003000000 0c0000002a00000003000000 30000000a8000000c0000000 0c0000002a00000003000000 0c0000002a00000003000000 30000000a8000000c0000000 0c0000002a00000003000000 30000000a8000000c0000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; }; - {e=>0,c=>2,a=>1,g=>-1,b=>3,d=>1,f=>-1} 0d000000060000000f000000 0d000000060000000f000000 0d000000060000000f000000 7000000090000000f0000000 0d000000060000000f000000 0d000000060000000f000000 7000000090000000f0000000 0d000000060000000f000000 7000000090000000f0000000 - {e=>1,c=>2,a=>2,g=>1,b=>2,d=>1,f=>1} 0a0000001600000005000000 0a0000001600000005000000 0a0000001600000005000000 a00000009400000050000000 0a0000001600000005000000 0a0000001600000005000000 a00000009400000050000000 0a0000001600000005000000 a00000009400000050000000 - {e=>0,c=>2,a=>2,g=>-1,b=>2,d=>-2,f=>-1} 0a0000000a0000000f000000 0a0000000a0000000f000000 0a0000000a0000000f000000 a0000000a0000000f0000000 0a0000000a0000000f000000 0a0000000a0000000f000000 a0000000a0000000f0000000 0a0000000a0000000f000000 a0000000a0000000f0000000 - {e=>-2,c=>0,a=>2,g=>-2,b=>1,d=>-1,f=>1} 060000002c00000009000000 060000002c00000009000000 060000002c00000009000000 900000003800000060000000 060000002c00000009000000 060000002c00000009000000 900000003800000060000000 060000002c00000009000000 900000003800000060000000 - {e=>-1,c=>3,a=>1,g=>-1,b=>0,d=>0,f=>0} 01000000330000000c000000 01000000330000000c000000 01000000330000000c000000 40000000cc00000030000000 01000000330000000c000000 01000000330000000c000000 40000000cc00000030000000 01000000330000000c000000 40000000cc00000030000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; }; - {e=>-2,a=>0,d=>1,c=>2,h=>-1,b=>1,g=>-2,f=>-2} 04000000260000003a000000 04000000260000003a000000 04000000260000003a000000 1000000098000000ac000000 04000000260000003a000000 04000000260000003a000000 1000000098000000ac000000 04000000260000003a000000 1000000098000000ac000000 - {e=>-2,a=>0,d=>1,c=>0,h=>0,b=>0,g=>1,f=>0} 000000002400000004000000 000000002400000004000000 000000002400000004000000 000000001800000010000000 000000002400000004000000 000000002400000004000000 000000001800000010000000 000000002400000004000000 000000001800000010000000 - {e=>1,a=>1,d=>1,c=>1,h=>0,b=>0,g=>-1,f=>-2} 01000000150000000e000000 01000000150000000e000000 01000000150000000e000000 4000000054000000b0000000 01000000150000000e000000 01000000150000000e000000 4000000054000000b0000000 01000000150000000e000000 4000000054000000b0000000 - {e=>0,a=>3,d=>0,c=>0,h=>1,b=>2,g=>0,f=>1} 0b0000000000000011000000 0b0000000000000011000000 0b0000000000000011000000 e00000000000000044000000 0b0000000000000011000000 0b0000000000000011000000 e00000000000000044000000 0b0000000000000011000000 e00000000000000044000000 - {e=>-1,a=>1,d=>0,c=>1,h=>0,b=>0,g=>0,f=>0} 010000003100000000000000 010000003100000000000000 010000003100000000000000 400000004c00000000000000 010000003100000000000000 010000003100000000000000 400000004c00000000000000 010000003100000000000000 400000004c00000000000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; }; - {e=>-2,a=>0,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>-2} 040000002000000032000000 040000002000000032000000 040000002000000032000000 10000000080000008c000000 040000002000000032000000 040000002000000032000000 10000000080000008c000000 040000002000000032000000 10000000080000008c000000 - {e=>0,a=>3,d=>-2,c=>2,h=>-1,b=>3,g=>-1,f=>-2} 0f0000000a0000003e000000 0f0000000a0000003e000000 0f0000000a0000003e000000 f0000000a0000000bc000000 0f0000000a0000003e000000 0f0000000a0000003e000000 f0000000a0000000bc000000 0f0000000a0000003e000000 f0000000a0000000bc000000 - {e=>-1,a=>0,d=>0,c=>1,h=>-1,b=>0,g=>-1,f=>0} 00000000310000003c000000 00000000310000003c000000 00000000310000003c000000 000000004c0000003c000000 00000000310000003c000000 00000000310000003c000000 000000004c0000003c000000 00000000310000003c000000 000000004c0000003c000000 - {e=>0,a=>3,d=>-2,c=>0,h=>1,b=>2,g=>-2,f=>1} 0b0000000800000019000000 0b0000000800000019000000 0b0000000800000019000000 e00000002000000064000000 0b0000000800000019000000 0b0000000800000019000000 e00000002000000064000000 0b0000000800000019000000 e00000002000000064000000 - {e=>-1,a=>2,d=>0,c=>1,h=>1,b=>0,g=>0,f=>1} 020000003100000011000000 020000003100000011000000 020000003100000011000000 800000004c00000044000000 020000003100000011000000 020000003100000011000000 800000004c00000044000000 020000003100000011000000 800000004c00000044000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; int i:2; }; - {e=>0,a=>0,d=>0,c=>2,h=>-1,b=>2,g=>1,f=>0,i=>1} 08000000020000003400000001000000 08000000020000003400000001000000 08000000020000003400000001000000 20000000800000001c00000040000000 08000000020000003400000001000000 08000000020000003400000001000000 20000000800000001c00000040000000 08000000020000003400000001000000 20000000800000001c00000040000000 - {e=>0,a=>0,d=>-2,c=>0,h=>-1,b=>0,g=>-2,f=>1,i=>1} 00000000080000003900000001000000 00000000080000003900000001000000 00000000080000003900000001000000 00000000200000006c00000040000000 00000000080000003900000001000000 00000000080000003900000001000000 00000000200000006c00000040000000 00000000080000003900000001000000 00000000200000006c00000040000000 - {e=>-1,a=>2,d=>0,c=>0,h=>0,b=>1,g=>-2,f=>0,i=>-1} 06000000300000000800000003000000 06000000300000000800000003000000 06000000300000000800000003000000 900000000c00000020000000c0000000 06000000300000000800000003000000 06000000300000000800000003000000 900000000c00000020000000c0000000 06000000300000000800000003000000 900000000c00000020000000c0000000 - {e=>1,a=>0,d=>0,c=>2,h=>0,b=>2,g=>1,f=>0,i=>1} 08000000120000000400000001000000 08000000120000000400000001000000 08000000120000000400000001000000 20000000840000001000000040000000 08000000120000000400000001000000 08000000120000000400000001000000 20000000840000001000000040000000 08000000120000000400000001000000 20000000840000001000000040000000 - {e=>0,a=>3,d=>-1,c=>0,h=>-1,b=>2,g=>-2,f=>0,i=>-2} 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 e0000000300000002c00000080000000 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 e0000000300000002c00000080000000 0b0000000c0000003800000002000000 e0000000300000002c00000080000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; int i:2; int j; }; - {e=>-2,a=>1,d=>0,j=>11,c=>0,h=>-2,b=>1,g=>1,f=>-1,i=>-1} 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 5000000008000000d8000000c00000000000000b 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 5000000008000000d8000000c00000000000000b 050000002000000027000000030000000b000000 5000000008000000d8000000c00000000000000b - {e=>1,a=>2,d=>-2,j=>76,c=>3,h=>-1,b=>1,g=>0,f=>-1,i=>1} 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 90000000e4000000cc000000400000000000004c 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 90000000e4000000cc000000400000000000004c 060000001b00000033000000010000004c000000 90000000e4000000cc000000400000000000004c - {e=>1,a=>3,d=>0,j=>-66,c=>0,h=>-2,b=>3,g=>-2,f=>-1,i=>-2} 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff f000000004000000e800000080000000ffffffbe 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff f000000004000000e800000080000000ffffffbe 0f000000100000002b00000002000000beffffff f000000004000000e800000080000000ffffffbe - {e=>-1,a=>0,d=>0,j=>-99,c=>1,h=>0,b=>1,g=>-2,f=>0,i=>1} 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff 100000004c0000002000000040000000ffffff9d 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff 100000004c0000002000000040000000ffffff9d 040000003100000008000000010000009dffffff 100000004c0000002000000040000000ffffff9d - {e=>-1,a=>2,d=>1,j=>94,c=>3,h=>-2,b=>3,g=>1,f=>-2,i=>-2} 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 b0000000dc00000098000000800000000000005e 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 b0000000dc00000098000000800000000000005e 0e0000003700000026000000020000005e000000 b0000000dc00000098000000800000000000005e = struct mixed2 { char a; unsigned int b:2; }; - {a=>-56,b=>3} c8030000 c8030000 c8030000 c8c00000 c8030000 c8030000 c8c00000 c8030000 c8c00000 - {a=>127,b=>0} 7f000000 7f000000 7f000000 7f000000 7f000000 7f000000 7f000000 7f000000 7f000000 - {a=>43,b=>2} 2b020000 2b020000 2b020000 2b800000 2b020000 2b020000 2b800000 2b020000 2b800000 - {a=>-28,b=>1} e4010000 e4010000 e4010000 e4400000 e4010000 e4010000 e4400000 e4010000 e4400000 - {a=>38,b=>0} 26000000 26000000 26000000 26000000 26000000 26000000 26000000 26000000 26000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; }; - {c=>0,a=>35,b=>1} 23010000 23010000 23010000 23400000 23010000 23010000 23400000 23010000 23400000 - {c=>0,a=>53,b=>3} 35030000 35030000 35030000 35c00000 35030000 35030000 35c00000 35030000 35c00000 - {c=>3,a=>120,b=>0} 780c0000 780c0000 780c0000 78300000 780c0000 780c0000 78300000 780c0000 78300000 - {c=>3,a=>-123,b=>1} 850d0000 850d0000 850d0000 85700000 850d0000 850d0000 85700000 850d0000 85700000 - {c=>1,a=>29,b=>3} 1d070000 1d070000 1d070000 1dd00000 1d070000 1d070000 1dd00000 1d070000 1dd00000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>2,a=>79,b=>2} 4f0a0000 4f0a0000 4f0a0000 4fa00000 4f0a0000 4f0a0000 4fa00000 4f0a0000 4fa00000 - {c=>1,a=>-102,b=>2} 9a060000 9a060000 9a060000 9a900000 9a060000 9a060000 9a900000 9a060000 9a900000 - {c=>0,a=>-112,b=>1} 90010000 90010000 90010000 90400000 90010000 90010000 90400000 90010000 90400000 - {c=>0,a=>86,b=>0} 56000000 56000000 56000000 56000000 56000000 56000000 56000000 56000000 56000000 - {c=>2,a=>-112,b=>2} 900a0000 900a0000 900a0000 90a00000 900a0000 900a0000 90a00000 900a0000 90a00000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>1,a=>9,b=>1,d=>2} 0905000002000000 0905000002000000 0905000002000000 0950000080000000 0905000002000000 0905000002000000 0950000080000000 0905000002000000 0950000080000000 - {c=>2,a=>-42,b=>0,d=>3} d608000003000000 d608000003000000 d608000003000000 d6200000c0000000 d608000003000000 d608000003000000 d6200000c0000000 d608000003000000 d6200000c0000000 - {c=>2,a=>65,b=>2,d=>2} 410a000002000000 410a000002000000 410a000002000000 41a0000080000000 410a000002000000 410a000002000000 41a0000080000000 410a000002000000 41a0000080000000 - {c=>1,a=>-14,b=>2,d=>0} f206000000000000 f206000000000000 f206000000000000 f290000000000000 f206000000000000 f206000000000000 f290000000000000 f206000000000000 f290000000000000 - {c=>3,a=>-69,b=>1,d=>1} bb0d000001000000 bb0d000001000000 bb0d000001000000 bb70000040000000 bb0d000001000000 bb0d000001000000 bb70000040000000 bb0d000001000000 bb70000040000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>0,c=>1,a=>-38,b=>2,d=>1} da06000001000000 da06000001000000 da06000001000000 da90000040000000 da06000001000000 da06000001000000 da90000040000000 da06000001000000 da90000040000000 - {e=>0,c=>0,a=>66,b=>2,d=>1} 4202000001000000 4202000001000000 4202000001000000 4280000040000000 4202000001000000 4202000001000000 4280000040000000 4202000001000000 4280000040000000 - {e=>1,c=>2,a=>-56,b=>1,d=>2} c809000006000000 c809000006000000 c809000006000000 c860000090000000 c809000006000000 c809000006000000 c860000090000000 c809000006000000 c860000090000000 - {e=>-1,c=>1,a=>120,b=>1,d=>2} 780500000e000000 780500000e000000 780500000e000000 78500000b0000000 780500000e000000 780500000e000000 78500000b0000000 780500000e000000 78500000b0000000 - {e=>0,c=>2,a=>62,b=>0,d=>3} 3e08000003000000 3e08000003000000 3e08000003000000 3e200000c0000000 3e08000003000000 3e08000003000000 3e200000c0000000 3e08000003000000 3e200000c0000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>1,c=>3,a=>-41,b=>1,d=>2,f=>0} d70d000006000000 d70d000006000000 d70d000006000000 d770000090000000 d70d000006000000 d70d000006000000 d770000090000000 d70d000006000000 d770000090000000 - {e=>-2,c=>2,a=>100,b=>2,d=>1,f=>1} 640a000019000000 640a000019000000 640a000019000000 64a0000064000000 640a000019000000 640a000019000000 64a0000064000000 640a000019000000 64a0000064000000 - {e=>1,c=>0,a=>86,b=>0,d=>3,f=>1} 5600000017000000 5600000017000000 5600000017000000 56000000d4000000 5600000017000000 5600000017000000 56000000d4000000 5600000017000000 56000000d4000000 - {e=>1,c=>3,a=>-89,b=>3,d=>2,f=>-2} a70f000026000000 a70f000026000000 a70f000026000000 a7f0000098000000 a70f000026000000 a70f000026000000 a7f0000098000000 a70f000026000000 a7f0000098000000 - {e=>-1,c=>3,a=>-109,b=>3,d=>0,f=>1} 930f00001c000000 930f00001c000000 930f00001c000000 93f0000034000000 930f00001c000000 930f00001c000000 93f0000034000000 930f00001c000000 93f0000034000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>-2,c=>0,a=>-11,b=>1,d=>3,f=>1} f50100001b000000 f50100001b000000 f50100001b000000 f5400000e4000000 f50100001b000000 f50100001b000000 f5400000e4000000 f50100001b000000 f5400000e4000000 - {e=>-2,c=>0,a=>11,b=>0,d=>0,f=>1} 0b00000018000000 0b00000018000000 0b00000018000000 0b00000024000000 0b00000018000000 0b00000018000000 0b00000024000000 0b00000018000000 0b00000024000000 - {e=>0,c=>3,a=>100,b=>1,d=>3,f=>0} 640d000003000000 640d000003000000 640d000003000000 64700000c0000000 640d000003000000 640d000003000000 64700000c0000000 640d000003000000 64700000c0000000 - {e=>0,c=>3,a=>-21,b=>2,d=>0,f=>-2} eb0e000020000000 eb0e000020000000 eb0e000020000000 ebb0000008000000 eb0e000020000000 eb0e000020000000 ebb0000008000000 eb0e000020000000 ebb0000008000000 - {e=>1,c=>0,a=>-82,b=>1,d=>1,f=>-1} ae01000035000000 ae01000035000000 ae01000035000000 ae4000005c000000 ae01000035000000 ae01000035000000 ae4000005c000000 ae01000035000000 ae4000005c000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>1,c=>1,a=>-87,g=>-2,b=>0,d=>0,f=>0} a90400000400000002000000 a90400000400000002000000 a90400000400000002000000 a91000001000000080000000 a90400000400000002000000 a90400000400000002000000 a91000001000000080000000 a90400000400000002000000 a91000001000000080000000 - {e=>-2,c=>1,a=>1,g=>-2,b=>0,d=>0,f=>-2} 010400002800000002000000 010400002800000002000000 010400002800000002000000 011000002800000080000000 010400002800000002000000 010400002800000002000000 011000002800000080000000 010400002800000002000000 011000002800000080000000 - {e=>-1,c=>2,a=>107,g=>-2,b=>3,d=>3,f=>-1} 6b0b00003f00000002000000 6b0b00003f00000002000000 6b0b00003f00000002000000 6be00000fc00000080000000 6b0b00003f00000002000000 6b0b00003f00000002000000 6be00000fc00000080000000 6b0b00003f00000002000000 6be00000fc00000080000000 - {e=>-1,c=>1,a=>-44,g=>0,b=>0,d=>0,f=>-1} d40400003c00000000000000 d40400003c00000000000000 d40400003c00000000000000 d41000003c00000000000000 d40400003c00000000000000 d40400003c00000000000000 d41000003c00000000000000 d40400003c00000000000000 d41000003c00000000000000 - {e=>-1,c=>2,a=>-40,g=>-1,b=>0,d=>3,f=>0} d80800000f00000003000000 d80800000f00000003000000 d80800000f00000003000000 d8200000f0000000c0000000 d80800000f00000003000000 d80800000f00000003000000 d8200000f0000000c0000000 d80800000f00000003000000 d8200000f0000000c0000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>-2,a=>30,d=>2,c=>0,h=>-1,b=>1,g=>-2,f=>-1} 1e0100003a0000000e000000 1e0100003a0000000e000000 1e0100003a0000000e000000 1e400000ac000000b0000000 1e0100003a0000000e000000 1e0100003a0000000e000000 1e400000ac000000b0000000 1e0100003a0000000e000000 1e400000ac000000b0000000 - {e=>1,a=>52,d=>3,c=>0,h=>-2,b=>2,g=>0,f=>0} 340200000700000008000000 340200000700000008000000 340200000700000008000000 34800000d000000020000000 340200000700000008000000 340200000700000008000000 34800000d000000020000000 340200000700000008000000 34800000d000000020000000 - {e=>1,a=>-125,d=>2,c=>2,h=>1,b=>0,g=>1,f=>-1} 830800003600000005000000 830800003600000005000000 830800003600000005000000 832000009c00000050000000 830800003600000005000000 830800003600000005000000 832000009c00000050000000 830800003600000005000000 832000009c00000050000000 - {e=>-1,a=>70,d=>0,c=>3,h=>-1,b=>3,g=>1,f=>-1} 460f00003c0000000d000000 460f00003c0000000d000000 460f00003c0000000d000000 46f000003c00000070000000 460f00003c0000000d000000 460f00003c0000000d000000 46f000003c00000070000000 460f00003c0000000d000000 46f000003c00000070000000 - {e=>0,a=>-57,d=>2,c=>3,h=>1,b=>0,g=>-1,f=>-1} c70c00003200000007000000 c70c00003200000007000000 c70c00003200000007000000 c73000008c000000d0000000 c70c00003200000007000000 c70c00003200000007000000 c73000008c000000d0000000 c70c00003200000007000000 c73000008c000000d0000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-2,a=>122,d=>0,c=>1,h=>0,b=>1,g=>0,f=>0,i=>-2} 7a0500000800000020000000 7a0500000800000020000000 7a0500000800000020000000 7a5000002000000008000000 7a0500000800000020000000 7a0500000800000020000000 7a5000002000000008000000 7a0500000800000020000000 7a5000002000000008000000 - {e=>-2,a=>76,d=>3,c=>3,h=>-1,b=>2,g=>0,f=>-1,i=>-1} 4c0e00003b0000003c000000 4c0e00003b0000003c000000 4c0e00003b0000003c000000 4cb00000ec0000003c000000 4c0e00003b0000003c000000 4c0e00003b0000003c000000 4cb00000ec0000003c000000 4c0e00003b0000003c000000 4cb00000ec0000003c000000 - {e=>1,a=>56,d=>3,c=>2,h=>-1,b=>3,g=>-1,f=>1,i=>0} 380b0000170000000f000000 380b0000170000000f000000 380b0000170000000f000000 38e00000d4000000f0000000 380b0000170000000f000000 380b0000170000000f000000 38e00000d4000000f0000000 380b0000170000000f000000 38e00000d4000000f0000000 - {e=>-2,a=>79,d=>0,c=>1,h=>1,b=>2,g=>-2,f=>0,i=>1} 4f0600000800000016000000 4f0600000800000016000000 4f0600000800000016000000 4f9000002000000094000000 4f0600000800000016000000 4f0600000800000016000000 4f9000002000000094000000 4f0600000800000016000000 4f9000002000000094000000 - {e=>1,a=>-87,d=>2,c=>1,h=>-1,b=>1,g=>0,f=>0,i=>0} a9050000060000000c000000 a9050000060000000c000000 a9050000060000000c000000 a95000009000000030000000 a9050000060000000c000000 a9050000060000000c000000 a95000009000000030000000 a9050000060000000c000000 a95000009000000030000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>-1,a=>-90,d=>0,c=>2,h=>1,b=>2,g=>0,f=>-2,i=>-2} a60a00002c00000024000000 a60a00002c00000024000000 a60a00002c00000024000000 a6a000003800000018000000 a60a00002c00000024000000 a60a00002c00000024000000 a6a000003800000018000000 a60a00002c00000024000000 a6a000003800000018000000 - {e=>-2,a=>-119,d=>1,c=>0,h=>0,b=>2,g=>-2,f=>-1,i=>1} 890200003900000012000000 890200003900000012000000 890200003900000012000000 898000006c00000084000000 890200003900000012000000 890200003900000012000000 898000006c00000084000000 890200003900000012000000 898000006c00000084000000 - {e=>1,a=>108,d=>3,c=>3,h=>0,b=>3,g=>-1,f=>-1,i=>1} 6c0f00003700000013000000 6c0f00003700000013000000 6c0f00003700000013000000 6cf00000dc000000c4000000 6c0f00003700000013000000 6c0f00003700000013000000 6cf00000dc000000c4000000 6c0f00003700000013000000 6cf00000dc000000c4000000 - {e=>0,a=>-126,d=>0,c=>3,h=>1,b=>2,g=>-2,f=>0,i=>-1} 820e00000000000036000000 820e00000000000036000000 820e00000000000036000000 82b00000000000009c000000 820e00000000000036000000 820e00000000000036000000 82b00000000000009c000000 820e00000000000036000000 82b00000000000009c000000 - {e=>1,a=>-120,d=>2,c=>2,h=>0,b=>1,g=>-2,f=>0,i=>-1} 880900000600000032000000 880900000600000032000000 880900000600000032000000 88600000900000008c000000 880900000600000032000000 880900000600000032000000 88600000900000008c000000 880900000600000032000000 88600000900000008c000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>1,a=>-105,d=>3,j=>1,c=>3,h=>0,b=>1,g=>-2,f=>-2,i=>0} 970d0000270000000200000001000000 970d0000270000000200000001000000 970d0000270000000200000001000000 97700000d80000008000000040000000 970d0000270000000200000001000000 970d0000270000000200000001000000 97700000d80000008000000040000000 970d0000270000000200000001000000 97700000d80000008000000040000000 - {e=>0,a=>32,d=>0,j=>0,c=>2,h=>1,b=>2,g=>1,f=>-1,i=>-1} 200a0000300000003500000000000000 200a0000300000003500000000000000 200a0000300000003500000000000000 20a000000c0000005c00000000000000 200a0000300000003500000000000000 200a0000300000003500000000000000 20a000000c0000005c00000000000000 200a0000300000003500000000000000 20a000000c0000005c00000000000000 - {e=>1,a=>57,d=>1,j=>-2,c=>2,h=>-1,b=>1,g=>-2,f=>-2,i=>1} 39090000250000001e00000002000000 39090000250000001e00000002000000 39090000250000001e00000002000000 3960000058000000b400000080000000 39090000250000001e00000002000000 39090000250000001e00000002000000 3960000058000000b400000080000000 39090000250000001e00000002000000 3960000058000000b400000080000000 - {e=>0,a=>59,d=>3,j=>-1,c=>0,h=>-2,b=>1,g=>0,f=>1,i=>-2} 3b010000130000002800000003000000 3b010000130000002800000003000000 3b010000130000002800000003000000 3b400000c400000028000000c0000000 3b010000130000002800000003000000 3b010000130000002800000003000000 3b400000c400000028000000c0000000 3b010000130000002800000003000000 3b400000c400000028000000c0000000 - {e=>-2,a=>68,d=>0,j=>1,c=>0,h=>1,b=>3,g=>0,f=>-2,i=>0} 44030000280000000400000001000000 44030000280000000400000001000000 44030000280000000400000001000000 44c00000280000001000000040000000 44030000280000000400000001000000 44030000280000000400000001000000 44c00000280000001000000040000000 44030000280000000400000001000000 44c00000280000001000000040000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>1,a=>-55,d=>1,j=>-2,c=>3,k=>111,h=>-1,b=>1,g=>-1,f=>0,i=>-1} c90d0000050000003f000000020000006f000000 c90d0000050000003f000000020000006f000000 c90d0000050000003f000000020000006f000000 c970000050000000fc000000800000000000006f c90d0000050000003f000000020000006f000000 c90d0000050000003f000000020000006f000000 c970000050000000fc000000800000000000006f c90d0000050000003f000000020000006f000000 c970000050000000fc000000800000000000006f - {e=>-2,a=>-69,d=>3,j=>0,c=>0,k=>-83,h=>0,b=>3,g=>0,f=>-1,i=>1} bb0300003b0000001000000000000000adffffff bb0300003b0000001000000000000000adffffff bb0300003b0000001000000000000000adffffff bbc00000ec0000000400000000000000ffffffad bb0300003b0000001000000000000000adffffff bb0300003b0000001000000000000000adffffff bbc00000ec0000000400000000000000ffffffad bb0300003b0000001000000000000000adffffff bbc00000ec0000000400000000000000ffffffad - {e=>0,a=>110,d=>0,j=>0,c=>3,k=>116,h=>-1,b=>3,g=>-2,f=>1,i=>-1} 6e0f0000100000003e0000000000000074000000 6e0f0000100000003e0000000000000074000000 6e0f0000100000003e0000000000000074000000 6ef0000004000000bc0000000000000000000074 6e0f0000100000003e0000000000000074000000 6e0f0000100000003e0000000000000074000000 6ef0000004000000bc0000000000000000000074 6e0f0000100000003e0000000000000074000000 6ef0000004000000bc0000000000000000000074 - {e=>0,a=>-42,d=>1,j=>-1,c=>0,k=>92,h=>-1,b=>2,g=>1,f=>-2,i=>-2} d6020000210000002d000000030000005c000000 d6020000210000002d000000030000005c000000 d6020000210000002d000000030000005c000000 d68000004800000078000000c00000000000005c d6020000210000002d000000030000005c000000 d6020000210000002d000000030000005c000000 d68000004800000078000000c00000000000005c d6020000210000002d000000030000005c000000 d68000004800000078000000c00000000000005c - {e=>-1,a=>-34,d=>0,j=>-2,c=>3,k=>22,h=>-2,b=>2,g=>-1,f=>0,i=>0} de0e00000c0000000b0000000200000016000000 de0e00000c0000000b0000000200000016000000 de0e00000c0000000b0000000200000016000000 deb0000030000000e00000008000000000000016 de0e00000c0000000b0000000200000016000000 de0e00000c0000000b0000000200000016000000 deb0000030000000e00000008000000000000016 de0e00000c0000000b0000000200000016000000 deb0000030000000e00000008000000000000016 = struct mixed2 { short a; unsigned int b:2; }; - {a=>-36,b=>3} dcff0300 dcff0300 dcff0300 ffdcc000 dcff0300 dcff0300 ffdcc000 dcff0300 ffdcc000 - {a=>77,b=>0} 4d000000 4d000000 4d000000 004d0000 4d000000 4d000000 004d0000 4d000000 004d0000 - {a=>-125,b=>0} 83ff0000 83ff0000 83ff0000 ff830000 83ff0000 83ff0000 ff830000 83ff0000 ff830000 - {a=>33,b=>0} 21000000 21000000 21000000 00210000 21000000 21000000 00210000 21000000 00210000 - {a=>18,b=>3} 12000300 12000300 12000300 0012c000 12000300 12000300 0012c000 12000300 0012c000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>39,b=>2} 27000a00 27000a00 27000a00 0027a000 27000a00 27000a00 0027a000 27000a00 0027a000 - {c=>2,a=>-73,b=>3} b7ff0b00 b7ff0b00 b7ff0b00 ffb7e000 b7ff0b00 b7ff0b00 ffb7e000 b7ff0b00 ffb7e000 - {c=>2,a=>12,b=>1} 0c000900 0c000900 0c000900 000c6000 0c000900 0c000900 000c6000 0c000900 000c6000 - {c=>1,a=>107,b=>2} 6b000600 6b000600 6b000600 006b9000 6b000600 6b000600 006b9000 6b000600 006b9000 - {c=>0,a=>-10,b=>2} f6ff0200 f6ff0200 f6ff0200 fff68000 f6ff0200 f6ff0200 fff68000 f6ff0200 fff68000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>0,a=>-15,b=>0} f1ff0000 f1ff0000 f1ff0000 fff10000 f1ff0000 f1ff0000 fff10000 f1ff0000 fff10000 - {c=>2,a=>-103,b=>1} 99ff0900 99ff0900 99ff0900 ff996000 99ff0900 99ff0900 ff996000 99ff0900 ff996000 - {c=>0,a=>106,b=>3} 6a000300 6a000300 6a000300 006ac000 6a000300 6a000300 006ac000 6a000300 006ac000 - {c=>0,a=>77,b=>3} 4d000300 4d000300 4d000300 004dc000 4d000300 4d000300 004dc000 4d000300 004dc000 - {c=>0,a=>-60,b=>2} c4ff0200 c4ff0200 c4ff0200 ffc48000 c4ff0200 c4ff0200 ffc48000 c4ff0200 ffc48000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>3,a=>-90,b=>2,d=>1} a6ff0e0001000000 a6ff0e0001000000 a6ff0e0001000000 ffa6b00040000000 a6ff0e0001000000 a6ff0e0001000000 ffa6b00040000000 a6ff0e0001000000 ffa6b00040000000 - {c=>1,a=>-112,b=>3,d=>1} 90ff070001000000 90ff070001000000 90ff070001000000 ff90d00040000000 90ff070001000000 90ff070001000000 ff90d00040000000 90ff070001000000 ff90d00040000000 - {c=>3,a=>-67,b=>0,d=>1} bdff0c0001000000 bdff0c0001000000 bdff0c0001000000 ffbd300040000000 bdff0c0001000000 bdff0c0001000000 ffbd300040000000 bdff0c0001000000 ffbd300040000000 - {c=>1,a=>-2,b=>0,d=>3} feff040003000000 feff040003000000 feff040003000000 fffe1000c0000000 feff040003000000 feff040003000000 fffe1000c0000000 feff040003000000 fffe1000c0000000 - {c=>0,a=>-45,b=>1,d=>1} d3ff010001000000 d3ff010001000000 d3ff010001000000 ffd3400040000000 d3ff010001000000 d3ff010001000000 ffd3400040000000 d3ff010001000000 ffd3400040000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>-1,c=>2,a=>-104,b=>2,d=>0} 98ff0a000c000000 98ff0a000c000000 98ff0a000c000000 ff98a00030000000 98ff0a000c000000 98ff0a000c000000 ff98a00030000000 98ff0a000c000000 ff98a00030000000 - {e=>-2,c=>1,a=>-128,b=>3,d=>2} 80ff07000a000000 80ff07000a000000 80ff07000a000000 ff80d000a0000000 80ff07000a000000 80ff07000a000000 ff80d000a0000000 80ff07000a000000 ff80d000a0000000 - {e=>1,c=>3,a=>-119,b=>2,d=>1} 89ff0e0005000000 89ff0e0005000000 89ff0e0005000000 ff89b00050000000 89ff0e0005000000 89ff0e0005000000 ff89b00050000000 89ff0e0005000000 ff89b00050000000 - {e=>-1,c=>3,a=>31,b=>1,d=>0} 1f000d000c000000 1f000d000c000000 1f000d000c000000 001f700030000000 1f000d000c000000 1f000d000c000000 001f700030000000 1f000d000c000000 001f700030000000 - {e=>-1,c=>0,a=>-28,b=>1,d=>0} e4ff01000c000000 e4ff01000c000000 e4ff01000c000000 ffe4400030000000 e4ff01000c000000 e4ff01000c000000 ffe4400030000000 e4ff01000c000000 ffe4400030000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>-1,c=>0,a=>15,b=>3,d=>0,f=>-2} 0f0003002c000000 0f0003002c000000 0f0003002c000000 000fc00038000000 0f0003002c000000 0f0003002c000000 000fc00038000000 0f0003002c000000 000fc00038000000 - {e=>-1,c=>2,a=>-51,b=>3,d=>1,f=>0} cdff0b000d000000 cdff0b000d000000 cdff0b000d000000 ffcde00070000000 cdff0b000d000000 cdff0b000d000000 ffcde00070000000 cdff0b000d000000 ffcde00070000000 - {e=>-1,c=>2,a=>-69,b=>1,d=>3,f=>1} bbff09001f000000 bbff09001f000000 bbff09001f000000 ffbb6000f4000000 bbff09001f000000 bbff09001f000000 ffbb6000f4000000 bbff09001f000000 ffbb6000f4000000 - {e=>1,c=>3,a=>121,b=>2,d=>1,f=>0} 79000e0005000000 79000e0005000000 79000e0005000000 0079b00050000000 79000e0005000000 79000e0005000000 0079b00050000000 79000e0005000000 0079b00050000000 - {e=>0,c=>2,a=>17,b=>3,d=>3,f=>-1} 11000b0033000000 11000b0033000000 11000b0033000000 0011e000cc000000 11000b0033000000 11000b0033000000 0011e000cc000000 11000b0033000000 0011e000cc000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>0,c=>1,a=>-102,b=>2,d=>2,f=>-1} 9aff060032000000 9aff060032000000 9aff060032000000 ff9a90008c000000 9aff060032000000 9aff060032000000 ff9a90008c000000 9aff060032000000 ff9a90008c000000 - {e=>-2,c=>2,a=>-45,b=>2,d=>2,f=>-2} d3ff0a002a000000 d3ff0a002a000000 d3ff0a002a000000 ffd3a000a8000000 d3ff0a002a000000 d3ff0a002a000000 ffd3a000a8000000 d3ff0a002a000000 ffd3a000a8000000 - {e=>-2,c=>3,a=>1,b=>0,d=>1,f=>-1} 01000c0039000000 01000c0039000000 01000c0039000000 000130006c000000 01000c0039000000 01000c0039000000 000130006c000000 01000c0039000000 000130006c000000 - {e=>1,c=>1,a=>-70,b=>0,d=>1,f=>0} baff040005000000 baff040005000000 baff040005000000 ffba100050000000 baff040005000000 baff040005000000 ffba100050000000 baff040005000000 ffba100050000000 - {e=>0,c=>3,a=>-67,b=>3,d=>2,f=>-2} bdff0f0022000000 bdff0f0022000000 bdff0f0022000000 ffbdf00088000000 bdff0f0022000000 bdff0f0022000000 ffbdf00088000000 bdff0f0022000000 ffbdf00088000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>-1,c=>1,a=>-14,g=>-2,b=>2,d=>3,f=>0} f2ff06000f00000002000000 f2ff06000f00000002000000 f2ff06000f00000002000000 fff29000f000000080000000 f2ff06000f00000002000000 f2ff06000f00000002000000 fff29000f000000080000000 f2ff06000f00000002000000 fff29000f000000080000000 - {e=>0,c=>2,a=>-82,g=>-2,b=>2,d=>0,f=>0} aeff0a000000000002000000 aeff0a000000000002000000 aeff0a000000000002000000 ffaea0000000000080000000 aeff0a000000000002000000 aeff0a000000000002000000 ffaea0000000000080000000 aeff0a000000000002000000 ffaea0000000000080000000 - {e=>1,c=>1,a=>-117,g=>-1,b=>0,d=>3,f=>0} 8bff04000700000003000000 8bff04000700000003000000 8bff04000700000003000000 ff8b1000d0000000c0000000 8bff04000700000003000000 8bff04000700000003000000 ff8b1000d0000000c0000000 8bff04000700000003000000 ff8b1000d0000000c0000000 - {e=>1,c=>3,a=>-88,g=>1,b=>3,d=>0,f=>0} a8ff0f000400000001000000 a8ff0f000400000001000000 a8ff0f000400000001000000 ffa8f0001000000040000000 a8ff0f000400000001000000 a8ff0f000400000001000000 ffa8f0001000000040000000 a8ff0f000400000001000000 ffa8f0001000000040000000 - {e=>0,c=>3,a=>38,g=>0,b=>3,d=>1,f=>-1} 26000f003100000000000000 26000f003100000000000000 26000f003100000000000000 0026f0004c00000000000000 26000f003100000000000000 26000f003100000000000000 0026f0004c00000000000000 26000f003100000000000000 0026f0004c00000000000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>0,a=>14,d=>3,c=>1,h=>-2,b=>2,g=>-2,f=>-2} 0e000600230000000a000000 0e000600230000000a000000 0e000600230000000a000000 000e9000c8000000a0000000 0e000600230000000a000000 0e000600230000000a000000 000e9000c8000000a0000000 0e000600230000000a000000 000e9000c8000000a0000000 - {e=>1,a=>73,d=>0,c=>0,h=>-1,b=>3,g=>0,f=>0} 49000300040000000c000000 49000300040000000c000000 49000300040000000c000000 0049c0001000000030000000 49000300040000000c000000 49000300040000000c000000 0049c0001000000030000000 49000300040000000c000000 0049c0001000000030000000 - {e=>-2,a=>5,d=>2,c=>1,h=>-1,b=>2,g=>1,f=>-2} 050006002a0000000d000000 050006002a0000000d000000 050006002a0000000d000000 00059000a800000070000000 050006002a0000000d000000 050006002a0000000d000000 00059000a800000070000000 050006002a0000000d000000 00059000a800000070000000 - {e=>0,a=>-57,d=>2,c=>0,h=>-1,b=>0,g=>0,f=>1} c7ff0000120000000c000000 c7ff0000120000000c000000 c7ff0000120000000c000000 ffc700008400000030000000 c7ff0000120000000c000000 c7ff0000120000000c000000 ffc700008400000030000000 c7ff0000120000000c000000 ffc700008400000030000000 - {e=>-1,a=>-21,d=>0,c=>3,h=>-1,b=>0,g=>-1,f=>1} ebff0c001c0000000f000000 ebff0c001c0000000f000000 ebff0c001c0000000f000000 ffeb300034000000f0000000 ebff0c001c0000000f000000 ebff0c001c0000000f000000 ffeb300034000000f0000000 ebff0c001c0000000f000000 ffeb300034000000f0000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-2,a=>64,d=>3,c=>1,h=>1,b=>0,g=>1,f=>0,i=>-2} 400004000b00000025000000 400004000b00000025000000 400004000b00000025000000 00401000e000000058000000 400004000b00000025000000 400004000b00000025000000 00401000e000000058000000 400004000b00000025000000 00401000e000000058000000 - {e=>-1,a=>-28,d=>2,c=>0,h=>-2,b=>3,g=>-1,f=>-1,i=>-1} e4ff03003e0000003b000000 e4ff03003e0000003b000000 e4ff03003e0000003b000000 ffe4c000bc000000ec000000 e4ff03003e0000003b000000 e4ff03003e0000003b000000 ffe4c000bc000000ec000000 e4ff03003e0000003b000000 ffe4c000bc000000ec000000 - {e=>-1,a=>16,d=>0,c=>1,h=>0,b=>2,g=>-1,f=>1,i=>-1} 100006001c00000033000000 100006001c00000033000000 100006001c00000033000000 0010900034000000cc000000 100006001c00000033000000 100006001c00000033000000 0010900034000000cc000000 100006001c00000033000000 0010900034000000cc000000 - {e=>1,a=>-116,d=>0,c=>2,h=>-1,b=>3,g=>0,f=>-2,i=>0} 8cff0b00240000000c000000 8cff0b00240000000c000000 8cff0b00240000000c000000 ff8ce0001800000030000000 8cff0b00240000000c000000 8cff0b00240000000c000000 ff8ce0001800000030000000 8cff0b00240000000c000000 ff8ce0001800000030000000 - {e=>0,a=>-24,d=>0,c=>0,h=>-1,b=>1,g=>1,f=>-2,i=>0} e8ff0100200000000d000000 e8ff0100200000000d000000 e8ff0100200000000d000000 ffe840000800000070000000 e8ff0100200000000d000000 e8ff0100200000000d000000 ffe840000800000070000000 e8ff0100200000000d000000 ffe840000800000070000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-98,d=>3,c=>1,h=>-2,b=>3,g=>-2,f=>1,i=>-1} 9eff0700130000003a000000 9eff0700130000003a000000 9eff0700130000003a000000 ff9ed000c4000000ac000000 9eff0700130000003a000000 9eff0700130000003a000000 ff9ed000c4000000ac000000 9eff0700130000003a000000 ff9ed000c4000000ac000000 - {e=>1,a=>87,d=>3,c=>2,h=>-1,b=>2,g=>-1,f=>-2,i=>-1} 57000a00270000003f000000 57000a00270000003f000000 57000a00270000003f000000 0057a000d8000000fc000000 57000a00270000003f000000 57000a00270000003f000000 0057a000d8000000fc000000 57000a00270000003f000000 0057a000d8000000fc000000 - {e=>1,a=>-69,d=>2,c=>1,h=>0,b=>3,g=>0,f=>-2,i=>-1} bbff07002600000030000000 bbff07002600000030000000 bbff07002600000030000000 ffbbd000980000000c000000 bbff07002600000030000000 bbff07002600000030000000 ffbbd000980000000c000000 bbff07002600000030000000 ffbbd000980000000c000000 - {e=>-1,a=>-28,d=>3,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>-2} e4ff01000f0000002f000000 e4ff01000f0000002f000000 e4ff01000f0000002f000000 ffe44000f0000000f8000000 e4ff01000f0000002f000000 e4ff01000f0000002f000000 ffe44000f0000000f8000000 e4ff01000f0000002f000000 ffe44000f0000000f8000000 - {e=>0,a=>58,d=>3,c=>3,h=>0,b=>3,g=>-2,f=>-1,i=>0} 3a000f003300000002000000 3a000f003300000002000000 3a000f003300000002000000 003af000cc00000080000000 3a000f003300000002000000 3a000f003300000002000000 003af000cc00000080000000 3a000f003300000002000000 003af000cc00000080000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>0,a=>-102,d=>3,j=>-2,c=>1,h=>0,b=>2,g=>0,f=>0,i=>-1} 9aff0600030000003000000002000000 9aff0600030000003000000002000000 9aff0600030000003000000002000000 ff9a9000c00000000c00000080000000 9aff0600030000003000000002000000 9aff0600030000003000000002000000 ff9a9000c00000000c00000080000000 9aff0600030000003000000002000000 ff9a9000c00000000c00000080000000 - {e=>-1,a=>-12,d=>1,j=>1,c=>1,h=>-2,b=>0,g=>-2,f=>1,i=>-2} f4ff04001d0000002a00000001000000 f4ff04001d0000002a00000001000000 f4ff04001d0000002a00000001000000 fff4100074000000a800000040000000 f4ff04001d0000002a00000001000000 f4ff04001d0000002a00000001000000 fff4100074000000a800000040000000 f4ff04001d0000002a00000001000000 fff4100074000000a800000040000000 - {e=>-2,a=>98,d=>3,j=>1,c=>0,h=>0,b=>0,g=>-1,f=>-2,i=>-2} 620000002b0000002300000001000000 620000002b0000002300000001000000 620000002b0000002300000001000000 00620000e8000000c800000040000000 620000002b0000002300000001000000 620000002b0000002300000001000000 00620000e8000000c800000040000000 620000002b0000002300000001000000 00620000e8000000c800000040000000 - {e=>-1,a=>-38,d=>3,j=>-1,c=>1,h=>-1,b=>1,g=>-2,f=>0,i=>1} daff05000f0000001e00000003000000 daff05000f0000001e00000003000000 daff05000f0000001e00000003000000 ffda5000f0000000b4000000c0000000 daff05000f0000001e00000003000000 daff05000f0000001e00000003000000 ffda5000f0000000b4000000c0000000 daff05000f0000001e00000003000000 ffda5000f0000000b4000000c0000000 - {e=>1,a=>0,d=>2,j=>-2,c=>1,h=>0,b=>2,g=>1,f=>-2,i=>0} 00000600260000000100000002000000 00000600260000000100000002000000 00000600260000000100000002000000 00009000980000004000000080000000 00000600260000000100000002000000 00000600260000000100000002000000 00009000980000004000000080000000 00000600260000000100000002000000 00009000980000004000000080000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>-1,a=>-67,d=>0,j=>-2,c=>2,k=>-19,h=>1,b=>0,g=>0,f=>-1,i=>1} bdff08003c0000001400000002000000edffffff bdff08003c0000001400000002000000edffffff bdff08003c0000001400000002000000edffffff ffbd20003c0000001400000080000000ffffffed bdff08003c0000001400000002000000edffffff bdff08003c0000001400000002000000edffffff ffbd20003c0000001400000080000000ffffffed bdff08003c0000001400000002000000edffffff ffbd20003c0000001400000080000000ffffffed - {e=>0,a=>-109,d=>2,j=>0,c=>1,k=>116,h=>0,b=>0,g=>1,f=>1,i=>-1} 93ff040012000000310000000000000074000000 93ff040012000000310000000000000074000000 93ff040012000000310000000000000074000000 ff931000840000004c0000000000000000000074 93ff040012000000310000000000000074000000 93ff040012000000310000000000000074000000 ff931000840000004c0000000000000000000074 93ff040012000000310000000000000074000000 ff931000840000004c0000000000000000000074 - {e=>0,a=>102,d=>0,j=>1,c=>3,k=>116,h=>1,b=>2,g=>0,f=>1,i=>1} 66000e0010000000140000000100000074000000 66000e0010000000140000000100000074000000 66000e0010000000140000000100000074000000 0066b00004000000140000004000000000000074 66000e0010000000140000000100000074000000 66000e0010000000140000000100000074000000 0066b00004000000140000004000000000000074 66000e0010000000140000000100000074000000 0066b00004000000140000004000000000000074 - {e=>0,a=>27,d=>1,j=>-1,c=>0,k=>-116,h=>-2,b=>2,g=>1,f=>-1,i=>-1} 1b0002003100000039000000030000008cffffff 1b0002003100000039000000030000008cffffff 1b0002003100000039000000030000008cffffff 001b80004c0000006c000000c0000000ffffff8c 1b0002003100000039000000030000008cffffff 1b0002003100000039000000030000008cffffff 001b80004c0000006c000000c0000000ffffff8c 1b0002003100000039000000030000008cffffff 001b80004c0000006c000000c0000000ffffff8c - {e=>1,a=>-68,d=>0,j=>-1,c=>3,k=>-47,h=>-1,b=>1,g=>0,f=>0,i=>-2} bcff0d00040000002c00000003000000d1ffffff bcff0d00040000002c00000003000000d1ffffff bcff0d00040000002c00000003000000d1ffffff ffbc70001000000038000000c0000000ffffffd1 bcff0d00040000002c00000003000000d1ffffff bcff0d00040000002c00000003000000d1ffffff ffbc70001000000038000000c0000000ffffffd1 bcff0d00040000002c00000003000000d1ffffff ffbc70001000000038000000c0000000ffffffd1 = struct mixed2 { int a; unsigned int b:2; }; - {a=>-99,b=>3} 9dffffff03000000 9dffffff03000000 9dffffff03000000 ffffff9dc0000000 9dffffff03000000 9dffffff03000000 ffffff9dc0000000 9dffffff03000000 ffffff9dc0000000 - {a=>-83,b=>3} adffffff03000000 adffffff03000000 adffffff03000000 ffffffadc0000000 adffffff03000000 adffffff03000000 ffffffadc0000000 adffffff03000000 ffffffadc0000000 - {a=>15,b=>2} 0f00000002000000 0f00000002000000 0f00000002000000 0000000f80000000 0f00000002000000 0f00000002000000 0000000f80000000 0f00000002000000 0000000f80000000 - {a=>60,b=>1} 3c00000001000000 3c00000001000000 3c00000001000000 0000003c40000000 3c00000001000000 3c00000001000000 0000003c40000000 3c00000001000000 0000003c40000000 - {a=>15,b=>2} 0f00000002000000 0f00000002000000 0f00000002000000 0000000f80000000 0f00000002000000 0f00000002000000 0000000f80000000 0f00000002000000 0000000f80000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>64,b=>2} 400000000a000000 400000000a000000 400000000a000000 00000040a0000000 400000000a000000 400000000a000000 00000040a0000000 400000000a000000 00000040a0000000 - {c=>3,a=>21,b=>3} 150000000f000000 150000000f000000 150000000f000000 00000015f0000000 150000000f000000 150000000f000000 00000015f0000000 150000000f000000 00000015f0000000 - {c=>1,a=>88,b=>1} 5800000005000000 5800000005000000 5800000005000000 0000005850000000 5800000005000000 5800000005000000 0000005850000000 5800000005000000 0000005850000000 - {c=>2,a=>-84,b=>2} acffffff0a000000 acffffff0a000000 acffffff0a000000 ffffffaca0000000 acffffff0a000000 acffffff0a000000 ffffffaca0000000 acffffff0a000000 ffffffaca0000000 - {c=>3,a=>127,b=>2} 7f0000000e000000 7f0000000e000000 7f0000000e000000 0000007fb0000000 7f0000000e000000 7f0000000e000000 0000007fb0000000 7f0000000e000000 0000007fb0000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>0,a=>-11,b=>2} f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 fffffff580000000 f5ffffff02000000 f5ffffff02000000 fffffff580000000 f5ffffff02000000 fffffff580000000 - {c=>1,a=>-114,b=>1} 8effffff05000000 8effffff05000000 8effffff05000000 ffffff8e50000000 8effffff05000000 8effffff05000000 ffffff8e50000000 8effffff05000000 ffffff8e50000000 - {c=>3,a=>-66,b=>1} beffffff0d000000 beffffff0d000000 beffffff0d000000 ffffffbe70000000 beffffff0d000000 beffffff0d000000 ffffffbe70000000 beffffff0d000000 ffffffbe70000000 - {c=>2,a=>-101,b=>1} 9bffffff09000000 9bffffff09000000 9bffffff09000000 ffffff9b60000000 9bffffff09000000 9bffffff09000000 ffffff9b60000000 9bffffff09000000 ffffff9b60000000 - {c=>2,a=>51,b=>3} 330000000b000000 330000000b000000 330000000b000000 00000033e0000000 330000000b000000 330000000b000000 00000033e0000000 330000000b000000 00000033e0000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>3,a=>71,b=>3,d=>2} 470000000f00000002000000 470000000f00000002000000 470000000f00000002000000 00000047f000000080000000 470000000f00000002000000 470000000f00000002000000 00000047f000000080000000 470000000f00000002000000 00000047f000000080000000 - {c=>0,a=>-59,b=>3,d=>2} c5ffffff0300000002000000 c5ffffff0300000002000000 c5ffffff0300000002000000 ffffffc5c000000080000000 c5ffffff0300000002000000 c5ffffff0300000002000000 ffffffc5c000000080000000 c5ffffff0300000002000000 ffffffc5c000000080000000 - {c=>1,a=>-34,b=>1,d=>2} deffffff0500000002000000 deffffff0500000002000000 deffffff0500000002000000 ffffffde5000000080000000 deffffff0500000002000000 deffffff0500000002000000 ffffffde5000000080000000 deffffff0500000002000000 ffffffde5000000080000000 - {c=>1,a=>-50,b=>0,d=>2} ceffffff0400000002000000 ceffffff0400000002000000 ceffffff0400000002000000 ffffffce1000000080000000 ceffffff0400000002000000 ceffffff0400000002000000 ffffffce1000000080000000 ceffffff0400000002000000 ffffffce1000000080000000 - {c=>2,a=>98,b=>3,d=>1} 620000000b00000001000000 620000000b00000001000000 620000000b00000001000000 00000062e000000040000000 620000000b00000001000000 620000000b00000001000000 00000062e000000040000000 620000000b00000001000000 00000062e000000040000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>0,c=>2,a=>-115,b=>0,d=>3} 8dffffff0800000003000000 8dffffff0800000003000000 8dffffff0800000003000000 ffffff8d20000000c0000000 8dffffff0800000003000000 8dffffff0800000003000000 ffffff8d20000000c0000000 8dffffff0800000003000000 ffffff8d20000000c0000000 - {e=>0,c=>2,a=>120,b=>0,d=>1} 780000000800000001000000 780000000800000001000000 780000000800000001000000 000000782000000040000000 780000000800000001000000 780000000800000001000000 000000782000000040000000 780000000800000001000000 000000782000000040000000 - {e=>-1,c=>3,a=>-67,b=>0,d=>1} bdffffff0c0000000d000000 bdffffff0c0000000d000000 bdffffff0c0000000d000000 ffffffbd3000000070000000 bdffffff0c0000000d000000 bdffffff0c0000000d000000 ffffffbd3000000070000000 bdffffff0c0000000d000000 ffffffbd3000000070000000 - {e=>-2,c=>2,a=>52,b=>2,d=>0} 340000000a00000008000000 340000000a00000008000000 340000000a00000008000000 00000034a000000020000000 340000000a00000008000000 340000000a00000008000000 00000034a000000020000000 340000000a00000008000000 00000034a000000020000000 - {e=>-1,c=>2,a=>94,b=>3,d=>2} 5e0000000b0000000e000000 5e0000000b0000000e000000 5e0000000b0000000e000000 0000005ee0000000b0000000 5e0000000b0000000e000000 5e0000000b0000000e000000 0000005ee0000000b0000000 5e0000000b0000000e000000 0000005ee0000000b0000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>0,c=>3,a=>-74,b=>1,d=>1,f=>1} b6ffffff0d00000011000000 b6ffffff0d00000011000000 b6ffffff0d00000011000000 ffffffb67000000044000000 b6ffffff0d00000011000000 b6ffffff0d00000011000000 ffffffb67000000044000000 b6ffffff0d00000011000000 ffffffb67000000044000000 - {e=>-1,c=>3,a=>117,b=>2,d=>1,f=>1} 750000000e0000001d000000 750000000e0000001d000000 750000000e0000001d000000 00000075b000000074000000 750000000e0000001d000000 750000000e0000001d000000 00000075b000000074000000 750000000e0000001d000000 00000075b000000074000000 - {e=>1,c=>1,a=>-117,b=>0,d=>2,f=>-2} 8bffffff0400000026000000 8bffffff0400000026000000 8bffffff0400000026000000 ffffff8b1000000098000000 8bffffff0400000026000000 8bffffff0400000026000000 ffffff8b1000000098000000 8bffffff0400000026000000 ffffff8b1000000098000000 - {e=>-2,c=>1,a=>-90,b=>1,d=>0,f=>-2} a6ffffff0500000028000000 a6ffffff0500000028000000 a6ffffff0500000028000000 ffffffa65000000028000000 a6ffffff0500000028000000 a6ffffff0500000028000000 ffffffa65000000028000000 a6ffffff0500000028000000 ffffffa65000000028000000 - {e=>-1,c=>2,a=>41,b=>0,d=>3,f=>0} 29000000080000000f000000 29000000080000000f000000 29000000080000000f000000 0000002920000000f0000000 29000000080000000f000000 29000000080000000f000000 0000002920000000f0000000 29000000080000000f000000 0000002920000000f0000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>0,c=>3,a=>-75,b=>1,d=>1,f=>0} b5ffffff0d00000001000000 b5ffffff0d00000001000000 b5ffffff0d00000001000000 ffffffb57000000040000000 b5ffffff0d00000001000000 b5ffffff0d00000001000000 ffffffb57000000040000000 b5ffffff0d00000001000000 ffffffb57000000040000000 - {e=>1,c=>3,a=>-74,b=>1,d=>1,f=>0} b6ffffff0d00000005000000 b6ffffff0d00000005000000 b6ffffff0d00000005000000 ffffffb67000000050000000 b6ffffff0d00000005000000 b6ffffff0d00000005000000 ffffffb67000000050000000 b6ffffff0d00000005000000 ffffffb67000000050000000 - {e=>-2,c=>0,a=>7,b=>2,d=>2,f=>0} 07000000020000000a000000 07000000020000000a000000 07000000020000000a000000 0000000780000000a0000000 07000000020000000a000000 07000000020000000a000000 0000000780000000a0000000 07000000020000000a000000 0000000780000000a0000000 - {e=>-1,c=>0,a=>-14,b=>3,d=>2,f=>-1} f2ffffff030000003e000000 f2ffffff030000003e000000 f2ffffff030000003e000000 fffffff2c0000000bc000000 f2ffffff030000003e000000 f2ffffff030000003e000000 fffffff2c0000000bc000000 f2ffffff030000003e000000 fffffff2c0000000bc000000 - {e=>0,c=>2,a=>-68,b=>1,d=>3,f=>-2} bcffffff0900000023000000 bcffffff0900000023000000 bcffffff0900000023000000 ffffffbc60000000c8000000 bcffffff0900000023000000 bcffffff0900000023000000 ffffffbc60000000c8000000 bcffffff0900000023000000 ffffffbc60000000c8000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>-1,c=>0,a=>-121,g=>-2,b=>1,d=>0,f=>-2} 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 ffffff87400000003800000080000000 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 ffffff87400000003800000080000000 87ffffff010000002c00000002000000 ffffff87400000003800000080000000 - {e=>-2,c=>2,a=>125,g=>-2,b=>3,d=>3,f=>-2} 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 0000007de0000000e800000080000000 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 0000007de0000000e800000080000000 7d0000000b0000002b00000002000000 0000007de0000000e800000080000000 - {e=>-2,c=>0,a=>23,g=>-2,b=>0,d=>0,f=>1} 17000000000000001800000002000000 17000000000000001800000002000000 17000000000000001800000002000000 00000017000000002400000080000000 17000000000000001800000002000000 17000000000000001800000002000000 00000017000000002400000080000000 17000000000000001800000002000000 00000017000000002400000080000000 - {e=>-2,c=>0,a=>-89,g=>1,b=>2,d=>2,f=>-1} a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 ffffffa780000000ac00000040000000 a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 ffffffa780000000ac00000040000000 a7ffffff020000003a00000001000000 ffffffa780000000ac00000040000000 - {e=>-1,c=>3,a=>46,g=>1,b=>1,d=>1,f=>0} 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 0000002e700000007000000040000000 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 0000002e700000007000000040000000 2e0000000d0000000d00000001000000 0000002e700000007000000040000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>-2,a=>-37,d=>1,c=>1,h=>0,b=>0,g=>1,f=>-1} dbffffff040000003900000001000000 dbffffff040000003900000001000000 dbffffff040000003900000001000000 ffffffdb100000006c00000040000000 dbffffff040000003900000001000000 dbffffff040000003900000001000000 ffffffdb100000006c00000040000000 dbffffff040000003900000001000000 ffffffdb100000006c00000040000000 - {e=>0,a=>-96,d=>3,c=>3,h=>1,b=>0,g=>-2,f=>1} a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 ffffffa030000000c400000090000000 a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 ffffffa030000000c400000090000000 a0ffffff0c0000001300000006000000 ffffffa030000000c400000090000000 - {e=>-1,a=>-27,d=>1,c=>3,h=>-1,b=>1,g=>1,f=>-1} e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 ffffffe5700000007c00000070000000 e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 ffffffe5700000007c00000070000000 e5ffffff0d0000003d0000000d000000 ffffffe5700000007c00000070000000 - {e=>-2,a=>-117,d=>3,c=>2,h=>-2,b=>1,g=>-1,f=>-2} 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 ffffff8b60000000e8000000e0000000 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 ffffff8b60000000e8000000e0000000 8bffffff090000002b0000000b000000 ffffff8b60000000e8000000e0000000 - {e=>1,a=>-10,d=>0,c=>0,h=>-2,b=>0,g=>1,f=>1} f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 fffffff6000000001400000060000000 f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 fffffff6000000001400000060000000 f6ffffff000000001400000009000000 fffffff6000000001400000060000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>1,a=>-4,d=>3,c=>3,h=>-2,b=>0,g=>1,f=>-1,i=>-1} fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 fffffffc30000000dc0000006c000000 fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 fffffffc30000000dc0000006c000000 fcffffff0c0000003700000039000000 fffffffc30000000dc0000006c000000 - {e=>0,a=>98,d=>2,c=>2,h=>0,b=>2,g=>0,f=>1,i=>-2} 620000000a0000001200000020000000 620000000a0000001200000020000000 620000000a0000001200000020000000 00000062a00000008400000008000000 620000000a0000001200000020000000 620000000a0000001200000020000000 00000062a00000008400000008000000 620000000a0000001200000020000000 00000062a00000008400000008000000 - {e=>1,a=>40,d=>3,c=>2,h=>1,b=>3,g=>0,f=>-1,i=>1} 280000000b0000003700000014000000 280000000b0000003700000014000000 280000000b0000003700000014000000 00000028e0000000dc00000014000000 280000000b0000003700000014000000 280000000b0000003700000014000000 00000028e0000000dc00000014000000 280000000b0000003700000014000000 00000028e0000000dc00000014000000 - {e=>0,a=>-91,d=>0,c=>3,h=>0,b=>2,g=>-1,f=>-1,i=>-1} a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 ffffffa5b00000000c000000cc000000 a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 ffffffa5b00000000c000000cc000000 a5ffffff0e0000003000000033000000 ffffffa5b00000000c000000cc000000 - {e=>0,a=>111,d=>2,c=>1,h=>-1,b=>0,g=>-2,f=>-2,i=>-1} 6f00000004000000220000003e000000 6f00000004000000220000003e000000 6f00000004000000220000003e000000 0000006f1000000088000000bc000000 6f00000004000000220000003e000000 6f00000004000000220000003e000000 0000006f1000000088000000bc000000 6f00000004000000220000003e000000 0000006f1000000088000000bc000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-110,d=>2,c=>3,h=>-1,b=>1,g=>0,f=>-2,i=>0} 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 ffffff92700000008800000030000000 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 ffffff92700000008800000030000000 92ffffff0d000000220000000c000000 ffffff92700000008800000030000000 - {e=>-2,a=>-48,d=>1,c=>0,h=>-2,b=>3,g=>1,f=>0,i=>1} d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 ffffffd0c00000006000000064000000 d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 ffffffd0c00000006000000064000000 d0ffffff030000000900000019000000 ffffffd0c00000006000000064000000 - {e=>-1,a=>107,d=>3,c=>3,h=>0,b=>3,g=>1,f=>1,i=>0} 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 0000006bf0000000f400000040000000 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 0000006bf0000000f400000040000000 6b0000000f0000001f00000001000000 0000006bf0000000f400000040000000 - {e=>-1,a=>23,d=>3,c=>0,h=>-2,b=>0,g=>0,f=>0,i=>1} 17000000000000000f00000018000000 17000000000000000f00000018000000 17000000000000000f00000018000000 0000001700000000f000000024000000 17000000000000000f00000018000000 17000000000000000f00000018000000 0000001700000000f000000024000000 17000000000000000f00000018000000 0000001700000000f000000024000000 - {e=>-2,a=>-85,d=>3,c=>2,h=>0,b=>1,g=>0,f=>-1,i=>1} abffffff090000003b00000010000000 abffffff090000003b00000010000000 abffffff090000003b00000010000000 ffffffab60000000ec00000004000000 abffffff090000003b00000010000000 abffffff090000003b00000010000000 ffffffab60000000ec00000004000000 abffffff090000003b00000010000000 ffffffab60000000ec00000004000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>0,a=>-100,d=>3,j=>-1,c=>2,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 ffffff9c60000000cc000000fc000000c0000000 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 ffffff9c60000000cc000000fc000000c0000000 9cffffff09000000330000003f00000003000000 ffffff9c60000000cc000000fc000000c0000000 - {e=>1,a=>18,d=>0,j=>1,c=>2,h=>-2,b=>2,g=>1,f=>-2,i=>0} 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 00000012a0000000180000006000000040000000 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 00000012a0000000180000006000000040000000 120000000a000000240000000900000001000000 00000012a0000000180000006000000040000000 - {e=>-2,a=>-36,d=>1,j=>0,c=>0,h=>-2,b=>2,g=>-1,f=>0,i=>-1} dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 ffffffdc8000000060000000ec00000000000000 dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 ffffffdc8000000060000000ec00000000000000 dcffffff02000000090000003b00000000000000 ffffffdc8000000060000000ec00000000000000 - {e=>1,a=>-45,d=>0,j=>0,c=>0,h=>0,b=>0,g=>1,f=>0,i=>-1} d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 ffffffd300000000100000004c00000000000000 d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 ffffffd300000000100000004c00000000000000 d3ffffff00000000040000003100000000000000 ffffffd300000000100000004c00000000000000 - {e=>-2,a=>103,d=>3,j=>-2,c=>0,h=>1,b=>0,g=>1,f=>0,i=>1} 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 0000006700000000e00000005400000080000000 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 0000006700000000e00000005400000080000000 67000000000000000b0000001500000002000000 0000006700000000e00000005400000080000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>-2,a=>108,d=>3,j=>-2,c=>0,k=>-117,h=>1,b=>0,g=>1,f=>-1,i=>-1} 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff 0000006c00000000ec0000005c00000080000000ffffff8b 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff 0000006c00000000ec0000005c00000080000000ffffff8b 6c000000000000003b00000035000000020000008bffffff 0000006c00000000ec0000005c00000080000000ffffff8b - {e=>-1,a=>43,d=>1,j=>-1,c=>1,k=>16,h=>-2,b=>2,g=>-2,f=>-2,i=>1} 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 0000002b9000000078000000a4000000c000000000000010 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 0000002b9000000078000000a4000000c000000000000010 2b000000060000002d0000001a0000000300000010000000 0000002b9000000078000000a4000000c000000000000010 - {e=>1,a=>-38,d=>0,j=>0,c=>3,k=>-25,h=>-1,b=>0,g=>-1,f=>0,i=>1} daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff ffffffda3000000010000000f400000000000000ffffffe7 daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff ffffffda3000000010000000f400000000000000ffffffe7 daffffff0c000000040000001f00000000000000e7ffffff ffffffda3000000010000000f400000000000000ffffffe7 - {e=>0,a=>-93,d=>3,j=>0,c=>1,k=>23,h=>-2,b=>1,g=>-1,f=>0,i=>0} a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 ffffffa350000000c0000000e00000000000000000000017 a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 ffffffa350000000c0000000e00000000000000000000017 a3ffffff05000000030000000b0000000000000017000000 ffffffa350000000c0000000e00000000000000000000017 - {e=>0,a=>108,d=>2,j=>-1,c=>1,k=>90,h=>-2,b=>0,g=>-2,f=>0,i=>1} 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 0000006c1000000080000000a4000000c00000000000005a 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 0000006c1000000080000000a4000000c00000000000005a 6c00000004000000020000001a000000030000005a000000 0000006c1000000080000000a4000000c00000000000005a = struct mixed2 { long a; unsigned int b:2; }; - {a=>25,b=>0} 1900000000000000 19000000000000000000000000000000 19000000000000000000000000000000 0000001900000000 1900000000000000 1900000000000000 00000000000000190000000000000000 1900000000000000 0000001900000000 - {a=>-13,b=>2} f3ffffff02000000 f3ffffffffffffff0200000000000000 f3ffffffffffffff0200000000000000 fffffff380000000 f3ffffff02000000 f3ffffff02000000 fffffffffffffff38000000000000000 f3ffffff02000000 fffffff380000000 - {a=>-45,b=>3} d3ffffff03000000 d3ffffffffffffff0300000000000000 d3ffffffffffffff0300000000000000 ffffffd3c0000000 d3ffffff03000000 d3ffffff03000000 ffffffffffffffd3c000000000000000 d3ffffff03000000 ffffffd3c0000000 - {a=>-4,b=>0} fcffffff00000000 fcffffffffffffff0000000000000000 fcffffffffffffff0000000000000000 fffffffc00000000 fcffffff00000000 fcffffff00000000 fffffffffffffffc0000000000000000 fcffffff00000000 fffffffc00000000 - {a=>121,b=>3} 7900000003000000 79000000000000000300000000000000 79000000000000000300000000000000 00000079c0000000 7900000003000000 7900000003000000 0000000000000079c000000000000000 7900000003000000 00000079c0000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>-103,b=>2} 99ffffff0a000000 99ffffffffffffff0a00000000000000 99ffffffffffffff0a00000000000000 ffffff99a0000000 99ffffff0a000000 99ffffff0a000000 ffffffffffffff99a000000000000000 99ffffff0a000000 ffffff99a0000000 - {c=>1,a=>15,b=>2} 0f00000006000000 0f000000000000000600000000000000 0f000000000000000600000000000000 0000000f90000000 0f00000006000000 0f00000006000000 000000000000000f9000000000000000 0f00000006000000 0000000f90000000 - {c=>2,a=>30,b=>1} 1e00000009000000 1e000000000000000900000000000000 1e000000000000000900000000000000 0000001e60000000 1e00000009000000 1e00000009000000 000000000000001e6000000000000000 1e00000009000000 0000001e60000000 - {c=>0,a=>77,b=>1} 4d00000001000000 4d000000000000000100000000000000 4d000000000000000100000000000000 0000004d40000000 4d00000001000000 4d00000001000000 000000000000004d4000000000000000 4d00000001000000 0000004d40000000 - {c=>0,a=>35,b=>3} 2300000003000000 23000000000000000300000000000000 23000000000000000300000000000000 00000023c0000000 2300000003000000 2300000003000000 0000000000000023c000000000000000 2300000003000000 00000023c0000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>3,a=>24,b=>2} 180000000e000000 18000000000000000e00000000000000 18000000000000000e00000000000000 00000018b0000000 180000000e000000 180000000e000000 0000000000000018b000000000000000 180000000e000000 00000018b0000000 - {c=>1,a=>20,b=>0} 1400000004000000 14000000000000000400000000000000 14000000000000000400000000000000 0000001410000000 1400000004000000 1400000004000000 00000000000000141000000000000000 1400000004000000 0000001410000000 - {c=>3,a=>-15,b=>2} f1ffffff0e000000 f1ffffffffffffff0e00000000000000 f1ffffffffffffff0e00000000000000 fffffff1b0000000 f1ffffff0e000000 f1ffffff0e000000 fffffffffffffff1b000000000000000 f1ffffff0e000000 fffffff1b0000000 - {c=>1,a=>8,b=>1} 0800000005000000 08000000000000000500000000000000 08000000000000000500000000000000 0000000850000000 0800000005000000 0800000005000000 00000000000000085000000000000000 0800000005000000 0000000850000000 - {c=>3,a=>79,b=>3} 4f0000000f000000 4f000000000000000f00000000000000 4f000000000000000f00000000000000 0000004ff0000000 4f0000000f000000 4f0000000f000000 000000000000004ff000000000000000 4f0000000f000000 0000004ff0000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>1,a=>-41,b=>3,d=>0} d7ffffff0700000000000000 d7ffffffffffffff0700000000000000 d7ffffffffffffff0700000000000000 ffffffd7d000000000000000 d7ffffff0700000000000000 d7ffffff0700000000000000 ffffffffffffffd7d000000000000000 d7ffffff0700000000000000 ffffffd7d000000000000000 - {c=>0,a=>89,b=>3,d=>2} 590000000300000002000000 59000000000000000300000002000000 59000000000000000300000002000000 00000059c000000080000000 590000000300000002000000 590000000300000002000000 0000000000000059c000000080000000 590000000300000002000000 00000059c000000080000000 - {c=>1,a=>72,b=>2,d=>1} 480000000600000001000000 48000000000000000600000001000000 48000000000000000600000001000000 000000489000000040000000 480000000600000001000000 480000000600000001000000 00000000000000489000000040000000 480000000600000001000000 000000489000000040000000 - {c=>3,a=>-32,b=>1,d=>2} e0ffffff0d00000002000000 e0ffffffffffffff0d00000002000000 e0ffffffffffffff0d00000002000000 ffffffe07000000080000000 e0ffffff0d00000002000000 e0ffffff0d00000002000000 ffffffffffffffe07000000080000000 e0ffffff0d00000002000000 ffffffe07000000080000000 - {c=>1,a=>96,b=>0,d=>0} 600000000400000000000000 60000000000000000400000000000000 60000000000000000400000000000000 000000601000000000000000 600000000400000000000000 600000000400000000000000 00000000000000601000000000000000 600000000400000000000000 000000601000000000000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>-2,c=>1,a=>52,b=>3,d=>1} 340000000700000009000000 34000000000000000700000009000000 34000000000000000700000009000000 00000034d000000060000000 340000000700000009000000 340000000700000009000000 0000000000000034d000000060000000 340000000700000009000000 00000034d000000060000000 - {e=>-1,c=>2,a=>-124,b=>2,d=>3} 84ffffff0a0000000f000000 84ffffffffffffff0a0000000f000000 84ffffffffffffff0a0000000f000000 ffffff84a0000000f0000000 84ffffff0a0000000f000000 84ffffff0a0000000f000000 ffffffffffffff84a0000000f0000000 84ffffff0a0000000f000000 ffffff84a0000000f0000000 - {e=>-1,c=>1,a=>-79,b=>2,d=>1} b1ffffff060000000d000000 b1ffffffffffffff060000000d000000 b1ffffffffffffff060000000d000000 ffffffb19000000070000000 b1ffffff060000000d000000 b1ffffff060000000d000000 ffffffffffffffb19000000070000000 b1ffffff060000000d000000 ffffffb19000000070000000 - {e=>0,c=>0,a=>-70,b=>2,d=>2} baffffff0200000002000000 baffffffffffffff0200000002000000 baffffffffffffff0200000002000000 ffffffba8000000080000000 baffffff0200000002000000 baffffff0200000002000000 ffffffffffffffba8000000080000000 baffffff0200000002000000 ffffffba8000000080000000 - {e=>-1,c=>0,a=>-18,b=>2,d=>1} eeffffff020000000d000000 eeffffffffffffff020000000d000000 eeffffffffffffff020000000d000000 ffffffee8000000070000000 eeffffff020000000d000000 eeffffff020000000d000000 ffffffffffffffee8000000070000000 eeffffff020000000d000000 ffffffee8000000070000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>-1,c=>2,a=>-31,b=>0,d=>2,f=>1} e1ffffff080000001e000000 e1ffffffffffffff080000001e000000 e1ffffffffffffff080000001e000000 ffffffe120000000b4000000 e1ffffff080000001e000000 e1ffffff080000001e000000 ffffffffffffffe120000000b4000000 e1ffffff080000001e000000 ffffffe120000000b4000000 - {e=>0,c=>2,a=>-103,b=>2,d=>1,f=>0} 99ffffff0a00000001000000 99ffffffffffffff0a00000001000000 99ffffffffffffff0a00000001000000 ffffff99a000000040000000 99ffffff0a00000001000000 99ffffff0a00000001000000 ffffffffffffff99a000000040000000 99ffffff0a00000001000000 ffffff99a000000040000000 - {e=>-1,c=>2,a=>51,b=>3,d=>1,f=>-1} 330000000b0000003d000000 33000000000000000b0000003d000000 33000000000000000b0000003d000000 00000033e00000007c000000 330000000b0000003d000000 330000000b0000003d000000 0000000000000033e00000007c000000 330000000b0000003d000000 00000033e00000007c000000 - {e=>1,c=>3,a=>-94,b=>0,d=>0,f=>-1} a2ffffff0c00000034000000 a2ffffffffffffff0c00000034000000 a2ffffffffffffff0c00000034000000 ffffffa2300000001c000000 a2ffffff0c00000034000000 a2ffffff0c00000034000000 ffffffffffffffa2300000001c000000 a2ffffff0c00000034000000 ffffffa2300000001c000000 - {e=>-1,c=>3,a=>-14,b=>0,d=>2,f=>-2} f2ffffff0c0000002e000000 f2ffffffffffffff0c0000002e000000 f2ffffffffffffff0c0000002e000000 fffffff230000000b8000000 f2ffffff0c0000002e000000 f2ffffff0c0000002e000000 fffffffffffffff230000000b8000000 f2ffffff0c0000002e000000 fffffff230000000b8000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>-2,c=>0,a=>80,b=>1,d=>0,f=>0} 500000000100000008000000 50000000000000000100000008000000 50000000000000000100000008000000 000000504000000020000000 500000000100000008000000 500000000100000008000000 00000000000000504000000020000000 500000000100000008000000 000000504000000020000000 - {e=>1,c=>2,a=>12,b=>1,d=>1,f=>-2} 0c0000000900000025000000 0c000000000000000900000025000000 0c000000000000000900000025000000 0000000c6000000058000000 0c0000000900000025000000 0c0000000900000025000000 000000000000000c6000000058000000 0c0000000900000025000000 0000000c6000000058000000 - {e=>-2,c=>0,a=>-50,b=>2,d=>3,f=>-1} ceffffff020000003b000000 ceffffffffffffff020000003b000000 ceffffffffffffff020000003b000000 ffffffce80000000ec000000 ceffffff020000003b000000 ceffffff020000003b000000 ffffffffffffffce80000000ec000000 ceffffff020000003b000000 ffffffce80000000ec000000 - {e=>-1,c=>1,a=>95,b=>3,d=>2,f=>-1} 5f000000070000003e000000 5f00000000000000070000003e000000 5f00000000000000070000003e000000 0000005fd0000000bc000000 5f000000070000003e000000 5f000000070000003e000000 000000000000005fd0000000bc000000 5f000000070000003e000000 0000005fd0000000bc000000 - {e=>1,c=>2,a=>99,b=>0,d=>3,f=>0} 630000000800000007000000 63000000000000000800000007000000 63000000000000000800000007000000 0000006320000000d0000000 630000000800000007000000 630000000800000007000000 000000000000006320000000d0000000 630000000800000007000000 0000006320000000d0000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>1,c=>2,a=>-83,g=>-2,b=>3,d=>2,f=>1} adffffff0b0000001600000002000000 adffffffffffffff0b000000160000000200000000000000 adffffffffffffff0b000000160000000200000000000000 ffffffade00000009400000080000000 adffffff0b0000001600000002000000 adffffff0b0000001600000002000000 ffffffffffffffade0000000940000008000000000000000 adffffff0b0000001600000002000000 ffffffade00000009400000080000000 - {e=>1,c=>2,a=>21,g=>-2,b=>3,d=>1,f=>1} 150000000b0000001500000002000000 15000000000000000b000000150000000200000000000000 15000000000000000b000000150000000200000000000000 00000015e00000005400000080000000 150000000b0000001500000002000000 150000000b0000001500000002000000 0000000000000015e0000000540000008000000000000000 150000000b0000001500000002000000 00000015e00000005400000080000000 - {e=>0,c=>2,a=>90,g=>0,b=>0,d=>2,f=>1} 5a000000080000001200000000000000 5a0000000000000008000000120000000000000000000000 5a0000000000000008000000120000000000000000000000 0000005a200000008400000000000000 5a000000080000001200000000000000 5a000000080000001200000000000000 000000000000005a20000000840000000000000000000000 5a000000080000001200000000000000 0000005a200000008400000000000000 - {e=>-2,c=>3,a=>-13,g=>-2,b=>2,d=>2,f=>-2} f3ffffff0e0000002a00000002000000 f3ffffffffffffff0e0000002a0000000200000000000000 f3ffffffffffffff0e0000002a0000000200000000000000 fffffff3b0000000a800000080000000 f3ffffff0e0000002a00000002000000 f3ffffff0e0000002a00000002000000 fffffffffffffff3b0000000a80000008000000000000000 f3ffffff0e0000002a00000002000000 fffffff3b0000000a800000080000000 - {e=>-2,c=>0,a=>125,g=>-1,b=>1,d=>1,f=>-2} 7d000000010000002900000003000000 7d0000000000000001000000290000000300000000000000 7d0000000000000001000000290000000300000000000000 0000007d4000000068000000c0000000 7d000000010000002900000003000000 7d000000010000002900000003000000 000000000000007d4000000068000000c000000000000000 7d000000010000002900000003000000 0000007d4000000068000000c0000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>1,a=>-118,d=>0,c=>1,h=>0,b=>2,g=>0,f=>1} 8affffff060000001400000000000000 8affffffffffffff06000000140000000000000000000000 8affffffffffffff06000000140000000000000000000000 ffffff8a900000001400000000000000 8affffff060000001400000000000000 8affffff060000001400000000000000 ffffffffffffff8a90000000140000000000000000000000 8affffff060000001400000000000000 ffffff8a900000001400000000000000 - {e=>-1,a=>-22,d=>2,c=>1,h=>-2,b=>0,g=>-2,f=>-1} eaffffff040000003e0000000a000000 eaffffffffffffff040000003e0000000a00000000000000 eaffffffffffffff040000003e0000000a00000000000000 ffffffea10000000bc000000a0000000 eaffffff040000003e0000000a000000 eaffffff040000003e0000000a000000 ffffffffffffffea10000000bc000000a000000000000000 eaffffff040000003e0000000a000000 ffffffea10000000bc000000a0000000 - {e=>0,a=>35,d=>2,c=>2,h=>1,b=>0,g=>-1,f=>0} 23000000080000000200000007000000 230000000000000008000000020000000700000000000000 230000000000000008000000020000000700000000000000 000000232000000080000000d0000000 23000000080000000200000007000000 23000000080000000200000007000000 00000000000000232000000080000000d000000000000000 23000000080000000200000007000000 000000232000000080000000d0000000 - {e=>1,a=>109,d=>0,c=>0,h=>0,b=>0,g=>1,f=>0} 6d000000000000000400000001000000 6d0000000000000000000000040000000100000000000000 6d0000000000000000000000040000000100000000000000 0000006d000000001000000040000000 6d000000000000000400000001000000 6d000000000000000400000001000000 000000000000006d00000000100000004000000000000000 6d000000000000000400000001000000 0000006d000000001000000040000000 - {e=>1,a=>67,d=>1,c=>1,h=>0,b=>0,g=>-2,f=>0} 43000000040000000500000002000000 430000000000000004000000050000000200000000000000 430000000000000004000000050000000200000000000000 00000043100000005000000080000000 43000000040000000500000002000000 43000000040000000500000002000000 000000000000004310000000500000008000000000000000 43000000040000000500000002000000 00000043100000005000000080000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-1,a=>-88,d=>2,c=>3,h=>-1,b=>3,g=>-2,f=>0,i=>-1} a8ffffff0f0000000e0000003e000000 a8ffffffffffffff0f0000000e0000003e00000000000000 a8ffffffffffffff0f0000000e0000003e00000000000000 ffffffa8f0000000b0000000bc000000 a8ffffff0f0000000e0000003e000000 a8ffffff0f0000000e0000003e000000 ffffffffffffffa8f0000000b0000000bc00000000000000 a8ffffff0f0000000e0000003e000000 ffffffa8f0000000b0000000bc000000 - {e=>-1,a=>117,d=>0,c=>2,h=>-1,b=>2,g=>-1,f=>0,i=>0} 750000000a0000000c0000000f000000 75000000000000000a0000000c0000000f00000000000000 75000000000000000a0000000c0000000f00000000000000 00000075a000000030000000f0000000 750000000a0000000c0000000f000000 750000000a0000000c0000000f000000 0000000000000075a000000030000000f000000000000000 750000000a0000000c0000000f000000 00000075a000000030000000f0000000 - {e=>-1,a=>119,d=>1,c=>0,h=>-1,b=>2,g=>1,f=>-2,i=>1} 77000000020000002d0000001d000000 7700000000000000020000002d0000001d00000000000000 7700000000000000020000002d0000001d00000000000000 00000077800000007800000074000000 77000000020000002d0000001d000000 77000000020000002d0000001d000000 000000000000007780000000780000007400000000000000 77000000020000002d0000001d000000 00000077800000007800000074000000 - {e=>0,a=>-126,d=>1,c=>2,h=>1,b=>2,g=>0,f=>0,i=>-2} 82ffffff0a0000000100000024000000 82ffffffffffffff0a000000010000002400000000000000 82ffffffffffffff0a000000010000002400000000000000 ffffff82a00000004000000018000000 82ffffff0a0000000100000024000000 82ffffff0a0000000100000024000000 ffffffffffffff82a0000000400000001800000000000000 82ffffff0a0000000100000024000000 ffffff82a00000004000000018000000 - {e=>-1,a=>-78,d=>3,c=>2,h=>-2,b=>2,g=>-2,f=>-1,i=>1} b2ffffff0a0000003f0000001a000000 b2ffffffffffffff0a0000003f0000001a00000000000000 b2ffffffffffffff0a0000003f0000001a00000000000000 ffffffb2a0000000fc000000a4000000 b2ffffff0a0000003f0000001a000000 b2ffffff0a0000003f0000001a000000 ffffffffffffffb2a0000000fc000000a400000000000000 b2ffffff0a0000003f0000001a000000 ffffffb2a0000000fc000000a4000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-53,d=>0,c=>3,h=>-1,b=>1,g=>1,f=>1,i=>0} cbffffff0d000000100000000d000000 cbffffffffffffff0d000000100000000d00000000000000 cbffffffffffffff0d000000100000000d00000000000000 ffffffcb700000000400000070000000 cbffffff0d000000100000000d000000 cbffffff0d000000100000000d000000 ffffffffffffffcb70000000040000007000000000000000 cbffffff0d000000100000000d000000 ffffffcb700000000400000070000000 - {e=>-2,a=>-108,d=>2,c=>0,h=>-1,b=>2,g=>-1,f=>0,i=>-2} 94ffffff020000000a0000002f000000 94ffffffffffffff020000000a0000002f00000000000000 94ffffffffffffff020000000a0000002f00000000000000 ffffff9480000000a0000000f8000000 94ffffff020000000a0000002f000000 94ffffff020000000a0000002f000000 ffffffffffffff9480000000a0000000f800000000000000 94ffffff020000000a0000002f000000 ffffff9480000000a0000000f8000000 - {e=>1,a=>-117,d=>1,c=>1,h=>0,b=>1,g=>-2,f=>0,i=>-1} 8bffffff050000000500000032000000 8bffffffffffffff05000000050000003200000000000000 8bffffffffffffff05000000050000003200000000000000 ffffff8b50000000500000008c000000 8bffffff050000000500000032000000 8bffffff050000000500000032000000 ffffffffffffff8b50000000500000008c00000000000000 8bffffff050000000500000032000000 ffffff8b50000000500000008c000000 - {e=>1,a=>121,d=>1,c=>1,h=>-2,b=>0,g=>1,f=>0,i=>1} 79000000040000000500000019000000 790000000000000004000000050000001900000000000000 790000000000000004000000050000001900000000000000 00000079100000005000000064000000 79000000040000000500000019000000 79000000040000000500000019000000 000000000000007910000000500000006400000000000000 79000000040000000500000019000000 00000079100000005000000064000000 - {e=>-2,a=>-2,d=>1,c=>3,h=>-2,b=>0,g=>-1,f=>-2,i=>-2} feffffff0c000000290000002b000000 feffffffffffffff0c000000290000002b00000000000000 feffffffffffffff0c000000290000002b00000000000000 fffffffe3000000068000000e8000000 feffffff0c000000290000002b000000 feffffff0c000000290000002b000000 fffffffffffffffe3000000068000000e800000000000000 feffffff0c000000290000002b000000 fffffffe3000000068000000e8000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>-1,a=>65,d=>2,j=>-1,c=>3,h=>0,b=>0,g=>1,f=>0,i=>0} 410000000c0000000e0000000100000003000000 41000000000000000c0000000e0000000100000003000000 41000000000000000c0000000e0000000100000003000000 0000004130000000b000000040000000c0000000 410000000c0000000e0000000100000003000000 410000000c0000000e0000000100000003000000 000000000000004130000000b000000040000000c0000000 410000000c0000000e0000000100000003000000 0000004130000000b000000040000000c0000000 - {e=>-1,a=>68,d=>0,j=>1,c=>0,h=>-2,b=>2,g=>-1,f=>-2,i=>-1} 44000000020000002c0000003b00000001000000 4400000000000000020000002c0000003b00000001000000 4400000000000000020000002c0000003b00000001000000 000000448000000038000000ec00000040000000 44000000020000002c0000003b00000001000000 44000000020000002c0000003b00000001000000 00000000000000448000000038000000ec00000040000000 44000000020000002c0000003b00000001000000 000000448000000038000000ec00000040000000 - {e=>1,a=>15,d=>3,j=>0,c=>0,h=>-1,b=>3,g=>1,f=>-2,i=>-1} 0f00000003000000270000003d00000000000000 0f0000000000000003000000270000003d00000000000000 0f0000000000000003000000270000003d00000000000000 0000000fc0000000d80000007c00000000000000 0f00000003000000270000003d00000000000000 0f00000003000000270000003d00000000000000 000000000000000fc0000000d80000007c00000000000000 0f00000003000000270000003d00000000000000 0000000fc0000000d80000007c00000000000000 - {e=>-1,a=>-76,d=>3,j=>-2,c=>3,h=>1,b=>2,g=>1,f=>-2,i=>1} b4ffffff0e0000002f0000001500000002000000 b4ffffffffffffff0e0000002f0000001500000002000000 b4ffffffffffffff0e0000002f0000001500000002000000 ffffffb4b0000000f80000005400000080000000 b4ffffff0e0000002f0000001500000002000000 b4ffffff0e0000002f0000001500000002000000 ffffffffffffffb4b0000000f80000005400000080000000 b4ffffff0e0000002f0000001500000002000000 ffffffb4b0000000f80000005400000080000000 - {e=>-1,a=>65,d=>3,j=>1,c=>1,h=>0,b=>2,g=>0,f=>0,i=>0} 41000000060000000f0000000000000001000000 4100000000000000060000000f0000000000000001000000 4100000000000000060000000f0000000000000001000000 0000004190000000f00000000000000040000000 41000000060000000f0000000000000001000000 41000000060000000f0000000000000001000000 000000000000004190000000f00000000000000040000000 41000000060000000f0000000000000001000000 0000004190000000f00000000000000040000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>1,a=>-49,d=>0,j=>-2,c=>3,k=>-42,h=>1,b=>0,g=>-2,f=>1,i=>-2} cfffffff0c000000140000002600000002000000d6ffffff cfffffffffffffff0c000000140000002600000002000000d6ffffff00000000 cfffffffffffffff0c000000140000002600000002000000d6ffffff00000000 ffffffcf30000000140000009800000080000000ffffffd6 cfffffff0c000000140000002600000002000000d6ffffff cfffffff0c000000140000002600000002000000d6ffffff ffffffffffffffcf30000000140000009800000080000000ffffffd600000000 cfffffff0c000000140000002600000002000000d6ffffff ffffffcf30000000140000009800000080000000ffffffd6 - {e=>0,a=>91,d=>3,j=>-2,c=>2,k=>-107,h=>0,b=>3,g=>-2,f=>-2,i=>0} 5b0000000b00000023000000020000000200000095ffffff 5b000000000000000b00000023000000020000000200000095ffffff00000000 5b000000000000000b00000023000000020000000200000095ffffff00000000 0000005be0000000c80000008000000080000000ffffff95 5b0000000b00000023000000020000000200000095ffffff 5b0000000b00000023000000020000000200000095ffffff 000000000000005be0000000c80000008000000080000000ffffff9500000000 5b0000000b00000023000000020000000200000095ffffff 0000005be0000000c80000008000000080000000ffffff95 - {e=>-1,a=>119,d=>0,j=>-1,c=>2,k=>-75,h=>0,b=>0,g=>0,f=>0,i=>1} 77000000080000000c0000001000000003000000b5ffffff 7700000000000000080000000c0000001000000003000000b5ffffff00000000 7700000000000000080000000c0000001000000003000000b5ffffff00000000 00000077200000003000000004000000c0000000ffffffb5 77000000080000000c0000001000000003000000b5ffffff 77000000080000000c0000001000000003000000b5ffffff 0000000000000077200000003000000004000000c0000000ffffffb500000000 77000000080000000c0000001000000003000000b5ffffff 00000077200000003000000004000000c0000000ffffffb5 - {e=>1,a=>56,d=>2,j=>-2,c=>1,k=>-42,h=>-2,b=>2,g=>0,f=>-1,i=>0} 3800000006000000360000000800000002000000d6ffffff 380000000000000006000000360000000800000002000000d6ffffff00000000 380000000000000006000000360000000800000002000000d6ffffff00000000 00000038900000009c0000002000000080000000ffffffd6 3800000006000000360000000800000002000000d6ffffff 3800000006000000360000000800000002000000d6ffffff 0000000000000038900000009c0000002000000080000000ffffffd600000000 3800000006000000360000000800000002000000d6ffffff 00000038900000009c0000002000000080000000ffffffd6 - {e=>0,a=>47,d=>2,j=>1,c=>3,k=>-15,h=>-1,b=>0,g=>-1,f=>0,i=>1} 2f0000000c000000020000001f00000001000000f1ffffff 2f000000000000000c000000020000001f00000001000000f1ffffff00000000 2f000000000000000c000000020000001f00000001000000f1ffffff00000000 0000002f3000000080000000f400000040000000fffffff1 2f0000000c000000020000001f00000001000000f1ffffff 2f0000000c000000020000001f00000001000000f1ffffff 000000000000002f3000000080000000f400000040000000fffffff100000000 2f0000000c000000020000001f00000001000000f1ffffff 0000002f3000000080000000f400000040000000fffffff1 = struct uch_wrap { unsigned char a:3; }; - {a=>1} 01 01 01 20 01000000 01 20 01 20 - {a=>4} 04 04 04 80 04000000 04 80 04 80 - {a=>3} 03 03 03 60 03000000 03 60 03 60 - {a=>1} 01 01 01 20 01000000 01 20 01 20 - {a=>7} 07 07 07 e0 07000000 07 e0 07 e0 = struct uch_wrap { unsigned char a:3; unsigned char b:3; }; - {a=>1,b=>3} 19 19 19 2c 19000000 19 2c 19 2c - {a=>0,b=>4} 20 20 20 10 20000000 20 10 20 10 - {a=>1,b=>6} 31 31 31 38 31000000 31 38 31 38 - {a=>5,b=>4} 25 25 25 b0 25000000 25 b0 25 b0 - {a=>0,b=>4} 20 20 20 10 20000000 20 10 20 10 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>7,b=>7} 3f04 3f04 3f04 fc80 3f040000 3f04 fc80 3f04 fc80 - {c=>7,a=>3,b=>3} 1b07 1b07 1b07 6ce0 1b070000 1b07 6ce0 1b07 6ce0 - {c=>0,a=>6,b=>5} 2e00 2e00 2e00 d400 2e000000 2e00 d400 2e00 d400 - {c=>3,a=>5,b=>3} 1d03 1d03 1d03 ac60 1d030000 1d03 ac60 1d03 ac60 - {c=>5,a=>6,b=>1} 0e05 0e05 0e05 c4a0 0e050000 0e05 c4a0 0e05 c4a0 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>2,a=>2,b=>6,d=>2} 3212 3212 3212 5848 32120000 3212 5848 3212 5848 - {c=>3,a=>2,b=>5,d=>7} 2a3b 2a3b 2a3b 547c 2a3b0000 2a3b 547c 2a3b 547c - {c=>2,a=>6,b=>7,d=>2} 3e12 3e12 3e12 dc48 3e120000 3e12 dc48 3e12 dc48 - {c=>7,a=>6,b=>6,d=>4} 3627 3627 3627 d8f0 36270000 3627 d8f0 3627 d8f0 - {c=>7,a=>2,b=>2,d=>7} 123f 123f 123f 48fc 123f0000 123f 48fc 123f 48fc = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>6,c=>0,a=>7,b=>2,d=>5} 172806 172806 172806 e814c0 17280600 172806 e814c0 172806 e814c0 - {e=>0,c=>7,a=>1,b=>5,d=>5} 292f00 292f00 292f00 34f400 292f0000 292f00 34f400 292f00 34f400 - {e=>7,c=>4,a=>7,b=>7,d=>7} 3f3c07 3f3c07 3f3c07 fc9ce0 3f3c0700 3f3c07 fc9ce0 3f3c07 fc9ce0 - {e=>2,c=>2,a=>2,b=>6,d=>6} 323202 323202 323202 585840 32320200 323202 585840 323202 585840 - {e=>0,c=>5,a=>6,b=>6,d=>5} 362d00 362d00 362d00 d8b400 362d0000 362d00 d8b400 362d00 d8b400 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>2,c=>2,a=>0,b=>7,d=>5,f=>4} 382a22 382a22 382a22 1c5450 382a2200 382a22 1c5450 382a22 1c5450 - {e=>1,c=>5,a=>1,b=>5,d=>5,f=>5} 292d29 292d29 292d29 34b434 292d2900 292d29 34b434 292d29 34b434 - {e=>5,c=>7,a=>1,b=>7,d=>6,f=>4} 393725 393725 393725 3cf8b0 39372500 393725 3cf8b0 393725 3cf8b0 - {e=>5,c=>6,a=>6,b=>1,d=>4,f=>1} 0e260d 0e260d 0e260d c4d0a4 0e260d00 0e260d c4d0a4 0e260d c4d0a4 - {e=>6,c=>2,a=>7,b=>1,d=>6,f=>3} 0f321e 0f321e 0f321e e458cc 0f321e00 0f321e e458cc 0f321e e458cc = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>7,c=>4,a=>5,g=>0,b=>1,d=>1,f=>1} 0d0c0f00 0d0c0f00 0d0c0f00 a484e400 0d0c0f00 0d0c0f00 a484e400 0d0c0f00 a484e400 - {e=>3,c=>4,a=>6,g=>2,b=>4,d=>2,f=>0} 26140302 26140302 26140302 d0886040 26140302 26140302 d0886040 26140302 d0886040 - {e=>2,c=>4,a=>7,g=>6,b=>6,d=>4,f=>6} 37243206 37243206 37243206 f89058c0 37243206 37243206 f89058c0 37243206 f89058c0 - {e=>0,c=>6,a=>3,g=>0,b=>1,d=>6,f=>1} 0b360800 0b360800 0b360800 64d80400 0b360800 0b360800 64d80400 0b360800 64d80400 - {e=>3,c=>7,a=>0,g=>4,b=>4,d=>1,f=>4} 200f2304 200f2304 200f2304 10e47080 200f2304 200f2304 10e47080 200f2304 10e47080 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>1,a=>1,d=>4,c=>6,h=>5,b=>3,g=>5,f=>5} 1926292d 1926292d 1926292d 2cd034b4 1926292d 1926292d 2cd034b4 1926292d 2cd034b4 - {e=>7,a=>4,d=>6,c=>1,h=>0,b=>0,g=>0,f=>3} 04311f00 04311f00 04311f00 8038ec00 04311f00 04311f00 8038ec00 04311f00 8038ec00 - {e=>2,a=>6,d=>4,c=>1,h=>5,b=>4,g=>6,f=>3} 26211a2e 26211a2e 26211a2e d0304cd4 26211a2e 26211a2e d0304cd4 26211a2e d0304cd4 - {e=>1,a=>2,d=>6,c=>2,h=>6,b=>4,g=>3,f=>0} 22320133 22320133 22320133 50582078 22320133 22320133 50582078 22320133 50582078 - {e=>0,a=>1,d=>0,c=>3,h=>5,b=>3,g=>4,f=>5} 1903282c 1903282c 1903282c 2c601494 1903282c 1903282c 2c601494 1903282c 2c601494 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>6,d=>7,c=>0,h=>5,b=>3,g=>6,f=>2,i=>5} 1e38142e05 1e38142e05 1e38142e05 cc1c88d4a0 1e38142e05000000 1e38142e05 cc1c88d4a0 1e38142e05 cc1c88d4a0 - {e=>7,a=>3,d=>1,c=>0,h=>0,b=>2,g=>5,f=>6,i=>6} 1308370506 1308370506 1308370506 6804f8a0c0 1308370506000000 1308370506 6804f8a0c0 1308370506 6804f8a0c0 - {e=>3,a=>2,d=>4,c=>3,h=>6,b=>2,g=>7,f=>7,i=>6} 12233b3706 12233b3706 12233b3706 48707cf8c0 12233b3706000000 12233b3706 48707cf8c0 12233b3706 48707cf8c0 - {e=>0,a=>3,d=>7,c=>1,h=>7,b=>7,g=>0,f=>4,i=>0} 3b39203800 3b39203800 3b39203800 7c3c101c00 3b39203800000000 3b39203800 7c3c101c00 3b39203800 7c3c101c00 - {e=>5,a=>7,d=>0,c=>1,h=>3,b=>7,g=>3,f=>6,i=>1} 3f01351b01 3f01351b01 3f01351b01 fc20b86c20 3f01351b01000000 3f01351b01 fc20b86c20 3f01351b01 fc20b86c20 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>3,a=>6,d=>1,j=>4,c=>0,h=>4,b=>1,g=>5,f=>4,i=>1} 0e08232521 0e08232521 0e08232521 c40470b030 0e08232521000000 0e08232521 c40470b030 0e08232521 c40470b030 - {e=>6,a=>1,d=>1,j=>1,c=>2,h=>3,b=>4,g=>0,f=>5,i=>1} 210a2e1809 210a2e1809 210a2e1809 3044d40c24 210a2e1809000000 210a2e1809 3044d40c24 210a2e1809 3044d40c24 - {e=>5,a=>2,d=>6,j=>3,c=>7,h=>0,b=>7,g=>1,f=>7,i=>3} 3a373d011b 3a373d011b 3a373d011b 5cf8bc206c 3a373d011b000000 3a373d011b 5cf8bc206c 3a373d011b 5cf8bc206c - {e=>6,a=>1,d=>3,j=>3,c=>5,h=>6,b=>1,g=>5,f=>3,i=>7} 091d1e351f 091d1e351f 091d1e351f 24acccb8ec 091d1e351f000000 091d1e351f 24acccb8ec 091d1e351f 24acccb8ec - {e=>4,a=>0,d=>5,j=>4,c=>5,h=>2,b=>1,g=>1,f=>1,i=>2} 082d0c1122 082d0c1122 082d0c1122 04b4842850 082d0c1122000000 082d0c1122 04b4842850 082d0c1122 04b4842850 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>0,a=>4,d=>4,j=>1,c=>3,k=>2,h=>3,b=>4,g=>2,f=>6,i=>2} 2423301a0a02 2423301a0a02 2423301a0a02 9070184c4440 2423301a0a020000 2423301a0a02 9070184c4440 2423301a0a02 9070184c4440 - {e=>1,a=>6,d=>5,j=>4,c=>0,k=>1,h=>7,b=>1,g=>4,f=>7,i=>2} 0e28393c2201 0e28393c2201 0e28393c2201 c4143c9c5020 0e28393c22010000 0e28393c2201 c4143c9c5020 0e28393c2201 c4143c9c5020 - {e=>6,a=>3,d=>6,j=>5,c=>4,k=>1,h=>2,b=>1,g=>2,f=>2,i=>7} 0b3416122f01 0b3416122f01 0b3416122f01 6498c848f420 0b3416122f010000 0b3416122f01 6498c848f420 0b3416122f01 6498c848f420 - {e=>4,a=>2,d=>5,j=>1,c=>2,k=>7,h=>0,b=>0,g=>1,f=>0,i=>4} 022a04010c07 022a04010c07 022a04010c07 4054802084e0 022a04010c070000 022a04010c07 4054802084e0 022a04010c07 4054802084e0 - {e=>5,a=>0,d=>0,j=>4,c=>6,k=>4,h=>1,b=>3,g=>4,f=>2,i=>2} 1806150c2204 1806150c2204 1806150c2204 0cc0a8845080 1806150c22040000 1806150c2204 0cc0a8845080 1806150c2204 0cc0a8845080 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>1,a=>4,d=>2,j=>3,l=>2,c=>1,k=>0,h=>2,b=>4,g=>2,f=>4,i=>7} 241121121f10 241121121f10 241121121f10 90283048ec08 241121121f100000 241121121f10 90283048ec08 241121121f10 90283048ec08 - {e=>3,a=>2,d=>1,j=>0,l=>7,c=>0,k=>0,h=>5,b=>2,g=>6,f=>1,i=>0} 12080b2e0038 12080b2e0038 12080b2e0038 480464d4001c 12080b2e00380000 12080b2e0038 480464d4001c 12080b2e0038 480464d4001c - {e=>7,a=>6,d=>5,j=>3,l=>2,c=>7,k=>0,h=>4,b=>0,g=>7,f=>1,i=>5} 062f0f271d10 062f0f271d10 062f0f271d10 c0f4e4f0ac08 062f0f271d100000 062f0f271d10 c0f4e4f0ac08 062f0f271d10 c0f4e4f0ac08 - {e=>0,a=>3,d=>3,j=>3,l=>1,c=>5,k=>4,h=>3,b=>4,g=>3,f=>5,i=>7} 231d281b1f0c 231d281b1f0c 231d281b1f0c 70ac146cec84 231d281b1f0c0000 231d281b1f0c 70ac146cec84 231d281b1f0c 70ac146cec84 - {e=>2,a=>2,d=>6,j=>1,l=>1,c=>6,k=>7,h=>3,b=>7,g=>5,f=>4,i=>0} 3a36221d080f 3a36221d080f 3a36221d080f 5cd850ac04e4 3a36221d080f0000 3a36221d080f 5cd850ac04e4 3a36221d080f 5cd850ac04e4 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>3,a=>6,m=>7,d=>3,j=>4,l=>4,c=>2,k=>2,h=>5,b=>7,g=>6,f=>2,i=>3} 3e1a132e232207 3e1a132e232207 3e1a132e232207 dc4c68d47050e0 3e1a132e23220700 3e1a132e232207 dc4c68d47050e0 3e1a132e232207 dc4c68d47050e0 - {e=>2,a=>3,m=>0,d=>7,j=>7,l=>0,c=>2,k=>3,h=>1,b=>2,g=>1,f=>7,i=>7} 133a3a093f0300 133a3a093f0300 133a3a093f0300 685c5c24fc6000 133a3a093f030000 133a3a093f0300 685c5c24fc6000 133a3a093f0300 685c5c24fc6000 - {e=>3,a=>7,m=>0,d=>4,j=>6,l=>5,c=>1,k=>6,h=>2,b=>5,g=>7,f=>5,i=>1} 2f212b17312e00 2f212b17312e00 2f212b17312e00 f43074e838d400 2f212b17312e0000 2f212b17312e00 f43074e838d400 2f212b17312e00 f43074e838d400 - {e=>6,a=>5,m=>3,d=>0,j=>1,l=>5,c=>1,k=>3,h=>0,b=>6,g=>4,f=>4,i=>2} 350126040a2b03 350126040a2b03 350126040a2b03 b820d080447460 350126040a2b0300 350126040a2b03 b820d080447460 350126040a2b03 b820d080447460 - {e=>3,a=>3,m=>1,d=>1,j=>3,l=>4,c=>1,k=>6,h=>6,b=>1,g=>4,f=>1,i=>4} 0b090b341c2601 0b090b341c2601 0b090b341c2601 642464988cd020 0b090b341c260100 0b090b341c2601 642464988cd020 0b090b341c2601 642464988cd020 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; short n; }; - {e=>1,n=>106,a=>2,m=>4,d=>4,j=>1,l=>4,c=>1,k=>6,h=>1,b=>0,g=>4,f=>7,i=>1} 0221390c092604006a00 0221390c092604006a00 0221390c092604006a00 40303c8424d08000006a 0221390c092604006a000000 0221390c092604006a00 40303c8424d08000006a 0221390c092604006a00 40303c8424d08000006a - {e=>4,n=>74,a=>5,m=>5,d=>7,j=>0,l=>4,c=>0,k=>0,h=>4,b=>7,g=>2,f=>7,i=>5} 3d383c22052005004a00 3d383c22052005004a00 3d383c22052005004a00 bc1c9c50a010a000004a 3d383c22052005004a000000 3d383c22052005004a00 bc1c9c50a010a000004a 3d383c22052005004a00 bc1c9c50a010a000004a - {e=>7,n=>-6,a=>5,m=>1,d=>2,j=>6,l=>5,c=>2,k=>2,h=>7,b=>2,g=>0,f=>0,i=>7} 15120738372a0100faff 15120738372a0100faff 15120738372a0100faff a848e01cf8542000fffa 15120738372a0100faff0000 15120738372a0100faff a848e01cf8542000fffa 15120738372a0100faff a848e01cf8542000fffa - {e=>7,n=>-54,a=>2,m=>1,d=>4,j=>7,l=>3,c=>1,k=>2,h=>1,b=>2,g=>0,f=>5,i=>3} 12212f083b1a0100caff 12212f083b1a0100caff 12212f083b1a0100caff 4830f4047c4c2000ffca 12212f083b1a0100caff0000 12212f083b1a0100caff 4830f4047c4c2000ffca 12212f083b1a0100caff 4830f4047c4c2000ffca - {e=>6,n=>118,a=>5,m=>6,d=>0,j=>7,l=>4,c=>2,k=>6,h=>3,b=>6,g=>4,f=>7,i=>0} 35023e1c382606007600 35023e1c382606007600 35023e1c382606007600 b840dc8c1cd0c0000076 35023e1c3826060076000000 35023e1c382606007600 b840dc8c1cd0c0000076 35023e1c382606007600 b840dc8c1cd0c0000076 = struct uch_wrap { char a; unsigned char b:3; }; - {a=>-70,b=>6} ba06 ba06 ba06 bac0 ba060000 ba06 bac0 ba06 bac0 - {a=>-97,b=>5} 9f05 9f05 9f05 9fa0 9f050000 9f05 9fa0 9f05 9fa0 - {a=>-15,b=>0} f100 f100 f100 f100 f1000000 f100 f100 f100 f100 - {a=>-44,b=>0} d400 d400 d400 d400 d4000000 d400 d400 d400 d400 - {a=>102,b=>7} 6607 6607 6607 66e0 66070000 6607 66e0 6607 66e0 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>32,b=>5} 2035 2035 2035 20b8 20350000 2035 20b8 2035 20b8 - {c=>5,a=>-69,b=>3} bb2b bb2b bb2b bb74 bb2b0000 bb2b bb74 bb2b bb74 - {c=>3,a=>90,b=>2} 5a1a 5a1a 5a1a 5a4c 5a1a0000 5a1a 5a4c 5a1a 5a4c - {c=>5,a=>80,b=>6} 502e 502e 502e 50d4 502e0000 502e 50d4 502e 50d4 - {c=>6,a=>117,b=>3} 7533 7533 7533 7578 75330000 7533 7578 7533 7578 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>1,a=>4,b=>6,d=>2} 040e02 040e02 040e02 04c440 040e0200 040e02 04c440 040e02 04c440 - {c=>7,a=>-20,b=>1,d=>3} ec3903 ec3903 ec3903 ec3c60 ec390300 ec3903 ec3c60 ec3903 ec3c60 - {c=>2,a=>127,b=>1,d=>3} 7f1103 7f1103 7f1103 7f2860 7f110300 7f1103 7f2860 7f1103 7f2860 - {c=>6,a=>-48,b=>4,d=>4} d03404 d03404 d03404 d09880 d0340400 d03404 d09880 d03404 d09880 - {c=>4,a=>-78,b=>2,d=>5} b22205 b22205 b22205 b250a0 b2220500 b22205 b250a0 b22205 b250a0 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>3,c=>0,a=>120,b=>7,d=>7} 78071f 78071f 78071f 78e0ec 78071f00 78071f 78e0ec 78071f 78e0ec - {e=>6,c=>6,a=>-75,b=>2,d=>3} b53233 b53233 b53233 b55878 b5323300 b53233 b55878 b53233 b55878 - {e=>3,c=>2,a=>-61,b=>6,d=>7} c3161f c3161f c3161f c3c8ec c3161f00 c3161f c3c8ec c3161f c3c8ec - {e=>1,c=>0,a=>59,b=>7,d=>2} 3b070a 3b070a 3b070a 3be044 3b070a00 3b070a 3be044 3b070a 3be044 - {e=>2,c=>4,a=>61,b=>4,d=>6} 3d2416 3d2416 3d2416 3d90c8 3d241600 3d2416 3d90c8 3d2416 3d90c8 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>1,c=>4,a=>48,b=>5,d=>6,f=>3} 30250e03 30250e03 30250e03 30b0c460 30250e03 30250e03 30b0c460 30250e03 30b0c460 - {e=>6,c=>0,a=>-47,b=>4,d=>5,f=>3} d1043503 d1043503 d1043503 d180b860 d1043503 d1043503 d180b860 d1043503 d180b860 - {e=>5,c=>1,a=>-5,b=>4,d=>1,f=>0} fb0c2900 fb0c2900 fb0c2900 fb843400 fb0c2900 fb0c2900 fb843400 fb0c2900 fb843400 - {e=>6,c=>2,a=>106,b=>7,d=>3,f=>4} 6a173304 6a173304 6a173304 6ae87880 6a173304 6a173304 6ae87880 6a173304 6ae87880 - {e=>5,c=>5,a=>-105,b=>3,d=>6,f=>3} 972b2e03 972b2e03 972b2e03 9774d460 972b2e03 972b2e03 9774d460 972b2e03 9774d460 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>4,c=>1,a=>71,g=>5,b=>0,d=>7,f=>0} 47082728 47082728 47082728 4704f014 47082728 47082728 4704f014 47082728 4704f014 - {e=>6,c=>7,a=>36,g=>5,b=>1,d=>5,f=>4} 2439352c 2439352c 2439352c 243cb894 2439352c 2439352c 243cb894 2439352c 243cb894 - {e=>3,c=>5,a=>-22,g=>5,b=>5,d=>4,f=>1} ea2d1c29 ea2d1c29 ea2d1c29 eab48c34 ea2d1c29 ea2d1c29 eab48c34 ea2d1c29 eab48c34 - {e=>6,c=>2,a=>43,g=>6,b=>0,d=>2,f=>0} 2b103230 2b103230 2b103230 2b085818 2b103230 2b103230 2b085818 2b103230 2b085818 - {e=>0,c=>1,a=>-119,g=>0,b=>4,d=>4,f=>1} 890c0401 890c0401 890c0401 89848020 890c0401 890c0401 89848020 890c0401 89848020 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>6,a=>88,d=>3,c=>5,h=>1,b=>3,g=>7,f=>2} 582b333a01 582b333a01 582b333a01 5874785c20 582b333a01000000 582b333a01 5874785c20 582b333a01 5874785c20 - {e=>3,a=>-69,d=>7,c=>6,h=>7,b=>3,g=>7,f=>4} bb331f3c07 bb331f3c07 bb331f3c07 bb78ec9ce0 bb331f3c07000000 bb331f3c07 bb78ec9ce0 bb331f3c07 bb78ec9ce0 - {e=>7,a=>-30,d=>6,c=>4,h=>5,b=>0,g=>7,f=>3} e2203e3b05 e2203e3b05 e2203e3b05 e210dc7ca0 e2203e3b05000000 e2203e3b05 e210dc7ca0 e2203e3b05 e210dc7ca0 - {e=>6,a=>-16,d=>6,c=>7,h=>5,b=>2,g=>1,f=>6} f03a360e05 f03a360e05 f03a360e05 f05cd8c4a0 f03a360e05000000 f03a360e05 f05cd8c4a0 f03a360e05 f05cd8c4a0 - {e=>1,a=>72,d=>2,c=>1,h=>1,b=>5,g=>1,f=>6} 480d0a0e01 480d0a0e01 480d0a0e01 48a444c420 480d0a0e01000000 480d0a0e01 48a444c420 480d0a0e01 48a444c420 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>2,a=>-92,d=>4,c=>2,h=>6,b=>6,g=>0,f=>3,i=>7} a41614033e a41614033e a41614033e a4c88860dc a41614033e000000 a41614033e a4c88860dc a41614033e a4c88860dc - {e=>1,a=>50,d=>4,c=>7,h=>0,b=>5,g=>6,f=>2,i=>0} 323d0c3200 323d0c3200 323d0c3200 32bc845800 323d0c3200000000 323d0c3200 32bc845800 323d0c3200 32bc845800 - {e=>7,a=>-126,d=>7,c=>3,h=>5,b=>2,g=>0,f=>0,i=>4} 821a3f0025 821a3f0025 821a3f0025 824cfc00b0 821a3f0025000000 821a3f0025 824cfc00b0 821a3f0025 824cfc00b0 - {e=>6,a=>123,d=>7,c=>4,h=>6,b=>0,g=>3,f=>6,i=>4} 7b20371e26 7b20371e26 7b20371e26 7b10f8ccd0 7b20371e26000000 7b20371e26 7b10f8ccd0 7b20371e26 7b10f8ccd0 - {e=>5,a=>21,d=>0,c=>7,h=>1,b=>3,g=>0,f=>7,i=>5} 153b280729 153b280729 153b280729 157c14e034 153b280729000000 153b280729 157c14e034 153b280729 157c14e034 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>1,a=>79,d=>6,j=>1,c=>6,h=>0,b=>1,g=>1,f=>5,i=>4} 4f310e0d2001 4f310e0d2001 4f310e0d2001 4f38c4a41020 4f310e0d20010000 4f310e0d2001 4f38c4a41020 4f310e0d2001 4f38c4a41020 - {e=>5,a=>70,d=>7,j=>4,c=>1,h=>1,b=>4,g=>2,f=>5,i=>2} 460c2f151104 460c2f151104 460c2f151104 4684f4a82880 460c2f1511040000 460c2f151104 4684f4a82880 460c2f151104 4684f4a82880 - {e=>2,a=>90,d=>2,j=>3,c=>7,h=>2,b=>6,g=>4,f=>7,i=>4} 5a3e12272203 5a3e12272203 5a3e12272203 5adc48f05060 5a3e122722030000 5a3e12272203 5adc48f05060 5a3e12272203 5adc48f05060 - {e=>6,a=>48,d=>0,j=>3,c=>5,h=>3,b=>5,g=>6,f=>5,i=>3} 302d30351b03 302d30351b03 302d30351b03 30b418b86c60 302d30351b030000 302d30351b03 30b418b86c60 302d30351b03 30b418b86c60 - {e=>6,a=>-79,d=>1,j=>4,c=>1,h=>6,b=>7,g=>6,f=>4,i=>5} b10f31342e04 b10f31342e04 b10f31342e04 b1e43898d480 b10f31342e040000 b10f31342e04 b1e43898d480 b10f31342e04 b1e43898d480 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>3,a=>33,d=>5,j=>0,c=>5,k=>3,h=>3,b=>4,g=>0,f=>2,i=>4} 212c1d022318 212c1d022318 212c1d022318 2194ac40700c 212c1d0223180000 212c1d022318 2194ac40700c 212c1d022318 2194ac40700c - {e=>1,a=>64,d=>0,j=>2,c=>1,k=>7,h=>7,b=>1,g=>3,f=>0,i=>6} 40090818373a 40090818373a 40090818373a 4024040cf85c 40090818373a0000 40090818373a 4024040cf85c 40090818373a 4024040cf85c - {e=>0,a=>121,d=>0,j=>2,c=>3,k=>3,h=>1,b=>5,g=>0,f=>4,i=>5} 791d0004291a 791d0004291a 791d0004291a 79ac0080344c 791d0004291a0000 791d0004291a 79ac0080344c 791d0004291a 79ac0080344c - {e=>7,a=>-117,d=>1,j=>1,c=>6,k=>5,h=>1,b=>3,g=>1,f=>5,i=>4} 8b33390d2129 8b33390d2129 8b33390d2129 8b783ca43034 8b33390d21290000 8b33390d2129 8b783ca43034 8b33390d2129 8b783ca43034 - {e=>5,a=>105,d=>3,j=>2,c=>3,k=>7,h=>6,b=>3,g=>5,f=>1,i=>1} 691b2b290e3a 691b2b290e3a 691b2b290e3a 696c7434c45c 691b2b290e3a0000 691b2b290e3a 696c7434c45c 691b2b290e3a 696c7434c45c = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>1,a=>-36,d=>3,j=>4,l=>1,c=>5,k=>1,h=>3,b=>7,g=>3,f=>0,i=>2} dc2f0b18130c01 dc2f0b18130c01 dc2f0b18130c01 dcf4640c688420 dc2f0b18130c0100 dc2f0b18130c01 dcf4640c688420 dc2f0b18130c01 dcf4640c688420 - {e=>5,a=>-81,d=>1,j=>6,l=>1,c=>3,k=>7,h=>3,b=>5,g=>3,f=>5,i=>1} af1d291d0b3e01 af1d291d0b3e01 af1d291d0b3e01 afac34ac64dc20 af1d291d0b3e0100 af1d291d0b3e01 afac34ac64dc20 af1d291d0b3e01 afac34ac64dc20 - {e=>0,a=>-44,d=>7,j=>3,l=>5,c=>3,k=>2,h=>2,b=>2,g=>3,f=>0,i=>6} d41a0718321305 d41a0718321305 d41a0718321305 d44ce00c5868a0 d41a071832130500 d41a0718321305 d44ce00c5868a0 d41a0718321305 d44ce00c5868a0 - {e=>1,a=>-34,d=>1,j=>6,l=>7,c=>6,k=>0,h=>6,b=>6,g=>5,f=>2,i=>5} de36092a2e0607 de36092a2e0607 de36092a2e0607 ded82454d4c0e0 de36092a2e060700 de36092a2e0607 ded82454d4c0e0 de36092a2e0607 ded82454d4c0e0 - {e=>0,a=>57,d=>4,j=>0,l=>4,c=>6,k=>1,h=>2,b=>2,g=>7,f=>6,i=>2} 3932043e120804 3932043e120804 3932043e120804 395880dc480480 3932043e12080400 3932043e120804 395880dc480480 3932043e120804 395880dc480480 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>7,a=>-101,m=>1,d=>6,j=>3,l=>6,c=>4,k=>6,h=>5,b=>1,g=>1,f=>6,i=>0} 9b213e0e05330e 9b213e0e05330e 9b213e0e05330e 9b30dcc4a078c4 9b213e0e05330e00 9b213e0e05330e 9b30dcc4a078c4 9b213e0e05330e 9b30dcc4a078c4 - {e=>3,a=>-11,m=>4,d=>2,j=>6,l=>7,c=>6,k=>4,h=>7,b=>2,g=>1,f=>4,i=>3} f5321a0c1f2627 f5321a0c1f2627 f5321a0c1f2627 f5584c84ecd0f0 f5321a0c1f262700 f5321a0c1f2627 f5584c84ecd0f0 f5321a0c1f2627 f5584c84ecd0f0 - {e=>0,a=>47,m=>2,d=>7,j=>5,l=>2,c=>2,k=>3,h=>4,b=>5,g=>5,f=>1,i=>7} 2f1507293c1d12 2f1507293c1d12 2f1507293c1d12 2fa8e0349cac48 2f1507293c1d1200 2f1507293c1d12 2fa8e0349cac48 2f1507293c1d12 2fa8e0349cac48 - {e=>1,a=>-113,m=>7,d=>2,j=>1,l=>6,c=>7,k=>4,h=>7,b=>5,g=>0,f=>6,i=>7} 8f3d0a063f213e 8f3d0a063f213e 8f3d0a063f213e 8fbc44c0fc30dc 8f3d0a063f213e00 8f3d0a063f213e 8fbc44c0fc30dc 8f3d0a063f213e 8fbc44c0fc30dc - {e=>2,a=>19,m=>6,d=>7,j=>5,l=>4,c=>3,k=>7,h=>4,b=>1,g=>4,f=>0,i=>3} 131917201c3d34 131917201c3d34 131917201c3d34 132ce8108cbc98 131917201c3d3400 131917201c3d34 132ce8108cbc98 131917201c3d34 132ce8108cbc98 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>6,n=>5,a=>-111,m=>0,d=>3,j=>5,l=>6,c=>7,k=>5,h=>6,b=>0,g=>4,f=>0,i=>6} 91383320362d0605 91383320362d0605 91383320362d0605 911c7810d8b4c0a0 91383320362d0605 91383320362d0605 911c7810d8b4c0a0 91383320362d0605 911c7810d8b4c0a0 - {e=>7,n=>4,a=>-30,m=>6,d=>4,j=>3,l=>0,c=>4,k=>4,h=>1,b=>7,g=>7,f=>5,i=>0} e2273c3d01233004 e2273c3d01233004 e2273c3d01233004 e2f09cbc20701880 e2273c3d01233004 e2273c3d01233004 e2f09cbc20701880 e2273c3d01233004 e2f09cbc20701880 - {e=>0,n=>1,a=>22,m=>5,d=>7,j=>5,l=>0,c=>0,k=>1,h=>5,b=>3,g=>2,f=>7,i=>3} 160307171d0d2801 160307171d0d2801 160307171d0d2801 1660e0e8aca41420 160307171d0d2801 160307171d0d2801 1660e0e8aca41420 160307171d0d2801 1660e0e8aca41420 - {e=>4,n=>5,a=>4,m=>0,d=>1,j=>2,l=>4,c=>1,k=>3,h=>0,b=>0,g=>0,f=>7,i=>6} 04082107301a0405 04082107301a0405 04082107301a0405 040430e0184c80a0 04082107301a0405 04082107301a0405 040430e0184c80a0 04082107301a0405 040430e0184c80a0 - {e=>2,n=>3,a=>-83,m=>6,d=>6,j=>6,l=>6,c=>0,k=>1,h=>2,b=>6,g=>0,f=>6,i=>5} ad0616062a0e3603 ad0616062a0e3603 ad0616062a0e3603 adc0c8c054c4d860 ad0616062a0e3603 ad0616062a0e3603 adc0c8c054c4d860 ad0616062a0e3603 adc0c8c054c4d860 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>0,n=>2,a=>-105,m=>1,d=>3,j=>0,l=>1,c=>6,k=>1,h=>1,b=>2,g=>7,f=>2,o=>-102,i=>2} 9732033a110809029aff 9732033a110809029aff 9732033a110809029aff 9758605c28042440ff9a 9732033a110809029aff0000 9732033a110809029aff 9758605c28042440ff9a 9732033a110809029aff 9758605c28042440ff9a - {e=>1,n=>2,a=>-82,m=>2,d=>4,j=>2,l=>6,c=>0,k=>3,h=>1,b=>6,g=>6,f=>3,o=>29,i=>2} ae060c33111a16021d00 ae060c33111a16021d00 ae060c33111a16021d00 aec08478284cc840001d ae060c33111a16021d000000 ae060c33111a16021d00 aec08478284cc840001d ae060c33111a16021d00 aec08478284cc840001d - {e=>5,n=>7,a=>-14,m=>4,d=>0,j=>7,l=>1,c=>2,k=>7,h=>7,b=>4,g=>1,f=>5,o=>-24,i=>2} f214280d173f2107e8ff f214280d173f2107e8ff f214280d173f2107e8ff f28814a4e8fc30e0ffe8 f214280d173f2107e8ff0000 f214280d173f2107e8ff f28814a4e8fc30e0ffe8 f214280d173f2107e8ff f28814a4e8fc30e0ffe8 - {e=>0,n=>6,a=>96,m=>7,d=>3,j=>0,l=>3,c=>3,k=>1,h=>3,b=>6,g=>6,f=>7,o=>81,i=>2} 601e033713083b065100 601e033713083b065100 601e033713083b065100 60cc60f868047cc00051 601e033713083b0651000000 601e033713083b065100 60cc60f868047cc00051 601e033713083b065100 60cc60f868047cc00051 - {e=>6,n=>2,a=>-36,m=>0,d=>2,j=>6,l=>5,c=>4,k=>0,h=>3,b=>6,g=>6,f=>5,o=>-17,i=>5} dc2632352b060502efff dc2632352b060502efff dc2632352b060502efff dcd058b874c0a040ffef dc2632352b060502efff0000 dc2632352b060502efff dcd058b874c0a040ffef dc2632352b060502efff dcd058b874c0a040ffef = struct uch_wrap { short a; unsigned char b:3; }; - {a=>102,b=>2} 66000200 66000200 66000200 00664000 66000200 66000200 00664000 66000200 00664000 - {a=>39,b=>4} 27000400 27000400 27000400 00278000 27000400 27000400 00278000 27000400 00278000 - {a=>-119,b=>5} 89ff0500 89ff0500 89ff0500 ff89a000 89ff0500 89ff0500 ff89a000 89ff0500 ff89a000 - {a=>69,b=>7} 45000700 45000700 45000700 0045e000 45000700 45000700 0045e000 45000700 0045e000 - {a=>46,b=>7} 2e000700 2e000700 2e000700 002ee000 2e000700 2e000700 002ee000 2e000700 002ee000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; }; - {c=>2,a=>-97,b=>2} 9fff1200 9fff1200 9fff1200 ff9f4800 9fff1200 9fff1200 ff9f4800 9fff1200 ff9f4800 - {c=>5,a=>-16,b=>5} f0ff2d00 f0ff2d00 f0ff2d00 fff0b400 f0ff2d00 f0ff2d00 fff0b400 f0ff2d00 fff0b400 - {c=>5,a=>100,b=>5} 64002d00 64002d00 64002d00 0064b400 64002d00 64002d00 0064b400 64002d00 0064b400 - {c=>1,a=>117,b=>2} 75000a00 75000a00 75000a00 00754400 75000a00 75000a00 00754400 75000a00 00754400 - {c=>1,a=>-105,b=>4} 97ff0c00 97ff0c00 97ff0c00 ff978400 97ff0c00 97ff0c00 ff978400 97ff0c00 ff978400 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>2,a=>7,b=>5,d=>3} 07001503 07001503 07001503 0007a860 07001503 07001503 0007a860 07001503 0007a860 - {c=>7,a=>-90,b=>4,d=>1} a6ff3c01 a6ff3c01 a6ff3c01 ffa69c20 a6ff3c01 a6ff3c01 ffa69c20 a6ff3c01 ffa69c20 - {c=>1,a=>61,b=>0,d=>2} 3d000802 3d000802 3d000802 003d0440 3d000802 3d000802 003d0440 3d000802 003d0440 - {c=>1,a=>36,b=>7,d=>2} 24000f02 24000f02 24000f02 0024e440 24000f02 24000f02 0024e440 24000f02 0024e440 - {c=>4,a=>-76,b=>5,d=>0} b4ff2500 b4ff2500 b4ff2500 ffb4b000 b4ff2500 b4ff2500 ffb4b000 b4ff2500 ffb4b000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>4,c=>2,a=>-103,b=>0,d=>3} 99ff1023 99ff1023 99ff1023 ff990870 99ff1023 99ff1023 ff990870 99ff1023 ff990870 - {e=>2,c=>0,a=>17,b=>5,d=>5} 11000515 11000515 11000515 0011a0a8 11000515 11000515 0011a0a8 11000515 0011a0a8 - {e=>5,c=>5,a=>27,b=>2,d=>1} 1b002a29 1b002a29 1b002a29 001b5434 1b002a29 1b002a29 001b5434 1b002a29 001b5434 - {e=>1,c=>5,a=>-77,b=>3,d=>5} b3ff2b0d b3ff2b0d b3ff2b0d ffb374a4 b3ff2b0d b3ff2b0d ffb374a4 b3ff2b0d ffb374a4 - {e=>2,c=>0,a=>-112,b=>4,d=>1} 90ff0411 90ff0411 90ff0411 ff908028 90ff0411 90ff0411 ff908028 90ff0411 ff908028 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>3,c=>1,a=>61,b=>4,d=>2,f=>2} 3d000c1a0200 3d000c1a0200 3d000c1a0200 003d844c4000 3d000c1a02000000 3d000c1a0200 003d844c4000 3d000c1a0200 003d844c4000 - {e=>1,c=>7,a=>-8,b=>0,d=>6,f=>0} f8ff380e0000 f8ff380e0000 f8ff380e0000 fff81cc40000 f8ff380e00000000 f8ff380e0000 fff81cc40000 f8ff380e0000 fff81cc40000 - {e=>2,c=>6,a=>-96,b=>0,d=>5,f=>7} a0ff30150700 a0ff30150700 a0ff30150700 ffa018a8e000 a0ff301507000000 a0ff30150700 ffa018a8e000 a0ff30150700 ffa018a8e000 - {e=>3,c=>2,a=>122,b=>5,d=>0,f=>0} 7a0015180000 7a0015180000 7a0015180000 007aa80c0000 7a00151800000000 7a0015180000 007aa80c0000 7a0015180000 007aa80c0000 - {e=>3,c=>6,a=>-122,b=>0,d=>1,f=>2} 86ff30190200 86ff30190200 86ff30190200 ff86182c4000 86ff301902000000 86ff30190200 ff86182c4000 86ff30190200 ff86182c4000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>1,c=>5,a=>-86,g=>7,b=>7,d=>7,f=>6} aaff2f0f3e00 aaff2f0f3e00 aaff2f0f3e00 ffaaf4e4dc00 aaff2f0f3e000000 aaff2f0f3e00 ffaaf4e4dc00 aaff2f0f3e00 ffaaf4e4dc00 - {e=>5,c=>7,a=>78,g=>2,b=>1,d=>6,f=>1} 4e00392e1100 4e00392e1100 4e00392e1100 004e3cd42800 4e00392e11000000 4e00392e1100 004e3cd42800 4e00392e1100 004e3cd42800 - {e=>4,c=>0,a=>-57,g=>4,b=>2,d=>4,f=>1} c7ff02242100 c7ff02242100 c7ff02242100 ffc740903000 c7ff022421000000 c7ff02242100 ffc740903000 c7ff02242100 ffc740903000 - {e=>6,c=>6,a=>36,g=>3,b=>1,d=>5,f=>3} 240031351b00 240031351b00 240031351b00 002438b86c00 240031351b000000 240031351b00 002438b86c00 240031351b00 002438b86c00 - {e=>5,c=>6,a=>-105,g=>2,b=>7,d=>7,f=>0} 97ff372f1000 97ff372f1000 97ff372f1000 ff97f8f40800 97ff372f10000000 97ff372f1000 ff97f8f40800 97ff372f1000 ff97f8f40800 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>2,a=>103,d=>5,c=>5,h=>6,b=>3,g=>2,f=>1} 67002b151106 67002b151106 67002b151106 006774a828c0 67002b1511060000 67002b151106 006774a828c0 67002b151106 006774a828c0 - {e=>1,a=>-88,d=>4,c=>6,h=>1,b=>5,g=>2,f=>3} a8ff350c1301 a8ff350c1301 a8ff350c1301 ffa8b8846820 a8ff350c13010000 a8ff350c1301 ffa8b8846820 a8ff350c1301 ffa8b8846820 - {e=>0,a=>-80,d=>3,c=>7,h=>5,b=>3,g=>5,f=>6} b0ff3b032e05 b0ff3b032e05 b0ff3b032e05 ffb07c60d4a0 b0ff3b032e050000 b0ff3b032e05 ffb07c60d4a0 b0ff3b032e05 ffb07c60d4a0 - {e=>5,a=>-89,d=>6,c=>6,h=>1,b=>0,g=>4,f=>1} a7ff302e2101 a7ff302e2101 a7ff302e2101 ffa718d43020 a7ff302e21010000 a7ff302e2101 ffa718d43020 a7ff302e2101 ffa718d43020 - {e=>4,a=>-32,d=>5,c=>2,h=>0,b=>4,g=>7,f=>7} e0ff14253f00 e0ff14253f00 e0ff14253f00 ffe088b0fc00 e0ff14253f000000 e0ff14253f00 ffe088b0fc00 e0ff14253f00 ffe088b0fc00 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>6,a=>-1,d=>6,c=>3,h=>1,b=>6,g=>2,f=>7,i=>5} ffff1e361729 ffff1e361729 ffff1e361729 ffffccd8e834 ffff1e3617290000 ffff1e361729 ffffccd8e834 ffff1e361729 ffffccd8e834 - {e=>1,a=>21,d=>3,c=>7,h=>0,b=>3,g=>5,f=>0,i=>1} 15003b0b2808 15003b0b2808 15003b0b2808 00157c641404 15003b0b28080000 15003b0b2808 00157c641404 15003b0b2808 00157c641404 - {e=>4,a=>124,d=>0,c=>3,h=>5,b=>6,g=>1,f=>0,i=>7} 7c001e20083d 7c001e20083d 7c001e20083d 007ccc1004bc 7c001e20083d0000 7c001e20083d 007ccc1004bc 7c001e20083d 007ccc1004bc - {e=>6,a=>53,d=>6,c=>4,h=>3,b=>7,g=>3,f=>0,i=>0} 350027361803 350027361803 350027361803 0035f0d80c60 3500273618030000 350027361803 0035f0d80c60 350027361803 0035f0d80c60 - {e=>5,a=>14,d=>0,c=>5,h=>0,b=>0,g=>0,f=>4,i=>1} 0e0028280408 0e0028280408 0e0028280408 000e14148004 0e00282804080000 0e0028280408 000e14148004 0e0028280408 000e14148004 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>4,a=>-128,d=>5,j=>4,c=>0,h=>4,b=>2,g=>7,f=>5,i=>5} 80ff02253d2c0400 80ff02253d2c0400 80ff02253d2c0400 ff8040b0bc948000 80ff02253d2c0400 80ff02253d2c0400 ff8040b0bc948000 80ff02253d2c0400 ff8040b0bc948000 - {e=>5,a=>-33,d=>3,j=>4,c=>5,h=>7,b=>7,g=>1,f=>6,i=>5} dfff2f2b0e2f0400 dfff2f2b0e2f0400 dfff2f2b0e2f0400 ffdff474c4f48000 dfff2f2b0e2f0400 dfff2f2b0e2f0400 ffdff474c4f48000 dfff2f2b0e2f0400 ffdff474c4f48000 - {e=>3,a=>-96,d=>1,j=>1,c=>4,h=>2,b=>3,g=>7,f=>6,i=>6} a0ff23193e320100 a0ff23193e320100 a0ff23193e320100 ffa0702cdc582000 a0ff23193e320100 a0ff23193e320100 ffa0702cdc582000 a0ff23193e320100 ffa0702cdc582000 - {e=>7,a=>-9,d=>6,j=>4,c=>3,h=>1,b=>3,g=>3,f=>1,i=>0} f7ff1b3e19010400 f7ff1b3e19010400 f7ff1b3e19010400 fff76cdc2c208000 f7ff1b3e19010400 f7ff1b3e19010400 fff76cdc2c208000 f7ff1b3e19010400 fff76cdc2c208000 - {e=>2,a=>63,d=>4,j=>2,c=>4,h=>0,b=>4,g=>3,f=>5,i=>0} 3f0024141d000200 3f0024141d000200 3f0024141d000200 003f9088ac004000 3f0024141d000200 3f0024141d000200 003f9088ac004000 3f0024141d000200 003f9088ac004000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>4,a=>57,d=>7,j=>7,c=>4,k=>0,h=>5,b=>3,g=>3,f=>4,i=>6} 390023271c350700 390023271c350700 390023271c350700 003970f08cb8e000 390023271c350700 390023271c350700 003970f08cb8e000 390023271c350700 003970f08cb8e000 - {e=>7,a=>-11,d=>1,j=>4,c=>0,k=>5,h=>1,b=>5,g=>5,f=>7,i=>5} f5ff05392f292c00 f5ff05392f292c00 f5ff05392f292c00 fff5a03cf4349400 f5ff05392f292c00 f5ff05392f292c00 fff5a03cf4349400 f5ff05392f292c00 fff5a03cf4349400 - {e=>7,a=>-117,d=>2,j=>6,c=>7,k=>6,h=>1,b=>2,g=>0,f=>1,i=>1} 8bff3a3a01093600 8bff3a3a01093600 8bff3a3a01093600 ff8b5c5c2024d800 8bff3a3a01093600 8bff3a3a01093600 ff8b5c5c2024d800 8bff3a3a01093600 ff8b5c5c2024d800 - {e=>7,a=>-118,d=>6,j=>3,c=>7,k=>4,h=>2,b=>4,g=>3,f=>6,i=>0} 8aff3c3e1e022300 8aff3c3e1e022300 8aff3c3e1e022300 ff8a9cdccc407000 8aff3c3e1e022300 8aff3c3e1e022300 ff8a9cdccc407000 8aff3c3e1e022300 ff8a9cdccc407000 - {e=>4,a=>-15,d=>1,j=>1,c=>7,k=>6,h=>5,b=>4,g=>7,f=>3,i=>7} f1ff3c213b3d3100 f1ff3c213b3d3100 f1ff3c213b3d3100 fff19c307cbc3800 f1ff3c213b3d3100 f1ff3c213b3d3100 fff19c307cbc3800 f1ff3c213b3d3100 fff19c307cbc3800 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>5,a=>24,d=>4,j=>2,l=>6,c=>3,k=>2,h=>1,b=>5,g=>4,f=>5,i=>2} 18001d2c25111206 18001d2c25111206 18001d2c25111206 0018ac94b02848c0 18001d2c25111206 18001d2c25111206 0018ac94b02848c0 18001d2c25111206 0018ac94b02848c0 - {e=>7,a=>-76,d=>2,j=>2,l=>5,c=>2,k=>2,h=>3,b=>5,g=>4,f=>7,i=>5} b4ff153a272b1205 b4ff153a272b1205 b4ff153a272b1205 ffb4a85cf07448a0 b4ff153a272b1205 b4ff153a272b1205 ffb4a85cf07448a0 b4ff153a272b1205 ffb4a85cf07448a0 - {e=>4,a=>69,d=>4,j=>6,l=>1,c=>1,k=>0,h=>0,b=>6,g=>7,f=>1,i=>3} 45000e2439180601 45000e2439180601 45000e2439180601 0045c4903c0cc020 45000e2439180601 45000e2439180601 0045c4903c0cc020 45000e2439180601 0045c4903c0cc020 - {e=>6,a=>-5,d=>4,j=>4,l=>7,c=>6,k=>6,h=>2,b=>3,g=>6,f=>5,i=>6} fbff333435323407 fbff333435323407 fbff333435323407 fffb7898b85898e0 fbff333435323407 fbff333435323407 fffb7898b85898e0 fbff333435323407 fffb7898b85898e0 - {e=>1,a=>84,d=>1,j=>5,l=>6,c=>3,k=>4,h=>7,b=>2,g=>6,f=>4,i=>3} 54001a09341f2506 54001a09341f2506 54001a09341f2506 00544c2498ecb0c0 54001a09341f2506 54001a09341f2506 00544c2498ecb0c0 54001a09341f2506 00544c2498ecb0c0 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>0,a=>-34,m=>7,d=>7,j=>0,l=>2,c=>3,k=>5,h=>5,b=>1,g=>0,f=>6,i=>6} deff19070635283a deff19070635283a deff19070635283a ffde2ce0c0b8145c deff19070635283a deff19070635283a ffde2ce0c0b8145c deff19070635283a ffde2ce0c0b8145c - {e=>1,a=>-67,m=>0,d=>2,j=>7,l=>0,c=>2,k=>4,h=>2,b=>7,g=>3,f=>7,i=>4} bdff170a1f222700 bdff170a1f222700 bdff170a1f222700 ffbde844ec50f000 bdff170a1f222700 bdff170a1f222700 ffbde844ec50f000 bdff170a1f222700 ffbde844ec50f000 - {e=>5,a=>61,m=>7,d=>1,j=>3,l=>5,c=>6,k=>5,h=>3,b=>4,g=>7,f=>3,i=>7} 3d0034293b3b2b3d 3d0034293b3b2b3d 3d0034293b3b2b3d 003d98347c7c74bc 3d0034293b3b2b3d 3d0034293b3b2b3d 003d98347c7c74bc 3d0034293b3b2b3d 003d98347c7c74bc - {e=>5,a=>96,m=>6,d=>5,j=>4,l=>5,c=>1,k=>3,h=>1,b=>6,g=>2,f=>2,i=>3} 60000e2d12191c35 60000e2d12191c35 60000e2d12191c35 0060c4b4482c8cb8 60000e2d12191c35 60000e2d12191c35 0060c4b4482c8cb8 60000e2d12191c35 0060c4b4482c8cb8 - {e=>3,a=>-6,m=>6,d=>3,j=>6,l=>6,c=>5,k=>2,h=>5,b=>6,g=>3,f=>5,i=>0} faff2e1b1d051636 faff2e1b1d051636 faff2e1b1d051636 fffad46caca0c8d8 faff2e1b1d051636 faff2e1b1d051636 fffad46caca0c8d8 faff2e1b1d051636 fffad46caca0c8d8 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>7,n=>7,a=>-88,m=>4,d=>0,j=>4,l=>6,c=>3,k=>5,h=>2,b=>1,g=>6,f=>5,i=>7} a8ff1938353a2c260700 a8ff1938353a2c260700 a8ff1938353a2c260700 ffa82c1cb85c94d0e000 a8ff1938353a2c2607000000 a8ff1938353a2c260700 ffa82c1cb85c94d0e000 a8ff1938353a2c260700 ffa82c1cb85c94d0e000 - {e=>0,n=>1,a=>-51,m=>3,d=>3,j=>2,l=>4,c=>1,k=>1,h=>6,b=>6,g=>5,f=>7,i=>2} cdff0e032f160a1c0100 cdff0e032f160a1c0100 cdff0e032f160a1c0100 ffcdc460f4c8448c2000 cdff0e032f160a1c01000000 cdff0e032f160a1c0100 ffcdc460f4c8448c2000 cdff0e032f160a1c0100 ffcdc460f4c8448c2000 - {e=>2,n=>6,a=>20,m=>5,d=>3,j=>4,l=>6,c=>1,k=>3,h=>6,b=>5,g=>4,f=>2,i=>5} 14000d13222e1c2e0600 14000d13222e1c2e0600 14000d13222e1c2e0600 0014a46850d48cd4c000 14000d13222e1c2e06000000 14000d13222e1c2e0600 0014a46850d48cd4c000 14000d13222e1c2e0600 0014a46850d48cd4c000 - {e=>4,n=>1,a=>-110,m=>2,d=>6,j=>4,l=>5,c=>4,k=>5,h=>0,b=>1,g=>7,f=>4,i=>6} 92ff21263c302c150100 92ff21263c302c150100 92ff21263c302c150100 ff9230d09c1894a82000 92ff21263c302c1501000000 92ff21263c302c150100 ff9230d09c1894a82000 92ff21263c302c150100 ff9230d09c1894a82000 - {e=>0,n=>0,a=>-45,m=>2,d=>5,j=>7,l=>4,c=>5,k=>6,h=>1,b=>2,g=>6,f=>4,i=>0} d3ff2a05340137140000 d3ff2a05340137140000 d3ff2a05340137140000 ffd354a09820f8880000 d3ff2a053401371400000000 d3ff2a05340137140000 ffd354a09820f8880000 d3ff2a05340137140000 ffd354a09820f8880000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>0,n=>2,a=>-65,m=>5,d=>5,j=>4,l=>2,c=>5,k=>0,h=>7,b=>2,g=>6,f=>3,o=>-15,i=>2} bfff2a053317042a0200f1ff bfff2a053317042a0200f1ff bfff2a053317042a0200f1ff ffbf54a078e880544000fff1 bfff2a053317042a0200f1ff bfff2a053317042a0200f1ff ffbf54a078e880544000fff1 bfff2a053317042a0200f1ff ffbf54a078e880544000fff1 - {e=>3,n=>6,a=>15,m=>2,d=>7,j=>7,l=>4,c=>5,k=>4,h=>2,b=>0,g=>3,f=>3,o=>30,i=>1} 0f00281f1b0a271406001e00 0f00281f1b0a271406001e00 0f00281f1b0a271406001e00 000f14ec6c44f088c000001e 0f00281f1b0a271406001e00 0f00281f1b0a271406001e00 000f14ec6c44f088c000001e 0f00281f1b0a271406001e00 000f14ec6c44f088c000001e - {e=>5,n=>7,a=>74,m=>6,d=>0,j=>7,l=>5,c=>3,k=>4,h=>4,b=>3,g=>6,f=>2,o=>69,i=>5} 4a001b28322c273507004500 4a001b28322c273507004500 4a001b28322c273507004500 004a6c145894f0b8e0000045 4a001b28322c273507004500 4a001b28322c273507004500 004a6c145894f0b8e0000045 4a001b28322c273507004500 004a6c145894f0b8e0000045 - {e=>1,n=>2,a=>84,m=>2,d=>3,j=>5,l=>4,c=>3,k=>6,h=>6,b=>1,g=>6,f=>7,o=>98,i=>6} 5400190b3736351402006200 5400190b3736351402006200 5400190b3736351402006200 00542c64f8d8b88840000062 5400190b3736351402006200 5400190b3736351402006200 00542c64f8d8b88840000062 5400190b3736351402006200 00542c64f8d8b88840000062 - {e=>3,n=>6,a=>57,m=>7,d=>6,j=>0,l=>4,c=>4,k=>1,h=>1,b=>2,g=>2,f=>7,o=>-43,i=>0} 3900221e1701083c0600d5ff 3900221e1701083c0600d5ff 3900221e1701083c0600d5ff 003950cce820049cc000ffd5 3900221e1701083c0600d5ff 3900221e1701083c0600d5ff 003950cce820049cc000ffd5 3900221e1701083c0600d5ff 003950cce820049cc000ffd5 = struct uch_wrap { int a; unsigned char b:3; }; - {a=>-6,b=>4} faffffff04000000 faffffff04000000 faffffff04000000 fffffffa80000000 faffffff04000000 faffffff04000000 fffffffa80000000 faffffff04000000 fffffffa80000000 - {a=>48,b=>4} 3000000004000000 3000000004000000 3000000004000000 0000003080000000 3000000004000000 3000000004000000 0000003080000000 3000000004000000 0000003080000000 - {a=>24,b=>4} 1800000004000000 1800000004000000 1800000004000000 0000001880000000 1800000004000000 1800000004000000 0000001880000000 1800000004000000 0000001880000000 - {a=>-13,b=>5} f3ffffff05000000 f3ffffff05000000 f3ffffff05000000 fffffff3a0000000 f3ffffff05000000 f3ffffff05000000 fffffff3a0000000 f3ffffff05000000 fffffff3a0000000 - {a=>-58,b=>1} c6ffffff01000000 c6ffffff01000000 c6ffffff01000000 ffffffc620000000 c6ffffff01000000 c6ffffff01000000 ffffffc620000000 c6ffffff01000000 ffffffc620000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>52,b=>2} 340000001a000000 340000001a000000 340000001a000000 000000344c000000 340000001a000000 340000001a000000 000000344c000000 340000001a000000 000000344c000000 - {c=>6,a=>-113,b=>2} 8fffffff32000000 8fffffff32000000 8fffffff32000000 ffffff8f58000000 8fffffff32000000 8fffffff32000000 ffffff8f58000000 8fffffff32000000 ffffff8f58000000 - {c=>7,a=>-72,b=>6} b8ffffff3e000000 b8ffffff3e000000 b8ffffff3e000000 ffffffb8dc000000 b8ffffff3e000000 b8ffffff3e000000 ffffffb8dc000000 b8ffffff3e000000 ffffffb8dc000000 - {c=>4,a=>93,b=>7} 5d00000027000000 5d00000027000000 5d00000027000000 0000005df0000000 5d00000027000000 5d00000027000000 0000005df0000000 5d00000027000000 0000005df0000000 - {c=>5,a=>34,b=>5} 220000002d000000 220000002d000000 220000002d000000 00000022b4000000 220000002d000000 220000002d000000 00000022b4000000 220000002d000000 00000022b4000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>4,a=>1,b=>6,d=>5} 0100000026050000 0100000026050000 0100000026050000 00000001d0a00000 0100000026050000 0100000026050000 00000001d0a00000 0100000026050000 00000001d0a00000 - {c=>1,a=>35,b=>0,d=>6} 2300000008060000 2300000008060000 2300000008060000 0000002304c00000 2300000008060000 2300000008060000 0000002304c00000 2300000008060000 0000002304c00000 - {c=>3,a=>81,b=>1,d=>7} 5100000019070000 5100000019070000 5100000019070000 000000512ce00000 5100000019070000 5100000019070000 000000512ce00000 5100000019070000 000000512ce00000 - {c=>5,a=>19,b=>3,d=>2} 130000002b020000 130000002b020000 130000002b020000 0000001374400000 130000002b020000 130000002b020000 0000001374400000 130000002b020000 0000001374400000 - {c=>7,a=>-108,b=>5,d=>3} 94ffffff3d030000 94ffffff3d030000 94ffffff3d030000 ffffff94bc600000 94ffffff3d030000 94ffffff3d030000 ffffff94bc600000 94ffffff3d030000 ffffff94bc600000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>0,c=>0,a=>58,b=>1,d=>6} 3a00000001060000 3a00000001060000 3a00000001060000 0000003a20c00000 3a00000001060000 3a00000001060000 0000003a20c00000 3a00000001060000 0000003a20c00000 - {e=>4,c=>2,a=>67,b=>4,d=>2} 4300000014220000 4300000014220000 4300000014220000 0000004388500000 4300000014220000 4300000014220000 0000004388500000 4300000014220000 0000004388500000 - {e=>0,c=>2,a=>20,b=>7,d=>4} 1400000017040000 1400000017040000 1400000017040000 00000014e8800000 1400000017040000 1400000017040000 00000014e8800000 1400000017040000 00000014e8800000 - {e=>7,c=>4,a=>-17,b=>5,d=>7} efffffff253f0000 efffffff253f0000 efffffff253f0000 ffffffefb0fc0000 efffffff253f0000 efffffff253f0000 ffffffefb0fc0000 efffffff253f0000 ffffffefb0fc0000 - {e=>7,c=>1,a=>-49,b=>4,d=>7} cfffffff0c3f0000 cfffffff0c3f0000 cfffffff0c3f0000 ffffffcf84fc0000 cfffffff0c3f0000 cfffffff0c3f0000 ffffffcf84fc0000 cfffffff0c3f0000 ffffffcf84fc0000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>7,c=>0,a=>-9,b=>1,d=>3,f=>6} f7ffffff013b0600 f7ffffff013b0600 f7ffffff013b0600 fffffff7207cc000 f7ffffff013b0600 f7ffffff013b0600 fffffff7207cc000 f7ffffff013b0600 fffffff7207cc000 - {e=>2,c=>2,a=>72,b=>4,d=>6,f=>1} 4800000014160100 4800000014160100 4800000014160100 0000004888c82000 4800000014160100 4800000014160100 0000004888c82000 4800000014160100 0000004888c82000 - {e=>7,c=>0,a=>-66,b=>1,d=>4,f=>5} beffffff013c0500 beffffff013c0500 beffffff013c0500 ffffffbe209ca000 beffffff013c0500 beffffff013c0500 ffffffbe209ca000 beffffff013c0500 ffffffbe209ca000 - {e=>6,c=>1,a=>121,b=>7,d=>2,f=>2} 790000000f320200 790000000f320200 790000000f320200 00000079e4584000 790000000f320200 790000000f320200 00000079e4584000 790000000f320200 00000079e4584000 - {e=>1,c=>6,a=>-56,b=>7,d=>4,f=>3} c8ffffff370c0300 c8ffffff370c0300 c8ffffff370c0300 ffffffc8f8846000 c8ffffff370c0300 c8ffffff370c0300 ffffffc8f8846000 c8ffffff370c0300 ffffffc8f8846000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>6,c=>3,a=>76,g=>4,b=>6,d=>4,f=>4} 4c0000001e342400 4c0000001e342400 4c0000001e342400 0000004ccc989000 4c0000001e342400 4c0000001e342400 0000004ccc989000 4c0000001e342400 0000004ccc989000 - {e=>0,c=>4,a=>-114,g=>7,b=>4,d=>6,f=>5} 8effffff24063d00 8effffff24063d00 8effffff24063d00 ffffff8e90c0bc00 8effffff24063d00 8effffff24063d00 ffffff8e90c0bc00 8effffff24063d00 ffffff8e90c0bc00 - {e=>4,c=>5,a=>8,g=>7,b=>4,d=>0,f=>4} 080000002c203c00 080000002c203c00 080000002c203c00 0000000894109c00 080000002c203c00 080000002c203c00 0000000894109c00 080000002c203c00 0000000894109c00 - {e=>5,c=>3,a=>-73,g=>2,b=>6,d=>6,f=>4} b7ffffff1e2e1400 b7ffffff1e2e1400 b7ffffff1e2e1400 ffffffb7ccd48800 b7ffffff1e2e1400 b7ffffff1e2e1400 ffffffb7ccd48800 b7ffffff1e2e1400 ffffffb7ccd48800 - {e=>7,c=>6,a=>69,g=>5,b=>2,d=>5,f=>2} 45000000323d2a00 45000000323d2a00 45000000323d2a00 0000004558bc5400 45000000323d2a00 45000000323d2a00 0000004558bc5400 45000000323d2a00 0000004558bc5400 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>0,a=>21,d=>5,c=>3,h=>0,b=>7,g=>4,f=>4} 150000001f052400 150000001f052400 150000001f052400 00000015eca09000 150000001f052400 150000001f052400 00000015eca09000 150000001f052400 00000015eca09000 - {e=>5,a=>124,d=>3,c=>5,h=>6,b=>1,g=>3,f=>6} 7c000000292b1e06 7c000000292b1e06 7c000000292b1e06 0000007c3474ccc0 7c000000292b1e06 7c000000292b1e06 0000007c3474ccc0 7c000000292b1e06 0000007c3474ccc0 - {e=>6,a=>1,d=>4,c=>7,h=>1,b=>2,g=>4,f=>7} 010000003a342701 010000003a342701 010000003a342701 000000015c98f020 010000003a342701 010000003a342701 000000015c98f020 010000003a342701 000000015c98f020 - {e=>7,a=>36,d=>6,c=>0,h=>7,b=>1,g=>5,f=>2} 24000000013e2a07 24000000013e2a07 24000000013e2a07 0000002420dc54e0 24000000013e2a07 24000000013e2a07 0000002420dc54e0 24000000013e2a07 0000002420dc54e0 - {e=>1,a=>121,d=>4,c=>4,h=>0,b=>0,g=>6,f=>5} 79000000200c3500 79000000200c3500 79000000200c3500 000000791084b800 79000000200c3500 79000000200c3500 000000791084b800 79000000200c3500 000000791084b800 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>-75,d=>3,c=>1,h=>2,b=>0,g=>4,f=>3,i=>4} b5ffffff08232322 b5ffffff08232322 b5ffffff08232322 ffffffb504707050 b5ffffff08232322 b5ffffff08232322 ffffffb504707050 b5ffffff08232322 ffffffb504707050 - {e=>4,a=>-82,d=>3,c=>2,h=>4,b=>5,g=>0,f=>2,i=>2} aeffffff15230214 aeffffff15230214 aeffffff15230214 ffffffaea8704088 aeffffff15230214 aeffffff15230214 ffffffaea8704088 aeffffff15230214 ffffffaea8704088 - {e=>0,a=>46,d=>7,c=>3,h=>6,b=>6,g=>7,f=>6,i=>5} 2e0000001e073e2e 2e0000001e073e2e 2e0000001e073e2e 0000002ecce0dcd4 2e0000001e073e2e 2e0000001e073e2e 0000002ecce0dcd4 2e0000001e073e2e 0000002ecce0dcd4 - {e=>0,a=>4,d=>0,c=>6,h=>3,b=>5,g=>3,f=>0,i=>3} 040000003500181b 040000003500181b 040000003500181b 00000004b8000c6c 040000003500181b 040000003500181b 00000004b8000c6c 040000003500181b 00000004b8000c6c - {e=>0,a=>-54,d=>1,c=>7,h=>7,b=>1,g=>7,f=>6,i=>6} caffffff39013e37 caffffff39013e37 caffffff39013e37 ffffffca3c20dcf8 caffffff39013e37 caffffff39013e37 ffffffca3c20dcf8 caffffff39013e37 ffffffca3c20dcf8 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>4,a=>101,d=>4,j=>0,c=>1,h=>6,b=>4,g=>7,f=>6,i=>5} 650000000c243e2e00000000 650000000c243e2e00000000 650000000c243e2e00000000 000000658490dcd400000000 650000000c243e2e00000000 650000000c243e2e00000000 000000658490dcd400000000 650000000c243e2e00000000 000000658490dcd400000000 - {e=>0,a=>33,d=>6,j=>1,c=>0,h=>2,b=>3,g=>0,f=>1,i=>4} 210000000306012201000000 210000000306012201000000 210000000306012201000000 0000002160c0205020000000 210000000306012201000000 210000000306012201000000 0000002160c0205020000000 210000000306012201000000 0000002160c0205020000000 - {e=>0,a=>31,d=>4,j=>4,c=>3,h=>2,b=>7,g=>3,f=>7,i=>4} 1f0000001f041f2204000000 1f0000001f041f2204000000 1f0000001f041f2204000000 0000001fec80ec5080000000 1f0000001f041f2204000000 1f0000001f041f2204000000 0000001fec80ec5080000000 1f0000001f041f2204000000 0000001fec80ec5080000000 - {e=>0,a=>-102,d=>5,j=>2,c=>1,h=>3,b=>1,g=>4,f=>5,i=>4} 9affffff0905252302000000 9affffff0905252302000000 9affffff0905252302000000 ffffff9a24a0b07040000000 9affffff0905252302000000 9affffff0905252302000000 ffffff9a24a0b07040000000 9affffff0905252302000000 ffffff9a24a0b07040000000 - {e=>3,a=>117,d=>6,j=>5,c=>1,h=>3,b=>4,g=>4,f=>7,i=>4} 750000000c1e272305000000 750000000c1e272305000000 750000000c1e272305000000 0000007584ccf070a0000000 750000000c1e272305000000 750000000c1e272305000000 0000007584ccf070a0000000 750000000c1e272305000000 0000007584ccf070a0000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>7,a=>7,d=>0,j=>2,c=>5,k=>6,h=>2,b=>2,g=>6,f=>1,i=>1} 070000002a38310a32000000 070000002a38310a32000000 070000002a38310a32000000 00000007541c384458000000 070000002a38310a32000000 070000002a38310a32000000 00000007541c384458000000 070000002a38310a32000000 00000007541c384458000000 - {e=>0,a=>73,d=>0,j=>0,c=>6,k=>0,h=>7,b=>2,g=>4,f=>2,i=>6} 490000003200223700000000 490000003200223700000000 490000003200223700000000 00000049580050f800000000 490000003200223700000000 490000003200223700000000 00000049580050f800000000 490000003200223700000000 00000049580050f800000000 - {e=>5,a=>-16,d=>1,j=>5,c=>2,k=>0,h=>5,b=>3,g=>5,f=>2,i=>0} f0ffffff13292a0505000000 f0ffffff13292a0505000000 f0ffffff13292a0505000000 fffffff0683454a0a0000000 f0ffffff13292a0505000000 f0ffffff13292a0505000000 fffffff0683454a0a0000000 f0ffffff13292a0505000000 fffffff0683454a0a0000000 - {e=>2,a=>85,d=>1,j=>7,c=>7,k=>5,h=>0,b=>2,g=>7,f=>4,i=>6} 550000003a113c302f000000 550000003a113c302f000000 550000003a113c302f000000 000000555c289c18f4000000 550000003a113c302f000000 550000003a113c302f000000 000000555c289c18f4000000 550000003a113c302f000000 000000555c289c18f4000000 - {e=>1,a=>-111,d=>4,j=>1,c=>4,k=>4,h=>0,b=>1,g=>3,f=>1,i=>4} 91ffffff210c192021000000 91ffffff210c192021000000 91ffffff210c192021000000 ffffff9130842c1030000000 91ffffff210c192021000000 91ffffff210c192021000000 ffffff9130842c1030000000 91ffffff210c192021000000 ffffff9130842c1030000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>4,a=>-94,d=>1,j=>5,l=>1,c=>6,k=>5,h=>7,b=>6,g=>1,f=>1,i=>7} a2ffffff3621093f2d010000 a2ffffff3621093f2d010000 a2ffffff3621093f2d010000 ffffffa2d83024fcb4200000 a2ffffff3621093f2d010000 a2ffffff3621093f2d010000 ffffffa2d83024fcb4200000 a2ffffff3621093f2d010000 ffffffa2d83024fcb4200000 - {e=>2,a=>-111,d=>5,j=>6,l=>5,c=>3,k=>0,h=>6,b=>2,g=>0,f=>1,i=>6} 91ffffff1a15013606050000 91ffffff1a15013606050000 91ffffff1a15013606050000 ffffff914ca820d8c0a00000 91ffffff1a15013606050000 91ffffff1a15013606050000 ffffff914ca820d8c0a00000 91ffffff1a15013606050000 ffffff914ca820d8c0a00000 - {e=>6,a=>-48,d=>0,j=>4,l=>6,c=>7,k=>6,h=>2,b=>0,g=>6,f=>2,i=>3} d0ffffff3830321a34060000 d0ffffff3830321a34060000 d0ffffff3830321a34060000 ffffffd01c18584c98c00000 d0ffffff3830321a34060000 d0ffffff3830321a34060000 ffffffd01c18584c98c00000 d0ffffff3830321a34060000 ffffffd01c18584c98c00000 - {e=>4,a=>25,d=>5,j=>1,l=>4,c=>1,k=>1,h=>4,b=>3,g=>6,f=>7,i=>7} 190000000b25373c09040000 190000000b25373c09040000 190000000b25373c09040000 0000001964b0f89c24800000 190000000b25373c09040000 190000000b25373c09040000 0000001964b0f89c24800000 190000000b25373c09040000 0000001964b0f89c24800000 - {e=>5,a=>-90,d=>1,j=>4,l=>1,c=>4,k=>6,h=>6,b=>6,g=>4,f=>7,i=>6} a6ffffff2629273634010000 a6ffffff2629273634010000 a6ffffff2629273634010000 ffffffa6d034f0d898200000 a6ffffff2629273634010000 a6ffffff2629273634010000 ffffffa6d034f0d898200000 a6ffffff2629273634010000 ffffffa6d034f0d898200000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>0,a=>27,m=>0,d=>1,j=>1,l=>0,c=>1,k=>4,h=>7,b=>3,g=>3,f=>1,i=>7} 1b0000000b01193f21000000 1b0000000b01193f21000000 1b0000000b01193f21000000 0000001b64202cfc30000000 1b0000000b01193f21000000 1b0000000b01193f21000000 0000001b64202cfc30000000 1b0000000b01193f21000000 0000001b64202cfc30000000 - {e=>4,a=>-76,m=>6,d=>7,j=>1,l=>5,c=>4,k=>7,h=>1,b=>3,g=>1,f=>4,i=>1} b4ffffff23270c0939350000 b4ffffff23270c0939350000 b4ffffff23270c0939350000 ffffffb470f084243cb80000 b4ffffff23270c0939350000 b4ffffff23270c0939350000 ffffffb470f084243cb80000 b4ffffff23270c0939350000 ffffffb470f084243cb80000 - {e=>2,a=>-46,m=>4,d=>7,j=>1,l=>1,c=>3,k=>7,h=>2,b=>4,g=>5,f=>0,i=>2} d2ffffff1c17281239210000 d2ffffff1c17281239210000 d2ffffff1c17281239210000 ffffffd28ce814483c300000 d2ffffff1c17281239210000 d2ffffff1c17281239210000 ffffffd28ce814483c300000 d2ffffff1c17281239210000 ffffffd28ce814483c300000 - {e=>2,a=>81,m=>0,d=>2,j=>0,l=>7,c=>1,k=>0,h=>1,b=>4,g=>7,f=>2,i=>6} 510000000c123a3100070000 510000000c123a3100070000 510000000c123a3100070000 0000005184485c3800e00000 510000000c123a3100070000 510000000c123a3100070000 0000005184485c3800e00000 510000000c123a3100070000 0000005184485c3800e00000 - {e=>4,a=>-102,m=>6,d=>6,j=>4,l=>0,c=>7,k=>3,h=>1,b=>2,g=>3,f=>4,i=>6} 9affffff3a261c311c300000 9affffff3a261c311c300000 9affffff3a261c311c300000 ffffff9a5cd08c388c180000 9affffff3a261c311c300000 9affffff3a261c311c300000 ffffff9a5cd08c388c180000 9affffff3a261c311c300000 ffffff9a5cd08c388c180000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>0,n=>2,a=>71,m=>2,d=>1,j=>7,l=>0,c=>5,k=>5,h=>3,b=>5,g=>5,f=>0,i=>7} 470000002d01283b2f100200 470000002d01283b2f100200 470000002d01283b2f100200 00000047b420147cf4084000 470000002d01283b2f100200 470000002d01283b2f100200 00000047b420147cf4084000 470000002d01283b2f100200 00000047b420147cf4084000 - {e=>1,n=>0,a=>26,m=>3,d=>0,j=>5,l=>7,c=>2,k=>0,h=>0,b=>7,g=>1,f=>6,i=>4} 1a00000017080e20051f0000 1a00000017080e20051f0000 1a00000017080e20051f0000 0000001ae804c410a0ec0000 1a00000017080e20051f0000 1a00000017080e20051f0000 0000001ae804c410a0ec0000 1a00000017080e20051f0000 0000001ae804c410a0ec0000 - {e=>2,n=>4,a=>60,m=>5,d=>5,j=>6,l=>6,c=>6,k=>2,h=>3,b=>0,g=>2,f=>4,i=>3} 3c0000003015141b162e0400 3c0000003015141b162e0400 3c0000003015141b162e0400 0000003c18a8886cc8d48000 3c0000003015141b162e0400 3c0000003015141b162e0400 0000003c18a8886cc8d48000 3c0000003015141b162e0400 0000003c18a8886cc8d48000 - {e=>7,n=>3,a=>95,m=>4,d=>7,j=>4,l=>5,c=>2,k=>6,h=>4,b=>0,g=>3,f=>0,i=>3} 5f000000103f181c34250300 5f000000103f181c34250300 5f000000103f181c34250300 0000005f08fc0c8c98b06000 5f000000103f181c34250300 5f000000103f181c34250300 0000005f08fc0c8c98b06000 5f000000103f181c34250300 0000005f08fc0c8c98b06000 - {e=>6,n=>2,a=>-72,m=>1,d=>7,j=>3,l=>3,c=>4,k=>4,h=>2,b=>2,g=>7,f=>7,i=>3} b8ffffff22373f1a230b0200 b8ffffff22373f1a230b0200 b8ffffff22373f1a230b0200 ffffffb850f8fc4c70644000 b8ffffff22373f1a230b0200 b8ffffff22373f1a230b0200 ffffffb850f8fc4c70644000 b8ffffff22373f1a230b0200 ffffffb850f8fc4c70644000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>3,n=>5,a=>-18,m=>0,d=>5,j=>5,l=>2,c=>0,k=>7,h=>6,b=>1,g=>3,f=>2,o=>-124,i=>5} eeffffff011d1a2e3d02050084ff0000 eeffffff011d1a2e3d02050084ff0000 eeffffff011d1a2e3d02050084ff0000 ffffffee20ac4cd4bc40a000ff840000 eeffffff011d1a2e3d02050084ff0000 eeffffff011d1a2e3d02050084ff0000 ffffffee20ac4cd4bc40a000ff840000 eeffffff011d1a2e3d02050084ff0000 ffffffee20ac4cd4bc40a000ff840000 - {e=>7,n=>6,a=>-18,m=>7,d=>6,j=>5,l=>7,c=>5,k=>6,h=>4,b=>5,g=>7,f=>5,o=>-74,i=>7} eeffffff2d3e3d3c353f0600b6ff0000 eeffffff2d3e3d3c353f0600b6ff0000 eeffffff2d3e3d3c353f0600b6ff0000 ffffffeeb4dcbc9cb8fcc000ffb60000 eeffffff2d3e3d3c353f0600b6ff0000 eeffffff2d3e3d3c353f0600b6ff0000 ffffffeeb4dcbc9cb8fcc000ffb60000 eeffffff2d3e3d3c353f0600b6ff0000 ffffffeeb4dcbc9cb8fcc000ffb60000 - {e=>1,n=>5,a=>121,m=>1,d=>3,j=>4,l=>5,c=>3,k=>7,h=>1,b=>0,g=>5,f=>1,o=>-94,i=>1} 79000000180b29093c0d0500a2ff0000 79000000180b29093c0d0500a2ff0000 79000000180b29093c0d0500a2ff0000 000000790c6434249ca4a000ffa20000 79000000180b29093c0d0500a2ff0000 79000000180b29093c0d0500a2ff0000 000000790c6434249ca4a000ffa20000 79000000180b29093c0d0500a2ff0000 000000790c6434249ca4a000ffa20000 - {e=>2,n=>1,a=>-41,m=>4,d=>5,j=>7,l=>2,c=>6,k=>0,h=>4,b=>3,g=>7,f=>6,o=>-66,i=>7} d7ffffff33153e3c07220100beff0000 d7ffffff33153e3c07220100beff0000 d7ffffff33153e3c07220100beff0000 ffffffd778a8dc9ce0502000ffbe0000 d7ffffff33153e3c07220100beff0000 d7ffffff33153e3c07220100beff0000 ffffffd778a8dc9ce0502000ffbe0000 d7ffffff33153e3c07220100beff0000 ffffffd778a8dc9ce0502000ffbe0000 - {e=>7,n=>2,a=>39,m=>7,d=>4,j=>7,l=>6,c=>7,k=>2,h=>0,b=>7,g=>1,f=>2,o=>-125,i=>1} 270000003f3c0a08173e020083ff0000 270000003f3c0a08173e020083ff0000 270000003f3c0a08173e020083ff0000 00000027fc9c4404e8dc4000ff830000 270000003f3c0a08173e020083ff0000 270000003f3c0a08173e020083ff0000 00000027fc9c4404e8dc4000ff830000 270000003f3c0a08173e020083ff0000 00000027fc9c4404e8dc4000ff830000 = struct uch_wrap { long a; unsigned char b:3; }; - {a=>-40,b=>5} d8ffffff05000000 d8ffffffffffffff0500000000000000 d8ffffffffffffff0500000000000000 ffffffd8a0000000 d8ffffff05000000 d8ffffff05000000 ffffffffffffffd8a000000000000000 d8ffffff05000000 ffffffd8a0000000 - {a=>-42,b=>6} d6ffffff06000000 d6ffffffffffffff0600000000000000 d6ffffffffffffff0600000000000000 ffffffd6c0000000 d6ffffff06000000 d6ffffff06000000 ffffffffffffffd6c000000000000000 d6ffffff06000000 ffffffd6c0000000 - {a=>-83,b=>0} adffffff00000000 adffffffffffffff0000000000000000 adffffffffffffff0000000000000000 ffffffad00000000 adffffff00000000 adffffff00000000 ffffffffffffffad0000000000000000 adffffff00000000 ffffffad00000000 - {a=>6,b=>4} 0600000004000000 06000000000000000400000000000000 06000000000000000400000000000000 0000000680000000 0600000004000000 0600000004000000 00000000000000068000000000000000 0600000004000000 0000000680000000 - {a=>-27,b=>4} e5ffffff04000000 e5ffffffffffffff0400000000000000 e5ffffffffffffff0400000000000000 ffffffe580000000 e5ffffff04000000 e5ffffff04000000 ffffffffffffffe58000000000000000 e5ffffff04000000 ffffffe580000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>56,b=>5} 3800000025000000 38000000000000002500000000000000 38000000000000002500000000000000 00000038b0000000 3800000025000000 3800000025000000 0000000000000038b000000000000000 3800000025000000 00000038b0000000 - {c=>4,a=>-12,b=>5} f4ffffff25000000 f4ffffffffffffff2500000000000000 f4ffffffffffffff2500000000000000 fffffff4b0000000 f4ffffff25000000 f4ffffff25000000 fffffffffffffff4b000000000000000 f4ffffff25000000 fffffff4b0000000 - {c=>0,a=>-103,b=>3} 99ffffff03000000 99ffffffffffffff0300000000000000 99ffffffffffffff0300000000000000 ffffff9960000000 99ffffff03000000 99ffffff03000000 ffffffffffffff996000000000000000 99ffffff03000000 ffffff9960000000 - {c=>3,a=>104,b=>6} 680000001e000000 68000000000000001e00000000000000 68000000000000001e00000000000000 00000068cc000000 680000001e000000 680000001e000000 0000000000000068cc00000000000000 680000001e000000 00000068cc000000 - {c=>6,a=>-64,b=>6} c0ffffff36000000 c0ffffffffffffff3600000000000000 c0ffffffffffffff3600000000000000 ffffffc0d8000000 c0ffffff36000000 c0ffffff36000000 ffffffffffffffc0d800000000000000 c0ffffff36000000 ffffffc0d8000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>6,a=>-23,b=>3,d=>2} e9ffffff33020000 e9ffffffffffffff3302000000000000 e9ffffffffffffff3302000000000000 ffffffe978400000 e9ffffff33020000 e9ffffff33020000 ffffffffffffffe97840000000000000 e9ffffff33020000 ffffffe978400000 - {c=>7,a=>-55,b=>6,d=>0} c9ffffff3e000000 c9ffffffffffffff3e00000000000000 c9ffffffffffffff3e00000000000000 ffffffc9dc000000 c9ffffff3e000000 c9ffffff3e000000 ffffffffffffffc9dc00000000000000 c9ffffff3e000000 ffffffc9dc000000 - {c=>0,a=>84,b=>5,d=>3} 5400000005030000 54000000000000000503000000000000 54000000000000000503000000000000 00000054a0600000 5400000005030000 5400000005030000 0000000000000054a060000000000000 5400000005030000 00000054a0600000 - {c=>7,a=>-40,b=>0,d=>5} d8ffffff38050000 d8ffffffffffffff3805000000000000 d8ffffffffffffff3805000000000000 ffffffd81ca00000 d8ffffff38050000 d8ffffff38050000 ffffffffffffffd81ca0000000000000 d8ffffff38050000 ffffffd81ca00000 - {c=>6,a=>-97,b=>1,d=>1} 9fffffff31010000 9fffffffffffffff3101000000000000 9fffffffffffffff3101000000000000 ffffff9f38200000 9fffffff31010000 9fffffff31010000 ffffffffffffff9f3820000000000000 9fffffff31010000 ffffff9f38200000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>5,c=>5,a=>-118,b=>4,d=>3} 8affffff2c2b0000 8affffffffffffff2c2b000000000000 8affffffffffffff2c2b000000000000 ffffff8a94740000 8affffff2c2b0000 8affffff2c2b0000 ffffffffffffff8a9474000000000000 8affffff2c2b0000 ffffff8a94740000 - {e=>7,c=>6,a=>-96,b=>3,d=>4} a0ffffff333c0000 a0ffffffffffffff333c000000000000 a0ffffffffffffff333c000000000000 ffffffa0789c0000 a0ffffff333c0000 a0ffffff333c0000 ffffffffffffffa0789c000000000000 a0ffffff333c0000 ffffffa0789c0000 - {e=>0,c=>5,a=>93,b=>2,d=>3} 5d0000002a030000 5d000000000000002a03000000000000 5d000000000000002a03000000000000 0000005d54600000 5d0000002a030000 5d0000002a030000 000000000000005d5460000000000000 5d0000002a030000 0000005d54600000 - {e=>4,c=>6,a=>60,b=>0,d=>0} 3c00000030200000 3c000000000000003020000000000000 3c000000000000003020000000000000 0000003c18100000 3c00000030200000 3c00000030200000 000000000000003c1810000000000000 3c00000030200000 0000003c18100000 - {e=>7,c=>0,a=>-10,b=>2,d=>6} f6ffffff023e0000 f6ffffffffffffff023e000000000000 f6ffffffffffffff023e000000000000 fffffff640dc0000 f6ffffff023e0000 f6ffffff023e0000 fffffffffffffff640dc000000000000 f6ffffff023e0000 fffffff640dc0000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>0,c=>2,a=>-92,b=>1,d=>1,f=>0} a4ffffff11010000 a4ffffffffffffff1101000000000000 a4ffffffffffffff1101000000000000 ffffffa428200000 a4ffffff11010000 a4ffffff11010000 ffffffffffffffa42820000000000000 a4ffffff11010000 ffffffa428200000 - {e=>3,c=>4,a=>-86,b=>4,d=>0,f=>7} aaffffff24180700 aaffffffffffffff2418070000000000 aaffffffffffffff2418070000000000 ffffffaa900ce000 aaffffff24180700 aaffffff24180700 ffffffffffffffaa900ce00000000000 aaffffff24180700 ffffffaa900ce000 - {e=>0,c=>5,a=>117,b=>0,d=>1,f=>3} 7500000028010300 75000000000000002801030000000000 75000000000000002801030000000000 0000007514206000 7500000028010300 7500000028010300 00000000000000751420600000000000 7500000028010300 0000007514206000 - {e=>4,c=>6,a=>103,b=>2,d=>4,f=>0} 6700000032240000 67000000000000003224000000000000 67000000000000003224000000000000 0000006758900000 6700000032240000 6700000032240000 00000000000000675890000000000000 6700000032240000 0000006758900000 - {e=>2,c=>4,a=>42,b=>3,d=>2,f=>5} 2a00000023120500 2a000000000000002312050000000000 2a000000000000002312050000000000 0000002a7048a000 2a00000023120500 2a00000023120500 000000000000002a7048a00000000000 2a00000023120500 0000002a7048a000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>2,c=>0,a=>-3,g=>2,b=>5,d=>4,f=>5} fdffffff05141500 fdffffffffffffff0514150000000000 fdffffffffffffff0514150000000000 fffffffda088a800 fdffffff05141500 fdffffff05141500 fffffffffffffffda088a80000000000 fdffffff05141500 fffffffda088a800 - {e=>5,c=>6,a=>-39,g=>0,b=>0,d=>0,f=>1} d9ffffff30280100 d9ffffffffffffff3028010000000000 d9ffffffffffffff3028010000000000 ffffffd918142000 d9ffffff30280100 d9ffffff30280100 ffffffffffffffd91814200000000000 d9ffffff30280100 ffffffd918142000 - {e=>4,c=>0,a=>79,g=>3,b=>3,d=>7,f=>1} 4f00000003271900 4f000000000000000327190000000000 4f000000000000000327190000000000 0000004f60f02c00 4f00000003271900 4f00000003271900 000000000000004f60f02c0000000000 4f00000003271900 0000004f60f02c00 - {e=>1,c=>2,a=>-123,g=>2,b=>1,d=>0,f=>4} 85ffffff11081400 85ffffffffffffff1108140000000000 85ffffffffffffff1108140000000000 ffffff8528048800 85ffffff11081400 85ffffff11081400 ffffffffffffff852804880000000000 85ffffff11081400 ffffff8528048800 - {e=>4,c=>7,a=>100,g=>2,b=>3,d=>3,f=>6} 640000003b231600 64000000000000003b23160000000000 64000000000000003b23160000000000 000000647c70c800 640000003b231600 640000003b231600 00000000000000647c70c80000000000 640000003b231600 000000647c70c800 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>6,a=>-8,d=>6,c=>1,h=>6,b=>3,g=>1,f=>2} f8ffffff0b360a06 f8ffffffffffffff0b360a0600000000 f8ffffffffffffff0b360a0600000000 fffffff864d844c0 f8ffffff0b360a06 f8ffffff0b360a06 fffffffffffffff864d844c000000000 f8ffffff0b360a06 fffffff864d844c0 - {e=>4,a=>-75,d=>7,c=>3,h=>7,b=>3,g=>5,f=>3} b5ffffff1b272b07 b5ffffffffffffff1b272b0700000000 b5ffffffffffffff1b272b0700000000 ffffffb56cf074e0 b5ffffff1b272b07 b5ffffff1b272b07 ffffffffffffffb56cf074e000000000 b5ffffff1b272b07 ffffffb56cf074e0 - {e=>7,a=>-105,d=>6,c=>4,h=>5,b=>3,g=>2,f=>0} 97ffffff233e1005 97ffffffffffffff233e100500000000 97ffffffffffffff233e100500000000 ffffff9770dc08a0 97ffffff233e1005 97ffffff233e1005 ffffffffffffff9770dc08a000000000 97ffffff233e1005 ffffff9770dc08a0 - {e=>4,a=>115,d=>1,c=>7,h=>4,b=>6,g=>0,f=>0} 730000003e210004 73000000000000003e21000400000000 73000000000000003e21000400000000 00000073dc300080 730000003e210004 730000003e210004 0000000000000073dc30008000000000 730000003e210004 00000073dc300080 - {e=>4,a=>-9,d=>7,c=>1,h=>7,b=>7,g=>5,f=>3} f7ffffff0f272b07 f7ffffffffffffff0f272b0700000000 f7ffffffffffffff0f272b0700000000 fffffff7e4f074e0 f7ffffff0f272b07 f7ffffff0f272b07 fffffffffffffff7e4f074e000000000 f7ffffff0f272b07 fffffff7e4f074e0 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>-19,d=>4,c=>4,h=>6,b=>5,g=>6,f=>5,i=>7} edffffff2524353e edffffffffffffff2524353e00000000 edffffffffffffff2524353e00000000 ffffffedb090b8dc edffffff2524353e edffffff2524353e ffffffffffffffedb090b8dc00000000 edffffff2524353e ffffffedb090b8dc - {e=>6,a=>-94,d=>4,c=>3,h=>2,b=>4,g=>7,f=>3,i=>1} a2ffffff1c343b0a a2ffffffffffffff1c343b0a00000000 a2ffffffffffffff1c343b0a00000000 ffffffa28c987c44 a2ffffff1c343b0a a2ffffff1c343b0a ffffffffffffffa28c987c4400000000 a2ffffff1c343b0a ffffffa28c987c44 - {e=>5,a=>117,d=>2,c=>3,h=>2,b=>6,g=>0,f=>7,i=>3} 750000001e2a071a 75000000000000001e2a071a00000000 75000000000000001e2a071a00000000 00000075cc54e04c 750000001e2a071a 750000001e2a071a 0000000000000075cc54e04c00000000 750000001e2a071a 00000075cc54e04c - {e=>7,a=>-27,d=>5,c=>4,h=>4,b=>1,g=>0,f=>5,i=>6} e5ffffff213d0534 e5ffffffffffffff213d053400000000 e5ffffffffffffff213d053400000000 ffffffe530bca098 e5ffffff213d0534 e5ffffff213d0534 ffffffffffffffe530bca09800000000 e5ffffff213d0534 ffffffe530bca098 - {e=>4,a=>-18,d=>4,c=>3,h=>2,b=>0,g=>4,f=>1,i=>0} eeffffff18242102 eeffffffffffffff1824210200000000 eeffffffffffffff1824210200000000 ffffffee0c903040 eeffffff18242102 eeffffff18242102 ffffffffffffffee0c90304000000000 eeffffff18242102 ffffffee0c903040 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>6,a=>-43,d=>7,j=>2,c=>3,h=>5,b=>4,g=>2,f=>2,i=>3} d5ffffff1c37121d02000000 d5ffffffffffffff1c37121d02000000 d5ffffffffffffff1c37121d02000000 ffffffd58cf848ac40000000 d5ffffff1c37121d02000000 d5ffffff1c37121d02000000 ffffffffffffffd58cf848ac40000000 d5ffffff1c37121d02000000 ffffffd58cf848ac40000000 - {e=>1,a=>41,d=>0,j=>6,c=>4,h=>7,b=>5,g=>5,f=>6,i=>0} 2900000025082e0706000000 290000000000000025082e0706000000 290000000000000025082e0706000000 00000029b004d4e0c0000000 2900000025082e0706000000 2900000025082e0706000000 0000000000000029b004d4e0c0000000 2900000025082e0706000000 00000029b004d4e0c0000000 - {e=>0,a=>-53,d=>2,j=>3,c=>6,h=>4,b=>2,g=>2,f=>1,i=>3} cbffffff3202111c03000000 cbffffffffffffff3202111c03000000 cbffffffffffffff3202111c03000000 ffffffcb5840288c60000000 cbffffff3202111c03000000 cbffffff3202111c03000000 ffffffffffffffcb5840288c60000000 cbffffff3202111c03000000 ffffffcb5840288c60000000 - {e=>7,a=>6,d=>6,j=>3,c=>7,h=>3,b=>3,g=>4,f=>6,i=>0} 060000003b3e260303000000 06000000000000003b3e260303000000 06000000000000003b3e260303000000 000000067cdcd06060000000 060000003b3e260303000000 060000003b3e260303000000 00000000000000067cdcd06060000000 060000003b3e260303000000 000000067cdcd06060000000 - {e=>7,a=>8,d=>4,j=>4,c=>4,h=>1,b=>2,g=>7,f=>1,i=>5} 08000000223c392904000000 0800000000000000223c392904000000 0800000000000000223c392904000000 00000008509c3c3480000000 08000000223c392904000000 08000000223c392904000000 0000000000000008509c3c3480000000 08000000223c392904000000 00000008509c3c3480000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>2,a=>-120,d=>3,j=>3,c=>1,k=>7,h=>5,b=>6,g=>1,f=>2,i=>6} 88ffffff0e130a353b000000 88ffffffffffffff0e130a353b000000 88ffffffffffffff0e130a353b000000 ffffff88c46844b87c000000 88ffffff0e130a353b000000 88ffffff0e130a353b000000 ffffffffffffff88c46844b87c000000 88ffffff0e130a353b000000 ffffff88c46844b87c000000 - {e=>0,a=>116,d=>7,j=>1,c=>4,k=>0,h=>3,b=>1,g=>4,f=>3,i=>1} 740000002107230b01000000 74000000000000002107230b01000000 74000000000000002107230b01000000 0000007430e0706420000000 740000002107230b01000000 740000002107230b01000000 000000000000007430e0706420000000 740000002107230b01000000 0000007430e0706420000000 - {e=>4,a=>108,d=>2,j=>7,c=>4,k=>6,h=>2,b=>1,g=>0,f=>5,i=>0} 6c0000002122050237000000 6c000000000000002122050237000000 6c000000000000002122050237000000 0000006c3050a040f8000000 6c0000002122050237000000 6c0000002122050237000000 000000000000006c3050a040f8000000 6c0000002122050237000000 0000006c3050a040f8000000 - {e=>3,a=>-126,d=>7,j=>0,c=>5,k=>6,h=>1,b=>0,g=>1,f=>7,i=>3} 82ffffff281f0f1930000000 82ffffffffffffff281f0f1930000000 82ffffffffffffff281f0f1930000000 ffffff8214ece42c18000000 82ffffff281f0f1930000000 82ffffff281f0f1930000000 ffffffffffffff8214ece42c18000000 82ffffff281f0f1930000000 ffffff8214ece42c18000000 - {e=>2,a=>-78,d=>3,j=>3,c=>7,k=>4,h=>1,b=>7,g=>2,f=>1,i=>2} b2ffffff3f13111123000000 b2ffffffffffffff3f13111123000000 b2ffffffffffffff3f13111123000000 ffffffb2fc68282870000000 b2ffffff3f13111123000000 b2ffffff3f13111123000000 ffffffffffffffb2fc68282870000000 b2ffffff3f13111123000000 ffffffb2fc68282870000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>7,a=>14,d=>4,j=>1,l=>0,c=>6,k=>4,h=>3,b=>1,g=>2,f=>7,i=>1} 0e000000313c170b21000000 0e00000000000000313c170b21000000 0e00000000000000313c170b21000000 0000000e389ce86430000000 0e000000313c170b21000000 0e000000313c170b21000000 000000000000000e389ce86430000000 0e000000313c170b21000000 0000000e389ce86430000000 - {e=>0,a=>121,d=>5,j=>2,l=>2,c=>3,k=>1,h=>2,b=>0,g=>4,f=>2,i=>0} 79000000180522020a020000 7900000000000000180522020a020000 7900000000000000180522020a020000 000000790ca0504044400000 79000000180522020a020000 79000000180522020a020000 00000000000000790ca0504044400000 79000000180522020a020000 000000790ca0504044400000 - {e=>5,a=>-2,d=>5,j=>7,l=>4,c=>3,k=>0,h=>2,b=>2,g=>6,f=>3,i=>0} feffffff1a2d330207040000 feffffffffffffff1a2d330207040000 feffffffffffffff1a2d330207040000 fffffffe4cb47840e0800000 feffffff1a2d330207040000 feffffff1a2d330207040000 fffffffffffffffe4cb47840e0800000 feffffff1a2d330207040000 fffffffe4cb47840e0800000 - {e=>4,a=>8,d=>2,j=>4,l=>3,c=>7,k=>2,h=>6,b=>4,g=>0,f=>5,i=>2} 080000003c22051614030000 08000000000000003c22051614030000 08000000000000003c22051614030000 000000089c50a0c888600000 080000003c22051614030000 080000003c22051614030000 00000000000000089c50a0c888600000 080000003c22051614030000 000000089c50a0c888600000 - {e=>1,a=>-123,d=>4,j=>6,l=>2,c=>4,k=>3,h=>5,b=>7,g=>1,f=>5,i=>6} 85ffffff270c0d351e020000 85ffffffffffffff270c0d351e020000 85ffffffffffffff270c0d351e020000 ffffff85f084a4b8cc400000 85ffffff270c0d351e020000 85ffffff270c0d351e020000 ffffffffffffff85f084a4b8cc400000 85ffffff270c0d351e020000 ffffff85f084a4b8cc400000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>5,a=>-111,m=>3,d=>7,j=>6,l=>5,c=>6,k=>6,h=>6,b=>0,g=>4,f=>1,i=>2} 91ffffff302f2116361d0000 91ffffffffffffff302f2116361d0000 91ffffffffffffff302f2116361d0000 ffffff9118f430c8d8ac0000 91ffffff302f2116361d0000 91ffffff302f2116361d0000 ffffffffffffff9118f430c8d8ac0000 91ffffff302f2116361d0000 ffffff9118f430c8d8ac0000 - {e=>4,a=>-44,m=>0,d=>4,j=>5,l=>1,c=>5,k=>0,h=>2,b=>2,g=>4,f=>7,i=>6} d4ffffff2a24273205010000 d4ffffffffffffff2a24273205010000 d4ffffffffffffff2a24273205010000 ffffffd45490f058a0200000 d4ffffff2a24273205010000 d4ffffff2a24273205010000 ffffffffffffffd45490f058a0200000 d4ffffff2a24273205010000 ffffffd45490f058a0200000 - {e=>7,a=>-24,m=>0,d=>0,j=>3,l=>1,c=>5,k=>5,h=>1,b=>2,g=>3,f=>5,i=>4} e8ffffff2a381d212b010000 e8ffffffffffffff2a381d212b010000 e8ffffffffffffff2a381d212b010000 ffffffe8541cac3074200000 e8ffffff2a381d212b010000 e8ffffff2a381d212b010000 ffffffffffffffe8541cac3074200000 e8ffffff2a381d212b010000 ffffffe8541cac3074200000 - {e=>4,a=>96,m=>2,d=>0,j=>1,l=>2,c=>2,k=>4,h=>4,b=>4,g=>3,f=>7,i=>2} 6000000014201f1421120000 600000000000000014201f1421120000 600000000000000014201f1421120000 000000608810ec8830480000 6000000014201f1421120000 6000000014201f1421120000 00000000000000608810ec8830480000 6000000014201f1421120000 000000608810ec8830480000 - {e=>2,a=>-3,m=>4,d=>0,j=>4,l=>5,c=>7,k=>3,h=>7,b=>5,g=>0,f=>1,i=>6} fdffffff3d1001371c250000 fdffffffffffffff3d1001371c250000 fdffffffffffffff3d1001371c250000 fffffffdbc0820f88cb00000 fdffffff3d1001371c250000 fdffffff3d1001371c250000 fffffffffffffffdbc0820f88cb00000 fdffffff3d1001371c250000 fffffffdbc0820f88cb00000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>5,n=>3,a=>-107,m=>1,d=>3,j=>7,l=>5,c=>0,k=>2,h=>0,b=>6,g=>2,f=>2,i=>7} 95ffffff062b1238170d0300 95ffffffffffffff062b1238170d0300 95ffffffffffffff062b1238170d0300 ffffff95c074481ce8a46000 95ffffff062b1238170d0300 95ffffff062b1238170d0300 ffffffffffffff95c074481ce8a46000 95ffffff062b1238170d0300 ffffff95c074481ce8a46000 - {e=>7,n=>1,a=>9,m=>6,d=>1,j=>2,l=>4,c=>7,k=>6,h=>7,b=>5,g=>4,f=>4,i=>6} 090000003d39243732340100 09000000000000003d39243732340100 09000000000000003d39243732340100 00000009bc3c90f858982000 090000003d39243732340100 090000003d39243732340100 0000000000000009bc3c90f858982000 090000003d39243732340100 00000009bc3c90f858982000 - {e=>2,n=>1,a=>-50,m=>7,d=>3,j=>1,l=>6,c=>0,k=>2,h=>7,b=>2,g=>1,f=>5,i=>6} ceffffff02130d37113e0100 ceffffffffffffff02130d37113e0100 ceffffffffffffff02130d37113e0100 ffffffce4068a4f828dc2000 ceffffff02130d37113e0100 ceffffff02130d37113e0100 ffffffffffffffce4068a4f828dc2000 ceffffff02130d37113e0100 ffffffce4068a4f828dc2000 - {e=>7,n=>4,a=>123,m=>1,d=>1,j=>2,l=>4,c=>4,k=>7,h=>0,b=>4,g=>6,f=>0,i=>6} 7b000000243930303a0c0400 7b00000000000000243930303a0c0400 7b00000000000000243930303a0c0400 0000007b903c18185c848000 7b000000243930303a0c0400 7b000000243930303a0c0400 000000000000007b903c18185c848000 7b000000243930303a0c0400 0000007b903c18185c848000 - {e=>2,n=>4,a=>-2,m=>5,d=>3,j=>4,l=>4,c=>3,k=>2,h=>7,b=>4,g=>7,f=>3,i=>4} feffffff1c133b27142c0400 feffffffffffffff1c133b27142c0400 feffffffffffffff1c133b27142c0400 fffffffe8c687cf088948000 feffffff1c133b27142c0400 feffffff1c133b27142c0400 fffffffffffffffe8c687cf088948000 feffffff1c133b27142c0400 fffffffe8c687cf088948000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>2,n=>2,a=>66,m=>1,d=>2,j=>2,l=>3,c=>0,k=>3,h=>7,b=>2,g=>5,f=>1,o=>-57,i=>2} 42000000021229171a0b0200c7ff0000 4200000000000000021229171a0b0200c7ff000000000000 4200000000000000021229171a0b0200c7ff000000000000 00000042404834e84c644000ffc70000 42000000021229171a0b0200c7ff0000 42000000021229171a0b0200c7ff0000 0000000000000042404834e84c644000ffc7000000000000 42000000021229171a0b0200c7ff0000 00000042404834e84c644000ffc70000 - {e=>5,n=>3,a=>-74,m=>0,d=>7,j=>6,l=>1,c=>4,k=>7,h=>6,b=>7,g=>3,f=>5,o=>39,i=>2} b6ffffff272f1d163e01030027000000 b6ffffffffffffff272f1d163e0103002700000000000000 b6ffffffffffffff272f1d163e0103002700000000000000 ffffffb6f0f4acc8dc20600000270000 b6ffffff272f1d163e01030027000000 b6ffffff272f1d163e01030027000000 ffffffffffffffb6f0f4acc8dc2060000027000000000000 b6ffffff272f1d163e01030027000000 ffffffb6f0f4acc8dc20600000270000 - {e=>0,n=>4,a=>-119,m=>6,d=>5,j=>3,l=>4,c=>5,k=>2,h=>2,b=>3,g=>4,f=>1,o=>-9,i=>4} 89ffffff2b05212213340400f7ff0000 89ffffffffffffff2b05212213340400f7ff000000000000 89ffffffffffffff2b05212213340400f7ff000000000000 ffffff8974a0305068988000fff70000 89ffffff2b05212213340400f7ff0000 89ffffff2b05212213340400f7ff0000 ffffffffffffff8974a0305068988000fff7000000000000 89ffffff2b05212213340400f7ff0000 ffffff8974a0305068988000fff70000 - {e=>3,n=>6,a=>-85,m=>7,d=>1,j=>6,l=>3,c=>7,k=>4,h=>4,b=>2,g=>5,f=>0,o=>120,i=>0} abffffff3a192804263b060078000000 abffffffffffffff3a192804263b06007800000000000000 abffffffffffffff3a192804263b06007800000000000000 ffffffab5c2c1480d07cc00000780000 abffffff3a192804263b060078000000 abffffff3a192804263b060078000000 ffffffffffffffab5c2c1480d07cc0000078000000000000 abffffff3a192804263b060078000000 ffffffab5c2c1480d07cc00000780000 - {e=>1,n=>6,a=>5,m=>5,d=>5,j=>2,l=>1,c=>4,k=>2,h=>0,b=>7,g=>0,f=>2,o=>-21,i=>6} 05000000270d023012290600ebff0000 0500000000000000270d023012290600ebff000000000000 0500000000000000270d023012290600ebff000000000000 00000005f0a440184834c000ffeb0000 05000000270d023012290600ebff0000 05000000270d023012290600ebff0000 0000000000000005f0a440184834c000ffeb000000000000 05000000270d023012290600ebff0000 00000005f0a440184834c000ffeb0000 = struct int_wrap { int a:3; }; - {a=>3} 03000000 03000000 03000000 60000000 03000000 03000000 60000000 03000000 60000000 - {a=>-2} 06000000 06000000 06000000 c0000000 06000000 06000000 c0000000 06000000 c0000000 - {a=>-2} 06000000 06000000 06000000 c0000000 06000000 06000000 c0000000 06000000 c0000000 - {a=>2} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>1} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 = struct int_wrap { int a:3; int b:3; }; - {a=>-4,b=>-1} 3c000000 3c000000 3c000000 9c000000 3c000000 3c000000 9c000000 3c000000 9c000000 - {a=>-1,b=>-1} 3f000000 3f000000 3f000000 fc000000 3f000000 3f000000 fc000000 3f000000 fc000000 - {a=>2,b=>3} 1a000000 1a000000 1a000000 4c000000 1a000000 1a000000 4c000000 1a000000 4c000000 - {a=>-2,b=>-4} 26000000 26000000 26000000 d0000000 26000000 26000000 d0000000 26000000 d0000000 - {a=>-2,b=>1} 0e000000 0e000000 0e000000 c4000000 0e000000 0e000000 c4000000 0e000000 c4000000 = struct int_wrap { int a:3; int b:3; int c:3; }; - {c=>-2,a=>-3,b=>2} 95010000 95010000 95010000 ab000000 95010000 95010000 ab000000 95010000 ab000000 - {c=>-3,a=>-4,b=>3} 5c010000 5c010000 5c010000 8e800000 5c010000 5c010000 8e800000 5c010000 8e800000 - {c=>2,a=>1,b=>3} 99000000 99000000 99000000 2d000000 99000000 99000000 2d000000 99000000 2d000000 - {c=>-4,a=>-4,b=>-1} 3c010000 3c010000 3c010000 9e000000 3c010000 3c010000 9e000000 3c010000 9e000000 - {c=>-1,a=>-3,b=>-4} e5010000 e5010000 e5010000 b3800000 e5010000 e5010000 b3800000 e5010000 b3800000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; }; - {c=>-1,a=>0,b=>-1,d=>0} f8010000 f8010000 f8010000 1f800000 f8010000 f8010000 1f800000 f8010000 1f800000 - {c=>-2,a=>-2,b=>1,d=>2} 8e050000 8e050000 8e050000 c7200000 8e050000 8e050000 c7200000 8e050000 c7200000 - {c=>-2,a=>0,b=>-4,d=>2} a0050000 a0050000 a0050000 13200000 a0050000 a0050000 13200000 a0050000 13200000 - {c=>-3,a=>1,b=>-4,d=>3} 61070000 61070000 61070000 32b00000 61070000 61070000 32b00000 61070000 32b00000 - {c=>1,a=>-2,b=>2,d=>0} 56000000 56000000 56000000 c8800000 56000000 56000000 c8800000 56000000 c8800000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; }; - {e=>-3,c=>-3,a=>1,b=>-4,d=>-4} 61590000 61590000 61590000 32ca0000 61590000 61590000 32ca0000 61590000 32ca0000 - {e=>-3,c=>2,a=>0,b=>1,d=>0} 88500000 88500000 88500000 050a0000 88500000 88500000 050a0000 88500000 050a0000 - {e=>-3,c=>3,a=>2,b=>-1,d=>0} fa500000 fa500000 fa500000 5d8a0000 fa500000 fa500000 5d8a0000 fa500000 5d8a0000 - {e=>1,c=>-2,a=>-2,b=>-2,d=>3} b6170000 b6170000 b6170000 db320000 b6170000 b6170000 db320000 b6170000 db320000 - {e=>3,c=>1,a=>-1,b=>2,d=>-2} 573c0000 573c0000 573c0000 e8e60000 573c0000 573c0000 e8e60000 573c0000 e8e60000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-1,c=>-2,a=>-2,b=>2,d=>1,f=>3} 96f30100 96f30100 96f30100 cb1ec000 96f30100 96f30100 cb1ec000 96f30100 cb1ec000 - {e=>-3,c=>-4,a=>3,b=>2,d=>1,f=>-3} 13d30200 13d30200 13d30200 6a1b4000 13d30200 13d30200 6a1b4000 13d30200 6a1b4000 - {e=>-4,c=>0,a=>-1,b=>-4,d=>-1,f=>-2} 274e0300 274e0300 274e0300 f0798000 274e0300 274e0300 f0798000 274e0300 f0798000 - {e=>-1,c=>-4,a=>-1,b=>1,d=>0,f=>-3} 0ff10200 0ff10200 0ff10200 e60f4000 0ff10200 0ff10200 e60f4000 0ff10200 e60f4000 - {e=>-4,c=>-2,a=>1,b=>3,d=>2,f=>-3} 99c50200 99c50200 99c50200 2f294000 99c50200 99c50200 2f294000 99c50200 2f294000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-4,c=>1,a=>-4,g=>0,b=>-2,d=>0,f=>-3} 74c00200 74c00200 74c00200 98894000 74c00200 74c00200 98894000 74c00200 98894000 - {e=>-2,c=>0,a=>-4,g=>3,b=>-4,d=>0,f=>-3} 24e00e00 24e00e00 24e00e00 900d5800 24e00e00 24e00e00 900d5800 24e00e00 900d5800 - {e=>0,c=>1,a=>3,g=>2,b=>-3,d=>0,f=>0} 6b000800 6b000800 6b000800 74801000 6b000800 6b000800 74801000 6b000800 74801000 - {e=>-4,c=>-2,a=>-1,g=>3,b=>1,d=>1,f=>0} 8f430c00 8f430c00 8f430c00 e7181800 8f430c00 8f430c00 e7181800 8f430c00 e7181800 - {e=>2,c=>-2,a=>-3,g=>0,b=>-3,d=>1,f=>-2} ad230300 ad230300 ad230300 b7158000 ad230300 ad230300 b7158000 ad230300 b7158000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>-2,a=>3,d=>-1,c=>-4,h=>-2,b=>-1,g=>0,f=>-4} 3b6fc200 3b6fc200 3b6fc200 7e7d0600 3b6fc200 3b6fc200 7e7d0600 3b6fc200 7e7d0600 - {e=>3,a=>-4,d=>1,c=>1,h=>0,b=>2,g=>-3,f=>2} 54321500 54321500 54321500 8896a800 54321500 54321500 8896a800 54321500 8896a800 - {e=>2,a=>-2,d=>2,c=>3,h=>-3,b=>3,g=>3,f=>-4} de24ae00 de24ae00 de24ae00 cda51d00 de24ae00 de24ae00 cda51d00 de24ae00 cda51d00 - {e=>2,a=>-1,d=>-1,c=>1,h=>-3,b=>-4,g=>2,f=>-4} 672eaa00 672eaa00 672eaa00 f0f51500 672eaa00 672eaa00 f0f51500 672eaa00 f0f51500 - {e=>0,a=>0,d=>0,c=>-4,h=>2,b=>3,g=>3,f=>0} 18014c00 18014c00 18014c00 0e001a00 18014c00 18014c00 0e001a00 18014c00 0e001a00 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>-4,a=>2,d=>-2,c=>-2,h=>3,b=>-3,g=>-2,f=>-3,i=>0} aacd7a00 aacd7a00 aacd7a00 57697300 aacd7a00 aacd7a00 57697300 aacd7a00 57697300 - {e=>-4,a=>-1,d=>2,c=>3,h=>1,b=>-1,g=>0,f=>-1,i=>0} ffc42300 ffc42300 ffc42300 fda9c100 ffc42300 ffc42300 fda9c100 ffc42300 fda9c100 - {e=>2,a=>0,d=>-1,c=>2,h=>2,b=>1,g=>3,f=>-1,i=>0} 88ae4f00 88ae4f00 88ae4f00 0575da00 88ae4f00 88ae4f00 0575da00 88ae4f00 0575da00 - {e=>-3,a=>-4,d=>2,c=>-1,h=>-3,b=>2,g=>1,f=>-3,i=>-3} d4d5a605 d4d5a605 d4d5a605 8bab4da0 d4d5a605 d4d5a605 8bab4da0 d4d5a605 8bab4da0 - {e=>1,a=>-1,d=>-1,c=>-1,h=>0,b=>-1,g=>-3,f=>-3,i=>2} ff9f1602 ff9f1602 ff9f1602 fff36840 ff9f1602 ff9f1602 fff36840 ff9f1602 fff36840 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-3,a=>0,d=>-3,j=>-4,c=>3,h=>-1,b=>-3,g=>1,f=>1,i=>-4} e8dae424 e8dae424 e8dae424 15da4f90 e8dae424 e8dae424 15da4f90 e8dae424 15da4f90 - {e=>1,a=>3,d=>-3,j=>2,c=>-3,h=>3,b=>-1,g=>1,f=>-1,i=>-4} 7b9b6714 7b9b6714 7b9b6714 7ed3cb88 7b9b6714 7b9b6714 7ed3cb88 7b9b6714 7ed3cb88 - {e=>-3,a=>-3,d=>1,j=>-4,c=>-4,h=>3,b=>-1,g=>-1,f=>-2,i=>0} 3d537f20 3d537f20 3d537f20 be1bbb10 3d537f20 3d537f20 be1bbb10 3d537f20 be1bbb10 - {e=>2,a=>0,d=>-4,j=>1,c=>3,h=>1,b=>-2,g=>1,f=>-2,i=>2} f028270a f028270a f028270a 19c58944 f028270a f028270a 19c58944 f028270a 19c58944 - {e=>-2,a=>1,d=>-1,j=>3,c=>-4,h=>2,b=>1,g=>0,f=>2,i=>3} 096f411b 096f411b 096f411b 267c826c 096f411b 096f411b 267c826c 096f411b 267c826c = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-4,a=>2,d=>-4,j=>2,c=>-3,k=>-1,h=>-1,b=>2,g=>-3,f=>-3,i=>-4} 52c9f61407000000 52c9f61407000000 52c9f61407000000 4ac96f88e0000000 52c9f61407000000 52c9f61407000000 4ac96f88e0000000 52c9f61407000000 4ac96f88e0000000 - {e=>3,a=>2,d=>-3,j=>-3,c=>-1,k=>-3,h=>-3,b=>0,g=>-4,f=>-3,i=>0} c2bbb22805000000 c2bbb22805000000 c2bbb22805000000 43d76514a0000000 c2bbb22805000000 c2bbb22805000000 43d76514a0000000 c2bbb22805000000 43d76514a0000000 - {e=>-2,a=>1,d=>3,j=>-4,c=>-1,k=>3,h=>3,b=>1,g=>1,f=>2,i=>-3} c967652503000000 c967652503000000 c967652503000000 27bc8bb060000000 c967652503000000 c967652503000000 27bc8bb060000000 c967652503000000 27bc8bb060000000 - {e=>2,a=>3,d=>-4,j=>-4,c=>0,k=>-4,h=>-4,b=>3,g=>3,f=>-3,i=>-2} 1ba88e2604000000 1ba88e2604000000 1ba88e2604000000 6c455cd080000000 1ba88e2604000000 1ba88e2604000000 6c455cd080000000 1ba88e2604000000 6c455cd080000000 - {e=>-1,a=>0,d=>-1,j=>-3,c=>-1,k=>2,h=>2,b=>-4,g=>-4,f=>-4,i=>-1} e07f522f02000000 e07f522f02000000 e07f522f02000000 13ff22f440000000 e07f522f02000000 e07f522f02000000 13ff22f440000000 e07f522f02000000 13ff22f440000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>3,d=>-2,j=>-3,l=>0,c=>-3,k=>3,h=>-3,b=>-1,g=>1,f=>-3,i=>1} 7bdda62903000000 7bdda62903000000 7bdda62903000000 7eeb4d3460000000 7bdda62903000000 7bdda62903000000 7eeb4d3460000000 7bdda62903000000 7eeb4d3460000000 - {e=>-2,a=>-1,d=>1,j=>3,l=>-3,c=>-2,k=>-1,h=>1,b=>3,g=>2,f=>-4,i=>2} 9f632a1a2f000000 9f632a1a2f000000 9f632a1a2f000000 ef1d114cf4000000 9f632a1a2f000000 9f632a1a2f000000 ef1d114cf4000000 9f632a1a2f000000 ef1d114cf4000000 - {e=>-3,a=>3,d=>3,j=>3,l=>3,c=>2,k=>2,h=>-2,b=>0,g=>1,f=>-3,i=>-1} 83d6c61f1a000000 83d6c61f1a000000 83d6c61f1a000000 613b4eec4c000000 83d6c61f1a000000 83d6c61f1a000000 613b4eec4c000000 83d6c61f1a000000 613b4eec4c000000 - {e=>1,a=>2,d=>-3,j=>-4,l=>-4,c=>-4,k=>-3,h=>0,b=>-4,g=>1,f=>2,i=>3} 221b052325000000 221b052325000000 221b052325000000 52528870b0000000 221b052325000000 221b052325000000 52528870b0000000 221b052325000000 52528870b0000000 - {e=>0,a=>-4,d=>3,j=>-1,l=>0,c=>-1,k=>-3,h=>-2,b=>-3,g=>0,f=>-3,i=>-1} ec87c23f05000000 ec87c23f05000000 ec87c23f05000000 97b146fca0000000 ec87c23f05000000 ec87c23f05000000 97b146fca0000000 ec87c23f05000000 97b146fca0000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>2,a=>3,m=>-2,d=>0,j=>-1,l=>0,c=>-3,k=>-4,h=>0,b=>1,g=>1,f=>0,i=>-1} 4b21043f84010000 4b21043f84010000 4b21043f84010000 668408fc83000000 4b21043f84010000 4b21043f84010000 668408fc83000000 4b21043f84010000 668408fc83000000 - {e=>1,a=>-1,m=>0,d=>3,j=>2,l=>-2,c=>1,k=>1,h=>-3,b=>0,g=>3,f=>0,i=>-1} 4716ac1731000000 4716ac1731000000 4716ac1731000000 e0b21de838000000 4716ac1731000000 4716ac1731000000 e0b21de838000000 4716ac1731000000 e0b21de838000000 - {e=>3,a=>0,m=>-3,d=>2,j=>-4,l=>-3,c=>-4,k=>-1,h=>2,b=>2,g=>2,f=>-3,i=>-2} 10b54a266f010000 10b54a266f010000 10b54a266f010000 0a2752d0f6800000 10b54a266f010000 10b54a266f010000 0a2752d0f6800000 10b54a266f010000 0a2752d0f6800000 - {e=>3,a=>1,m=>0,d=>3,j=>0,l=>3,c=>-4,k=>-1,h=>-3,b=>-3,g=>-3,f=>1,i=>1} 29b7b4011f000000 29b7b4011f000000 29b7b4011f000000 36366d20ec000000 29b7b4011f000000 29b7b4011f000000 36366d20ec000000 29b7b4011f000000 36366d20ec000000 - {e=>-4,a=>-3,m=>1,d=>1,j=>-4,l=>0,c=>0,k=>0,h=>-1,b=>3,g=>1,f=>2,i=>3} 1d42e52340000000 1d42e52340000000 1d42e52340000000 ac188f7000800000 1d42e52340000000 1d42e52340000000 ac188f7000800000 1d42e52340000000 ac188f7000800000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n; }; - {e=>-4,n=>-50,a=>0,m=>-1,d=>-4,j=>-4,l=>3,c=>-4,k=>2,h=>2,b=>0,g=>1,f=>-1,i=>-3} 00c94725da010000ceffffff 00c94725da010000ceffffff 00c94725da010000ceffffff 0249cab04f800000ffffffce 00c94725da010000ceffffff 00c94725da010000ceffffff 0249cab04f800000ffffffce 00c94725da010000ceffffff 0249cab04f800000ffffffce - {e=>2,n=>59,a=>1,m=>2,d=>-1,j=>2,l=>0,c=>-3,k=>0,h=>-2,b=>-3,g=>-3,f=>0,i=>0} 692fd410800000003b000000 692fd410800000003b000000 692fd410800000003b000000 36f42e08010000000000003b 692fd410800000003b000000 692fd410800000003b000000 36f42e08010000000000003b 692fd410800000003b000000 36f42e08010000000000003b - {e=>3,n=>94,a=>2,m=>2,d=>-4,j=>-2,l=>-2,c=>-3,k=>-1,h=>-3,b=>-1,g=>-2,f=>2,i=>2} 7a39b932b70000005e000000 7a39b932b70000005e000000 7a39b932b70000005e000000 5ec6b558f90000000000005e 7a39b932b70000005e000000 7a39b932b70000005e000000 5ec6b558f90000000000005e 7a39b932b70000005e000000 5ec6b558f90000000000005e - {e=>0,n=>126,a=>3,m=>1,d=>0,j=>0,l=>2,c=>-2,k=>-1,h=>-4,b=>2,g=>-3,f=>0,i=>0} 93019400570000007e000000 93019400570000007e000000 93019400570000007e000000 6b002c00e88000000000007e 93019400570000007e000000 93019400570000007e000000 6b002c00e88000000000007e 93019400570000007e000000 6b002c00e88000000000007e - {e=>3,n=>50,a=>-3,m=>2,d=>2,j=>-2,l=>-3,c=>-2,k=>3,h=>-1,b=>-2,g=>2,f=>-3,i=>-1} b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 bb2757f87500000000000032 b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 bb2757f87500000000000032 b5b5ea37ab00000032000000 bb2757f87500000000000032 = struct int_wrap { char a; int b:3; }; - {a=>-96,b=>2} a0020000 a0020000 a0020000 a0400000 a0020000 a0020000 a0400000 a0020000 a0400000 - {a=>-46,b=>2} d2020000 d2020000 d2020000 d2400000 d2020000 d2020000 d2400000 d2020000 d2400000 - {a=>-68,b=>3} bc030000 bc030000 bc030000 bc600000 bc030000 bc030000 bc600000 bc030000 bc600000 - {a=>0,b=>3} 00030000 00030000 00030000 00600000 00030000 00030000 00600000 00030000 00600000 - {a=>-26,b=>-2} e6060000 e6060000 e6060000 e6c00000 e6060000 e6060000 e6c00000 e6060000 e6c00000 = struct int_wrap { char a; int b:3; int c:3; }; - {c=>1,a=>123,b=>0} 7b080000 7b080000 7b080000 7b040000 7b080000 7b080000 7b040000 7b080000 7b040000 - {c=>-1,a=>-98,b=>2} 9e3a0000 9e3a0000 9e3a0000 9e5c0000 9e3a0000 9e3a0000 9e5c0000 9e3a0000 9e5c0000 - {c=>-3,a=>75,b=>-4} 4b2c0000 4b2c0000 4b2c0000 4b940000 4b2c0000 4b2c0000 4b940000 4b2c0000 4b940000 - {c=>-4,a=>-4,b=>-4} fc240000 fc240000 fc240000 fc900000 fc240000 fc240000 fc900000 fc240000 fc900000 - {c=>-1,a=>17,b=>1} 11390000 11390000 11390000 113c0000 11390000 11390000 113c0000 11390000 113c0000 = struct int_wrap { char a; int b:3; int c:3; int d:3; }; - {c=>-4,a=>17,b=>-2,d=>1} 11660000 11660000 11660000 11d08000 11660000 11660000 11d08000 11660000 11d08000 - {c=>0,a=>75,b=>0,d=>3} 4bc00000 4bc00000 4bc00000 4b018000 4bc00000 4bc00000 4b018000 4bc00000 4b018000 - {c=>3,a=>-89,b=>1,d=>1} a7590000 a7590000 a7590000 a72c8000 a7590000 a7590000 a72c8000 a7590000 a72c8000 - {c=>2,a=>86,b=>2,d=>3} 56d20000 56d20000 56d20000 56498000 56d20000 56d20000 56498000 56d20000 56498000 - {c=>-4,a=>53,b=>-1,d=>0} 35270000 35270000 35270000 35f00000 35270000 35270000 35f00000 35270000 35f00000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; }; - {e=>-4,c=>-3,a=>-104,b=>-2,d=>0} 982e0800 982e0800 982e0800 98d44000 982e0800 982e0800 98d44000 982e0800 98d44000 - {e=>0,c=>2,a=>8,b=>2,d=>-3} 08520100 08520100 08520100 084a8000 08520100 08520100 084a8000 08520100 084a8000 - {e=>0,c=>-2,a=>-41,b=>-2,d=>0} d7360000 d7360000 d7360000 d7d80000 d7360000 d7360000 d7d80000 d7360000 d7d80000 - {e=>-4,c=>-4,a=>56,b=>2,d=>-4} 38220900 38220900 38220900 38524000 38220900 38220900 38524000 38220900 38524000 - {e=>-3,c=>3,a=>-43,b=>-2,d=>-3} d55e0b00 d55e0b00 d55e0b00 d5ced000 d55e0b00 d55e0b00 d5ced000 d55e0b00 d5ced000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-4,c=>1,a=>119,b=>1,d=>1,f=>1} 77491800 77491800 77491800 7724c200 77491800 77491800 7724c200 77491800 7724c200 - {e=>-1,c=>-3,a=>-91,b=>-2,d=>2,f=>-4} a5ae4e00 a5ae4e00 a5ae4e00 a5d57800 a5ae4e00 a5ae4e00 a5d57800 a5ae4e00 a5d57800 - {e=>0,c=>-4,a=>-43,b=>2,d=>0,f=>-1} d5227000 d5227000 d5227000 d5500e00 d5227000 d5227000 d5500e00 d5227000 d5500e00 - {e=>1,c=>-3,a=>121,b=>2,d=>1,f=>-3} 796a5200 796a5200 796a5200 79549a00 796a5200 796a5200 79549a00 796a5200 79549a00 - {e=>1,c=>3,a=>12,b=>0,d=>1,f=>-2} 0c586200 0c586200 0c586200 0c0c9c00 0c586200 0c586200 0c0c9c00 0c586200 0c0c9c00 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>1,c=>3,a=>92,g=>2,b=>0,d=>-4,f=>-1} 5c187301 5c187301 5c187301 5c0e1e80 5c187301 5c187301 5c0e1e80 5c187301 5c0e1e80 - {e=>-3,c=>3,a=>70,g=>-1,b=>1,d=>2,f=>1} 46999a03 46999a03 46999a03 462d53c0 46999a03 46999a03 462d53c0 46999a03 462d53c0 - {e=>0,c=>2,a=>61,g=>-4,b=>-3,d=>-3,f=>0} 3d550102 3d550102 3d550102 3daa8100 3d550102 3d550102 3daa8100 3d550102 3daa8100 - {e=>1,c=>1,a=>-72,g=>-3,b=>2,d=>0,f=>0} b80a8202 b80a8202 b80a8202 b8441140 b80a8202 b80a8202 b8441140 b80a8202 b8441140 - {e=>3,c=>2,a=>36,g=>-3,b=>-1,d=>1,f=>-1} 2457f602 2457f602 2457f602 24e8bf40 2457f602 2457f602 24e8bf40 2457f602 24e8bf40 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>1,a=>2,d=>2,c=>-4,h=>1,b=>1,g=>3,f=>3} 02a1b205 02a1b205 02a1b205 023116c8 02a1b205 02a1b205 023116c8 02a1b205 023116c8 - {e=>-4,a=>-16,d=>-2,c=>2,h=>-3,b=>0,g=>-4,f=>-3} f0905916 f0905916 f0905916 f00b4b28 f0905916 f0905916 f00b4b28 f0905916 f00b4b28 - {e=>-3,a=>86,d=>2,c=>3,h=>-3,b=>0,g=>1,f=>-3} 5698da14 5698da14 5698da14 560d5a68 5698da14 5698da14 560d5a68 5698da14 560d5a68 - {e=>-2,a=>-5,d=>-2,c=>1,h=>2,b=>-1,g=>-4,f=>2} fb8f2d0a fb8f2d0a fb8f2d0a fbe76510 fb8f2d0a fb8f2d0a fbe76510 fb8f2d0a fbe76510 - {e=>3,a=>-13,d=>-3,c=>-2,h=>1,b=>-3,g=>2,f=>-2} f3756705 f3756705 f3756705 f3babc88 f3756705 f3756705 f3babc88 f3756705 f3babc88 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>0,a=>87,d=>-1,c=>-2,h=>-2,b=>-2,g=>1,f=>-3,i=>-3} 57f6d1b8 57f6d1b8 57f6d1b8 57db8a75 57f6d1b8 57f6d1b8 57db8a75 57f6d1b8 57db8a75 - {e=>0,a=>28,d=>-3,c=>-3,h=>1,b=>0,g=>-1,f=>2,i=>1} 1c68a127 1c68a127 1c68a127 1c1685c9 1c68a127 1c68a127 1c1685c9 1c68a127 1c1685c9 - {e=>3,a=>63,d=>3,c=>2,h=>-3,b=>-4,g=>-2,f=>-2,i=>2} 3fd46657 3fd46657 3fd46657 3f89bdaa 3fd46657 3fd46657 3f89bdaa 3fd46657 3f89bdaa - {e=>-4,a=>70,d=>3,c=>-4,h=>2,b=>-1,g=>-2,f=>3,i=>-3} 46e738ab 46e738ab 46e738ab 46f1c795 46e738ab 46e738ab 46f1c795 46e738ab 46f1c795 - {e=>-1,a=>16,d=>-4,c=>0,h=>-1,b=>-2,g=>-2,f=>2,i=>0} 10062f1f 10062f1f 10062f1f 10c275b8 10062f1f 10062f1f 10c275b8 10062f1f 10c275b8 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>3,a=>-82,d=>-3,j=>-4,c=>-2,h=>0,b=>-3,g=>2,f=>3,i=>0} ae75370104000000 ae75370104000000 ae75370104000000 aebab68080000000 ae75370104000000 ae75370104000000 aebab68080000000 ae75370104000000 aebab68080000000 - {e=>-2,a=>-73,d=>0,j=>-3,c=>-2,h=>2,b=>-4,g=>0,f=>0,i=>0} b7340c0805000000 b7340c0805000000 b7340c0805000000 b7986010a0000000 b7340c0805000000 b7340c0805000000 b7986010a0000000 b7340c0805000000 b7986010a0000000 - {e=>2,a=>-108,d=>3,j=>2,c=>2,h=>3,b=>1,g=>-1,f=>-2,i=>3} 94d1e46f02000000 94d1e46f02000000 94d1e46f02000000 9429addb40000000 94d1e46f02000000 94d1e46f02000000 9429addb40000000 94d1e46f02000000 9429addb40000000 - {e=>-1,a=>-101,d=>1,j=>2,c=>-4,h=>0,b=>2,g=>-1,f=>-3,i=>2} 9b62de4302000000 9b62de4302000000 9b62de4302000000 9b50fbc240000000 9b62de4302000000 9b62de4302000000 9b50fbc240000000 9b62de4302000000 9b50fbc240000000 - {e=>2,a=>67,d=>-1,j=>-1,c=>-4,h=>-4,b=>1,g=>-4,f=>-1,i=>-3} 43e175b207000000 43e175b207000000 43e175b207000000 4333af25e0000000 43e175b207000000 43e175b207000000 4333af25e0000000 43e175b207000000 4333af25e0000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-3,a=>-38,d=>-4,j=>0,c=>1,k=>3,h=>-1,b=>3,g=>-2,f=>2,i=>0} da0b2b1f18000000 da0b2b1f18000000 da0b2b1f18000000 da6655b80c000000 da0b2b1f18000000 da0b2b1f18000000 da6655b80c000000 da0b2b1f18000000 da6655b80c000000 - {e=>2,a=>-104,d=>-4,j=>-2,c=>2,k=>1,h=>0,b=>3,g=>1,f=>1,i=>-2} 981395c00e000000 981395c00e000000 981395c00e000000 986a2246c4000000 981395c00e000000 981395c00e000000 986a2246c4000000 981395c00e000000 986a2246c4000000 - {e=>-1,a=>-37,d=>-1,j=>-3,c=>-4,k=>-4,h=>-1,b=>1,g=>-3,f=>-4,i=>0} dbe1cf1e25000000 dbe1cf1e25000000 dbe1cf1e25000000 db33f978b0000000 dbe1cf1e25000000 dbe1cf1e25000000 db33f978b0000000 dbe1cf1e25000000 db33f978b0000000 - {e=>1,a=>93,d=>3,j=>0,c=>0,k=>0,h=>-2,b=>1,g=>3,f=>2,i=>1} 5dc1a23900000000 5dc1a23900000000 5dc1a23900000000 5d2194f100000000 5dc1a23900000000 5dc1a23900000000 5d2194f100000000 5dc1a23900000000 5d2194f100000000 - {e=>3,a=>41,d=>2,j=>-2,c=>3,k=>-1,h=>-3,b=>0,g=>-1,f=>0,i=>3} 299886773e000000 299886773e000000 299886773e000000 290d31ebdc000000 299886773e000000 299886773e000000 290d31ebdc000000 299886773e000000 290d31ebdc000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-1,a=>104,d=>3,j=>-3,l=>1,c=>-3,k=>3,h=>-2,b=>3,g=>-4,f=>-2,i=>-1} 68eb6efa5d000000 68eb6efa5d000000 68eb6efa5d000000 6875fd37ac800000 68eb6efa5d000000 68eb6efa5d000000 6875fd37ac800000 68eb6efa5d000000 6875fd37ac800000 - {e=>-1,a=>-32,d=>2,j=>-3,l=>3,c=>0,k=>0,h=>-2,b=>-2,g=>1,f=>0,i=>0} e0868e18c5000000 e0868e18c5000000 e0868e18c5000000 e0c17070a1800000 e0868e18c5000000 e0868e18c5000000 e0c17070a1800000 e0868e18c5000000 e0c17070a1800000 - {e=>0,a=>-7,d=>2,j=>3,l=>3,c=>2,k=>1,h=>-4,b=>1,g=>-3,f=>-3,i=>-2} f991d0d2cb000000 f991d0d2cb000000 f991d0d2cb000000 f9290b6665800000 f991d0d2cb000000 f991d0d2cb000000 f9290b6665800000 f991d0d2cb000000 f9290b6665800000 - {e=>-1,a=>78,d=>0,j=>1,l=>-2,c=>-2,k=>3,h=>1,b=>-2,g=>1,f=>1,i=>0} 4e369e0499010000 4e369e0499010000 4e369e0499010000 4ed872482f000000 4e369e0499010000 4e369e0499010000 4ed872482f000000 4e369e0499010000 4ed872482f000000 - {e=>2,a=>-39,d=>-4,j=>-4,l=>2,c=>3,k=>-1,h=>1,b=>2,g=>-3,f=>-2,i=>0} d91ae506bc000000 d91ae506bc000000 d91ae506bc000000 d94e2d489d000000 d91ae506bc000000 d91ae506bc000000 d94e2d489d000000 d91ae506bc000000 d94e2d489d000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>-4,a=>4,m=>-2,d=>-4,j=>2,l=>-2,c=>0,k=>1,h=>1,b=>2,g=>-3,f=>2,i=>1} 0402a9268a0d0000 0402a9268a0d0000 0402a9268a0d0000 0442454947600000 0402a9268a0d0000 0402a9268a0d0000 0442454947600000 0402a9268a0d0000 0442454947600000 - {e=>-1,a=>-76,m=>-1,d=>1,j=>0,l=>-1,c=>-4,k=>3,h=>-1,b=>-1,g=>2,f=>0,i=>-3} b4670ebdd80f0000 b4670ebdd80f0000 b4670ebdd80f0000 b4f0f0bd0ff00000 b4670ebdd80f0000 b4670ebdd80f0000 b4f0f0bd0ff00000 b4670ebdd80f0000 b4f0f0bd0ff00000 - {e=>3,a=>64,m=>-2,d=>-2,j=>-1,l=>1,c=>2,k=>2,h=>2,b=>1,g=>-2,f=>3,i=>-2} 409137cb570c0000 409137cb570c0000 409137cb570c0000 402b3796e8e00000 409137cb570c0000 409137cb570c0000 402b3796e8e00000 409137cb570c0000 402b3796e8e00000 - {e=>0,a=>13,m=>1,d=>-3,j=>0,l=>-3,c=>-4,k=>0,h=>-3,b=>0,g=>2,f=>3,i=>-1} 0d6031f540030000 0d6031f540030000 0d6031f540030000 0d1286af02900000 0d6031f540030000 0d6031f540030000 0d1286af02900000 0d6031f540030000 0d1286af02900000 - {e=>-3,a=>-31,m=>3,d=>3,j=>-3,l=>-3,c=>-3,k=>1,h=>-3,b=>-1,g=>3,f=>0,i=>-2} e1ef8ad54d070000 e1ef8ad54d070000 e1ef8ad54d070000 e1f5d0eea6b00000 e1ef8ad54d070000 e1ef8ad54d070000 e1f5d0eea6b00000 e1ef8ad54d070000 e1f5d0eea6b00000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>3,n=>0,a=>68,m=>2,d=>2,j=>-1,l=>0,c=>-1,k=>0,h=>-4,b=>-3,g=>2,f=>-2,i=>2} 44bd665107040000 44bd665107040000 44bd665107040000 44bd3ca2e0200000 44bd665107040000 44bd665107040000 44bd3ca2e0200000 44bd665107040000 44bd3ca2e0200000 - {e=>-3,n=>-2,a=>83,m=>3,d=>-3,j=>0,l=>-4,c=>-3,k=>-3,h=>0,b=>2,g=>-4,f=>-1,i=>2} 536a7b4228670000 536a7b4228670000 536a7b4228670000 5356df02163c0000 536a7b4228670000 536a7b4228670000 5356df02163c0000 536a7b4228670000 5356df02163c0000 - {e=>-4,n=>-1,a=>-51,m=>3,d=>-2,j=>-3,l=>-4,c=>3,k=>0,h=>2,b=>0,g=>0,f=>-3,i=>-3} cd9859a805770000 cd9859a805770000 cd9859a805770000 cd0f4a15a23e0000 cd9859a805770000 cd9859a805770000 cd0f4a15a23e0000 cd9859a805770000 cd0f4a15a23e0000 - {e=>-4,n=>-2,a=>53,m=>2,d=>0,j=>-4,l=>-1,c=>2,k=>-4,h=>-2,b=>0,g=>-1,f=>2,i=>1} 3510a83be4650000 3510a83be4650000 3510a83be4650000 350845f193ac0000 3510a83be4650000 3510a83be4650000 350845f193ac0000 3510a83be4650000 350845f193ac0000 - {e=>-4,n=>-4,a=>-114,m=>-1,d=>-1,j=>0,l=>3,c=>-1,k=>3,h=>1,b=>0,g=>1,f=>-4,i=>0} 8ef8c904d84e0000 8ef8c904d84e0000 8ef8c904d84e0000 8e1fc8480df80000 8ef8c904d84e0000 8ef8c904d84e0000 8e1fc8480df80000 8ef8c904d84e0000 8e1fc8480df80000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>2,n=>2,a=>81,m=>3,d=>2,j=>0,l=>1,c=>-2,k=>-1,h=>3,b=>-2,g=>-1,f=>3,o=>64,i=>2} 51b6b44f7826000040000000 51b6b44f7826000040000000 51b6b44f7826000040000000 51d927da1cb4000000000040 51b6b44f7826000040000000 51b6b44f7826000040000000 51d927da1cb4000000000040 51b6b44f7826000040000000 51d927da1cb4000000000040 - {e=>-3,n=>0,a=>114,m=>0,d=>1,j=>-1,l=>-4,c=>1,k=>0,h=>-3,b=>3,g=>-4,f=>-3,o=>31,i=>2} 724b5a56070100001f000000 724b5a56070100001f000000 724b5a56070100001f000000 7264db2ae20000000000001f 724b5a56070100001f000000 724b5a56070100001f000000 7264db2ae20000000000001f 724b5a56070100001f000000 7264db2ae20000000000001f - {e=>-2,n=>2,a=>-90,m=>-1,d=>-2,j=>1,l=>2,c=>-1,k=>-2,h=>-2,b=>-3,g=>2,f=>3,o=>11,i=>-2} a6bd3dd9b12e00000b000000 a6bd3dd9b12e00000b000000 a6bd3dd9b12e00000b000000 a6bf66b6397400000000000b a6bd3dd9b12e00000b000000 a6bd3dd9b12e00000b000000 a6bf66b6397400000000000b a6bd3dd9b12e00000b000000 a6bf66b6397400000000000b - {e=>-4,n=>1,a=>-83,m=>2,d=>0,j=>-3,l=>3,c=>-3,k=>0,h=>0,b=>0,g=>-3,f=>-3,o=>-60,i=>-1} ad28d8e2c5140000c4ffffff ad28d8e2c5140000c4ffffff ad28d8e2c5140000c4ffffff ad144b47a1a20000ffffffc4 ad28d8e2c5140000c4ffffff ad28d8e2c5140000c4ffffff ad144b47a1a20000ffffffc4 ad28d8e2c5140000c4ffffff ad144b47a1a20000ffffffc4 - {e=>3,n=>0,a=>-38,m=>-4,d=>2,j=>-3,l=>-4,c=>-2,k=>-4,h=>-3,b=>0,g=>-4,f=>-4,o=>-32,i=>-4} dab0469625090000e0ffffff dab0469625090000e0ffffff dab0469625090000e0ffffff da19392cb2400000ffffffe0 dab0469625090000e0ffffff dab0469625090000e0ffffff da19392cb2400000ffffffe0 dab0469625090000e0ffffff da19392cb2400000ffffffe0 = struct int_wrap { short a; int b:3; }; - {a=>69,b=>-1} 45000700 45000700 45000700 0045e000 45000700 45000700 0045e000 45000700 0045e000 - {a=>50,b=>1} 32000100 32000100 32000100 00322000 32000100 32000100 00322000 32000100 00322000 - {a=>40,b=>0} 28000000 28000000 28000000 00280000 28000000 28000000 00280000 28000000 00280000 - {a=>-10,b=>-4} f6ff0400 f6ff0400 f6ff0400 fff68000 f6ff0400 f6ff0400 fff68000 f6ff0400 fff68000 - {a=>-64,b=>-1} c0ff0700 c0ff0700 c0ff0700 ffc0e000 c0ff0700 c0ff0700 ffc0e000 c0ff0700 ffc0e000 = struct int_wrap { short a; int b:3; int c:3; }; - {c=>0,a=>106,b=>-1} 6a000700 6a000700 6a000700 006ae000 6a000700 6a000700 006ae000 6a000700 006ae000 - {c=>-3,a=>112,b=>0} 70002800 70002800 70002800 00701400 70002800 70002800 00701400 70002800 00701400 - {c=>-1,a=>75,b=>-4} 4b003c00 4b003c00 4b003c00 004b9c00 4b003c00 4b003c00 004b9c00 4b003c00 004b9c00 - {c=>1,a=>-46,b=>1} d2ff0900 d2ff0900 d2ff0900 ffd22400 d2ff0900 d2ff0900 ffd22400 d2ff0900 ffd22400 - {c=>-4,a=>22,b=>-4} 16002400 16002400 16002400 00169000 16002400 16002400 00169000 16002400 00169000 = struct int_wrap { short a; int b:3; int c:3; int d:3; }; - {c=>0,a=>-84,b=>-2,d=>-1} acffc601 acffc601 acffc601 ffacc380 acffc601 acffc601 ffacc380 acffc601 ffacc380 - {c=>0,a=>-79,b=>2,d=>-1} b1ffc201 b1ffc201 b1ffc201 ffb14380 b1ffc201 b1ffc201 ffb14380 b1ffc201 ffb14380 - {c=>-2,a=>102,b=>2,d=>0} 66003200 66003200 66003200 00665800 66003200 66003200 00665800 66003200 00665800 - {c=>-4,a=>117,b=>-3,d=>-2} 7500a501 7500a501 7500a501 0075b300 7500a501 7500a501 0075b300 7500a501 0075b300 - {c=>-1,a=>-97,b=>-1,d=>-2} 9fffbf01 9fffbf01 9fffbf01 ff9fff00 9fffbf01 9fffbf01 ff9fff00 9fffbf01 ff9fff00 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; }; - {e=>-1,c=>-2,a=>63,b=>0,d=>-4} 3f00300f 3f00300f 3f00300f 003f1a70 3f00300f 3f00300f 003f1a70 3f00300f 003f1a70 - {e=>2,c=>-1,a=>-22,b=>-2,d=>2} eaffbe04 eaffbe04 eaffbe04 ffeadd20 eaffbe04 eaffbe04 ffeadd20 eaffbe04 ffeadd20 - {e=>0,c=>1,a=>-97,b=>0,d=>3} 9fffc800 9fffc800 9fffc800 ff9f0580 9fffc800 9fffc800 ff9f0580 9fffc800 ff9f0580 - {e=>0,c=>-3,a=>-3,b=>-3,d=>3} fdffed00 fdffed00 fdffed00 fffdb580 fdffed00 fdffed00 fffdb580 fdffed00 fffdb580 - {e=>-2,c=>0,a=>-35,b=>-1,d=>-1} ddffc70d ddffc70d ddffc70d ffdde3e0 ddffc70d ddffc70d ffdde3e0 ddffc70d ffdde3e0 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-3,c=>0,a=>-77,b=>-2,d=>3,f=>3} b3ffc63a b3ffc63a b3ffc63a ffb3c1d6 b3ffc63a b3ffc63a ffb3c1d6 b3ffc63a ffb3c1d6 - {e=>-2,c=>1,a=>108,b=>2,d=>1,f=>2} 6c004a2c 6c004a2c 6c004a2c 006c44e4 6c004a2c 6c004a2c 006c44e4 6c004a2c 006c44e4 - {e=>-3,c=>3,a=>-37,b=>-2,d=>-3,f=>2} dbff5e2b dbff5e2b dbff5e2b ffdbced4 dbff5e2b dbff5e2b ffdbced4 dbff5e2b ffdbced4 - {e=>-2,c=>3,a=>-8,b=>-3,d=>-1,f=>-1} f8ffdd7d f8ffdd7d f8ffdd7d fff8afee f8ffdd7d f8ffdd7d fff8afee f8ffdd7d fff8afee - {e=>3,c=>-1,a=>-111,b=>-4,d=>-2,f=>-2} 91ffbc67 91ffbc67 91ffbc67 ff919f3c 91ffbc67 91ffbc67 ff919f3c 91ffbc67 ff919f3c = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-2,c=>1,a=>81,g=>-3,b=>2,d=>-3,f=>3} 51004a3d05000000 51004a3d05000000 51004a3d05000000 005146e6a0000000 51004a3d05000000 51004a3d05000000 005146e6a0000000 51004a3d05000000 005146e6a0000000 - {e=>1,c=>-2,a=>75,g=>-3,b=>-4,d=>-3,f=>-1} 4b00747305000000 4b00747305000000 4b00747305000000 004b9a9ea0000000 4b00747305000000 4b00747305000000 004b9a9ea0000000 4b00747305000000 004b9a9ea0000000 - {e=>1,c=>-4,a=>54,g=>-4,b=>-1,d=>-4,f=>-4} 3600274304000000 3600274304000000 3600274304000000 0036f21880000000 3600274304000000 3600274304000000 0036f21880000000 3600274304000000 0036f21880000000 - {e=>-1,c=>-2,a=>82,g=>3,b=>1,d=>-4,f=>-3} 5200315f03000000 5200315f03000000 5200315f03000000 00523a7a60000000 5200315f03000000 5200315f03000000 00523a7a60000000 5200315f03000000 00523a7a60000000 - {e=>0,c=>-2,a=>-94,g=>3,b=>-1,d=>-4,f=>3} a2ff373103000000 a2ff373103000000 a2ff373103000000 ffa2fa0660000000 a2ff373103000000 a2ff373103000000 ffa2fa0660000000 a2ff373103000000 ffa2fa0660000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>-2,a=>-123,d=>2,c=>3,h=>0,b=>2,g=>2,f=>-2} 85ff9a6c02000000 85ff9a6c02000000 85ff9a6c02000000 ff854d6c40000000 85ff9a6c02000000 85ff9a6c02000000 ff854d6c40000000 85ff9a6c02000000 ff854d6c40000000 - {e=>-4,a=>-75,d=>-2,c=>2,h=>-3,b=>0,g=>-4,f=>0} b5ff90092c000000 b5ff90092c000000 b5ff90092c000000 ffb50b4094000000 b5ff90092c000000 b5ff90092c000000 ffb50b4094000000 b5ff90092c000000 ffb50b4094000000 - {e=>-1,a=>-85,d=>0,c=>-4,h=>-4,b=>1,g=>-2,f=>-4} abff214e26000000 abff214e26000000 abff214e26000000 ffab3078d0000000 abff214e26000000 abff214e26000000 ffab3078d0000000 abff214e26000000 ffab3078d0000000 - {e=>-4,a=>94,d=>-1,c=>-4,h=>2,b=>-2,g=>-2,f=>3} 5e00e63916000000 5e00e63916000000 5e00e63916000000 005ed3c6c8000000 5e00e63916000000 5e00e63916000000 005ed3c6c8000000 5e00e63916000000 005ed3c6c8000000 - {e=>1,a=>26,d=>-3,c=>-3,h=>-3,b=>2,g=>-4,f=>2} 1a006a232c000000 1a006a232c000000 1a006a232c000000 001a569494000000 1a006a232c000000 1a006a232c000000 001a569494000000 1a006a232c000000 001a569494000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>-4,a=>-127,d=>1,c=>0,h=>3,b=>1,g=>-1,f=>3,i=>3} 81ff4138df000000 81ff4138df000000 81ff4138df000000 ff8120c6ed800000 81ff4138df000000 81ff4138df000000 ff8120c6ed800000 81ff4138df000000 ff8120c6ed800000 - {e=>-2,a=>-73,d=>-3,c=>1,h=>-3,b=>-1,g=>3,f=>-3,i=>-4} b7ff4f5d2b010000 b7ff4f5d2b010000 b7ff4f5d2b010000 ffb7e6ea76000000 b7ff4f5d2b010000 b7ff4f5d2b010000 ffb7e6ea76000000 b7ff4f5d2b010000 ffb7e6ea76000000 - {e=>-4,a=>-22,d=>2,c=>-4,h=>3,b=>2,g=>0,f=>3,i=>-2} eaffa23898010000 eaffa23898010000 eaffa23898010000 ffea51460f000000 eaffa23898010000 eaffa23898010000 ffea51460f000000 eaffa23898010000 ffea51460f000000 - {e=>3,a=>-124,d=>3,c=>2,h=>3,b=>0,g=>0,f=>2,i=>2} 84ffd02698000000 84ffd02698000000 84ffd02698000000 ff8409b40d000000 84ffd02698000000 84ffd02698000000 ff8409b40d000000 84ffd02698000000 ff8409b40d000000 - {e=>2,a=>115,d=>3,c=>1,h=>-3,b=>2,g=>3,f=>-1,i=>0} 7300ca742b000000 7300ca742b000000 7300ca742b000000 007345ae74000000 7300ca742b000000 7300ca742b000000 007345ae74000000 7300ca742b000000 007345ae74000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-4,a=>-21,d=>-2,j=>-2,c=>-1,h=>-1,b=>-2,g=>-2,f=>-3,i=>1} ebffbe597e0c0000 ebffbe597e0c0000 ebffbe597e0c0000 ffebdf4adce00000 ebffbe597e0c0000 ebffbe597e0c0000 ffebdf4adce00000 ebffbe597e0c0000 ffebdf4adce00000 - {e=>-3,a=>71,d=>1,j=>-1,c=>2,h=>0,b=>-4,g=>1,f=>-4,i=>-4} 4700544a010f0000 4700544a010f0000 4700544a010f0000 004788d822700000 4700544a010f0000 4700544a010f0000 004788d822700000 4700544a010f0000 004788d822700000 - {e=>-2,a=>-5,d=>-3,j=>3,c=>-3,h=>1,b=>-3,g=>3,f=>2,i=>-1} fbff6d2dcb070000 fbff6d2dcb070000 fbff6d2dcb070000 fffbb6e467b00000 fbff6d2dcb070000 fbff6d2dcb070000 fffbb6e467b00000 fbff6d2dcb070000 fffbb6e467b00000 - {e=>1,a=>-46,d=>3,j=>-2,c=>3,h=>-4,b=>-4,g=>-3,f=>-2,i=>0} d2ffdc62250c0000 d2ffdc62250c0000 d2ffdc62250c0000 ffd28d9cb0600000 d2ffdc62250c0000 d2ffdc62250c0000 ffd28d9cb0600000 d2ffdc62250c0000 ffd28d9cb0600000 - {e=>2,a=>-69,d=>-4,j=>0,c=>3,h=>3,b=>1,g=>2,f=>-2,i=>2} bbff19659a000000 bbff19659a000000 bbff19659a000000 ffbb2e2c4d000000 bbff19659a000000 bbff19659a000000 ffbb2e2c4d000000 bbff19659a000000 ffbb2e2c4d000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>3,a=>-20,d=>2,j=>-2,c=>-4,k=>3,h=>-1,b=>-1,g=>-2,f=>-4,i=>-3} ecffa7467e3d0000 ecffa7467e3d0000 ecffa7467e3d0000 ffecf138dee60000 ecffa7467e3d0000 ecffa7467e3d0000 ffecf138dee60000 ecffa7467e3d0000 ffecf138dee60000 - {e=>-1,a=>-104,d=>2,j=>-4,c=>1,k=>-2,h=>-1,b=>1,g=>-3,f=>-4,i=>1} 98ff894e7d680000 98ff894e7d680000 98ff894e7d680000 ff982578bccc0000 98ff894e7d680000 98ff894e7d680000 ff982578bccc0000 98ff894e7d680000 ff982578bccc0000 - {e=>3,a=>11,d=>3,j=>0,c=>2,k=>-3,h=>-3,b=>-2,g=>0,f=>-1,i=>-4} 0b00d67628510000 0b00d67628510000 0b00d67628510000 000bc9be160a0000 0b00d67628510000 0b00d67628510000 000bc9be160a0000 0b00d67628510000 000bc9be160a0000 - {e=>-1,a=>102,d=>2,j=>-2,c=>-4,k=>-4,h=>-1,b=>0,g=>-4,f=>-2,i=>2} 6600a06ebc4c0000 6600a06ebc4c0000 6600a06ebc4c0000 0066117c9d680000 6600a06ebc4c0000 6600a06ebc4c0000 0066117c9d680000 6600a06ebc4c0000 0066117c9d680000 - {e=>0,a=>-79,d=>-3,j=>-1,c=>0,k=>-2,h=>0,b=>3,g=>1,f=>-3,i=>-3} b1ff4351416f0000 b1ff4351416f0000 b1ff4351416f0000 ffb1628a22fc0000 b1ff4351416f0000 b1ff4351416f0000 ffb1628a22fc0000 b1ff4351416f0000 ffb1628a22fc0000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>-109,d=>-4,j=>-3,l=>-4,c=>-4,k=>-4,h=>-1,b=>1,g=>-1,f=>-4,i=>1} 93ff214b7f4a0200 93ff214b7f4a0200 93ff214b7f4a0200 ff933258fcd90000 93ff214b7f4a0200 93ff214b7f4a0200 ff933258fcd90000 93ff214b7f4a0200 ff933258fcd90000 - {e=>1,a=>-37,d=>-3,j=>-2,l=>-3,c=>2,k=>-3,h=>-4,b=>3,g=>-1,f=>-4,i=>-2} dbff5343a7dd0200 dbff5343a7dd0200 dbff5343a7dd0200 ffdb6a98f36b4000 dbff5343a7dd0200 dbff5343a7dd0200 ffdb6a98f36b4000 dbff5343a7dd0200 ffdb6a98f36b4000 - {e=>-3,a=>-27,d=>-3,j=>-2,l=>-3,c=>1,k=>1,h=>-2,b=>-4,g=>1,f=>3,i=>-4} e5ff4c3b319d0200 e5ff4c3b319d0200 e5ff4c3b319d0200 ffe586d63a634000 e5ff4c3b319d0200 e5ff4c3b319d0200 ffe586d63a634000 e5ff4c3b319d0200 ffe586d63a634000 - {e=>3,a=>-69,d=>-3,j=>-3,l=>-1,c=>-3,k=>1,h=>2,b=>3,g=>2,f=>0,i=>3} bbff6b07d29a0300 bbff6b07d29a0300 bbff6b07d29a0300 ffbb76b049d3c000 bbff6b07d29a0300 bbff6b07d29a0300 ffbb76b049d3c000 bbff6b07d29a0300 ffbb76b049d3c000 - {e=>0,a=>-52,d=>1,j=>2,l=>1,c=>-3,k=>-4,h=>0,b=>-3,g=>3,f=>-3,i=>0} ccff6d5003c40000 ccff6d5003c40000 ccff6d5003c40000 ffccb48a60284000 ccff6d5003c40000 ccff6d5003c40000 ffccb48a60284000 ccff6d5003c40000 ffccb48a60284000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>1,a=>-21,m=>-3,d=>-4,j=>-2,l=>2,c=>-4,k=>-2,h=>-4,b=>-4,g=>2,f=>-1,i=>2} ebff2473a26c1500 ebff2473a26c1500 ebff2473a26c1500 ffeb921e516ca800 ebff2473a26c1500 ebff2473a26c1500 ffeb921e516ca800 ebff2473a26c1500 ffeb921e516ca800 - {e=>-1,a=>-68,m=>-2,d=>-2,j=>0,l=>1,c=>3,k=>2,h=>-3,b=>0,g=>3,f=>-3,i=>0} bcff985f2ba01800 bcff985f2ba01800 bcff985f2ba01800 ffbc0f7a74047000 bcff985f2ba01800 bcff985f2ba01800 ffbc0f7a74047000 bcff985f2ba01800 ffbc0f7a74047000 - {e=>-1,a=>-32,m=>-3,d=>0,j=>1,l=>2,c=>2,k=>-2,h=>0,b=>0,g=>-2,f=>-2,i=>-3} e0ff106e46631500 e0ff106e46631500 e0ff106e46631500 ffe0087cc29ca800 e0ff106e46631500 e0ff106e46631500 ffe0087cc29ca800 e0ff106e46631500 ffe0087cc29ca800 - {e=>1,a=>-68,m=>0,d=>1,j=>-3,l=>3,c=>-4,k=>2,h=>-4,b=>0,g=>3,f=>-1,i=>2} bcff6072a3aa0100 bcff6072a3aa0100 bcff6072a3aa0100 ffbc109e7154c000 bcff6072a3aa0100 bcff6072a3aa0100 ffbc109e7154c000 bcff6072a3aa0100 ffbc109e7154c000 - {e=>-4,a=>-109,m=>-4,d=>2,j=>2,l=>-1,c=>-2,k=>2,h=>-1,b=>-4,g=>-1,f=>0,i=>-2} 93ffb408bfa51300 93ffb408bfa51300 93ffb408bfa51300 ff939940ff25e000 93ffb408bfa51300 93ffb408bfa51300 ff939940ff25e000 93ffb408bfa51300 ff939940ff25e000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>-2,n=>-4,a=>79,m=>-3,d=>3,j=>-2,l=>2,c=>-4,k=>-1,h=>0,b=>-1,g=>-4,f=>-4,i=>-4} 4f00e74c047d9500 4f00e74c047d9500 4f00e74c047d9500 004ff1e8826eac00 4f00e74c047d9500 4f00e74c047d9500 004ff1e8826eac00 4f00e74c047d9500 004ff1e8826eac00 - {e=>3,n=>0,a=>-114,m=>-3,d=>-1,j=>2,l=>-1,c=>0,k=>1,h=>0,b=>-1,g=>-1,f=>3,i=>0} 8effc73707941700 8effc73707941700 8effc73707941700 ff8ee3b6e023e800 8effc73707941700 8effc73707941700 ff8ee3b6e023e800 8effc73707941700 ff8ee3b6e023e800 - {e=>1,n=>0,a=>-17,m=>-1,d=>1,j=>2,l=>-2,c=>-4,k=>3,h=>-4,b=>-3,g=>-3,f=>0,i=>0} efff650225341f00 efff650225341f00 efff650225341f00 ffefb090b027b800 efff650225341f00 efff650225341f00 ffefb090b027b800 efff650225341f00 ffefb090b027b800 - {e=>2,n=>2,a=>-31,m=>0,d=>-4,j=>2,l=>-1,c=>0,k=>-2,h=>-1,b=>-3,g=>-4,f=>-2,i=>-1} e1ff0565fce54300 e1ff0565fce54300 e1ff0565fce54300 ffe1a22c9fadc200 e1ff0565fce54300 e1ff0565fce54300 ffe1a22c9fadc200 e1ff0565fce54300 ffe1a22c9fadc200 - {e=>-4,n=>3,a=>-41,m=>1,d=>-1,j=>0,l=>-2,c=>1,k=>-1,h=>-2,b=>1,g=>0,f=>0,i=>0} d7ffc90930706700 d7ffc90930706700 d7ffc90930706700 ffd727c0180f8b00 d7ffc90930706700 d7ffc90930706700 ffd727c0180f8b00 d7ffc90930706700 ffd727c0180f8b00 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>1,n=>0,a=>69,m=>-1,d=>-4,j=>1,l=>1,c=>-1,k=>-2,h=>-1,b=>-1,g=>-2,f=>-3,o=>1,i=>-1} 45003f53fee31c0001000000 45003f53fee31c0001000000 45003f53fee31c0001000000 0045fe1adf9c780000000001 45003f53fee31c0001000000 45003f53fee31c0001000000 0045fe1adf9c780000000001 45003f53fee31c0001000000 0045fe1adf9c780000000001 - {e=>2,n=>0,a=>-113,m=>3,d=>1,j=>1,l=>-1,c=>0,k=>3,h=>2,b=>-1,g=>-1,f=>-4,o=>-65,i=>-3} 8fff474457b30f00bfffffff 8fff474457b30f00bfffffff 8fff474457b30f00bfffffff ff8fe0a8ea97d800ffffffbf 8fff474457b30f00bfffffff 8fff474457b30f00bfffffff ff8fe0a8ea97d800ffffffbf 8fff474457b30f00bfffffff ff8fe0a8ea97d800ffffffbf - {e=>1,n=>-3,a=>-34,m=>0,d=>-1,j=>3,l=>0,c=>1,k=>3,h=>-1,b=>-1,g=>-1,f=>2,o=>-8,i=>0} deffcf233f36a000f8ffffff deffcf233f36a000f8ffffff deffcf233f36a000f8ffffff ffdee794fc360500fffffff8 deffcf233f36a000f8ffffff deffcf233f36a000f8ffffff ffdee794fc360500fffffff8 deffcf233f36a000f8ffffff ffdee794fc360500fffffff8 - {e=>3,n=>1,a=>84,m=>-2,d=>1,j=>1,l=>1,c=>2,k=>3,h=>3,b=>3,g=>-4,f=>3,o=>115,i=>-3} 540053365cb3380073000000 540053365cb3380073000000 540053365cb3380073000000 005468b68e96710000000073 540053365cb3380073000000 540053365cb3380073000000 005468b68e96710000000073 540053365cb3380073000000 005468b68e96710000000073 - {e=>3,n=>0,a=>-51,m=>-3,d=>-3,j=>2,l=>0,c=>3,k=>2,h=>0,b=>1,g=>1,f=>3,o=>-72,i=>-3} cdff593741251400b8ffffff cdff593741251400b8ffffff cdff593741251400b8ffffff ffcd2eb622a42800ffffffb8 cdff593741251400b8ffffff cdff593741251400b8ffffff ffcd2eb622a42800ffffffb8 cdff593741251400b8ffffff ffcd2eb622a42800ffffffb8 = struct int_wrap { int a; int b:3; }; - {a=>-84,b=>-2} acffffff06000000 acffffff06000000 acffffff06000000 ffffffacc0000000 acffffff06000000 acffffff06000000 ffffffacc0000000 acffffff06000000 ffffffacc0000000 - {a=>71,b=>2} 4700000002000000 4700000002000000 4700000002000000 0000004740000000 4700000002000000 4700000002000000 0000004740000000 4700000002000000 0000004740000000 - {a=>-81,b=>0} afffffff00000000 afffffff00000000 afffffff00000000 ffffffaf00000000 afffffff00000000 afffffff00000000 ffffffaf00000000 afffffff00000000 ffffffaf00000000 - {a=>-113,b=>-3} 8fffffff05000000 8fffffff05000000 8fffffff05000000 ffffff8fa0000000 8fffffff05000000 8fffffff05000000 ffffff8fa0000000 8fffffff05000000 ffffff8fa0000000 - {a=>16,b=>-1} 1000000007000000 1000000007000000 1000000007000000 00000010e0000000 1000000007000000 1000000007000000 00000010e0000000 1000000007000000 00000010e0000000 = struct int_wrap { int a; int b:3; int c:3; }; - {c=>-3,a=>53,b=>-4} 350000002c000000 350000002c000000 350000002c000000 0000003594000000 350000002c000000 350000002c000000 0000003594000000 350000002c000000 0000003594000000 - {c=>-3,a=>67,b=>-4} 430000002c000000 430000002c000000 430000002c000000 0000004394000000 430000002c000000 430000002c000000 0000004394000000 430000002c000000 0000004394000000 - {c=>1,a=>102,b=>2} 660000000a000000 660000000a000000 660000000a000000 0000006644000000 660000000a000000 660000000a000000 0000006644000000 660000000a000000 0000006644000000 - {c=>0,a=>-10,b=>1} f6ffffff01000000 f6ffffff01000000 f6ffffff01000000 fffffff620000000 f6ffffff01000000 f6ffffff01000000 fffffff620000000 f6ffffff01000000 fffffff620000000 - {c=>0,a=>-76,b=>0} b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 ffffffb400000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; }; - {c=>-1,a=>-33,b=>-1,d=>-1} dfffffffff010000 dfffffffff010000 dfffffffff010000 ffffffdfff800000 dfffffffff010000 dfffffffff010000 ffffffdfff800000 dfffffffff010000 ffffffdfff800000 - {c=>-4,a=>-87,b=>2,d=>-1} a9ffffffe2010000 a9ffffffe2010000 a9ffffffe2010000 ffffffa953800000 a9ffffffe2010000 a9ffffffe2010000 ffffffa953800000 a9ffffffe2010000 ffffffa953800000 - {c=>3,a=>19,b=>0,d=>3} 13000000d8000000 13000000d8000000 13000000d8000000 000000130d800000 13000000d8000000 13000000d8000000 000000130d800000 13000000d8000000 000000130d800000 - {c=>-4,a=>39,b=>0,d=>-1} 27000000e0010000 27000000e0010000 27000000e0010000 0000002713800000 27000000e0010000 27000000e0010000 0000002713800000 27000000e0010000 0000002713800000 - {c=>0,a=>-2,b=>3,d=>-4} feffffff03010000 feffffff03010000 feffffff03010000 fffffffe62000000 feffffff03010000 feffffff03010000 fffffffe62000000 feffffff03010000 fffffffe62000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; }; - {e=>1,c=>2,a=>-32,b=>1,d=>-2} e0ffffff91030000 e0ffffff91030000 e0ffffff91030000 ffffffe02b100000 e0ffffff91030000 e0ffffff91030000 ffffffe02b100000 e0ffffff91030000 ffffffe02b100000 - {e=>-4,c=>0,a=>12,b=>0,d=>2} 0c00000080080000 0c00000080080000 0c00000080080000 0000000c01400000 0c00000080080000 0c00000080080000 0000000c01400000 0c00000080080000 0000000c01400000 - {e=>-2,c=>1,a=>74,b=>0,d=>0} 4a000000080c0000 4a000000080c0000 4a000000080c0000 0000004a04600000 4a000000080c0000 4a000000080c0000 0000004a04600000 4a000000080c0000 0000004a04600000 - {e=>-3,c=>3,a=>-43,b=>-1,d=>-1} d5ffffffdf0b0000 d5ffffffdf0b0000 d5ffffffdf0b0000 ffffffd5efd00000 d5ffffffdf0b0000 d5ffffffdf0b0000 ffffffd5efd00000 d5ffffffdf0b0000 ffffffd5efd00000 - {e=>3,c=>3,a=>67,b=>1,d=>-1} 43000000d9070000 43000000d9070000 43000000d9070000 000000432fb00000 43000000d9070000 43000000d9070000 000000432fb00000 43000000d9070000 000000432fb00000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>0,c=>3,a=>-63,b=>2,d=>0,f=>1} c1ffffff1a100000 c1ffffff1a100000 c1ffffff1a100000 ffffffc14c020000 c1ffffff1a100000 c1ffffff1a100000 ffffffc14c020000 c1ffffff1a100000 ffffffc14c020000 - {e=>3,c=>3,a=>-76,b=>-1,d=>-4,f=>3} b4ffffff1f370000 b4ffffff1f370000 b4ffffff1f370000 ffffffb4ee360000 b4ffffff1f370000 b4ffffff1f370000 ffffffb4ee360000 b4ffffff1f370000 ffffffb4ee360000 - {e=>-1,c=>0,a=>45,b=>3,d=>3,f=>0} 2d000000c30e0000 2d000000c30e0000 2d000000c30e0000 0000002d61f00000 2d000000c30e0000 2d000000c30e0000 0000002d61f00000 2d000000c30e0000 0000002d61f00000 - {e=>1,c=>2,a=>117,b=>-1,d=>-3,f=>-2} 7500000057630000 7500000057630000 7500000057630000 00000075ea9c0000 7500000057630000 7500000057630000 00000075ea9c0000 7500000057630000 00000075ea9c0000 - {e=>-3,c=>-1,a=>75,b=>-4,d=>3,f=>3} 4b000000fc3a0000 4b000000fc3a0000 4b000000fc3a0000 0000004b9dd60000 4b000000fc3a0000 4b000000fc3a0000 0000004b9dd60000 4b000000fc3a0000 0000004b9dd60000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>2,c=>0,a=>94,g=>-4,b=>2,d=>2,f=>2} 5e00000082240200 5e00000082240200 5e00000082240200 0000005e41250000 5e00000082240200 5e00000082240200 0000005e41250000 5e00000082240200 0000005e41250000 - {e=>-4,c=>-3,a=>-22,g=>-3,b=>3,d=>3,f=>3} eaffffffebb80200 eaffffffebb80200 eaffffffebb80200 ffffffea75c74000 eaffffffebb80200 eaffffffebb80200 ffffffea75c74000 eaffffffebb80200 ffffffea75c74000 - {e=>3,c=>1,a=>14,g=>0,b=>1,d=>1,f=>1} 0e00000049160000 0e00000049160000 0e00000049160000 0000000e24b20000 0e00000049160000 0e00000049160000 0000000e24b20000 0e00000049160000 0000000e24b20000 - {e=>-3,c=>3,a=>-61,g=>-1,b=>-3,d=>-2,f=>-4} c3ffffff9dcb0300 c3ffffff9dcb0300 c3ffffff9dcb0300 ffffffc3af59c000 c3ffffff9dcb0300 c3ffffff9dcb0300 ffffffc3af59c000 c3ffffff9dcb0300 ffffffc3af59c000 - {e=>-1,c=>-2,a=>28,g=>2,b=>1,d=>0,f=>-3} 1c000000315e0100 1c000000315e0100 1c000000315e0100 0000001c387a8000 1c000000315e0100 1c000000315e0100 0000001c387a8000 1c000000315e0100 0000001c387a8000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>1,a=>115,d=>2,c=>1,h=>0,b=>1,g=>1,f=>3} 7300000089b20000 7300000089b20000 7300000089b20000 0000007325164000 7300000089b20000 7300000089b20000 0000007325164000 7300000089b20000 0000007325164000 - {e=>1,a=>19,d=>-2,c=>-3,h=>2,b=>-1,g=>-1,f=>-1} 13000000aff30b00 13000000aff30b00 13000000aff30b00 00000013f71fd000 13000000aff30b00 13000000aff30b00 00000013f71fd000 13000000aff30b00 00000013f71fd000 - {e=>2,a=>-115,d=>2,c=>-4,h=>0,b=>-2,g=>-3,f=>-3} 8dffffffa6d40200 8dffffffa6d40200 8dffffffa6d40200 ffffff8dd12b4000 8dffffffa6d40200 8dffffffa6d40200 ffffff8dd12b4000 8dffffffa6d40200 ffffff8dd12b4000 - {e=>-1,a=>126,d=>2,c=>-3,h=>2,b=>-4,g=>2,f=>2} 7e000000ac2e0900 7e000000ac2e0900 7e000000ac2e0900 0000007e95749000 7e000000ac2e0900 7e000000ac2e0900 0000007e95749000 7e000000ac2e0900 0000007e95749000 - {e=>3,a=>123,d=>3,c=>0,h=>-4,b=>-2,g=>1,f=>-4} 7b000000c6c61000 7b000000c6c61000 7b000000c6c61000 0000007bc1b86000 7b000000c6c61000 7b000000c6c61000 0000007bc1b86000 7b000000c6c61000 0000007bc1b86000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>0,a=>-116,d=>-4,c=>0,h=>-3,b=>0,g=>-4,f=>3,i=>-1} 8cffffff0031f600 8cffffff0031f600 8cffffff0031f600 ffffff8c02072f00 8cffffff0031f600 8cffffff0031f600 ffffff8c02072f00 8cffffff0031f600 ffffff8c02072f00 - {e=>-1,a=>-120,d=>0,c=>0,h=>-2,b=>2,g=>-1,f=>1,i=>-4} 88ffffff029e9b00 88ffffff029e9b00 88ffffff029e9b00 ffffff884073f400 88ffffff029e9b00 88ffffff029e9b00 ffffff884073f400 88ffffff029e9b00 ffffff884073f400 - {e=>0,a=>89,d=>0,c=>-3,h=>3,b=>-2,g=>0,f=>-1,i=>-4} 590000002e708c00 590000002e708c00 590000002e708c00 00000059d40e1c00 590000002e708c00 590000002e708c00 00000059d40e1c00 590000002e708c00 00000059d40e1c00 - {e=>2,a=>107,d=>-1,c=>0,h=>-4,b=>0,g=>-2,f=>1,i=>2} 6b000000c0155300 6b000000c0155300 6b000000c0155300 0000006b03a3a200 6b000000c0155300 6b000000c0155300 0000006b03a3a200 6b000000c0155300 0000006b03a3a200 - {e=>1,a=>126,d=>-2,c=>-1,h=>-3,b=>1,g=>3,f=>-4,i=>-2} 7e000000b9c3d500 7e000000b9c3d500 7e000000b9c3d500 0000007e3f18ee00 7e000000b9c3d500 7e000000b9c3d500 0000007e3f18ee00 7e000000b9c3d500 0000007e3f18ee00 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-1,a=>-65,d=>2,j=>-4,c=>-2,h=>-4,b=>0,g=>-1,f=>-3,i=>1} bfffffffb0de3304 bfffffffb0de3304 bfffffffb0de3304 ffffffbf197be180 bfffffffb0de3304 bfffffffb0de3304 ffffffbf197be180 bfffffffb0de3304 ffffffbf197be180 - {e=>-4,a=>-87,d=>-1,j=>1,c=>-2,h=>1,b=>3,g=>-2,f=>0,i=>2} a9fffffff3094701 a9fffffff3094701 a9fffffff3094701 ffffffa97bc18a20 a9fffffff3094701 a9fffffff3094701 ffffffa97bc18a20 a9fffffff3094701 ffffffa97bc18a20 - {e=>0,a=>19,d=>0,j=>0,c=>1,h=>1,b=>2,g=>-3,f=>3,i=>3} 130000000ab06600 130000000ab06600 130000000ab06600 0000001344074b00 130000000ab06600 130000000ab06600 0000001344074b00 130000000ab06600 0000001344074b00 - {e=>1,a=>-111,d=>-2,j=>1,c=>3,h=>0,b=>-4,g=>-4,f=>1,i=>0} 91ffffff9c130201 91ffffff9c130201 91ffffff9c130201 ffffff918f130020 91ffffff9c130201 91ffffff9c130201 ffffff918f130020 91ffffff9c130201 ffffff918f130020 - {e=>-1,a=>-103,d=>1,j=>0,c=>-1,h=>-4,b=>2,g=>1,f=>-3,i=>3} 99ffffff7ade7000 99ffffff7ade7000 99ffffff7ade7000 ffffff995cfa6300 99ffffff7ade7000 99ffffff7ade7000 ffffff995cfa6300 99ffffff7ade7000 ffffff995cfa6300 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-3,a=>38,d=>-2,j=>2,c=>-2,k=>1,h=>1,b=>0,g=>0,f=>2,i=>0} 26000000b02b040a 26000000b02b040a 26000000b02b040a 000000261b540844 26000000b02b040a 26000000b02b040a 000000261b540844 26000000b02b040a 000000261b540844 - {e=>2,a=>41,d=>0,j=>-3,c=>1,k=>-2,h=>-3,b=>0,g=>0,f=>0,i=>0} 2900000008041435 2900000008041435 2900000008041435 00000029042028b8 2900000008041435 2900000008041435 00000029042028b8 2900000008041435 00000029042028b8 - {e=>3,a=>107,d=>-3,j=>-1,c=>2,k=>-2,h=>1,b=>0,g=>-1,f=>3,i=>1} 6b00000050b72737 6b00000050b72737 6b00000050b72737 0000006b0ab7c9f8 6b00000050b72737 6b00000050b72737 0000006b0ab7c9f8 6b00000050b72737 0000006b0ab7c9f8 - {e=>3,a=>18,d=>-4,j=>2,c=>-4,k=>-1,h=>-3,b=>-1,g=>-3,f=>-3,i=>-3} 1200000027d7b63a 1200000027d7b63a 1200000027d7b63a 00000012f23b6d5c 1200000027d7b63a 1200000027d7b63a 00000012f23b6d5c 1200000027d7b63a 00000012f23b6d5c - {e=>3,a=>-10,d=>-4,j=>2,c=>1,k=>0,h=>-1,b=>-4,g=>0,f=>1,i=>2} f6ffffff0c175c02 f6ffffff0c175c02 f6ffffff0c175c02 fffffff686323a40 f6ffffff0c175c02 f6ffffff0c175c02 fffffff686323a40 f6ffffff0c175c02 fffffff686323a40 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>1,a=>-91,d=>3,j=>-3,l=>2,c=>2,k=>-1,h=>1,b=>-1,g=>-4,f=>-2,i=>-3} a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 ffffffa5e99d0dbc40000000 a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 ffffffa5e99d0dbc40000000 a5ffffffd762a63d02000000 ffffffa5e99d0dbc40000000 - {e=>-1,a=>-28,d=>0,j=>-4,l=>-3,c=>-2,k=>2,h=>-4,b=>-2,g=>-2,f=>-1,i=>0} e4ffffff367e131405000000 e4ffffff367e131405000000 e4ffffff367e131405000000 ffffffe4d87fa088a0000000 e4ffffff367e131405000000 e4ffffff367e131405000000 ffffffe4d87fa088a0000000 e4ffffff367e131405000000 ffffffe4d87fa088a0000000 - {e=>1,a=>78,d=>-3,j=>-3,l=>-2,c=>1,k=>2,h=>0,b=>-2,g=>0,f=>-2,i=>-3} 4e0000004e63a01506000000 4e0000004e63a01506000000 4e0000004e63a01506000000 0000004ec69c05a8c0000000 4e0000004e63a01506000000 4e0000004e63a01506000000 0000004ec69c05a8c0000000 4e0000004e63a01506000000 0000004ec69c05a8c0000000 - {e=>-2,a=>71,d=>2,j=>-4,l=>-1,c=>-4,k=>2,h=>3,b=>1,g=>0,f=>-1,i=>1} 47000000a17c2c1407000000 47000000a17c2c1407000000 47000000a17c2c1407000000 00000047316e1988e0000000 47000000a17c2c1407000000 47000000a17c2c1407000000 00000047316e1988e0000000 47000000a17c2c1407000000 00000047316e1988e0000000 - {e=>-2,a=>-99,d=>-4,j=>-2,l=>-4,c=>-2,k=>3,h=>-1,b=>1,g=>-4,f=>-1,i=>-1} 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 ffffff9d3a6f3fcc80000000 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 ffffff9d3a6f3fcc80000000 9dffffff317dfe1e04000000 ffffff9d3a6f3fcc80000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>1,a=>11,m=>3,d=>0,j=>-1,l=>2,c=>2,k=>-2,h=>0,b=>2,g=>-1,f=>-4,i=>-3} 0b00000012c2a3371a000000 0b00000012c2a3371a000000 0b00000012c2a3371a000000 0000000b4819c5f84c000000 0b00000012c2a3371a000000 0b00000012c2a3371a000000 0000000b4819c5f84c000000 0b00000012c2a3371a000000 0000000b4819c5f84c000000 - {e=>3,a=>-31,m=>-1,d=>1,j=>3,l=>1,c=>-3,k=>-4,h=>-3,b=>-3,g=>3,f=>-2,i=>0} e1ffffff6de6152339000000 e1ffffff6de6152339000000 e1ffffff6de6152339000000 ffffffe1b4bce8703c000000 e1ffffff6de6152339000000 e1ffffff6de6152339000000 ffffffe1b4bce8703c000000 e1ffffff6de6152339000000 ffffffe1b4bce8703c000000 - {e=>-1,a=>-107,m=>-1,d=>-4,j=>3,l=>-4,c=>3,k=>-3,h=>3,b=>0,g=>3,f=>-1,i=>2} 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 ffffff950e7eda749c000000 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 ffffff950e7eda749c000000 95ffffff18ff4d2b3c000000 ffffff950e7eda749c000000 - {e=>-3,a=>-123,m=>-3,d=>3,j=>-1,l=>3,c=>2,k=>-2,h=>1,b=>2,g=>-4,f=>-2,i=>-2} 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 ffffff8549dd0ef874000000 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 ffffff8549dd0ef874000000 85ffffffd26ac6372b000000 ffffff8549dd0ef874000000 - {e=>-3,a=>-105,m=>-4,d=>-1,j=>-2,l=>-2,c=>-1,k=>3,h=>-4,b=>3,g=>-1,f=>3,i=>1} 97fffffffbbb331e26000000 97fffffffbbb331e26000000 97fffffffbbb331e26000000 ffffff977fd7e1ccd0000000 97fffffffbbb331e26000000 97fffffffbbb331e26000000 ffffff977fd7e1ccd0000000 97fffffffbbb331e26000000 ffffff977fd7e1ccd0000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>1,n=>2,a=>-70,m=>2,d=>-1,j=>-2,l=>-2,c=>-4,k=>0,h=>-3,b=>-3,g=>-4,f=>0,i=>-2} baffffffe503d60696000000 baffffffe503d60696000000 baffffffe503d60696000000 ffffffbab3912ec0c9000000 baffffffe503d60696000000 baffffffe503d60696000000 ffffffbab3912ec0c9000000 baffffffe503d60696000000 ffffffbab3912ec0c9000000 - {e=>-2,n=>-3,a=>99,m=>1,d=>-4,j=>0,l=>2,c=>-3,k=>2,h=>-4,b=>3,g=>1,f=>3,i=>1} 630000002bbd30104a010000 630000002bbd30104a010000 630000002bbd30104a010000 000000637666610846800000 630000002bbd30104a010000 630000002bbd30104a010000 000000637666610846800000 630000002bbd30104a010000 000000637666610846800000 - {e=>0,n=>-4,a=>-106,m=>2,d=>-4,j=>-1,l=>-3,c=>-1,k=>3,h=>2,b=>-4,g=>2,f=>-1,i=>2} 96ffffff3c71491f15010000 96ffffff3c71491f15010000 96ffffff3c71491f15010000 ffffff969e0e92ecaa000000 96ffffff3c71491f15010000 96ffffff3c71491f15010000 ffffff969e0e92ecaa000000 96ffffff3c71491f15010000 ffffff969e0e92ecaa000000 - {e=>0,n=>1,a=>-37,m=>1,d=>1,j=>-3,l=>-4,c=>0,k=>-2,h=>0,b=>3,g=>-4,f=>-2,i=>-1} dbffffff4360e2354c000000 dbffffff4360e2354c000000 dbffffff4360e2354c000000 ffffffdb608d07b884800000 dbffffff4360e2354c000000 dbffffff4360e2354c000000 ffffffdb608d07b884800000 dbffffff4360e2354c000000 ffffffdb608d07b884800000 - {e=>-2,n=>-1,a=>21,m=>1,d=>-4,j=>-2,l=>0,c=>1,k=>-4,h=>-3,b=>1,g=>3,f=>-2,i=>-3} 1500000009edb526c8010000 1500000009edb526c8010000 1500000009edb526c8010000 00000015266cedd007800000 1500000009edb526c8010000 1500000009edb526c8010000 00000015266cedd007800000 1500000009edb526c8010000 00000015266cedd007800000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>-2,n=>-3,a=>77,m=>1,d=>0,j=>3,l=>-4,c=>1,k=>3,h=>-2,b=>-3,g=>0,f=>3,o=>-17,i=>2} 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff 0000004da466326c86800000ffffffef 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff 0000004da466326c86800000ffffffef 4d0000000d3c581b4c010000efffffff 0000004da466326c86800000ffffffef - {e=>-1,n=>3,a=>113,m=>3,d=>3,j=>-1,l=>3,c=>3,k=>-3,h=>-4,b=>-4,g=>2,f=>-3,o=>72,i=>2} 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 000000718dfaa2f46d80000000000048 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 000000718dfaa2f46d80000000000048 71000000dc5e512fdb00000048000000 000000718dfaa2f46d80000000000048 - {e=>-4,n=>2,a=>0,m=>2,d=>1,j=>2,l=>-2,c=>2,k=>-1,h=>-1,b=>-2,g=>-3,f=>-4,o=>60,i=>2} 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 00000000c8c97a5cc90000000000003c 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 00000000c8c97a5cc90000000000003c 0000000056c85e3a960000003c000000 00000000c8c97a5cc90000000000003c - {e=>-1,n=>-3,a=>65,m=>2,d=>-2,j=>3,l=>2,c=>3,k=>0,h=>3,b=>-4,g=>0,f=>1,o=>-92,i=>0} 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff 000000418f7218604a800000ffffffa4 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff 000000418f7218604a800000ffffffa4 410000009c1f0c0352010000a4ffffff 000000418f7218604a800000ffffffa4 - {e=>1,n=>2,a=>64,m=>0,d=>-2,j=>2,l=>1,c=>-3,k=>0,h=>-1,b=>3,g=>2,f=>1,o=>-43,i=>-2} 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff 000000407712be4021000000ffffffd5 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff 000000407712be4021000000ffffffd5 40000000ab13dd0281000000d5ffffff 000000407712be4021000000ffffffd5 = struct int_wrap { long a; int b:3; }; - {a=>33,b=>-4} 2100000004000000 21000000000000000400000000000000 21000000000000000400000000000000 0000002180000000 2100000004000000 2100000004000000 00000000000000218000000000000000 2100000004000000 0000002180000000 - {a=>122,b=>-4} 7a00000004000000 7a000000000000000400000000000000 7a000000000000000400000000000000 0000007a80000000 7a00000004000000 7a00000004000000 000000000000007a8000000000000000 7a00000004000000 0000007a80000000 - {a=>107,b=>-3} 6b00000005000000 6b000000000000000500000000000000 6b000000000000000500000000000000 0000006ba0000000 6b00000005000000 6b00000005000000 000000000000006ba000000000000000 6b00000005000000 0000006ba0000000 - {a=>17,b=>1} 1100000001000000 11000000000000000100000000000000 11000000000000000100000000000000 0000001120000000 1100000001000000 1100000001000000 00000000000000112000000000000000 1100000001000000 0000001120000000 - {a=>-47,b=>2} d1ffffff02000000 d1ffffffffffffff0200000000000000 d1ffffffffffffff0200000000000000 ffffffd140000000 d1ffffff02000000 d1ffffff02000000 ffffffffffffffd14000000000000000 d1ffffff02000000 ffffffd140000000 = struct int_wrap { long a; int b:3; int c:3; }; - {c=>-2,a=>-37,b=>1} dbffffff31000000 dbffffffffffffff3100000000000000 dbffffffffffffff3100000000000000 ffffffdb38000000 dbffffff31000000 dbffffff31000000 ffffffffffffffdb3800000000000000 dbffffff31000000 ffffffdb38000000 - {c=>-2,a=>-7,b=>1} f9ffffff31000000 f9ffffffffffffff3100000000000000 f9ffffffffffffff3100000000000000 fffffff938000000 f9ffffff31000000 f9ffffff31000000 fffffffffffffff93800000000000000 f9ffffff31000000 fffffff938000000 - {c=>3,a=>124,b=>0} 7c00000018000000 7c000000000000001800000000000000 7c000000000000001800000000000000 0000007c0c000000 7c00000018000000 7c00000018000000 000000000000007c0c00000000000000 7c00000018000000 0000007c0c000000 - {c=>0,a=>-128,b=>-4} 80ffffff04000000 80ffffffffffffff0400000000000000 80ffffffffffffff0400000000000000 ffffff8080000000 80ffffff04000000 80ffffff04000000 ffffffffffffff808000000000000000 80ffffff04000000 ffffff8080000000 - {c=>3,a=>5,b=>2} 050000001a000000 05000000000000001a00000000000000 05000000000000001a00000000000000 000000054c000000 050000001a000000 050000001a000000 00000000000000054c00000000000000 050000001a000000 000000054c000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; }; - {c=>3,a=>-33,b=>0,d=>-2} dfffffff98010000 dfffffffffffffff9801000000000000 dfffffffffffffff9801000000000000 ffffffdf0f000000 dfffffff98010000 dfffffff98010000 ffffffffffffffdf0f00000000000000 dfffffff98010000 ffffffdf0f000000 - {c=>1,a=>87,b=>1,d=>-3} 5700000049010000 57000000000000004901000000000000 57000000000000004901000000000000 0000005726800000 5700000049010000 5700000049010000 00000000000000572680000000000000 5700000049010000 0000005726800000 - {c=>2,a=>-12,b=>0,d=>0} f4ffffff10000000 f4ffffffffffffff1000000000000000 f4ffffffffffffff1000000000000000 fffffff408000000 f4ffffff10000000 f4ffffff10000000 fffffffffffffff40800000000000000 f4ffffff10000000 fffffff408000000 - {c=>3,a=>-30,b=>-2,d=>3} e2ffffffde000000 e2ffffffffffffffde00000000000000 e2ffffffffffffffde00000000000000 ffffffe2cd800000 e2ffffffde000000 e2ffffffde000000 ffffffffffffffe2cd80000000000000 e2ffffffde000000 ffffffe2cd800000 - {c=>1,a=>81,b=>3,d=>2} 510000008b000000 51000000000000008b00000000000000 51000000000000008b00000000000000 0000005165000000 510000008b000000 510000008b000000 00000000000000516500000000000000 510000008b000000 0000005165000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; }; - {e=>2,c=>-1,a=>-61,b=>3,d=>2} c3ffffffbb040000 c3ffffffffffffffbb04000000000000 c3ffffffffffffffbb04000000000000 ffffffc37d200000 c3ffffffbb040000 c3ffffffbb040000 ffffffffffffffc37d20000000000000 c3ffffffbb040000 ffffffc37d200000 - {e=>-2,c=>-3,a=>86,b=>2,d=>-1} 56000000ea0d0000 5600000000000000ea0d000000000000 5600000000000000ea0d000000000000 0000005657e00000 56000000ea0d0000 56000000ea0d0000 000000000000005657e0000000000000 56000000ea0d0000 0000005657e00000 - {e=>-2,c=>0,a=>126,b=>3,d=>-2} 7e000000830d0000 7e00000000000000830d000000000000 7e00000000000000830d000000000000 0000007e63600000 7e000000830d0000 7e000000830d0000 000000000000007e6360000000000000 7e000000830d0000 0000007e63600000 - {e=>-4,c=>2,a=>-98,b=>-3,d=>-2} 9effffff95090000 9effffffffffffff9509000000000000 9effffffffffffff9509000000000000 ffffff9eab400000 9effffff95090000 9effffff95090000 ffffffffffffff9eab40000000000000 9effffff95090000 ffffff9eab400000 - {e=>3,c=>3,a=>-97,b=>0,d=>3} 9fffffffd8060000 9fffffffffffffffd806000000000000 9fffffffffffffffd806000000000000 ffffff9f0db00000 9fffffffd8060000 9fffffffd8060000 ffffffffffffff9f0db0000000000000 9fffffffd8060000 ffffff9f0db00000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-4,c=>-1,a=>-9,b=>-1,d=>1,f=>-2} f7ffffff7f680000 f7ffffffffffffff7f68000000000000 f7ffffffffffffff7f68000000000000 fffffff7fccc0000 f7ffffff7f680000 f7ffffff7f680000 fffffffffffffff7fccc000000000000 f7ffffff7f680000 fffffff7fccc0000 - {e=>1,c=>-4,a=>112,b=>-4,d=>1,f=>-3} 7000000064520000 70000000000000006452000000000000 70000000000000006452000000000000 00000070909a0000 7000000064520000 7000000064520000 0000000000000070909a000000000000 7000000064520000 00000070909a0000 - {e=>3,c=>-1,a=>-116,b=>2,d=>2,f=>-4} 8cffffffba460000 8cffffffffffffffba46000000000000 8cffffffffffffffba46000000000000 ffffff8c5d380000 8cffffffba460000 8cffffffba460000 ffffffffffffff8c5d38000000000000 8cffffffba460000 ffffff8c5d380000 - {e=>-4,c=>-3,a=>-4,b=>-4,d=>2,f=>1} fcffffffac180000 fcffffffffffffffac18000000000000 fcffffffffffffffac18000000000000 fffffffc95420000 fcffffffac180000 fcffffffac180000 fffffffffffffffc9542000000000000 fcffffffac180000 fffffffc95420000 - {e=>-2,c=>-3,a=>-52,b=>3,d=>3,f=>0} ccffffffeb0c0000 ccffffffffffffffeb0c000000000000 ccffffffffffffffeb0c000000000000 ffffffcc75e00000 ccffffffeb0c0000 ccffffffeb0c0000 ffffffffffffffcc75e0000000000000 ccffffffeb0c0000 ffffffcc75e00000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-2,c=>0,a=>92,g=>-1,b=>-2,d=>-2,f=>-2} 5c00000086ed0300 5c0000000000000086ed030000000000 5c0000000000000086ed030000000000 0000005cc36dc000 5c00000086ed0300 5c00000086ed0300 000000000000005cc36dc00000000000 5c00000086ed0300 0000005cc36dc000 - {e=>1,c=>-1,a=>-32,g=>-4,b=>3,d=>0,f=>-1} e0ffffff3b720200 e0ffffffffffffff3b72020000000000 e0ffffffffffffff3b72020000000000 ffffffe07c1f0000 e0ffffff3b720200 e0ffffff3b720200 ffffffffffffffe07c1f000000000000 e0ffffff3b720200 ffffffe07c1f0000 - {e=>-4,c=>3,a=>17,g=>-4,b=>1,d=>-4,f=>2} 1100000019290200 11000000000000001929020000000000 11000000000000001929020000000000 000000112e450000 1100000019290200 1100000019290200 00000000000000112e45000000000000 1100000019290200 000000112e450000 - {e=>1,c=>-4,a=>-113,g=>-1,b=>1,d=>-4,f=>-4} 8fffffff21c30300 8fffffffffffffff21c3030000000000 8fffffffffffffff21c3030000000000 ffffff8f3219c000 8fffffff21c30300 8fffffff21c30300 ffffffffffffff8f3219c00000000000 8fffffff21c30300 ffffff8f3219c000 - {e=>0,c=>1,a=>23,g=>2,b=>3,d=>-3,f=>-3} 170000004b510100 17000000000000004b51010000000000 17000000000000004b51010000000000 00000017668a8000 170000004b510100 170000004b510100 0000000000000017668a800000000000 170000004b510100 00000017668a8000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>0,a=>76,d=>2,c=>-1,h=>-3,b=>3,g=>-3,f=>0} 4c000000bb801600 4c00000000000000bb80160000000000 4c00000000000000bb80160000000000 0000004c7d016800 4c000000bb801600 4c000000bb801600 000000000000004c7d01680000000000 4c000000bb801600 0000004c7d016800 - {e=>3,a=>39,d=>-4,c=>-3,h=>1,b=>-2,g=>-2,f=>1} 270000002e170700 27000000000000002e17070000000000 27000000000000002e17070000000000 00000027d6338800 270000002e170700 270000002e170700 0000000000000027d633880000000000 270000002e170700 00000027d6338800 - {e=>2,a=>108,d=>2,c=>1,h=>3,b=>1,g=>2,f=>-2} 6c00000089640d00 6c0000000000000089640d0000000000 6c0000000000000089640d0000000000 0000006c252c9800 6c00000089640d00 6c00000089640d00 000000000000006c252c980000000000 6c00000089640d00 0000006c252c9800 - {e=>-2,a=>52,d=>-2,c=>-3,h=>-2,b=>1,g=>-4,f=>-2} 34000000a96d1a00 3400000000000000a96d1a0000000000 3400000000000000a96d1a0000000000 00000034376d3000 34000000a96d1a00 34000000a96d1a00 0000000000000034376d300000000000 34000000a96d1a00 00000034376d3000 - {e=>-3,a=>-110,d=>-4,c=>-4,h=>2,b=>-1,g=>1,f=>2} 92ffffff27ab0800 92ffffffffffffff27ab080000000000 92ffffffffffffff27ab080000000000 ffffff92f2545000 92ffffff27ab0800 92ffffff27ab0800 ffffffffffffff92f254500000000000 92ffffff27ab0800 ffffff92f2545000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>2,a=>-27,d=>0,c=>0,h=>-3,b=>2,g=>-3,f=>-4,i=>-4} e5ffffff02c49600 e5ffffffffffffff02c4960000000000 e5ffffffffffffff02c4960000000000 ffffffe540296c00 e5ffffff02c49600 e5ffffff02c49600 ffffffffffffffe540296c0000000000 e5ffffff02c49600 ffffffe540296c00 - {e=>-1,a=>109,d=>2,c=>1,h=>-2,b=>1,g=>0,f=>-3,i=>-3} 6d000000895eb800 6d00000000000000895eb80000000000 6d00000000000000895eb80000000000 0000006d257a3500 6d000000895eb800 6d000000895eb800 000000000000006d257a350000000000 6d000000895eb800 0000006d257a3500 - {e=>-3,a=>-65,d=>3,c=>2,h=>3,b=>0,g=>2,f=>-4,i=>-2} bfffffffd04acd00 bfffffffffffffffd04acd0000000000 bfffffffffffffffd04acd0000000000 ffffffbf09d89e00 bfffffffd04acd00 bfffffffd04acd00 ffffffffffffffbf09d89e0000000000 bfffffffd04acd00 ffffffbf09d89e00 - {e=>3,a=>-118,d=>-1,c=>1,h=>-1,b=>0,g=>3,f=>2,i=>-4} 8affffffc8a79d00 8affffffffffffffc8a79d0000000000 8affffffffffffffc8a79d0000000000 ffffff8a07b4fc00 8affffffc8a79d00 8affffffc8a79d00 ffffffffffffff8a07b4fc0000000000 8affffffc8a79d00 ffffff8a07b4fc00 - {e=>-4,a=>77,d=>-3,c=>3,h=>-1,b=>-2,g=>-1,f=>-3,i=>-3} 4d0000005ed9bf00 4d000000000000005ed9bf0000000000 4d000000000000005ed9bf0000000000 0000004dcecbfd00 4d0000005ed9bf00 4d0000005ed9bf00 000000000000004dcecbfd0000000000 4d0000005ed9bf00 0000004dcecbfd00 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-3,a=>60,d=>2,j=>2,c=>2,h=>-3,b=>3,g=>-1,f=>-2,i=>-1} 3c00000093eaf702 3c0000000000000093eaf70200000000 3c0000000000000093eaf70200000000 0000003c695def40 3c00000093eaf702 3c00000093eaf702 000000000000003c695def4000000000 3c00000093eaf702 0000003c695def40 - {e=>-3,a=>-119,d=>0,j=>-2,c=>3,h=>-3,b=>3,g=>-3,f=>-3,i=>-3} 89ffffff1bdab606 89ffffffffffffff1bdab60600000000 89ffffffffffffff1bdab60600000000 ffffff896c5b6dc0 89ffffff1bdab606 89ffffff1bdab606 ffffffffffffff896c5b6dc000000000 89ffffff1bdab606 ffffff896c5b6dc0 - {e=>-4,a=>94,d=>2,j=>2,c=>1,h=>3,b=>1,g=>1,f=>3,i=>3} 5e00000089b86c02 5e0000000000000089b86c0200000000 5e0000000000000089b86c0200000000 0000005e25465b40 5e00000089b86c02 5e00000089b86c02 000000000000005e25465b4000000000 5e00000089b86c02 0000005e25465b40 - {e=>3,a=>116,d=>1,j=>2,c=>-4,h=>-3,b=>0,g=>3,f=>2,i=>-4} 7400000060a69502 740000000000000060a6950200000000 740000000000000060a6950200000000 0000007410b4ec40 7400000060a69502 7400000060a69502 000000000000007410b4ec4000000000 7400000060a69502 0000007410b4ec40 - {e=>1,a=>42,d=>-4,j=>-4,c=>-2,h=>-2,b=>2,g=>-3,f=>-2,i=>-3} 2a00000032e3ba04 2a0000000000000032e3ba0400000000 2a0000000000000032e3ba0400000000 0000002a5a1d7580 2a00000032e3ba04 2a00000032e3ba04 000000000000002a5a1d758000000000 2a00000032e3ba04 0000002a5a1d7580 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>0,a=>15,d=>3,j=>2,c=>0,k=>3,h=>-4,b=>3,g=>-1,f=>-4,i=>-4} 0f000000c3c0931a 0f00000000000000c3c0931a00000000 0f00000000000000c3c0931a00000000 0000000f6189e44c 0f000000c3c0931a 0f000000c3c0931a 000000000000000f6189e44c00000000 0f000000c3c0931a 0000000f6189e44c - {e=>-2,a=>-58,d=>-3,j=>-1,c=>-1,k=>-2,h=>1,b=>-2,g=>3,f=>-4,i=>-3} c6ffffff7ecda537 c6ffffffffffffff7ecda53700000000 c6ffffffffffffff7ecda53700000000 ffffffc6dee8cdf8 c6ffffff7ecda537 c6ffffff7ecda537 ffffffffffffffc6dee8cdf800000000 c6ffffff7ecda537 ffffffc6dee8cdf8 - {e=>0,a=>3,d=>-4,j=>-4,c=>2,k=>1,h=>3,b=>0,g=>-4,f=>3,i=>-4} 0300000010318e0c 030000000000000010318e0c00000000 030000000000000010318e0c00000000 000000030a071c84 0300000010318e0c 0300000010318e0c 00000000000000030a071c8400000000 0300000010318e0c 000000030a071c84 - {e=>-2,a=>9,d=>3,j=>3,c=>-3,k=>-2,h=>-1,b=>-1,g=>1,f=>-4,i=>3} 09000000efcc7c33 0900000000000000efcc7c3300000000 0900000000000000efcc7c3300000000 00000009f5e87b78 09000000efcc7c33 09000000efcc7c33 0000000000000009f5e87b7800000000 09000000efcc7c33 00000009f5e87b78 - {e=>-2,a=>41,d=>2,j=>-1,c=>-3,k=>-2,h=>-4,b=>-2,g=>-1,f=>2,i=>3} 29000000aeac7337 2900000000000000aeac733700000000 2900000000000000aeac733700000000 00000029d565e3f8 29000000aeac7337 29000000aeac7337 0000000000000029d565e3f800000000 29000000aeac7337 00000029d565e3f8 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>-21,d=>3,j=>0,l=>-3,c=>-3,k=>3,h=>0,b=>2,g=>-4,f=>-3,i=>-3} ebffffffea5aa21805000000 ebffffffffffffffea5aa21805000000 ebffffffffffffffea5aa21805000000 ffffffeb55db050ca0000000 ebffffffea5aa21805000000 ebffffffea5aa21805000000 ffffffffffffffeb55db050ca0000000 ebffffffea5aa21805000000 ffffffeb55db050ca0000000 - {e=>0,a=>26,d=>3,j=>3,l=>-4,c=>0,k=>2,h=>-1,b=>-1,g=>-2,f=>0,i=>-4} 1a000000c7009f1304000000 1a00000000000000c7009f1304000000 1a00000000000000c7009f1304000000 0000001ae181bc6880000000 1a000000c7009f1304000000 1a000000c7009f1304000000 000000000000001ae181bc6880000000 1a000000c7009f1304000000 0000001ae181bc6880000000 - {e=>-3,a=>-32,d=>-2,j=>0,l=>-4,c=>-3,k=>-2,h=>2,b=>-1,g=>1,f=>2,i=>-3} e0ffffffafaba83004000000 e0ffffffffffffffafaba83004000000 e0ffffffffffffffafaba83004000000 ffffffe0f754551880000000 e0ffffffafaba83004000000 e0ffffffafaba83004000000 ffffffffffffffe0f754551880000000 e0ffffffafaba83004000000 ffffffe0f754551880000000 - {e=>2,a=>-37,d=>-2,j=>-3,l=>-4,c=>1,k=>1,h=>-2,b=>2,g=>3,f=>0,i=>3} dbffffff8a85790d04000000 dbffffffffffffff8a85790d04000000 dbffffffffffffff8a85790d04000000 ffffffdb4720f3a480000000 dbffffff8a85790d04000000 dbffffff8a85790d04000000 ffffffffffffffdb4720f3a480000000 dbffffff8a85790d04000000 ffffffdb4720f3a480000000 - {e=>1,a=>-116,d=>-2,j=>0,l=>2,c=>1,k=>-4,h=>0,b=>2,g=>-3,f=>-1,i=>-4} 8cffffff8af3822002000000 8cffffffffffffff8af3822002000000 8cffffffffffffff8af3822002000000 ffffff8c471f441040000000 8cffffff8af3822002000000 8cffffff8af3822002000000 ffffffffffffff8c471f441040000000 8cffffff8af3822002000000 ffffff8c471f441040000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>-1,a=>-6,m=>-3,d=>0,j=>3,l=>1,c=>-4,k=>1,h=>-4,b=>1,g=>2,f=>1,i=>2} faffffff211e510b29000000 faffffffffffffff211e510b29000000 faffffffffffffff211e510b29000000 fffffffa3072a26434000000 faffffff211e510b29000000 faffffff211e510b29000000 fffffffffffffffa3072a26434000000 faffffff211e510b29000000 fffffffa3072a26434000000 - {e=>2,a=>-118,m=>-4,d=>-1,j=>-2,l=>2,c=>3,k=>-3,h=>3,b=>0,g=>-3,f=>-4,i=>3} 8affffffd8c56e2e22000000 8affffffffffffffd8c56e2e22000000 8affffffffffffffd8c56e2e22000000 ffffff8a0fa95bd450000000 8affffffd8c56e2e22000000 8affffffd8c56e2e22000000 ffffffffffffff8a0fa95bd450000000 8affffffd8c56e2e22000000 ffffff8a0fa95bd450000000 - {e=>3,a=>-56,m=>1,d=>3,j=>0,l=>3,c=>2,k=>-2,h=>1,b=>2,g=>0,f=>-3,i=>-2} c8ffffffd256c4300b000000 c8ffffffffffffffd256c4300b000000 c8ffffffffffffffd256c4300b000000 ffffffc849ba0e1864000000 c8ffffffd256c4300b000000 c8ffffffd256c4300b000000 ffffffffffffffc849ba0e1864000000 c8ffffffd256c4300b000000 ffffffc849ba0e1864000000 - {e=>1,a=>-55,m=>-4,d=>0,j=>-1,l=>3,c=>-3,k=>-4,h=>3,b=>-4,g=>2,f=>-2,i=>-4} c9ffffff2c628d2723000000 c9ffffffffffffff2c628d2723000000 c9ffffffffffffff2c628d2723000000 ffffffc9941c9cf070000000 c9ffffff2c628d2723000000 c9ffffff2c628d2723000000 ffffffffffffffc9941c9cf070000000 c9ffffff2c628d2723000000 ffffffc9941c9cf070000000 - {e=>-3,a=>-107,m=>0,d=>-1,j=>2,l=>-3,c=>-2,k=>-2,h=>-2,b=>-4,g=>2,f=>1,i=>-3} 95fffffff41bb93205000000 95fffffffffffffff41bb93205000000 95fffffffffffffff41bb93205000000 ffffff959bd2b558a0000000 95fffffff41bb93205000000 95fffffff41bb93205000000 ffffffffffffff959bd2b558a0000000 95fffffff41bb93205000000 ffffff959bd2b558a0000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>-1,n=>-1,a=>-103,m=>-3,d=>-3,j=>2,l=>-4,c=>-3,k=>3,h=>2,b=>3,g=>-4,f=>1,i=>1} 99ffffff6b1f2a1aec010000 99ffffffffffffff6b1f2a1aec010000 99ffffffffffffff6b1f2a1aec010000 ffffff9976f3114c97800000 99ffffff6b1f2a1aec010000 99ffffff6b1f2a1aec010000 ffffffffffffff9976f3114c97800000 99ffffff6b1f2a1aec010000 ffffff9976f3114c97800000 - {e=>1,n=>-1,a=>-117,m=>3,d=>-3,j=>3,l=>2,c=>-4,k=>2,h=>-1,b=>-3,g=>-1,f=>0,i=>-1} 8bffffff6583ff13da010000 8bffffffffffffff6583ff13da010000 8bffffffffffffff6583ff13da010000 ffffff8bb291ff684f800000 8bffffff6583ff13da010000 8bffffff6583ff13da010000 ffffffffffffff8bb291ff684f800000 8bffffff6583ff13da010000 ffffff8bb291ff684f800000 - {e=>1,n=>-3,a=>28,m=>-1,d=>-4,j=>2,l=>-4,c=>3,k=>-4,h=>-2,b=>0,g=>2,f=>-4,i=>1} 1c000000184339227c010000 1c00000000000000184339227c010000 1c00000000000000184339227c010000 0000001c0e18b1509e800000 1c000000184339227c010000 1c000000184339227c010000 000000000000001c0e18b1509e800000 1c000000184339227c010000 0000001c0e18b1509e800000 - {e=>-4,n=>3,a=>29,m=>-4,d=>2,j=>-2,l=>-4,c=>-2,k=>-2,h=>2,b=>-2,g=>-2,f=>-2,i=>-2} 1d000000b668cb36e4000000 1d00000000000000b668cb36e4000000 1d00000000000000b668cb36e4000000 0000001dd94d96d891800000 1d000000b668cb36e4000000 1d000000b668cb36e4000000 000000000000001dd94d96d891800000 1d000000b668cb36e4000000 0000001dd94d96d891800000 - {e=>3,n=>-1,a=>-93,m=>-1,d=>3,j=>3,l=>-2,c=>2,k=>2,h=>-2,b=>1,g=>0,f=>3,i=>2} a3ffffffd1365813fe010000 a3ffffffffffffffd1365813fe010000 a3ffffffffffffffd1365813fe010000 ffffffa329b63268df800000 a3ffffffd1365813fe010000 a3ffffffd1365813fe010000 ffffffffffffffa329b63268df800000 a3ffffffd1365813fe010000 ffffffa329b63268df800000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>-3,n=>1,a=>-24,m=>2,d=>-2,j=>-2,l=>-4,c=>-1,k=>0,h=>-4,b=>-1,g=>-4,f=>0,o=>10,i=>1} e8ffffffbf0b3206540000000a000000 e8ffffffffffffffbf0b3206540000000a00000000000000 e8ffffffffffffffbf0b3206540000000a00000000000000 ffffffe8ff5121c0888000000000000a e8ffffffbf0b3206540000000a000000 e8ffffffbf0b3206540000000a000000 ffffffffffffffe8ff5121c0888000000000000a00000000 e8ffffffbf0b3206540000000a000000 ffffffe8ff5121c0888000000000000a - {e=>0,n=>3,a=>91,m=>3,d=>1,j=>-2,l=>-1,c=>-3,k=>0,h=>1,b=>3,g=>3,f=>0,o=>0,i=>0} 5b0000006b800506df00000000000000 5b000000000000006b800506df0000000000000000000000 5b000000000000006b800506df0000000000000000000000 0000005b7480c8c0ed80000000000000 5b0000006b800506df00000000000000 5b0000006b800506df00000000000000 000000000000005b7480c8c0ed8000000000000000000000 5b0000006b800506df00000000000000 0000005b7480c8c0ed80000000000000 - {e=>-4,n=>-4,a=>-91,m=>0,d=>1,j=>0,l=>3,c=>1,k=>-4,h=>0,b=>3,g=>1,f=>-2,o=>81,i=>-3} a5ffffff4be8a0200301000051000000 a5ffffffffffffff4be8a020030100005100000000000000 a5ffffffffffffff4be8a020030100005100000000000000 ffffffa564cc45106200000000000051 a5ffffff4be8a0200301000051000000 a5ffffff4be8a0200301000051000000 ffffffffffffffa564cc4510620000000000005100000000 a5ffffff4be8a0200301000051000000 ffffffa564cc45106200000000000051 - {e=>0,n=>-3,a=>-22,m=>-1,d=>-4,j=>-1,l=>0,c=>3,k=>-2,h=>3,b=>-3,g=>-1,f=>-3,o=>40,i=>2} eaffffff1dd14f377801000028000000 eaffffffffffffff1dd14f37780100002800000000000000 eaffffffffffffff1dd14f37780100002800000000000000 ffffffeaae0bdaf81e80000000000028 eaffffff1dd14f377801000028000000 eaffffff1dd14f377801000028000000 ffffffffffffffeaae0bdaf81e8000000000002800000000 eaffffff1dd14f377801000028000000 ffffffeaae0bdaf81e80000000000028 - {e=>-2,n=>1,a=>-71,m=>2,d=>2,j=>-3,l=>-4,c=>0,k=>-3,h=>2,b=>-2,g=>2,f=>0,o=>-119,i=>-2} b9ffffff860cc92d5400000089ffffff b9ffffffffffffff860cc92d5400000089ffffff00000000 b9ffffffffffffff860cc92d5400000089ffffff00000000 ffffffb9c16096b488800000ffffff89 b9ffffff860cc92d5400000089ffffff b9ffffff860cc92d5400000089ffffff ffffffffffffffb9c16096b488800000ffffff8900000000 b9ffffff860cc92d5400000089ffffff ffffffb9c16096b488800000ffffff89 = struct umixed3 { unsigned char a:3; }; - {a=>7} 07 07 07 e0 07000000 07 e0 07 e0 - {a=>4} 04 04 04 80 04000000 04 80 04 80 - {a=>1} 01 01 01 20 01000000 01 20 01 20 - {a=>2} 02 02 02 40 02000000 02 40 02 40 - {a=>5} 05 05 05 a0 05000000 05 a0 05 a0 = struct umixed3 { unsigned char a:3; unsigned char b:3; }; - {a=>6,b=>0} 06 06 06 c0 06000000 06 c0 06 c0 - {a=>0,b=>4} 20 20 20 10 20000000 20 10 20 10 - {a=>2,b=>1} 0a 0a 0a 44 0a000000 0a 44 0a 44 - {a=>7,b=>3} 1f 1f 1f ec 1f000000 1f ec 1f ec - {a=>2,b=>3} 1a 1a 1a 4c 1a000000 1a 4c 1a 4c = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; }; - {c=>0,a=>7,b=>5} 2f000000 2f000000 2f000000 f4000000 2f000000 2f000000 f4000000 2f000000 f4000000 - {c=>2,a=>6,b=>7} be000000 be000000 be000000 dd000000 be000000 be000000 dd000000 be000000 dd000000 - {c=>2,a=>7,b=>2} 97000000 97000000 97000000 e9000000 97000000 97000000 e9000000 97000000 e9000000 - {c=>7,a=>1,b=>3} d9010000 d9010000 d9010000 2f800000 d9010000 d9010000 2f800000 d9010000 2f800000 - {c=>5,a=>3,b=>4} 63010000 63010000 63010000 72800000 63010000 63010000 72800000 63010000 72800000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; }; - {c=>6,a=>2,b=>1,d=>2} 8a050000 8a050000 8a050000 47200000 8a050000 8a050000 47200000 8a050000 47200000 - {c=>5,a=>6,b=>1,d=>3} 4e070000 4e070000 4e070000 c6b00000 4e070000 4e070000 c6b00000 4e070000 c6b00000 - {c=>4,a=>6,b=>1,d=>0} 0e010000 0e010000 0e010000 c6000000 0e010000 0e010000 c6000000 0e010000 c6000000 - {c=>0,a=>1,b=>5,d=>6} 290c0000 290c0000 290c0000 34600000 290c0000 290c0000 34600000 290c0000 34600000 - {c=>7,a=>6,b=>2,d=>2} d6050000 d6050000 d6050000 cba00000 d6050000 d6050000 cba00000 d6050000 cba00000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; }; - {e=>3,c=>6,a=>3,b=>0,d=>1} 83330000 83330000 83330000 63160000 83330000 83330000 63160000 83330000 63160000 - {e=>6,c=>0,a=>3,b=>1,d=>5} 0b6a0000 0b6a0000 0b6a0000 645c0000 0b6a0000 0b6a0000 645c0000 0b6a0000 645c0000 - {e=>7,c=>2,a=>2,b=>6,d=>5} b27a0000 b27a0000 b27a0000 595e0000 b27a0000 b27a0000 595e0000 b27a0000 595e0000 - {e=>6,c=>0,a=>3,b=>3,d=>3} 1b660000 1b660000 1b660000 6c3c0000 1b660000 1b660000 6c3c0000 1b660000 6c3c0000 - {e=>6,c=>7,a=>0,b=>3,d=>3} d8670000 d8670000 d8670000 0fbc0000 d8670000 d8670000 0fbc0000 d8670000 0fbc0000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; unsigned char f:3; }; - {e=>3,c=>4,a=>4,b=>7,d=>6,f=>2} 3c3d0200 3c3d0200 3c3d0200 9e664000 3c3d0200 3c3d0200 9e664000 3c3d0200 9e664000 - {e=>5,c=>4,a=>2,b=>7,d=>0,f=>6} 3a510600 3a510600 3a510600 5e0ac000 3a510600 3a510600 5e0ac000 3a510600 5e0ac000 - {e=>7,c=>6,a=>0,b=>4,d=>1,f=>6} a0730600 a0730600 a0730600 131ec000 a0730600 a0730600 131ec000 a0730600 131ec000 - {e=>4,c=>6,a=>1,b=>0,d=>1,f=>3} 81430300 81430300 81430300 23186000 81430300 81430300 23186000 81430300 23186000 - {e=>6,c=>4,a=>6,b=>6,d=>6,f=>0} 366d0000 366d0000 366d0000 da6c0000 366d0000 366d0000 da6c0000 366d0000 da6c0000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; unsigned char f:3; unsigned long g; }; - {e=>4,c=>5,a=>4,g=>216,b=>7,d=>5,f=>4} 7c4b0400d8000000 7c4b040000000000d800000000000000 7c4b040000000000d800000000000000 9ed88000000000d8 7c4b0400d8000000 7c4b0400d8000000 9ed880000000000000000000000000d8 7c4b0400d8000000 9ed88000000000d8 - {e=>0,c=>0,a=>7,g=>119,b=>7,d=>3,f=>5} 3f06050077000000 3f060500000000007700000000000000 3f060500000000007700000000000000 fc30a00000000077 3f06050077000000 3f06050077000000 fc30a000000000000000000000000077 3f06050077000000 fc30a00000000077 - {e=>4,c=>0,a=>7,g=>69,b=>6,d=>3,f=>3} 3746030045000000 37460300000000004500000000000000 37460300000000004500000000000000 f838600000000045 3746030045000000 3746030045000000 f8386000000000000000000000000045 3746030045000000 f838600000000045 - {e=>1,c=>0,a=>5,g=>247,b=>4,d=>1,f=>7} 25120700f7000000 2512070000000000f700000000000000 2512070000000000f700000000000000 b012e000000000f7 25120700f7000000 25120700f7000000 b012e0000000000000000000000000f7 25120700f7000000 b012e000000000f7 - {e=>4,c=>5,a=>4,g=>112,b=>1,d=>3,f=>4} 4c47040070000000 4c470400000000007000000000000000 4c470400000000007000000000000000 86b8800000000070 4c47040070000000 4c47040070000000 86b88000000000000000000000000070 4c47040070000000 86b8800000000070 = struct umixed3 { char a; unsigned char b:3; }; - {a=>-63,b=>6} c106 c106 c106 c1c0 c1060000 c106 c1c0 c106 c1c0 - {a=>-85,b=>7} ab07 ab07 ab07 abe0 ab070000 ab07 abe0 ab07 abe0 - {a=>52,b=>0} 3400 3400 3400 3400 34000000 3400 3400 3400 3400 - {a=>-89,b=>2} a702 a702 a702 a740 a7020000 a702 a740 a702 a740 - {a=>-62,b=>7} c207 c207 c207 c2e0 c2070000 c207 c2e0 c207 c2e0 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>77,b=>0} 4d08 4d08 4d08 4d04 4d080000 4d08 4d04 4d08 4d04 - {c=>7,a=>73,b=>2} 493a 493a 493a 495c 493a0000 493a 495c 493a 495c - {c=>5,a=>116,b=>5} 742d 742d 742d 74b4 742d0000 742d 74b4 742d 74b4 - {c=>7,a=>-44,b=>1} d439 d439 d439 d43c d4390000 d439 d43c d439 d43c - {c=>7,a=>-66,b=>7} be3f be3f be3f befc be3f0000 be3f befc be3f befc = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>0,a=>-16,b=>5,d=>5} f0450100 f0450100 f0450100 f0a28000 f0450100 f0450100 f0a28000 f0450100 f0a28000 - {c=>0,a=>-4,b=>7,d=>6} fc870100 fc870100 fc870100 fce30000 fc870100 fc870100 fce30000 fc870100 fce30000 - {c=>5,a=>-11,b=>0,d=>2} f5a80000 f5a80000 f5a80000 f5150000 f5a80000 f5a80000 f5150000 f5a80000 f5150000 - {c=>6,a=>-39,b=>1,d=>0} d9310000 d9310000 d9310000 d9380000 d9310000 d9310000 d9380000 d9310000 d9380000 - {c=>7,a=>78,b=>1,d=>0} 4e390000 4e390000 4e390000 4e3c0000 4e390000 4e390000 4e3c0000 4e390000 4e3c0000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>2,c=>6,a=>28,b=>6,d=>7} 1cf60500 1cf60500 1cf60500 1cdba000 1cf60500 1cf60500 1cdba000 1cf60500 1cdba000 - {e=>0,c=>6,a=>-11,b=>2,d=>3} f5f20000 f5f20000 f5f20000 f5598000 f5f20000 f5f20000 f5598000 f5f20000 f5598000 - {e=>5,c=>7,a=>27,b=>0,d=>1} 1b780a00 1b780a00 1b780a00 1b1cd000 1b780a00 1b780a00 1b1cd000 1b780a00 1b1cd000 - {e=>2,c=>5,a=>1,b=>0,d=>7} 01e80500 01e80500 01e80500 0117a000 01e80500 01e80500 0117a000 01e80500 0117a000 - {e=>7,c=>1,a=>79,b=>3,d=>7} 4fcb0f00 4fcb0f00 4fcb0f00 4f67f000 4fcb0f00 4fcb0f00 4f67f000 4fcb0f00 4f67f000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>1,c=>7,a=>43,b=>0,d=>7,f=>3} 2bf83300 2bf83300 2bf83300 2b1f9600 2bf83300 2bf83300 2b1f9600 2bf83300 2b1f9600 - {e=>3,c=>7,a=>-115,b=>7,d=>5,f=>4} 8d7f4700 8d7f4700 8d7f4700 8dfeb800 8d7f4700 8d7f4700 8dfeb800 8d7f4700 8dfeb800 - {e=>4,c=>7,a=>86,b=>7,d=>6,f=>6} 56bf6900 56bf6900 56bf6900 56ff4c00 56bf6900 56bf6900 56ff4c00 56bf6900 56ff4c00 - {e=>1,c=>0,a=>-25,b=>3,d=>2,f=>1} e7831200 e7831200 e7831200 e7611200 e7831200 e7831200 e7611200 e7831200 e7611200 - {e=>7,c=>7,a=>19,b=>4,d=>7,f=>0} 13fc0f00 13fc0f00 13fc0f00 139ff000 13fc0f00 13fc0f00 139ff000 13fc0f00 139ff000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>7,c=>3,a=>-86,g=>1,b=>7,d=>6,f=>1} aa9f1f01 aa9f1f01 aa9f1f01 aaef7220 aa9f1f01 aa9f1f01 aaef7220 aa9f1f01 aaef7220 - {e=>1,c=>6,a=>18,g=>4,b=>6,d=>5,f=>5} 12765304 12765304 12765304 12da9a80 12765304 12765304 12da9a80 12765304 12da9a80 - {e=>0,c=>5,a=>6,g=>2,b=>6,d=>1,f=>0} 066e0002 066e0002 066e0002 06d48040 066e0002 066e0002 06d48040 066e0002 06d48040 - {e=>0,c=>2,a=>2,g=>1,b=>5,d=>3,f=>4} 02d54001 02d54001 02d54001 02a98820 02d54001 02d54001 02a98820 02d54001 02a98820 - {e=>4,c=>6,a=>110,g=>5,b=>6,d=>3,f=>1} 6ef61805 6ef61805 6ef61805 6ed9c2a0 6ef61805 6ef61805 6ed9c2a0 6ef61805 6ed9c2a0 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>-103,d=>2,c=>7,h=>28,b=>4,g=>0,f=>0} 99bc0e001c000000 99bc0e00000000001c00000000000000 99bc0e00000000001c00000000000000 999d70000000001c 99bc0e001c000000 99bc0e001c000000 999d700000000000000000000000001c 99bc0e001c000000 999d70000000001c - {e=>1,a=>-118,d=>7,c=>2,h=>87,b=>6,g=>2,f=>7} 8ad6730257000000 8ad67302000000005700000000000000 8ad67302000000005700000000000000 8acb9e4000000057 8ad6730257000000 8ad6730257000000 8acb9e40000000000000000000000057 8ad6730257000000 8acb9e4000000057 - {e=>0,a=>93,d=>0,c=>4,h=>190,b=>4,g=>2,f=>4} 5d244002be000000 5d24400200000000be00000000000000 5d24400200000000be00000000000000 5d900840000000be 5d244002be000000 5d244002be000000 5d9008400000000000000000000000be 5d244002be000000 5d900840000000be - {e=>4,a=>119,d=>3,c=>2,h=>230,b=>0,g=>6,f=>3} 77d03806e6000000 77d0380600000000e600000000000000 77d0380600000000e600000000000000 7709c6c0000000e6 77d03806e6000000 77d03806e6000000 7709c6c00000000000000000000000e6 77d03806e6000000 7709c6c0000000e6 - {e=>5,a=>-101,d=>5,c=>7,h=>52,b=>3,g=>7,f=>4} 9b7b4b0734000000 9b7b4b07000000003400000000000000 9b7b4b07000000003400000000000000 9b7ed8e000000034 9b7b4b0734000000 9b7b4b0734000000 9b7ed8e0000000000000000000000034 9b7b4b0734000000 9b7ed8e000000034 = struct umixed3 { short a; unsigned char b:3; }; - {a=>117,b=>6} 75000600 75000600 75000600 0075c000 75000600 75000600 0075c000 75000600 0075c000 - {a=>27,b=>7} 1b000700 1b000700 1b000700 001be000 1b000700 1b000700 001be000 1b000700 001be000 - {a=>-51,b=>0} cdff0000 cdff0000 cdff0000 ffcd0000 cdff0000 cdff0000 ffcd0000 cdff0000 ffcd0000 - {a=>-8,b=>4} f8ff0400 f8ff0400 f8ff0400 fff88000 f8ff0400 f8ff0400 fff88000 f8ff0400 fff88000 - {a=>72,b=>7} 48000700 48000700 48000700 0048e000 48000700 48000700 0048e000 48000700 0048e000 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>-49,b=>3} cfff0300 cfff0300 cfff0300 ffcf6000 cfff0300 cfff0300 ffcf6000 cfff0300 ffcf6000 - {c=>4,a=>28,b=>7} 1c002700 1c002700 1c002700 001cf000 1c002700 1c002700 001cf000 1c002700 001cf000 - {c=>2,a=>97,b=>5} 61001500 61001500 61001500 0061a800 61001500 61001500 0061a800 61001500 0061a800 - {c=>3,a=>-123,b=>0} 85ff1800 85ff1800 85ff1800 ff850c00 85ff1800 85ff1800 ff850c00 85ff1800 ff850c00 - {c=>3,a=>71,b=>7} 47001f00 47001f00 47001f00 0047ec00 47001f00 47001f00 0047ec00 47001f00 0047ec00 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>6,a=>-55,b=>7,d=>2} c9ffb700 c9ffb700 c9ffb700 ffc9f900 c9ffb700 c9ffb700 ffc9f900 c9ffb700 ffc9f900 - {c=>4,a=>118,b=>0,d=>7} 7600e001 7600e001 7600e001 00761380 7600e001 7600e001 00761380 7600e001 00761380 - {c=>4,a=>-56,b=>7,d=>0} c8ff2700 c8ff2700 c8ff2700 ffc8f000 c8ff2700 c8ff2700 ffc8f000 c8ff2700 ffc8f000 - {c=>1,a=>111,b=>5,d=>1} 6f004d00 6f004d00 6f004d00 006fa480 6f004d00 6f004d00 006fa480 6f004d00 006fa480 - {c=>4,a=>-108,b=>3,d=>3} 94ffe300 94ffe300 94ffe300 ff947180 94ffe300 94ffe300 ff947180 94ffe300 ff947180 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>2,c=>5,a=>2,b=>4,d=>4} 02002c05 02002c05 02002c05 00029620 02002c05 02002c05 00029620 02002c05 00029620 - {e=>7,c=>2,a=>57,b=>2,d=>1} 3900520e 3900520e 3900520e 003948f0 3900520e 3900520e 003948f0 3900520e 003948f0 - {e=>1,c=>6,a=>92,b=>1,d=>3} 5c00f102 5c00f102 5c00f102 005c3990 5c00f102 5c00f102 005c3990 5c00f102 005c3990 - {e=>0,c=>1,a=>-36,b=>0,d=>2} dcff8800 dcff8800 dcff8800 ffdc0500 dcff8800 dcff8800 ffdc0500 dcff8800 ffdc0500 - {e=>1,c=>4,a=>-88,b=>1,d=>0} a8ff2102 a8ff2102 a8ff2102 ffa83010 a8ff2102 a8ff2102 ffa83010 a8ff2102 ffa83010 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>0,c=>1,a=>-52,b=>6,d=>1,f=>6} ccff4e60 ccff4e60 ccff4e60 ffccc48c ccff4e60 ccff4e60 ffccc48c ccff4e60 ffccc48c - {e=>3,c=>5,a=>-41,b=>2,d=>6,f=>0} d7ffaa07 d7ffaa07 d7ffaa07 ffd75730 d7ffaa07 d7ffaa07 ffd75730 d7ffaa07 ffd75730 - {e=>2,c=>3,a=>-90,b=>5,d=>7,f=>3} a6ffdd35 a6ffdd35 a6ffdd35 ffa6afa6 a6ffdd35 a6ffdd35 ffa6afa6 a6ffdd35 ffa6afa6 - {e=>1,c=>4,a=>6,b=>2,d=>4,f=>7} 06002273 06002273 06002273 0006521e 06002273 06002273 0006521e 06002273 0006521e - {e=>2,c=>4,a=>24,b=>4,d=>4,f=>7} 18002475 18002475 18002475 0018922e 18002475 18002475 0018922e 18002475 0018922e = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>4,c=>2,a=>-91,g=>7,b=>6,d=>2,f=>3} a5ff963807000000 a5ff963807000000 a5ff963807000000 ffa5c946e0000000 a5ff963807000000 a5ff963807000000 ffa5c946e0000000 a5ff963807000000 ffa5c946e0000000 - {e=>3,c=>0,a=>116,g=>7,b=>3,d=>7,f=>4} 7400c34707000000 7400c34707000000 7400c34707000000 007463b8e0000000 7400c34707000000 7400c34707000000 007463b8e0000000 7400c34707000000 007463b8e0000000 - {e=>2,c=>7,a=>93,g=>4,b=>6,d=>6,f=>7} 5d00be7504000000 5d00be7504000000 5d00be7504000000 005ddf2e80000000 5d00be7504000000 5d00be7504000000 005ddf2e80000000 5d00be7504000000 005ddf2e80000000 - {e=>2,c=>5,a=>108,g=>5,b=>4,d=>4,f=>2} 6c002c2505000000 6c002c2505000000 6c002c2505000000 006c9624a0000000 6c002c2505000000 6c002c2505000000 006c9624a0000000 6c002c2505000000 006c9624a0000000 - {e=>4,c=>2,a=>-28,g=>3,b=>4,d=>2,f=>6} e4ff946803000000 e4ff946803000000 e4ff946803000000 ffe4894c60000000 e4ff946803000000 e4ff946803000000 ffe4894c60000000 e4ff946803000000 ffe4894c60000000 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>4,a=>-83,d=>2,c=>5,h=>218,b=>0,g=>2,f=>5} adffa85802000000da000000 adffa85802000000da00000000000000 adffa85802000000da00000000000000 ffad154a40000000000000da adffa85802000000da000000 adffa85802000000da000000 ffad154a4000000000000000000000da adffa85802000000da000000 ffad154a40000000000000da - {e=>2,a=>12,d=>1,c=>2,h=>88,b=>2,g=>6,f=>2} 0c0052240600000058000000 0c005224060000005800000000000000 0c005224060000005800000000000000 000c48a4c000000000000058 0c0052240600000058000000 0c0052240600000058000000 000c48a4c00000000000000000000058 0c0052240600000058000000 000c48a4c000000000000058 - {e=>1,a=>-57,d=>1,c=>1,h=>75,b=>1,g=>4,f=>3} c7ff4932040000004b000000 c7ff4932040000004b00000000000000 c7ff4932040000004b00000000000000 ffc72496800000000000004b c7ff4932040000004b000000 c7ff4932040000004b000000 ffc7249680000000000000000000004b c7ff4932040000004b000000 ffc72496800000000000004b - {e=>7,a=>17,d=>6,c=>0,h=>143,b=>5,g=>4,f=>1} 1100851f040000008f000000 1100851f040000008f00000000000000 1100851f040000008f00000000000000 0011a372800000000000008f 1100851f040000008f000000 1100851f040000008f000000 0011a37280000000000000000000008f 1100851f040000008f000000 0011a372800000000000008f - {e=>1,a=>10,d=>6,c=>1,h=>73,b=>1,g=>0,f=>6} 0a0089630000000049000000 0a008963000000004900000000000000 0a008963000000004900000000000000 000a271c0000000000000049 0a0089630000000049000000 0a0089630000000049000000 000a271c000000000000000000000049 0a0089630000000049000000 000a271c0000000000000049 = struct umixed3 { int a; unsigned char b:3; }; - {a=>-62,b=>6} c2ffffff06000000 c2ffffff06000000 c2ffffff06000000 ffffffc2c0000000 c2ffffff06000000 c2ffffff06000000 ffffffc2c0000000 c2ffffff06000000 ffffffc2c0000000 - {a=>-53,b=>2} cbffffff02000000 cbffffff02000000 cbffffff02000000 ffffffcb40000000 cbffffff02000000 cbffffff02000000 ffffffcb40000000 cbffffff02000000 ffffffcb40000000 - {a=>118,b=>0} 7600000000000000 7600000000000000 7600000000000000 0000007600000000 7600000000000000 7600000000000000 0000007600000000 7600000000000000 0000007600000000 - {a=>59,b=>0} 3b00000000000000 3b00000000000000 3b00000000000000 0000003b00000000 3b00000000000000 3b00000000000000 0000003b00000000 3b00000000000000 0000003b00000000 - {a=>-20,b=>1} ecffffff01000000 ecffffff01000000 ecffffff01000000 ffffffec20000000 ecffffff01000000 ecffffff01000000 ffffffec20000000 ecffffff01000000 ffffffec20000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-62,b=>7} c2ffffff2f000000 c2ffffff2f000000 c2ffffff2f000000 ffffffc2f4000000 c2ffffff2f000000 c2ffffff2f000000 ffffffc2f4000000 c2ffffff2f000000 ffffffc2f4000000 - {c=>6,a=>-14,b=>1} f2ffffff31000000 f2ffffff31000000 f2ffffff31000000 fffffff238000000 f2ffffff31000000 f2ffffff31000000 fffffff238000000 f2ffffff31000000 fffffff238000000 - {c=>6,a=>63,b=>7} 3f00000037000000 3f00000037000000 3f00000037000000 0000003ff8000000 3f00000037000000 3f00000037000000 0000003ff8000000 3f00000037000000 0000003ff8000000 - {c=>3,a=>41,b=>2} 290000001a000000 290000001a000000 290000001a000000 000000294c000000 290000001a000000 290000001a000000 000000294c000000 290000001a000000 000000294c000000 - {c=>7,a=>18,b=>2} 120000003a000000 120000003a000000 120000003a000000 000000125c000000 120000003a000000 120000003a000000 000000125c000000 120000003a000000 000000125c000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>5,a=>75,b=>4,d=>6} 4b000000ac010000 4b000000ac010000 4b000000ac010000 0000004b97000000 4b000000ac010000 4b000000ac010000 0000004b97000000 4b000000ac010000 0000004b97000000 - {c=>0,a=>117,b=>6,d=>0} 7500000006000000 7500000006000000 7500000006000000 00000075c0000000 7500000006000000 7500000006000000 00000075c0000000 7500000006000000 00000075c0000000 - {c=>2,a=>-47,b=>1,d=>6} d1ffffff91010000 d1ffffff91010000 d1ffffff91010000 ffffffd12b000000 d1ffffff91010000 d1ffffff91010000 ffffffd12b000000 d1ffffff91010000 ffffffd12b000000 - {c=>4,a=>-11,b=>0,d=>3} f5ffffffe0000000 f5ffffffe0000000 f5ffffffe0000000 fffffff511800000 f5ffffffe0000000 f5ffffffe0000000 fffffff511800000 f5ffffffe0000000 fffffff511800000 - {c=>1,a=>64,b=>7,d=>5} 400000004f010000 400000004f010000 400000004f010000 00000040e6800000 400000004f010000 400000004f010000 00000040e6800000 400000004f010000 00000040e6800000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>1,c=>3,a=>-106,b=>7,d=>0} 96ffffff1f020000 96ffffff1f020000 96ffffff1f020000 ffffff96ec100000 96ffffff1f020000 96ffffff1f020000 ffffff96ec100000 96ffffff1f020000 ffffff96ec100000 - {e=>5,c=>5,a=>-62,b=>1,d=>2} c2ffffffa90a0000 c2ffffffa90a0000 c2ffffffa90a0000 ffffffc235500000 c2ffffffa90a0000 c2ffffffa90a0000 ffffffc235500000 c2ffffffa90a0000 ffffffc235500000 - {e=>6,c=>2,a=>-4,b=>4,d=>4} fcffffff140d0000 fcffffff140d0000 fcffffff140d0000 fffffffc8a600000 fcffffff140d0000 fcffffff140d0000 fffffffc8a600000 fcffffff140d0000 fffffffc8a600000 - {e=>5,c=>7,a=>-93,b=>4,d=>2} a3ffffffbc0a0000 a3ffffffbc0a0000 a3ffffffbc0a0000 ffffffa39d500000 a3ffffffbc0a0000 a3ffffffbc0a0000 ffffffa39d500000 a3ffffffbc0a0000 ffffffa39d500000 - {e=>7,c=>3,a=>67,b=>3,d=>2} 430000009b0e0000 430000009b0e0000 430000009b0e0000 000000436d700000 430000009b0e0000 430000009b0e0000 000000436d700000 430000009b0e0000 000000436d700000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>2,c=>6,a=>83,b=>3,d=>5,f=>4} 5300000073450000 5300000073450000 5300000073450000 000000537aa80000 5300000073450000 5300000073450000 000000537aa80000 5300000073450000 000000537aa80000 - {e=>0,c=>5,a=>121,b=>1,d=>7,f=>3} 79000000e9310000 79000000e9310000 79000000e9310000 0000007937860000 79000000e9310000 79000000e9310000 0000007937860000 79000000e9310000 0000007937860000 - {e=>7,c=>2,a=>-79,b=>3,d=>7,f=>1} b1ffffffd31f0000 b1ffffffd31f0000 b1ffffffd31f0000 ffffffb16bf20000 b1ffffffd31f0000 b1ffffffd31f0000 ffffffb16bf20000 b1ffffffd31f0000 ffffffb16bf20000 - {e=>4,c=>0,a=>-82,b=>1,d=>3,f=>3} aeffffffc1380000 aeffffffc1380000 aeffffffc1380000 ffffffae21c60000 aeffffffc1380000 aeffffffc1380000 ffffffae21c60000 aeffffffc1380000 ffffffae21c60000 - {e=>3,c=>4,a=>32,b=>4,d=>6,f=>0} 20000000a4070000 20000000a4070000 20000000a4070000 0000002093300000 20000000a4070000 20000000a4070000 0000002093300000 20000000a4070000 0000002093300000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>7,c=>4,a=>-119,g=>7,b=>6,d=>2,f=>5} 89ffffffa65e0700 89ffffffa65e0700 89ffffffa65e0700 ffffff89d17ae000 89ffffffa65e0700 89ffffffa65e0700 ffffff89d17ae000 89ffffffa65e0700 ffffff89d17ae000 - {e=>4,c=>7,a=>75,g=>5,b=>7,d=>2,f=>3} 4b000000bf380500 4b000000bf380500 4b000000bf380500 0000004bfd46a000 4b000000bf380500 4b000000bf380500 0000004bfd46a000 4b000000bf380500 0000004bfd46a000 - {e=>1,c=>0,a=>-122,g=>5,b=>5,d=>2,f=>1} 86ffffff85120500 86ffffff85120500 86ffffff85120500 ffffff86a112a000 86ffffff85120500 86ffffff85120500 ffffff86a112a000 86ffffff85120500 ffffff86a112a000 - {e=>7,c=>6,a=>-118,g=>7,b=>5,d=>1,f=>3} 8affffff753e0700 8affffff753e0700 8affffff753e0700 ffffff8ab8f6e000 8affffff753e0700 8affffff753e0700 ffffff8ab8f6e000 8affffff753e0700 ffffff8ab8f6e000 - {e=>6,c=>5,a=>-69,g=>0,b=>7,d=>1,f=>1} bbffffff6f1c0000 bbffffff6f1c0000 bbffffff6f1c0000 ffffffbbf4e20000 bbffffff6f1c0000 bbffffff6f1c0000 ffffffbbf4e20000 bbffffff6f1c0000 ffffffbbf4e20000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>22,d=>3,c=>6,h=>27,b=>7,g=>2,f=>4} 16000000f74e02001b000000 16000000f74e02001b00000000000000 16000000f74e02001b00000000000000 00000016f9f840000000001b 16000000f74e02001b000000 16000000f74e02001b000000 00000016f9f84000000000000000001b 16000000f74e02001b000000 00000016f9f840000000001b - {e=>0,a=>-54,d=>1,c=>7,h=>112,b=>1,g=>4,f=>2} caffffff7920040070000000 caffffff792004007000000000000000 caffffff792004007000000000000000 ffffffca3c84800000000070 caffffff7920040070000000 caffffff7920040070000000 ffffffca3c8480000000000000000070 caffffff7920040070000000 ffffffca3c84800000000070 - {e=>7,a=>1,d=>5,c=>7,h=>4,b=>5,g=>5,f=>4} 010000007d4f050004000000 010000007d4f05000400000000000000 010000007d4f05000400000000000000 00000001bef8a00000000004 010000007d4f050004000000 010000007d4f050004000000 00000001bef8a0000000000000000004 010000007d4f050004000000 00000001bef8a00000000004 - {e=>2,a=>10,d=>0,c=>1,h=>37,b=>2,g=>4,f=>7} 0a0000000a74040025000000 0a0000000a7404002500000000000000 0a0000000a7404002500000000000000 0000000a442e800000000025 0a0000000a74040025000000 0a0000000a74040025000000 0000000a442e80000000000000000025 0a0000000a74040025000000 0000000a442e800000000025 - {e=>4,a=>-17,d=>3,c=>0,h=>76,b=>4,g=>0,f=>6} efffffffc46800004c000000 efffffffc46800004c00000000000000 efffffffc46800004c00000000000000 ffffffef81cc00000000004c efffffffc46800004c000000 efffffffc46800004c000000 ffffffef81cc0000000000000000004c efffffffc46800004c000000 ffffffef81cc00000000004c = struct umixed3 { long a; unsigned char b:3; }; - {a=>83,b=>2} 5300000002000000 53000000000000000200000000000000 53000000000000000200000000000000 0000005340000000 5300000002000000 5300000002000000 00000000000000534000000000000000 5300000002000000 0000005340000000 - {a=>21,b=>7} 1500000007000000 15000000000000000700000000000000 15000000000000000700000000000000 00000015e0000000 1500000007000000 1500000007000000 0000000000000015e000000000000000 1500000007000000 00000015e0000000 - {a=>-112,b=>2} 90ffffff02000000 90ffffffffffffff0200000000000000 90ffffffffffffff0200000000000000 ffffff9040000000 90ffffff02000000 90ffffff02000000 ffffffffffffff904000000000000000 90ffffff02000000 ffffff9040000000 - {a=>56,b=>1} 3800000001000000 38000000000000000100000000000000 38000000000000000100000000000000 0000003820000000 3800000001000000 3800000001000000 00000000000000382000000000000000 3800000001000000 0000003820000000 - {a=>-36,b=>0} dcffffff00000000 dcffffffffffffff0000000000000000 dcffffffffffffff0000000000000000 ffffffdc00000000 dcffffff00000000 dcffffff00000000 ffffffffffffffdc0000000000000000 dcffffff00000000 ffffffdc00000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-25,b=>4} e7ffffff2c000000 e7ffffffffffffff2c00000000000000 e7ffffffffffffff2c00000000000000 ffffffe794000000 e7ffffff2c000000 e7ffffff2c000000 ffffffffffffffe79400000000000000 e7ffffff2c000000 ffffffe794000000 - {c=>4,a=>-122,b=>2} 86ffffff22000000 86ffffffffffffff2200000000000000 86ffffffffffffff2200000000000000 ffffff8650000000 86ffffff22000000 86ffffff22000000 ffffffffffffff865000000000000000 86ffffff22000000 ffffff8650000000 - {c=>1,a=>-102,b=>1} 9affffff09000000 9affffffffffffff0900000000000000 9affffffffffffff0900000000000000 ffffff9a24000000 9affffff09000000 9affffff09000000 ffffffffffffff9a2400000000000000 9affffff09000000 ffffff9a24000000 - {c=>4,a=>2,b=>3} 0200000023000000 02000000000000002300000000000000 02000000000000002300000000000000 0000000270000000 0200000023000000 0200000023000000 00000000000000027000000000000000 0200000023000000 0000000270000000 - {c=>4,a=>120,b=>2} 7800000022000000 78000000000000002200000000000000 78000000000000002200000000000000 0000007850000000 7800000022000000 7800000022000000 00000000000000785000000000000000 7800000022000000 0000007850000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>5,a=>-39,b=>2,d=>0} d9ffffff2a000000 d9ffffffffffffff2a00000000000000 d9ffffffffffffff2a00000000000000 ffffffd954000000 d9ffffff2a000000 d9ffffff2a000000 ffffffffffffffd95400000000000000 d9ffffff2a000000 ffffffd954000000 - {c=>3,a=>-53,b=>0,d=>4} cbffffff18010000 cbffffffffffffff1801000000000000 cbffffffffffffff1801000000000000 ffffffcb0e000000 cbffffff18010000 cbffffff18010000 ffffffffffffffcb0e00000000000000 cbffffff18010000 ffffffcb0e000000 - {c=>5,a=>-104,b=>4,d=>7} 98ffffffec010000 98ffffffffffffffec01000000000000 98ffffffffffffffec01000000000000 ffffff9897800000 98ffffffec010000 98ffffffec010000 ffffffffffffff989780000000000000 98ffffffec010000 ffffff9897800000 - {c=>6,a=>-123,b=>4,d=>2} 85ffffffb4000000 85ffffffffffffffb400000000000000 85ffffffffffffffb400000000000000 ffffff8599000000 85ffffffb4000000 85ffffffb4000000 ffffffffffffff859900000000000000 85ffffffb4000000 ffffff8599000000 - {c=>3,a=>-127,b=>3,d=>6} 81ffffff9b010000 81ffffffffffffff9b01000000000000 81ffffffffffffff9b01000000000000 ffffff816f000000 81ffffff9b010000 81ffffff9b010000 ffffffffffffff816f00000000000000 81ffffff9b010000 ffffff816f000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>6,c=>5,a=>61,b=>1,d=>1} 3d000000690c0000 3d00000000000000690c000000000000 3d00000000000000690c000000000000 0000003d34e00000 3d000000690c0000 3d000000690c0000 000000000000003d34e0000000000000 3d000000690c0000 0000003d34e00000 - {e=>7,c=>2,a=>72,b=>7,d=>7} 48000000d70f0000 4800000000000000d70f000000000000 4800000000000000d70f000000000000 00000048ebf00000 48000000d70f0000 48000000d70f0000 0000000000000048ebf0000000000000 48000000d70f0000 00000048ebf00000 - {e=>6,c=>1,a=>33,b=>1,d=>5} 21000000490d0000 2100000000000000490d000000000000 2100000000000000490d000000000000 0000002126e00000 21000000490d0000 21000000490d0000 000000000000002126e0000000000000 21000000490d0000 0000002126e00000 - {e=>1,c=>5,a=>59,b=>3,d=>6} 3b000000ab030000 3b00000000000000ab03000000000000 3b00000000000000ab03000000000000 0000003b77100000 3b000000ab030000 3b000000ab030000 000000000000003b7710000000000000 3b000000ab030000 0000003b77100000 - {e=>5,c=>7,a=>-74,b=>4,d=>1} b6ffffff7c0a0000 b6ffffffffffffff7c0a000000000000 b6ffffffffffffff7c0a000000000000 ffffffb69cd00000 b6ffffff7c0a0000 b6ffffff7c0a0000 ffffffffffffffb69cd0000000000000 b6ffffff7c0a0000 ffffffb69cd00000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>2,c=>0,a=>72,b=>0,d=>6,f=>6} 4800000080650000 48000000000000008065000000000000 48000000000000008065000000000000 00000048032c0000 4800000080650000 4800000080650000 0000000000000048032c000000000000 4800000080650000 00000048032c0000 - {e=>1,c=>6,a=>-5,b=>3,d=>2,f=>4} fbffffffb3420000 fbffffffffffffffb342000000000000 fbffffffffffffffb342000000000000 fffffffb79180000 fbffffffb3420000 fbffffffb3420000 fffffffffffffffb7918000000000000 fbffffffb3420000 fffffffb79180000 - {e=>3,c=>4,a=>-25,b=>7,d=>2,f=>1} e7ffffffa7160000 e7ffffffffffffffa716000000000000 e7ffffffffffffffa716000000000000 ffffffe7f1320000 e7ffffffa7160000 e7ffffffa7160000 ffffffffffffffe7f132000000000000 e7ffffffa7160000 ffffffe7f1320000 - {e=>6,c=>2,a=>127,b=>5,d=>2,f=>0} 7f000000950c0000 7f00000000000000950c000000000000 7f00000000000000950c000000000000 0000007fa9600000 7f000000950c0000 7f000000950c0000 000000000000007fa960000000000000 7f000000950c0000 0000007fa9600000 - {e=>1,c=>2,a=>-28,b=>2,d=>6,f=>6} e4ffffff92630000 e4ffffffffffffff9263000000000000 e4ffffffffffffff9263000000000000 ffffffe44b1c0000 e4ffffff92630000 e4ffffff92630000 ffffffffffffffe44b1c000000000000 e4ffffff92630000 ffffffe44b1c0000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>5,c=>0,a=>-20,g=>4,b=>1,d=>6,f=>7} ecffffff817b0400 ecffffffffffffff817b040000000000 ecffffffffffffff817b040000000000 ffffffec235e8000 ecffffff817b0400 ecffffff817b0400 ffffffffffffffec235e800000000000 ecffffff817b0400 ffffffec235e8000 - {e=>6,c=>7,a=>89,g=>0,b=>6,d=>5,f=>4} 590000007e4d0000 59000000000000007e4d000000000000 59000000000000007e4d000000000000 00000059dee80000 590000007e4d0000 590000007e4d0000 0000000000000059dee8000000000000 590000007e4d0000 00000059dee80000 - {e=>2,c=>7,a=>75,g=>1,b=>0,d=>5,f=>5} 4b00000078550100 4b000000000000007855010000000000 4b000000000000007855010000000000 0000004b1eaa2000 4b00000078550100 4b00000078550100 000000000000004b1eaa200000000000 4b00000078550100 0000004b1eaa2000 - {e=>5,c=>6,a=>-7,g=>2,b=>2,d=>4,f=>2} f9ffffff322b0200 f9ffffffffffffff322b020000000000 f9ffffffffffffff322b020000000000 fffffff95a544000 f9ffffff322b0200 f9ffffff322b0200 fffffffffffffff95a54400000000000 f9ffffff322b0200 fffffff95a544000 - {e=>0,c=>5,a=>-93,g=>6,b=>5,d=>1,f=>2} a3ffffff6d200600 a3ffffffffffffff6d20060000000000 a3ffffffffffffff6d20060000000000 ffffffa3b484c000 a3ffffff6d200600 a3ffffff6d200600 ffffffffffffffa3b484c00000000000 a3ffffff6d200600 ffffffa3b484c000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>-73,d=>5,c=>2,h=>27,b=>3,g=>0,f=>5} b7ffffff535f00001b000000 b7ffffffffffffff535f0000000000001b00000000000000 b7ffffffffffffff535f0000000000001b00000000000000 ffffffb76afa00000000001b b7ffffff535f00001b000000 b7ffffff535f00001b000000 ffffffffffffffb76afa000000000000000000000000001b b7ffffff535f00001b000000 ffffffb76afa00000000001b - {e=>5,a=>-115,d=>0,c=>4,h=>51,b=>2,g=>3,f=>6} 8dffffff226a030033000000 8dffffffffffffff226a0300000000003300000000000000 8dffffffffffffff226a0300000000003300000000000000 ffffff8d505c600000000033 8dffffff226a030033000000 8dffffff226a030033000000 ffffffffffffff8d505c6000000000000000000000000033 8dffffff226a030033000000 ffffff8d505c600000000033 - {e=>4,a=>20,d=>0,c=>2,h=>56,b=>5,g=>7,f=>4} 140000001548070038000000 140000000000000015480700000000003800000000000000 140000000000000015480700000000003800000000000000 00000014a848e00000000038 140000001548070038000000 140000001548070038000000 0000000000000014a848e000000000000000000000000038 140000001548070038000000 00000014a848e00000000038 - {e=>6,a=>115,d=>7,c=>2,h=>157,b=>2,g=>0,f=>3} 73000000d23d00009d000000 7300000000000000d23d0000000000009d00000000000000 7300000000000000d23d0000000000009d00000000000000 000000734be600000000009d 73000000d23d00009d000000 73000000d23d00009d000000 00000000000000734be6000000000000000000000000009d 73000000d23d00009d000000 000000734be600000000009d - {e=>1,a=>101,d=>4,c=>2,h=>189,b=>7,g=>1,f=>6} 6500000017630100bd000000 65000000000000001763010000000000bd00000000000000 65000000000000001763010000000000bd00000000000000 00000065ea1c2000000000bd 6500000017630100bd000000 6500000017630100bd000000 0000000000000065ea1c20000000000000000000000000bd 6500000017630100bd000000 00000065ea1c2000000000bd = struct umixed_no_pack { unsigned char a:3; }; - {a=>2} 02 02 02 40 02000000 02 40 02 40 - {a=>3} 03 03 03 60 03000000 03 60 03 60 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>6} 06 06 06 c0 06000000 06 c0 06 c0 - {a=>5} 05 05 05 a0 05000000 05 a0 05 a0 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; }; - {a=>3,b=>4} 23 23 23 70 23000000 23 70 23 70 - {a=>4,b=>4} 24 24 24 90 24000000 24 90 24 90 - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>6,b=>0} 06 06 06 c0 06000000 06 c0 06 c0 - {a=>7,b=>2} 17 17 17 e8 17000000 17 e8 17 e8 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>2,a=>4,b=>5} ac00 ac00 ac00 9500 ac000000 ac00 9500 ac00 9500 - {c=>6,a=>2,b=>7} ba01 ba01 ba01 5f00 ba010000 ba01 5f00 ba01 5f00 - {c=>5,a=>1,b=>5} 6901 6901 6901 3680 69010000 6901 3680 6901 3680 - {c=>5,a=>1,b=>5} 6901 6901 6901 3680 69010000 6901 3680 6901 3680 - {c=>6,a=>2,b=>0} 8201 8201 8201 4300 82010000 8201 4300 8201 4300 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>2,a=>3,b=>4,d=>16659437} a3000000ed33fe00 a3000000ed33fe00 a3000000ed33fe00 710000000fe33ed0 a3000000ed33fe00 a3000000ed33fe00 710000000fe33ed0 a3000000ed33fe00 710000000fe33ed0 - {c=>7,a=>2,b=>3,d=>201260983} da010000b7fffe0b da010000b7fffe0b da010000b7fffe0b 4f800000bfeffb70 da010000b7fffe0b da010000b7fffe0b 4f800000bfeffb70 da010000b7fffe0b 4f800000bfeffb70 - {c=>1,a=>6,b=>3,d=>256219575} 5e000000b799450f 5e000000b799450f 5e000000b799450f cc800000f4599b70 5e000000b799450f 5e000000b799450f cc800000f4599b70 5e000000b799450f cc800000f4599b70 - {c=>7,a=>6,b=>0,d=>55997687} c6010000f7745603 c6010000f7745603 c6010000f7745603 c380000035674f70 c6010000f7745603 c6010000f7745603 c380000035674f70 c6010000f7745603 c380000035674f70 - {c=>2,a=>4,b=>4,d=>103672891} a40000003bec2d06 a40000003bec2d06 a40000003bec2d06 9100000062dec3b0 a40000003bec2d06 a40000003bec2d06 9100000062dec3b0 a40000003bec2d06 9100000062dec3b0 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>4,c=>3,a=>3,b=>1,d=>63303944} cb00000008f1c543 cb00000008f1c543 cb00000008f1c543 658000003c5f1088 cb00000008f1c543 cb00000008f1c543 658000003c5f1088 cb00000008f1c543 658000003c5f1088 - {e=>6,c=>1,a=>7,b=>5,d=>115286698} 6f000000aa22df66 6f000000aa22df66 6f000000aa22df66 f48000006df22aac 6f000000aa22df66 6f000000aa22df66 f48000006df22aac 6f000000aa22df66 f48000006df22aac - {e=>5,c=>7,a=>5,b=>1,d=>33758906} cd010000ba1e0352 cd010000ba1e0352 cd010000ba1e0352 a78000002031ebaa cd010000ba1e0352 cd010000ba1e0352 a78000002031ebaa cd010000ba1e0352 a78000002031ebaa - {e=>1,c=>7,a=>2,b=>1,d=>75998826} ca0100006aa68714 ca0100006aa68714 ca0100006aa68714 47800000487a66a2 ca0100006aa68714 ca0100006aa68714 47800000487a66a2 ca0100006aa68714 47800000487a66a2 - {e=>0,c=>4,a=>2,b=>7,d=>23580046} 3a0100008ecd6701 3a0100008ecd6701 3a0100008ecd6701 5e000000167cd8e0 3a0100008ecd6701 3a0100008ecd6701 5e000000167cd8e0 3a0100008ecd6701 5e000000167cd8e0 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>1,c=>0,a=>2,b=>7,d=>158148049,f=>0} 3a000000d1256d1900000000 3a000000d1256d1900000000 3a000000d1256d1900000000 5c00000096d25d1200000000 3a000000d1256d1900000000 3a000000d1256d1900000000 5c00000096d25d1200000000 3a000000d1256d1900000000 5c00000096d25d1200000000 - {e=>3,c=>1,a=>1,b=>7,d=>228592629,f=>0} 79000000f50ba03d00000000 79000000f50ba03d00000000 79000000f50ba03d00000000 3c800000da00bf5600000000 79000000f50ba03d00000000 79000000f50ba03d00000000 3c800000da00bf5600000000 79000000f50ba03d00000000 3c800000da00bf5600000000 - {e=>6,c=>5,a=>5,b=>6,d=>13400160,f=>0} 750100006078cc6000000000 750100006078cc6000000000 750100006078cc6000000000 ba8000000cc7860c00000000 750100006078cc6000000000 750100006078cc6000000000 ba8000000cc7860c00000000 750100006078cc6000000000 ba8000000cc7860c00000000 - {e=>1,c=>2,a=>1,b=>1,d=>252868262,f=>3} 89000000a676121f03000000 89000000a676121f03000000 89000000a676121f03000000 25000000f1276a62c0000000 89000000a676121f03000000 89000000a676121f03000000 25000000f1276a62c0000000 89000000a676121f03000000 25000000f1276a62c0000000 - {e=>6,c=>3,a=>3,b=>0,d=>45793175,f=>0} c300000097bfba6200000000 c300000097bfba6200000000 c300000097bfba6200000000 618000002babf97c00000000 c300000097bfba6200000000 c300000097bfba6200000000 618000002babf97c00000000 c300000097bfba6200000000 618000002babf97c00000000 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>1,c=>2,a=>6,g=>1699,b=>6,d=>41631336,f=>2} b6000000683e7b128e1a0000 b6000000683e7b128e1a0000 b6000000683e7b128e1a0000 d900000027b3e6828d460000 b6000000683e7b128e1a0000 b6000000683e7b128e1a0000 d900000027b3e6828d460000 b6000000683e7b128e1a0000 d900000027b3e6828d460000 - {e=>2,c=>0,a=>2,g=>602,b=>2,d=>186423654,f=>2} 1200000066991c2b6a090000 1200000066991c2b6a090000 1200000066991c2b6a090000 48000000b1c9966484b40000 1200000066991c2b6a090000 1200000066991c2b6a090000 48000000b1c9966484b40000 1200000066991c2b6a090000 48000000b1c9966484b40000 - {e=>2,c=>7,a=>4,g=>6342,b=>7,d=>247473427,f=>2} fc0100001325c02e1a630000 fc0100001325c02e1a630000 fc0100001325c02e1a630000 9f800000ec025134b18c0000 fc0100001325c02e1a630000 fc0100001325c02e1a630000 9f800000ec025134b18c0000 fc0100001325c02e1a630000 9f800000ec025134b18c0000 - {e=>5,c=>7,a=>4,g=>2765,b=>7,d=>238172392,f=>1} fc010000e838325e352b0000 fc010000e838325e352b0000 fc010000e838325e352b0000 9f800000e3238e8a559a0000 fc010000e838325e352b0000 fc010000e838325e352b0000 9f800000e3238e8a559a0000 fc010000e838325e352b0000 9f800000e3238e8a559a0000 - {e=>1,c=>7,a=>1,g=>5584,b=>7,d=>2742541,f=>3} f90100000dd9291043570000 f90100000dd9291043570000 f90100000dd9291043570000 3f800000029d90d2eba00000 f90100000dd9291043570000 f90100000dd9291043570000 3f800000029d90d2eba00000 f90100000dd9291043570000 3f800000029d90d2eba00000 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; signed int h; }; - {e=>5,a=>0,d=>63927408,c=>7,h=>-86,b=>6,g=>5835,f=>1} f00100007074cf532d5b0000aaffffff f00100007074cf532d5b0000aaffffff f00100007074cf532d5b0000aaffffff 1b8000003cf7470a6d960000ffffffaa f00100007074cf532d5b0000aaffffff f00100007074cf532d5b0000aaffffff 1b8000003cf7470a6d960000ffffffaa f00100007074cf532d5b0000aaffffff 1b8000003cf7470a6d960000ffffffaa - {e=>7,a=>3,d=>165783275,c=>6,h=>-85,b=>5,g=>3147,f=>0} ab010000eba6e1792c310000abffffff ab010000eba6e1792c310000abffffff ab010000eba6e1792c310000abffffff 770000009e1a6ebe18960000ffffffab ab010000eba6e1792c310000abffffff ab010000eba6e1792c310000abffffff 770000009e1a6ebe18960000ffffffab ab010000eba6e1792c310000abffffff 770000009e1a6ebe18960000ffffffab - {e=>7,a=>0,d=>262181766,c=>7,h=>-76,b=>2,g=>3227,f=>0} d00100008693a07f6c320000b4ffffff d00100008693a07f6c320000b4ffffff d00100008693a07f6c320000b4ffffff 0b800000fa09386e19360000ffffffb4 d00100008693a07f6c320000b4ffffff d00100008693a07f6c320000b4ffffff 0b800000fa09386e19360000ffffffb4 d00100008693a07f6c320000b4ffffff 0b800000fa09386e19360000ffffffb4 - {e=>2,a=>1,d=>258295770,c=>1,h=>-44,b=>2,g=>2696,f=>2} 51000000da47652f222a0000d4ffffff 51000000da47652f222a0000d4ffffff 51000000da47652f222a0000d4ffffff 28800000f6547da495100000ffffffd4 51000000da47652f222a0000d4ffffff 51000000da47652f222a0000d4ffffff 28800000f6547da495100000ffffffd4 51000000da47652f222a0000d4ffffff 28800000f6547da495100000ffffffd4 - {e=>6,a=>7,d=>149674579,c=>6,h=>44,b=>7,g=>3480,f=>1} bf01000053daeb68613600002c000000 bf01000053daeb68613600002c000000 bf01000053daeb68613600002c000000 ff0000008ebda53c5b3000000000002c bf01000053daeb68613600002c000000 bf01000053daeb68613600002c000000 ff0000008ebda53c5b3000000000002c bf01000053daeb68613600002c000000 ff0000008ebda53c5b3000000000002c = struct umixed_no_pack { char a; unsigned char b:3; }; - {a=>18,b=>7} 1207 1207 1207 12e0 12070000 1207 12e0 1207 12e0 - {a=>-34,b=>4} de04 de04 de04 de80 de040000 de04 de80 de04 de80 - {a=>-63,b=>4} c104 c104 c104 c180 c1040000 c104 c180 c104 c180 - {a=>-10,b=>4} f604 f604 f604 f680 f6040000 f604 f680 f604 f680 - {a=>117,b=>1} 7501 7501 7501 7520 75010000 7501 7520 7501 7520 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-68,b=>6} bc26 bc26 bc26 bcd0 bc260000 bc26 bcd0 bc26 bcd0 - {c=>7,a=>48,b=>6} 303e 303e 303e 30dc 303e0000 303e 30dc 303e 30dc - {c=>7,a=>124,b=>0} 7c38 7c38 7c38 7c1c 7c380000 7c38 7c1c 7c38 7c1c - {c=>7,a=>111,b=>4} 6f3c 6f3c 6f3c 6f9c 6f3c0000 6f3c 6f9c 6f3c 6f9c - {c=>5,a=>-83,b=>1} ad29 ad29 ad29 ad34 ad290000 ad29 ad34 ad29 ad34 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>2,a=>116,b=>6,d=>5} 74160500 74160500 74160500 74c8a000 74160500 74160500 74c8a000 74160500 74c8a000 - {c=>0,a=>-85,b=>7,d=>7} ab070700 ab070700 ab070700 abe0e000 ab070700 ab070700 abe0e000 ab070700 abe0e000 - {c=>7,a=>13,b=>7,d=>6} 0d3f0600 0d3f0600 0d3f0600 0dfcc000 0d3f0600 0d3f0600 0dfcc000 0d3f0600 0dfcc000 - {c=>6,a=>118,b=>4,d=>6} 76340600 76340600 76340600 7698c000 76340600 76340600 7698c000 76340600 7698c000 - {c=>3,a=>59,b=>4,d=>5} 3b1c0500 3b1c0500 3b1c0500 3b8ca000 3b1c0500 3b1c0500 3b8ca000 3b1c0500 3b8ca000 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>27672616,c=>4,a=>110,b=>5,d=>2} 6e2502002840a601 6e2502002840a601 6e2502002840a601 6eb040001a640280 6e2502002840a601 6e2502002840a601 6eb040001a640280 6e2502002840a601 6eb040001a640280 - {e=>87433172,c=>4,a=>106,b=>7,d=>5} 6a270500d41f3605 6a270500d41f3605 6a270500d41f3605 6af0a0005361fd40 6a270500d41f3605 6a270500d41f3605 6af0a0005361fd40 6a270500d41f3605 6af0a0005361fd40 - {e=>33757072,c=>4,a=>-72,b=>4,d=>2} b824020090170302 b824020090170302 b824020090170302 b890400020317900 b824020090170302 b824020090170302 b890400020317900 b824020090170302 b890400020317900 - {e=>12459290,c=>0,a=>49,b=>7,d=>0} 310700001a1dbe00 310700001a1dbe00 310700001a1dbe00 31e000000be1d1a0 310700001a1dbe00 310700001a1dbe00 31e000000be1d1a0 310700001a1dbe00 31e000000be1d1a0 - {e=>265383931,c=>3,a=>-91,b=>4,d=>1} a51c0100fb6fd10f a51c0100fb6fd10f a51c0100fb6fd10f a58c2000fd16ffb0 a51c0100fb6fd10f a51c0100fb6fd10f a58c2000fd16ffb0 a51c0100fb6fd10f a58c2000fd16ffb0 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>121017809,c=>3,a=>-127,b=>5,d=>0,f=>6} 811d0000d1953667 811d0000d1953667 811d0000d1953667 81ac000073695d1c 811d0000d1953667 811d0000d1953667 81ac000073695d1c 811d0000d1953667 81ac000073695d1c - {e=>38181014,c=>5,a=>-86,b=>4,d=>3,f=>1} aa2c030096984612 aa2c030096984612 aa2c030096984612 aa94600024698962 aa2c030096984612 aa2c030096984612 aa94600024698962 aa2c030096984612 aa94600024698962 - {e=>206063701,c=>2,a=>-126,b=>5,d=>3,f=>4} 821503005548484c 821503005548484c 821503005548484c 82a86000c4848558 821503005548484c 821503005548484c 82a86000c4848558 821503005548484c 82a86000c4848558 - {e=>102799155,c=>1,a=>-102,b=>5,d=>0,f=>1} 9a0d000033972016 9a0d000033972016 9a0d000033972016 9aa4000062097332 9a0d000033972016 9a0d000033972016 9aa4000062097332 9a0d000033972016 9aa4000062097332 - {e=>35733158,c=>5,a=>48,b=>7,d=>5,f=>4} 302f0500a63e2142 302f0500a63e2142 302f0500a63e2142 30f4a0002213ea68 302f0500a63e2142 302f0500a63e2142 30f4a0002213ea68 302f0500a63e2142 30f4a0002213ea68 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>259030873,c=>6,a=>-99,g=>3,b=>6,d=>6,f=>7} 9d360600597f707f03000000 9d360600597f707f03000000 9d360600597f707f03000000 9dd8c000f707f59ec0000000 9d360600597f707f03000000 9d360600597f707f03000000 9dd8c000f707f59ec0000000 9d360600597f707f03000000 9dd8c000f707f59ec0000000 - {e=>113534093,c=>3,a=>-82,g=>1,b=>7,d=>1,f=>1} ae1f01008d64c41601000000 ae1f01008d64c41601000000 ae1f01008d64c41601000000 aeec20006c4648d240000000 ae1f01008d64c41601000000 ae1f01008d64c41601000000 aeec20006c4648d240000000 ae1f01008d64c41601000000 aeec20006c4648d240000000 - {e=>196254634,c=>6,a=>-82,g=>0,b=>2,d=>5,f=>3} ae320500aa9bb23b00000000 ae320500aa9bb23b00000000 ae320500aa9bb23b00000000 ae58a000bb29baa600000000 ae320500aa9bb23b00000000 ae320500aa9bb23b00000000 ae58a000bb29baa600000000 ae320500aa9bb23b00000000 ae58a000bb29baa600000000 - {e=>211207759,c=>7,a=>26,g=>3,b=>3,d=>6,f=>4} 1a3b06004fc6964c03000000 1a3b06004fc6964c03000000 1a3b06004fc6964c03000000 1a7cc000c96c64f8c0000000 1a3b06004fc6964c03000000 1a3b06004fc6964c03000000 1a7cc000c96c64f8c0000000 1a3b06004fc6964c03000000 1a7cc000c96c64f8c0000000 - {e=>35365642,c=>5,a=>-40,g=>0,b=>6,d=>0,f=>6} d82e00000aa31b6200000000 d82e00000aa31b6200000000 d82e00000aa31b6200000000 d8d4000021ba30ac00000000 d82e00000aa31b6200000000 d82e00000aa31b6200000000 d8d4000021ba30ac00000000 d82e00000aa31b6200000000 d8d4000021ba30ac00000000 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>95421875,a=>113,d=>4,c=>0,h=>6613,b=>1,g=>2,f=>5} 71010400b305b05556670000 71010400b305b05556670000 71010400b305b05556670000 712080005b005b3ab3aa0000 71010400b305b05556670000 71010400b305b05556670000 712080005b005b3ab3aa0000 71010400b305b05556670000 712080005b005b3ab3aa0000 - {e=>219735823,a=>24,d=>6,c=>5,h=>3918,b=>5,g=>1,f=>0} 182d06000fe7180d393d0000 182d06000fe7180d393d0000 182d06000fe7180d393d0000 18b4c000d18e70f05e9c0000 182d06000fe7180d393d0000 182d06000fe7180d393d0000 18b4c000d18e70f05e9c0000 182d06000fe7180d393d0000 18b4c000d18e70f05e9c0000 - {e=>114141874,a=>-127,d=>4,c=>4,h=>3018,b=>0,g=>0,f=>2} 81200400b2aacd26282f0000 81200400b2aacd26282f0000 81200400b2aacd26282f0000 811080006cdaab2417940000 81200400b2aacd26282f0000 81200400b2aacd26282f0000 811080006cdaab2417940000 81200400b2aacd26282f0000 811080006cdaab2417940000 - {e=>116157792,a=>52,d=>7,c=>1,h=>7261,b=>4,g=>0,f=>5} 340c0700606dec5674710000 340c0700606dec5674710000 340c0700606dec5674710000 3484e0006ec6d60a38ba0000 340c0700606dec5674710000 340c0700606dec5674710000 3484e0006ec6d60a38ba0000 340c0700606dec5674710000 3484e0006ec6d60a38ba0000 - {e=>164478627,a=>-23,d=>7,c=>1,h=>2155,b=>4,g=>3,f=>7} e90c0700a3becd79af210000 e90c0700a3becd79af210000 e90c0700a3becd79af210000 e984e0009cdbea3ed0d60000 e90c0700a3becd79af210000 e90c0700a3becd79af210000 e984e0009cdbea3ed0d60000 e90c0700a3becd79af210000 e984e0009cdbea3ed0d60000 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>31308849,a=>-51,d=>6,c=>1,h=>3257,b=>7,g=>2,f=>6,i=>35} cd0f060031bcdd61e632000023000000 cd0f060031bcdd61e632000023000000 cd0f060031bcdd61e632000023000000 cde4c0001ddbc31c9972000000000023 cd0f060031bcdd61e632000023000000 cd0f060031bcdd61e632000023000000 cde4c0001ddbc31c9972000000000023 cd0f060031bcdd61e632000023000000 cde4c0001ddbc31c9972000000000023 - {e=>200850095,a=>59,d=>3,c=>5,h=>4223,b=>2,g=>3,f=>7,i=>-30} 3b2a0300afbaf87bff410000e2ffffff 3b2a0300afbaf87bff410000e2ffffff 3b2a0300afbaf87bff410000e2ffffff 3b546000bf8baafee0fe0000ffffffe2 3b2a0300afbaf87bff410000e2ffffff 3b2a0300afbaf87bff410000e2ffffff 3b546000bf8baafee0fe0000ffffffe2 3b2a0300afbaf87bff410000e2ffffff 3b546000bf8baafee0fe0000ffffffe2 - {e=>2384984,a=>-78,d=>5,c=>3,h=>4113,b=>0,g=>3,f=>7,i=>33} b2180500586424704740000021000000 b2180500586424704740000021000000 b2180500586424704740000021000000 b20ca0000246458ee022000000000021 b2180500586424704740000021000000 b2180500586424704740000021000000 b20ca0000246458ee022000000000021 b2180500586424704740000021000000 b20ca0000246458ee022000000000021 - {e=>170834401,a=>-122,d=>7,c=>0,h=>305,b=>5,g=>1,f=>3,i=>93} 86050700e1b92e3ac50400005d000000 86050700e1b92e3ac50400005d000000 86050700e1b92e3ac50400005d000000 86a0e000a2eb9e16426200000000005d 86050700e1b92e3ac50400005d000000 86050700e1b92e3ac50400005d000000 86a0e000a2eb9e16426200000000005d 86050700e1b92e3ac50400005d000000 86a0e000a2eb9e16426200000000005d - {e=>202616049,a=>-1,d=>7,c=>3,h=>4385,b=>5,g=>3,f=>0,i=>101} ff1d0700f1ac130c8744000065000000 ff1d0700f1ac130c8744000065000000 ff1d0700f1ac130c8744000065000000 fface000c13acf10e242000000000065 ff1d0700f1ac130c8744000065000000 ff1d0700f1ac130c8744000065000000 fface000c13acf10e242000000000065 ff1d0700f1ac130c8744000065000000 fface000c13acf10e242000000000065 = struct umixed_no_pack { short a; unsigned char b:3; }; - {a=>-23,b=>3} e9ff0300 e9ff0300 e9ff0300 ffe96000 e9ff0300 e9ff0300 ffe96000 e9ff0300 ffe96000 - {a=>-90,b=>7} a6ff0700 a6ff0700 a6ff0700 ffa6e000 a6ff0700 a6ff0700 ffa6e000 a6ff0700 ffa6e000 - {a=>33,b=>2} 21000200 21000200 21000200 00214000 21000200 21000200 00214000 21000200 00214000 - {a=>-4,b=>6} fcff0600 fcff0600 fcff0600 fffcc000 fcff0600 fcff0600 fffcc000 fcff0600 fffcc000 - {a=>-31,b=>5} e1ff0500 e1ff0500 e1ff0500 ffe1a000 e1ff0500 e1ff0500 ffe1a000 e1ff0500 ffe1a000 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-107,b=>7} 95ff2700 95ff2700 95ff2700 ff95f000 95ff2700 95ff2700 ff95f000 95ff2700 ff95f000 - {c=>7,a=>6,b=>0} 06003800 06003800 06003800 00061c00 06003800 06003800 00061c00 06003800 00061c00 - {c=>7,a=>47,b=>6} 2f003e00 2f003e00 2f003e00 002fdc00 2f003e00 2f003e00 002fdc00 2f003e00 002fdc00 - {c=>2,a=>-33,b=>2} dfff1200 dfff1200 dfff1200 ffdf4800 dfff1200 dfff1200 ffdf4800 dfff1200 ffdf4800 - {c=>2,a=>-93,b=>3} a3ff1300 a3ff1300 a3ff1300 ffa36800 a3ff1300 a3ff1300 ffa36800 a3ff1300 ffa36800 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>35,b=>3,d=>7} 2300e301 2300e301 2300e301 00237380 2300e301 2300e301 00237380 2300e301 00237380 - {c=>1,a=>-77,b=>0,d=>4} b3ff0801 b3ff0801 b3ff0801 ffb30600 b3ff0801 b3ff0801 ffb30600 b3ff0801 ffb30600 - {c=>4,a=>-88,b=>6,d=>0} a8ff2600 a8ff2600 a8ff2600 ffa8d000 a8ff2600 a8ff2600 ffa8d000 a8ff2600 ffa8d000 - {c=>2,a=>-10,b=>6,d=>4} f6ff1601 f6ff1601 f6ff1601 fff6ca00 f6ff1601 f6ff1601 fff6ca00 f6ff1601 fff6ca00 - {c=>2,a=>17,b=>4,d=>3} 1100d400 1100d400 1100d400 00118980 1100d400 1100d400 00118980 1100d400 00118980 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>230924365,c=>5,a=>-34,b=>0,d=>1} deff68004da0c30d deff68004da0c30d deff68004da0c30d ffde1480dc3a04d0 deff68004da0c30d deff68004da0c30d ffde1480dc3a04d0 deff68004da0c30d ffde1480dc3a04d0 - {e=>235124443,c=>6,a=>-25,b=>1,d=>0} e7ff3100dbb6030e e7ff3100dbb6030e e7ff3100dbb6030e ffe73800e03b6db0 e7ff3100dbb6030e e7ff3100dbb6030e ffe73800e03b6db0 e7ff3100dbb6030e ffe73800e03b6db0 - {e=>218139234,c=>4,a=>-11,b=>4,d=>6} f5ffa401628a000d f5ffa401628a000d f5ffa401628a000d fff59300d008a620 f5ffa401628a000d f5ffa401628a000d fff59300d008a620 f5ffa401628a000d fff59300d008a620 - {e=>96460758,c=>3,a=>-25,b=>1,d=>3} e7ffd900d6dfbf05 e7ffd900d6dfbf05 e7ffd900d6dfbf05 ffe72d805bfdfd60 e7ffd900d6dfbf05 e7ffd900d6dfbf05 ffe72d805bfdfd60 e7ffd900d6dfbf05 ffe72d805bfdfd60 - {e=>143236939,c=>5,a=>117,b=>3,d=>0} 75002b004b9f8908 75002b004b9f8908 75002b004b9f8908 007574008899f4b0 75002b004b9f8908 75002b004b9f8908 007574008899f4b0 75002b004b9f8908 007574008899f4b0 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>81182875,c=>2,a=>49,b=>2,d=>5,f=>3} 310052019bc0d634 310052019bc0d634 310052019bc0d634 00314a804d6c09b6 310052019bc0d634 310052019bc0d634 00314a804d6c09b6 310052019bc0d634 00314a804d6c09b6 - {e=>165824077,c=>1,a=>51,b=>0,d=>0,f=>4} 330008004d46e249 330008004d46e249 330008004d46e249 003304009e2464d8 330008004d46e249 330008004d46e249 003304009e2464d8 330008004d46e249 003304009e2464d8 - {e=>20080403,c=>1,a=>41,b=>4,d=>7,f=>6} 2900cc0113673261 2900cc0113673261 2900cc0113673261 002987801326713c 2900cc0113673261 2900cc0113673261 002987801326713c 2900cc0113673261 002987801326713c - {e=>100629693,c=>0,a=>61,b=>6,d=>6,f=>1} 3d008601bd7cff15 3d008601bd7cff15 3d008601bd7cff15 003dc3005ff7cbd2 3d008601bd7cff15 3d008601bd7cff15 003dc3005ff7cbd2 3d008601bd7cff15 003dc3005ff7cbd2 - {e=>190350127,c=>5,a=>-101,b=>6,d=>0,f=>3} 9bff2e002f83583b 9bff2e002f83583b 9bff2e002f83583b ff9bd400b58832f6 9bff2e002f83583b 9bff2e002f83583b ff9bd400b58832f6 9bff2e002f83583b ff9bd400b58832f6 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>227828092,c=>0,a=>-16,g=>2,b=>1,d=>0,f=>0} f0ff01007c61940d02000000 f0ff01007c61940d02000000 f0ff01007c61940d02000000 fff02000d94617c080000000 f0ff01007c61940d02000000 f0ff01007c61940d02000000 fff02000d94617c080000000 f0ff01007c61940d02000000 fff02000d94617c080000000 - {e=>182355747,c=>1,a=>112,g=>0,b=>0,d=>3,f=>7} 7000c8002387de7a00000000 7000c8002387de7a00000000 7000c8002387de7a00000000 00700580ade8723e00000000 7000c8002387de7a00000000 7000c8002387de7a00000000 00700580ade8723e00000000 7000c8002387de7a00000000 00700580ade8723e00000000 - {e=>183757219,c=>3,a=>117,g=>3,b=>6,d=>6,f=>2} 75009e01a3e9f32a03000000 75009e01a3e9f32a03000000 75009e01a3e9f32a03000000 0075cf00af3e9a34c0000000 75009e01a3e9f32a03000000 75009e01a3e9f32a03000000 0075cf00af3e9a34c0000000 75009e01a3e9f32a03000000 0075cf00af3e9a34c0000000 - {e=>250036859,c=>6,a=>66,g=>1,b=>2,d=>0,f=>6} 420032007b42e76e01000000 420032007b42e76e01000000 420032007b42e76e01000000 00425800ee7427bc40000000 420032007b42e76e01000000 420032007b42e76e01000000 00425800ee7427bc40000000 420032007b42e76e01000000 00425800ee7427bc40000000 - {e=>238803723,c=>4,a=>110,g=>0,b=>1,d=>6,f=>1} 6e00a1010bdb3b1e00000000 6e00a1010bdb3b1e00000000 6e00a1010bdb3b1e00000000 006e3300e3bdb0b200000000 6e00a1010bdb3b1e00000000 6e00a1010bdb3b1e00000000 006e3300e3bdb0b200000000 6e00a1010bdb3b1e00000000 006e3300e3bdb0b200000000 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>123354721,a=>77,d=>1,c=>5,h=>6510,b=>2,g=>2,f=>7} 4d006a00613e5a77ba650000 4d006a00613e5a77ba650000 4d006a00613e5a77ba650000 004d548075a3e61eb2dc0000 4d006a00613e5a77ba650000 4d006a00613e5a77ba650000 004d548075a3e61eb2dc0000 4d006a00613e5a77ba650000 004d548075a3e61eb2dc0000 - {e=>6270702,a=>72,d=>1,c=>2,h=>3832,b=>3,g=>1,f=>4} 48005300eeae5f40e13b0000 48005300eeae5f40e13b0000 48005300eeae5f40e13b0000 0048688005faeee85df00000 48005300eeae5f40e13b0000 48005300eeae5f40e13b0000 0048688005faeee85df00000 48005300eeae5f40e13b0000 0048688005faeee85df00000 - {e=>151397274,a=>-111,d=>6,c=>7,h=>1061,b=>6,g=>3,f=>3} 91ffbe019a23063997100000 91ffbe019a23063997100000 91ffbe019a23063997100000 ff91df00906239a6c84a0000 91ffbe019a23063997100000 91ffbe019a23063997100000 ff91df00906239a6c84a0000 91ffbe019a23063997100000 ff91df00906239a6c84a0000 - {e=>139689776,a=>26,d=>3,c=>0,h=>1364,b=>6,g=>1,f=>4} 1a00c600307f534851150000 1a00c600307f534851150000 1a00c600307f534851150000 001ac1808537f3084aa80000 1a00c600307f534851150000 1a00c600307f534851150000 001ac1808537f3084aa80000 1a00c600307f534851150000 001ac1808537f3084aa80000 - {e=>36719821,a=>73,d=>2,c=>4,h=>2049,b=>7,g=>2,f=>3} 4900a700cd4c303206200000 4900a700cd4c303206200000 4900a700cd4c303206200000 0049f1002304ccd690020000 4900a700cd4c303206200000 4900a700cd4c303206200000 0049f1002304ccd690020000 4900a700cd4c303206200000 0049f1002304ccd690020000 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>80052423,a=>38,d=>7,c=>5,h=>719,b=>0,g=>1,f=>2,i=>58} 2600e801c780c5243d0b00003a000000 2600e801c780c5243d0b00003a000000 2600e801c780c5243d0b00003a000000 002617804c580c74459e00000000003a 2600e801c780c5243d0b00003a000000 2600e801c780c5243d0b00003a000000 002617804c580c74459e00000000003a 2600e801c780c5243d0b00003a000000 002617804c580c74459e00000000003a - {e=>84879964,a=>-58,d=>2,c=>2,h=>7754,b=>5,g=>2,f=>6,i=>3} c6ff95005c2a0f652a79000003000000 c6ff95005c2a0f652a79000003000000 c6ff95005c2a0f652a79000003000000 ffc6a90050f2a5ccbc94000000000003 c6ff95005c2a0f652a79000003000000 c6ff95005c2a0f652a79000003000000 ffc6a90050f2a5ccbc94000000000003 c6ff95005c2a0f652a79000003000000 ffc6a90050f2a5ccbc94000000000003 - {e=>208832370,a=>-38,d=>5,c=>6,h=>7000,b=>7,g=>3,f=>1,i=>27} daff77017287721c636d00001b000000 daff77017287721c636d00001b000000 daff77017287721c636d00001b000000 ffdafa80c7287722f6b000000000001b daff77017287721c636d00001b000000 daff77017287721c636d00001b000000 ffdafa80c7287722f6b000000000001b daff77017287721c636d00001b000000 ffdafa80c7287722f6b000000000001b - {e=>224138316,a=>99,d=>4,c=>7,h=>2886,b=>1,g=>1,f=>2,i=>-60} 630039014c145c2d192d0000c4ffffff 630039014c145c2d192d0000c4ffffff 630039014c145c2d192d0000c4ffffff 00633e00d5c144c4568c0000ffffffc4 630039014c145c2d192d0000c4ffffff 630039014c145c2d192d0000c4ffffff 00633e00d5c144c4568c0000ffffffc4 630039014c145c2d192d0000c4ffffff 00633e00d5c144c4568c0000ffffffc4 - {e=>208271774,a=>61,d=>7,c=>5,h=>4345,b=>5,g=>1,f=>2,i=>-10} 3d00ed019ef9692ce5430000f6ffffff 3d00ed019ef9692ce5430000f6ffffff 3d00ed019ef9692ce5430000f6ffffff 003db780c69f99e461f20000fffffff6 3d00ed019ef9692ce5430000f6ffffff 3d00ed019ef9692ce5430000f6ffffff 003db780c69f99e461f20000fffffff6 3d00ed019ef9692ce5430000f6ffffff 003db780c69f99e461f20000fffffff6 = struct umixed_no_pack { int a; unsigned char b:3; }; - {a=>77,b=>5} 4d00000005000000 4d00000005000000 4d00000005000000 0000004da0000000 4d00000005000000 4d00000005000000 0000004da0000000 4d00000005000000 0000004da0000000 - {a=>-91,b=>1} a5ffffff01000000 a5ffffff01000000 a5ffffff01000000 ffffffa520000000 a5ffffff01000000 a5ffffff01000000 ffffffa520000000 a5ffffff01000000 ffffffa520000000 - {a=>42,b=>3} 2a00000003000000 2a00000003000000 2a00000003000000 0000002a60000000 2a00000003000000 2a00000003000000 0000002a60000000 2a00000003000000 0000002a60000000 - {a=>-15,b=>3} f1ffffff03000000 f1ffffff03000000 f1ffffff03000000 fffffff160000000 f1ffffff03000000 f1ffffff03000000 fffffff160000000 f1ffffff03000000 fffffff160000000 - {a=>-34,b=>2} deffffff02000000 deffffff02000000 deffffff02000000 ffffffde40000000 deffffff02000000 deffffff02000000 ffffffde40000000 deffffff02000000 ffffffde40000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>123,b=>7} 7b00000007000000 7b00000007000000 7b00000007000000 0000007be0000000 7b00000007000000 7b00000007000000 0000007be0000000 7b00000007000000 0000007be0000000 - {c=>5,a=>35,b=>6} 230000002e000000 230000002e000000 230000002e000000 00000023d4000000 230000002e000000 230000002e000000 00000023d4000000 230000002e000000 00000023d4000000 - {c=>3,a=>-76,b=>4} b4ffffff1c000000 b4ffffff1c000000 b4ffffff1c000000 ffffffb48c000000 b4ffffff1c000000 b4ffffff1c000000 ffffffb48c000000 b4ffffff1c000000 ffffffb48c000000 - {c=>6,a=>84,b=>4} 5400000034000000 5400000034000000 5400000034000000 0000005498000000 5400000034000000 5400000034000000 0000005498000000 5400000034000000 0000005498000000 - {c=>5,a=>-26,b=>5} e6ffffff2d000000 e6ffffff2d000000 e6ffffff2d000000 ffffffe6b4000000 e6ffffff2d000000 e6ffffff2d000000 ffffffe6b4000000 e6ffffff2d000000 ffffffe6b4000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>89,b=>0,d=>2} 59000000b0000000 59000000b0000000 59000000b0000000 0000005919000000 59000000b0000000 59000000b0000000 0000005919000000 59000000b0000000 0000005919000000 - {c=>2,a=>71,b=>6,d=>6} 4700000096010000 4700000096010000 4700000096010000 00000047cb000000 4700000096010000 4700000096010000 00000047cb000000 4700000096010000 00000047cb000000 - {c=>6,a=>43,b=>6,d=>4} 2b00000036010000 2b00000036010000 2b00000036010000 0000002bda000000 2b00000036010000 2b00000036010000 0000002bda000000 2b00000036010000 0000002bda000000 - {c=>7,a=>74,b=>6,d=>1} 4a0000007e000000 4a0000007e000000 4a0000007e000000 0000004adc800000 4a0000007e000000 4a0000007e000000 0000004adc800000 4a0000007e000000 0000004adc800000 - {c=>1,a=>24,b=>1,d=>7} 18000000c9010000 18000000c9010000 18000000c9010000 0000001827800000 18000000c9010000 18000000c9010000 0000001827800000 18000000c9010000 0000001827800000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>258411058,c=>2,a=>-56,b=>3,d=>1} c8ffffff53000000320a670f c8ffffff53000000320a670f c8ffffff53000000320a670f ffffffc868800000f670a320 c8ffffff53000000320a670f c8ffffff53000000320a670f ffffffc868800000f670a320 c8ffffff53000000320a670f ffffffc868800000f670a320 - {e=>192775493,c=>2,a=>6,b=>7,d=>4} 060000001701000045857d0b 060000001701000045857d0b 060000001701000045857d0b 00000006ea000000b7d85450 060000001701000045857d0b 060000001701000045857d0b 00000006ea000000b7d85450 060000001701000045857d0b 00000006ea000000b7d85450 - {e=>70245712,c=>3,a=>-1,b=>7,d=>1} ffffffff5f00000050dd2f04 ffffffff5f00000050dd2f04 ffffffff5f00000050dd2f04 ffffffffec80000042fdd500 ffffffff5f00000050dd2f04 ffffffff5f00000050dd2f04 ffffffffec80000042fdd500 ffffffff5f00000050dd2f04 ffffffffec80000042fdd500 - {e=>100376726,c=>7,a=>115,b=>0,d=>7} 73000000f801000096a0fb05 73000000f801000096a0fb05 73000000f801000096a0fb05 000000731f8000005fba0960 73000000f801000096a0fb05 73000000f801000096a0fb05 000000731f8000005fba0960 73000000f801000096a0fb05 000000731f8000005fba0960 - {e=>261070995,c=>7,a=>-47,b=>1,d=>0} d1ffffff3900000093a08f0f d1ffffff3900000093a08f0f d1ffffff3900000093a08f0f ffffffd13c000000f8fa0930 d1ffffff3900000093a08f0f d1ffffff3900000093a08f0f ffffffd13c000000f8fa0930 d1ffffff3900000093a08f0f ffffffd13c000000f8fa0930 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>202903687,c=>1,a=>-41,b=>7,d=>0,f=>7} d7ffffff0f0000008710187c d7ffffff0f0000008710187c d7ffffff0f0000008710187c ffffffd7e4000000c181087e d7ffffff0f0000008710187c d7ffffff0f0000008710187c ffffffd7e4000000c181087e d7ffffff0f0000008710187c ffffffd7e4000000c181087e - {e=>156182618,c=>1,a=>83,b=>7,d=>1,f=>1} 530000004f0000005a284f19 530000004f0000005a284f19 530000004f0000005a284f19 00000053e480000094f285a2 530000004f0000005a284f19 530000004f0000005a284f19 00000053e480000094f285a2 530000004f0000005a284f19 00000053e480000094f285a2 - {e=>30752427,c=>5,a=>-26,b=>6,d=>3,f=>6} e6ffffffee000000ab3ed561 e6ffffffee000000ab3ed561 e6ffffffee000000ab3ed561 ffffffe6d58000001d53eabc e6ffffffee000000ab3ed561 e6ffffffee000000ab3ed561 ffffffe6d58000001d53eabc e6ffffffee000000ab3ed561 ffffffe6d58000001d53eabc - {e=>13986533,c=>2,a=>73,b=>0,d=>3,f=>0} 49000000d0000000e56ad500 49000000d0000000e56ad500 49000000d0000000e56ad500 00000049098000000d56ae50 49000000d0000000e56ad500 49000000d0000000e56ad500 00000049098000000d56ae50 49000000d0000000e56ad500 00000049098000000d56ae50 - {e=>97832562,c=>7,a=>67,b=>3,d=>1,f=>6} 430000007b00000072ced465 430000007b00000072ced465 430000007b00000072ced465 000000437c8000005d4ce72c 430000007b00000072ced465 430000007b00000072ced465 000000437c8000005d4ce72c 430000007b00000072ced465 000000437c8000005d4ce72c = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>224204808,c=>0,a=>-125,g=>3,b=>2,d=>6,f=>5} 83ffffff8201000008185d5d03000000 83ffffff8201000008185d5d03000000 83ffffff8201000008185d5d03000000 ffffff8343000000d5d1808ac0000000 83ffffff8201000008185d5d03000000 83ffffff8201000008185d5d03000000 ffffff8343000000d5d1808ac0000000 83ffffff8201000008185d5d03000000 ffffff8343000000d5d1808ac0000000 - {e=>248110203,c=>2,a=>32,g=>2,b=>2,d=>2,f=>2} 20000000920000007bdcc92e02000000 20000000920000007bdcc92e02000000 20000000920000007bdcc92e02000000 0000002049000000ec9dc7b480000000 20000000920000007bdcc92e02000000 20000000920000007bdcc92e02000000 0000002049000000ec9dc7b480000000 20000000920000007bdcc92e02000000 0000002049000000ec9dc7b480000000 - {e=>176808355,c=>3,a=>74,g=>3,b=>7,d=>1,f=>0} 4a0000005f000000a3e1890a03000000 4a0000005f000000a3e1890a03000000 4a0000005f000000a3e1890a03000000 0000004aec800000a89e1a30c0000000 4a0000005f000000a3e1890a03000000 4a0000005f000000a3e1890a03000000 0000004aec800000a89e1a30c0000000 4a0000005f000000a3e1890a03000000 0000004aec800000a89e1a30c0000000 - {e=>200366377,c=>3,a=>-125,g=>2,b=>4,d=>6,f=>4} 83ffffff9c0100002959f14b02000000 83ffffff9c0100002959f14b02000000 83ffffff9c0100002959f14b02000000 ffffff838f000000bf15929880000000 83ffffff9c0100002959f14b02000000 83ffffff9c0100002959f14b02000000 ffffff838f000000bf15929880000000 83ffffff9c0100002959f14b02000000 ffffff838f000000bf15929880000000 - {e=>40965455,c=>3,a=>107,g=>2,b=>0,d=>3,f=>4} 6b000000d80000004f15714202000000 6b000000d80000004f15714202000000 6b000000d80000004f15714202000000 0000006b0d800000271154f880000000 6b000000d80000004f15714202000000 6b000000d80000004f15714202000000 0000006b0d800000271154f880000000 6b000000d80000004f15714202000000 0000006b0d800000271154f880000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>261834522,a=>113,d=>2,c=>3,h=>1720,b=>5,g=>2,f=>7} 710000009d0000001a479b7fe21a0000 710000009d0000001a479b7fe21a0000 710000009d0000001a479b7fe21a0000 00000071ad000000f9b471ae8d700000 710000009d0000001a479b7fe21a0000 710000009d0000001a479b7fe21a0000 00000071ad000000f9b471ae8d700000 710000009d0000001a479b7fe21a0000 00000071ad000000f9b471ae8d700000 - {e=>81177197,a=>52,d=>7,c=>0,h=>7442,b=>0,g=>0,f=>3} 34000000c00100006daad63448740000 34000000c00100006daad63448740000 34000000c00100006daad63448740000 00000034038000004d6aa6d63a240000 34000000c00100006daad63448740000 34000000c00100006daad63448740000 00000034038000004d6aa6d63a240000 34000000c00100006daad63448740000 00000034038000004d6aa6d63a240000 - {e=>252859983,a=>117,d=>4,c=>2,h=>3820,b=>7,g=>1,f=>3} 75000000170100004f56123fb13b0000 75000000170100004f56123fb13b0000 75000000170100004f56123fb13b0000 00000075ea000000f12564f65dd80000 75000000170100004f56123fb13b0000 75000000170100004f56123fb13b0000 00000075ea000000f12564f65dd80000 75000000170100004f56123fb13b0000 00000075ea000000f12564f65dd80000 - {e=>260755755,a=>39,d=>6,c=>3,h=>5333,b=>4,g=>1,f=>6} 270000009c0100002bd18a6f55530000 270000009c0100002bd18a6f55530000 270000009c0100002bd18a6f55530000 000000278f000000f8ad12bc69aa0000 270000009c0100002bd18a6f55530000 270000009c0100002bd18a6f55530000 000000278f000000f8ad12bc69aa0000 270000009c0100002bd18a6f55530000 000000278f000000f8ad12bc69aa0000 - {e=>197646476,a=>44,d=>1,c=>0,h=>1255,b=>0,g=>1,f=>7} 2c000000400000008cd8c77b9d130000 2c000000400000008cd8c77b9d130000 2c000000400000008cd8c77b9d130000 0000002c00800000bc7d88ce49ce0000 2c000000400000008cd8c77b9d130000 2c000000400000008cd8c77b9d130000 0000002c00800000bc7d88ce49ce0000 2c000000400000008cd8c77b9d130000 0000002c00800000bc7d88ce49ce0000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>3714946,a=>-88,d=>6,c=>2,h=>3065,b=>4,g=>0,f=>1,i=>-7} a8ffffff9401000082af3810e42f0000f9ffffff a8ffffff9401000082af3810e42f0000f9ffffff a8ffffff9401000082af3810e42f0000f9ffffff ffffffa88b000000038af82217f20000fffffff9 a8ffffff9401000082af3810e42f0000f9ffffff a8ffffff9401000082af3810e42f0000f9ffffff ffffffa88b000000038af82217f20000fffffff9 a8ffffff9401000082af3810e42f0000f9ffffff ffffffa88b000000038af82217f20000fffffff9 - {e=>217660046,a=>63,d=>4,c=>2,h=>4968,b=>5,g=>3,f=>5,i=>-17} 3f000000150100008e3af95ca34d0000efffffff 3f000000150100008e3af95ca34d0000efffffff 3f000000150100008e3af95ca34d0000efffffff 0000003faa000000cf93a8eae6d00000ffffffef 3f000000150100008e3af95ca34d0000efffffff 3f000000150100008e3af95ca34d0000efffffff 0000003faa000000cf93a8eae6d00000ffffffef 3f000000150100008e3af95ca34d0000efffffff 0000003faa000000cf93a8eae6d00000ffffffef - {e=>50265395,a=>101,d=>1,c=>3,h=>1816,b=>7,g=>1,f=>7,i=>113} 650000005f00000033fdfe72611c000071000000 650000005f00000033fdfe72611c000071000000 650000005f00000033fdfe72611c000071000000 00000065ec8000002fefd33e4e30000000000071 650000005f00000033fdfe72611c000071000000 650000005f00000033fdfe72611c000071000000 00000065ec8000002fefd33e4e30000000000071 650000005f00000033fdfe72611c000071000000 00000065ec8000002fefd33e4e30000000000071 - {e=>165795744,a=>11,d=>5,c=>4,h=>2771,b=>2,g=>3,f=>6,i=>-6} 0b00000062010000a0d7e1694f2b0000faffffff 0b00000062010000a0d7e1694f2b0000faffffff 0b00000062010000a0d7e1694f2b0000faffffff 0000000b528000009e1d7a0cd5a60000fffffffa 0b00000062010000a0d7e1694f2b0000faffffff 0b00000062010000a0d7e1694f2b0000faffffff 0000000b528000009e1d7a0cd5a60000fffffffa 0b00000062010000a0d7e1694f2b0000faffffff 0000000b528000009e1d7a0cd5a60000fffffffa - {e=>246643849,a=>56,d=>5,c=>2,h=>3254,b=>0,g=>3,f=>7,i=>-43} 3800000050010000897cb37edb320000d5ffffff 3800000050010000897cb37edb320000d5ffffff 3800000050010000897cb37edb320000d5ffffff 000000380a800000eb37c89ed96c0000ffffffd5 3800000050010000897cb37edb320000d5ffffff 3800000050010000897cb37edb320000d5ffffff 000000380a800000eb37c89ed96c0000ffffffd5 3800000050010000897cb37edb320000d5ffffff 000000380a800000eb37c89ed96c0000ffffffd5 = struct umixed_no_pack { long a; unsigned char b:3; }; - {a=>-22,b=>3} eaffffff03000000 eaffffffffffffff0300000000000000 eaffffffffffffff0300000000000000 ffffffea60000000 eaffffff03000000 eaffffff03000000 ffffffffffffffea6000000000000000 eaffffff03000000 ffffffea60000000 - {a=>15,b=>0} 0f00000000000000 0f000000000000000000000000000000 0f000000000000000000000000000000 0000000f00000000 0f00000000000000 0f00000000000000 000000000000000f0000000000000000 0f00000000000000 0000000f00000000 - {a=>-58,b=>4} c6ffffff04000000 c6ffffffffffffff0400000000000000 c6ffffffffffffff0400000000000000 ffffffc680000000 c6ffffff04000000 c6ffffff04000000 ffffffffffffffc68000000000000000 c6ffffff04000000 ffffffc680000000 - {a=>39,b=>0} 2700000000000000 27000000000000000000000000000000 27000000000000000000000000000000 0000002700000000 2700000000000000 2700000000000000 00000000000000270000000000000000 2700000000000000 0000002700000000 - {a=>55,b=>0} 3700000000000000 37000000000000000000000000000000 37000000000000000000000000000000 0000003700000000 3700000000000000 3700000000000000 00000000000000370000000000000000 3700000000000000 0000003700000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>53,b=>3} 3500000033000000 35000000000000003300000000000000 35000000000000003300000000000000 0000003578000000 3500000033000000 3500000033000000 00000000000000357800000000000000 3500000033000000 0000003578000000 - {c=>6,a=>-101,b=>4} 9bffffff34000000 9bffffffffffffff3400000000000000 9bffffffffffffff3400000000000000 ffffff9b98000000 9bffffff34000000 9bffffff34000000 ffffffffffffff9b9800000000000000 9bffffff34000000 ffffff9b98000000 - {c=>6,a=>62,b=>1} 3e00000031000000 3e000000000000003100000000000000 3e000000000000003100000000000000 0000003e38000000 3e00000031000000 3e00000031000000 000000000000003e3800000000000000 3e00000031000000 0000003e38000000 - {c=>5,a=>-63,b=>5} c1ffffff2d000000 c1ffffffffffffff2d00000000000000 c1ffffffffffffff2d00000000000000 ffffffc1b4000000 c1ffffff2d000000 c1ffffff2d000000 ffffffffffffffc1b400000000000000 c1ffffff2d000000 ffffffc1b4000000 - {c=>2,a=>26,b=>4} 1a00000014000000 1a000000000000001400000000000000 1a000000000000001400000000000000 0000001a88000000 1a00000014000000 1a00000014000000 000000000000001a8800000000000000 1a00000014000000 0000001a88000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>7,a=>84,b=>5,d=>0} 540000003d000000 54000000000000003d00000000000000 54000000000000003d00000000000000 00000054bc000000 540000003d000000 540000003d000000 0000000000000054bc00000000000000 540000003d000000 00000054bc000000 - {c=>2,a=>-4,b=>6,d=>7} fcffffffd6010000 fcffffffffffffffd601000000000000 fcffffffffffffffd601000000000000 fffffffccb800000 fcffffffd6010000 fcffffffd6010000 fffffffffffffffccb80000000000000 fcffffffd6010000 fffffffccb800000 - {c=>0,a=>-1,b=>2,d=>4} ffffffff02010000 ffffffffffffffff0201000000000000 ffffffffffffffff0201000000000000 ffffffff42000000 ffffffff02010000 ffffffff02010000 ffffffffffffffff4200000000000000 ffffffff02010000 ffffffff42000000 - {c=>5,a=>75,b=>2,d=>1} 4b0000006a000000 4b000000000000006a00000000000000 4b000000000000006a00000000000000 0000004b54800000 4b0000006a000000 4b0000006a000000 000000000000004b5480000000000000 4b0000006a000000 0000004b54800000 - {c=>1,a=>-35,b=>2,d=>2} ddffffff8a000000 ddffffffffffffff8a00000000000000 ddffffffffffffff8a00000000000000 ffffffdd45000000 ddffffff8a000000 ddffffff8a000000 ffffffffffffffdd4500000000000000 ddffffff8a000000 ffffffdd45000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>12846720,c=>5,a=>-2,b=>6,d=>4} feffffff2e0100008006c400 feffffffffffffff2e0100008006c400 feffffffffffffff2e0100008006c400 fffffffed60000000c406800 feffffff2e0100008006c400 feffffff2e0100008006c400 fffffffffffffffed60000000c406800 feffffff2e0100008006c400 fffffffed60000000c406800 - {e=>122850482,c=>0,a=>44,b=>4,d=>5} 2c00000044010000b28c5207 2c0000000000000044010000b28c5207 2c0000000000000044010000b28c5207 0000002c828000007528cb20 2c00000044010000b28c5207 2c00000044010000b28c5207 000000000000002c828000007528cb20 2c00000044010000b28c5207 0000002c828000007528cb20 - {e=>110531108,c=>0,a=>6,b=>7,d=>5} 060000004701000024929606 06000000000000004701000024929606 06000000000000004701000024929606 00000006e280000069692240 060000004701000024929606 060000004701000024929606 0000000000000006e280000069692240 060000004701000024929606 00000006e280000069692240 - {e=>172922041,c=>3,a=>-21,b=>6,d=>1} ebffffff5e000000b9944e0a ebffffffffffffff5e000000b9944e0a ebffffffffffffff5e000000b9944e0a ffffffebcc800000a4e94b90 ebffffff5e000000b9944e0a ebffffff5e000000b9944e0a ffffffffffffffebcc800000a4e94b90 ebffffff5e000000b9944e0a ffffffebcc800000a4e94b90 - {e=>55535187,c=>1,a=>-73,b=>2,d=>3} b7ffffffca00000053664f03 b7ffffffffffffffca00000053664f03 b7ffffffffffffffca00000053664f03 ffffffb74580000034f66530 b7ffffffca00000053664f03 b7ffffffca00000053664f03 ffffffffffffffb74580000034f66530 b7ffffffca00000053664f03 ffffffb74580000034f66530 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>66805985,c=>5,a=>115,b=>6,d=>2,f=>6} 73000000ae000000e160fb63 7300000000000000ae000000e160fb63 7300000000000000ae000000e160fb63 00000073d50000003fb60e1c 73000000ae000000e160fb63 73000000ae000000e160fb63 0000000000000073d50000003fb60e1c 73000000ae000000e160fb63 00000073d50000003fb60e1c - {e=>217412345,c=>5,a=>83,b=>2,d=>7,f=>1} 53000000ea010000f972f51c 5300000000000000ea010000f972f51c 5300000000000000ea010000f972f51c 0000005357800000cf572f92 53000000ea010000f972f51c 53000000ea010000f972f51c 000000000000005357800000cf572f92 53000000ea010000f972f51c 0000005357800000cf572f92 - {e=>143288860,c=>4,a=>80,b=>4,d=>7,f=>2} 50000000e40100001c6a8a28 5000000000000000e40100001c6a8a28 5000000000000000e40100001c6a8a28 000000509380000088a6a1c4 50000000e40100001c6a8a28 50000000e40100001c6a8a28 00000000000000509380000088a6a1c4 50000000e40100001c6a8a28 000000509380000088a6a1c4 - {e=>80533529,c=>3,a=>-56,b=>0,d=>4,f=>3} c8ffffff1801000019d8cc34 c8ffffffffffffff1801000019d8cc34 c8ffffffffffffff1801000019d8cc34 ffffffc80e0000004ccd8196 c8ffffff1801000019d8cc34 c8ffffff1801000019d8cc34 ffffffffffffffc80e0000004ccd8196 c8ffffff1801000019d8cc34 ffffffc80e0000004ccd8196 - {e=>76049210,c=>4,a=>41,b=>4,d=>0,f=>2} 29000000240000003a6b8824 2900000000000000240000003a6b8824 2900000000000000240000003a6b8824 00000029900000004886b3a4 29000000240000003a6b8824 29000000240000003a6b8824 0000000000000029900000004886b3a4 29000000240000003a6b8824 00000029900000004886b3a4 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>33149186,c=>0,a=>-66,g=>2,b=>6,d=>0,f=>2} beffffff0600000002d1f92102000000 beffffffffffffff0600000002d1f9210200000000000000 beffffffffffffff0600000002d1f9210200000000000000 ffffffbec00000001f9d102480000000 beffffff0600000002d1f92102000000 beffffff0600000002d1f92102000000 ffffffffffffffbec00000001f9d10248000000000000000 beffffff0600000002d1f92102000000 ffffffbec00000001f9d102480000000 - {e=>24018713,c=>6,a=>42,g=>0,b=>3,d=>1,f=>7} 2a00000073000000197f6e7100000000 2a0000000000000073000000197f6e710000000000000000 2a0000000000000073000000197f6e710000000000000000 0000002a7880000016e7f19e00000000 2a00000073000000197f6e7100000000 2a00000073000000197f6e7100000000 000000000000002a7880000016e7f19e0000000000000000 2a00000073000000197f6e7100000000 0000002a7880000016e7f19e00000000 - {e=>238049791,c=>1,a=>-89,g=>0,b=>5,d=>4,f=>3} a7ffffff0d010000ff59303e00000000 a7ffffffffffffff0d010000ff59303e0000000000000000 a7ffffffffffffff0d010000ff59303e0000000000000000 ffffffa7a6000000e3059ff600000000 a7ffffff0d010000ff59303e00000000 a7ffffff0d010000ff59303e00000000 ffffffffffffffa7a6000000e3059ff60000000000000000 a7ffffff0d010000ff59303e00000000 ffffffa7a6000000e3059ff600000000 - {e=>45452680,c=>4,a=>85,g=>3,b=>5,d=>4,f=>2} 5500000025010000888db52203000000 550000000000000025010000888db5220300000000000000 550000000000000025010000888db5220300000000000000 00000055b20000002b58d884c0000000 5500000025010000888db52203000000 5500000025010000888db52203000000 0000000000000055b20000002b58d884c000000000000000 5500000025010000888db52203000000 00000055b20000002b58d884c0000000 - {e=>127560049,c=>0,a=>38,g=>3,b=>5,d=>1,f=>4} 260000004500000071699a4703000000 26000000000000004500000071699a470300000000000000 26000000000000004500000071699a470300000000000000 00000026a080000079a69718c0000000 260000004500000071699a4703000000 260000004500000071699a4703000000 0000000000000026a080000079a69718c000000000000000 260000004500000071699a4703000000 00000026a080000079a69718c0000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>143259895,a=>-70,d=>4,c=>3,h=>4312,b=>6,g=>0,f=>5} baffffff1e010000f7f8895860430000 baffffffffffffff1e010000f7f889586043000000000000 baffffffffffffff1e010000f7f889586043000000000000 ffffffbace000000889f8f7a21b00000 baffffff1e010000f7f8895860430000 baffffff1e010000f7f8895860430000 ffffffffffffffbace000000889f8f7a21b0000000000000 baffffff1e010000f7f8895860430000 ffffffbace000000889f8f7a21b00000 - {e=>130209381,a=>75,d=>3,c=>6,h=>1172,b=>2,g=>1,f=>0} 4b000000f200000065d6c20751120000 4b00000000000000f200000065d6c2075112000000000000 4b00000000000000f200000065d6c2075112000000000000 0000004b598000007c2d665049280000 4b000000f200000065d6c20751120000 4b000000f200000065d6c20751120000 000000000000004b598000007c2d66504928000000000000 4b000000f200000065d6c20751120000 0000004b598000007c2d665049280000 - {e=>169515883,a=>36,d=>3,c=>7,h=>7983,b=>7,g=>2,f=>0} 24000000ff0000006b9b1a0abe7c0000 2400000000000000ff0000006b9b1a0abe7c000000000000 2400000000000000ff0000006b9b1a0abe7c000000000000 00000024fd800000a1a9b6b0be5e0000 24000000ff0000006b9b1a0abe7c0000 24000000ff0000006b9b1a0abe7c0000 0000000000000024fd800000a1a9b6b0be5e000000000000 24000000ff0000006b9b1a0abe7c0000 00000024fd800000a1a9b6b0be5e0000 - {e=>204680465,a=>-15,d=>2,c=>5,h=>8017,b=>2,g=>0,f=>6} f1ffffffaa000000112d336c447d0000 f1ffffffffffffffaa000000112d336c447d000000000000 f1ffffffffffffffaa000000112d336c447d000000000000 fffffff155000000c332d11c3ea20000 f1ffffffaa000000112d336c447d0000 f1ffffffaa000000112d336c447d0000 fffffffffffffff155000000c332d11c3ea2000000000000 f1ffffffaa000000112d336c447d0000 fffffff155000000c332d11c3ea20000 - {e=>243063688,a=>85,d=>2,c=>6,h=>342,b=>2,g=>0,f=>3} 55000000b200000088db7c3e58050000 5500000000000000b200000088db7c3e5805000000000000 5500000000000000b200000088db7c3e5805000000000000 0000005559000000e7cdb88602ac0000 55000000b200000088db7c3e58050000 55000000b200000088db7c3e58050000 000000000000005559000000e7cdb88602ac000000000000 55000000b200000088db7c3e58050000 0000005559000000e7cdb88602ac0000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>256419346,a=>25,d=>4,c=>1,h=>4924,b=>3,g=>1,f=>2,i=>-112} 190000000b01000012a6482ff14c000090ffffff 19000000000000000b01000012a6482ff14c000090ffffff 19000000000000000b01000012a6482ff14c000090ffffff 0000001966000000f48a612466780000ffffff90 190000000b01000012a6482ff14c000090ffffff 190000000b01000012a6482ff14c000090ffffff 000000000000001966000000f48a612466780000ffffff90 190000000b01000012a6482ff14c000090ffffff 0000001966000000f48a612466780000ffffff90 - {e=>155022430,a=>75,d=>3,c=>2,h=>362,b=>7,g=>2,f=>1,i=>-49} 4b000000d70000005e743d19aa050000cfffffff 4b00000000000000d70000005e743d19aa050000cfffffff 4b00000000000000d70000005e743d19aa050000cfffffff 0000004be980000093d745e282d40000ffffffcf 4b000000d70000005e743d19aa050000cfffffff 4b000000d70000005e743d19aa050000cfffffff 000000000000004be980000093d745e282d40000ffffffcf 4b000000d70000005e743d19aa050000cfffffff 0000004be980000093d745e282d40000ffffffcf - {e=>190447867,a=>-73,d=>1,c=>2,h=>2876,b=>7,g=>0,f=>7,i=>1} b7ffffff57000000fb005a7bf02c000001000000 b7ffffffffffffff57000000fb005a7bf02c000001000000 b7ffffffffffffff57000000fb005a7bf02c000001000000 ffffffb7e8800000b5a00fbe1678000000000001 b7ffffff57000000fb005a7bf02c000001000000 b7ffffff57000000fb005a7bf02c000001000000 ffffffffffffffb7e8800000b5a00fbe1678000000000001 b7ffffff57000000fb005a7bf02c000001000000 ffffffb7e8800000b5a00fbe1678000000000001 - {e=>179690236,a=>9,d=>7,c=>0,h=>7267,b=>7,g=>1,f=>0,i=>-85} 09000000c7010000fcdab50a8d710000abffffff 0900000000000000c7010000fcdab50a8d710000abffffff 0900000000000000c7010000fcdab50a8d710000abffffff 00000009e3800000ab5dafc078c60000ffffffab 09000000c7010000fcdab50a8d710000abffffff 09000000c7010000fcdab50a8d710000abffffff 0000000000000009e3800000ab5dafc078c60000ffffffab 09000000c7010000fcdab50a8d710000abffffff 00000009e3800000ab5dafc078c60000ffffffab - {e=>104415787,a=>74,d=>7,c=>3,h=>3028,b=>4,g=>3,f=>7,i=>92} 4a000000dc0100002b423976532f00005c000000 4a00000000000000dc0100002b423976532f00005c000000 4a00000000000000dc0100002b423976532f00005c000000 0000004a8f800000639422bed7a800000000005c 4a000000dc0100002b423976532f00005c000000 4a000000dc0100002b423976532f00005c000000 000000000000004a8f800000639422bed7a800000000005c 4a000000dc0100002b423976532f00005c000000 0000004a8f800000639422bed7a800000000005c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; }; - {a=>1} 01 01 01 20 01000000 01 20 01 20 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1} 01 01 01 20 01000000 01 20 01 20 - {a=>3} 03 03 03 60 03000000 03 60 03 60 - {a=>5} 05 05 05 a0 05000000 05 a0 05 a0 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; }; - {a=>4,b=>3} 1c 1c 1c 8c 1c000000 1c 8c 1c 8c - {a=>5,b=>6} 35 35 35 b8 35000000 35 b8 35 b8 - {a=>1,b=>3} 19 19 19 2c 19000000 19 2c 19 2c - {a=>7,b=>6} 37 37 37 f8 37000000 37 f8 37 f8 - {a=>1,b=>0} 01 01 01 20 01000000 01 20 01 20 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>7,a=>2,b=>6} f201 f201 f201 5b80 f2010000 f201 5b80 f201 5b80 - {c=>3,a=>1,b=>4} e100 e100 e100 3180 e1000000 e100 3180 e100 3180 - {c=>0,a=>2,b=>1} 0a00 0a00 0a00 4400 0a000000 0a00 4400 0a00 4400 - {c=>7,a=>6,b=>6} f601 f601 f601 db80 f6010000 f601 db80 f601 db80 - {c=>6,a=>5,b=>3} 9d01 9d01 9d01 af00 9d010000 9d01 af00 9d01 af00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>3,a=>4,b=>6,d=>50977657} f400000079db0903 f400000079db0903 f400000079db0903 99800000309db790 f400000079db0903 f400000079db0903 99800000309db790 f400000079db0903 99800000309db790 - {c=>4,a=>1,b=>0,d=>156580251} 010100009b395509 010100009b395509 010100009b395509 22000000955399b0 010100009b395509 010100009b395509 22000000955399b0 010100009b395509 22000000955399b0 - {c=>0,a=>6,b=>1,d=>120765803} 0e0000006bbd3207 0e0000006bbd3207 0e0000006bbd3207 c4000000732bd6b0 0e0000006bbd3207 0e0000006bbd3207 c4000000732bd6b0 0e0000006bbd3207 c4000000732bd6b0 - {c=>5,a=>6,b=>4,d=>190259749} 660100002522570b 660100002522570b 660100002522570b d2800000b5722250 660100002522570b 660100002522570b d2800000b5722250 660100002522570b d2800000b5722250 - {c=>3,a=>6,b=>1,d=>14877875} ce000000b304e300 ce000000b304e300 ce000000b304e300 c58000000e304b30 ce000000b304e300 ce000000b304e300 c58000000e304b30 ce000000b304e300 c58000000e304b30 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>7,c=>0,a=>5,b=>4,d=>131151049} 25000000c934d177 25000000c934d177 25000000c934d177 b00000007d134c9e 25000000c934d177 25000000c934d177 b00000007d134c9e 25000000c934d177 b00000007d134c9e - {e=>4,c=>6,a=>0,b=>3,d=>27196562} 9801000092fc9e41 9801000092fc9e41 9801000092fc9e41 0f00000019efc928 9801000092fc9e41 9801000092fc9e41 0f00000019efc928 9801000092fc9e41 0f00000019efc928 - {e=>5,c=>2,a=>5,b=>2,d=>79198194} 95000000f277b854 95000000f277b854 95000000f277b854 a90000004b877f2a 95000000f277b854 95000000f277b854 a90000004b877f2a 95000000f277b854 a90000004b877f2a - {e=>1,c=>6,a=>1,b=>1,d=>53011008} 8901000040e22813 8901000040e22813 8901000040e22813 27000000328e2402 8901000040e22813 8901000040e22813 27000000328e2402 8901000040e22813 27000000328e2402 - {e=>3,c=>0,a=>3,b=>5,d=>229669114} 2b000000fa78b03d 2b000000fa78b03d 2b000000fa78b03d 74000000db078fa6 2b000000fa78b03d 2b000000fa78b03d 74000000db078fa6 2b000000fa78b03d 74000000db078fa6 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>7,c=>4,a=>3,b=>2,d=>224213968,f=>0} 13010000d03b5d7d00000000 13010000d03b5d7d00000000 13010000d03b5d7d00000000 6a000000d5d3bd0e00000000 13010000d03b5d7d00000000 13010000d03b5d7d00000000 6a000000d5d3bd0e00000000 13010000d03b5d7d00000000 6a000000d5d3bd0e00000000 - {e=>5,c=>0,a=>6,b=>7,d=>149199438,f=>2} 3e0000004e9ae45802000000 3e0000004e9ae45802000000 3e0000004e9ae45802000000 dc0000008e49a4ea80000000 3e0000004e9ae45802000000 3e0000004e9ae45802000000 dc0000008e49a4ea80000000 3e0000004e9ae45802000000 dc0000008e49a4ea80000000 - {e=>4,c=>7,a=>4,b=>6,d=>212284222,f=>0} f40100003e33a74c00000000 f40100003e33a74c00000000 f40100003e33a74c00000000 9b800000ca7333e800000000 f40100003e33a74c00000000 f40100003e33a74c00000000 9b800000ca7333e800000000 f40100003e33a74c00000000 9b800000ca7333e800000000 - {e=>0,c=>4,a=>1,b=>3,d=>183266435,f=>3} 19010000836cec0a03000000 19010000836cec0a03000000 19010000836cec0a03000000 2e000000aec6c830c0000000 19010000836cec0a03000000 19010000836cec0a03000000 2e000000aec6c830c0000000 19010000836cec0a03000000 2e000000aec6c830c0000000 - {e=>3,c=>3,a=>2,b=>0,d=>193465720,f=>3} c2000000780d883b03000000 c2000000780d883b03000000 c2000000780d883b03000000 41800000b880d786c0000000 c2000000780d883b03000000 c2000000780d883b03000000 41800000b880d786c0000000 c2000000780d883b03000000 41800000b880d786c0000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>2,c=>0,a=>4,g=>7279,b=>3,d=>226086089,f=>0} 1c000000c9cc792dbc710000 1c000000c9cc792dbc710000 1c000000c9cc792dbc710000 8c000000d79ccc9438de0000 1c000000c9cc792dbc710000 1c000000c9cc792dbc710000 8c000000d79ccc9438de0000 1c000000c9cc792dbc710000 8c000000d79ccc9438de0000 - {e=>4,c=>1,a=>5,g=>1474,b=>6,d=>135043372,f=>2} 750000002c990c480a170000 750000002c990c480a170000 750000002c990c480a170000 b880000080c992c88b840000 750000002c990c480a170000 750000002c990c480a170000 b880000080c992c88b840000 750000002c990c480a170000 b880000080c992c88b840000 - {e=>0,c=>2,a=>4,g=>4289,b=>6,d=>167538358,f=>2} b4000000b66efc0906430000 b4000000b66efc0906430000 b4000000b66efc0906430000 990000009fc6eb60a1820000 b4000000b66efc0906430000 b4000000b66efc0906430000 990000009fc6eb60a1820000 b4000000b66efc0906430000 990000009fc6eb60a1820000 - {e=>3,c=>4,a=>0,g=>1460,b=>0,d=>191785714,f=>1} 00010000f26a6e3bd1160000 00010000f26a6e3bd1160000 00010000f26a6e3bd1160000 02000000b6e6af264b680000 00010000f26a6e3bd1160000 00010000f26a6e3bd1160000 02000000b6e6af264b680000 00010000f26a6e3bd1160000 02000000b6e6af264b680000 - {e=>1,c=>0,a=>4,g=>4192,b=>7,d=>193646184,f=>0} 3c00000068ce8a1b80410000 3c00000068ce8a1b80410000 3c00000068ce8a1b80410000 9c000000b8ace68220c00000 3c00000068ce8a1b80410000 3c00000068ce8a1b80410000 9c000000b8ace68220c00000 3c00000068ce8a1b80410000 9c000000b8ace68220c00000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>2,a=>6,d=>72412399,c=>7,h=>156,b=>2,g=>1487,f=>3} d6010000efec50243f179c00 d6010000efec50243f179c00 d6010000efec50243f179c00 cb800000450ecef4cb9e9c00 d6010000efec50243f179c00 d6010000efec50243f179c00 cb800000450ecef4cb9e9c00 d6010000efec50243f179c00 cb800000450ecef4cb9e9c00 - {e=>6,a=>3,d=>227300670,c=>1,h=>201,b=>3,g=>4275,f=>1} 5b0000003e558c6dcd42c900 5b0000003e558c6dcd42c900 5b0000003e558c6dcd42c900 6c800000d8c553ec6166c900 5b0000003e558c6dcd42c900 5b0000003e558c6dcd42c900 6c800000d8c553ec6166c900 5b0000003e558c6dcd42c900 6c800000d8c553ec6166c900 - {e=>3,a=>7,d=>180879568,c=>1,h=>224,b=>5,g=>7892,f=>3} 6f000000d000c83a537be000 6f000000d000c83a537be000 6f000000d000c83a537be000 f4800000ac800d06fda8e000 6f000000d000c83a537be000 6f000000d000c83a537be000 f4800000ac800d06fda8e000 6f000000d000c83a537be000 f4800000ac800d06fda8e000 - {e=>3,a=>0,d=>137129408,c=>6,h=>116,b=>2,g=>269,f=>0} 90010000c06d2c3834047400 90010000c06d2c3834047400 90010000c06d2c3834047400 0b00000082c6dc06021a7400 90010000c06d2c3834047400 90010000c06d2c3834047400 0b00000082c6dc06021a7400 90010000c06d2c3834047400 0b00000082c6dc06021a7400 - {e=>1,a=>3,d=>206927027,c=>2,h=>226,b=>7,g=>3383,f=>2} bb000000b374551cde34e200 bb000000b374551cde34e200 bb000000b374551cde34e200 7d000000c5574b329a6ee200 bb000000b374551cde34e200 bb000000b374551cde34e200 7d000000c5574b329a6ee200 bb000000b374551cde34e200 7d000000c5574b329a6ee200 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; }; - {a=>5,b=>0} 0500 0500 0500 0500 05000000 0500 0500 0500 0500 - {a=>53,b=>0} 3500 3500 3500 3500 35000000 3500 3500 3500 3500 - {a=>83,b=>5} 5305 5305 5305 53a0 53050000 5305 53a0 5305 53a0 - {a=>4,b=>3} 0403 0403 0403 0460 04030000 0403 0460 0403 0460 - {a=>-108,b=>1} 9401 9401 9401 9420 94010000 9401 9420 9401 9420 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-89,b=>5} a725 a725 a725 a7b0 a7250000 a725 a7b0 a725 a7b0 - {c=>3,a=>-94,b=>1} a219 a219 a219 a22c a2190000 a219 a22c a219 a22c - {c=>2,a=>41,b=>1} 2911 2911 2911 2928 29110000 2911 2928 2911 2928 - {c=>0,a=>-104,b=>5} 9805 9805 9805 98a0 98050000 9805 98a0 9805 98a0 - {c=>4,a=>123,b=>7} 7b27 7b27 7b27 7bf0 7b270000 7b27 7bf0 7b27 7bf0 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>1,a=>26,b=>2,d=>6} 1a0a0600 1a0a0600 1a0a0600 1a44c000 1a0a0600 1a0a0600 1a44c000 1a0a0600 1a44c000 - {c=>0,a=>41,b=>3,d=>7} 29030700 29030700 29030700 2960e000 29030700 29030700 2960e000 29030700 2960e000 - {c=>0,a=>-60,b=>7,d=>5} c4070500 c4070500 c4070500 c4e0a000 c4070500 c4070500 c4e0a000 c4070500 c4e0a000 - {c=>4,a=>21,b=>5,d=>1} 15250100 15250100 15250100 15b02000 15250100 15250100 15b02000 15250100 15b02000 - {c=>1,a=>-57,b=>3,d=>7} c70b0700 c70b0700 c70b0700 c764e000 c70b0700 c70b0700 c764e000 c70b0700 c764e000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>251650091,c=>3,a=>18,b=>2,d=>6} 121a06002be0ff0e 121a06002be0ff0e 121a06002be0ff0e 124cc000effe02b0 121a06002be0ff0e 121a06002be0ff0e 124cc000effe02b0 121a06002be0ff0e 124cc000effe02b0 - {e=>184337798,c=>4,a=>67,b=>1,d=>5} 4321050086c5fc0a 4321050086c5fc0a 4321050086c5fc0a 4330a000afcc5860 4321050086c5fc0a 4321050086c5fc0a 4330a000afcc5860 4321050086c5fc0a 4330a000afcc5860 - {e=>18454609,c=>4,a=>-22,b=>2,d=>3} ea22030051981901 ea22030051981901 ea22030051981901 ea50600011998510 ea22030051981901 ea22030051981901 ea50600011998510 ea22030051981901 ea50600011998510 - {e=>172433341,c=>6,a=>76,b=>6,d=>7} 4c360700bd1f470a 4c360700bd1f470a 4c360700bd1f470a 4cd8e000a471fbd0 4c360700bd1f470a 4c360700bd1f470a 4cd8e000a471fbd0 4c360700bd1f470a 4cd8e000a471fbd0 - {e=>134101335,c=>2,a=>103,b=>0,d=>4} 671004005739fe07 671004005739fe07 671004005739fe07 670880007fe39570 671004005739fe07 671004005739fe07 670880007fe39570 671004005739fe07 670880007fe39570 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>200236336,c=>5,a=>-24,b=>2,d=>3,f=>1} e82a0300305def1b e82a0300305def1b e82a0300305def1b e8546000bef5d302 e82a0300305def1b e82a0300305def1b e8546000bef5d302 e82a0300305def1b e8546000bef5d302 - {e=>16740769,c=>4,a=>-26,b=>0,d=>1,f=>3} e6200100a171ff30 e6200100a171ff30 e6200100a171ff30 e61020000ff71a16 e6200100a171ff30 e6200100a171ff30 e61020000ff71a16 e6200100a171ff30 e61020000ff71a16 - {e=>6071845,c=>4,a=>121,b=>4,d=>1,f=>2} 7924010025a65c20 7924010025a65c20 7924010025a65c20 7990200005ca6254 7924010025a65c20 7924010025a65c20 7990200005ca6254 7924010025a65c20 7990200005ca6254 - {e=>24355757,c=>3,a=>-75,b=>5,d=>2,f=>2} b51d0200ada37321 b51d0200ada37321 b51d0200ada37321 b5ac4000173a3ad4 b51d0200ada37321 b51d0200ada37321 b5ac4000173a3ad4 b51d0200ada37321 b5ac4000173a3ad4 - {e=>167185341,c=>2,a=>21,b=>6,d=>4,f=>4} 15160400bd0bf749 15160400bd0bf749 15160400bd0bf749 15c880009f70bbd8 15160400bd0bf749 15160400bd0bf749 15c880009f70bbd8 15160400bd0bf749 15c880009f70bbd8 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>98259173,c=>2,a=>-44,g=>2,b=>6,d=>2,f=>2} d4160200e550db2502000000 d4160200e550db2502000000 d4160200e550db2502000000 d4c840005db50e5480000000 d4160200e550db2502000000 d4160200e550db2502000000 d4c840005db50e5480000000 d4160200e550db2502000000 d4c840005db50e5480000000 - {e=>101458287,c=>3,a=>107,g=>0,b=>2,d=>7,f=>2} 6b1a07006f210c2600000000 6b1a07006f210c2600000000 6b1a07006f210c2600000000 6b4ce00060c216f400000000 6b1a07006f210c2600000000 6b1a07006f210c2600000000 6b4ce00060c216f400000000 6b1a07006f210c2600000000 6b4ce00060c216f400000000 - {e=>73372275,c=>5,a=>-94,g=>0,b=>1,d=>7,f=>1} a229070073925f1400000000 a229070073925f1400000000 a229070073925f1400000000 a234e00045f9273200000000 a229070073925f1400000000 a229070073925f1400000000 a234e00045f9273200000000 a229070073925f1400000000 a234e00045f9273200000000 - {e=>168006158,c=>5,a=>-34,g=>0,b=>0,d=>0,f=>5} de2800000e92035a00000000 de2800000e92035a00000000 de2800000e92035a00000000 de140000a03920ea00000000 de2800000e92035a00000000 de2800000e92035a00000000 de140000a03920ea00000000 de2800000e92035a00000000 de140000a03920ea00000000 - {e=>251692646,c=>0,a=>58,g=>1,b=>7,d=>2,f=>6} 3a0702006686006f01000000 3a0702006686006f01000000 3a0702006686006f01000000 3ae04000f008666c40000000 3a0702006686006f01000000 3a0702006686006f01000000 3ae04000f008666c40000000 3a0702006686006f01000000 3ae04000f008666c40000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>72582175,a=>66,d=>0,c=>0,h=>6020,b=>1,g=>0,f=>1} 420100001f845314105e0000 420100001f845314105e0000 420100001f845314105e0000 42200000453841f22f080000 420100001f845314105e0000 420100001f845314105e0000 42200000453841f22f080000 420100001f845314105e0000 42200000453841f22f080000 - {e=>184039552,a=>30,d=>0,c=>3,h=>2419,b=>7,g=>2,f=>0} 1e1f00008038f80ace250000 1e1f00008038f80ace250000 1e1f00008038f80ace250000 1eec0000af83880092e60000 1e1f00008038f80ace250000 1e1f00008038f80ace250000 1eec0000af83880092e60000 1e1f00008038f80ace250000 1eec0000af83880092e60000 - {e=>80164592,a=>-49,d=>3,c=>6,h=>7825,b=>5,g=>0,f=>7} cf350300f036c774447a0000 cf350300f036c774447a0000 cf350300f036c774447a0000 cfb860004c736f0e3d220000 cf350300f036c774447a0000 cf350300f036c774447a0000 cfb860004c736f0e3d220000 cf350300f036c774447a0000 cfb860004c736f0e3d220000 - {e=>159880110,a=>-107,d=>6,c=>0,h=>4520,b=>3,g=>1,f=>4} 95030600ae938749a1460000 95030600ae938749a1460000 95030600ae938749a1460000 9560c00098793ae863500000 95030600ae938749a1460000 95030600ae938749a1460000 9560c00098793ae863500000 95030600ae938749a1460000 9560c00098793ae863500000 - {e=>237506163,a=>-31,d=>6,c=>0,h=>1061,b=>7,g=>3,f=>6} e1070600730e286e97100000 e1070600730e286e97100000 e1070600730e286e97100000 e1e0c000e280e73cc84a0000 e1070600730e286e97100000 e1070600730e286e97100000 e1e0c000e280e73cc84a0000 e1070600730e286e97100000 e1e0c000e280e73cc84a0000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>75173975,a=>0,d=>7,c=>5,h=>219,b=>2,g=>0,f=>2,i=>75} 002a070057107b246c034b00 002a070057107b246c034b00 002a070057107b246c034b00 0054e00047b1057401b64b00 002a070057107b246c034b00 002a070057107b246c034b00 0054e00047b1057401b64b00 002a070057107b246c034b00 0054e00047b1057401b64b00 - {e=>14359521,a=>-73,d=>7,c=>3,h=>7081,b=>3,g=>1,f=>4,i=>127} b71b0700e11bdb40a56e7f00 b71b0700e11bdb40a56e7f00 b71b0700e11bdb40a56e7f00 b76ce0000db1be1877527f00 b71b0700e11bdb40a56e7f00 b71b0700e11bdb40a56e7f00 b76ce0000db1be1877527f00 b71b0700e11bdb40a56e7f00 b76ce0000db1be1877527f00 - {e=>93479715,a=>-14,d=>2,c=>4,h=>5837,b=>2,g=>0,f=>5,i=>120} f222020023639255345b7800 f222020023639255345b7800 f222020023639255345b7800 f25040005926323a2d9a7800 f222020023639255345b7800 f222020023639255345b7800 f25040005926323a2d9a7800 f222020023639255345b7800 f25040005926323a2d9a7800 - {e=>240985188,a=>123,d=>3,c=>4,h=>1817,b=>6,g=>0,f=>0,i=>75} 7b26030064245d0e641c4b00 7b26030064245d0e641c4b00 7b26030064245d0e641c4b00 7bd06000e5d246400e324b00 7b26030064245d0e641c4b00 7b26030064245d0e641c4b00 7bd06000e5d246400e324b00 7b26030064245d0e641c4b00 7bd06000e5d246400e324b00 - {e=>31234999,a=>99,d=>6,c=>3,h=>4938,b=>0,g=>3,f=>3,i=>200} 63180600b79bdc312b4dc800 63180600b79bdc312b4dc800 63180600b79bdc312b4dc800 630cc0001dc9bb76e694c800 63180600b79bdc312b4dc800 63180600b79bdc312b4dc800 630cc0001dc9bb76e694c800 63180600b79bdc312b4dc800 630cc0001dc9bb76e694c800 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; }; - {a=>-20,b=>2} ecff0200 ecff0200 ecff0200 ffec4000 ecff0200 ecff0200 ffec4000 ecff0200 ffec4000 - {a=>51,b=>0} 33000000 33000000 33000000 00330000 33000000 33000000 00330000 33000000 00330000 - {a=>-61,b=>7} c3ff0700 c3ff0700 c3ff0700 ffc3e000 c3ff0700 c3ff0700 ffc3e000 c3ff0700 ffc3e000 - {a=>109,b=>2} 6d000200 6d000200 6d000200 006d4000 6d000200 6d000200 006d4000 6d000200 006d4000 - {a=>3,b=>5} 03000500 03000500 03000500 0003a000 03000500 03000500 0003a000 03000500 0003a000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>91,b=>0} 5b000800 5b000800 5b000800 005b0400 5b000800 5b000800 005b0400 5b000800 005b0400 - {c=>6,a=>40,b=>1} 28003100 28003100 28003100 00283800 28003100 28003100 00283800 28003100 00283800 - {c=>3,a=>73,b=>7} 49001f00 49001f00 49001f00 0049ec00 49001f00 49001f00 0049ec00 49001f00 0049ec00 - {c=>2,a=>-70,b=>0} baff1000 baff1000 baff1000 ffba0800 baff1000 baff1000 ffba0800 baff1000 ffba0800 - {c=>3,a=>-86,b=>2} aaff1a00 aaff1a00 aaff1a00 ffaa4c00 aaff1a00 aaff1a00 ffaa4c00 aaff1a00 ffaa4c00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>7,a=>-16,b=>2,d=>0} f0ff3a00 f0ff3a00 f0ff3a00 fff05c00 f0ff3a00 f0ff3a00 fff05c00 f0ff3a00 fff05c00 - {c=>2,a=>120,b=>3,d=>3} 7800d300 7800d300 7800d300 00786980 7800d300 7800d300 00786980 7800d300 00786980 - {c=>1,a=>109,b=>6,d=>6} 6d008e01 6d008e01 6d008e01 006dc700 6d008e01 6d008e01 006dc700 6d008e01 006dc700 - {c=>2,a=>109,b=>7,d=>5} 6d005701 6d005701 6d005701 006dea80 6d005701 6d005701 006dea80 6d005701 006dea80 - {c=>7,a=>35,b=>6,d=>4} 23003e01 23003e01 23003e01 0023de00 23003e01 23003e01 0023de00 23003e01 0023de00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>242573218,c=>0,a=>-82,b=>5,d=>3} aeffc500a25f750e aeffc500a25f750e aeffc500a25f750e ffaea180e755fa20 aeffc500a25f750e aeffc500a25f750e ffaea180e755fa20 aeffc500a25f750e ffaea180e755fa20 - {e=>30225390,c=>1,a=>-90,b=>1,d=>0} a6ff0900ee33cd01 a6ff0900ee33cd01 a6ff0900ee33cd01 ffa624001cd33ee0 a6ff0900ee33cd01 a6ff0900ee33cd01 ffa624001cd33ee0 a6ff0900ee33cd01 ffa624001cd33ee0 - {e=>42673361,c=>7,a=>2,b=>7,d=>4} 02003f01d1248b02 02003f01d1248b02 02003f01d1248b02 0002fe0028b24d10 02003f01d1248b02 02003f01d1248b02 0002fe0028b24d10 02003f01d1248b02 0002fe0028b24d10 - {e=>177618799,c=>1,a=>-74,b=>4,d=>0} b6ff0c006f3f960a b6ff0c006f3f960a b6ff0c006f3f960a ffb68400a963f6f0 b6ff0c006f3f960a b6ff0c006f3f960a ffb68400a963f6f0 b6ff0c006f3f960a ffb68400a963f6f0 - {e=>162146214,c=>1,a=>9,b=>5,d=>2} 09008d00a627aa09 09008d00a627aa09 09008d00a627aa09 0009a5009aa27a60 09008d00a627aa09 09008d00a627aa09 0009a5009aa27a60 09008d00a627aa09 0009a5009aa27a60 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>51386433,c=>7,a=>-38,b=>4,d=>2,f=>2} daffbc0041181023 daffbc0041181023 daffbc0041181023 ffda9d0031018414 daffbc0041181023 daffbc0041181023 ffda9d0031018414 daffbc0041181023 ffda9d0031018414 - {e=>119132246,c=>3,a=>-125,b=>6,d=>1,f=>0} 83ff5e0056d01907 83ff5e0056d01907 83ff5e0056d01907 ff83cc80719d0560 83ff5e0056d01907 83ff5e0056d01907 ff83cc80719d0560 83ff5e0056d01907 ff83cc80719d0560 - {e=>28309628,c=>6,a=>-101,b=>5,d=>5,f=>0} 9bff75017cf8af01 9bff75017cf8af01 9bff75017cf8af01 ff9bba801aff87c0 9bff75017cf8af01 9bff75017cf8af01 ff9bba801aff87c0 9bff75017cf8af01 ff9bba801aff87c0 - {e=>151543114,c=>3,a=>3,b=>2,d=>7,f=>5} 0300da014a5d0859 0300da014a5d0859 0300da014a5d0859 00034f809085d4aa 0300da014a5d0859 0300da014a5d0859 00034f809085d4aa 0300da014a5d0859 00034f809085d4aa - {e=>213132804,c=>5,a=>-95,b=>4,d=>0,f=>0} a1ff2c000426b40c a1ff2c000426b40c a1ff2c000426b40c ffa19400cb426040 a1ff2c000426b40c a1ff2c000426b40c ffa19400cb426040 a1ff2c000426b40c ffa19400cb426040 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>142590409,c=>6,a=>-41,g=>0,b=>6,d=>3,f=>7} d7fff600c9c17f7800000000 d7fff600c9c17f7800000000 d7fff600c9c17f7800000000 ffd7d98087fc1c9e00000000 d7fff600c9c17f7800000000 d7fff600c9c17f7800000000 ffd7d98087fc1c9e00000000 d7fff600c9c17f7800000000 ffd7d98087fc1c9e00000000 - {e=>97470275,c=>4,a=>81,g=>1,b=>6,d=>6,f=>3} 5100a6014347cf3501000000 5100a6014347cf3501000000 5100a6014347cf3501000000 0051d3005cf4743640000000 5100a6014347cf3501000000 5100a6014347cf3501000000 0051d3005cf4743640000000 5100a6014347cf3501000000 0051d3005cf4743640000000 - {e=>267791921,c=>1,a=>34,g=>1,b=>7,d=>2,f=>1} 22008f00312ef61f01000000 22008f00312ef61f01000000 22008f00312ef61f01000000 0022e500ff62e31240000000 22008f00312ef61f01000000 22008f00312ef61f01000000 0022e500ff62e31240000000 22008f00312ef61f01000000 0022e500ff62e31240000000 - {e=>41800024,c=>3,a=>-80,g=>2,b=>0,d=>0,f=>1} b0ff180058d17d1202000000 b0ff180058d17d1202000000 b0ff180058d17d1202000000 ffb00c0027dd158280000000 b0ff180058d17d1202000000 b0ff180058d17d1202000000 ffb00c0027dd158280000000 b0ff180058d17d1202000000 ffb00c0027dd158280000000 - {e=>258096646,c=>0,a=>-31,g=>2,b=>3,d=>0,f=>3} e1ff0300063e623f02000000 e1ff0300063e623f02000000 e1ff0300063e623f02000000 ffe16000f623e06680000000 e1ff0300063e623f02000000 e1ff0300063e623f02000000 ffe16000f623e06680000000 e1ff0300063e623f02000000 ffe16000f623e06680000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>122313407,a=>19,d=>3,c=>0,h=>650,b=>1,g=>1,f=>3} 1300c100bf5a4a37290a0000 1300c100bf5a4a37290a0000 1300c100bf5a4a37290a0000 0013218074a5abf645140000 1300c100bf5a4a37290a0000 1300c100bf5a4a37290a0000 0013218074a5abf645140000 1300c100bf5a4a37290a0000 0013218074a5abf645140000 - {e=>94490750,a=>35,d=>1,c=>1,h=>5999,b=>4,g=>1,f=>0} 23004c007ed0a105bd5d0000 23004c007ed0a105bd5d0000 23004c007ed0a105bd5d0000 002384805a1d07e06ede0000 23004c007ed0a105bd5d0000 23004c007ed0a105bd5d0000 002384805a1d07e06ede0000 23004c007ed0a105bd5d0000 002384805a1d07e06ede0000 - {e=>76168925,a=>-99,d=>0,c=>3,h=>6309,b=>6,g=>0,f=>6} 9dff1e00dd3e8a6494620000 9dff1e00dd3e8a6494620000 9dff1e00dd3e8a6494620000 ff9dcc0048a3eddc314a0000 9dff1e00dd3e8a6494620000 9dff1e00dd3e8a6494620000 ff9dcc0048a3eddc314a0000 9dff1e00dd3e8a6494620000 ff9dcc0048a3eddc314a0000 - {e=>69639528,a=>-114,d=>1,c=>7,h=>2240,b=>2,g=>1,f=>7} 8eff7a00689d267401230000 8eff7a00689d267401230000 8eff7a00689d267401230000 ff8e5c804269d68e51800000 8eff7a00689d267401230000 8eff7a00689d267401230000 ff8e5c804269d68e51800000 8eff7a00689d267401230000 ff8e5c804269d68e51800000 - {e=>138012526,a=>109,d=>3,c=>5,h=>7241,b=>3,g=>2,f=>0} 6d00eb006ee7390826710000 6d00eb006ee7390826710000 6d00eb006ee7390826710000 006d7580839e76e0b8920000 6d00eb006ee7390826710000 6d00eb006ee7390826710000 006d7580839e76e0b8920000 6d00eb006ee7390826710000 006d7580839e76e0b8920000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>213997424,a=>12,d=>4,c=>5,h=>6891,b=>4,g=>0,f=>5,i=>155} 0c002c017057c15cac6b9b00 0c002c017057c15cac6b9b00 0c002c017057c15cac6b9b00 000c9600cc15770a35d69b00 0c002c017057c15cac6b9b00 0c002c017057c15cac6b9b00 000c9600cc15770a35d69b00 0c002c017057c15cac6b9b00 000c9600cc15770a35d69b00 - {e=>80148154,a=>4,d=>3,c=>3,h=>5605,b=>4,g=>2,f=>7,i=>187} 0400dc00baf6c6749657bb00 0400dc00baf6c6749657bb00 0400dc00baf6c6749657bb00 00048d804c6f6baeabcabb00 0400dc00baf6c6749657bb00 0400dc00baf6c6749657bb00 00048d804c6f6baeabcabb00 0400dc00baf6c6749657bb00 00048d804c6f6baeabcabb00 - {e=>17679511,a=>103,d=>4,c=>7,h=>793,b=>4,g=>1,f=>5,i=>154} 67003c0197c40d51650c9a00 67003c0197c40d51650c9a00 67003c0197c40d51650c9a00 00679e0010dc497a46329a00 67003c0197c40d51650c9a00 67003c0197c40d51650c9a00 00679e0010dc497a46329a00 67003c0197c40d51650c9a00 00679e0010dc497a46329a00 - {e=>234963446,a=>-109,d=>7,c=>4,h=>4806,b=>2,g=>2,f=>0,i=>153} 93ffe201f641010e1a4b9900 93ffe201f641010e1a4b9900 93ffe201f641010e1a4b9900 ff935380e0141f60a58c9900 93ffe201f641010e1a4b9900 93ffe201f641010e1a4b9900 ff935380e0141f60a58c9900 93ffe201f641010e1a4b9900 ff935380e0141f60a58c9900 - {e=>233686042,a=>26,d=>5,c=>3,h=>6938,b=>4,g=>1,f=>3,i=>229} 1a005c011ac4ed3d696ce500 1a005c011ac4ed3d696ce500 1a005c011ac4ed3d696ce500 001a8e80dedc41a67634e500 1a005c011ac4ed3d696ce500 1a005c011ac4ed3d696ce500 001a8e80dedc41a67634e500 1a005c011ac4ed3d696ce500 001a8e80dedc41a67634e500 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; }; - {a=>-76,b=>0} b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 ffffffb400000000 - {a=>-65,b=>4} bfffffff04000000 bfffffff04000000 bfffffff04000000 ffffffbf80000000 bfffffff04000000 bfffffff04000000 ffffffbf80000000 bfffffff04000000 ffffffbf80000000 - {a=>13,b=>3} 0d00000003000000 0d00000003000000 0d00000003000000 0000000d60000000 0d00000003000000 0d00000003000000 0000000d60000000 0d00000003000000 0000000d60000000 - {a=>79,b=>5} 4f00000005000000 4f00000005000000 4f00000005000000 0000004fa0000000 4f00000005000000 4f00000005000000 0000004fa0000000 4f00000005000000 0000004fa0000000 - {a=>-81,b=>4} afffffff04000000 afffffff04000000 afffffff04000000 ffffffaf80000000 afffffff04000000 afffffff04000000 ffffffaf80000000 afffffff04000000 ffffffaf80000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>84,b=>1} 5400000019000000 5400000019000000 5400000019000000 000000542c000000 5400000019000000 5400000019000000 000000542c000000 5400000019000000 000000542c000000 - {c=>1,a=>127,b=>1} 7f00000009000000 7f00000009000000 7f00000009000000 0000007f24000000 7f00000009000000 7f00000009000000 0000007f24000000 7f00000009000000 0000007f24000000 - {c=>5,a=>-114,b=>0} 8effffff28000000 8effffff28000000 8effffff28000000 ffffff8e14000000 8effffff28000000 8effffff28000000 ffffff8e14000000 8effffff28000000 ffffff8e14000000 - {c=>3,a=>108,b=>1} 6c00000019000000 6c00000019000000 6c00000019000000 0000006c2c000000 6c00000019000000 6c00000019000000 0000006c2c000000 6c00000019000000 0000006c2c000000 - {c=>7,a=>9,b=>1} 0900000039000000 0900000039000000 0900000039000000 000000093c000000 0900000039000000 0900000039000000 000000093c000000 0900000039000000 000000093c000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>-62,b=>1,d=>4} c2ffffff31010000 c2ffffff31010000 c2ffffff31010000 ffffffc23a000000 c2ffffff31010000 c2ffffff31010000 ffffffc23a000000 c2ffffff31010000 ffffffc23a000000 - {c=>7,a=>74,b=>5,d=>0} 4a0000003d000000 4a0000003d000000 4a0000003d000000 0000004abc000000 4a0000003d000000 4a0000003d000000 0000004abc000000 4a0000003d000000 0000004abc000000 - {c=>3,a=>-122,b=>2,d=>7} 86ffffffda010000 86ffffffda010000 86ffffffda010000 ffffff864f800000 86ffffffda010000 86ffffffda010000 ffffff864f800000 86ffffffda010000 ffffff864f800000 - {c=>3,a=>-73,b=>7,d=>2} b7ffffff9f000000 b7ffffff9f000000 b7ffffff9f000000 ffffffb7ed000000 b7ffffff9f000000 b7ffffff9f000000 ffffffb7ed000000 b7ffffff9f000000 ffffffb7ed000000 - {c=>1,a=>13,b=>5,d=>2} 0d0000008d000000 0d0000008d000000 0d0000008d000000 0000000da5000000 0d0000008d000000 0d0000008d000000 0000000da5000000 0d0000008d000000 0000000da5000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>130106456,c=>4,a=>127,b=>7,d=>3} 7f000000e70000005844c107 7f000000e70000005844c107 7f000000e70000005844c107 0000007ff18000007c144580 7f000000e70000005844c107 7f000000e70000005844c107 0000007ff18000007c144580 7f000000e70000005844c107 0000007ff18000007c144580 - {e=>228064205,c=>5,a=>28,b=>5,d=>3} 1c000000ed000000cdfb970d 1c000000ed000000cdfb970d 1c000000ed000000cdfb970d 0000001cb5800000d97fbcd0 1c000000ed000000cdfb970d 1c000000ed000000cdfb970d 0000001cb5800000d97fbcd0 1c000000ed000000cdfb970d 0000001cb5800000d97fbcd0 - {e=>217906279,c=>1,a=>99,b=>0,d=>7} 63000000c801000067fcfc0c 63000000c801000067fcfc0c 63000000c801000067fcfc0c 0000006307800000cfcfc670 63000000c801000067fcfc0c 63000000c801000067fcfc0c 0000006307800000cfcfc670 63000000c801000067fcfc0c 0000006307800000cfcfc670 - {e=>51712296,c=>5,a=>-8,b=>2,d=>6} f8ffffffaa01000028111503 f8ffffffaa01000028111503 f8ffffffaa01000028111503 fffffff85700000031511280 f8ffffffaa01000028111503 f8ffffffaa01000028111503 fffffff85700000031511280 f8ffffffaa01000028111503 fffffff85700000031511280 - {e=>211735696,c=>6,a=>78,b=>1,d=>0} 4e0000003100000090d49e0c 4e0000003100000090d49e0c 4e0000003100000090d49e0c 0000004e38000000c9ed4900 4e0000003100000090d49e0c 4e0000003100000090d49e0c 0000004e38000000c9ed4900 4e0000003100000090d49e0c 0000004e38000000c9ed4900 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>242564914,c=>0,a=>6,b=>0,d=>4,f=>4} 0600000000010000323f754e 0600000000010000323f754e 0600000000010000323f754e 0000000602000000e753f328 0600000000010000323f754e 0600000000010000323f754e 0000000602000000e753f328 0600000000010000323f754e 0000000602000000e753f328 - {e=>142230259,c=>5,a=>-69,b=>3,d=>4,f=>0} bbffffff2b010000f3427a08 bbffffff2b010000f3427a08 bbffffff2b010000f3427a08 ffffffbb7600000087a42f30 bbffffff2b010000f3427a08 bbffffff2b010000f3427a08 ffffffbb7600000087a42f30 bbffffff2b010000f3427a08 ffffffbb7600000087a42f30 - {e=>40226599,c=>3,a=>-72,b=>3,d=>0,f=>0} b8ffffff1b00000027cf6502 b8ffffff1b00000027cf6502 b8ffffff1b00000027cf6502 ffffffb86c000000265cf270 b8ffffff1b00000027cf6502 b8ffffff1b00000027cf6502 ffffffb86c000000265cf270 b8ffffff1b00000027cf6502 ffffffb86c000000265cf270 - {e=>4604876,c=>0,a=>18,b=>5,d=>2,f=>5} 1200000085000000cc434650 1200000085000000cc434650 1200000085000000cc434650 00000012a100000004643cca 1200000085000000cc434650 1200000085000000cc434650 00000012a100000004643cca 1200000085000000cc434650 00000012a100000004643cca - {e=>209840252,c=>0,a=>-52,b=>3,d=>3,f=>2} ccffffffc30000007ce8812c ccffffffc30000007ce8812c ccffffffc30000007ce8812c ffffffcc61800000c81e87c4 ccffffffc30000007ce8812c ccffffffc30000007ce8812c ffffffcc61800000c81e87c4 ccffffffc30000007ce8812c ffffffcc61800000c81e87c4 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>13259097,c=>3,a=>-63,g=>1,b=>5,d=>7,f=>3} c1ffffffdd0100005951ca3001000000 c1ffffffdd0100005951ca3001000000 c1ffffffdd0100005951ca3001000000 ffffffc1af8000000ca5159640000000 c1ffffffdd0100005951ca3001000000 c1ffffffdd0100005951ca3001000000 ffffffc1af8000000ca5159640000000 c1ffffffdd0100005951ca3001000000 ffffffc1af8000000ca5159640000000 - {e=>156908516,c=>4,a=>36,g=>0,b=>6,d=>0,f=>6} 2400000026000000e43b5a6900000000 2400000026000000e43b5a6900000000 2400000026000000e43b5a6900000000 00000024d000000095a3be4c00000000 2400000026000000e43b5a6900000000 2400000026000000e43b5a6900000000 00000024d000000095a3be4c00000000 2400000026000000e43b5a6900000000 00000024d000000095a3be4c00000000 - {e=>59405293,c=>0,a=>117,g=>2,b=>5,d=>7,f=>7} 75000000c5010000ed738a7302000000 75000000c5010000ed738a7302000000 75000000c5010000ed738a7302000000 00000075a380000038a73ede80000000 75000000c5010000ed738a7302000000 75000000c5010000ed738a7302000000 00000075a380000038a73ede80000000 75000000c5010000ed738a7302000000 00000075a380000038a73ede80000000 - {e=>247527189,c=>5,a=>66,g=>2,b=>2,d=>2,f=>1} 42000000aa00000015f7c01e02000000 42000000aa00000015f7c01e02000000 42000000aa00000015f7c01e02000000 0000004255000000ec0f715280000000 42000000aa00000015f7c01e02000000 42000000aa00000015f7c01e02000000 0000004255000000ec0f715280000000 42000000aa00000015f7c01e02000000 0000004255000000ec0f715280000000 - {e=>80174753,c=>2,a=>-35,g=>1,b=>2,d=>0,f=>2} ddffffff12000000a15ec72401000000 ddffffff12000000a15ec72401000000 ddffffff12000000a15ec72401000000 ffffffdd480000004c75ea1440000000 ddffffff12000000a15ec72401000000 ddffffff12000000a15ec72401000000 ffffffdd480000004c75ea1440000000 ddffffff12000000a15ec72401000000 ffffffdd480000004c75ea1440000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>79855944,a=>-79,d=>6,c=>0,h=>1469,b=>5,g=>1,f=>0} b1ffffff850100004881c204f5160000 b1ffffff850100004881c204f5160000 b1ffffff850100004881c204f5160000 ffffffb1a30000004c2814804b7a0000 b1ffffff850100004881c204f5160000 b1ffffff850100004881c204f5160000 ffffffb1a30000004c2814804b7a0000 b1ffffff850100004881c204f5160000 ffffffb1a30000004c2814804b7a0000 - {e=>55286286,a=>-110,d=>5,c=>5,h=>6486,b=>5,g=>1,f=>3} 92ffffff6d0100000e9a4b3359650000 92ffffff6d0100000e9a4b3359650000 92ffffff6d0100000e9a4b3359650000 ffffff92b680000034b9a0e672ac0000 92ffffff6d0100000e9a4b3359650000 92ffffff6d0100000e9a4b3359650000 ffffff92b680000034b9a0e672ac0000 92ffffff6d0100000e9a4b3359650000 ffffff92b680000034b9a0e672ac0000 - {e=>230194727,a=>-49,d=>2,c=>2,h=>6812,b=>6,g=>1,f=>4} cfffffff96000000277eb84d716a0000 cfffffff96000000277eb84d716a0000 cfffffff96000000277eb84d716a0000 ffffffcfc9000000db87e27875380000 cfffffff96000000277eb84d716a0000 cfffffff96000000277eb84d716a0000 ffffffcfc9000000db87e27875380000 cfffffff96000000277eb84d716a0000 ffffffcfc9000000db87e27875380000 - {e=>191802023,a=>61,d=>7,c=>6,h=>7935,b=>4,g=>1,f=>2} 3d000000f4010000a7aa6e2bfd7b0000 3d000000f4010000a7aa6e2bfd7b0000 3d000000f4010000a7aa6e2bfd7b0000 0000003d9b800000b6eaaa747dfe0000 3d000000f4010000a7aa6e2bfd7b0000 3d000000f4010000a7aa6e2bfd7b0000 0000003d9b800000b6eaaa747dfe0000 3d000000f4010000a7aa6e2bfd7b0000 0000003d9b800000b6eaaa747dfe0000 - {e=>31737331,a=>18,d=>6,c=>6,h=>5531,b=>3,g=>2,f=>2} 12000000b3010000f345e4216e560000 12000000b3010000f345e4216e560000 12000000b3010000f345e4216e560000 000000127b0000001e445f34ab360000 12000000b3010000f345e4216e560000 12000000b3010000f345e4216e560000 000000127b0000001e445f34ab360000 12000000b3010000f345e4216e560000 000000127b0000001e445f34ab360000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>257753255,a=>78,d=>5,c=>1,h=>4307,b=>5,g=>1,f=>3,i=>23} 4e0000004d010000a7005d3f4d431700 4e0000004d010000a7005d3f4d431700 4e0000004d010000a7005d3f4d431700 0000004ea6800000f5d00a7661a61700 4e0000004d010000a7005d3f4d431700 4e0000004d010000a7005d3f4d431700 0000004ea6800000f5d00a7661a61700 4e0000004d010000a7005d3f4d431700 0000004ea6800000f5d00a7661a61700 - {e=>154752796,a=>-128,d=>3,c=>3,h=>1857,b=>7,g=>2,f=>4,i=>149} 80ffffffdf0000001c573949061d9500 80ffffffdf0000001c573949061d9500 80ffffffdf0000001c573949061d9500 ffffff80ed800000939571c88e829500 80ffffffdf0000001c573949061d9500 80ffffffdf0000001c573949061d9500 ffffff80ed800000939571c88e829500 80ffffffdf0000001c573949061d9500 ffffff80ed800000939571c88e829500 - {e=>48153402,a=>-86,d=>4,c=>5,h=>2443,b=>5,g=>1,f=>3,i=>106} aaffffff2d0100003ac3de322d266a00 aaffffff2d0100003ac3de322d266a00 aaffffff2d0100003ac3de322d266a00 ffffffaab60000002dec33a653166a00 aaffffff2d0100003ac3de322d266a00 aaffffff2d0100003ac3de322d266a00 ffffffaab60000002dec33a653166a00 aaffffff2d0100003ac3de322d266a00 ffffffaab60000002dec33a653166a00 - {e=>149056525,a=>-9,d=>6,c=>2,h=>4899,b=>0,g=>1,f=>2,i=>164} f7ffffff900100000d6ce2288d4ca400 f7ffffff900100000d6ce2288d4ca400 f7ffffff900100000d6ce2288d4ca400 fffffff70b0000008e26c0d46646a400 f7ffffff900100000d6ce2288d4ca400 f7ffffff900100000d6ce2288d4ca400 fffffff70b0000008e26c0d46646a400 f7ffffff900100000d6ce2288d4ca400 fffffff70b0000008e26c0d46646a400 - {e=>211134956,a=>118,d=>5,c=>1,h=>1779,b=>3,g=>1,f=>5,i=>234} 760000004b010000eca9955ccd1bea00 760000004b010000eca9955ccd1bea00 760000004b010000eca9955ccd1bea00 0000007666800000c95a9eca4de6ea00 760000004b010000eca9955ccd1bea00 760000004b010000eca9955ccd1bea00 0000007666800000c95a9eca4de6ea00 760000004b010000eca9955ccd1bea00 0000007666800000c95a9eca4de6ea00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; }; - {a=>83,b=>3} 5300000003000000 53000000000000000300000000000000 53000000000000000300000000000000 0000005360000000 5300000003000000 5300000003000000 00000000000000536000000000000000 5300000003000000 0000005360000000 - {a=>118,b=>5} 7600000005000000 76000000000000000500000000000000 76000000000000000500000000000000 00000076a0000000 7600000005000000 7600000005000000 0000000000000076a000000000000000 7600000005000000 00000076a0000000 - {a=>102,b=>4} 6600000004000000 66000000000000000400000000000000 66000000000000000400000000000000 0000006680000000 6600000004000000 6600000004000000 00000000000000668000000000000000 6600000004000000 0000006680000000 - {a=>-46,b=>3} d2ffffff03000000 d2ffffffffffffff0300000000000000 d2ffffffffffffff0300000000000000 ffffffd260000000 d2ffffff03000000 d2ffffff03000000 ffffffffffffffd26000000000000000 d2ffffff03000000 ffffffd260000000 - {a=>-65,b=>5} bfffffff05000000 bfffffffffffffff0500000000000000 bfffffffffffffff0500000000000000 ffffffbfa0000000 bfffffff05000000 bfffffff05000000 ffffffffffffffbfa000000000000000 bfffffff05000000 ffffffbfa0000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>101,b=>1} 6500000031000000 65000000000000003100000000000000 65000000000000003100000000000000 0000006538000000 6500000031000000 6500000031000000 00000000000000653800000000000000 6500000031000000 0000006538000000 - {c=>5,a=>32,b=>7} 200000002f000000 20000000000000002f00000000000000 20000000000000002f00000000000000 00000020f4000000 200000002f000000 200000002f000000 0000000000000020f400000000000000 200000002f000000 00000020f4000000 - {c=>7,a=>-74,b=>2} b6ffffff3a000000 b6ffffffffffffff3a00000000000000 b6ffffffffffffff3a00000000000000 ffffffb65c000000 b6ffffff3a000000 b6ffffff3a000000 ffffffffffffffb65c00000000000000 b6ffffff3a000000 ffffffb65c000000 - {c=>4,a=>-84,b=>1} acffffff21000000 acffffffffffffff2100000000000000 acffffffffffffff2100000000000000 ffffffac30000000 acffffff21000000 acffffff21000000 ffffffffffffffac3000000000000000 acffffff21000000 ffffffac30000000 - {c=>3,a=>-100,b=>4} 9cffffff1c000000 9cffffffffffffff1c00000000000000 9cffffffffffffff1c00000000000000 ffffff9c8c000000 9cffffff1c000000 9cffffff1c000000 ffffffffffffff9c8c00000000000000 9cffffff1c000000 ffffff9c8c000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-18,b=>2,d=>4} eeffffff1a010000 eeffffffffffffff1a01000000000000 eeffffffffffffff1a01000000000000 ffffffee4e000000 eeffffff1a010000 eeffffff1a010000 ffffffffffffffee4e00000000000000 eeffffff1a010000 ffffffee4e000000 - {c=>0,a=>-123,b=>2,d=>3} 85ffffffc2000000 85ffffffffffffffc200000000000000 85ffffffffffffffc200000000000000 ffffff8541800000 85ffffffc2000000 85ffffffc2000000 ffffffffffffff854180000000000000 85ffffffc2000000 ffffff8541800000 - {c=>5,a=>85,b=>2,d=>3} 55000000ea000000 5500000000000000ea00000000000000 5500000000000000ea00000000000000 0000005555800000 55000000ea000000 55000000ea000000 00000000000000555580000000000000 55000000ea000000 0000005555800000 - {c=>5,a=>-113,b=>7,d=>6} 8fffffffaf010000 8fffffffffffffffaf01000000000000 8fffffffffffffffaf01000000000000 ffffff8ff7000000 8fffffffaf010000 8fffffffaf010000 ffffffffffffff8ff700000000000000 8fffffffaf010000 ffffff8ff7000000 - {c=>3,a=>66,b=>0,d=>6} 4200000098010000 42000000000000009801000000000000 42000000000000009801000000000000 000000420f000000 4200000098010000 4200000098010000 00000000000000420f00000000000000 4200000098010000 000000420f000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>160937402,c=>7,a=>27,b=>7,d=>5} 1b0000007f010000bab59709 1b000000000000007f010000bab59709 1b000000000000007f010000bab59709 0000001bfe800000997b5ba0 1b0000007f010000bab59709 1b0000007f010000bab59709 000000000000001bfe800000997b5ba0 1b0000007f010000bab59709 0000001bfe800000997b5ba0 - {e=>20048177,c=>3,a=>28,b=>7,d=>6} 1c0000009f01000031e93101 1c000000000000009f01000031e93101 1c000000000000009f01000031e93101 0000001cef000000131e9310 1c0000009f01000031e93101 1c0000009f01000031e93101 000000000000001cef000000131e9310 1c0000009f01000031e93101 0000001cef000000131e9310 - {e=>246627849,c=>0,a=>-81,b=>4,d=>3} afffffffc4000000093eb30e afffffffffffffffc4000000093eb30e afffffffffffffffc4000000093eb30e ffffffaf81800000eb33e090 afffffffc4000000093eb30e afffffffc4000000093eb30e ffffffffffffffaf81800000eb33e090 afffffffc4000000093eb30e ffffffaf81800000eb33e090 - {e=>200039194,c=>5,a=>112,b=>2,d=>1} 700000006a0000001a5bec0b 70000000000000006a0000001a5bec0b 70000000000000006a0000001a5bec0b 0000007054800000bec5b1a0 700000006a0000001a5bec0b 700000006a0000001a5bec0b 000000000000007054800000bec5b1a0 700000006a0000001a5bec0b 0000007054800000bec5b1a0 - {e=>250650060,c=>0,a=>124,b=>1,d=>6} 7c00000081010000cc9df00e 7c0000000000000081010000cc9df00e 7c0000000000000081010000cc9df00e 0000007c23000000ef09dcc0 7c00000081010000cc9df00e 7c00000081010000cc9df00e 000000000000007c23000000ef09dcc0 7c00000081010000cc9df00e 0000007c23000000ef09dcc0 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>164019807,c=>0,a=>-107,b=>4,d=>4,f=>4} 95ffffff040100005fbec649 95ffffffffffffff040100005fbec649 95ffffffffffffff040100005fbec649 ffffff95820000009c6be5f8 95ffffff040100005fbec649 95ffffff040100005fbec649 ffffffffffffff95820000009c6be5f8 95ffffff040100005fbec649 ffffff95820000009c6be5f8 - {e=>148347054,c=>7,a=>122,b=>5,d=>4,f=>4} 7a0000003d010000ae98d748 7a000000000000003d010000ae98d748 7a000000000000003d010000ae98d748 0000007abe0000008d798ae8 7a0000003d010000ae98d748 7a0000003d010000ae98d748 000000000000007abe0000008d798ae8 7a0000003d010000ae98d748 0000007abe0000008d798ae8 - {e=>201328566,c=>2,a=>-38,b=>2,d=>0,f=>5} daffffff12000000b607005c daffffffffffffff12000000b607005c daffffffffffffff12000000b607005c ffffffda48000000c0007b6a daffffff12000000b607005c daffffff12000000b607005c ffffffffffffffda48000000c0007b6a daffffff12000000b607005c ffffffda48000000c0007b6a - {e=>17793067,c=>3,a=>62,b=>5,d=>1,f=>6} 3e0000005d0000002b800f61 3e000000000000005d0000002b800f61 3e000000000000005d0000002b800f61 0000003eac80000010f802bc 3e0000005d0000002b800f61 3e0000005d0000002b800f61 000000000000003eac80000010f802bc 3e0000005d0000002b800f61 0000003eac80000010f802bc - {e=>265362806,c=>3,a=>-81,b=>7,d=>0,f=>0} afffffff1f000000761dd10f afffffffffffffff1f000000761dd10f afffffffffffffff1f000000761dd10f ffffffafec000000fd11d760 afffffff1f000000761dd10f afffffff1f000000761dd10f ffffffffffffffafec000000fd11d760 afffffff1f000000761dd10f ffffffafec000000fd11d760 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>119342936,c=>2,a=>-110,g=>0,b=>2,d=>6,f=>7} 92ffffff9201000058071d7700000000 92ffffffffffffff9201000058071d770000000000000000 92ffffffffffffff9201000058071d770000000000000000 ffffff924b00000071d0758e00000000 92ffffff9201000058071d7700000000 92ffffff9201000058071d7700000000 ffffffffffffff924b00000071d0758e0000000000000000 92ffffff9201000058071d7700000000 ffffff924b00000071d0758e00000000 - {e=>62059604,c=>7,a=>-92,g=>3,b=>4,d=>4,f=>7} a4ffffff3c01000054f4b27303000000 a4ffffffffffffff3c01000054f4b2730300000000000000 a4ffffffffffffff3c01000054f4b2730300000000000000 ffffffa49e0000003b2f454ec0000000 a4ffffff3c01000054f4b27303000000 a4ffffff3c01000054f4b27303000000 ffffffffffffffa49e0000003b2f454ec000000000000000 a4ffffff3c01000054f4b27303000000 ffffffa49e0000003b2f454ec0000000 - {e=>174545826,c=>6,a=>-60,g=>3,b=>2,d=>3,f=>1} c4fffffff2000000a25b671a03000000 c4fffffffffffffff2000000a25b671a0300000000000000 c4fffffffffffffff2000000a25b671a0300000000000000 ffffffc459800000a675ba22c0000000 c4fffffff2000000a25b671a03000000 c4fffffff2000000a25b671a03000000 ffffffffffffffc459800000a675ba22c000000000000000 c4fffffff2000000a25b671a03000000 ffffffc459800000a675ba22c0000000 - {e=>133811322,c=>5,a=>106,g=>2,b=>2,d=>0,f=>4} 6a0000002a0000007accf94702000000 6a000000000000002a0000007accf9470200000000000000 6a000000000000002a0000007accf9470200000000000000 0000006a540000007f9cc7a880000000 6a0000002a0000007accf94702000000 6a0000002a0000007accf94702000000 000000000000006a540000007f9cc7a88000000000000000 6a0000002a0000007accf94702000000 0000006a540000007f9cc7a880000000 - {e=>181399152,c=>6,a=>71,g=>3,b=>4,d=>7,f=>7} 47000000f401000070eecf7a03000000 4700000000000000f401000070eecf7a0300000000000000 4700000000000000f401000070eecf7a0300000000000000 000000479b800000acfee70ec0000000 47000000f401000070eecf7a03000000 47000000f401000070eecf7a03000000 00000000000000479b800000acfee70ec000000000000000 47000000f401000070eecf7a03000000 000000479b800000acfee70ec0000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>178239616,a=>-56,d=>2,c=>0,h=>947,b=>6,g=>2,f=>5} c8ffffff8600000080b89f5ace0e0000 c8ffffffffffffff8600000080b89f5ace0e000000000000 c8ffffffffffffff8600000080b89f5ace0e000000000000 ffffffc8c1000000a9fb880a87660000 c8ffffff8600000080b89f5ace0e0000 c8ffffff8600000080b89f5ace0e0000 ffffffffffffffc8c1000000a9fb880a8766000000000000 c8ffffff8600000080b89f5ace0e0000 ffffffc8c1000000a9fb880a87660000 - {e=>92807764,a=>66,d=>7,c=>0,h=>2391,b=>5,g=>2,f=>3} 42000000c5010000542288355e250000 4200000000000000c5010000542288355e25000000000000 4200000000000000c5010000542288355e25000000000000 00000042a38000005882254692ae0000 42000000c5010000542288355e250000 42000000c5010000542288355e250000 0000000000000042a38000005882254692ae000000000000 42000000c5010000542288355e250000 00000042a38000005882254692ae0000 - {e=>217147655,a=>26,d=>5,c=>6,h=>7725,b=>4,g=>1,f=>2} 1a000000740100000769f12cb5780000 1a00000000000000740100000769f12cb578000000000000 1a00000000000000740100000769f12cb578000000000000 0000001a9a800000cf1690747c5a0000 1a000000740100000769f12cb5780000 1a000000740100000769f12cb5780000 000000000000001a9a800000cf1690747c5a000000000000 1a000000740100000769f12cb5780000 0000001a9a800000cf1690747c5a0000 - {e=>94483661,a=>-122,d=>7,c=>6,h=>3773,b=>6,g=>2,f=>7} 86fffffff6010000cdb4a175f63a0000 86fffffffffffffff6010000cdb4a175f63a000000000000 86fffffffffffffff6010000cdb4a175f63a000000000000 ffffff86db8000005a1b4cde9d7a0000 86fffffff6010000cdb4a175f63a0000 86fffffff6010000cdb4a175f63a0000 ffffffffffffff86db8000005a1b4cde9d7a000000000000 86fffffff6010000cdb4a175f63a0000 ffffff86db8000005a1b4cde9d7a0000 - {e=>255972856,a=>-65,d=>4,c=>6,h=>4167,b=>3,g=>2,f=>7} bfffffff33010000f8d5417f1e410000 bfffffffffffffff33010000f8d5417f1e41000000000000 bfffffffffffffff33010000f8d5417f1e41000000000000 ffffffbf7a000000f41d5f8ea08e0000 bfffffff33010000f8d5417f1e410000 bfffffff33010000f8d5417f1e410000 ffffffffffffffbf7a000000f41d5f8ea08e000000000000 bfffffff33010000f8d5417f1e410000 ffffffbf7a000000f41d5f8ea08e0000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>236368736,a=>50,d=>0,c=>0,h=>550,b=>0,g=>3,f=>2,i=>115} 320000000000000060b3162e9b087300 32000000000000000000000060b3162e9b08730000000000 32000000000000000000000060b3162e9b08730000000000 0000003200000000e16b3604c44c7300 320000000000000060b3162e9b087300 320000000000000060b3162e9b087300 000000000000003200000000e16b3604c44c730000000000 320000000000000060b3162e9b087300 0000003200000000e16b3604c44c7300 - {e=>88524857,a=>-90,d=>2,c=>1,h=>306,b=>4,g=>3,f=>5,i=>249} a6ffffff8c00000039c84655cb04f900 a6ffffffffffffff8c00000039c84655cb04f90000000000 a6ffffffffffffff8c00000039c84655cb04f90000000000 ffffffa685000000546c839ac264f900 a6ffffff8c00000039c84655cb04f900 a6ffffff8c00000039c84655cb04f900 ffffffffffffffa685000000546c839ac264f90000000000 a6ffffff8c00000039c84655cb04f900 ffffffa685000000546c839ac264f900 - {e=>192500988,a=>-84,d=>1,c=>2,h=>5667,b=>5,g=>0,f=>5,i=>178} acffffff55000000fc54795b8c58b200 acffffffffffffff55000000fc54795b8c58b20000000000 acffffffffffffff55000000fc54795b8c58b20000000000 ffffffaca8800000b7954fca2c46b200 acffffff55000000fc54795b8c58b200 acffffff55000000fc54795b8c58b200 ffffffffffffffaca8800000b7954fca2c46b20000000000 acffffff55000000fc54795b8c58b200 ffffffaca8800000b7954fca2c46b200 - {e=>102319901,a=>48,d=>6,c=>5,h=>4809,b=>5,g=>0,f=>5,i=>243} 30000000ad0100001d471956244bf300 3000000000000000ad0100001d471956244bf30000000000 3000000000000000ad0100001d471956244bf30000000000 00000030b7000000619471da2592f300 30000000ad0100001d471956244bf300 30000000ad0100001d471956244bf300 0000000000000030b7000000619471da2592f30000000000 30000000ad0100001d471956244bf300 00000030b7000000619471da2592f300 - {e=>105125875,a=>-48,d=>6,c=>2,h=>3701,b=>4,g=>0,f=>6,i=>134} d0ffffff94010000f3174466d4398600 d0ffffffffffffff94010000f3174466d439860000000000 d0ffffffffffffff94010000f3174466d439860000000000 ffffffd08b00000064417f3c1cea8600 d0ffffff94010000f3174466d4398600 d0ffffff94010000f3174466d4398600 ffffffffffffffd08b00000064417f3c1cea860000000000 d0ffffff94010000f3174466d4398600 ffffffd08b00000064417f3c1cea8600 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; }; - {a=>7} 07 07 07 e0 07000000 07 e0 07 e0 - {a=>4} 04 04 04 80 04000000 04 80 04 80 - {a=>4} 04 04 04 80 04000000 04 80 04 80 - {a=>7} 07 07 07 e0 07000000 07 e0 07 e0 - {a=>1} 01 01 01 20 01000000 01 20 01 20 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; }; - {a=>6,b=>7} 3e 3e 3e dc 3e000000 3e dc 3e dc - {a=>6,b=>0} 06 06 06 c0 06000000 06 c0 06 c0 - {a=>1,b=>6} 31 31 31 38 31000000 31 38 31 38 - {a=>3,b=>4} 23 23 23 70 23000000 23 70 23 70 - {a=>5,b=>5} 2d 2d 2d b4 2d000000 2d b4 2d b4 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>6,a=>3,b=>3} 9b01 9b01 9b01 6f00 9b010000 9b01 6f00 9b01 6f00 - {c=>2,a=>6,b=>1} 8e00 8e00 8e00 c500 8e000000 8e00 c500 8e00 c500 - {c=>6,a=>4,b=>1} 8c01 8c01 8c01 8700 8c010000 8c01 8700 8c01 8700 - {c=>2,a=>1,b=>0} 8100 8100 8100 2100 81000000 8100 2100 8100 2100 - {c=>7,a=>4,b=>7} fc01 fc01 fc01 9f80 fc010000 fc01 9f80 fc01 9f80 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>1,a=>4,b=>4,d=>133269742} 64000000ee88f107 64000000ee88f107 64000000ee88f107 908000007f188ee0 64000000ee88f107 64000000ee88f107 908000007f188ee0 64000000ee88f107 908000007f188ee0 - {c=>3,a=>7,b=>1,d=>257081784} cf000000b8c1520f cf000000b8c1520f cf000000b8c1520f e5800000f52c1b80 cf000000b8c1520f cf000000b8c1520f e5800000f52c1b80 cf000000b8c1520f e5800000f52c1b80 - {c=>0,a=>7,b=>6,d=>258403104} 3700000020eb660f 3700000020eb660f 3700000020eb660f f8000000f66eb200 3700000020eb660f 3700000020eb660f f8000000f66eb200 3700000020eb660f f8000000f66eb200 - {c=>5,a=>7,b=>0,d=>128978242} 47010000420db007 47010000420db007 47010000420db007 e28000007b00d420 47010000420db007 47010000420db007 e28000007b00d420 47010000420db007 e28000007b00d420 - {c=>5,a=>0,b=>4,d=>243031951} 600100008f5f7c0e 600100008f5f7c0e 600100008f5f7c0e 12800000e7c5f8f0 600100008f5f7c0e 600100008f5f7c0e 12800000e7c5f8f0 600100008f5f7c0e 12800000e7c5f8f0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>0,c=>2,a=>6,b=>7,d=>33702724} be00000044430202 be00000044430202 be00000044430202 dd00000020243440 be00000044430202 be00000044430202 dd00000020243440 be00000044430202 dd00000020243440 - {e=>2,c=>5,a=>5,b=>2,d=>6095297} 55010000c1015d20 55010000c1015d20 55010000c1015d20 aa80000005d01c14 55010000c1015d20 55010000c1015d20 aa80000005d01c14 55010000c1015d20 aa80000005d01c14 - {e=>4,c=>4,a=>4,b=>6,d=>213519559} 34010000c70cba4c 34010000c70cba4c 34010000c70cba4c 9a000000cba0cc78 34010000c70cba4c 34010000c70cba4c 9a000000cba0cc78 34010000c70cba4c 9a000000cba0cc78 - {e=>5,c=>2,a=>7,b=>5,d=>18462540} af0000004cb71951 af0000004cb71951 af0000004cb71951 f5000000119b74ca af0000004cb71951 af0000004cb71951 f5000000119b74ca af0000004cb71951 f5000000119b74ca - {e=>1,c=>6,a=>1,b=>7,d=>89059346} b901000012f04e15 b901000012f04e15 b901000012f04e15 3f00000054ef0122 b901000012f04e15 b901000012f04e15 3f00000054ef0122 b901000012f04e15 3f00000054ef0122 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>5,c=>1,a=>7,b=>1,d=>136757511,f=>1} 4f00000007c1265801000000 4f00000007c1265801000000 4f00000007c1265801000000 e4800000826c107a40000000 4f00000007c1265801000000 4f00000007c1265801000000 e4800000826c107a40000000 4f00000007c1265801000000 e4800000826c107a40000000 - {e=>0,c=>4,a=>7,b=>4,d=>125709169,f=>0} 27010000712b7e0700000000 27010000712b7e0700000000 27010000712b7e0700000000 f200000077e2b71000000000 27010000712b7e0700000000 27010000712b7e0700000000 f200000077e2b71000000000 27010000712b7e0700000000 f200000077e2b71000000000 - {e=>4,c=>6,a=>4,b=>0,d=>58396282,f=>2} 840100007a0e7b4302000000 840100007a0e7b4302000000 840100007a0e7b4302000000 8300000037b0e7a880000000 840100007a0e7b4302000000 840100007a0e7b4302000000 8300000037b0e7a880000000 840100007a0e7b4302000000 8300000037b0e7a880000000 - {e=>0,c=>7,a=>2,b=>1,d=>156900784,f=>0} ca010000b01d5a0900000000 ca010000b01d5a0900000000 ca010000b01d5a0900000000 4780000095a1db0000000000 ca010000b01d5a0900000000 ca010000b01d5a0900000000 4780000095a1db0000000000 ca010000b01d5a0900000000 4780000095a1db0000000000 - {e=>6,c=>5,a=>4,b=>0,d=>153791533,f=>0} 440100002dac2a6900000000 440100002dac2a6900000000 440100002dac2a6900000000 8280000092aac2dc00000000 440100002dac2a6900000000 440100002dac2a6900000000 8280000092aac2dc00000000 440100002dac2a6900000000 8280000092aac2dc00000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>4,c=>6,a=>0,g=>3159,b=>3,d=>201444973,f=>3} 980100006dce014c5f310000 980100006dce014c5f310000 980100006dce014c5f310000 0f000000c01ce6d8d8ae0000 980100006dce014c5f310000 980100006dce014c5f310000 0f000000c01ce6d8d8ae0000 980100006dce014c5f310000 0f000000c01ce6d8d8ae0000 - {e=>3,c=>5,a=>2,g=>1311,b=>0,d=>216985875,f=>0} 4201000013f1ee3c7c140000 4201000013f1ee3c7c140000 4201000013f1ee3c7c140000 42800000ceef11360a3e0000 4201000013f1ee3c7c140000 4201000013f1ee3c7c140000 42800000ceef11360a3e0000 4201000013f1ee3c7c140000 42800000ceef11360a3e0000 - {e=>4,c=>1,a=>4,g=>4089,b=>3,d=>90392677,f=>2} 5c00000065486345e63f0000 5c00000065486345e63f0000 5c00000065486345e63f0000 8c800000563486589ff20000 5c00000065486345e63f0000 5c00000065486345e63f0000 8c800000563486589ff20000 5c00000065486345e63f0000 8c800000563486589ff20000 - {e=>4,c=>6,a=>2,g=>6577,b=>0,d=>32952048,f=>2} 82010000f0cef641c6660000 82010000f0cef641c6660000 82010000f0cef641c6660000 430000001f6cef08b3620000 82010000f0cef641c6660000 82010000f0cef641c6660000 430000001f6cef08b3620000 82010000f0cef641c6660000 430000001f6cef08b3620000 - {e=>6,c=>3,a=>2,g=>5134,b=>2,d=>70582675,f=>0} d20000009301356438500000 d20000009301356438500000 d20000009301356438500000 498000004350193c281c0000 d20000009301356438500000 d20000009301356438500000 498000004350193c281c0000 d20000009301356438500000 498000004350193c281c0000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>4,a=>7,d=>66200696,c=>5,h=>31,b=>4,g=>6484,f=>1} 670100007824f24351651f00 670100007824f24351651f00 670100007824f24351651f00 f28000003f22478872a81f00 670100007824f24351651f00 670100007824f24351651f00 f28000003f22478872a81f00 670100007824f24351651f00 f28000003f22478872a81f00 - {e=>3,a=>0,d=>142854848,c=>3,h=>30,b=>3,g=>2350,f=>3} d8000000c0ca8338bb241e00 d8000000c0ca8338bb241e00 d8000000c0ca8338bb241e00 0d800000883cac06d25c1e00 d8000000c0ca8338bb241e00 d8000000c0ca8338bb241e00 0d800000883cac06d25c1e00 d8000000c0ca8338bb241e00 0d800000883cac06d25c1e00 - {e=>0,a=>3,d=>178180283,c=>3,h=>162,b=>2,g=>1577,f=>2} d3000000bbd09e0aa618a200 d3000000bbd09e0aa618a200 d3000000bbd09e0aa618a200 69800000a9ed0bb08c52a200 d3000000bbd09e0aa618a200 d3000000bbd09e0aa618a200 69800000a9ed0bb08c52a200 d3000000bbd09e0aa618a200 69800000a9ed0bb08c52a200 - {e=>7,a=>3,d=>71770977,c=>0,h=>159,b=>4,g=>2221,f=>2} 2300000061234774b6229f00 2300000061234774b6229f00 2300000061234774b6229f00 700000004472361e915a9f00 2300000061234774b6229f00 2300000061234774b6229f00 700000004472361e915a9f00 2300000061234774b6229f00 700000004472361e915a9f00 - {e=>3,a=>7,d=>209718566,c=>4,h=>184,b=>0,g=>4011,f=>3} 07010000260d803caf3eb800 07010000260d803caf3eb800 07010000260d803caf3eb800 e2000000c800d266df56b800 07010000260d803caf3eb800 07010000260d803caf3eb800 e2000000c800d266df56b800 07010000260d803caf3eb800 e2000000c800d266df56b800 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; }; - {a=>-101,b=>3} 9b03 9b03 9b03 9b60 9b030000 9b03 9b60 9b03 9b60 - {a=>-121,b=>0} 8700 8700 8700 8700 87000000 8700 8700 8700 8700 - {a=>49,b=>5} 3105 3105 3105 31a0 31050000 3105 31a0 3105 31a0 - {a=>-18,b=>5} ee05 ee05 ee05 eea0 ee050000 ee05 eea0 ee05 eea0 - {a=>-28,b=>7} e407 e407 e407 e4e0 e4070000 e407 e4e0 e407 e4e0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-95,b=>6} a12e a12e a12e a1d4 a12e0000 a12e a1d4 a12e a1d4 - {c=>3,a=>105,b=>5} 691d 691d 691d 69ac 691d0000 691d 69ac 691d 69ac - {c=>5,a=>-88,b=>7} a82f a82f a82f a8f4 a82f0000 a82f a8f4 a82f a8f4 - {c=>3,a=>-100,b=>0} 9c18 9c18 9c18 9c0c 9c180000 9c18 9c0c 9c18 9c0c - {c=>0,a=>-15,b=>0} f100 f100 f100 f100 f1000000 f100 f100 f100 f100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>1,a=>78,b=>7,d=>5} 4e0f0500 4e0f0500 4e0f0500 4ee4a000 4e0f0500 4e0f0500 4ee4a000 4e0f0500 4ee4a000 - {c=>4,a=>18,b=>5,d=>2} 12250200 12250200 12250200 12b04000 12250200 12250200 12b04000 12250200 12b04000 - {c=>7,a=>56,b=>5,d=>0} 383d0000 383d0000 383d0000 38bc0000 383d0000 383d0000 38bc0000 383d0000 38bc0000 - {c=>5,a=>-82,b=>5,d=>1} ae2d0100 ae2d0100 ae2d0100 aeb42000 ae2d0100 ae2d0100 aeb42000 ae2d0100 aeb42000 - {c=>7,a=>60,b=>6,d=>5} 3c3e0500 3c3e0500 3c3e0500 3cdca000 3c3e0500 3c3e0500 3cdca000 3c3e0500 3cdca000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>221131133,c=>6,a=>105,b=>3,d=>0} 693300007d312e0d 693300007d312e0d 693300007d312e0d 69780000d2e317d0 693300007d312e0d 693300007d312e0d 69780000d2e317d0 693300007d312e0d 69780000d2e317d0 - {e=>105130068,c=>7,a=>43,b=>7,d=>4} 2b3f040054284406 2b3f040054284406 2b3f040054284406 2bfc800064428540 2b3f040054284406 2b3f040054284406 2bfc800064428540 2b3f040054284406 2bfc800064428540 - {e=>200295387,c=>7,a=>95,b=>0,d=>4} 5f380400db43f00b 5f380400db43f00b 5f380400db43f00b 5f1c8000bf043db0 5f380400db43f00b 5f380400db43f00b 5f1c8000bf043db0 5f380400db43f00b 5f1c8000bf043db0 - {e=>204864432,c=>4,a=>121,b=>0,d=>5} 79200500b0fb350c 79200500b0fb350c 79200500b0fb350c 7910a000c35fbb00 79200500b0fb350c 79200500b0fb350c 7910a000c35fbb00 79200500b0fb350c 7910a000c35fbb00 - {e=>116121104,c=>3,a=>-77,b=>7,d=>7} b31f070010deeb06 b31f070010deeb06 b31f070010deeb06 b3ece0006ebde100 b31f070010deeb06 b31f070010deeb06 b3ece0006ebde100 b31f070010deeb06 b3ece0006ebde100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>172836301,c=>0,a=>32,b=>7,d=>6,f=>3} 20070600cd454d3a 20070600cd454d3a 20070600cd454d3a 20e0c000a4d45cd6 20070600cd454d3a 20070600cd454d3a 20e0c000a4d45cd6 20070600cd454d3a 20e0c000a4d45cd6 - {e=>127428220,c=>5,a=>-44,b=>2,d=>7,f=>1} d42a07007c669817 d42a07007c669817 d42a07007c669817 d454e000798667c2 d42a07007c669817 d42a07007c669817 d454e000798667c2 d42a07007c669817 d454e000798667c2 - {e=>422562,c=>0,a=>60,b=>7,d=>1,f=>2} 3c070100a2720620 3c070100a2720620 3c070100a2720620 3ce0200000672a24 3c070100a2720620 3c070100a2720620 3ce0200000672a24 3c070100a2720620 3ce0200000672a24 - {e=>96278787,c=>7,a=>3,b=>7,d=>2,f=>0} 033f02000319bd05 033f02000319bd05 033f02000319bd05 03fc40005bd19030 033f02000319bd05 033f02000319bd05 03fc40005bd19030 033f02000319bd05 03fc40005bd19030 - {e=>241856194,c=>3,a=>-107,b=>0,d=>6,f=>5} 95180600c26e6a5e 95180600c26e6a5e 95180600c26e6a5e 950cc000e6a6ec2a 95180600c26e6a5e 95180600c26e6a5e 950cc000e6a6ec2a 95180600c26e6a5e 950cc000e6a6ec2a = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>239818291,c=>6,a=>50,g=>2,b=>1,d=>2,f=>7} 3231020033564b7e02000000 3231020033564b7e02000000 3231020033564b7e02000000 32384000e4b5633e80000000 3231020033564b7e02000000 3231020033564b7e02000000 32384000e4b5633e80000000 3231020033564b7e02000000 32384000e4b5633e80000000 - {e=>27118579,c=>2,a=>-3,g=>0,b=>0,d=>4,f=>5} fd100400f3cb9d5100000000 fd100400f3cb9d5100000000 fd100400f3cb9d5100000000 fd08800019dcbf3a00000000 fd100400f3cb9d5100000000 fd100400f3cb9d5100000000 fd08800019dcbf3a00000000 fd100400f3cb9d5100000000 fd08800019dcbf3a00000000 - {e=>134242001,c=>3,a=>59,g=>3,b=>5,d=>5,f=>6} 3b1d0500d15e006803000000 3b1d0500d15e006803000000 3b1d0500d15e006803000000 3baca0008005ed1cc0000000 3b1d0500d15e006803000000 3b1d0500d15e006803000000 3baca0008005ed1cc0000000 3b1d0500d15e006803000000 3baca0008005ed1cc0000000 - {e=>65328260,c=>1,a=>-116,g=>1,b=>5,d=>4,f=>3} 8c0d040084d4e43301000000 8c0d040084d4e43301000000 8c0d040084d4e43301000000 8ca480003e4d484640000000 8c0d040084d4e43301000000 8c0d040084d4e43301000000 8ca480003e4d484640000000 8c0d040084d4e43301000000 8ca480003e4d484640000000 - {e=>139743207,c=>3,a=>-41,g=>1,b=>3,d=>1,f=>6} d71b0100e74f546801000000 d71b0100e74f546801000000 d71b0100e74f546801000000 d76c20008544fe7c40000000 d71b0100e74f546801000000 d71b0100e74f546801000000 d76c20008544fe7c40000000 d71b0100e74f546801000000 d76c20008544fe7c40000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>230124716,a=>16,d=>7,c=>1,h=>3908,b=>7,g=>2,f=>7} 100f0700ac6cb77d123d0000 100f0700ac6cb77d123d0000 100f0700ac6cb77d123d0000 10e4e000db76cace9e880000 100f0700ac6cb77d123d0000 100f0700ac6cb77d123d0000 10e4e000db76cace9e880000 100f0700ac6cb77d123d0000 10e4e000db76cace9e880000 - {e=>124232976,a=>64,d=>4,c=>0,h=>5030,b=>2,g=>3,f=>4} 4002040010a567479b4e0000 4002040010a567479b4e0000 4002040010a567479b4e0000 40408000767a5108e74c0000 4002040010a567479b4e0000 4002040010a567479b4e0000 40408000767a5108e74c0000 4002040010a567479b4e0000 40408000767a5108e74c0000 - {e=>239963925,a=>67,d=>1,c=>5,h=>5257,b=>4,g=>2,f=>4} 432c0100158f4d4e26520000 432c0100158f4d4e26520000 432c0100158f4d4e26520000 43942000e4d8f158a9120000 432c0100158f4d4e26520000 432c0100158f4d4e26520000 43942000e4d8f158a9120000 432c0100158f4d4e26520000 43942000e4d8f158a9120000 - {e=>119523408,a=>-65,d=>2,c=>5,h=>4247,b=>2,g=>2,f=>3} bf2a020050c81f375e420000 bf2a020050c81f375e420000 bf2a020050c81f375e420000 bf54400071fc8506a12e0000 bf2a020050c81f375e420000 bf2a020050c81f375e420000 bf54400071fc8506a12e0000 bf2a020050c81f375e420000 bf54400071fc8506a12e0000 - {e=>9728961,a=>51,d=>5,c=>0,h=>2851,b=>7,g=>0,f=>4} 33070500c17394408c2c0000 33070500c17394408c2c0000 33070500c17394408c2c0000 33e0a00009473c1816460000 33070500c17394408c2c0000 33070500c17394408c2c0000 33e0a00009473c1816460000 33070500c17394408c2c0000 33e0a00009473c1816460000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>180027965,a=>92,d=>2,c=>4,h=>1057,b=>1,g=>1,f=>0,i=>60} 5c2102003d02bb0a85103c00 5c2102003d02bb0a85103c00 5c2102003d02bb0a85103c00 5c304000abb023d048423c00 5c2102003d02bb0a85103c00 5c2102003d02bb0a85103c00 5c304000abb023d048423c00 5c2102003d02bb0a85103c00 5c304000abb023d048423c00 - {e=>231855491,a=>-124,d=>6,c=>4,h=>1682,b=>7,g=>0,f=>6,i=>222} 8427060083d5d16d481ade00 8427060083d5d16d481ade00 8427060083d5d16d481ade00 84f0c000dd1d583c0d24de00 8427060083d5d16d481ade00 8427060083d5d16d481ade00 84f0c000dd1d583c0d24de00 8427060083d5d16d481ade00 84f0c000dd1d583c0d24de00 - {e=>14781907,a=>-124,d=>1,c=>0,h=>7235,b=>7,g=>0,f=>3,i=>179} 84070100d38de1300c71b300 84070100d38de1300c71b300 84070100d38de1300c71b300 84e020000e18dd363886b300 84070100d38de1300c71b300 84070100d38de1300c71b300 84e020000e18dd363886b300 84070100d38de1300c71b300 84e020000e18dd363886b300 - {e=>268185659,a=>-127,d=>4,c=>0,h=>4094,b=>2,g=>3,f=>7,i=>166} 810204003b30fc7ffb3fa600 810204003b30fc7ffb3fa600 810204003b30fc7ffb3fa600 81408000ffc303bedffca600 810204003b30fc7ffb3fa600 810204003b30fc7ffb3fa600 81408000ffc303bedffca600 810204003b30fc7ffb3fa600 81408000ffc303bedffca600 - {e=>102826413,a=>-10,d=>2,c=>6,h=>6758,b=>6,g=>2,f=>7,i=>80} f6360200ad0121769a695000 f6360200ad0121769a695000 f6360200ad0121769a695000 f6d8400062101adeb4cc5000 f6360200ad0121769a695000 f6360200ad0121769a695000 f6d8400062101adeb4cc5000 f6360200ad0121769a695000 f6d8400062101adeb4cc5000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; }; - {a=>-45,b=>6} d3ff0600 d3ff0600 d3ff0600 ffd3c000 d3ff0600 d3ff0600 ffd3c000 d3ff0600 ffd3c000 - {a=>-32,b=>7} e0ff0700 e0ff0700 e0ff0700 ffe0e000 e0ff0700 e0ff0700 ffe0e000 e0ff0700 ffe0e000 - {a=>43,b=>2} 2b000200 2b000200 2b000200 002b4000 2b000200 2b000200 002b4000 2b000200 002b4000 - {a=>8,b=>3} 08000300 08000300 08000300 00086000 08000300 08000300 00086000 08000300 00086000 - {a=>-1,b=>1} ffff0100 ffff0100 ffff0100 ffff2000 ffff0100 ffff0100 ffff2000 ffff0100 ffff2000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>126,b=>7} 7e002f00 7e002f00 7e002f00 007ef400 7e002f00 7e002f00 007ef400 7e002f00 007ef400 - {c=>4,a=>-38,b=>6} daff2600 daff2600 daff2600 ffdad000 daff2600 daff2600 ffdad000 daff2600 ffdad000 - {c=>3,a=>-19,b=>2} edff1a00 edff1a00 edff1a00 ffed4c00 edff1a00 edff1a00 ffed4c00 edff1a00 ffed4c00 - {c=>0,a=>26,b=>4} 1a000400 1a000400 1a000400 001a8000 1a000400 1a000400 001a8000 1a000400 001a8000 - {c=>4,a=>125,b=>4} 7d002400 7d002400 7d002400 007d9000 7d002400 7d002400 007d9000 7d002400 007d9000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>66,b=>0,d=>6} 4200a001 4200a001 4200a001 00421300 4200a001 4200a001 00421300 4200a001 00421300 - {c=>3,a=>-65,b=>7,d=>5} bfff5f01 bfff5f01 bfff5f01 ffbfee80 bfff5f01 bfff5f01 ffbfee80 bfff5f01 ffbfee80 - {c=>5,a=>42,b=>5,d=>4} 2a002d01 2a002d01 2a002d01 002ab600 2a002d01 2a002d01 002ab600 2a002d01 002ab600 - {c=>1,a=>-96,b=>4,d=>5} a0ff4c01 a0ff4c01 a0ff4c01 ffa08680 a0ff4c01 a0ff4c01 ffa08680 a0ff4c01 ffa08680 - {c=>2,a=>-85,b=>0,d=>4} abff1001 abff1001 abff1001 ffab0a00 abff1001 abff1001 ffab0a00 abff1001 ffab0a00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>144118602,c=>6,a=>-68,b=>2,d=>5} bcff72014a139708 bcff72014a139708 bcff72014a139708 ffbc5a80897134a0 bcff72014a139708 bcff72014a139708 ffbc5a80897134a0 bcff72014a139708 ffbc5a80897134a0 - {e=>194550170,c=>1,a=>-13,b=>2,d=>6} f3ff8a019a99980b f3ff8a019a99980b f3ff8a019a99980b fff34700b98999a0 f3ff8a019a99980b f3ff8a019a99980b fff34700b98999a0 f3ff8a019a99980b fff34700b98999a0 - {e=>80715514,c=>4,a=>100,b=>3,d=>0} 64002300fa9ecf04 64002300fa9ecf04 64002300fa9ecf04 006470004cf9efa0 64002300fa9ecf04 64002300fa9ecf04 006470004cf9efa0 64002300fa9ecf04 006470004cf9efa0 - {e=>265138084,c=>6,a=>37,b=>2,d=>0} 25003200a4afcd0f 25003200a4afcd0f 25003200a4afcd0f 00255800fcdafa40 25003200a4afcd0f 25003200a4afcd0f 00255800fcdafa40 25003200a4afcd0f 00255800fcdafa40 - {e=>222887293,c=>6,a=>11,b=>1,d=>5} 0b0071017dfd480d 0b0071017dfd480d 0b0071017dfd480d 000b3a80d48fd7d0 0b0071017dfd480d 0b0071017dfd480d 000b3a80d48fd7d0 0b0071017dfd480d 000b3a80d48fd7d0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>18626280,c=>1,a=>-46,b=>5,d=>7,f=>5} d2ffcd01e8361c51 d2ffcd01e8361c51 d2ffcd01e8361c51 ffd2a78011c36e8a d2ffcd01e8361c51 d2ffcd01e8361c51 ffd2a78011c36e8a d2ffcd01e8361c51 ffd2a78011c36e8a - {e=>65331951,c=>5,a=>-123,b=>1,d=>4,f=>2} 85ff2901efe2e423 85ff2901efe2e423 85ff2901efe2e423 ff8536003e4e2ef4 85ff2901efe2e423 85ff2901efe2e423 ff8536003e4e2ef4 85ff2901efe2e423 ff8536003e4e2ef4 - {e=>22199225,c=>6,a=>19,b=>2,d=>4,f=>0} 13003201b9bb5201 13003201b9bb5201 13003201b9bb5201 00135a00152bbb90 13003201b9bb5201 13003201b9bb5201 00135a00152bbb90 13003201b9bb5201 00135a00152bbb90 - {e=>9181650,c=>6,a=>56,b=>1,d=>0,f=>5} 38003100d2198c50 38003100d2198c50 38003100d2198c50 0038380008c19d2a 38003100d2198c50 38003100d2198c50 0038380008c19d2a 38003100d2198c50 0038380008c19d2a - {e=>157034625,c=>6,a=>76,b=>0,d=>2,f=>5} 4c00b00081285c59 4c00b00081285c59 4c00b00081285c59 004c190095c2881a 4c00b00081285c59 4c00b00081285c59 004c190095c2881a 4c00b00081285c59 004c190095c2881a = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>267203857,c=>2,a=>90,g=>1,b=>5,d=>0,f=>2} 5a0015001135ed2f01000000 5a0015001135ed2f01000000 5a0015001135ed2f01000000 005aa800fed3511440000000 5a0015001135ed2f01000000 5a0015001135ed2f01000000 005aa800fed3511440000000 5a0015001135ed2f01000000 005aa800fed3511440000000 - {e=>138564760,c=>2,a=>-49,g=>2,b=>4,d=>6,f=>3} cfff94019854423802000000 cfff94019854423802000000 cfff94019854423802000000 ffcf8b008425498680000000 cfff94019854423802000000 cfff94019854423802000000 ffcf8b008425498680000000 cfff94019854423802000000 ffcf8b008425498680000000 - {e=>91970329,c=>6,a=>-122,g=>1,b=>1,d=>3,f=>0} 86fff100195b7b0501000000 86fff100195b7b0501000000 86fff100195b7b0501000000 ff86398057b5b19040000000 86fff100195b7b0501000000 86fff100195b7b0501000000 ff86398057b5b19040000000 86fff100195b7b0501000000 ff86398057b5b19040000000 - {e=>102576163,c=>7,a=>39,g=>1,b=>0,d=>2,f=>6} 2700b80023301d6601000000 2700b80023301d6601000000 2700b80023301d6601000000 00271d0061d3023c40000000 2700b80023301d6601000000 2700b80023301d6601000000 00271d0061d3023c40000000 2700b80023301d6601000000 00271d0061d3023c40000000 - {e=>263662536,c=>3,a=>-27,g=>1,b=>3,d=>4,f=>5} e5ff1b01c82bb75f01000000 e5ff1b01c82bb75f01000000 e5ff1b01c82bb75f01000000 ffe56e00fb72bc8a40000000 e5ff1b01c82bb75f01000000 e5ff1b01c82bb75f01000000 ffe56e00fb72bc8a40000000 e5ff1b01c82bb75f01000000 ffe56e00fb72bc8a40000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>194432513,a=>30,d=>2,c=>2,h=>1472,b=>2,g=>1,f=>3} 1e00920001ce963b01170000 1e00920001ce963b01170000 1e00920001ce963b01170000 001e4900b96ce0164b800000 1e00920001ce963b01170000 1e00920001ce963b01170000 001e4900b96ce0164b800000 1e00920001ce963b01170000 001e4900b96ce0164b800000 - {e=>90729129,a=>18,d=>7,c=>0,h=>7366,b=>1,g=>1,f=>4} 1200c101a96a684519730000 1200c101a96a684519730000 1200c101a96a684519730000 001223805686aa98798c0000 1200c101a96a684519730000 1200c101a96a684519730000 001223805686aa98798c0000 1200c101a96a684519730000 001223805686aa98798c0000 - {e=>241644573,a=>75,d=>6,c=>6,h=>2932,b=>7,g=>3,f=>1} 4b00b7011d34671ed32d0000 4b00b7011d34671ed32d0000 4b00b7011d34671ed32d0000 004bfb00e67341d2d6e80000 4b00b7011d34671ed32d0000 4b00b7011d34671ed32d0000 004bfb00e67341d2d6e80000 4b00b7011d34671ed32d0000 004bfb00e67341d2d6e80000 - {e=>176079331,a=>31,d=>2,c=>1,h=>4829,b=>6,g=>2,f=>2} 1f008e00e3c17e2a764b0000 1f008e00e3c17e2a764b0000 1f008e00e3c17e2a764b0000 001fc500a7ec1e34a5ba0000 1f008e00e3c17e2a764b0000 1f008e00e3c17e2a764b0000 001fc500a7ec1e34a5ba0000 1f008e00e3c17e2a764b0000 001fc500a7ec1e34a5ba0000 - {e=>239368188,a=>55,d=>5,c=>3,h=>1857,b=>6,g=>3,f=>7} 37005e01fc77447e071d0000 37005e01fc77447e071d0000 37005e01fc77447e071d0000 0037ce80e4477fcece820000 37005e01fc77447e071d0000 37005e01fc77447e071d0000 0037ce80e4477fcece820000 37005e01fc77447e071d0000 0037ce80e4477fcece820000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>108438729,a=>58,d=>1,c=>1,h=>5562,b=>0,g=>0,f=>6,i=>192} 3a004800c9a47666e856c000 3a004800c9a47666e856c000 3a004800c9a47666e856c000 003a0480676a4c9c2b74c000 3a004800c9a47666e856c000 3a004800c9a47666e856c000 003a0480676a4c9c2b74c000 3a004800c9a47666e856c000 003a0480676a4c9c2b74c000 - {e=>5753109,a=>98,d=>6,c=>2,h=>3842,b=>0,g=>1,f=>4,i=>170} 6200900115c95740093caa00 6200900115c95740093caa00 6200900115c95740093caa00 00620b00057c91585e04aa00 6200900115c95740093caa00 6200900115c95740093caa00 00620b00057c91585e04aa00 6200900115c95740093caa00 00620b00057c91585e04aa00 - {e=>152483984,a=>118,d=>4,c=>6,h=>3538,b=>4,g=>1,f=>6,i=>229} 7600340190b816694937e500 7600340190b816694937e500 7600340190b816694937e500 00769a00916b890c5ba4e500 7600340190b816694937e500 7600340190b816694937e500 00769a00916b890c5ba4e500 7600340190b816694937e500 00769a00916b890c5ba4e500 - {e=>54363077,a=>36,d=>6,c=>6,h=>7156,b=>2,g=>1,f=>3,i=>92} 2400b201c5833d33d16f5c00 2400b201c5833d33d16f5c00 2400b201c5833d33d16f5c00 00245b0033d83c5677e85c00 2400b201c5833d33d16f5c00 2400b201c5833d33d16f5c00 00245b0033d83c5677e85c00 2400b201c5833d33d16f5c00 00245b0033d83c5677e85c00 - {e=>73602633,a=>-19,d=>3,c=>5,h=>1654,b=>6,g=>2,f=>6,i=>188} edffee0049166364da19bc00 edffee0049166364da19bc00 edffee0049166364da19bc00 ffedd5804631649c8cecbc00 edffee0049166364da19bc00 edffee0049166364da19bc00 ffedd5804631649c8cecbc00 edffee0049166364da19bc00 ffedd5804631649c8cecbc00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; }; - {a=>31,b=>7} 1f00000007000000 1f00000007000000 1f00000007000000 0000001fe0000000 1f00000007000000 1f00000007000000 0000001fe0000000 1f00000007000000 0000001fe0000000 - {a=>70,b=>7} 4600000007000000 4600000007000000 4600000007000000 00000046e0000000 4600000007000000 4600000007000000 00000046e0000000 4600000007000000 00000046e0000000 - {a=>-101,b=>4} 9bffffff04000000 9bffffff04000000 9bffffff04000000 ffffff9b80000000 9bffffff04000000 9bffffff04000000 ffffff9b80000000 9bffffff04000000 ffffff9b80000000 - {a=>111,b=>2} 6f00000002000000 6f00000002000000 6f00000002000000 0000006f40000000 6f00000002000000 6f00000002000000 0000006f40000000 6f00000002000000 0000006f40000000 - {a=>-80,b=>3} b0ffffff03000000 b0ffffff03000000 b0ffffff03000000 ffffffb060000000 b0ffffff03000000 b0ffffff03000000 ffffffb060000000 b0ffffff03000000 ffffffb060000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>7,a=>76,b=>1} 4c00000039000000 4c00000039000000 4c00000039000000 0000004c3c000000 4c00000039000000 4c00000039000000 0000004c3c000000 4c00000039000000 0000004c3c000000 - {c=>6,a=>52,b=>5} 3400000035000000 3400000035000000 3400000035000000 00000034b8000000 3400000035000000 3400000035000000 00000034b8000000 3400000035000000 00000034b8000000 - {c=>4,a=>-96,b=>4} a0ffffff24000000 a0ffffff24000000 a0ffffff24000000 ffffffa090000000 a0ffffff24000000 a0ffffff24000000 ffffffa090000000 a0ffffff24000000 ffffffa090000000 - {c=>4,a=>16,b=>5} 1000000025000000 1000000025000000 1000000025000000 00000010b0000000 1000000025000000 1000000025000000 00000010b0000000 1000000025000000 00000010b0000000 - {c=>5,a=>-115,b=>3} 8dffffff2b000000 8dffffff2b000000 8dffffff2b000000 ffffff8d74000000 8dffffff2b000000 8dffffff2b000000 ffffff8d74000000 8dffffff2b000000 ffffff8d74000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-95,b=>1,d=>3} a1ffffffd9000000 a1ffffffd9000000 a1ffffffd9000000 ffffffa12d800000 a1ffffffd9000000 a1ffffffd9000000 ffffffa12d800000 a1ffffffd9000000 ffffffa12d800000 - {c=>1,a=>-30,b=>2,d=>7} e2ffffffca010000 e2ffffffca010000 e2ffffffca010000 ffffffe247800000 e2ffffffca010000 e2ffffffca010000 ffffffe247800000 e2ffffffca010000 ffffffe247800000 - {c=>3,a=>28,b=>7,d=>3} 1c000000df000000 1c000000df000000 1c000000df000000 0000001ced800000 1c000000df000000 1c000000df000000 0000001ced800000 1c000000df000000 0000001ced800000 - {c=>1,a=>34,b=>1,d=>3} 22000000c9000000 22000000c9000000 22000000c9000000 0000002225800000 22000000c9000000 22000000c9000000 0000002225800000 22000000c9000000 0000002225800000 - {c=>5,a=>88,b=>6,d=>1} 580000006e000000 580000006e000000 580000006e000000 00000058d4800000 580000006e000000 580000006e000000 00000058d4800000 580000006e000000 00000058d4800000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>228389954,c=>6,a=>10,b=>1,d=>3} 0a000000f100000042f49c0d 0a000000f100000042f49c0d 0a000000f100000042f49c0d 0000000a39800000d9cf4420 0a000000f100000042f49c0d 0a000000f100000042f49c0d 0000000a39800000d9cf4420 0a000000f100000042f49c0d 0000000a39800000d9cf4420 - {e=>26173929,c=>1,a=>46,b=>7,d=>3} 2e000000cf000000e9618f01 2e000000cf000000e9618f01 2e000000cf000000e9618f01 0000002ee580000018f61e90 2e000000cf000000e9618f01 2e000000cf000000e9618f01 0000002ee580000018f61e90 2e000000cf000000e9618f01 0000002ee580000018f61e90 - {e=>31378561,c=>1,a=>-102,b=>0,d=>0} 9affffff0800000081ccde01 9affffff0800000081ccde01 9affffff0800000081ccde01 ffffff9a040000001decc810 9affffff0800000081ccde01 9affffff0800000081ccde01 ffffff9a040000001decc810 9affffff0800000081ccde01 ffffff9a040000001decc810 - {e=>133881414,c=>3,a=>83,b=>6,d=>6} 530000009e01000046defa07 530000009e01000046defa07 530000009e01000046defa07 00000053cf0000007fade460 530000009e01000046defa07 530000009e01000046defa07 00000053cf0000007fade460 530000009e01000046defa07 00000053cf0000007fade460 - {e=>185498202,c=>4,a=>-46,b=>2,d=>4} d2ffffff220100005a7a0e0b d2ffffff220100005a7a0e0b d2ffffff220100005a7a0e0b ffffffd252000000b0e7a5a0 d2ffffff220100005a7a0e0b d2ffffff220100005a7a0e0b ffffffd252000000b0e7a5a0 d2ffffff220100005a7a0e0b ffffffd252000000b0e7a5a0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>108248036,c=>1,a=>-113,b=>3,d=>5,f=>4} 8fffffff4b010000e4bb7346 8fffffff4b010000e4bb7346 8fffffff4b010000e4bb7346 ffffff8f66800000673bbe48 8fffffff4b010000e4bb7346 8fffffff4b010000e4bb7346 ffffff8f66800000673bbe48 8fffffff4b010000e4bb7346 ffffff8f66800000673bbe48 - {e=>244754857,c=>2,a=>53,b=>1,d=>6,f=>7} 3500000091010000a9a9967e 3500000091010000a9a9967e 3500000091010000a9a9967e 000000352b000000e96a9a9e 3500000091010000a9a9967e 3500000091010000a9a9967e 000000352b000000e96a9a9e 3500000091010000a9a9967e 000000352b000000e96a9a9e - {e=>82868130,c=>3,a=>-17,b=>3,d=>4,f=>1} efffffff1b010000a277f014 efffffff1b010000a277f014 efffffff1b010000a277f014 ffffffef6e0000004f077a22 efffffff1b010000a277f014 efffffff1b010000a277f014 ffffffef6e0000004f077a22 efffffff1b010000a277f014 ffffffef6e0000004f077a22 - {e=>128771168,c=>5,a=>-97,b=>6,d=>5,f=>6} 9fffffff6e01000060e4ac67 9fffffff6e01000060e4ac67 9fffffff6e01000060e4ac67 ffffff9fd68000007ace460c 9fffffff6e01000060e4ac67 9fffffff6e01000060e4ac67 ffffff9fd68000007ace460c 9fffffff6e01000060e4ac67 ffffff9fd68000007ace460c - {e=>201646189,c=>5,a=>87,b=>0,d=>1,f=>3} 57000000680000006de0043c 57000000680000006de0043c 57000000680000006de0043c 0000005714800000c04e06d6 57000000680000006de0043c 57000000680000006de0043c 0000005714800000c04e06d6 57000000680000006de0043c 0000005714800000c04e06d6 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>52201699,c=>3,a=>-21,g=>2,b=>2,d=>3,f=>7} ebffffffda000000e3881c7302000000 ebffffffda000000e3881c7302000000 ebffffffda000000e3881c7302000000 ffffffeb4d80000031c88e3e80000000 ebffffffda000000e3881c7302000000 ebffffffda000000e3881c7302000000 ffffffeb4d80000031c88e3e80000000 ebffffffda000000e3881c7302000000 ffffffeb4d80000031c88e3e80000000 - {e=>156859917,c=>7,a=>28,g=>2,b=>4,d=>1,f=>7} 1c0000007c0000000d7e597902000000 1c0000007c0000000d7e597902000000 1c0000007c0000000d7e597902000000 0000001c9c8000009597e0de80000000 1c0000007c0000000d7e597902000000 1c0000007c0000000d7e597902000000 0000001c9c8000009597e0de80000000 1c0000007c0000000d7e597902000000 0000001c9c8000009597e0de80000000 - {e=>73487576,c=>2,a=>44,g=>3,b=>5,d=>4,f=>1} 2c00000015010000d854611403000000 2c00000015010000d854611403000000 2c00000015010000d854611403000000 0000002caa00000046154d82c0000000 2c00000015010000d854611403000000 2c00000015010000d854611403000000 0000002caa00000046154d82c0000000 2c00000015010000d854611403000000 0000002caa00000046154d82c0000000 - {e=>172142530,c=>5,a=>101,g=>2,b=>7,d=>3,f=>5} 65000000ef000000c2af425a02000000 65000000ef000000c2af425a02000000 65000000ef000000c2af425a02000000 00000065f5800000a42afc2a80000000 65000000ef000000c2af425a02000000 65000000ef000000c2af425a02000000 00000065f5800000a42afc2a80000000 65000000ef000000c2af425a02000000 00000065f5800000a42afc2a80000000 - {e=>150725544,c=>6,a=>71,g=>1,b=>6,d=>0,f=>3} 4700000036000000a8e3fb3801000000 4700000036000000a8e3fb3801000000 4700000036000000a8e3fb3801000000 00000047d80000008fbe3a8640000000 4700000036000000a8e3fb3801000000 4700000036000000a8e3fb3801000000 00000047d80000008fbe3a8640000000 4700000036000000a8e3fb3801000000 00000047d80000008fbe3a8640000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>165197259,a=>-34,d=>6,c=>6,h=>2543,b=>0,g=>1,f=>4} deffffffb0010000cbb5d849bd270000 deffffffb0010000cbb5d849bd270000 deffffffb0010000cbb5d849bd270000 ffffffde1b0000009d8b5cb853de0000 deffffffb0010000cbb5d849bd270000 deffffffb0010000cbb5d849bd270000 ffffffde1b0000009d8b5cb853de0000 deffffffb0010000cbb5d849bd270000 ffffffde1b0000009d8b5cb853de0000 - {e=>66930837,a=>-1,d=>4,c=>3,h=>8014,b=>5,g=>2,f=>1} ffffffff1d0100009548fd133a7d0000 ffffffff1d0100009548fd133a7d0000 ffffffff1d0100009548fd133a7d0000 ffffffffae0000003fd48952be9c0000 ffffffff1d0100009548fd133a7d0000 ffffffff1d0100009548fd133a7d0000 ffffffffae0000003fd48952be9c0000 ffffffff1d0100009548fd133a7d0000 ffffffffae0000003fd48952be9c0000 - {e=>133257048,a=>80,d=>2,c=>3,h=>7657,b=>4,g=>1,f=>2} 500000009c0000005857f127a5770000 500000009c0000005857f127a5770000 500000009c0000005857f127a5770000 000000508d0000007f1575847bd20000 500000009c0000005857f127a5770000 500000009c0000005857f127a5770000 000000508d0000007f1575847bd20000 500000009c0000005857f127a5770000 000000508d0000007f1575847bd20000 - {e=>213734502,a=>-90,d=>4,c=>5,h=>5237,b=>1,g=>2,f=>0} a6ffffff290100006654bd0cd6510000 a6ffffff290100006654bd0cd6510000 a6ffffff290100006654bd0cd6510000 ffffffa636000000cbd54660a8ea0000 a6ffffff290100006654bd0cd6510000 a6ffffff290100006654bd0cd6510000 ffffffa636000000cbd54660a8ea0000 a6ffffff290100006654bd0cd6510000 ffffffa636000000cbd54660a8ea0000 - {e=>132335321,a=>121,d=>0,c=>3,h=>5451,b=>4,g=>0,f=>7} 790000001c000000d946e3772c550000 790000001c000000d946e3772c550000 790000001c000000d946e3772c550000 000000798c0000007e346d9e2a960000 790000001c000000d946e3772c550000 790000001c000000d946e3772c550000 000000798c0000007e346d9e2a960000 790000001c000000d946e3772c550000 000000798c0000007e346d9e2a960000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>54142455,a=>-77,d=>3,c=>0,h=>5806,b=>5,g=>0,f=>1,i=>177} b3ffffffc5000000f7253a13b85ab100 b3ffffffc5000000f7253a13b85ab100 b3ffffffc5000000f7253a13b85ab100 ffffffb3a180000033a25f722d5cb100 b3ffffffc5000000f7253a13b85ab100 b3ffffffc5000000f7253a13b85ab100 ffffffb3a180000033a25f722d5cb100 b3ffffffc5000000f7253a13b85ab100 ffffffb3a180000033a25f722d5cb100 - {e=>146569251,a=>-111,d=>5,c=>1,h=>6377,b=>1,g=>3,f=>2,i=>217} 91ffffff490100002378bc28a763d900 91ffffff490100002378bc28a763d900 91ffffff490100002378bc28a763d900 ffffff91268000008bc78234f1d2d900 91ffffff490100002378bc28a763d900 91ffffff490100002378bc28a763d900 ffffff91268000008bc78234f1d2d900 91ffffff490100002378bc28a763d900 ffffff91268000008bc78234f1d2d900 - {e=>103323231,a=>-35,d=>5,c=>3,h=>286,b=>0,g=>2,f=>5,i=>160} ddffffff580100005f9628567a04a000 ddffffff580100005f9628567a04a000 ddffffff580100005f9628567a04a000 ffffffdd0e800000628965fa823ca000 ddffffff580100005f9628567a04a000 ddffffff580100005f9628567a04a000 ffffffdd0e800000628965fa823ca000 ddffffff580100005f9628567a04a000 ffffffdd0e800000628965fa823ca000 - {e=>80135875,a=>-121,d=>4,c=>6,h=>4052,b=>0,g=>0,f=>6,i=>139} 87ffffff30010000c3c6c664503f8b00 87ffffff30010000c3c6c664503f8b00 87ffffff30010000c3c6c664503f8b00 ffffff871a0000004c6c6c3c1fa88b00 87ffffff30010000c3c6c664503f8b00 87ffffff30010000c3c6c664503f8b00 ffffff871a0000004c6c6c3c1fa88b00 87ffffff30010000c3c6c664503f8b00 ffffff871a0000004c6c6c3c1fa88b00 - {e=>212259421,a=>46,d=>5,c=>2,h=>3423,b=>7,g=>2,f=>4,i=>165} 2e000000570100005dd2a64c7e35a500 2e000000570100005dd2a64c7e35a500 2e000000570100005dd2a64c7e35a500 0000002eea800000ca6d25d89abea500 2e000000570100005dd2a64c7e35a500 2e000000570100005dd2a64c7e35a500 0000002eea800000ca6d25d89abea500 2e000000570100005dd2a64c7e35a500 0000002eea800000ca6d25d89abea500 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; }; - {a=>-17,b=>1} efffffff01000000 efffffffffffffff0100000000000000 efffffffffffffff0100000000000000 ffffffef20000000 efffffff01000000 efffffff01000000 ffffffffffffffef2000000000000000 efffffff01000000 ffffffef20000000 - {a=>-21,b=>5} ebffffff05000000 ebffffffffffffff0500000000000000 ebffffffffffffff0500000000000000 ffffffeba0000000 ebffffff05000000 ebffffff05000000 ffffffffffffffeba000000000000000 ebffffff05000000 ffffffeba0000000 - {a=>117,b=>4} 7500000004000000 75000000000000000400000000000000 75000000000000000400000000000000 0000007580000000 7500000004000000 7500000004000000 00000000000000758000000000000000 7500000004000000 0000007580000000 - {a=>90,b=>5} 5a00000005000000 5a000000000000000500000000000000 5a000000000000000500000000000000 0000005aa0000000 5a00000005000000 5a00000005000000 000000000000005aa000000000000000 5a00000005000000 0000005aa0000000 - {a=>48,b=>4} 3000000004000000 30000000000000000400000000000000 30000000000000000400000000000000 0000003080000000 3000000004000000 3000000004000000 00000000000000308000000000000000 3000000004000000 0000003080000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>16,b=>5} 1000000005000000 10000000000000000500000000000000 10000000000000000500000000000000 00000010a0000000 1000000005000000 1000000005000000 0000000000000010a000000000000000 1000000005000000 00000010a0000000 - {c=>6,a=>123,b=>0} 7b00000030000000 7b000000000000003000000000000000 7b000000000000003000000000000000 0000007b18000000 7b00000030000000 7b00000030000000 000000000000007b1800000000000000 7b00000030000000 0000007b18000000 - {c=>4,a=>92,b=>2} 5c00000022000000 5c000000000000002200000000000000 5c000000000000002200000000000000 0000005c50000000 5c00000022000000 5c00000022000000 000000000000005c5000000000000000 5c00000022000000 0000005c50000000 - {c=>4,a=>64,b=>0} 4000000020000000 40000000000000002000000000000000 40000000000000002000000000000000 0000004010000000 4000000020000000 4000000020000000 00000000000000401000000000000000 4000000020000000 0000004010000000 - {c=>0,a=>-8,b=>0} f8ffffff00000000 f8ffffffffffffff0000000000000000 f8ffffffffffffff0000000000000000 fffffff800000000 f8ffffff00000000 f8ffffff00000000 fffffffffffffff80000000000000000 f8ffffff00000000 fffffff800000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>124,b=>2,d=>6} 7c000000b2010000 7c00000000000000b201000000000000 7c00000000000000b201000000000000 0000007c5b000000 7c000000b2010000 7c000000b2010000 000000000000007c5b00000000000000 7c000000b2010000 0000007c5b000000 - {c=>2,a=>-19,b=>2,d=>0} edffffff12000000 edffffffffffffff1200000000000000 edffffffffffffff1200000000000000 ffffffed48000000 edffffff12000000 edffffff12000000 ffffffffffffffed4800000000000000 edffffff12000000 ffffffed48000000 - {c=>5,a=>55,b=>0,d=>1} 3700000068000000 37000000000000006800000000000000 37000000000000006800000000000000 0000003714800000 3700000068000000 3700000068000000 00000000000000371480000000000000 3700000068000000 0000003714800000 - {c=>5,a=>-44,b=>0,d=>7} d4ffffffe8010000 d4ffffffffffffffe801000000000000 d4ffffffffffffffe801000000000000 ffffffd417800000 d4ffffffe8010000 d4ffffffe8010000 ffffffffffffffd41780000000000000 d4ffffffe8010000 ffffffd417800000 - {c=>6,a=>-50,b=>1,d=>4} ceffffff31010000 ceffffffffffffff3101000000000000 ceffffffffffffff3101000000000000 ffffffce3a000000 ceffffff31010000 ceffffff31010000 ffffffffffffffce3a00000000000000 ceffffff31010000 ffffffce3a000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>95288597,c=>5,a=>-109,b=>2,d=>7} 93ffffffea01000015fdad05 93ffffffffffffffea01000015fdad05 93ffffffffffffffea01000015fdad05 ffffff93578000005adfd150 93ffffffea01000015fdad05 93ffffffea01000015fdad05 ffffffffffffff93578000005adfd150 93ffffffea01000015fdad05 ffffff93578000005adfd150 - {e=>135290620,c=>4,a=>117,b=>5,d=>5} 7500000065010000fc5e1008 750000000000000065010000fc5e1008 750000000000000065010000fc5e1008 00000075b28000008105efc0 7500000065010000fc5e1008 7500000065010000fc5e1008 0000000000000075b28000008105efc0 7500000065010000fc5e1008 00000075b28000008105efc0 - {e=>60560071,c=>0,a=>38,b=>6,d=>3} 26000000c6000000c7129c03 2600000000000000c6000000c7129c03 2600000000000000c6000000c7129c03 00000026c180000039c12c70 26000000c6000000c7129c03 26000000c6000000c7129c03 0000000000000026c180000039c12c70 26000000c6000000c7129c03 00000026c180000039c12c70 - {e=>3218489,c=>7,a=>-111,b=>2,d=>3} 91fffffffa000000391c3100 91fffffffffffffffa000000391c3100 91fffffffffffffffa000000391c3100 ffffff915d8000000311c390 91fffffffa000000391c3100 91fffffffa000000391c3100 ffffffffffffff915d8000000311c390 91fffffffa000000391c3100 ffffff915d8000000311c390 - {e=>124836907,c=>6,a=>-119,b=>3,d=>2} 89ffffffb30000002bdc7007 89ffffffffffffffb30000002bdc7007 89ffffffffffffffb30000002bdc7007 ffffff8979000000770dc2b0 89ffffffb30000002bdc7007 89ffffffb30000002bdc7007 ffffffffffffff8979000000770dc2b0 89ffffffb30000002bdc7007 ffffff8979000000770dc2b0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>12389401,c=>4,a=>83,b=>0,d=>1,f=>1} 5300000060000000190cbd10 530000000000000060000000190cbd10 530000000000000060000000190cbd10 00000053108000000bd0c192 5300000060000000190cbd10 5300000060000000190cbd10 0000000000000053108000000bd0c192 5300000060000000190cbd10 00000053108000000bd0c192 - {e=>142083432,c=>7,a=>-99,b=>5,d=>3,f=>3} 9dfffffffd00000068057838 9dfffffffffffffffd00000068057838 9dfffffffffffffffd00000068057838 ffffff9dbd80000087805686 9dfffffffd00000068057838 9dfffffffd00000068057838 ffffffffffffff9dbd80000087805686 9dfffffffd00000068057838 ffffff9dbd80000087805686 - {e=>187721880,c=>2,a=>52,b=>6,d=>5,f=>2} 34000000560100009868302b 3400000000000000560100009868302b 3400000000000000560100009868302b 00000034ca800000b3068984 34000000560100009868302b 34000000560100009868302b 0000000000000034ca800000b3068984 34000000560100009868302b 00000034ca800000b3068984 - {e=>48069462,c=>5,a=>48,b=>0,d=>2,f=>4} 30000000a8000000567bdd42 3000000000000000a8000000567bdd42 3000000000000000a8000000567bdd42 00000030150000002dd7b568 30000000a8000000567bdd42 30000000a8000000567bdd42 0000000000000030150000002dd7b568 30000000a8000000567bdd42 00000030150000002dd7b568 - {e=>65320048,c=>4,a=>2,b=>6,d=>4,f=>3} 020000002601000070b4e433 02000000000000002601000070b4e433 02000000000000002601000070b4e433 00000002d20000003e4b4706 020000002601000070b4e433 020000002601000070b4e433 0000000000000002d20000003e4b4706 020000002601000070b4e433 00000002d20000003e4b4706 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>260512924,c=>0,a=>13,g=>3,b=>2,d=>7,f=>5} 0d000000c20100009c1c875f03000000 0d00000000000000c20100009c1c875f0300000000000000 0d00000000000000c20100009c1c875f0300000000000000 0000000d43800000f871c9cac0000000 0d000000c20100009c1c875f03000000 0d000000c20100009c1c875f03000000 000000000000000d43800000f871c9cac000000000000000 0d000000c20100009c1c875f03000000 0000000d43800000f871c9cac0000000 - {e=>57231972,c=>0,a=>50,g=>1,b=>1,d=>1,f=>1} 3200000041000000644a691301000000 320000000000000041000000644a69130100000000000000 320000000000000041000000644a69130100000000000000 00000032208000003694a64240000000 3200000041000000644a691301000000 3200000041000000644a691301000000 0000000000000032208000003694a6424000000000000000 3200000041000000644a691301000000 00000032208000003694a64240000000 - {e=>202592947,c=>7,a=>-82,g=>2,b=>0,d=>0,f=>6} aeffffff38000000b352136c02000000 aeffffffffffffff38000000b352136c0200000000000000 aeffffffffffffff38000000b352136c0200000000000000 ffffffae1c000000c1352b3c80000000 aeffffff38000000b352136c02000000 aeffffff38000000b352136c02000000 ffffffffffffffae1c000000c1352b3c8000000000000000 aeffffff38000000b352136c02000000 ffffffae1c000000c1352b3c80000000 - {e=>222000348,c=>7,a=>-76,g=>2,b=>4,d=>4,f=>5} b4ffffff3c010000dc743b5d02000000 b4ffffffffffffff3c010000dc743b5d0200000000000000 b4ffffffffffffff3c010000dc743b5d0200000000000000 ffffffb49e000000d3b74dca80000000 b4ffffff3c010000dc743b5d02000000 b4ffffff3c010000dc743b5d02000000 ffffffffffffffb49e000000d3b74dca8000000000000000 b4ffffff3c010000dc743b5d02000000 ffffffb49e000000d3b74dca80000000 - {e=>259177945,c=>7,a=>-89,g=>3,b=>2,d=>4,f=>1} a7ffffff3a010000d9bd721f03000000 a7ffffffffffffff3a010000d9bd721f0300000000000000 a7ffffffffffffff3a010000d9bd721f0300000000000000 ffffffa75e000000f72bdd92c0000000 a7ffffff3a010000d9bd721f03000000 a7ffffff3a010000d9bd721f03000000 ffffffffffffffa75e000000f72bdd92c000000000000000 a7ffffff3a010000d9bd721f03000000 ffffffa75e000000f72bdd92c0000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>83948314,a=>-39,d=>7,c=>7,h=>5026,b=>2,g=>2,f=>5} d9fffffffa0100001af300558a4e0000 d9fffffffffffffffa0100001af300558a4e000000000000 d9fffffffffffffffa0100001af300558a4e000000000000 ffffffd95f800000500f31aaa7440000 d9fffffffa0100001af300558a4e0000 d9fffffffa0100001af300558a4e0000 ffffffffffffffd95f800000500f31aaa744000000000000 d9fffffffa0100001af300558a4e0000 ffffffd95f800000500f31aaa7440000 - {e=>263712322,a=>73,d=>0,c=>3,h=>5678,b=>2,g=>3,f=>7} 490000001a00000042eeb77fbb580000 49000000000000001a00000042eeb77fbb58000000000000 49000000000000001a00000042eeb77fbb58000000000000 000000494c000000fb7ee42eec5c0000 490000001a00000042eeb77fbb580000 490000001a00000042eeb77fbb580000 00000000000000494c000000fb7ee42eec5c000000000000 490000001a00000042eeb77fbb580000 000000494c000000fb7ee42eec5c0000 - {e=>29595889,a=>-74,d=>7,c=>3,h=>3087,b=>2,g=>3,f=>4} b6ffffffda010000f198c3413f300000 b6ffffffffffffffda010000f198c3413f30000000000000 b6ffffffffffffffda010000f198c3413f30000000000000 ffffffb64f8000001c398f18d81e0000 b6ffffffda010000f198c3413f300000 b6ffffffda010000f198c3413f300000 ffffffffffffffb64f8000001c398f18d81e000000000000 b6ffffffda010000f198c3413f300000 ffffffb64f8000001c398f18d81e0000 - {e=>229616258,a=>-13,d=>2,c=>2,h=>5537,b=>5,g=>2,f=>6} f3ffffff9500000082aaaf6d86560000 f3ffffffffffffff9500000082aaaf6d8656000000000000 f3ffffffffffffff9500000082aaaf6d8656000000000000 fffffff3a9000000dafaa82cab420000 f3ffffff9500000082aaaf6d86560000 f3ffffff9500000082aaaf6d86560000 fffffffffffffff3a9000000dafaa82cab42000000000000 f3ffffff9500000082aaaf6d86560000 fffffff3a9000000dafaa82cab420000 - {e=>192578723,a=>-50,d=>5,c=>7,h=>779,b=>7,g=>0,f=>1} ceffffff7f010000a3847a1b2c0c0000 ceffffffffffffff7f010000a3847a1b2c0c000000000000 ceffffffffffffff7f010000a3847a1b2c0c000000000000 ffffffcefe800000b7a84a3206160000 ceffffff7f010000a3847a1b2c0c0000 ceffffff7f010000a3847a1b2c0c0000 ffffffffffffffcefe800000b7a84a320616000000000000 ceffffff7f010000a3847a1b2c0c0000 ffffffcefe800000b7a84a3206160000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>53556282,a=>93,d=>1,c=>0,h=>6233,b=>5,g=>2,f=>6,i=>8} 5d000000450000003a34316366610800 5d00000000000000450000003a3431636661080000000000 5d00000000000000450000003a3431636661080000000000 0000005da0800000331343acb0b20800 5d000000450000003a34316366610800 5d000000450000003a34316366610800 000000000000005da0800000331343acb0b2080000000000 5d000000450000003a34316366610800 0000005da0800000331343acb0b20800 - {e=>177717941,a=>-92,d=>4,c=>4,h=>2021,b=>5,g=>1,f=>5,i=>247} a4ffffff25010000b5c2975a951ff700 a4ffffffffffffff25010000b5c2975a951ff70000000000 a4ffffffffffffff25010000b5c2975a951ff70000000000 ffffffa4b2000000a97c2b5a4fcaf700 a4ffffff25010000b5c2975a951ff700 a4ffffff25010000b5c2975a951ff700 ffffffffffffffa4b2000000a97c2b5a4fcaf70000000000 a4ffffff25010000b5c2975a951ff700 ffffffa4b2000000a97c2b5a4fcaf700 - {e=>182845399,a=>88,d=>7,c=>0,h=>1885,b=>2,g=>0,f=>7,i=>153} 58000000c2010000d7ffe57a741d9900 5800000000000000c2010000d7ffe57a741d990000000000 5800000000000000c2010000d7ffe57a741d990000000000 0000005843800000ae5ffd7e0eba9900 58000000c2010000d7ffe57a741d9900 58000000c2010000d7ffe57a741d9900 000000000000005843800000ae5ffd7e0eba990000000000 58000000c2010000d7ffe57a741d9900 0000005843800000ae5ffd7e0eba9900 - {e=>88054627,a=>92,d=>5,c=>7,h=>765,b=>5,g=>0,f=>1,i=>252} 5c0000007d010000639b3f15f40bfc00 5c000000000000007d010000639b3f15f40bfc0000000000 5c000000000000007d010000639b3f15f40bfc0000000000 0000005cbe80000053f9b63205fafc00 5c0000007d010000639b3f15f40bfc00 5c0000007d010000639b3f15f40bfc00 000000000000005cbe80000053f9b63205fafc0000000000 5c0000007d010000639b3f15f40bfc00 0000005cbe80000053f9b63205fafc00 - {e=>77656705,a=>-32,d=>0,c=>0,h=>6746,b=>6,g=>3,f=>4,i=>4} e0ffffff0600000081f2a0446b690400 e0ffffffffffffff0600000081f2a0446b69040000000000 e0ffffffffffffff0600000081f2a0446b69040000000000 ffffffe0c00000004a0f2818f4b40400 e0ffffff0600000081f2a0446b690400 e0ffffff0600000081f2a0446b690400 ffffffffffffffe0c00000004a0f2818f4b4040000000000 e0ffffff0600000081f2a0446b690400 ffffffe0c00000004a0f2818f4b40400 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>2} 02 02 02 40 02000000 02 40 02 40 - {a=>3} 03 03 03 60 03000000 03 60 03 60 - {a=>4} 04 04 04 80 04000000 04 80 04 80 - {a=>1} 01 01 01 20 01000000 01 20 01 20 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; }; - {a=>1,b=>7} 39 39 39 3c 39000000 39 3c 39 3c - {a=>5,b=>4} 25 25 25 b0 25000000 25 b0 25 b0 - {a=>2,b=>6} 32 32 32 58 32000000 32 58 32 58 - {a=>6,b=>0} 06 06 06 c0 06000000 06 c0 06 c0 - {a=>6,b=>3} 1e 1e 1e cc 1e000000 1e cc 1e cc = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>7,a=>2,b=>3} da01 da01 da01 4f80 da010000 da01 4f80 da01 4f80 - {c=>7,a=>5,b=>5} ed01 ed01 ed01 b780 ed010000 ed01 b780 ed01 b780 - {c=>6,a=>2,b=>1} 8a01 8a01 8a01 4700 8a010000 8a01 4700 8a01 4700 - {c=>2,a=>0,b=>4} a000 a000 a000 1100 a0000000 a000 1100 a000 1100 - {c=>2,a=>0,b=>0} 8000 8000 8000 0100 80000000 8000 0100 8000 0100 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>3,a=>7,b=>1,d=>50028689} cf0000009160fb02 cf0000009160fb02 cf0000009160fb02 e58000002fb60910 cf0000009160fb02 cf0000009160fb02 e58000002fb60910 cf0000009160fb02 e58000002fb60910 - {c=>0,a=>6,b=>4,d=>214060677} 26000000854ec20c 26000000854ec20c 26000000854ec20c d0000000cc24e850 26000000854ec20c 26000000854ec20c d0000000cc24e850 26000000854ec20c d0000000cc24e850 - {c=>5,a=>3,b=>2,d=>195763511} 53010000371dab0b 53010000371dab0b 53010000371dab0b 6a800000bab1d370 53010000371dab0b 53010000371dab0b 6a800000bab1d370 53010000371dab0b 6a800000bab1d370 - {c=>3,a=>3,b=>6,d=>63439012} f3000000a400c803 f3000000a400c803 f3000000a400c803 798000003c800a40 f3000000a400c803 f3000000a400c803 798000003c800a40 f3000000a400c803 798000003c800a40 - {c=>0,a=>5,b=>5,d=>244764352} 2d000000c0ce960e 2d000000c0ce960e 2d000000c0ce960e b4000000e96cec00 2d000000c0ce960e 2d000000c0ce960e b4000000e96cec00 2d000000c0ce960e b4000000e96cec00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>3,c=>2,a=>4,b=>7,d=>224624247} bc000000777e633d bc000000777e633d bc000000777e633d 9d000000d637e776 bc000000777e633d bc000000777e633d 9d000000d637e776 bc000000777e633d 9d000000d637e776 - {e=>0,c=>1,a=>5,b=>1,d=>177052414} 4d000000fe9a8d0a 4d000000fe9a8d0a 4d000000fe9a8d0a a4800000a8d9afe0 4d000000fe9a8d0a 4d000000fe9a8d0a a4800000a8d9afe0 4d000000fe9a8d0a a4800000a8d9afe0 - {e=>0,c=>0,a=>2,b=>5,d=>246117108} 2a000000f472ab0e 2a000000f472ab0e 2a000000f472ab0e 54000000eab72f40 2a000000f472ab0e 2a000000f472ab0e 54000000eab72f40 2a000000f472ab0e 54000000eab72f40 - {e=>6,c=>6,a=>5,b=>7,d=>185373738} bd0100002a940c6b bd0100002a940c6b bd0100002a940c6b bf000000b0c942ac bd0100002a940c6b bd0100002a940c6b bf000000b0c942ac bd0100002a940c6b bf000000b0c942ac - {e=>5,c=>3,a=>4,b=>5,d=>54818930} ec00000072784453 ec00000072784453 ec00000072784453 958000003447872a ec00000072784453 ec00000072784453 958000003447872a ec00000072784453 958000003447872a = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>3,c=>4,a=>4,b=>0,d=>79628885,f=>3} 04010000550abf3403000000 04010000550abf3403000000 04010000550abf3403000000 820000004bf0a556c0000000 04010000550abf3403000000 04010000550abf3403000000 820000004bf0a556c0000000 04010000550abf3403000000 820000004bf0a556c0000000 - {e=>2,c=>4,a=>1,b=>5,d=>144152264,f=>2} 29010000c896972802000000 29010000c896972802000000 29010000c896972802000000 3600000089796c8480000000 29010000c896972802000000 29010000c896972802000000 3600000089796c8480000000 29010000c896972802000000 3600000089796c8480000000 - {e=>5,c=>6,a=>2,b=>0,d=>26710878,f=>3} 820100005e93975103000000 820100005e93975103000000 820100005e93975103000000 43000000197935eac0000000 820100005e93975103000000 820100005e93975103000000 43000000197935eac0000000 820100005e93975103000000 43000000197935eac0000000 - {e=>5,c=>6,a=>7,b=>4,d=>34004101,f=>1} a701000085dc065201000000 a701000085dc065201000000 a701000085dc065201000000 f3000000206dc85a40000000 a701000085dc065201000000 a701000085dc065201000000 f3000000206dc85a40000000 a701000085dc065201000000 f3000000206dc85a40000000 - {e=>0,c=>4,a=>2,b=>1,d=>16933732,f=>1} 0a0100006463020101000000 0a0100006463020101000000 0a0100006463020101000000 460000001026364040000000 0a0100006463020101000000 0a0100006463020101000000 460000001026364040000000 0a0100006463020101000000 460000001026364040000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>6,c=>4,a=>7,g=>5071,b=>0,d=>231122139,f=>3} 07010000dba4c66d3f4f0000 07010000dba4c66d3f4f0000 07010000dba4c66d3f4f0000 e2000000dc6a4dbce79e0000 07010000dba4c66d3f4f0000 07010000dba4c66d3f4f0000 e2000000dc6a4dbce79e0000 07010000dba4c66d3f4f0000 e2000000dc6a4dbce79e0000 - {e=>6,c=>2,a=>7,g=>456,b=>3,d=>180080748,f=>0} 9f0000006cd0bb6a20070000 9f0000006cd0bb6a20070000 9f0000006cd0bb6a20070000 ed000000abbd06cc03900000 9f0000006cd0bb6a20070000 9f0000006cd0bb6a20070000 ed000000abbd06cc03900000 9f0000006cd0bb6a20070000 ed000000abbd06cc03900000 - {e=>2,c=>3,a=>3,g=>5849,b=>3,d=>79209729,f=>3} db00000001a5b824675b0000 db00000001a5b824675b0000 db00000001a5b824675b0000 6d8000004b8a5014edb20000 db00000001a5b824675b0000 db00000001a5b824675b0000 6d8000004b8a5014edb20000 db00000001a5b824675b0000 6d8000004b8a5014edb20000 - {e=>1,c=>3,a=>7,g=>2821,b=>0,d=>127280147,f=>3} c700000013249617172c0000 c700000013249617172c0000 c700000013249617172c0000 e180000079624132d60a0000 c700000013249617172c0000 c700000013249617172c0000 e180000079624132d60a0000 c700000013249617172c0000 e180000079624132d60a0000 - {e=>3,c=>1,a=>1,g=>507,b=>0,d=>255482069,f=>1} 41000000d5583a3fed070000 41000000d5583a3fed070000 41000000d5583a3fed070000 20800000f3a58d5643f60000 41000000d5583a3fed070000 41000000d5583a3fed070000 20800000f3a58d5643f60000 41000000d5583a3fed070000 20800000f3a58d5643f60000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>6,a=>7,d=>257420570,c=>7,h=>84,b=>1,g=>1915,f=>3} cf0100001aed576fef1d5400 cf0100001aed576fef1d5400 cf0100001aed576fef1d5400 e7800000f57ed1accef65400 cf0100001aed576fef1d5400 cf0100001aed576fef1d5400 e7800000f57ed1accef65400 cf0100001aed576fef1d5400 e7800000f57ed1accef65400 - {e=>5,a=>5,d=>71066412,c=>2,h=>226,b=>3,g=>1456,f=>3} 9d0000002c633c54c316e200 9d0000002c633c54c316e200 9d0000002c633c54c316e200 ad00000043c632cacb60e200 9d0000002c633c54c316e200 9d0000002c633c54c316e200 ad00000043c632cacb60e200 9d0000002c633c54c316e200 ad00000043c632cacb60e200 - {e=>5,a=>0,d=>136880796,c=>4,h=>149,b=>6,g=>7356,f=>2} 300100009ca22858f2729500 300100009ca22858f2729500 300100009ca22858f2729500 1a000000828a29cab9789500 300100009ca22858f2729500 300100009ca22858f2729500 1a000000828a29cab9789500 300100009ca22858f2729500 1a000000828a29cab9789500 - {e=>4,a=>2,d=>230323768,c=>1,h=>107,b=>2,g=>1870,f=>0} 520000003876ba4d381d6b00 520000003876ba4d381d6b00 520000003876ba4d381d6b00 48800000dba763880e9c6b00 520000003876ba4d381d6b00 520000003876ba4d381d6b00 48800000dba763880e9c6b00 520000003876ba4d381d6b00 48800000dba763880e9c6b00 - {e=>0,a=>1,d=>100150911,c=>2,h=>68,b=>6,g=>5875,f=>1} b10000007f2ef805cd5b4400 b10000007f2ef805cd5b4400 b10000007f2ef805cd5b4400 390000005f82e7f06de64400 b10000007f2ef805cd5b4400 b10000007f2ef805cd5b4400 390000005f82e7f06de64400 b10000007f2ef805cd5b4400 390000005f82e7f06de64400 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; }; - {a=>65,b=>3} 4103 4103 4103 4160 41030000 4103 4160 4103 4160 - {a=>6,b=>0} 0600 0600 0600 0600 06000000 0600 0600 0600 0600 - {a=>95,b=>6} 5f06 5f06 5f06 5fc0 5f060000 5f06 5fc0 5f06 5fc0 - {a=>-19,b=>1} ed01 ed01 ed01 ed20 ed010000 ed01 ed20 ed01 ed20 - {a=>69,b=>7} 4507 4507 4507 45e0 45070000 4507 45e0 4507 45e0 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>-76,b=>3} b433 b433 b433 b478 b4330000 b433 b478 b433 b478 - {c=>6,a=>58,b=>2} 3a32 3a32 3a32 3a58 3a320000 3a32 3a58 3a32 3a58 - {c=>0,a=>-87,b=>7} a907 a907 a907 a9e0 a9070000 a907 a9e0 a907 a9e0 - {c=>5,a=>95,b=>6} 5f2e 5f2e 5f2e 5fd4 5f2e0000 5f2e 5fd4 5f2e 5fd4 - {c=>6,a=>69,b=>2} 4532 4532 4532 4558 45320000 4532 4558 4532 4558 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-39,b=>1,d=>1} d9190100 d9190100 d9190100 d92c2000 d9190100 d9190100 d92c2000 d9190100 d92c2000 - {c=>0,a=>-41,b=>0,d=>0} d7000000 d7000000 d7000000 d7000000 d7000000 d7000000 d7000000 d7000000 d7000000 - {c=>4,a=>98,b=>0,d=>0} 62200000 62200000 62200000 62100000 62200000 62200000 62100000 62200000 62100000 - {c=>0,a=>-29,b=>1,d=>5} e3010500 e3010500 e3010500 e320a000 e3010500 e3010500 e320a000 e3010500 e320a000 - {c=>3,a=>-22,b=>1,d=>5} ea190500 ea190500 ea190500 ea2ca000 ea190500 ea190500 ea2ca000 ea190500 ea2ca000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>124299546,c=>2,a=>-99,b=>6,d=>6} 9d1606001aa96807 9d1606001aa96807 9d1606001aa96807 9dc8c000768a91a0 9d1606001aa96807 9d1606001aa96807 9dc8c000768a91a0 9d1606001aa96807 9dc8c000768a91a0 - {e=>146480008,c=>7,a=>77,b=>1,d=>1} 4d390100881bbb08 4d390100881bbb08 4d390100881bbb08 4d3c20008bb1b880 4d390100881bbb08 4d390100881bbb08 4d3c20008bb1b880 4d390100881bbb08 4d3c20008bb1b880 - {e=>114844914,c=>3,a=>-69,b=>7,d=>6} bb1f0600f264d806 bb1f0600f264d806 bb1f0600f264d806 bbecc0006d864f20 bb1f0600f264d806 bb1f0600f264d806 bbecc0006d864f20 bb1f0600f264d806 bbecc0006d864f20 - {e=>66012636,c=>0,a=>-38,b=>2,d=>6} da020600dc45ef03 da020600dc45ef03 da020600dc45ef03 da40c0003ef45dc0 da020600dc45ef03 da020600dc45ef03 da40c0003ef45dc0 da020600dc45ef03 da40c0003ef45dc0 - {e=>262518736,c=>0,a=>20,b=>2,d=>0} 14020000d0b7a50f 14020000d0b7a50f 14020000d0b7a50f 14400000fa5b7d00 14020000d0b7a50f 14020000d0b7a50f 14400000fa5b7d00 14020000d0b7a50f 14400000fa5b7d00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>262442666,c=>5,a=>-46,b=>1,d=>0,f=>1} d2290000aa8ea41f d2290000aa8ea41f d2290000aa8ea41f d2340000fa48eaa2 d2290000aa8ea41f d2290000aa8ea41f d2340000fa48eaa2 d2290000aa8ea41f d2340000fa48eaa2 - {e=>51404586,c=>7,a=>-117,b=>0,d=>7,f=>2} 8b3807002a5f1023 8b3807002a5f1023 8b3807002a5f1023 8b1ce0003105f2a4 8b3807002a5f1023 8b3807002a5f1023 8b1ce0003105f2a4 8b3807002a5f1023 8b1ce0003105f2a4 - {e=>62750320,c=>6,a=>103,b=>6,d=>5,f=>7} 67360500707ebd73 67360500707ebd73 67360500707ebd73 67d8a0003bd7e70e 67360500707ebd73 67360500707ebd73 67d8a0003bd7e70e 67360500707ebd73 67d8a0003bd7e70e - {e=>224998807,c=>7,a=>-64,b=>3,d=>6,f=>1} c03b06009735691d c03b06009735691d c03b06009735691d c07cc000d6935972 c03b06009735691d c03b06009735691d c07cc000d6935972 c03b06009735691d c07cc000d6935972 - {e=>147103397,c=>2,a=>51,b=>5,d=>5,f=>6} 33150500a59ec468 33150500a59ec468 33150500a59ec468 33a8a0008c49ea5c 33150500a59ec468 33150500a59ec468 33a8a0008c49ea5c 33150500a59ec468 33a8a0008c49ea5c = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>126791030,c=>2,a=>62,g=>0,b=>5,d=>3,f=>3} 3e15030076ad8e3700000000 3e15030076ad8e3700000000 3e15030076ad8e3700000000 3ea8600078ead76600000000 3e15030076ad8e3700000000 3e15030076ad8e3700000000 3ea8600078ead76600000000 3e15030076ad8e3700000000 3ea8600078ead76600000000 - {e=>121945673,c=>5,a=>14,g=>2,b=>7,d=>0,f=>6} 0e2f000049be446702000000 0e2f000049be446702000000 0e2f000049be446702000000 0ef40000744be49c80000000 0e2f000049be446702000000 0e2f000049be446702000000 0ef40000744be49c80000000 0e2f000049be446702000000 0ef40000744be49c80000000 - {e=>144073686,c=>3,a=>96,g=>1,b=>3,d=>3,f=>6} 601b0300d663966801000000 601b0300d663966801000000 601b0300d663966801000000 606c600089663d6c40000000 601b0300d663966801000000 601b0300d663966801000000 606c600089663d6c40000000 601b0300d663966801000000 606c600089663d6c40000000 - {e=>215969518,c=>7,a=>-47,g=>2,b=>4,d=>4,f=>2} d13c0400ee6edf2c02000000 d13c0400ee6edf2c02000000 d13c0400ee6edf2c02000000 d19c8000cdf6eee480000000 d13c0400ee6edf2c02000000 d13c0400ee6edf2c02000000 d19c8000cdf6eee480000000 d13c0400ee6edf2c02000000 d19c8000cdf6eee480000000 - {e=>140309850,c=>5,a=>-50,g=>1,b=>5,d=>2,f=>0} ce2d02005af55c0801000000 ce2d02005af55c0801000000 ce2d02005af55c0801000000 ceb4400085cf55a040000000 ce2d02005af55c0801000000 ce2d02005af55c0801000000 ceb4400085cf55a040000000 ce2d02005af55c0801000000 ceb4400085cf55a040000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>255150489,a=>50,d=>2,c=>3,h=>5131,b=>7,g=>0,f=>5} 321f02009949355f2c500000 321f02009949355f2c500000 321f02009949355f2c500000 32ec4000f354999a28160000 321f02009949355f2c500000 321f02009949355f2c500000 32ec4000f354999a28160000 321f02009949355f2c500000 32ec4000f354999a28160000 - {e=>88288107,a=>30,d=>5,c=>2,h=>508,b=>1,g=>1,f=>4} 1e1105006b2b4345f1070000 1e1105006b2b4345f1070000 1e1105006b2b4345f1070000 1e28a0005432b6b843f80000 1e1105006b2b4345f1070000 1e1105006b2b4345f1070000 1e28a0005432b6b843f80000 1e1105006b2b4345f1070000 1e28a0005432b6b843f80000 - {e=>69089767,a=>-51,d=>7,c=>1,h=>2817,b=>4,g=>0,f=>1} cd0c0700e7391e14042c0000 cd0c0700e7391e14042c0000 cd0c0700e7391e14042c0000 cd84e00041e39e7216020000 cd0c0700e7391e14042c0000 cd0c0700e7391e14042c0000 cd84e00041e39e7216020000 cd0c0700e7391e14042c0000 cd84e00041e39e7216020000 - {e=>181343856,a=>45,d=>0,c=>7,h=>8181,b=>5,g=>0,f=>3} 2d3d00007016cf3ad47f0000 2d3d00007016cf3ad47f0000 2d3d00007016cf3ad47f0000 2dbc0000acf167063fea0000 2d3d00007016cf3ad47f0000 2d3d00007016cf3ad47f0000 2dbc0000acf167063fea0000 2d3d00007016cf3ad47f0000 2dbc0000acf167063fea0000 - {e=>255383303,a=>-26,d=>0,c=>4,h=>6731,b=>2,g=>0,f=>2} e622000007d7382f2c690000 e622000007d7382f2c690000 e622000007d7382f2c690000 e6500000f38d707434960000 e622000007d7382f2c690000 e622000007d7382f2c690000 e6500000f38d707434960000 e622000007d7382f2c690000 e6500000f38d707434960000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>166068539,a=>7,d=>5,c=>2,h=>5695,b=>7,g=>1,f=>6,i=>154} 071705003b01e669fd589a00 071705003b01e669fd589a00 071705003b01e669fd589a00 07e8a0009e6013bc6c7e9a00 071705003b01e669fd589a00 071705003b01e669fd589a00 07e8a0009e6013bc6c7e9a00 071705003b01e669fd589a00 07e8a0009e6013bc6c7e9a00 - {e=>33996722,a=>19,d=>3,c=>1,h=>5872,b=>0,g=>3,f=>4,i=>109} 13080300b2bf0642c35b6d00 13080300b2bf0642c35b6d00 13080300b2bf0642c35b6d00 13046000206bfb28ede06d00 13080300b2bf0642c35b6d00 13080300b2bf0642c35b6d00 13046000206bfb28ede06d00 13080300b2bf0642c35b6d00 13046000206bfb28ede06d00 - {e=>233609477,a=>33,d=>2,c=>7,h=>5345,b=>1,g=>1,f=>4,i=>42} 213902000599ec4d85532a00 213902000599ec4d85532a00 213902000599ec4d85532a00 213c4000dec9905869c22a00 213902000599ec4d85532a00 213902000599ec4d85532a00 213c4000dec9905869c22a00 213902000599ec4d85532a00 213c4000dec9905869c22a00 - {e=>221295631,a=>68,d=>4,c=>7,h=>2330,b=>4,g=>0,f=>7,i=>18} 443c04000fb4307d68241200 443c04000fb4307d68241200 443c04000fb4307d68241200 449c8000d30b40fe12341200 443c04000fb4307d68241200 443c04000fb4307d68241200 449c8000d30b40fe12341200 443c04000fb4307d68241200 449c8000d30b40fe12341200 - {e=>91575618,a=>-124,d=>7,c=>1,h=>4394,b=>5,g=>0,f=>3,i=>236} 840d070042557535a844ec00 840d070042557535a844ec00 840d070042557535a844ec00 84a4e000575554262254ec00 840d070042557535a844ec00 840d070042557535a844ec00 84a4e000575554262254ec00 840d070042557535a844ec00 84a4e000575554262254ec00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; }; - {a=>116,b=>5} 74000500 74000500 74000500 0074a000 74000500 74000500 0074a000 74000500 0074a000 - {a=>71,b=>2} 47000200 47000200 47000200 00474000 47000200 47000200 00474000 47000200 00474000 - {a=>-124,b=>5} 84ff0500 84ff0500 84ff0500 ff84a000 84ff0500 84ff0500 ff84a000 84ff0500 ff84a000 - {a=>80,b=>5} 50000500 50000500 50000500 0050a000 50000500 50000500 0050a000 50000500 0050a000 - {a=>-89,b=>4} a7ff0400 a7ff0400 a7ff0400 ffa78000 a7ff0400 a7ff0400 ffa78000 a7ff0400 ffa78000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>-17,b=>0} efff1800 efff1800 efff1800 ffef0c00 efff1800 efff1800 ffef0c00 efff1800 ffef0c00 - {c=>1,a=>-2,b=>7} feff0f00 feff0f00 feff0f00 fffee400 feff0f00 feff0f00 fffee400 feff0f00 fffee400 - {c=>1,a=>-91,b=>5} a5ff0d00 a5ff0d00 a5ff0d00 ffa5a400 a5ff0d00 a5ff0d00 ffa5a400 a5ff0d00 ffa5a400 - {c=>0,a=>68,b=>4} 44000400 44000400 44000400 00448000 44000400 44000400 00448000 44000400 00448000 - {c=>7,a=>-51,b=>2} cdff3a00 cdff3a00 cdff3a00 ffcd5c00 cdff3a00 cdff3a00 ffcd5c00 cdff3a00 ffcd5c00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>5,a=>-102,b=>5,d=>2} 9affad00 9affad00 9affad00 ff9ab500 9affad00 9affad00 ff9ab500 9affad00 ff9ab500 - {c=>4,a=>79,b=>5,d=>3} 4f00e500 4f00e500 4f00e500 004fb180 4f00e500 4f00e500 004fb180 4f00e500 004fb180 - {c=>7,a=>67,b=>7,d=>4} 43003f01 43003f01 43003f01 0043fe00 43003f01 43003f01 0043fe00 43003f01 0043fe00 - {c=>1,a=>57,b=>7,d=>4} 39000f01 39000f01 39000f01 0039e600 39000f01 39000f01 0039e600 39000f01 0039e600 - {c=>7,a=>56,b=>4,d=>2} 3800bc00 3800bc00 3800bc00 00389d00 3800bc00 3800bc00 00389d00 3800bc00 00389d00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>13432198,c=>4,a=>37,b=>0,d=>6} 2500a00186f5cc00 2500a00186f5cc00 2500a00186f5cc00 002513000ccf5860 2500a00186f5cc00 2500a00186f5cc00 002513000ccf5860 2500a00186f5cc00 002513000ccf5860 - {e=>56807926,c=>1,a=>40,b=>5,d=>2} 28008d00f6d16203 28008d00f6d16203 28008d00f6d16203 0028a500362d1f60 28008d00f6d16203 28008d00f6d16203 0028a500362d1f60 28008d00f6d16203 0028a500362d1f60 - {e=>135705606,c=>5,a=>-117,b=>1,d=>2} 8bffa90006b41608 8bffa90006b41608 8bffa90006b41608 ff8b3500816b4060 8bffa90006b41608 8bffa90006b41608 ff8b3500816b4060 8bffa90006b41608 ff8b3500816b4060 - {e=>57461598,c=>5,a=>-92,b=>1,d=>0} a4ff29005ecb6c03 a4ff29005ecb6c03 a4ff29005ecb6c03 ffa4340036ccb5e0 a4ff29005ecb6c03 a4ff29005ecb6c03 ffa4340036ccb5e0 a4ff29005ecb6c03 ffa4340036ccb5e0 - {e=>47673734,c=>0,a=>-17,b=>2,d=>4} efff02018671d702 efff02018671d702 efff02018671d702 ffef42002d771860 efff02018671d702 efff02018671d702 ffef42002d771860 efff02018671d702 ffef42002d771860 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>161341178,c=>6,a=>41,b=>3,d=>6,f=>4} 2900b301fade9d49 2900b301fade9d49 2900b301fade9d49 00297b0099ddefa8 2900b301fade9d49 2900b301fade9d49 00297b0099ddefa8 2900b301fade9d49 00297b0099ddefa8 - {e=>17636513,c=>4,a=>97,b=>1,d=>0,f=>7} 61002100a11c0d71 61002100a11c0d71 61002100a11c0d71 0061300010d1ca1e 61002100a11c0d71 61002100a11c0d71 0061300010d1ca1e 61002100a11c0d71 0061300010d1ca1e - {e=>71589661,c=>4,a=>83,b=>1,d=>4,f=>3} 530021011d5f4434 530021011d5f4434 530021011d5f4434 005332004445f1d6 530021011d5f4434 530021011d5f4434 005332004445f1d6 530021011d5f4434 005332004445f1d6 - {e=>130474327,c=>1,a=>95,b=>0,d=>6,f=>2} 5f00880157e1c627 5f00880157e1c627 5f00880157e1c627 005f07007c6e1574 5f00880157e1c627 5f00880157e1c627 005f07007c6e1574 5f00880157e1c627 005f07007c6e1574 - {e=>97397382,c=>1,a=>47,b=>1,d=>2,f=>2} 2f008900862ace25 2f008900862ace25 2f008900862ace25 002f25005ce2a864 2f008900862ace25 2f008900862ace25 002f25005ce2a864 2f008900862ace25 002f25005ce2a864 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>212274530,c=>6,a=>61,g=>1,b=>5,d=>1,f=>6} 3d007500620da76c01000000 3d007500620da76c01000000 3d007500620da76c01000000 003db880ca70d62c40000000 3d007500620da76c01000000 3d007500620da76c01000000 003db880ca70d62c40000000 3d007500620da76c01000000 003db880ca70d62c40000000 - {e=>84374245,c=>6,a=>105,g=>1,b=>3,d=>2,f=>4} 6900b300e572074501000000 6900b300e572074501000000 6900b300e572074501000000 0069790050772e5840000000 6900b300e572074501000000 6900b300e572074501000000 0069790050772e5840000000 6900b300e572074501000000 0069790050772e5840000000 - {e=>59588346,c=>5,a=>-128,g=>1,b=>7,d=>7,f=>2} 80ffef01fa3e8d2301000000 80ffef01fa3e8d2301000000 80ffef01fa3e8d2301000000 ff80f78038d3efa440000000 80ffef01fa3e8d2301000000 80ffef01fa3e8d2301000000 ff80f78038d3efa440000000 80ffef01fa3e8d2301000000 ff80f78038d3efa440000000 - {e=>183955461,c=>3,a=>33,g=>3,b=>6,d=>7,f=>3} 2100de0105f0f63a03000000 2100de0105f0f63a03000000 2100de0105f0f63a03000000 0021cf80af6f0056c0000000 2100de0105f0f63a03000000 2100de0105f0f63a03000000 0021cf80af6f0056c0000000 2100de0105f0f63a03000000 0021cf80af6f0056c0000000 - {e=>192083138,c=>3,a=>-69,g=>3,b=>4,d=>0,f=>2} bbff1c00c2f4722b03000000 bbff1c00c2f4722b03000000 bbff1c00c2f4722b03000000 ffbb8c00b72f4c24c0000000 bbff1c00c2f4722b03000000 bbff1c00c2f4722b03000000 ffbb8c00b72f4c24c0000000 bbff1c00c2f4722b03000000 ffbb8c00b72f4c24c0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>113601201,a=>91,d=>3,c=>3,h=>3432,b=>1,g=>0,f=>2} 5b00d900b16ac526a0350000 5b00d900b16ac526a0350000 5b00d900b16ac526a0350000 005b2d806c56ab141ad00000 5b00d900b16ac526a0350000 5b00d900b16ac526a0350000 005b2d806c56ab141ad00000 5b00d900b16ac526a0350000 005b2d806c56ab141ad00000 - {e=>203592947,a=>15,d=>7,c=>1,h=>5527,b=>6,g=>0,f=>7} 0f00ce01f394227c5c560000 0f00ce01f394227c5c560000 0f00ce01f394227c5c560000 000fc780c2294f3e2b2e0000 0f00ce01f394227c5c560000 0f00ce01f394227c5c560000 000fc780c2294f3e2b2e0000 0f00ce01f394227c5c560000 000fc780c2294f3e2b2e0000 - {e=>20997174,a=>-60,d=>7,c=>4,h=>6515,b=>6,g=>0,f=>0} c4ffe60136644001cc650000 c4ffe60136644001cc650000 c4ffe60136644001cc650000 ffc4d3801406436032e60000 c4ffe60136644001cc650000 c4ffe60136644001cc650000 ffc4d3801406436032e60000 c4ffe60136644001cc650000 ffc4d3801406436032e60000 - {e=>235268567,a=>-47,d=>5,c=>4,h=>1813,b=>6,g=>2,f=>7} d1ff6601d7e9057e561c0000 d1ff6601d7e9057e561c0000 d1ff6601d7e9057e561c0000 ffd1d280e05e9d7e8e2a0000 d1ff6601d7e9057e561c0000 d1ff6601d7e9057e561c0000 ffd1d280e05e9d7e8e2a0000 d1ff6601d7e9057e561c0000 ffd1d280e05e9d7e8e2a0000 - {e=>104426910,a=>-85,d=>3,c=>1,h=>4758,b=>4,g=>2,f=>1} abffcc009e6d39165a4a0000 abffcc009e6d39165a4a0000 abffcc009e6d39165a4a0000 ffab85806396d9e2a52c0000 abffcc009e6d39165a4a0000 abffcc009e6d39165a4a0000 ffab85806396d9e2a52c0000 abffcc009e6d39165a4a0000 ffab85806396d9e2a52c0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>12539432,a=>-13,d=>1,c=>5,h=>262,b=>4,g=>3,f=>0,i=>197} f3ff6c002856bf001b04c500 f3ff6c002856bf001b04c500 f3ff6c002856bf001b04c500 fff394800bf56280c20cc500 f3ff6c002856bf001b04c500 f3ff6c002856bf001b04c500 fff394800bf56280c20cc500 f3ff6c002856bf001b04c500 fff394800bf56280c20cc500 - {e=>121930746,a=>112,d=>4,c=>3,h=>1222,b=>7,g=>1,f=>5,i=>13} 70001f01fa83445719130d00 70001f01fa83445719130d00 70001f01fa83445719130d00 0070ee0074483faa498c0d00 70001f01fa83445719130d00 70001f01fa83445719130d00 0070ee0074483faa498c0d00 70001f01fa83445719130d00 0070ee0074483faa498c0d00 - {e=>212968800,a=>104,d=>5,c=>7,h=>2223,b=>4,g=>2,f=>6,i=>9} 68007c0160a5b16cbe220900 68007c0160a5b16cbe220900 68007c0160a5b16cbe220900 00689e80cb1a560c915e0900 68007c0160a5b16cbe220900 68007c0160a5b16cbe220900 00689e80cb1a560c915e0900 68007c0160a5b16cbe220900 00689e80cb1a560c915e0900 - {e=>48555818,a=>-18,d=>2,c=>7,h=>3063,b=>4,g=>1,f=>1,i=>165} eeffbc002ae7e412dd2fa500 eeffbc002ae7e412dd2fa500 eeffbc002ae7e412dd2fa500 ffee9d002e4e72a257eea500 eeffbc002ae7e412dd2fa500 eeffbc002ae7e412dd2fa500 ffee9d002e4e72a257eea500 eeffbc002ae7e412dd2fa500 ffee9d002e4e72a257eea500 - {e=>204417579,a=>18,d=>3,c=>6,h=>3751,b=>6,g=>1,f=>5,i=>20} 1200f6002b2a2f5c9d3a1400 1200f6002b2a2f5c9d3a1400 1200f6002b2a2f5c9d3a1400 0012d980c2f2a2ba5d4e1400 1200f6002b2a2f5c9d3a1400 1200f6002b2a2f5c9d3a1400 0012d980c2f2a2ba5d4e1400 1200f6002b2a2f5c9d3a1400 0012d980c2f2a2ba5d4e1400 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; }; - {a=>3,b=>1} 0300000001000000 0300000001000000 0300000001000000 0000000320000000 0300000001000000 0300000001000000 0000000320000000 0300000001000000 0000000320000000 - {a=>-79,b=>0} b1ffffff00000000 b1ffffff00000000 b1ffffff00000000 ffffffb100000000 b1ffffff00000000 b1ffffff00000000 ffffffb100000000 b1ffffff00000000 ffffffb100000000 - {a=>22,b=>0} 1600000000000000 1600000000000000 1600000000000000 0000001600000000 1600000000000000 1600000000000000 0000001600000000 1600000000000000 0000001600000000 - {a=>-61,b=>4} c3ffffff04000000 c3ffffff04000000 c3ffffff04000000 ffffffc380000000 c3ffffff04000000 c3ffffff04000000 ffffffc380000000 c3ffffff04000000 ffffffc380000000 - {a=>4,b=>5} 0400000005000000 0400000005000000 0400000005000000 00000004a0000000 0400000005000000 0400000005000000 00000004a0000000 0400000005000000 00000004a0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>15,b=>2} 0f0000000a000000 0f0000000a000000 0f0000000a000000 0000000f44000000 0f0000000a000000 0f0000000a000000 0000000f44000000 0f0000000a000000 0000000f44000000 - {c=>6,a=>8,b=>1} 0800000031000000 0800000031000000 0800000031000000 0000000838000000 0800000031000000 0800000031000000 0000000838000000 0800000031000000 0000000838000000 - {c=>7,a=>20,b=>5} 140000003d000000 140000003d000000 140000003d000000 00000014bc000000 140000003d000000 140000003d000000 00000014bc000000 140000003d000000 00000014bc000000 - {c=>2,a=>65,b=>6} 4100000016000000 4100000016000000 4100000016000000 00000041c8000000 4100000016000000 4100000016000000 00000041c8000000 4100000016000000 00000041c8000000 - {c=>6,a=>27,b=>7} 1b00000037000000 1b00000037000000 1b00000037000000 0000001bf8000000 1b00000037000000 1b00000037000000 0000001bf8000000 1b00000037000000 0000001bf8000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>121,b=>6,d=>0} 7900000026000000 7900000026000000 7900000026000000 00000079d0000000 7900000026000000 7900000026000000 00000079d0000000 7900000026000000 00000079d0000000 - {c=>7,a=>-95,b=>4,d=>6} a1ffffffbc010000 a1ffffffbc010000 a1ffffffbc010000 ffffffa19f000000 a1ffffffbc010000 a1ffffffbc010000 ffffffa19f000000 a1ffffffbc010000 ffffffa19f000000 - {c=>5,a=>-88,b=>5,d=>4} a8ffffff2d010000 a8ffffff2d010000 a8ffffff2d010000 ffffffa8b6000000 a8ffffff2d010000 a8ffffff2d010000 ffffffa8b6000000 a8ffffff2d010000 ffffffa8b6000000 - {c=>6,a=>101,b=>5,d=>1} 6500000075000000 6500000075000000 6500000075000000 00000065b8800000 6500000075000000 6500000075000000 00000065b8800000 6500000075000000 00000065b8800000 - {c=>7,a=>24,b=>5,d=>6} 18000000bd010000 18000000bd010000 18000000bd010000 00000018bf000000 18000000bd010000 18000000bd010000 00000018bf000000 18000000bd010000 00000018bf000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>169306690,c=>2,a=>21,b=>0,d=>6} 1500000090010000426a170a 1500000090010000426a170a 1500000090010000426a170a 000000150b000000a176a420 1500000090010000426a170a 1500000090010000426a170a 000000150b000000a176a420 1500000090010000426a170a 000000150b000000a176a420 - {e=>49555571,c=>7,a=>7,b=>1,d=>7} 07000000f90100007328f402 07000000f90100007328f402 07000000f90100007328f402 000000073f8000002f428730 07000000f90100007328f402 07000000f90100007328f402 000000073f8000002f428730 07000000f90100007328f402 000000073f8000002f428730 - {e=>137008742,c=>3,a=>-69,b=>1,d=>4} bbffffff1901000066962a08 bbffffff1901000066962a08 bbffffff1901000066962a08 ffffffbb2e00000082a96660 bbffffff1901000066962a08 bbffffff1901000066962a08 ffffffbb2e00000082a96660 bbffffff1901000066962a08 ffffffbb2e00000082a96660 - {e=>85806609,c=>1,a=>-17,b=>5,d=>3} efffffffcd000000114e1d05 efffffffcd000000114e1d05 efffffffcd000000114e1d05 ffffffefa580000051d4e110 efffffffcd000000114e1d05 efffffffcd000000114e1d05 ffffffefa580000051d4e110 efffffffcd000000114e1d05 ffffffefa580000051d4e110 - {e=>133506977,c=>6,a=>93,b=>0,d=>6} 5d000000b0010000a127f507 5d000000b0010000a127f507 5d000000b0010000a127f507 0000005d1b0000007f527a10 5d000000b0010000a127f507 5d000000b0010000a127f507 0000005d1b0000007f527a10 5d000000b0010000a127f507 0000005d1b0000007f527a10 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>156208632,c=>7,a=>-84,b=>2,d=>2,f=>2} acffffffba000000f88d4f29 acffffffba000000f88d4f29 acffffffba000000f88d4f29 ffffffac5d00000094f8df84 acffffffba000000f88d4f29 acffffffba000000f88d4f29 ffffffac5d00000094f8df84 acffffffba000000f88d4f29 ffffffac5d00000094f8df84 - {e=>130617554,c=>4,a=>-17,b=>6,d=>7,f=>0} efffffffe6010000d210c907 efffffffe6010000d210c907 efffffffe6010000d210c907 ffffffefd38000007c910d20 efffffffe6010000d210c907 efffffffe6010000d210c907 ffffffefd38000007c910d20 efffffffe6010000d210c907 ffffffefd38000007c910d20 - {e=>95191856,c=>5,a=>65,b=>4,d=>6,f=>6} 41000000ac0100003083ac65 41000000ac0100003083ac65 41000000ac0100003083ac65 00000041970000005ac8330c 41000000ac0100003083ac65 41000000ac0100003083ac65 00000041970000005ac8330c 41000000ac0100003083ac65 00000041970000005ac8330c - {e=>142523577,c=>4,a=>114,b=>5,d=>2,f=>1} 72000000a5000000b9bc7e18 72000000a5000000b9bc7e18 72000000a5000000b9bc7e18 00000072b100000087ebcb92 72000000a5000000b9bc7e18 72000000a5000000b9bc7e18 00000072b100000087ebcb92 72000000a5000000b9bc7e18 00000072b100000087ebcb92 - {e=>122537461,c=>7,a=>-44,b=>5,d=>0,f=>2} d4ffffff3d000000f5c54d27 d4ffffff3d000000f5c54d27 d4ffffff3d000000f5c54d27 ffffffd4bc00000074dc5f54 d4ffffff3d000000f5c54d27 d4ffffff3d000000f5c54d27 ffffffd4bc00000074dc5f54 d4ffffff3d000000f5c54d27 ffffffd4bc00000074dc5f54 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>144539243,c=>5,a=>29,g=>2,b=>5,d=>0,f=>6} 1d0000002d0000006b7e9d6802000000 1d0000002d0000006b7e9d6802000000 1d0000002d0000006b7e9d6802000000 0000001db400000089d7e6bc80000000 1d0000002d0000006b7e9d6802000000 1d0000002d0000006b7e9d6802000000 0000001db400000089d7e6bc80000000 1d0000002d0000006b7e9d6802000000 0000001db400000089d7e6bc80000000 - {e=>139635304,c=>6,a=>123,g=>2,b=>7,d=>7,f=>3} 7b000000f701000068aa523802000000 7b000000f701000068aa523802000000 7b000000f701000068aa523802000000 0000007bfb800000852aa68680000000 7b000000f701000068aa523802000000 7b000000f701000068aa523802000000 0000007bfb800000852aa68680000000 7b000000f701000068aa523802000000 0000007bfb800000852aa68680000000 - {e=>8969412,c=>7,a=>-110,g=>2,b=>1,d=>2,f=>2} 92ffffffb9000000c4dc882002000000 92ffffffb9000000c4dc882002000000 92ffffffb9000000c4dc882002000000 ffffff923d000000088dcc4480000000 92ffffffb9000000c4dc882002000000 92ffffffb9000000c4dc882002000000 ffffff923d000000088dcc4480000000 92ffffffb9000000c4dc882002000000 ffffff923d000000088dcc4480000000 - {e=>110093836,c=>0,a=>-32,g=>3,b=>2,d=>0,f=>5} e0ffffff020000000ce68f5603000000 e0ffffff020000000ce68f5603000000 e0ffffff020000000ce68f5603000000 ffffffe04000000068fe60cac0000000 e0ffffff020000000ce68f5603000000 e0ffffff020000000ce68f5603000000 ffffffe04000000068fe60cac0000000 e0ffffff020000000ce68f5603000000 ffffffe04000000068fe60cac0000000 - {e=>18345492,c=>1,a=>14,g=>2,b=>0,d=>1,f=>1} 0e0000004800000014ee171102000000 0e0000004800000014ee171102000000 0e0000004800000014ee171102000000 0000000e04800000117ee14280000000 0e0000004800000014ee171102000000 0e0000004800000014ee171102000000 0000000e04800000117ee14280000000 0e0000004800000014ee171102000000 0000000e04800000117ee14280000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>243213622,a=>-120,d=>4,c=>7,h=>7881,b=>7,g=>3,f=>2} 88ffffff3f01000036257f2e277b0000 88ffffff3f01000036257f2e277b0000 88ffffff3f01000036257f2e277b0000 ffffff88fe000000e7f25364fd920000 88ffffff3f01000036257f2e277b0000 88ffffff3f01000036257f2e277b0000 ffffff88fe000000e7f25364fd920000 88ffffff3f01000036257f2e277b0000 ffffff88fe000000e7f25364fd920000 - {e=>86919501,a=>53,d=>5,c=>5,h=>380,b=>0,g=>0,f=>0} 35000000680100004d492e05f0050000 35000000680100004d492e05f0050000 35000000680100004d492e05f0050000 000000351680000052e494d002f80000 35000000680100004d492e05f0050000 35000000680100004d492e05f0050000 000000351680000052e494d002f80000 35000000680100004d492e05f0050000 000000351680000052e494d002f80000 - {e=>147012077,a=>32,d=>1,c=>6,h=>2230,b=>1,g=>2,f=>7} 2000000071000000ed39c378da220000 2000000071000000ed39c378da220000 2000000071000000ed39c378da220000 00000020388000008c339ede916c0000 2000000071000000ed39c378da220000 2000000071000000ed39c378da220000 00000020388000008c339ede916c0000 2000000071000000ed39c378da220000 00000020388000008c339ede916c0000 - {e=>23638499,a=>-48,d=>3,c=>7,h=>5753,b=>7,g=>2,f=>6} d0ffffffff000000e3b16861e6590000 d0ffffffff000000e3b16861e6590000 d0ffffffff000000e3b16861e6590000 ffffffd0fd800000168b1e3cacf20000 d0ffffffff000000e3b16861e6590000 d0ffffffff000000e3b16861e6590000 ffffffd0fd800000168b1e3cacf20000 d0ffffffff000000e3b16861e6590000 ffffffd0fd800000168b1e3cacf20000 - {e=>136927608,a=>-38,d=>6,c=>7,h=>773,b=>3,g=>2,f=>5} daffffffbb01000078592958160c0000 daffffffbb01000078592958160c0000 daffffffbb01000078592958160c0000 ffffffda7f0000008295978a860a0000 daffffffbb01000078592958160c0000 daffffffbb01000078592958160c0000 ffffffda7f0000008295978a860a0000 daffffffbb01000078592958160c0000 ffffffda7f0000008295978a860a0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>145884245,a=>43,d=>4,c=>7,h=>3698,b=>4,g=>0,f=>0,i=>117} 2b0000003c0100005504b208c8397500 2b0000003c0100005504b208c8397500 2b0000003c0100005504b208c8397500 0000002b9e0000008b2045501ce47500 2b0000003c0100005504b208c8397500 2b0000003c0100005504b208c8397500 0000002b9e0000008b2045501ce47500 2b0000003c0100005504b208c8397500 0000002b9e0000008b2045501ce47500 - {e=>148618604,a=>-115,d=>5,c=>6,h=>3263,b=>7,g=>2,f=>1,i=>253} 8dffffff770100006cbddb18fe32fd00 8dffffff770100006cbddb18fe32fd00 8dffffff770100006cbddb18fe32fd00 ffffff8dfa8000008dbbd6c2997efd00 8dffffff770100006cbddb18fe32fd00 8dffffff770100006cbddb18fe32fd00 ffffff8dfa8000008dbbd6c2997efd00 8dffffff770100006cbddb18fe32fd00 ffffff8dfa8000008dbbd6c2997efd00 - {e=>226652794,a=>48,d=>5,c=>2,h=>2101,b=>4,g=>1,f=>3,i=>16} 30000000540100007a72823dd5201000 30000000540100007a72823dd5201000 30000000540100007a72823dd5201000 000000308a800000d82727a6506a1000 30000000540100007a72823dd5201000 30000000540100007a72823dd5201000 000000308a800000d82727a6506a1000 30000000540100007a72823dd5201000 000000308a800000d82727a6506a1000 - {e=>137257539,a=>-126,d=>4,c=>7,h=>3963,b=>0,g=>3,f=>1,i=>27} 82ffffff3801000043622e18ef3d1b00 82ffffff3801000043622e18ef3d1b00 82ffffff3801000043622e18ef3d1b00 ffffff821e00000082e62432def61b00 82ffffff3801000043622e18ef3d1b00 82ffffff3801000043622e18ef3d1b00 ffffff821e00000082e62432def61b00 82ffffff3801000043622e18ef3d1b00 ffffff821e00000082e62432def61b00 - {e=>106849035,a=>-61,d=>5,c=>4,h=>1757,b=>7,g=>1,f=>5,i=>42} c3ffffff670100000b635e56751b2a00 c3ffffff670100000b635e56751b2a00 c3ffffff670100000b635e56751b2a00 ffffffc3f280000065e630ba4dba2a00 c3ffffff670100000b635e56751b2a00 c3ffffff670100000b635e56751b2a00 ffffffc3f280000065e630ba4dba2a00 c3ffffff670100000b635e56751b2a00 ffffffc3f280000065e630ba4dba2a00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; }; - {a=>72,b=>5} 4800000005000000 48000000000000000500000000000000 48000000000000000500000000000000 00000048a0000000 4800000005000000 4800000005000000 0000000000000048a000000000000000 4800000005000000 00000048a0000000 - {a=>-71,b=>1} b9ffffff01000000 b9ffffffffffffff0100000000000000 b9ffffffffffffff0100000000000000 ffffffb920000000 b9ffffff01000000 b9ffffff01000000 ffffffffffffffb92000000000000000 b9ffffff01000000 ffffffb920000000 - {a=>-67,b=>4} bdffffff04000000 bdffffffffffffff0400000000000000 bdffffffffffffff0400000000000000 ffffffbd80000000 bdffffff04000000 bdffffff04000000 ffffffffffffffbd8000000000000000 bdffffff04000000 ffffffbd80000000 - {a=>-126,b=>2} 82ffffff02000000 82ffffffffffffff0200000000000000 82ffffffffffffff0200000000000000 ffffff8240000000 82ffffff02000000 82ffffff02000000 ffffffffffffff824000000000000000 82ffffff02000000 ffffff8240000000 - {a=>126,b=>2} 7e00000002000000 7e000000000000000200000000000000 7e000000000000000200000000000000 0000007e40000000 7e00000002000000 7e00000002000000 000000000000007e4000000000000000 7e00000002000000 0000007e40000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>2,a=>122,b=>0} 7a00000010000000 7a000000000000001000000000000000 7a000000000000001000000000000000 0000007a08000000 7a00000010000000 7a00000010000000 000000000000007a0800000000000000 7a00000010000000 0000007a08000000 - {c=>7,a=>-32,b=>1} e0ffffff39000000 e0ffffffffffffff3900000000000000 e0ffffffffffffff3900000000000000 ffffffe03c000000 e0ffffff39000000 e0ffffff39000000 ffffffffffffffe03c00000000000000 e0ffffff39000000 ffffffe03c000000 - {c=>1,a=>33,b=>2} 210000000a000000 21000000000000000a00000000000000 21000000000000000a00000000000000 0000002144000000 210000000a000000 210000000a000000 00000000000000214400000000000000 210000000a000000 0000002144000000 - {c=>2,a=>-13,b=>6} f3ffffff16000000 f3ffffffffffffff1600000000000000 f3ffffffffffffff1600000000000000 fffffff3c8000000 f3ffffff16000000 f3ffffff16000000 fffffffffffffff3c800000000000000 f3ffffff16000000 fffffff3c8000000 - {c=>6,a=>-22,b=>1} eaffffff31000000 eaffffffffffffff3100000000000000 eaffffffffffffff3100000000000000 ffffffea38000000 eaffffff31000000 eaffffff31000000 ffffffffffffffea3800000000000000 eaffffff31000000 ffffffea38000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>-120,b=>1,d=>6} 88ffffffa1010000 88ffffffffffffffa101000000000000 88ffffffffffffffa101000000000000 ffffff8833000000 88ffffffa1010000 88ffffffa1010000 ffffffffffffff883300000000000000 88ffffffa1010000 ffffff8833000000 - {c=>6,a=>-100,b=>5,d=>5} 9cffffff75010000 9cffffffffffffff7501000000000000 9cffffffffffffff7501000000000000 ffffff9cba800000 9cffffff75010000 9cffffff75010000 ffffffffffffff9cba80000000000000 9cffffff75010000 ffffff9cba800000 - {c=>7,a=>70,b=>5,d=>2} 46000000bd000000 4600000000000000bd00000000000000 4600000000000000bd00000000000000 00000046bd000000 46000000bd000000 46000000bd000000 0000000000000046bd00000000000000 46000000bd000000 00000046bd000000 - {c=>5,a=>-124,b=>3,d=>0} 84ffffff2b000000 84ffffffffffffff2b00000000000000 84ffffffffffffff2b00000000000000 ffffff8474000000 84ffffff2b000000 84ffffff2b000000 ffffffffffffff847400000000000000 84ffffff2b000000 ffffff8474000000 - {c=>7,a=>106,b=>6,d=>3} 6a000000fe000000 6a00000000000000fe00000000000000 6a00000000000000fe00000000000000 0000006add800000 6a000000fe000000 6a000000fe000000 000000000000006add80000000000000 6a000000fe000000 0000006add800000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>238948103,c=>0,a=>46,b=>1,d=>7} 2e000000c1010000070f3e0e 2e00000000000000c1010000070f3e0e 2e00000000000000c1010000070f3e0e 0000002e23800000e3e0f070 2e000000c1010000070f3e0e 2e000000c1010000070f3e0e 000000000000002e23800000e3e0f070 2e000000c1010000070f3e0e 0000002e23800000e3e0f070 - {e=>85833411,c=>2,a=>41,b=>3,d=>7} 29000000d3010000c3b61d05 2900000000000000d3010000c3b61d05 2900000000000000d3010000c3b61d05 000000296b80000051db6c30 29000000d3010000c3b61d05 29000000d3010000c3b61d05 00000000000000296b80000051db6c30 29000000d3010000c3b61d05 000000296b80000051db6c30 - {e=>85862305,c=>4,a=>-94,b=>6,d=>4} a2ffffff26010000a1271e05 a2ffffffffffffff26010000a1271e05 a2ffffffffffffff26010000a1271e05 ffffffa2d200000051e27a10 a2ffffff26010000a1271e05 a2ffffff26010000a1271e05 ffffffffffffffa2d200000051e27a10 a2ffffff26010000a1271e05 ffffffa2d200000051e27a10 - {e=>89255584,c=>4,a=>26,b=>1,d=>0} 1a00000021000000a0ee5105 1a0000000000000021000000a0ee5105 1a0000000000000021000000a0ee5105 0000001a30000000551eea00 1a00000021000000a0ee5105 1a00000021000000a0ee5105 000000000000001a30000000551eea00 1a00000021000000a0ee5105 0000001a30000000551eea00 - {e=>218745112,c=>5,a=>-41,b=>3,d=>0} d7ffffff2b00000018c9090d d7ffffffffffffff2b00000018c9090d d7ffffffffffffff2b00000018c9090d ffffffd774000000d09c9180 d7ffffff2b00000018c9090d d7ffffff2b00000018c9090d ffffffffffffffd774000000d09c9180 d7ffffff2b00000018c9090d ffffffd774000000d09c9180 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>181902780,c=>3,a=>-112,b=>6,d=>7,f=>4} 90ffffffde010000bc9dd74a 90ffffffffffffffde010000bc9dd74a 90ffffffffffffffde010000bc9dd74a ffffff90cf800000ad79dbc8 90ffffffde010000bc9dd74a 90ffffffde010000bc9dd74a ffffffffffffff90cf800000ad79dbc8 90ffffffde010000bc9dd74a ffffff90cf800000ad79dbc8 - {e=>243947917,c=>2,a=>-87,b=>0,d=>1,f=>7} a9ffffff500000008d598a7e a9ffffffffffffff500000008d598a7e a9ffffffffffffff500000008d598a7e ffffffa908800000e8a598de a9ffffff500000008d598a7e a9ffffff500000008d598a7e ffffffffffffffa908800000e8a598de a9ffffff500000008d598a7e ffffffa908800000e8a598de - {e=>87380681,c=>3,a=>-46,b=>2,d=>3,f=>1} d2ffffffda000000c9523515 d2ffffffffffffffda000000c9523515 d2ffffffffffffffda000000c9523515 ffffffd24d80000053552c92 d2ffffffda000000c9523515 d2ffffffda000000c9523515 ffffffffffffffd24d80000053552c92 d2ffffffda000000c9523515 ffffffd24d80000053552c92 - {e=>23417204,c=>4,a=>50,b=>3,d=>0,f=>5} 320000002300000074516551 32000000000000002300000074516551 32000000000000002300000074516551 00000032700000001655174a 320000002300000074516551 320000002300000074516551 0000000000000032700000001655174a 320000002300000074516551 00000032700000001655174a - {e=>33123043,c=>0,a=>116,b=>6,d=>0,f=>4} 7400000006000000e36af941 740000000000000006000000e36af941 740000000000000006000000e36af941 00000074c00000001f96ae38 7400000006000000e36af941 7400000006000000e36af941 0000000000000074c00000001f96ae38 7400000006000000e36af941 00000074c00000001f96ae38 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>84208039,c=>0,a=>14,g=>1,b=>2,d=>1,f=>0} 0e00000042000000a7e9040501000000 0e0000000000000042000000a7e904050100000000000000 0e0000000000000042000000a7e904050100000000000000 0000000e40800000504e9a7040000000 0e00000042000000a7e9040501000000 0e00000042000000a7e9040501000000 000000000000000e40800000504e9a704000000000000000 0e00000042000000a7e9040501000000 0000000e40800000504e9a7040000000 - {e=>116421098,c=>1,a=>-89,g=>2,b=>6,d=>4,f=>6} a7ffffff0e010000ea71f06602000000 a7ffffffffffffff0e010000ea71f0660200000000000000 a7ffffffffffffff0e010000ea71f0660200000000000000 ffffffa7c60000006f071eac80000000 a7ffffff0e010000ea71f06602000000 a7ffffff0e010000ea71f06602000000 ffffffffffffffa7c60000006f071eac8000000000000000 a7ffffff0e010000ea71f06602000000 ffffffa7c60000006f071eac80000000 - {e=>233446560,c=>1,a=>-126,g=>0,b=>7,d=>1,f=>0} 82ffffff4f000000a01cea0d00000000 82ffffffffffffff4f000000a01cea0d0000000000000000 82ffffffffffffff4f000000a01cea0d0000000000000000 ffffff82e4800000dea1ca0000000000 82ffffff4f000000a01cea0d00000000 82ffffff4f000000a01cea0d00000000 ffffffffffffff82e4800000dea1ca000000000000000000 82ffffff4f000000a01cea0d00000000 ffffff82e4800000dea1ca0000000000 - {e=>196256397,c=>2,a=>-106,g=>1,b=>1,d=>5,f=>0} 96ffffff510100008da2b20b01000000 96ffffffffffffff510100008da2b20b0100000000000000 96ffffffffffffff510100008da2b20b0100000000000000 ffffff962a800000bb2a28d040000000 96ffffff510100008da2b20b01000000 96ffffff510100008da2b20b01000000 ffffffffffffff962a800000bb2a28d04000000000000000 96ffffff510100008da2b20b01000000 ffffff962a800000bb2a28d040000000 - {e=>98949361,c=>1,a=>69,g=>3,b=>4,d=>4,f=>0} 450000000c010000f1d8e50503000000 45000000000000000c010000f1d8e5050300000000000000 45000000000000000c010000f1d8e5050300000000000000 00000045860000005e5d8f10c0000000 450000000c010000f1d8e50503000000 450000000c010000f1d8e50503000000 0000000000000045860000005e5d8f10c000000000000000 450000000c010000f1d8e50503000000 00000045860000005e5d8f10c0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>154431445,a=>-110,d=>6,c=>7,h=>5540,b=>6,g=>1,f=>7} 92ffffffbe010000d56f347991560000 92ffffffffffffffbe010000d56f34799156000000000000 92ffffffffffffffbe010000d56f34799156000000000000 ffffff92df0000009346fd5e6b480000 92ffffffbe010000d56f347991560000 92ffffffbe010000d56f347991560000 ffffffffffffff92df0000009346fd5e6b48000000000000 92ffffffbe010000d56f347991560000 ffffff92df0000009346fd5e6b480000 - {e=>175556692,a=>-125,d=>1,c=>1,h=>2798,b=>5,g=>2,f=>5} 83ffffff4d00000054c8765aba2b0000 83ffffffffffffff4d00000054c8765aba2b000000000000 83ffffffffffffff4d00000054c8765aba2b000000000000 ffffff83a4800000a76c854a95dc0000 83ffffff4d00000054c8765aba2b0000 83ffffff4d00000054c8765aba2b0000 ffffffffffffff83a4800000a76c854a95dc000000000000 83ffffff4d00000054c8765aba2b0000 ffffff83a4800000a76c854a95dc0000 - {e=>165973282,a=>-23,d=>2,c=>0,h=>4321,b=>0,g=>0,f=>0} e9ffffff80000000228de40984430000 e9ffffffffffffff80000000228de4098443000000000000 e9ffffffffffffff80000000228de4098443000000000000 ffffffe9010000009e48d22021c20000 e9ffffff80000000228de40984430000 e9ffffff80000000228de40984430000 ffffffffffffffe9010000009e48d22021c2000000000000 e9ffffff80000000228de40984430000 ffffffe9010000009e48d22021c20000 - {e=>13388635,a=>38,d=>7,c=>3,h=>3576,b=>1,g=>1,f=>0} 26000000d90100005b4bcc00e1370000 2600000000000000d90100005b4bcc00e137000000000000 2600000000000000d90100005b4bcc00e137000000000000 000000262f8000000cc4b5b05bf00000 26000000d90100005b4bcc00e1370000 26000000d90100005b4bcc00e1370000 00000000000000262f8000000cc4b5b05bf0000000000000 26000000d90100005b4bcc00e1370000 000000262f8000000cc4b5b05bf00000 - {e=>21214690,a=>-124,d=>3,c=>4,h=>6149,b=>0,g=>3,f=>3} 84ffffffe0000000e2b5433117600000 84ffffffffffffffe0000000e2b543311760000000000000 84ffffffffffffffe0000000e2b543311760000000000000 ffffff8411800000143b5e26f00a0000 84ffffffe0000000e2b5433117600000 84ffffffe0000000e2b5433117600000 ffffffffffffff8411800000143b5e26f00a000000000000 84ffffffe0000000e2b5433117600000 ffffff8411800000143b5e26f00a0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>130293957,a=>-6,d=>3,c=>0,h=>3224,b=>7,g=>2,f=>1,i=>96} faffffffc7000000c520c41762326000 faffffffffffffffc7000000c520c4176232600000000000 faffffffffffffffc7000000c520c4176232600000000000 fffffffae18000007c420c5299306000 faffffffc7000000c520c41762326000 faffffffc7000000c520c41762326000 fffffffffffffffae18000007c420c529930600000000000 faffffffc7000000c520c41762326000 fffffffae18000007c420c5299306000 - {e=>22275050,a=>24,d=>7,c=>6,h=>4511,b=>7,g=>0,f=>3,i=>194} 18000000f7010000eae353317c46c200 1800000000000000f7010000eae353317c46c20000000000 1800000000000000f7010000eae353317c46c20000000000 00000018fb800000153e3ea6233ec200 18000000f7010000eae353317c46c200 18000000f7010000eae353317c46c200 0000000000000018fb800000153e3ea6233ec20000000000 18000000f7010000eae353317c46c200 00000018fb800000153e3ea6233ec200 - {e=>185744049,a=>-60,d=>7,c=>6,h=>1844,b=>6,g=>0,f=>2,i=>56} c4fffffff6010000b13a122bd01c3800 c4fffffffffffffff6010000b13a122bd01c380000000000 c4fffffffffffffff6010000b13a122bd01c380000000000 ffffffc4db800000b123ab140e683800 c4fffffff6010000b13a122bd01c3800 c4fffffff6010000b13a122bd01c3800 ffffffffffffffc4db800000b123ab140e68380000000000 c4fffffff6010000b13a122bd01c3800 ffffffc4db800000b123ab140e683800 - {e=>260322633,a=>-58,d=>5,c=>5,h=>6201,b=>7,g=>2,f=>2,i=>199} c6ffffff6f0100004935842fe660c700 c6ffffffffffffff6f0100004935842fe660c70000000000 c6ffffffffffffff6f0100004935842fe660c70000000000 ffffffc6f6800000f8435494b072c700 c6ffffff6f0100004935842fe660c700 c6ffffff6f0100004935842fe660c700 ffffffffffffffc6f6800000f8435494b072c70000000000 c6ffffff6f0100004935842fe660c700 ffffffc6f6800000f8435494b072c700 - {e=>148496573,a=>-115,d=>0,c=>0,h=>7411,b=>3,g=>0,f=>7,i=>14} 8dffffff03000000bde0d978cc730e00 8dffffffffffffff03000000bde0d978cc730e0000000000 8dffffffffffffff03000000bde0d978cc730e0000000000 ffffff8d600000008d9e0bde39e60e00 8dffffff03000000bde0d978cc730e00 8dffffff03000000bde0d978cc730e00 ffffffffffffff8d600000008d9e0bde39e60e0000000000 8dffffff03000000bde0d978cc730e00 ffffff8d600000008d9e0bde39e60e00 = typedef int foo; struct mixed_no_pack { unsigned int a:3; }; - {a=>7} 07000000 07000000 07000000 e0000000 07000000 07000000 e0000000 07000000 e0000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>7} 07000000 07000000 07000000 e0000000 07000000 07000000 e0000000 07000000 e0000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; }; - {a=>5,b=>3} 1d000000 1d000000 1d000000 ac000000 1d000000 1d000000 ac000000 1d000000 ac000000 - {a=>6,b=>-4} 26000000 26000000 26000000 d0000000 26000000 26000000 d0000000 26000000 d0000000 - {a=>7,b=>1} 0f000000 0f000000 0f000000 e4000000 0f000000 0f000000 e4000000 0f000000 e4000000 - {a=>4,b=>2} 14000000 14000000 14000000 88000000 14000000 14000000 88000000 14000000 88000000 - {a=>3,b=>2} 13000000 13000000 13000000 68000000 13000000 13000000 68000000 13000000 68000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>1,a=>6,b=>-4} 66000000 66000000 66000000 d0800000 66000000 66000000 d0800000 66000000 d0800000 - {c=>3,a=>2,b=>0} c2000000 c2000000 c2000000 41800000 c2000000 c2000000 41800000 c2000000 41800000 - {c=>1,a=>4,b=>-3} 6c000000 6c000000 6c000000 94800000 6c000000 6c000000 94800000 6c000000 94800000 - {c=>-4,a=>2,b=>-4} 22010000 22010000 22010000 52000000 22010000 22010000 52000000 22010000 52000000 - {c=>-3,a=>4,b=>-3} 6c010000 6c010000 6c010000 96800000 6c010000 6c010000 96800000 6c010000 96800000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>-3,a=>0,b=>-3,d=>3} 68070000 68070000 68070000 16b00000 68070000 68070000 16b00000 68070000 16b00000 - {c=>-4,a=>3,b=>3,d=>4} 1b090000 1b090000 1b090000 6e400000 1b090000 1b090000 6e400000 1b090000 6e400000 - {c=>-4,a=>4,b=>3,d=>1} 1c030000 1c030000 1c030000 8e100000 1c030000 1c030000 8e100000 1c030000 8e100000 - {c=>-1,a=>6,b=>-3,d=>0} ee010000 ee010000 ee010000 d7800000 ee010000 ee010000 d7800000 ee010000 d7800000 - {c=>0,a=>5,b=>2,d=>2} 15040000 15040000 15040000 a8200000 15040000 15040000 a8200000 15040000 a8200000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>0,c=>2,a=>1,b=>2,d=>6} 910c0000 910c0000 910c0000 29600000 910c0000 910c0000 29600000 910c0000 29600000 - {e=>-1,c=>-2,a=>6,b=>3,d=>7} 9e7f0000 9e7f0000 9e7f0000 cf7e0000 9e7f0000 9e7f0000 cf7e0000 9e7f0000 cf7e0000 - {e=>-1,c=>-2,a=>0,b=>0,d=>2} 80750000 80750000 80750000 032e0000 80750000 80750000 032e0000 80750000 032e0000 - {e=>0,c=>3,a=>6,b=>-1,d=>0} fe000000 fe000000 fe000000 dd800000 fe000000 fe000000 dd800000 fe000000 dd800000 - {e=>3,c=>-2,a=>1,b=>0,d=>7} 813f0000 813f0000 813f0000 23760000 813f0000 813f0000 23760000 813f0000 23760000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>2,c=>1,a=>2,b=>-4,d=>3,f=>6} 62260300 62260300 62260300 50b58000 62260300 62260300 50b58000 62260300 50b58000 - {e=>-2,c=>-2,a=>6,b=>1,d=>6,f=>0} 8e6d0000 8e6d0000 8e6d0000 c76c0000 8e6d0000 8e6d0000 c76c0000 8e6d0000 c76c0000 - {e=>1,c=>1,a=>3,b=>-4,d=>7,f=>5} 639e0200 639e0200 639e0200 70f34000 639e0200 639e0200 70f34000 639e0200 70f34000 - {e=>2,c=>2,a=>0,b=>-1,d=>3,f=>2} b8260100 b8260100 b8260100 1d348000 b8260100 b8260100 1d348000 b8260100 1d348000 - {e=>0,c=>3,a=>5,b=>2,d=>5,f=>2} d50a0100 d50a0100 d50a0100 a9d08000 d50a0100 d50a0100 a9d08000 d50a0100 a9d08000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>3,c=>-4,a=>1,b=>2,d=>1,f=>1} 11b30000 11b30000 11b30000 2a164000 11b30000 11b30000 2a164000 11b30000 2a164000 - {e=>-1,c=>-2,a=>5,b=>-1,d=>7,f=>2} bd7f0100 bd7f0100 bd7f0100 bf7e8000 bd7f0100 bd7f0100 bf7e8000 bd7f0100 bf7e8000 - {e=>-3,c=>-2,a=>2,b=>-2,d=>2,f=>3} b2d50100 b2d50100 b2d50100 5b2ac000 b2d50100 b2d50100 5b2ac000 b2d50100 5b2ac000 - {e=>-1,c=>-1,a=>7,b=>-1,d=>3,f=>1} fff70000 fff70000 fff70000 ffbe4000 fff70000 fff70000 ffbe4000 fff70000 ffbe4000 - {e=>-3,c=>2,a=>7,b=>-2,d=>5,f=>0} b75a0000 b75a0000 b75a0000 f95a0000 b75a0000 b75a0000 f95a0000 b75a0000 f95a0000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>0,c=>3,a=>3,g=>2,b=>0,d=>2,f=>7} c384030002000000 c384030002000000 c384030002000000 61a1c00040000000 c384030002000000 c384030002000000 61a1c00040000000 c384030002000000 61a1c00040000000 - {e=>1,c=>3,a=>0,g=>7,b=>1,d=>1,f=>4} c812020007000000 c812020007000000 c812020007000000 05930000e0000000 c812020007000000 c812020007000000 05930000e0000000 c812020007000000 05930000e0000000 - {e=>0,c=>3,a=>7,g=>0,b=>-2,d=>7,f=>2} f70e010000000000 f70e010000000000 f70e010000000000 f9f0800000000000 f70e010000000000 f70e010000000000 f9f0800000000000 f70e010000000000 f9f0800000000000 - {e=>-2,c=>3,a=>1,g=>2,b=>0,d=>2,f=>0} c164000002000000 c164000002000000 c164000002000000 21ac000040000000 c164000002000000 c164000002000000 21ac000040000000 c164000002000000 21ac000040000000 - {e=>2,c=>-1,a=>7,g=>5,b=>-2,d=>6,f=>7} f7ad030005000000 f7ad030005000000 f7ad030005000000 fbe5c000a0000000 f7ad030005000000 f7ad030005000000 fbe5c000a0000000 f7ad030005000000 fbe5c000a0000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>1,a=>0,d=>6,c=>-1,h=>3,b=>-1,g=>7,f=>6} f81d03001f000000 f81d03001f000000 f81d03001f000000 1fe38000ec000000 f81d03001f000000 f81d03001f000000 1fe38000ec000000 f81d03001f000000 1fe38000ec000000 - {e=>-4,a=>1,d=>3,c=>-4,h=>2,b=>2,g=>0,f=>5} 11c7020010000000 11c7020010000000 11c7020010000000 2a39400008000000 11c7020010000000 11c7020010000000 2a39400008000000 11c7020010000000 2a39400008000000 - {e=>2,a=>3,d=>1,c=>-4,h=>0,b=>-1,g=>0,f=>2} 3b23010000000000 3b23010000000000 3b23010000000000 7e14800000000000 3b23010000000000 3b23010000000000 7e14800000000000 3b23010000000000 7e14800000000000 - {e=>-2,a=>4,d=>4,c=>2,h=>-3,b=>-4,g=>7,f=>1} a4e800002f000000 a4e800002f000000 a4e800002f000000 914c4000f4000000 a4e800002f000000 a4e800002f000000 914c4000f4000000 a4e800002f000000 914c4000f4000000 - {e=>-2,a=>1,d=>2,c=>-1,h=>0,b=>-2,g=>5,f=>6} f165030005000000 f165030005000000 f165030005000000 3bad8000a0000000 f165030005000000 f165030005000000 3bad8000a0000000 f165030005000000 3bad8000a0000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>0,a=>3,d=>4,c=>-1,h=>3,b=>-2,g=>3,f=>4,i=>1} f30902005b000000 f30902005b000000 f30902005b000000 7bc100006c800000 f30902005b000000 f30902005b000000 7bc100006c800000 f30902005b000000 7bc100006c800000 - {e=>2,a=>5,d=>2,c=>1,h=>2,b=>-3,g=>4,f=>0,i=>3} 6d240000d4000000 6d240000d4000000 6d240000d4000000 b4a4000089800000 6d240000d4000000 6d240000d4000000 b4a4000089800000 6d240000d4000000 b4a4000089800000 - {e=>0,a=>5,d=>3,c=>2,h=>-3,b=>-1,g=>7,f=>7,i=>4} bd8603002f010000 bd8603002f010000 bd8603002f010000 bd31c000f6000000 bd8603002f010000 bd8603002f010000 bd31c000f6000000 bd8603002f010000 bd31c000f6000000 - {e=>-3,a=>5,d=>1,c=>1,h=>3,b=>-1,g=>3,f=>2,i=>6} 7d5201009b010000 7d5201009b010000 7d5201009b010000 bc9a80006f000000 7d5201009b010000 7d5201009b010000 bc9a80006f000000 7d5201009b010000 bc9a80006f000000 - {e=>3,a=>3,d=>6,c=>1,h=>0,b=>0,g=>3,f=>2,i=>7} 433c0100c3010000 433c0100c3010000 433c0100c3010000 60e6800063800000 433c0100c3010000 433c0100c3010000 60e6800063800000 433c0100c3010000 60e6800063800000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>-1,a=>4,d=>4,j=>-12,c=>2,h=>1,b=>-1,g=>7,f=>7,i=>0} bcf803000f00f400 bcf803000f00f400 bcf803000f00f400 9d4fc000e400f400 bcf803000f00f400 bcf803000f00f400 9d4fc000e400f400 bcf803000f00f400 9d4fc000e400f400 - {e=>3,a=>4,d=>1,j=>93,c=>-1,h=>3,b=>-4,g=>3,f=>2,i=>6} e43301009b015d00 e43301009b015d00 e43301009b015d00 939680006f005d00 e43301009b015d00 e43301009b015d00 939680006f005d00 e43301009b015d00 939680006f005d00 - {e=>1,a=>1,d=>6,j=>58,c=>-2,h=>-3,b=>3,g=>7,f=>5,i=>6} 999d0200af013a00 999d0200af013a00 999d0200af013a00 2f634000f7003a00 999d0200af013a00 999d0200af013a00 2f634000f7003a00 999d0200af013a00 2f634000f7003a00 - {e=>-2,a=>4,d=>4,j=>96,c=>3,h=>3,b=>-3,g=>6,f=>0,i=>1} ec6800005e006000 ec6800005e006000 ec6800005e006000 95cc0000cc806000 ec6800005e006000 ec6800005e006000 95cc0000cc806000 ec6800005e006000 95cc0000cc806000 - {e=>-4,a=>6,d=>7,j=>-52,c=>-2,h=>-2,b=>2,g=>5,f=>4,i=>7} 964f0200f501cc00 964f0200f501cc00 964f0200f501cc00 cb790000bb80cc00 964f0200f501cc00 964f0200f501cc00 cb790000bb80cc00 964f0200f501cc00 cb790000bb80cc00 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>-4,a=>4,d=>6,j=>-110,c=>3,k=>1,h=>3,b=>-4,g=>4,f=>2,i=>5} e44c01005c019201 e44c01005c019201 e44c01005c019201 91e880008e809220 e44c01005c019201 e44c01005c019201 91e880008e809220 e44c01005c019201 91e880008e809220 - {e=>1,a=>1,d=>5,j=>-28,c=>-3,k=>4,h=>-4,b=>2,g=>2,f=>4,i=>2} 511b0200a200e404 511b0200a200e404 511b0200a200e404 2ad300005100e480 511b0200a200e404 511b0200a200e404 2ad300005100e480 511b0200a200e404 2ad300005100e480 - {e=>1,a=>0,d=>1,j=>83,c=>2,k=>7,h=>0,b=>1,g=>6,f=>5,i=>0} 8892020006005307 8892020006005307 8892020006005307 05134000c00053e0 8892020006005307 8892020006005307 05134000c00053e0 8892020006005307 05134000c00053e0 - {e=>3,a=>7,d=>1,j=>-110,c=>2,k=>0,h=>0,b=>-3,g=>0,f=>4,i=>6} af32020080019200 af32020080019200 af32020080019200 f517000003009200 af32020080019200 af32020080019200 f517000003009200 af32020080019200 f517000003009200 - {e=>-4,a=>5,d=>6,j=>-88,c=>1,k=>7,h=>-3,b=>0,g=>5,f=>2,i=>2} 454c0100ad00a807 454c0100ad00a807 454c0100ad00a807 a0e88000b500a8e0 454c0100ad00a807 454c0100ad00a807 a0e88000b500a8e0 454c0100ad00a807 a0e88000b500a8e0 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>1,a=>1,d=>5,j=>101,l=>-3,c=>-4,k=>2,h=>-2,b=>3,g=>1,f=>1,i=>2} 199b0000b100652a 199b0000b100652a 199b0000b100652a 2e52400039006554 199b0000b100652a 199b0000b100652a 2e52400039006554 199b0000b100652a 2e52400039006554 - {e=>1,a=>6,d=>2,j=>-74,l=>0,c=>-4,k=>2,h=>-2,b=>2,g=>2,f=>0,i=>4} 161500003201b602 161500003201b602 161500003201b602 ca2200005a00b640 161500003201b602 161500003201b602 ca2200005a00b640 161500003201b602 ca2200005a00b640 - {e=>3,a=>7,d=>2,j=>30,l=>2,c=>3,k=>6,h=>0,b=>-4,g=>2,f=>7,i=>6} e7b4030082011e16 e7b4030082011e16 e7b4030082011e16 f1a7c00043001ec8 e7b4030082011e16 e7b4030082011e16 f1a7c00043001ec8 e7b4030082011e16 f1a7c00043001ec8 - {e=>-2,a=>7,d=>0,j=>-4,l=>-2,c=>-4,k=>5,h=>0,b=>0,g=>4,f=>7,i=>4} 07e103000401fc35 07e103000401fc35 07e103000401fc35 e20dc0008200fcb8 07e103000401fc35 07e103000401fc35 e20dc0008200fcb8 07e103000401fc35 e20dc0008200fcb8 - {e=>2,a=>0,d=>6,j=>65,l=>1,c=>-3,k=>6,h=>-3,b=>-2,g=>3,f=>1,i=>6} 70ad0000ab01410e 70ad0000ab01410e 70ad0000ab01410e 1ae44000770041c4 70ad0000ab01410e 70ad0000ab01410e 1ae44000770041c4 70ad0000ab01410e 1ae44000770041c4 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-4,a=>6,m=>1,d=>1,j=>55,l=>-2,c=>0,k=>7,h=>-2,b=>-4,g=>1,f=>0,i=>1} 264200007100373701000000 264200007100373701000000 264200007100373701000000 d0180000388037f820000000 264200007100373701000000 264200007100373701000000 d0180000388037f820000000 264200007100373701000000 d0180000388037f820000000 - {e=>3,a=>1,m=>6,d=>6,j=>-117,l=>-4,c=>-1,k=>5,h=>-4,b=>0,g=>2,f=>6,i=>7} c13d0300e2018b2506000000 c13d0300e2018b2506000000 c13d0300e2018b2506000000 23e7800053808bb0c0000000 c13d0300e2018b2506000000 c13d0300e2018b2506000000 23e7800053808bb0c0000000 c13d0300e2018b2506000000 23e7800053808bb0c0000000 - {e=>2,a=>2,m=>4,d=>7,j=>-36,l=>3,c=>-1,k=>7,h=>3,b=>3,g=>3,f=>5,i=>5} daaf02005b01dc1f04000000 daaf02005b01dc1f04000000 daaf02005b01dc1f04000000 4ff540006e80dcec80000000 daaf02005b01dc1f04000000 daaf02005b01dc1f04000000 4ff540006e80dcec80000000 daaf02005b01dc1f04000000 4ff540006e80dcec80000000 - {e=>1,a=>0,m=>7,d=>6,j=>-99,l=>-1,c=>0,k=>7,h=>-4,b=>1,g=>0,f=>3,i=>1} 089c010060009d3f07000000 089c010060009d3f07000000 089c010060009d3f07000000 0462c00010809dfce0000000 089c010060009d3f07000000 089c010060009d3f07000000 0462c00010809dfce0000000 089c010060009d3f07000000 0462c00010809dfce0000000 - {e=>1,a=>2,m=>1,d=>3,j=>57,l=>-1,c=>0,k=>5,h=>3,b=>-4,g=>4,f=>4,i=>6} 221602009c01393d01000000 221602009c01393d01000000 221602009c01393d01000000 503300008f0039bc20000000 221602009c01393d01000000 221602009c01393d01000000 503300008f0039bc20000000 221602009c01393d01000000 503300008f0039bc20000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>0,n=>177,a=>4,m=>2,d=>0,j=>-5,l=>-2,c=>3,k=>3,h=>-3,b=>0,g=>7,f=>7,i=>3} c4800300ef00fb3302b10000 c4800300ef00fb3302b10000 c4800300ef00fb3302b10000 8181c000f580fb7840b10000 c4800300ef00fb3302b10000 c4800300ef00fb3302b10000 8181c000f580fb7840b10000 c4800300ef00fb3302b10000 8181c000f580fb7840b10000 - {e=>-3,n=>5,a=>7,m=>4,d=>0,j=>90,l=>-1,c=>-1,k=>6,h=>-4,b=>3,g=>6,f=>3,i=>2} dfd10100a6005a3e04050000 dfd10100a6005a3e04050000 dfd10100a6005a3e04050000 ef8ac000d1005adc80050000 dfd10100a6005a3e04050000 dfd10100a6005a3e04050000 ef8ac000d1005adc80050000 dfd10100a6005a3e04050000 ef8ac000d1005adc80050000 - {e=>-2,n=>218,a=>6,m=>2,d=>3,j=>122,l=>-3,c=>0,k=>7,h=>-3,b=>-2,g=>0,f=>1,i=>0} 36e6000028007a2f02da0000 36e6000028007a2f02da0000 36e6000028007a2f02da0000 d83c400014007af440da0000 36e6000028007a2f02da0000 36e6000028007a2f02da0000 d83c400014007af440da0000 36e6000028007a2f02da0000 d83c400014007af440da0000 - {e=>-2,n=>245,a=>5,m=>7,d=>2,j=>-67,l=>-1,c=>3,k=>0,h=>3,b=>-2,g=>3,f=>5,i=>0} f5e402001b00bd3807f50000 f5e402001b00bd3807f50000 f5e402001b00bd3807f50000 b9ad40006c00bd1ce0f50000 f5e402001b00bd3807f50000 f5e402001b00bd3807f50000 b9ad40006c00bd1ce0f50000 f5e402001b00bd3807f50000 b9ad40006c00bd1ce0f50000 - {e=>3,n=>3,a=>5,m=>6,d=>6,j=>-78,l=>3,c=>-1,k=>5,h=>2,b=>2,g=>4,f=>7,i=>5} d5bd03005401b21d06030000 d5bd03005401b21d06030000 d5bd03005401b21d06030000 abe7c0008a80b2acc0030000 d5bd03005401b21d06030000 d5bd03005401b21d06030000 abe7c0008a80b2acc0030000 d5bd03005401b21d06030000 abe7c0008a80b2acc0030000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; }; - {a=>13,b=>7} 0d070000 0d070000 0d070000 0de00000 0d070000 0d070000 0de00000 0d070000 0de00000 - {a=>-33,b=>1} df010000 df010000 df010000 df200000 df010000 df010000 df200000 df010000 df200000 - {a=>-85,b=>1} ab010000 ab010000 ab010000 ab200000 ab010000 ab010000 ab200000 ab010000 ab200000 - {a=>58,b=>4} 3a040000 3a040000 3a040000 3a800000 3a040000 3a040000 3a800000 3a040000 3a800000 - {a=>18,b=>6} 12060000 12060000 12060000 12c00000 12060000 12060000 12c00000 12060000 12c00000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>8,b=>7} 08270000 08270000 08270000 08f00000 08270000 08270000 08f00000 08270000 08f00000 - {c=>2,a=>-98,b=>6} 9e160000 9e160000 9e160000 9ec80000 9e160000 9e160000 9ec80000 9e160000 9ec80000 - {c=>-4,a=>-119,b=>6} 89260000 89260000 89260000 89d00000 89260000 89260000 89d00000 89260000 89d00000 - {c=>3,a=>-114,b=>0} 8e180000 8e180000 8e180000 8e0c0000 8e180000 8e180000 8e0c0000 8e180000 8e0c0000 - {c=>-4,a=>104,b=>7} 68270000 68270000 68270000 68f00000 68270000 68270000 68f00000 68270000 68f00000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>2,a=>90,b=>5,d=>-3} 5a550100 5a550100 5a550100 5aaa8000 5a550100 5a550100 5aaa8000 5a550100 5aaa8000 - {c=>-3,a=>-24,b=>2,d=>-1} e8ea0100 e8ea0100 e8ea0100 e8578000 e8ea0100 e8ea0100 e8578000 e8ea0100 e8578000 - {c=>0,a=>-46,b=>4,d=>-4} d2040100 d2040100 d2040100 d2820000 d2040100 d2040100 d2820000 d2040100 d2820000 - {c=>1,a=>-95,b=>5,d=>-3} a14d0100 a14d0100 a14d0100 a1a68000 a14d0100 a14d0100 a1a68000 a14d0100 a1a68000 - {c=>3,a=>-50,b=>5,d=>-3} ce5d0100 ce5d0100 ce5d0100 ceae8000 ce5d0100 ce5d0100 ceae8000 ce5d0100 ceae8000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>3,a=>-67,b=>0,d=>-1} bdd80500 bdd80500 bdd80500 bd0fa000 bdd80500 bdd80500 bd0fa000 bdd80500 bd0fa000 - {e=>6,c=>0,a=>-85,b=>0,d=>3} abc00c00 abc00c00 abc00c00 ab01e000 abc00c00 abc00c00 ab01e000 abc00c00 ab01e000 - {e=>1,c=>-4,a=>27,b=>3,d=>3} 1be30200 1be30200 1be30200 1b719000 1be30200 1be30200 1b719000 1be30200 1b719000 - {e=>3,c=>1,a=>-53,b=>7,d=>3} cbcf0600 cbcf0600 cbcf0600 cbe5b000 cbcf0600 cbcf0600 cbe5b000 cbcf0600 cbe5b000 - {e=>4,c=>3,a=>-28,b=>2,d=>-4} e41a0900 e41a0900 e41a0900 e44e4000 e41a0900 e41a0900 e44e4000 e41a0900 e44e4000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>-1,a=>54,b=>0,d=>-1,f=>-4} 36f84300 36f84300 36f84300 361f9800 36f84300 36f84300 361f9800 36f84300 361f9800 - {e=>5,c=>-2,a=>43,b=>2,d=>-2,f=>-4} 2bb24b00 2bb24b00 2bb24b00 2b5b5800 2bb24b00 2bb24b00 2b5b5800 2bb24b00 2b5b5800 - {e=>2,c=>-1,a=>57,b=>7,d=>0,f=>-3} 393f5400 393f5400 393f5400 39fc2a00 393f5400 393f5400 39fc2a00 393f5400 39fc2a00 - {e=>2,c=>-4,a=>-86,b=>0,d=>-4,f=>2} aa202500 aa202500 aa202500 aa122400 aa202500 aa202500 aa122400 aa202500 aa122400 - {e=>5,c=>-4,a=>36,b=>6,d=>-2,f=>1} 24a61b00 24a61b00 24a61b00 24d35200 24a61b00 24a61b00 24d35200 24a61b00 24d35200 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>1,c=>-1,a=>-59,g=>1,b=>7,d=>-1,f=>1} c5ff9300 c5ff9300 c5ff9300 c5ff9240 c5ff9300 c5ff9300 c5ff9240 c5ff9300 c5ff9240 - {e=>0,c=>-3,a=>-42,g=>3,b=>3,d=>-1,f=>3} d6ebb101 d6ebb101 d6ebb101 d67786c0 d6ebb101 d6ebb101 d67786c0 d6ebb101 d67786c0 - {e=>1,c=>-3,a=>-91,g=>5,b=>1,d=>1,f=>2} a569a202 a569a202 a569a202 a5349540 a569a202 a569a202 a5349540 a569a202 a5349540 - {e=>3,c=>-2,a=>3,g=>0,b=>1,d=>0,f=>-1} 03317600 03317600 03317600 03383e00 03317600 03317600 03383e00 03317600 03383e00 - {e=>1,c=>-2,a=>-94,g=>1,b=>0,d=>-1,f=>2} a2f0a300 a2f0a300 a2f0a300 a21b9440 a2f0a300 a2f0a300 a21b9440 a2f0a300 a21b9440 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>3,c=>3,a=>-87,g=>4,b=>0,d=>2,f=>2} a9982602 a9982602 a9982602 a90d3500 a9982602 a9982602 a90d3500 a9982602 a90d3500 - {e=>3,c=>2,a=>-100,g=>0,b=>7,d=>-2,f=>-4} 9c974700 9c974700 9c974700 9ceb3800 9c974700 9c974700 9ceb3800 9c974700 9ceb3800 - {e=>4,c=>3,a=>30,g=>4,b=>0,d=>3,f=>-3} 1ed85802 1ed85802 1ed85802 1e0dcb00 1ed85802 1ed85802 1e0dcb00 1ed85802 1e0dcb00 - {e=>3,c=>3,a=>117,g=>7,b=>3,d=>-3,f=>1} 755b9703 755b9703 755b9703 756eb3c0 755b9703 755b9703 756eb3c0 755b9703 756eb3c0 - {e=>4,c=>-2,a=>-117,g=>5,b=>2,d=>-1,f=>0} 8bf28902 8bf28902 8bf28902 8b5bc140 8bf28902 8bf28902 8b5bc140 8bf28902 8b5bc140 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>5,d=>-4,c=>1,h=>7,b=>0,g=>0,f=>-1} 0508770007000000 0508770007000000 0508770007000000 05063e00e0000000 0508770007000000 0508770007000000 05063e00e0000000 0508770007000000 05063e00e0000000 - {e=>5,a=>30,d=>-4,c=>3,h=>3,b=>7,g=>4,f=>-1} 1e1f7b0203000000 1e1f7b0203000000 1e1f7b0203000000 1eee5f0060000000 1e1f7b0203000000 1e1f7b0203000000 1eee5f0060000000 1e1f7b0203000000 1eee5f0060000000 - {e=>7,a=>0,d=>-3,c=>1,h=>0,b=>7,g=>2,f=>-1} 004f7f0100000000 004f7f0100000000 004f7f0100000000 00e6fe8000000000 004f7f0100000000 004f7f0100000000 00e6fe8000000000 004f7f0100000000 00e6fe8000000000 - {e=>0,a=>126,d=>-3,c=>0,h=>0,b=>2,g=>5,f=>-1} 7e42f10200000000 7e42f10200000000 7e42f10200000000 7e428f4000000000 7e42f10200000000 7e42f10200000000 7e428f4000000000 7e42f10200000000 7e428f4000000000 - {e=>0,a=>4,d=>-1,c=>-3,h=>7,b=>2,g=>4,f=>3} 04ea310207000000 04ea310207000000 04ea310207000000 04578700e0000000 04ea310207000000 04ea310207000000 04578700e0000000 04ea310207000000 04578700e0000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>55,d=>-4,c=>-4,h=>0,b=>6,g=>4,f=>2,i=>-3} 3726250228000000 3726250228000000 3726250228000000 37d2250014000000 3726250228000000 3726250228000000 37d2250014000000 3726250228000000 37d2250014000000 - {e=>5,a=>43,d=>1,c=>1,h=>1,b=>3,g=>7,f=>-3,i=>1} 2b4bda0309000000 2b4bda0309000000 2b4bda0309000000 2b64dbc024000000 2b4bda0309000000 2b4bda0309000000 2b64dbc024000000 2b4bda0309000000 2b64dbc024000000 - {e=>2,a=>-68,d=>-4,c=>-1,h=>6,b=>2,g=>5,f=>-3,i=>-3} bc3ad5022e000000 bc3ad5022e000000 bc3ad5022e000000 bc5e2b40d4000000 bc3ad5022e000000 bc3ad5022e000000 bc5e2b40d4000000 bc3ad5022e000000 bc5e2b40d4000000 - {e=>3,a=>-9,d=>2,c=>-4,h=>6,b=>3,g=>7,f=>-3,i=>1} f7a3d6030e000000 f7a3d6030e000000 f7a3d6030e000000 f7713bc0c4000000 f7a3d6030e000000 f7a3d6030e000000 f7713bc0c4000000 f7a3d6030e000000 f7713bc0c4000000 - {e=>6,a=>-80,d=>1,c=>-2,h=>3,b=>1,g=>5,f=>3,i=>-3} b071bc022b000000 b071bc022b000000 b071bc022b000000 b038e74074000000 b071bc022b000000 b071bc022b000000 b038e74074000000 b071bc022b000000 b038e74074000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>5,a=>114,d=>-4,j=>4,c=>3,h=>6,b=>2,g=>0,f=>-4,i=>2} 721a4b0016010000 721a4b0016010000 721a4b0016010000 724e5800ca000000 721a4b0016010000 721a4b0016010000 724e5800ca000000 721a4b0016010000 724e5800ca000000 - {e=>3,a=>-15,d=>-2,j=>6,c=>-1,h=>1,b=>0,g=>2,f=>2,i=>0} f1b8270181010000 f1b8270181010000 f1b8270181010000 f11f348023000000 f1b8270181010000 f1b8270181010000 f11f348023000000 f1b8270181010000 f11f348023000000 - {e=>6,a=>-68,d=>-2,j=>5,c=>-3,h=>1,b=>4,g=>0,f=>-1,i=>2} bcac7d0051010000 bcac7d0051010000 bcac7d0051010000 bc976e002a800000 bcac7d0051010000 bcac7d0051010000 bc976e002a800000 bcac7d0051010000 bc976e002a800000 - {e=>4,a=>-102,d=>0,j=>1,c=>1,h=>4,b=>1,g=>0,f=>1,i=>-3} 9a0918006c000000 9a0918006c000000 9a0918006c000000 9a24420094800000 9a0918006c000000 9a0918006c000000 9a24420094800000 9a0918006c000000 9a24420094800000 - {e=>7,a=>-118,d=>-4,j=>3,c=>-2,h=>3,b=>3,g=>4,f=>1,i=>-1} 8a331f02fb000000 8a331f02fb000000 8a331f02fb000000 8a7a73007d800000 8a331f02fb000000 8a331f02fb000000 8a7a73007d800000 8a331f02fb000000 8a7a73007d800000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>4,a=>36,d=>-2,j=>7,c=>1,k=>-85,h=>7,b=>5,g=>7,f=>-4,i=>-3} 248dc903ef01ab00 248dc903ef01ab00 248dc903ef01ab00 24a749c0f780ab00 248dc903ef01ab00 248dc903ef01ab00 24a749c0f780ab00 248dc903ef01ab00 24a749c0f780ab00 - {e=>2,a=>57,d=>2,j=>6,c=>0,k=>-127,h=>0,b=>5,g=>5,f=>1,i=>-1} 39859402b8018100 39859402b8018100 39859402b8018100 39a123401f008100 39859402b8018100 39859402b8018100 39a123401f008100 39859402b8018100 39a123401f008100 - {e=>7,a=>-85,d=>1,j=>0,c=>-2,k=>-9,h=>1,b=>1,g=>4,f=>0,i=>-2} ab710e023100f700 ab710e023100f700 ab710e023100f700 ab38f1003800f700 ab710e023100f700 ab710e023100f700 ab38f1003800f700 ab710e023100f700 ab38f1003800f700 - {e=>6,a=>12,d=>3,j=>2,c=>-1,k=>-109,h=>0,b=>1,g=>1,f=>3,i=>-2} 0cf9bc00b0009300 0cf9bc00b0009300 0cf9bc00b0009300 0c3de64019009300 0cf9bc00b0009300 0cf9bc00b0009300 0c3de64019009300 0cf9bc00b0009300 0c3de64019009300 - {e=>3,a=>-93,d=>-3,j=>3,c=>0,k=>38,h=>2,b=>4,g=>2,f=>-3,i=>-3} a3445701ea002600 a3445701ea002600 a3445701ea002600 a382ba8055802600 a3445701ea002600 a3445701ea002600 a382ba8055802600 a3445701ea002600 a382ba8055802600 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>-121,d=>0,j=>7,l=>7,c=>-2,k=>104,h=>5,b=>5,g=>2,f=>-1,i=>-1} 87357201fd016807 87357201fd016807 87357201fd016807 87b81e80bf8068e0 87357201fd016807 87357201fd016807 87b81e80bf8068e0 87357201fd016807 87b81e80bf8068e0 - {e=>4,a=>-69,d=>0,j=>7,l=>3,c=>3,k=>116,h=>2,b=>5,g=>0,f=>2,i=>3} bb1d2800da017403 bb1d2800da017403 bb1d2800da017403 bbac44004f807460 bb1d2800da017403 bb1d2800da017403 bbac44004f807460 bb1d2800da017403 bbac44004f807460 - {e=>7,a=>-88,d=>3,j=>2,l=>6,c=>-2,k=>94,h=>0,b=>1,g=>0,f=>-2,i=>2} a8f16e0090005e06 a8f16e0090005e06 a8f16e0090005e06 a839fc0009005ec0 a8f16e0090005e06 a8f16e0090005e06 a839fc0009005ec0 a8f16e0090005e06 a839fc0009005ec0 - {e=>7,a=>41,d=>1,j=>2,l=>2,c=>-2,k=>-6,h=>1,b=>4,g=>1,f=>-3,i=>2} 2974de009100fa02 2974de009100fa02 2974de009100fa02 2998fa402900fa40 2974de009100fa02 2974de009100fa02 2998fa402900fa40 2974de009100fa02 2998fa402900fa40 - {e=>1,a=>-123,d=>-2,j=>3,l=>7,c=>3,k=>82,h=>1,b=>6,g=>6,f=>0,i=>-3} 859e0303e9005207 859e0303e9005207 859e0303e9005207 85cf1180358052e0 859e0303e9005207 859e0303e9005207 85cf1180358052e0 859e0303e9005207 85cf1180358052e0 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-121,m=>2,d=>-2,j=>6,l=>3,c=>0,k=>-106,h=>5,b=>7,g=>4,f=>3,i=>2} 8787390295019613 8787390295019613 8787390295019613 87e34700ab009668 8787390295019613 8787390295019613 87e34700ab009668 8787390295019613 87e34700ab009668 - {e=>7,a=>-56,m=>1,d=>-1,j=>2,l=>7,c=>3,k=>102,h=>6,b=>0,g=>6,f=>-4,i=>-3} c8d84f03ae00660f c8d84f03ae00660f c8d84f03ae00660f c80ff980d50066e4 c8d84f03ae00660f c8d84f03ae00660f c80ff980d50066e4 c8d84f03ae00660f c80ff980d50066e4 - {e=>3,a=>-72,m=>-4,d=>-1,j=>6,l=>2,c=>-1,k=>-50,h=>4,b=>2,g=>1,f=>1,i=>-3} b8fa9700ac01ce22 b8fa9700ac01ce22 b8fa9700ac01ce22 b85fb2409700ce50 b8fa9700ac01ce22 b8fa9700ac01ce22 b85fb2409700ce50 b8fa9700ac01ce22 b85fb2409700ce50 - {e=>5,a=>84,m=>-4,d=>-2,j=>4,l=>0,c=>1,k=>-79,h=>5,b=>6,g=>1,f=>3,i=>1} 548ebb000d01b120 548ebb000d01b120 548ebb000d01b120 54c75640a600b110 548ebb000d01b120 548ebb000d01b120 54c75640a600b110 548ebb000d01b120 54c75640a600b110 - {e=>6,a=>-18,m=>-2,d=>-4,j=>7,l=>4,c=>-1,k=>-2,h=>1,b=>1,g=>4,f=>3,i=>-3} ee393d02e901fe34 ee393d02e901fe34 ee393d02e901fe34 ee3e67003780fe98 ee393d02e901fe34 ee393d02e901fe34 ee3e67003780fe98 ee393d02e901fe34 ee3e67003780fe98 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>6,a=>-112,m=>3,d=>-1,j=>2,l=>0,c=>-3,k=>39,h=>4,b=>6,g=>4,f=>3,i=>2} 90ee3b029400271806000000 90ee3b029400271806000000 90ee3b029400271806000000 90d7d7008900270cc0000000 90ee3b029400271806000000 90ee3b029400271806000000 90d7d7008900270cc0000000 90ee3b029400271806000000 90d7d7008900270cc0000000 - {e=>1,n=>2,a=>93,m=>-2,d=>2,j=>5,l=>5,c=>2,k=>-95,h=>1,b=>6,g=>0,f=>-1,i=>-3} 5d9672006901a13502000000 5d9672006901a13502000000 5d9672006901a13502000000 5dc91e003680a1b840000000 5d9672006901a13502000000 5d9672006901a13502000000 5dc91e003680a1b840000000 5d9672006901a13502000000 5dc91e003680a1b840000000 - {e=>2,n=>1,a=>55,m=>2,d=>-2,j=>0,l=>0,c=>-2,k=>-97,h=>1,b=>7,g=>1,f=>3,i=>3} 37b7b50019009f1001000000 37b7b50019009f1001000000 37b7b50019009f1001000000 37fb26402c009f0820000000 37b7b50019009f1001000000 37b7b50019009f1001000000 37fb26402c009f0820000000 37b7b50019009f1001000000 37fb26402c009f0820000000 - {e=>6,n=>2,a=>2,m=>2,d=>0,j=>7,l=>5,c=>-1,k=>-32,h=>7,b=>0,g=>5,f=>-2,i=>2} 0238ec02d701e01502000000 0238ec02d701e01502000000 0238ec02d701e01502000000 021c6d40eb80e0a840000000 0238ec02d701e01502000000 0238ec02d701e01502000000 021c6d40eb80e0a840000000 0238ec02d701e01502000000 021c6d40eb80e0a840000000 - {e=>1,n=>2,a=>-65,m=>0,d=>-3,j=>5,l=>6,c=>-1,k=>10,h=>2,b=>2,g=>3,f=>-4,i=>2} bf7ac30152010a0602000000 bf7ac30152010a0602000000 bf7ac30152010a0602000000 bf5e98c04a800ac040000000 bf7ac30152010a0602000000 bf7ac30152010a0602000000 bf5e98c04a800ac040000000 bf7ac30152010a0602000000 bf5e98c04a800ac040000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>4,n=>4,a=>96,m=>-1,d=>-4,j=>2,l=>1,c=>-2,k=>-106,h=>1,b=>4,g=>2,f=>-2,o=>172,i=>3} 603469019900963904ac0000 603469019900963904ac0000 603469019900963904ac0000 609a4c802d00963c80ac0000 603469019900963904ac0000 603469019900963904ac0000 609a4c802d00963c80ac0000 603469019900963904ac0000 609a4c802d00963c80ac0000 - {e=>3,n=>3,a=>-103,m=>-2,d=>-1,j=>6,l=>2,c=>-3,k=>-23,h=>7,b=>7,g=>4,f=>-3,o=>204,i=>0} 99ef57028701e93203cc0000 99ef57028701e93203cc0000 99ef57028701e93203cc0000 99f7bb00e300e95860cc0000 99ef57028701e93203cc0000 99ef57028701e93203cc0000 99f7bb00e300e95860cc0000 99ef57028701e93203cc0000 99f7bb00e300e95860cc0000 - {e=>7,n=>2,a=>-104,m=>3,d=>2,j=>7,l=>5,c=>2,k=>49,h=>2,b=>0,g=>0,f=>3,o=>143,i=>0} 98903e00c201311d028f0000 98903e00c201311d028f0000 98903e00c201311d028f0000 98097600438031ac408f0000 98903e00c201311d028f0000 98903e00c201311d028f0000 98097600438031ac408f0000 98903e00c201311d028f0000 98097600438031ac408f0000 - {e=>7,n=>0,a=>-12,m=>1,d=>2,j=>3,l=>2,c=>3,k=>73,h=>6,b=>0,g=>3,f=>-2,o=>165,i=>-3} f498ee01ee00490a00a50000 f498ee01ee00490a00a50000 f498ee01ee00490a00a50000 f40d7cc0d580494400a50000 f498ee01ee00490a00a50000 f498ee01ee00490a00a50000 f40d7cc0d580494400a50000 f498ee01ee00490a00a50000 f40d7cc0d580494400a50000 - {e=>2,n=>6,a=>-124,m=>-3,d=>-3,j=>1,l=>3,c=>-4,k=>109,h=>1,b=>5,g=>0,f=>-2,o=>55,i=>-3} 8465650069006d2b06370000 8465650069006d2b06370000 8465650069006d2b06370000 84b2ac0034806d74c0370000 8465650069006d2b06370000 8465650069006d2b06370000 84b2ac0034806d74c0370000 8465650069006d2b06370000 84b2ac0034806d74c0370000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; }; - {a=>92,b=>1} 5c000100 5c000100 5c000100 005c2000 5c000100 5c000100 005c2000 5c000100 005c2000 - {a=>51,b=>4} 33000400 33000400 33000400 00338000 33000400 33000400 00338000 33000400 00338000 - {a=>-66,b=>3} beff0300 beff0300 beff0300 ffbe6000 beff0300 beff0300 ffbe6000 beff0300 ffbe6000 - {a=>-113,b=>2} 8fff0200 8fff0200 8fff0200 ff8f4000 8fff0200 8fff0200 ff8f4000 8fff0200 ff8f4000 - {a=>10,b=>0} 0a000000 0a000000 0a000000 000a0000 0a000000 0a000000 000a0000 0a000000 000a0000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-103,b=>5} 99ff0500 99ff0500 99ff0500 ff99a000 99ff0500 99ff0500 ff99a000 99ff0500 ff99a000 - {c=>0,a=>-75,b=>2} b5ff0200 b5ff0200 b5ff0200 ffb54000 b5ff0200 b5ff0200 ffb54000 b5ff0200 ffb54000 - {c=>-4,a=>-81,b=>3} afff2300 afff2300 afff2300 ffaf7000 afff2300 afff2300 ffaf7000 afff2300 ffaf7000 - {c=>-2,a=>14,b=>7} 0e003700 0e003700 0e003700 000ef800 0e003700 0e003700 000ef800 0e003700 000ef800 - {c=>0,a=>94,b=>1} 5e000100 5e000100 5e000100 005e2000 5e000100 5e000100 005e2000 5e000100 005e2000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-1,a=>-100,b=>5,d=>1} 9cff7d00 9cff7d00 9cff7d00 ff9cbc80 9cff7d00 9cff7d00 ff9cbc80 9cff7d00 ff9cbc80 - {c=>3,a=>107,b=>2,d=>-4} 6b001a01 6b001a01 6b001a01 006b4e00 6b001a01 6b001a01 006b4e00 6b001a01 006b4e00 - {c=>1,a=>-24,b=>1,d=>1} e8ff4900 e8ff4900 e8ff4900 ffe82480 e8ff4900 e8ff4900 ffe82480 e8ff4900 ffe82480 - {c=>-2,a=>-62,b=>0,d=>2} c2ffb000 c2ffb000 c2ffb000 ffc21900 c2ffb000 c2ffb000 ffc21900 c2ffb000 ffc21900 - {c=>0,a=>-40,b=>6,d=>-1} d8ffc601 d8ffc601 d8ffc601 ffd8c380 d8ffc601 d8ffc601 ffd8c380 d8ffc601 ffd8c380 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-4,a=>-8,b=>5,d=>3} f8ffe508 f8ffe508 f8ffe508 fff8b1c0 f8ffe508 f8ffe508 fff8b1c0 f8ffe508 fff8b1c0 - {e=>4,c=>-3,a=>-46,b=>4,d=>2} d2ffac08 d2ffac08 d2ffac08 ffd29540 d2ffac08 d2ffac08 ffd29540 d2ffac08 ffd29540 - {e=>2,c=>0,a=>-15,b=>0,d=>-2} f1ff8005 f1ff8005 f1ff8005 fff10320 f1ff8005 f1ff8005 fff10320 f1ff8005 fff10320 - {e=>6,c=>3,a=>97,b=>1,d=>-1} 6100d90d 6100d90d 6100d90d 00612fe0 6100d90d 6100d90d 00612fe0 6100d90d 00612fe0 - {e=>5,c=>1,a=>86,b=>2,d=>-1} 5600ca0b 5600ca0b 5600ca0b 005647d0 5600ca0b 5600ca0b 005647d0 5600ca0b 005647d0 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>-4,a=>-30,b=>0,d=>2,f=>-4} e2ffa044 e2ffa044 e2ffa044 ffe21128 e2ffa044 e2ffa044 ffe21128 e2ffa044 ffe21128 - {e=>3,c=>-2,a=>58,b=>7,d=>3,f=>-2} 3a00f766 3a00f766 3a00f766 003af9bc 3a00f766 3a00f766 003af9bc 3a00f766 003af9bc - {e=>3,c=>2,a=>-93,b=>0,d=>1,f=>2} a3ff5026 a3ff5026 a3ff5026 ffa308b4 a3ff5026 a3ff5026 ffa308b4 a3ff5026 ffa308b4 - {e=>2,c=>3,a=>17,b=>1,d=>-3,f=>2} 11005925 11005925 11005925 00112ea4 11005925 11005925 00112ea4 11005925 00112ea4 - {e=>3,c=>2,a=>-36,b=>3,d=>-1,f=>1} dcffd317 dcffd317 dcffd317 ffdc6bb2 dcffd317 dcffd317 ffdc6bb2 dcffd317 ffdc6bb2 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>6,c=>3,a=>-5,g=>1,b=>4,d=>-4,f=>-4} fbff1c4d01000000 fbff1c4d01000000 fbff1c4d01000000 fffb8e6820000000 fbff1c4d01000000 fbff1c4d01000000 fffb8e6820000000 fbff1c4d01000000 fffb8e6820000000 - {e=>1,c=>0,a=>5,g=>5,b=>6,d=>-1,f=>-3} 0500c65305000000 0500c65305000000 0500c65305000000 0005c39aa0000000 0500c65305000000 0500c65305000000 0005c39aa0000000 0500c65305000000 0005c39aa0000000 - {e=>5,c=>-3,a=>94,g=>6,b=>0,d=>-1,f=>2} 5e00e82b06000000 5e00e82b06000000 5e00e82b06000000 005e17d4c0000000 5e00e82b06000000 5e00e82b06000000 005e17d4c0000000 5e00e82b06000000 005e17d4c0000000 - {e=>5,c=>-3,a=>-86,g=>4,b=>3,d=>2,f=>2} aaffab2a04000000 aaffab2a04000000 aaffab2a04000000 ffaa755480000000 aaffab2a04000000 aaffab2a04000000 ffaa755480000000 aaffab2a04000000 ffaa755480000000 - {e=>6,c=>0,a=>-114,g=>6,b=>6,d=>-3,f=>-4} 8eff464d06000000 8eff464d06000000 8eff464d06000000 ff8ec2e8c0000000 8eff464d06000000 8eff464d06000000 ff8ec2e8c0000000 8eff464d06000000 ff8ec2e8c0000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>7,c=>-1,a=>-26,g=>4,b=>2,d=>-1,f=>-2} e6fffa6f04000000 e6fffa6f04000000 e6fffa6f04000000 ffe65ffc80000000 e6fffa6f04000000 e6fffa6f04000000 ffe65ffc80000000 e6fffa6f04000000 ffe65ffc80000000 - {e=>3,c=>-3,a=>-39,g=>5,b=>5,d=>2,f=>3} d9ffad3605000000 d9ffad3605000000 d9ffad3605000000 ffd9b536a0000000 d9ffad3605000000 d9ffad3605000000 ffd9b536a0000000 d9ffad3605000000 ffd9b536a0000000 - {e=>2,c=>-1,a=>-108,g=>4,b=>7,d=>1,f=>0} 94ff7f0404000000 94ff7f0404000000 94ff7f0404000000 ff94fca080000000 94ff7f0404000000 94ff7f0404000000 ff94fca080000000 94ff7f0404000000 ff94fca080000000 - {e=>1,c=>3,a=>36,g=>7,b=>4,d=>1,f=>-4} 24005c4207000000 24005c4207000000 24005c4207000000 00248c98e0000000 24005c4207000000 24005c4207000000 00248c98e0000000 24005c4207000000 00248c98e0000000 - {e=>0,c=>1,a=>-70,g=>2,b=>0,d=>-3,f=>0} baff480102000000 baff480102000000 baff480102000000 ffba068040000000 baff480102000000 baff480102000000 ffba068040000000 baff480102000000 ffba068040000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>-73,d=>3,c=>-4,h=>3,b=>3,g=>5,f=>-2} b7ffe3620500000003000000 b7ffe3620500000003000000 b7ffe3620500000003000000 ffb7719ca000000060000000 b7ffe3620500000003000000 b7ffe3620500000003000000 ffb7719ca000000060000000 b7ffe3620500000003000000 ffb7719ca000000060000000 - {e=>2,a=>106,d=>3,c=>-1,h=>4,b=>0,g=>6,f=>-2} 6a00f8640600000004000000 6a00f8640600000004000000 6a00f8640600000004000000 006a1dacc000000080000000 6a00f8640600000004000000 6a00f8640600000004000000 006a1dacc000000080000000 6a00f8640600000004000000 006a1dacc000000080000000 - {e=>2,a=>-78,d=>3,c=>3,h=>6,b=>0,g=>0,f=>-1} b2ffd8740000000006000000 b2ffd8740000000006000000 b2ffd8740000000006000000 ffb20dae00000000c0000000 b2ffd8740000000006000000 b2ffd8740000000006000000 ffb20dae00000000c0000000 b2ffd8740000000006000000 ffb20dae00000000c0000000 - {e=>4,a=>-84,d=>-2,c=>3,h=>4,b=>3,g=>5,f=>-3} acff9b590500000004000000 acff9b590500000004000000 acff9b590500000004000000 ffac6f4aa000000080000000 acff9b590500000004000000 acff9b590500000004000000 ffac6f4aa000000080000000 acff9b590500000004000000 ffac6f4aa000000080000000 - {e=>7,a=>-108,d=>1,c=>-4,h=>2,b=>4,g=>5,f=>-4} 94ff644e0500000002000000 94ff644e0500000002000000 94ff644e0500000002000000 ff9490f8a000000040000000 94ff644e0500000002000000 94ff644e0500000002000000 ff9490f8a000000040000000 94ff644e0500000002000000 ff9490f8a000000040000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>113,d=>3,c=>2,h=>4,b=>1,g=>6,f=>2,i=>3} 7100d128060000001c000000 7100d128060000001c000000 7100d128060000001c000000 007129c4c00000008c000000 7100d128060000001c000000 7100d128060000001c000000 007129c4c00000008c000000 7100d128060000001c000000 007129c4c00000008c000000 - {e=>7,a=>83,d=>-1,c=>3,h=>0,b=>0,g=>4,f=>-3,i=>-2} 5300d85f0400000030000000 5300d85f0400000030000000 5300d85f0400000030000000 00530ffa8000000018000000 5300d85f0400000030000000 5300d85f0400000030000000 00530ffa8000000018000000 5300d85f0400000030000000 00530ffa8000000018000000 - {e=>2,a=>-34,d=>3,c=>-4,h=>4,b=>4,g=>0,f=>1,i=>-3} deffe414000000002c000000 deffe414000000002c000000 deffe414000000002c000000 ffde91a20000000094000000 deffe414000000002c000000 deffe414000000002c000000 ffde91a20000000094000000 deffe414000000002c000000 ffde91a20000000094000000 - {e=>1,a=>87,d=>1,c=>0,h=>1,b=>7,g=>0,f=>1,i=>-1} 570047120000000039000000 570047120000000039000000 570047120000000039000000 0057e092000000003c000000 570047120000000039000000 570047120000000039000000 0057e092000000003c000000 570047120000000039000000 0057e092000000003c000000 - {e=>1,a=>-63,d=>3,c=>-1,h=>2,b=>1,g=>6,f=>1,i=>-3} c1fff912060000002a000000 c1fff912060000002a000000 c1fff912060000002a000000 ffc13d92c000000054000000 c1fff912060000002a000000 c1fff912060000002a000000 ffc13d92c000000054000000 c1fff912060000002a000000 ffc13d92c000000054000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-8,d=>3,j=>1,c=>-3,h=>0,b=>1,g=>7,f=>3,i=>2} f8ffe9300700000050000000 f8ffe9300700000050000000 f8ffe9300700000050000000 fff83586e000000008800000 f8ffe9300700000050000000 f8ffe9300700000050000000 fff83586e000000008800000 f8ffe9300700000050000000 fff83586e000000008800000 - {e=>1,a=>-18,d=>-3,j=>7,c=>-4,h=>4,b=>2,g=>0,f=>3,i=>-2} eeff623300000000f4010000 eeff623300000000f4010000 eeff623300000000f4010000 ffee5296000000009b800000 eeff623300000000f4010000 eeff623300000000f4010000 ffee5296000000009b800000 eeff623300000000f4010000 ffee5296000000009b800000 - {e=>7,a=>-19,d=>0,j=>4,c=>2,h=>1,b=>3,g=>3,f=>-4,i=>3} edff134e0300000019010000 edff134e0300000019010000 edff134e0300000019010000 ffed6878600000002e000000 edff134e0300000019010000 edff134e0300000019010000 ffed6878600000002e000000 edff134e0300000019010000 ffed6878600000002e000000 - {e=>4,a=>43,d=>-3,j=>6,c=>-4,h=>4,b=>0,g=>5,f=>3,i=>-3} 2b00603905000000ac010000 2b00603905000000ac010000 2b00603905000000ac010000 002b12c6a000000097000000 2b00603905000000ac010000 2b00603905000000ac010000 002b12c6a000000097000000 2b00603905000000ac010000 002b12c6a000000097000000 - {e=>3,a=>-3,d=>0,j=>5,c=>1,h=>7,b=>6,g=>0,f=>2,i=>1} fdff0e26000000004f010000 fdff0e26000000004f010000 fdff0e26000000004f010000 fffdc43400000000e6800000 fdff0e26000000004f010000 fdff0e26000000004f010000 fffdc43400000000e6800000 fdff0e26000000004f010000 fffdc43400000000e6800000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>1,a=>29,d=>-1,j=>7,c=>-3,k=>-108,h=>1,b=>7,g=>6,f=>2,i=>-1} 1d00ef2306000000f9019400 1d00ef2306000000f9019400 1d00ef2306000000f9019400 001df794c00000003f809400 1d00ef2306000000f9019400 1d00ef2306000000f9019400 001df794c00000003f809400 1d00ef2306000000f9019400 001df794c00000003f809400 - {e=>3,a=>48,d=>1,j=>5,c=>1,k=>-74,h=>0,b=>5,g=>7,f=>-2,i=>-2} 30004d66070000007001b600 30004d66070000007001b600 30004d66070000007001b600 0030a4bce00000001a80b600 30004d66070000007001b600 30004d66070000007001b600 0030a4bce00000001a80b600 30004d66070000007001b600 0030a4bce00000001a80b600 - {e=>7,a=>-122,d=>2,j=>0,c=>-3,k=>14,h=>2,b=>1,g=>4,f=>-4,i=>0} 86ffa94e0400000002000e00 86ffa94e0400000002000e00 86ffa94e0400000002000e00 ff8635788000000040000e00 86ffa94e0400000002000e00 86ffa94e0400000002000e00 ff8635788000000040000e00 86ffa94e0400000002000e00 ff8635788000000040000e00 - {e=>5,a=>-32,d=>-4,j=>2,c=>3,k=>-91,h=>7,b=>0,g=>3,f=>0,i=>2} e0ff180b030000009700a500 e0ff180b030000009700a500 e0ff180b030000009700a500 ffe00e5060000000e900a500 e0ff180b030000009700a500 e0ff180b030000009700a500 ffe00e5060000000e900a500 e0ff180b030000009700a500 ffe00e5060000000e900a500 - {e=>4,a=>-6,d=>2,j=>0,c=>-4,k=>-31,h=>6,b=>7,g=>4,f=>1,i=>0} faffa718040000000600e100 faffa718040000000600e100 faffa718040000000600e100 fffaf14280000000c000e100 faffa718040000000600e100 faffa718040000000600e100 fffaf14280000000c000e100 faffa718040000000600e100 fffaf14280000000c000e100 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>100,d=>-3,j=>2,l=>1,c=>-3,k=>17,h=>3,b=>6,g=>3,f=>3,i=>3} 64006e33030000009b001101 64006e33030000009b001101 64006e33030000009b001101 0064d696600000006d001120 64006e33030000009b001101 64006e33030000009b001101 0064d696600000006d001120 64006e33030000009b001101 0064d696600000006d001120 - {e=>3,a=>46,d=>-4,j=>5,l=>3,c=>1,k=>-95,h=>7,b=>4,g=>7,f=>0,i=>1} 2e000c07070000004f01a103 2e000c07070000004f01a103 2e000c07070000004f01a103 002e8630e0000000e680a160 2e000c07070000004f01a103 2e000c07070000004f01a103 002e8630e0000000e680a160 2e000c07070000004f01a103 002e8630e0000000e680a160 - {e=>3,a=>-72,d=>0,j=>6,l=>7,c=>-2,k=>41,h=>2,b=>2,g=>2,f=>2,i=>-3} b8ff322602000000aa012907 b8ff322602000000aa012907 b8ff322602000000aa012907 ffb8583440000000570029e0 b8ff322602000000aa012907 b8ff322602000000aa012907 ffb8583440000000570029e0 b8ff322602000000aa012907 ffb8583440000000570029e0 - {e=>5,a=>84,d=>-1,j=>6,l=>5,c=>2,k=>95,h=>3,b=>4,g=>4,f=>2,i=>-4} 5400d42b04000000a3015f05 5400d42b04000000a3015f05 5400d42b04000000a3015f05 00548bd48000000073005fa0 5400d42b04000000a3015f05 5400d42b04000000a3015f05 00548bd48000000073005fa0 5400d42b04000000a3015f05 00548bd48000000073005fa0 - {e=>1,a=>13,d=>-2,j=>3,l=>0,c=>-3,k=>-14,h=>2,b=>5,g=>0,f=>1,i=>-4} 0d00ad1300000000e200f200 0d00ad1300000000e200f200 0d00ad1300000000e200f200 000db712000000005180f200 0d00ad1300000000e200f200 0d00ad1300000000e200f200 000db712000000005180f200 0d00ad1300000000e200f200 000db712000000005180f200 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>-88,m=>2,d=>0,j=>2,l=>5,c=>0,k=>96,h=>5,b=>0,g=>7,f=>2,i=>3} a8ff002e070000009d006015 a8ff002e070000009d006015 a8ff002e070000009d006015 ffa80074e0000000ad0060a8 a8ff002e070000009d006015 a8ff002e070000009d006015 ffa80074e0000000ad0060a8 a8ff002e070000009d006015 ffa80074e0000000ad0060a8 - {e=>2,a=>-64,m=>1,d=>-2,j=>2,l=>0,c=>0,k=>83,h=>6,b=>7,g=>5,f=>-3,i=>1} c0ff8755050000008e005308 c0ff8755050000008e005308 c0ff8755050000008e005308 ffc0e32aa0000000c5005304 c0ff8755050000008e005308 c0ff8755050000008e005308 ffc0e32aa0000000c5005304 c0ff8755050000008e005308 ffc0e32aa0000000c5005304 - {e=>1,a=>50,m=>3,d=>0,j=>6,l=>6,c=>-4,k=>20,h=>4,b=>1,g=>7,f=>0,i=>-2} 3200210207000000b401141e 3200210207000000b401141e 3200210207000000b401141e 00323010e00000009b0014cc 3200210207000000b401141e 3200210207000000b401141e 00323010e00000009b0014cc 3200210207000000b401141e 00323010e00000009b0014cc - {e=>3,a=>-2,m=>1,d=>-1,j=>4,l=>0,c=>-1,k=>106,h=>4,b=>2,g=>6,f=>-3,i=>0} fefffa570600000004016a08 fefffa570600000004016a08 fefffa570600000004016a08 fffe5fbac000000082006a04 fefffa570600000004016a08 fefffa570600000004016a08 fffe5fbac000000082006a04 fefffa570600000004016a08 fffe5fbac000000082006a04 - {e=>3,a=>126,m=>2,d=>-4,j=>7,l=>2,c=>-4,k=>-75,h=>0,b=>2,g=>7,f=>-3,i=>-2} 7e00225707000000f001b512 7e00225707000000f001b512 7e00225707000000f001b512 007e523ae00000001b80b548 7e00225707000000f001b512 7e00225707000000f001b512 007e523ae00000001b80b548 7e00225707000000f001b512 007e523ae00000001b80b548 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>0,n=>3,a=>114,m=>2,d=>1,j=>4,l=>2,c=>0,k=>-114,h=>1,b=>5,g=>1,f=>1,i=>2} 720045100100000011018e1203000000 720045100100000011018e1203000000 720045100100000011018e1203000000 0072a082200000002a008e4860000000 720045100100000011018e1203000000 720045100100000011018e1203000000 0072a082200000002a008e4860000000 720045100100000011018e1203000000 0072a082200000002a008e4860000000 - {e=>0,n=>2,a=>11,m=>1,d=>-2,j=>4,l=>7,c=>-4,k=>-117,h=>6,b=>1,g=>5,f=>1,i=>3} 0b00a111050000001e018b0f02000000 0b00a111050000001e018b0f02000000 0b00a111050000001e018b0f02000000 000b3302a0000000ce008be440000000 0b00a111050000001e018b0f02000000 0b00a111050000001e018b0f02000000 000b3302a0000000ce008be440000000 0b00a111050000001e018b0f02000000 000b3302a0000000ce008be440000000 - {e=>5,n=>4,a=>8,m=>0,d=>2,j=>7,l=>3,c=>3,k=>71,h=>7,b=>2,g=>4,f=>-4,i=>2} 08009a4a04000000d701470304000000 08009a4a04000000d701470304000000 08009a4a04000000d701470304000000 00084d5880000000eb80476080000000 08009a4a04000000d701470304000000 08009a4a04000000d701470304000000 00084d5880000000eb80476080000000 08009a4a04000000d701470304000000 00084d5880000000eb80476080000000 - {e=>4,n=>5,a=>25,m=>1,d=>2,j=>3,l=>7,c=>-1,k=>-69,h=>4,b=>5,g=>6,f=>1,i=>-1} 1900bd1806000000fc00bb0f05000000 1900bd1806000000fc00bb0f05000000 1900bd1806000000fc00bb0f05000000 0019bd42c00000009d80bbe4a0000000 1900bd1806000000fc00bb0f05000000 1900bd1806000000fc00bb0f05000000 0019bd42c00000009d80bbe4a0000000 1900bd1806000000fc00bb0f05000000 0019bd42c00000009d80bbe4a0000000 - {e=>1,n=>3,a=>71,m=>3,d=>-1,j=>0,l=>0,c=>-2,k=>28,h=>1,b=>7,g=>3,f=>0,i=>1} 4700f7030300000009001c1803000000 4700f7030300000009001c1803000000 4700f7030300000009001c1803000000 0047fb906000000024001c0c60000000 4700f7030300000009001c1803000000 4700f7030300000009001c1803000000 0047fb906000000024001c0c60000000 4700f7030300000009001c1803000000 0047fb906000000024001c0c60000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>2,a=>-53,m=>-1,d=>2,j=>2,l=>6,c=>-3,k=>-55,h=>7,b=>3,g=>6,f=>3,o=>97,i=>-4} cbffab3406000000a700c93e02610000 cbffab3406000000a700c93e02610000 cbffab3406000000a700c93e02610000 ffcb7526c0000000f100c9dc40610000 cbffab3406000000a700c93e02610000 cbffab3406000000a700c93e02610000 ffcb7526c0000000f100c9dc40610000 cbffab3406000000a700c93e02610000 ffcb7526c0000000f100c9dc40610000 - {e=>0,n=>6,a=>-59,m=>1,d=>0,j=>6,l=>4,c=>0,k=>75,h=>2,b=>6,g=>7,f=>3,o=>144,i=>2} c5ff06300700000092014b0c06900000 c5ff06300700000092014b0c06900000 c5ff06300700000092014b0c06900000 ffc5c006e00000004b004b84c0900000 c5ff06300700000092014b0c06900000 c5ff06300700000092014b0c06900000 ffc5c006e00000004b004b84c0900000 c5ff06300700000092014b0c06900000 ffc5c006e00000004b004b84c0900000 - {e=>1,n=>1,a=>66,m=>2,d=>-3,j=>0,l=>3,c=>1,k=>103,h=>4,b=>3,g=>7,f=>-1,o=>216,i=>-2} 42004b73070000003400671301d80000 42004b73070000003400671301d80000 42004b73070000003400671301d80000 0042669ee00000009800676820d80000 42004b73070000003400671301d80000 42004b73070000003400671301d80000 0042669ee00000009800676820d80000 42004b73070000003400671301d80000 0042669ee00000009800676820d80000 - {e=>2,n=>1,a=>-81,m=>-1,d=>3,j=>0,l=>3,c=>-2,k=>98,h=>2,b=>1,g=>3,f=>-2,o=>209,i=>-3} affff164030000002a00623b01d10000 affff164030000002a00623b01d10000 affff164030000002a00623b01d10000 ffaf39ac600000005400627c20d10000 affff164030000002a00623b01d10000 affff164030000002a00623b01d10000 ffaf39ac600000005400627c20d10000 affff164030000002a00623b01d10000 ffaf39ac600000005400627c20d10000 - {e=>1,n=>5,a=>-91,m=>-1,d=>-1,j=>3,l=>5,c=>-1,k=>-46,h=>2,b=>4,g=>6,f=>-2,o=>161,i=>-3} a5fffc6306000000ea00d23d05a10000 a5fffc6306000000ea00d23d05a10000 a5fffc6306000000ea00d23d05a10000 ffa59f9cc00000005580d2bca0a10000 a5fffc6306000000ea00d23d05a10000 a5fffc6306000000ea00d23d05a10000 ffa59f9cc00000005580d2bca0a10000 a5fffc6306000000ea00d23d05a10000 ffa59f9cc00000005580d2bca0a10000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; }; - {a=>55,b=>2} 3700000002000000 3700000002000000 3700000002000000 0000003740000000 3700000002000000 3700000002000000 0000003740000000 3700000002000000 0000003740000000 - {a=>62,b=>5} 3e00000005000000 3e00000005000000 3e00000005000000 0000003ea0000000 3e00000005000000 3e00000005000000 0000003ea0000000 3e00000005000000 0000003ea0000000 - {a=>127,b=>2} 7f00000002000000 7f00000002000000 7f00000002000000 0000007f40000000 7f00000002000000 7f00000002000000 0000007f40000000 7f00000002000000 0000007f40000000 - {a=>-95,b=>4} a1ffffff04000000 a1ffffff04000000 a1ffffff04000000 ffffffa180000000 a1ffffff04000000 a1ffffff04000000 ffffffa180000000 a1ffffff04000000 ffffffa180000000 - {a=>-58,b=>4} c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 ffffffc680000000 c6ffffff04000000 c6ffffff04000000 ffffffc680000000 c6ffffff04000000 ffffffc680000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; }; - {c=>1,a=>-70,b=>7} baffffff0f000000 baffffff0f000000 baffffff0f000000 ffffffbae4000000 baffffff0f000000 baffffff0f000000 ffffffbae4000000 baffffff0f000000 ffffffbae4000000 - {c=>0,a=>-56,b=>5} c8ffffff05000000 c8ffffff05000000 c8ffffff05000000 ffffffc8a0000000 c8ffffff05000000 c8ffffff05000000 ffffffc8a0000000 c8ffffff05000000 ffffffc8a0000000 - {c=>-2,a=>-48,b=>2} d0ffffff32000000 d0ffffff32000000 d0ffffff32000000 ffffffd058000000 d0ffffff32000000 d0ffffff32000000 ffffffd058000000 d0ffffff32000000 ffffffd058000000 - {c=>1,a=>31,b=>2} 1f0000000a000000 1f0000000a000000 1f0000000a000000 0000001f44000000 1f0000000a000000 1f0000000a000000 0000001f44000000 1f0000000a000000 0000001f44000000 - {c=>3,a=>120,b=>2} 780000001a000000 780000001a000000 780000001a000000 000000784c000000 780000001a000000 780000001a000000 000000784c000000 780000001a000000 000000784c000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-120,b=>6,d=>0} 88ffffff26000000 88ffffff26000000 88ffffff26000000 ffffff88d0000000 88ffffff26000000 88ffffff26000000 ffffff88d0000000 88ffffff26000000 ffffff88d0000000 - {c=>0,a=>118,b=>7,d=>3} 76000000c7000000 76000000c7000000 76000000c7000000 00000076e1800000 76000000c7000000 76000000c7000000 00000076e1800000 76000000c7000000 00000076e1800000 - {c=>-2,a=>-76,b=>5,d=>2} b4ffffffb5000000 b4ffffffb5000000 b4ffffffb5000000 ffffffb4b9000000 b4ffffffb5000000 b4ffffffb5000000 ffffffb4b9000000 b4ffffffb5000000 ffffffb4b9000000 - {c=>3,a=>-39,b=>6,d=>3} d9ffffffde000000 d9ffffffde000000 d9ffffffde000000 ffffffd9cd800000 d9ffffffde000000 d9ffffffde000000 ffffffd9cd800000 d9ffffffde000000 ffffffd9cd800000 - {c=>-3,a=>9,b=>5,d=>1} 090000006d000000 090000006d000000 090000006d000000 00000009b4800000 090000006d000000 090000006d000000 00000009b4800000 090000006d000000 00000009b4800000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>3,a=>-74,b=>2,d=>3} b6ffffffda060000 b6ffffffda060000 b6ffffffda060000 ffffffb64db00000 b6ffffffda060000 b6ffffffda060000 ffffffb64db00000 b6ffffffda060000 ffffffb64db00000 - {e=>4,c=>2,a=>16,b=>7,d=>2} 1000000097080000 1000000097080000 1000000097080000 00000010e9400000 1000000097080000 1000000097080000 00000010e9400000 1000000097080000 00000010e9400000 - {e=>2,c=>0,a=>48,b=>5,d=>-3} 3000000045050000 3000000045050000 3000000045050000 00000030a2a00000 3000000045050000 3000000045050000 00000030a2a00000 3000000045050000 00000030a2a00000 - {e=>5,c=>2,a=>77,b=>3,d=>1} 4d000000530a0000 4d000000530a0000 4d000000530a0000 0000004d68d00000 4d000000530a0000 4d000000530a0000 0000004d68d00000 4d000000530a0000 0000004d68d00000 - {e=>0,c=>-2,a=>78,b=>5,d=>1} 4e00000075000000 4e00000075000000 4e00000075000000 0000004eb8800000 4e00000075000000 4e00000075000000 0000004eb8800000 4e00000075000000 0000004eb8800000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>2,a=>80,b=>4,d=>1,f=>0} 5000000054020000 5000000054020000 5000000054020000 0000005088900000 5000000054020000 5000000054020000 0000005088900000 5000000054020000 0000005088900000 - {e=>6,c=>2,a=>-27,b=>4,d=>3,f=>-4} e5ffffffd44c0000 e5ffffffd44c0000 e5ffffffd44c0000 ffffffe589e80000 e5ffffffd44c0000 e5ffffffd44c0000 ffffffe589e80000 e5ffffffd44c0000 ffffffe589e80000 - {e=>0,c=>2,a=>-111,b=>5,d=>3,f=>-4} 91ffffffd5400000 91ffffffd5400000 91ffffffd5400000 ffffff91a9880000 91ffffffd5400000 91ffffffd5400000 ffffff91a9880000 91ffffffd5400000 ffffff91a9880000 - {e=>7,c=>1,a=>-42,b=>7,d=>1,f=>3} d6ffffff4f3e0000 d6ffffff4f3e0000 d6ffffff4f3e0000 ffffffd6e4f60000 d6ffffff4f3e0000 d6ffffff4f3e0000 ffffffd6e4f60000 d6ffffff4f3e0000 ffffffd6e4f60000 - {e=>5,c=>0,a=>90,b=>4,d=>0,f=>0} 5a000000040a0000 5a000000040a0000 5a000000040a0000 0000005a80500000 5a000000040a0000 5a000000040a0000 0000005a80500000 5a000000040a0000 0000005a80500000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>3,c=>0,a=>0,g=>3,b=>3,d=>1,f=>-3} 0000000043d60100 0000000043d60100 0000000043d60100 0000000060bac000 0000000043d60100 0000000043d60100 0000000060bac000 0000000043d60100 0000000060bac000 - {e=>3,c=>-4,a=>-62,g=>6,b=>1,d=>-3,f=>1} c2ffffff61170300 c2ffffff61170300 c2ffffff61170300 ffffffc232b38000 c2ffffff61170300 c2ffffff61170300 ffffffc232b38000 c2ffffff61170300 ffffffc232b38000 - {e=>2,c=>-3,a=>26,g=>5,b=>3,d=>0,f=>-4} 1a0000002bc40200 1a0000002bc40200 1a0000002bc40200 0000001a74294000 1a0000002bc40200 1a0000002bc40200 0000001a74294000 1a0000002bc40200 0000001a74294000 - {e=>3,c=>3,a=>-96,g=>7,b=>7,d=>-3,f=>3} a0ffffff5fb70300 a0ffffff5fb70300 a0ffffff5fb70300 ffffffa0eeb7c000 a0ffffff5fb70300 a0ffffff5fb70300 ffffffa0eeb7c000 a0ffffff5fb70300 ffffffa0eeb7c000 - {e=>6,c=>2,a=>-81,g=>5,b=>1,d=>-1,f=>3} afffffffd1bd0200 afffffffd1bd0200 afffffffd1bd0200 ffffffaf2be74000 afffffffd1bd0200 afffffffd1bd0200 ffffffaf2be74000 afffffffd1bd0200 ffffffaf2be74000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>4,c=>2,a=>21,g=>1,b=>4,d=>-4,f=>3} 1500000014b90000 1500000014b90000 1500000014b90000 000000158a464000 1500000014b90000 1500000014b90000 000000158a464000 1500000014b90000 000000158a464000 - {e=>3,c=>-4,a=>82,g=>4,b=>5,d=>3,f=>1} 52000000e5160200 52000000e5160200 52000000e5160200 00000052b1b30000 52000000e5160200 52000000e5160200 00000052b1b30000 52000000e5160200 00000052b1b30000 - {e=>2,c=>-3,a=>28,g=>5,b=>2,d=>0,f=>-4} 1c0000002ac40200 1c0000002ac40200 1c0000002ac40200 0000001c54294000 1c0000002ac40200 1c0000002ac40200 0000001c54294000 1c0000002ac40200 0000001c54294000 - {e=>4,c=>2,a=>116,g=>2,b=>3,d=>-2,f=>0} 7400000093090100 7400000093090100 7400000093090100 000000746b408000 7400000093090100 7400000093090100 000000746b408000 7400000093090100 000000746b408000 - {e=>5,c=>-2,a=>77,g=>7,b=>6,d=>-1,f=>3} 4d000000f6bb0300 4d000000f6bb0300 4d000000f6bb0300 0000004ddbd7c000 4d000000f6bb0300 4d000000f6bb0300 0000004ddbd7c000 4d000000f6bb0300 0000004ddbd7c000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>-106,d=>0,c=>-3,h=>5,b=>4,g=>2,f=>0} 96ffffff2c0c010005000000 96ffffff2c0c010005000000 96ffffff2c0c010005000000 ffffff9694608000a0000000 96ffffff2c0c010005000000 96ffffff2c0c010005000000 ffffff9694608000a0000000 96ffffff2c0c010005000000 ffffff9694608000a0000000 - {e=>2,a=>41,d=>-3,c=>-3,h=>1,b=>0,g=>7,f=>-4} 2900000068c5030001000000 2900000068c5030001000000 2900000068c5030001000000 0000002916a9c00020000000 2900000068c5030001000000 2900000068c5030001000000 0000002916a9c00020000000 2900000068c5030001000000 0000002916a9c00020000000 - {e=>7,a=>-97,d=>2,c=>2,h=>5,b=>3,g=>1,f=>-3} 9fffffff93de000005000000 9fffffff93de000005000000 9fffffff93de000005000000 ffffff9f697a4000a0000000 9fffffff93de000005000000 9fffffff93de000005000000 ffffff9f697a4000a0000000 9fffffff93de000005000000 ffffff9f697a4000a0000000 - {e=>2,a=>-90,d=>-1,c=>-4,h=>4,b=>0,g=>0,f=>3} a6ffffffe035000004000000 a6ffffffe035000004000000 a6ffffffe035000004000000 ffffffa613a6000080000000 a6ffffffe035000004000000 a6ffffffe035000004000000 ffffffa613a6000080000000 a6ffffffe035000004000000 ffffffa613a6000080000000 - {e=>6,a=>106,d=>-3,c=>2,h=>7,b=>7,g=>4,f=>-3} 6a000000575d020007000000 6a000000575d020007000000 6a000000575d020007000000 0000006aeaeb0000e0000000 6a000000575d020007000000 6a000000575d020007000000 0000006aeaeb0000e0000000 6a000000575d020007000000 0000006aeaeb0000e0000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>-65,d=>-4,c=>-4,h=>6,b=>0,g=>5,f=>3,i=>-4} bfffffff20bd020026000000 bfffffff20bd020026000000 bfffffff20bd020026000000 ffffffbf12674000d0000000 bfffffff20bd020026000000 bfffffff20bd020026000000 ffffffbf12674000d0000000 bfffffff20bd020026000000 ffffffbf12674000d0000000 - {e=>5,a=>-32,d=>-2,c=>1,h=>1,b=>6,g=>1,f=>0,i=>1} e0ffffff8e8b000009000000 e0ffffff8e8b000009000000 e0ffffff8e8b000009000000 ffffffe0c750400024000000 e0ffffff8e8b000009000000 e0ffffff8e8b000009000000 ffffffe0c750400024000000 e0ffffff8e8b000009000000 ffffffe0c750400024000000 - {e=>5,a=>-95,d=>-3,c=>2,h=>7,b=>5,g=>2,f=>3,i=>-3} a1ffffff553b01002f000000 a1ffffff553b01002f000000 a1ffffff553b01002f000000 ffffffa1aad68000f4000000 a1ffffff553b01002f000000 a1ffffff553b01002f000000 ffffffa1aad68000f4000000 a1ffffff553b01002f000000 ffffffa1aad68000f4000000 - {e=>3,a=>-22,d=>-1,c=>-1,h=>6,b=>6,g=>7,f=>-4,i=>-3} eafffffffec703002e000000 eafffffffec703002e000000 eafffffffec703002e000000 ffffffeadfb9c000d4000000 eafffffffec703002e000000 eafffffffec703002e000000 ffffffeadfb9c000d4000000 eafffffffec703002e000000 ffffffeadfb9c000d4000000 - {e=>6,a=>-103,d=>-1,c=>0,h=>2,b=>2,g=>7,f=>-2,i=>-4} 99ffffffc2ed030022000000 99ffffffc2ed030022000000 99ffffffc2ed030022000000 ffffff9943edc00050000000 99ffffffc2ed030022000000 99ffffffc2ed030022000000 ffffff9943edc00050000000 99ffffffc2ed030022000000 ffffff9943edc00050000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>7,a=>87,d=>-2,j=>7,c=>-2,h=>2,b=>2,g=>2,f=>-2,i=>2} 57000000b26f0100d2010000 57000000b26f0100d2010000 57000000b26f0100d2010000 000000575b7c80004b800000 57000000b26f0100d2010000 57000000b26f0100d2010000 000000575b7c80004b800000 57000000b26f0100d2010000 000000575b7c80004b800000 - {e=>3,a=>-126,d=>-4,j=>4,c=>0,h=>0,b=>6,g=>1,f=>-2,i=>-4} 82ffffff06e7000020010000 82ffffff06e7000020010000 82ffffff06e7000020010000 ffffff82c23c400012000000 82ffffff06e7000020010000 82ffffff06e7000020010000 ffffff82c23c400012000000 82ffffff06e7000020010000 ffffff82c23c400012000000 - {e=>5,a=>90,d=>0,j=>7,c=>3,h=>0,b=>5,g=>6,f=>-1,i=>-1} 5a0000001d7a0300f8010000 5a0000001d7a0300f8010000 5a0000001d7a0300f8010000 0000005aac5f80001f800000 5a0000001d7a0300f8010000 5a0000001d7a0300f8010000 0000005aac5f80001f800000 5a0000001d7a0300f8010000 0000005aac5f80001f800000 - {e=>6,a=>-47,d=>1,j=>3,c=>1,h=>4,b=>7,g=>7,f=>3,i=>-1} d1ffffff4fbc0300fc000000 d1ffffff4fbc0300fc000000 d1ffffff4fbc0300fc000000 ffffffd1e4e7c0009d800000 d1ffffff4fbc0300fc000000 d1ffffff4fbc0300fc000000 ffffffd1e4e7c0009d800000 d1ffffff4fbc0300fc000000 ffffffd1e4e7c0009d800000 - {e=>6,a=>47,d=>2,j=>7,c=>1,h=>4,b=>6,g=>1,f=>0,i=>-4} 2f0000008e8c0000e4010000 2f0000008e8c0000e4010000 2f0000008e8c0000e4010000 0000002fc560400093800000 2f0000008e8c0000e4010000 2f0000008e8c0000e4010000 0000002fc560400093800000 2f0000008e8c0000e4010000 0000002fc560400093800000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>4,a=>-69,d=>1,j=>5,c=>-2,k=>-25,h=>4,b=>3,g=>1,f=>3,i=>1} bbffffff73b800004c01e700 bbffffff73b800004c01e700 bbffffff73b800004c01e700 ffffffbb78c640008680e700 bbffffff73b800004c01e700 bbffffff73b800004c01e700 ffffffbb78c640008680e700 bbffffff73b800004c01e700 ffffffbb78c640008680e700 - {e=>1,a=>116,d=>0,j=>4,c=>2,k=>45,h=>6,b=>3,g=>3,f=>-2,i=>3} 7400000013e201001e012d00 7400000013e201001e012d00 7400000013e201001e012d00 00000074681cc000ce002d00 7400000013e201001e012d00 7400000013e201001e012d00 00000074681cc000ce002d00 7400000013e201001e012d00 00000074681cc000ce002d00 - {e=>3,a=>-113,d=>1,j=>1,c=>0,k=>-27,h=>5,b=>5,g=>6,f=>-3,i=>-2} 8fffffff455603007500e500 8fffffff455603007500e500 8fffffff455603007500e500 ffffff8fa0bb8000b880e500 8fffffff455603007500e500 8fffffff455603007500e500 ffffff8fa0bb8000b880e500 8fffffff455603007500e500 ffffff8fa0bb8000b880e500 - {e=>3,a=>49,d=>3,j=>2,c=>-2,k=>3,h=>1,b=>0,g=>2,f=>2,i=>2} 31000000f026010091000300 31000000f026010091000300 31000000f026010091000300 0000003119b4800029000300 31000000f026010091000300 31000000f026010091000300 0000003119b4800029000300 31000000f026010091000300 0000003119b4800029000300 - {e=>0,a=>105,d=>-1,j=>3,c=>-3,k=>-114,h=>6,b=>5,g=>7,f=>-2,i=>3} 69000000ede10300de008e00 69000000ede10300de008e00 69000000ede10300de008e00 00000069b78dc000cd808e00 69000000ede10300de008e00 69000000ede10300de008e00 00000069b78dc000cd808e00 69000000ede10300de008e00 00000069b78dc000cd808e00 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>4,a=>-33,d=>-3,j=>2,l=>4,c=>2,k=>-127,h=>2,b=>1,g=>3,f=>0,i=>3} dfffffff518901009a008104 dfffffff518901009a008104 dfffffff518901009a008104 ffffffdf2ac0c0004d008180 dfffffff518901009a008104 dfffffff518901009a008104 ffffffdf2ac0c0004d008180 dfffffff518901009a008104 ffffffdf2ac0c0004d008180 - {e=>1,a=>30,d=>0,j=>3,l=>5,c=>-2,k=>-10,h=>5,b=>0,g=>3,f=>2,i=>-2} 1e00000030a20100f500f605 1e00000030a20100f500f605 1e00000030a20100f500f605 0000001e1814c000b980f6a0 1e00000030a20100f500f605 1e00000030a20100f500f605 0000001e1814c000b980f6a0 1e00000030a20100f500f605 0000001e1814c000b980f6a0 - {e=>0,a=>87,d=>-1,j=>5,l=>6,c=>-2,k=>-45,h=>2,b=>7,g=>1,f=>3,i=>-2} 57000000f7b100007201d306 57000000f7b100007201d306 57000000f7b100007201d306 00000057fb8640005a80d3c0 57000000f7b100007201d306 57000000f7b100007201d306 00000057fb8640005a80d3c0 57000000f7b100007201d306 00000057fb8640005a80d3c0 - {e=>1,a=>-27,d=>2,j=>3,l=>0,c=>1,k=>36,h=>0,b=>0,g=>5,f=>0,i=>-1} e5ffffff88820200f8002400 e5ffffff88820200f8002400 e5ffffff88820200f8002400 ffffffe5051140001d802400 e5ffffff88820200f8002400 e5ffffff88820200f8002400 ffffffe5051140001d802400 e5ffffff88820200f8002400 ffffffe5051140001d802400 - {e=>7,a=>38,d=>2,j=>1,l=>5,c=>-2,k=>37,h=>5,b=>5,g=>5,f=>1,i=>-1} 26000000b59e02007d002505 26000000b59e02007d002505 26000000b59e02007d002505 00000026b9734000bc8025a0 26000000b59e02007d002505 26000000b59e02007d002505 00000026b9734000bc8025a0 26000000b59e02007d002505 00000026b9734000bc8025a0 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-77,m=>-1,d=>-4,j=>3,l=>6,c=>0,k=>2,h=>7,b=>7,g=>3,f=>1,i=>1} b3ffffff07990100cf00023e b3ffffff07990100cf00023e b3ffffff07990100cf00023e ffffffb3e242c000e58002dc b3ffffff07990100cf00023e b3ffffff07990100cf00023e ffffffb3e242c000e58002dc b3ffffff07990100cf00023e ffffffb3e242c000e58002dc - {e=>6,a=>-85,m=>-1,d=>0,j=>6,l=>2,c=>2,k=>121,h=>4,b=>0,g=>5,f=>-4,i=>3} abffffff10cc02009c01793a abffffff10cc02009c01793a abffffff10cc02009c01793a ffffffab086940008f00795c abffffff10cc02009c01793a abffffff10cc02009c01793a ffffffab086940008f00795c abffffff10cc02009c01793a ffffffab086940008f00795c - {e=>0,a=>63,m=>-1,d=>3,j=>3,l=>1,c=>-1,k=>54,h=>5,b=>0,g=>0,f=>1,i=>-4} 3f000000f8100000e5003639 3f000000f8100000e5003639 3f000000f8100000e5003639 0000003f1d820000b180363c 3f000000f8100000e5003639 3f000000f8100000e5003639 0000003f1d820000b180363c 3f000000f8100000e5003639 0000003f1d820000b180363c - {e=>5,a=>3,m=>-4,d=>1,j=>0,l=>5,c=>-3,k=>-15,h=>4,b=>6,g=>2,f=>1,i=>1} 030000006e1a01000c00f125 030000006e1a01000c00f125 030000006e1a01000c00f125 00000003d4d280008400f1b0 030000006e1a01000c00f125 030000006e1a01000c00f125 00000003d4d280008400f1b0 030000006e1a01000c00f125 00000003d4d280008400f1b0 - {e=>1,a=>93,m=>0,d=>3,j=>0,l=>2,c=>0,k=>57,h=>6,b=>0,g=>4,f=>-1,i=>2} 5d000000c072020016003902 5d000000c072020016003902 5d000000c072020016003902 0000005d019f0000c8003940 5d000000c072020016003902 5d000000c072020016003902 0000005d019f0000c8003940 5d000000c072020016003902 0000005d019f0000c8003940 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>5,a=>93,m=>1,d=>1,j=>3,l=>1,c=>-2,k=>115,h=>3,b=>0,g=>2,f=>1,i=>1} 5d000000701c0100cb00730905000000 5d000000701c0100cb00730905000000 5d000000701c0100cb00730905000000 0000005d18e2800065807324a0000000 5d000000701c0100cb00730905000000 5d000000701c0100cb00730905000000 0000005d18e2800065807324a0000000 5d000000701c0100cb00730905000000 0000005d18e2800065807324a0000000 - {e=>7,n=>6,a=>-112,m=>1,d=>-2,j=>2,l=>1,c=>-1,k=>66,h=>1,b=>5,g=>3,f=>-4,i=>3} 90ffffffbdcf01009900420906000000 90ffffffbdcf01009900420906000000 90ffffffbdcf01009900420906000000 ffffff90bf78c0002d004224c0000000 90ffffffbdcf01009900420906000000 90ffffffbdcf01009900420906000000 ffffff90bf78c0002d004224c0000000 90ffffffbdcf01009900420906000000 ffffff90bf78c0002d004224c0000000 - {e=>7,n=>1,a=>102,m=>3,d=>3,j=>3,l=>6,c=>1,k=>-50,h=>5,b=>6,g=>7,f=>1,i=>1} 66000000ce9e0300cd00ce1e01000000 66000000ce9e0300cd00ce1e01000000 66000000ce9e0300cd00ce1e01000000 00000066c5f3c000a580cecc20000000 66000000ce9e0300cd00ce1e01000000 66000000ce9e0300cd00ce1e01000000 00000066c5f3c000a580cecc20000000 66000000ce9e0300cd00ce1e01000000 00000066c5f3c000a580cecc20000000 - {e=>3,n=>6,a=>-108,m=>1,d=>-4,j=>4,l=>4,c=>-3,k=>85,h=>3,b=>7,g=>7,f=>-1,i=>1} 94ffffff2ff703000b01550c06000000 94ffffff2ff703000b01550c06000000 94ffffff2ff703000b01550c06000000 ffffff94f63fc00066005584c0000000 94ffffff2ff703000b01550c06000000 94ffffff2ff703000b01550c06000000 ffffff94f63fc00066005584c0000000 94ffffff2ff703000b01550c06000000 ffffff94f63fc00066005584c0000000 - {e=>3,n=>5,a=>103,m=>1,d=>-3,j=>3,l=>2,c=>0,k=>103,h=>3,b=>4,g=>1,f=>1,i=>0} 6700000044970000c300670a05000000 6700000044970000c300670a05000000 6700000044970000c300670a05000000 0000006782b2400061806744a0000000 6700000044970000c300670a05000000 6700000044970000c300670a05000000 0000006782b2400061806744a0000000 6700000044970000c300670a05000000 0000006782b2400061806744a0000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>5,a=>-4,m=>-2,d=>-1,j=>4,l=>2,c=>-1,k=>-4,h=>5,b=>5,g=>2,f=>-2,o=>251,i=>1} fcfffffffd6d01000d01fc3205fb0000 fcfffffffd6d01000d01fc3205fb0000 fcfffffffd6d01000d01fc3205fb0000 fffffffcbfec8000a600fc58a0fb0000 fcfffffffd6d01000d01fc3205fb0000 fcfffffffd6d01000d01fc3205fb0000 fffffffcbfec8000a600fc58a0fb0000 fcfffffffd6d01000d01fc3205fb0000 fffffffcbfec8000a600fc58a0fb0000 - {e=>5,n=>7,a=>100,m=>-4,d=>-4,j=>4,l=>2,c=>0,k=>-86,h=>1,b=>5,g=>0,f=>2,o=>180,i=>-2} 64000000052b00003101aa2207b40000 64000000052b00003101aa2207b40000 64000000052b00003101aa2207b40000 00000064a25400003a00aa50e0b40000 64000000052b00003101aa2207b40000 64000000052b00003101aa2207b40000 00000064a25400003a00aa50e0b40000 64000000052b00003101aa2207b40000 00000064a25400003a00aa50e0b40000 - {e=>6,n=>7,a=>-56,m=>-2,d=>-3,j=>5,l=>0,c=>-3,k=>122,h=>4,b=>7,g=>2,f=>1,o=>254,i=>0} c8ffffff6f1d010044017a3007fe0000 c8ffffff6f1d010044017a3007fe0000 c8ffffff6f1d010044017a3007fe0000 ffffffc8f6e2800082807a18e0fe0000 c8ffffff6f1d010044017a3007fe0000 c8ffffff6f1d010044017a3007fe0000 ffffffc8f6e2800082807a18e0fe0000 c8ffffff6f1d010044017a3007fe0000 ffffffc8f6e2800082807a18e0fe0000 - {e=>1,n=>5,a=>-64,m=>-2,d=>1,j=>0,l=>1,c=>-3,k=>77,h=>7,b=>1,g=>4,f=>-1,o=>3,i=>-2} c0ffffff6972020037004d3105030000 c0ffffff6972020037004d3105030000 c0ffffff6972020037004d3105030000 ffffffc0349f0000f8004d38a0030000 c0ffffff6972020037004d3105030000 c0ffffff6972020037004d3105030000 ffffffc0349f0000f8004d38a0030000 c0ffffff6972020037004d3105030000 ffffffc0349f0000f8004d38a0030000 - {e=>5,n=>6,a=>-59,m=>-3,d=>0,j=>4,l=>3,c=>-3,k=>47,h=>3,b=>7,g=>0,f=>0,o=>16,i=>2} c5ffffff2f0a000013012f2b06100000 c5ffffff2f0a000013012f2b06100000 c5ffffff2f0a000013012f2b06100000 ffffffc5f45000006a002f74c0100000 c5ffffff2f0a000013012f2b06100000 c5ffffff2f0a000013012f2b06100000 ffffffc5f45000006a002f74c0100000 c5ffffff2f0a000013012f2b06100000 ffffffc5f45000006a002f74c0100000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; }; - {a=>-106,b=>7} 96ffffff07000000 96ffffffffffffff0700000000000000 96ffffffffffffff0700000000000000 ffffff96e0000000 96ffffff07000000 96ffffff07000000 ffffffffffffff96e000000000000000 96ffffff07000000 ffffff96e0000000 - {a=>-127,b=>2} 81ffffff02000000 81ffffffffffffff0200000000000000 81ffffffffffffff0200000000000000 ffffff8140000000 81ffffff02000000 81ffffff02000000 ffffffffffffff814000000000000000 81ffffff02000000 ffffff8140000000 - {a=>-66,b=>6} beffffff06000000 beffffffffffffff0600000000000000 beffffffffffffff0600000000000000 ffffffbec0000000 beffffff06000000 beffffff06000000 ffffffffffffffbec000000000000000 beffffff06000000 ffffffbec0000000 - {a=>49,b=>6} 3100000006000000 31000000000000000600000000000000 31000000000000000600000000000000 00000031c0000000 3100000006000000 3100000006000000 0000000000000031c000000000000000 3100000006000000 00000031c0000000 - {a=>107,b=>7} 6b00000007000000 6b000000000000000700000000000000 6b000000000000000700000000000000 0000006be0000000 6b00000007000000 6b00000007000000 000000000000006be000000000000000 6b00000007000000 0000006be0000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-18,b=>6} eeffffff06000000 eeffffffffffffff0600000000000000 eeffffffffffffff0600000000000000 ffffffeec0000000 eeffffff06000000 eeffffff06000000 ffffffffffffffeec000000000000000 eeffffff06000000 ffffffeec0000000 - {c=>-3,a=>-10,b=>6} f6ffffff2e000000 f6ffffffffffffff2e00000000000000 f6ffffffffffffff2e00000000000000 fffffff6d4000000 f6ffffff2e000000 f6ffffff2e000000 fffffffffffffff6d400000000000000 f6ffffff2e000000 fffffff6d4000000 - {c=>2,a=>40,b=>4} 2800000014000000 28000000000000001400000000000000 28000000000000001400000000000000 0000002888000000 2800000014000000 2800000014000000 00000000000000288800000000000000 2800000014000000 0000002888000000 - {c=>-2,a=>-97,b=>3} 9fffffff33000000 9fffffffffffffff3300000000000000 9fffffffffffffff3300000000000000 ffffff9f78000000 9fffffff33000000 9fffffff33000000 ffffffffffffff9f7800000000000000 9fffffff33000000 ffffff9f78000000 - {c=>0,a=>-24,b=>3} e8ffffff03000000 e8ffffffffffffff0300000000000000 e8ffffffffffffff0300000000000000 ffffffe860000000 e8ffffff03000000 e8ffffff03000000 ffffffffffffffe86000000000000000 e8ffffff03000000 ffffffe860000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>2,a=>-99,b=>5,d=>-3} 9dffffff55010000 9dffffffffffffff5501000000000000 9dffffffffffffff5501000000000000 ffffff9daa800000 9dffffff55010000 9dffffff55010000 ffffffffffffff9daa80000000000000 9dffffff55010000 ffffff9daa800000 - {c=>-3,a=>102,b=>4,d=>1} 660000006c000000 66000000000000006c00000000000000 66000000000000006c00000000000000 0000006694800000 660000006c000000 660000006c000000 00000000000000669480000000000000 660000006c000000 0000006694800000 - {c=>-4,a=>108,b=>1,d=>2} 6c000000a1000000 6c00000000000000a100000000000000 6c00000000000000a100000000000000 0000006c31000000 6c000000a1000000 6c000000a1000000 000000000000006c3100000000000000 6c000000a1000000 0000006c31000000 - {c=>1,a=>-81,b=>6,d=>3} afffffffce000000 afffffffffffffffce00000000000000 afffffffffffffffce00000000000000 ffffffafc5800000 afffffffce000000 afffffffce000000 ffffffffffffffafc580000000000000 afffffffce000000 ffffffafc5800000 - {c=>2,a=>-53,b=>2,d=>2} cbffffff92000000 cbffffffffffffff9200000000000000 cbffffffffffffff9200000000000000 ffffffcb49000000 cbffffff92000000 cbffffff92000000 ffffffffffffffcb4900000000000000 cbffffff92000000 ffffffcb49000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>2,a=>62,b=>7,d=>0} 3e00000017040000 3e000000000000001704000000000000 3e000000000000001704000000000000 0000003ee8200000 3e00000017040000 3e00000017040000 000000000000003ee820000000000000 3e00000017040000 0000003ee8200000 - {e=>0,c=>1,a=>-91,b=>7,d=>1} a5ffffff4f000000 a5ffffffffffffff4f00000000000000 a5ffffffffffffff4f00000000000000 ffffffa5e4800000 a5ffffff4f000000 a5ffffff4f000000 ffffffffffffffa5e480000000000000 a5ffffff4f000000 ffffffa5e4800000 - {e=>3,c=>-1,a=>50,b=>3,d=>0} 320000003b060000 32000000000000003b06000000000000 32000000000000003b06000000000000 000000327c300000 320000003b060000 320000003b060000 00000000000000327c30000000000000 320000003b060000 000000327c300000 - {e=>2,c=>-1,a=>-68,b=>2,d=>2} bcffffffba040000 bcffffffffffffffba04000000000000 bcffffffffffffffba04000000000000 ffffffbc5d200000 bcffffffba040000 bcffffffba040000 ffffffffffffffbc5d20000000000000 bcffffffba040000 ffffffbc5d200000 - {e=>5,c=>2,a=>67,b=>4,d=>1} 43000000540a0000 4300000000000000540a000000000000 4300000000000000540a000000000000 0000004388d00000 43000000540a0000 43000000540a0000 000000000000004388d0000000000000 43000000540a0000 0000004388d00000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>3,a=>-33,b=>2,d=>-3,f=>-3} dfffffff5a530000 dfffffffffffffff5a53000000000000 dfffffffffffffff5a53000000000000 ffffffdf4e9a0000 dfffffff5a530000 dfffffff5a530000 ffffffffffffffdf4e9a000000000000 dfffffff5a530000 ffffffdf4e9a0000 - {e=>6,c=>-4,a=>-3,b=>1,d=>-3,f=>1} fdffffff611d0000 fdffffffffffffff611d000000000000 fdffffffffffffff611d000000000000 fffffffd32e20000 fdffffff611d0000 fdffffff611d0000 fffffffffffffffd32e2000000000000 fdffffff611d0000 fffffffd32e20000 - {e=>5,c=>-2,a=>-125,b=>1,d=>-3,f=>-3} 83ffffff715b0000 83ffffffffffffff715b000000000000 83ffffffffffffff715b000000000000 ffffff833ada0000 83ffffff715b0000 83ffffff715b0000 ffffffffffffff833ada000000000000 83ffffff715b0000 ffffff833ada0000 - {e=>7,c=>-2,a=>101,b=>3,d=>-2,f=>-1} 65000000b37f0000 6500000000000000b37f000000000000 6500000000000000b37f000000000000 000000657b7e0000 65000000b37f0000 65000000b37f0000 00000000000000657b7e000000000000 65000000b37f0000 000000657b7e0000 - {e=>1,c=>-2,a=>71,b=>4,d=>3,f=>2} 47000000f4220000 4700000000000000f422000000000000 4700000000000000f422000000000000 0000004799940000 47000000f4220000 47000000f4220000 00000000000000479994000000000000 47000000f4220000 0000004799940000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>5,c=>0,a=>56,g=>7,b=>1,d=>-1,f=>2} 38000000c1ab0300 3800000000000000c1ab030000000000 3800000000000000c1ab030000000000 0000003823d5c000 38000000c1ab0300 38000000c1ab0300 000000000000003823d5c00000000000 38000000c1ab0300 0000003823d5c000 - {e=>6,c=>-4,a=>-45,g=>2,b=>2,d=>-1,f=>-1} d3ffffffe27d0100 d3ffffffffffffffe27d010000000000 d3ffffffffffffffe27d010000000000 ffffffd353ee8000 d3ffffffe27d0100 d3ffffffe27d0100 ffffffffffffffd353ee800000000000 d3ffffffe27d0100 ffffffd353ee8000 - {e=>7,c=>-4,a=>-101,g=>3,b=>1,d=>1,f=>-3} 9bffffff61de0100 9bffffffffffffff61de010000000000 9bffffffffffffff61de010000000000 ffffff9b30fac000 9bffffff61de0100 9bffffff61de0100 ffffffffffffff9b30fac00000000000 9bffffff61de0100 ffffff9b30fac000 - {e=>0,c=>3,a=>62,g=>5,b=>2,d=>-3,f=>-4} 3e0000005ac10200 3e000000000000005ac1020000000000 3e000000000000005ac1020000000000 0000003e4e894000 3e0000005ac10200 3e0000005ac10200 000000000000003e4e89400000000000 3e0000005ac10200 0000003e4e894000 - {e=>6,c=>3,a=>102,g=>2,b=>6,d=>1,f=>-1} 660000005e7c0100 66000000000000005e7c010000000000 66000000000000005e7c010000000000 00000066ccee8000 660000005e7c0100 660000005e7c0100 0000000000000066ccee800000000000 660000005e7c0100 00000066ccee8000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>0,c=>-3,a=>-101,g=>1,b=>2,d=>0,f=>-3} 9bffffff2ad00000 9bffffffffffffff2ad0000000000000 9bffffffffffffff2ad0000000000000 ffffff9b540a4000 9bffffff2ad00000 9bffffff2ad00000 ffffffffffffff9b540a400000000000 9bffffff2ad00000 ffffff9b540a4000 - {e=>5,c=>-4,a=>-95,g=>4,b=>4,d=>-4,f=>-1} a1ffffff247b0200 a1ffffffffffffff247b020000000000 a1ffffffffffffff247b020000000000 ffffffa1925f0000 a1ffffff247b0200 a1ffffff247b0200 ffffffffffffffa1925f000000000000 a1ffffff247b0200 ffffffa1925f0000 - {e=>0,c=>0,a=>60,g=>4,b=>4,d=>2,f=>-3} 3c00000084500200 3c000000000000008450020000000000 3c000000000000008450020000000000 0000003c810b0000 3c00000084500200 3c00000084500200 000000000000003c810b000000000000 3c00000084500200 0000003c810b0000 - {e=>4,c=>2,a=>-72,g=>5,b=>2,d=>1,f=>-2} b8ffffff52e80200 b8ffffffffffffff52e8020000000000 b8ffffffffffffff52e8020000000000 ffffffb848cd4000 b8ffffff52e80200 b8ffffff52e80200 ffffffffffffffb848cd400000000000 b8ffffff52e80200 ffffffb848cd4000 - {e=>4,c=>1,a=>-29,g=>7,b=>2,d=>-1,f=>2} e3ffffffcaa90300 e3ffffffffffffffcaa9030000000000 e3ffffffffffffffcaa9030000000000 ffffffe347c5c000 e3ffffffcaa90300 e3ffffffcaa90300 ffffffffffffffe347c5c00000000000 e3ffffffcaa90300 ffffffe347c5c000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>23,d=>2,c=>-2,h=>0,b=>2,g=>4,f=>-3} 17000000b252020000000000 1700000000000000b252020000000000 1700000000000000b252020000000000 00000017591b000000000000 17000000b252020000000000 17000000b252020000000000 0000000000000017591b000000000000 17000000b252020000000000 00000017591b000000000000 - {e=>7,a=>-108,d=>3,c=>0,h=>1,b=>7,g=>7,f=>-2} 94ffffffc7ee030001000000 94ffffffffffffffc7ee030001000000 94ffffffffffffffc7ee030001000000 ffffff94e1fdc00020000000 94ffffffc7ee030001000000 94ffffffc7ee030001000000 ffffffffffffff94e1fdc00020000000 94ffffffc7ee030001000000 ffffff94e1fdc00020000000 - {e=>5,a=>-126,d=>2,c=>1,h=>3,b=>4,g=>0,f=>3} 82ffffff8c3a000003000000 82ffffffffffffff8c3a000003000000 82ffffffffffffff8c3a000003000000 ffffff828556000060000000 82ffffff8c3a000003000000 82ffffff8c3a000003000000 ffffffffffffff828556000060000000 82ffffff8c3a000003000000 ffffff828556000060000000 - {e=>4,a=>-62,d=>3,c=>-4,h=>1,b=>2,g=>2,f=>-3} c2ffffffe258010001000000 c2ffffffffffffffe258010001000000 c2ffffffffffffffe258010001000000 ffffffc251ca800020000000 c2ffffffe258010001000000 c2ffffffe258010001000000 ffffffffffffffc251ca800020000000 c2ffffffe258010001000000 ffffffc251ca800020000000 - {e=>0,a=>89,d=>-3,c=>3,h=>0,b=>7,g=>3,f=>2} 590000005fa1010000000000 59000000000000005fa1010000000000 59000000000000005fa1010000000000 00000059ee84c00000000000 590000005fa1010000000000 590000005fa1010000000000 0000000000000059ee84c00000000000 590000005fa1010000000000 00000059ee84c00000000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>16,d=>1,c=>-4,h=>1,b=>7,g=>3,f=>-3,i=>0} 1000000067dc010001000000 100000000000000067dc010001000000 100000000000000067dc010001000000 00000010f0eac00020000000 1000000067dc010001000000 1000000067dc010001000000 0000000000000010f0eac00020000000 1000000067dc010001000000 00000010f0eac00020000000 - {e=>6,a=>62,d=>0,c=>1,h=>2,b=>0,g=>5,f=>-3,i=>2} 3e00000008dc020012000000 3e0000000000000008dc020012000000 3e0000000000000008dc020012000000 0000003e046b400048000000 3e00000008dc020012000000 3e00000008dc020012000000 000000000000003e046b400048000000 3e00000008dc020012000000 0000003e046b400048000000 - {e=>3,a=>-95,d=>-2,c=>3,h=>7,b=>3,g=>7,f=>-4,i=>0} a1ffffff9bc7030007000000 a1ffffffffffffff9bc7030007000000 a1ffffffffffffff9bc7030007000000 ffffffa16f39c000e0000000 a1ffffff9bc7030007000000 a1ffffff9bc7030007000000 ffffffffffffffa16f39c000e0000000 a1ffffff9bc7030007000000 ffffffa16f39c000e0000000 - {e=>6,a=>-45,d=>1,c=>0,h=>1,b=>6,g=>3,f=>-1,i=>1} d3ffffff46fc010009000000 d3ffffffffffffff46fc010009000000 d3ffffffffffffff46fc010009000000 ffffffd3c0eec00024000000 d3ffffff46fc010009000000 d3ffffff46fc010009000000 ffffffffffffffd3c0eec00024000000 d3ffffff46fc010009000000 ffffffd3c0eec00024000000 - {e=>1,a=>-122,d=>1,c=>0,h=>4,b=>1,g=>4,f=>0,i=>3} 86ffffff410202001c000000 86ffffffffffffff410202001c000000 86ffffffffffffff410202001c000000 ffffff86209100008c000000 86ffffff410202001c000000 86ffffff410202001c000000 ffffffffffffff86209100008c000000 86ffffff410202001c000000 ffffff86209100008c000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>1,a=>-114,d=>2,j=>5,c=>1,h=>4,b=>1,g=>6,f=>2,i=>-4} 8effffff8922030064010000 8effffffffffffff8922030064010000 8effffffffffffff8922030064010000 ffffff8e2515800092800000 8effffff8922030064010000 8effffff8922030064010000 ffffffffffffff8e2515800092800000 8effffff8922030064010000 ffffff8e2515800092800000 - {e=>2,a=>-60,d=>-3,j=>3,c=>-1,h=>6,b=>2,g=>1,f=>3,i=>0} c4ffffff7ab50000c6000000 c4ffffffffffffff7ab50000c6000000 c4ffffffffffffff7ab50000c6000000 ffffffc45ea64000c1800000 c4ffffff7ab50000c6000000 c4ffffff7ab50000c6000000 ffffffffffffffc45ea64000c1800000 c4ffffff7ab50000c6000000 ffffffc45ea64000c1800000 - {e=>3,a=>51,d=>1,j=>5,c=>-4,h=>6,b=>7,g=>3,f=>2,i=>2} 3300000067a6010056010000 330000000000000067a6010056010000 330000000000000067a6010056010000 00000033f0b4c000ca800000 3300000067a6010056010000 3300000067a6010056010000 0000000000000033f0b4c000ca800000 3300000067a6010056010000 00000033f0b4c000ca800000 - {e=>4,a=>-121,d=>-1,j=>3,c=>-3,h=>5,b=>3,g=>5,f=>1,i=>-1} 87ffffffeb990200fd000000 87ffffffffffffffeb990200fd000000 87ffffffffffffffeb990200fd000000 ffffff8777c34000bd800000 87ffffffeb990200fd000000 87ffffffeb990200fd000000 ffffffffffffff8777c34000bd800000 87ffffffeb990200fd000000 ffffff8777c34000bd800000 - {e=>4,a=>80,d=>3,j=>5,c=>-1,h=>2,b=>0,g=>4,f=>-2,i=>0} 50000000f868020042010000 5000000000000000f868020042010000 5000000000000000f868020042010000 000000501dcd000042800000 50000000f868020042010000 50000000f868020042010000 00000000000000501dcd000042800000 50000000f868020042010000 000000501dcd000042800000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>-88,d=>3,j=>5,c=>-3,k=>-40,h=>0,b=>6,g=>6,f=>1,i=>-2} a8ffffffee1c03007001d800 a8ffffffffffffffee1c03007001d800 a8ffffffffffffffee1c03007001d800 ffffffa8d5e380001a80d800 a8ffffffee1c03007001d800 a8ffffffee1c03007001d800 ffffffffffffffa8d5e380001a80d800 a8ffffffee1c03007001d800 ffffffa8d5e380001a80d800 - {e=>2,a=>100,d=>-2,j=>0,c=>-2,k=>126,h=>4,b=>0,g=>2,f=>-3,i=>-4} 64000000b055010024007e00 6400000000000000b055010024007e00 6400000000000000b055010024007e00 000000641b2a800090007e00 64000000b055010024007e00 64000000b055010024007e00 00000000000000641b2a800090007e00 64000000b055010024007e00 000000641b2a800090007e00 - {e=>3,a=>-69,d=>2,j=>7,c=>2,k=>33,h=>6,b=>6,g=>0,f=>1,i=>-1} bbffffff96160000fe012100 bbffffffffffffff96160000fe012100 bbffffffffffffff96160000fe012100 ffffffbbc9320000df802100 bbffffff96160000fe012100 bbffffff96160000fe012100 ffffffffffffffbbc9320000df802100 bbffffff96160000fe012100 ffffffbbc9320000df802100 - {e=>4,a=>68,d=>0,j=>5,c=>-1,k=>-97,h=>7,b=>4,g=>1,f=>-1,i=>3} 440000003cf800005f019f00 44000000000000003cf800005f019f00 44000000000000003cf800005f019f00 000000449c4e4000ee809f00 440000003cf800005f019f00 440000003cf800005f019f00 00000000000000449c4e4000ee809f00 440000003cf800005f019f00 000000449c4e4000ee809f00 - {e=>3,a=>-64,d=>-4,j=>1,c=>0,k=>-12,h=>3,b=>3,g=>2,f=>2,i=>0} c0ffffff032701004300f400 c0ffffffffffffff032701004300f400 c0ffffffffffffff032701004300f400 ffffffc0623480006080f400 c0ffffff032701004300f400 c0ffffff032701004300f400 ffffffffffffffc0623480006080f400 c0ffffff032701004300f400 ffffffc0623480006080f400 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>7,a=>19,d=>-2,j=>6,l=>1,c=>3,k=>-48,h=>6,b=>3,g=>4,f=>2,i=>3} 130000009b2f02009e01d001 13000000000000009b2f02009e01d001 13000000000000009b2f02009e01d001 000000136f750000cf00d020 130000009b2f02009e01d001 130000009b2f02009e01d001 00000000000000136f750000cf00d020 130000009b2f02009e01d001 000000136f750000cf00d020 - {e=>2,a=>-64,d=>-1,j=>0,l=>2,c=>-4,k=>-102,h=>5,b=>4,g=>0,f=>-4,i=>0} c0ffffffe445000005009a02 c0ffffffffffffffe445000005009a02 c0ffffffffffffffe445000005009a02 ffffffc093a80000a0009a40 c0ffffffe445000005009a02 c0ffffffe445000005009a02 ffffffffffffffc093a80000a0009a40 c0ffffffe445000005009a02 ffffffc093a80000a0009a40 - {e=>6,a=>32,d=>3,j=>6,l=>7,c=>0,k=>-18,h=>6,b=>2,g=>6,f=>3,i=>-4} 20000000c23c0300a601ee07 2000000000000000c23c0300a601ee07 2000000000000000c23c0300a601ee07 0000002041e78000d300eee0 20000000c23c0300a601ee07 20000000c23c0300a601ee07 000000000000002041e78000d300eee0 20000000c23c0300a601ee07 0000002041e78000d300eee0 - {e=>4,a=>12,d=>0,j=>4,l=>0,c=>1,k=>-60,h=>6,b=>2,g=>0,f=>3,i=>-4} 0c0000000a3800002601c400 0c000000000000000a3800002601c400 0c000000000000000a3800002601c400 0000000c44460000d200c400 0c0000000a3800002601c400 0c0000000a3800002601c400 000000000000000c44460000d200c400 0c0000000a3800002601c400 0000000c44460000d200c400 - {e=>1,a=>126,d=>-3,j=>3,l=>3,c=>-2,k=>127,h=>6,b=>2,g=>7,f=>3,i=>-2} 7e00000072b30300f6007f03 7e0000000000000072b30300f6007f03 7e0000000000000072b30300f6007f03 0000007e5a97c000d9807f60 7e00000072b30300f6007f03 7e00000072b30300f6007f03 000000000000007e5a97c000d9807f60 7e00000072b30300f6007f03 0000007e5a97c000d9807f60 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>41,m=>-2,d=>-2,j=>7,l=>3,c=>-2,k=>100,h=>7,b=>4,g=>4,f=>3,i=>2} 29000000b43f0200d7016433 2900000000000000b43f0200d7016433 2900000000000000b43f0200d7016433 000000299b770000eb806478 29000000b43f0200d7016433 29000000b43f0200d7016433 00000000000000299b770000eb806478 29000000b43f0200d7016433 000000299b770000eb806478 - {e=>0,a=>-34,m=>-1,d=>-1,j=>1,l=>4,c=>-4,k=>120,h=>0,b=>4,g=>1,f=>0,i=>1} deffffffe48100004800783c deffffffffffffffe48100004800783c deffffffffffffffe48100004800783c ffffffde938040000480789c deffffffe48100004800783c deffffffe48100004800783c ffffffffffffffde938040000480789c deffffffe48100004800783c ffffffde938040000480789c - {e=>6,a=>29,m=>1,d=>-2,j=>2,l=>1,c=>-2,k=>-104,h=>4,b=>7,g=>2,f=>0,i=>-1} 1d000000b70d0100bc009809 1d00000000000000b70d0100bc009809 1d00000000000000b70d0100bc009809 0000001dfb6080009d009824 1d000000b70d0100bc009809 1d000000b70d0100bc009809 000000000000001dfb6080009d009824 1d000000b70d0100bc009809 0000001dfb6080009d009824 - {e=>5,a=>-81,m=>3,d=>3,j=>2,l=>6,c=>-2,k=>-76,h=>3,b=>4,g=>4,f=>-1,i=>-3} affffffff47a0200ab00b41e affffffffffffffff47a0200ab00b41e affffffffffffffff47a0200ab00b41e ffffffaf99df00007500b4cc affffffff47a0200ab00b41e affffffff47a0200ab00b41e ffffffffffffffaf99df00007500b4cc affffffff47a0200ab00b41e ffffffaf99df00007500b4cc - {e=>3,a=>-14,m=>2,d=>-1,j=>5,l=>2,c=>3,k=>77,h=>2,b=>0,g=>7,f=>0,i=>1} f2ffffffd88703004a014d12 f2ffffffffffffffd88703004a014d12 f2ffffffffffffffd88703004a014d12 fffffff20fb1c00046804d48 f2ffffffd88703004a014d12 f2ffffffd88703004a014d12 fffffffffffffff20fb1c00046804d48 f2ffffffd88703004a014d12 fffffff20fb1c00046804d48 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>0,n=>2,a=>99,m=>-3,d=>-4,j=>1,l=>6,c=>-3,k=>5,h=>5,b=>2,g=>5,f=>3,i=>0} 630000002ab102004500052e02000000 63000000000000002ab102004500052e0200000000000000 63000000000000002ab102004500052e0200000000000000 0000006356074000a08005d440000000 630000002ab102004500052e02000000 630000002ab102004500052e02000000 000000000000006356074000a08005d44000000000000000 630000002ab102004500052e02000000 0000006356074000a08005d440000000 - {e=>7,n=>4,a=>56,m=>-1,d=>0,j=>4,l=>6,c=>3,k=>123,h=>3,b=>0,g=>0,f=>-1,i=>1} 38000000187e00000b017b3e04000000 3800000000000000187e00000b017b3e0400000000000000 3800000000000000187e00000b017b3e0400000000000000 000000380c7e000066007bdc80000000 38000000187e00000b017b3e04000000 38000000187e00000b017b3e04000000 00000000000000380c7e000066007bdc8000000000000000 38000000187e00000b017b3e04000000 000000380c7e000066007bdc80000000 - {e=>1,n=>0,a=>-72,m=>-1,d=>1,j=>2,l=>5,c=>-2,k=>29,h=>1,b=>1,g=>1,f=>2,i=>-3} b8ffffff71a20000a9001d3d00000000 b8ffffffffffffff71a20000a9001d3d0000000000000000 b8ffffffffffffff71a20000a9001d3d0000000000000000 ffffffb83894400035001dbc00000000 b8ffffff71a20000a9001d3d00000000 b8ffffff71a20000a9001d3d00000000 ffffffffffffffb83894400035001dbc0000000000000000 b8ffffff71a20000a9001d3d00000000 ffffffb83894400035001dbc00000000 - {e=>6,n=>5,a=>-35,m=>-3,d=>-2,j=>5,l=>6,c=>-1,k=>87,h=>4,b=>7,g=>0,f=>1,i=>-1} ddffffffbf1d00007c01572e05000000 ddffffffffffffffbf1d00007c01572e0500000000000000 ddffffffffffffffbf1d00007c01572e0500000000000000 ffffffddff6200009e8057d4a0000000 ddffffffbf1d00007c01572e05000000 ddffffffbf1d00007c01572e05000000 ffffffffffffffddff6200009e8057d4a000000000000000 ddffffffbf1d00007c01572e05000000 ffffffddff6200009e8057d4a0000000 - {e=>0,n=>1,a=>-32,m=>-1,d=>0,j=>6,l=>3,c=>1,k=>-26,h=>3,b=>1,g=>4,f=>-1,i=>3} e0ffffff097002009b01e63b01000000 e0ffffffffffffff097002009b01e63b0100000000000000 e0ffffffffffffff097002009b01e63b0100000000000000 ffffffe0240f00006f00e67c20000000 e0ffffff097002009b01e63b01000000 e0ffffff097002009b01e63b01000000 ffffffffffffffe0240f00006f00e67c2000000000000000 e0ffffff097002009b01e63b01000000 ffffffe0240f00006f00e67c20000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>4,n=>5,a=>-63,m=>0,d=>-4,j=>0,l=>3,c=>2,k=>0,h=>4,b=>6,g=>3,f=>0,o=>255,i=>1} c1ffffff168901000c00000305ff0000 c1ffffffffffffff168901000c00000305ff000000000000 c1ffffffffffffff168901000c00000305ff000000000000 ffffffc1ca40c00084000060a0ff0000 c1ffffff168901000c00000305ff0000 c1ffffff168901000c00000305ff0000 ffffffffffffffc1ca40c00084000060a0ff000000000000 c1ffffff168901000c00000305ff0000 ffffffc1ca40c00084000060a0ff0000 - {e=>4,n=>4,a=>-45,m=>-1,d=>-3,j=>5,l=>4,c=>-3,k=>-116,h=>7,b=>7,g=>0,f=>1,o=>47,i=>3} d3ffffff6f1900005f018c3c042f0000 d3ffffffffffffff6f1900005f018c3c042f000000000000 d3ffffffffffffff6f1900005f018c3c042f000000000000 ffffffd3f6c20000ee808c9c802f0000 d3ffffff6f1900005f018c3c042f0000 d3ffffff6f1900005f018c3c042f0000 ffffffffffffffd3f6c20000ee808c9c802f000000000000 d3ffffff6f1900005f018c3c042f0000 ffffffd3f6c20000ee808c9c802f0000 - {e=>2,n=>7,a=>37,m=>3,d=>2,j=>5,l=>5,c=>-2,k=>86,h=>3,b=>7,g=>5,f=>-2,o=>120,i=>-2} 25000000b7e402007301561d07780000 2500000000000000b7e402007301561d0778000000000000 2500000000000000b7e402007301561d0778000000000000 00000025f92d40007a8056ace0780000 25000000b7e402007301561d07780000 25000000b7e402007301561d07780000 0000000000000025f92d40007a8056ace078000000000000 25000000b7e402007301561d07780000 00000025f92d40007a8056ace0780000 - {e=>7,n=>3,a=>-38,m=>-4,d=>0,j=>4,l=>5,c=>0,k=>30,h=>7,b=>7,g=>0,f=>3,o=>182,i=>-2} daffffff073e000037011e2503b60000 daffffffffffffff073e000037011e2503b6000000000000 daffffffffffffff073e000037011e2503b6000000000000 ffffffdae0760000fa001eb060b60000 daffffff073e000037011e2503b60000 daffffff073e000037011e2503b60000 ffffffffffffffdae0760000fa001eb060b6000000000000 daffffff073e000037011e2503b60000 ffffffdae0760000fa001eb060b60000 - {e=>4,n=>1,a=>-127,m=>0,d=>-4,j=>1,l=>7,c=>0,k=>-88,h=>1,b=>4,g=>3,f=>-2,o=>194,i=>-2} 81ffffff04e901007100a80701c20000 81ffffffffffffff04e901007100a80701c2000000000000 81ffffffffffffff04e901007100a80701c2000000000000 ffffff81824cc0003880a8e020c20000 81ffffff04e901007100a80701c20000 81ffffff04e901007100a80701c20000 ffffffffffffff81824cc0003880a8e020c2000000000000 81ffffff04e901007100a80701c20000 ffffff81824cc0003880a8e020c20000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; }; - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {a=>4} 04000000 04000000 04000000 80000000 04000000 04000000 80000000 04000000 80000000 - {a=>1} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; }; - {a=>0,b=>-1} 38000000 38000000 38000000 1c000000 38000000 38000000 1c000000 38000000 1c000000 - {a=>0,b=>2} 10000000 10000000 10000000 08000000 10000000 10000000 08000000 10000000 08000000 - {a=>1,b=>0} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 - {a=>0,b=>3} 18000000 18000000 18000000 0c000000 18000000 18000000 0c000000 18000000 0c000000 - {a=>5,b=>-1} 3d000000 3d000000 3d000000 bc000000 3d000000 3d000000 bc000000 3d000000 bc000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>3,a=>0,b=>-3} e8000000 e8000000 e8000000 15800000 e8000000 e8000000 15800000 e8000000 15800000 - {c=>3,a=>7,b=>-4} e7000000 e7000000 e7000000 f1800000 e7000000 e7000000 f1800000 e7000000 f1800000 - {c=>2,a=>3,b=>3} 9b000000 9b000000 9b000000 6d000000 9b000000 9b000000 6d000000 9b000000 6d000000 - {c=>0,a=>3,b=>-3} 2b000000 2b000000 2b000000 74000000 2b000000 2b000000 74000000 2b000000 74000000 - {c=>-1,a=>3,b=>2} d3010000 d3010000 d3010000 6b800000 d3010000 d3010000 6b800000 d3010000 6b800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>3,a=>7,b=>-4,d=>7} e70e0000 e70e0000 e70e0000 f1f00000 e70e0000 e70e0000 f1f00000 e70e0000 f1f00000 - {c=>1,a=>2,b=>1,d=>0} 4a000000 4a000000 4a000000 44800000 4a000000 4a000000 44800000 4a000000 44800000 - {c=>-1,a=>1,b=>-4,d=>5} e10b0000 e10b0000 e10b0000 33d00000 e10b0000 e10b0000 33d00000 e10b0000 33d00000 - {c=>3,a=>6,b=>-1,d=>0} fe000000 fe000000 fe000000 dd800000 fe000000 fe000000 dd800000 fe000000 dd800000 - {c=>1,a=>4,b=>-2,d=>0} 74000000 74000000 74000000 98800000 74000000 74000000 98800000 74000000 98800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>2,c=>-2,a=>3,b=>-2,d=>6} b32d0000 b32d0000 b32d0000 7b640000 b32d0000 b32d0000 7b640000 b32d0000 7b640000 - {e=>-2,c=>-1,a=>3,b=>-3,d=>2} eb650000 eb650000 eb650000 77ac0000 eb650000 eb650000 77ac0000 eb650000 77ac0000 - {e=>3,c=>1,a=>7,b=>-1,d=>3} 7f360000 7f360000 7f360000 fcb60000 7f360000 7f360000 fcb60000 7f360000 fcb60000 - {e=>-4,c=>-2,a=>5,b=>-4,d=>1} a5430000 a5430000 a5430000 b3180000 a5430000 a5430000 b3180000 a5430000 b3180000 - {e=>1,c=>-2,a=>4,b=>-2,d=>4} b4190000 b4190000 b4190000 9b420000 b4190000 b4190000 9b420000 b4190000 9b420000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>-3,c=>1,a=>4,b=>-1,d=>2,f=>2} 7c540100 7c540100 7c540100 9caa8000 7c540100 7c540100 9caa8000 7c540100 9caa8000 - {e=>3,c=>2,a=>5,b=>-1,d=>0,f=>4} bd300200 bd300200 bd300200 bd070000 bd300200 bd300200 bd070000 bd300200 bd070000 - {e=>1,c=>-3,a=>3,b=>0,d=>6,f=>6} 431d0300 431d0300 431d0300 62e38000 431d0300 431d0300 62e38000 431d0300 62e38000 - {e=>2,c=>0,a=>1,b=>-3,d=>1,f=>6} 29220300 29220300 29220300 34158000 29220300 29220300 34158000 29220300 34158000 - {e=>2,c=>1,a=>4,b=>3,d=>0,f=>4} 5c200200 5c200200 5c200200 8c850000 5c200200 5c200200 8c850000 5c200200 8c850000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>-4,c=>0,a=>2,b=>2,d=>2,f=>3} 12c40100 12c40100 12c40100 4828c000 12c40100 12c40100 4828c000 12c40100 4828c000 - {e=>2,c=>-4,a=>0,b=>2,d=>4,f=>2} 10290100 10290100 10290100 0a448000 10290100 10290100 0a448000 10290100 0a448000 - {e=>-2,c=>-4,a=>4,b=>0,d=>3,f=>0} 04670000 04670000 04670000 823c0000 04670000 04670000 823c0000 04670000 823c0000 - {e=>-1,c=>1,a=>2,b=>3,d=>7,f=>0} 5a7e0000 5a7e0000 5a7e0000 4cfe0000 5a7e0000 5a7e0000 4cfe0000 5a7e0000 4cfe0000 - {e=>0,c=>-1,a=>1,b=>-3,d=>0,f=>5} e9810200 e9810200 e9810200 37814000 e9810200 e9810200 37814000 e9810200 37814000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>3,c=>1,a=>1,g=>6,b=>0,d=>5,f=>2} 413a010006000000 413a010006000000 413a010006000000 20d68000c0000000 413a010006000000 413a010006000000 20d68000c0000000 413a010006000000 20d68000c0000000 - {e=>-2,c=>-2,a=>3,g=>0,b=>3,d=>0,f=>7} 9be1030000000000 9be1030000000000 9be1030000000000 6f0dc00000000000 9be1030000000000 9be1030000000000 6f0dc00000000000 9be1030000000000 6f0dc00000000000 - {e=>-2,c=>-4,a=>6,g=>3,b=>-4,d=>6,f=>3} 26ed010003000000 26ed010003000000 26ed010003000000 d26cc00060000000 26ed010003000000 26ed010003000000 d26cc00060000000 26ed010003000000 d26cc00060000000 - {e=>-2,c=>1,a=>7,g=>4,b=>3,d=>7,f=>3} 5fee010004000000 5fee010004000000 5fee010004000000 ecfcc00080000000 5fee010004000000 5fee010004000000 ecfcc00080000000 5fee010004000000 ecfcc00080000000 - {e=>-2,c=>-3,a=>0,g=>1,b=>-3,d=>7,f=>5} 68ef020001000000 68ef020001000000 68ef020001000000 16fd400020000000 68ef020001000000 68ef020001000000 16fd400020000000 68ef020001000000 16fd400020000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>-2,a=>2,d=>0,c=>-4,h=>1,b=>-4,g=>0,f=>0} 2261000008000000 2261000008000000 2261000008000000 520c000004000000 2261000008000000 2261000008000000 520c000004000000 2261000008000000 520c000004000000 - {e=>-1,a=>0,d=>5,c=>-2,h=>-3,b=>2,g=>2,f=>7} 90fb03002a000000 90fb03002a000000 90fb03002a000000 0b5fc00054000000 90fb03002a000000 90fb03002a000000 0b5fc00054000000 90fb03002a000000 0b5fc00054000000 - {e=>3,a=>4,d=>0,c=>2,h=>-3,b=>3,g=>2,f=>7} 9cb003002a000000 9cb003002a000000 9cb003002a000000 8d07c00054000000 9cb003002a000000 9cb003002a000000 8d07c00054000000 9cb003002a000000 8d07c00054000000 - {e=>2,a=>7,d=>5,c=>2,h=>1,b=>0,g=>0,f=>2} 872a010008000000 872a010008000000 872a010008000000 e154800004000000 872a010008000000 872a010008000000 e154800004000000 872a010008000000 e154800004000000 - {e=>-3,a=>3,d=>6,c=>2,h=>0,b=>-1,g=>7,f=>4} bb5c020007000000 bb5c020007000000 bb5c020007000000 7d6b0000e0000000 bb5c020007000000 bb5c020007000000 7d6b0000e0000000 bb5c020007000000 7d6b0000e0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>2,a=>3,d=>4,c=>1,h=>-4,b=>-1,g=>4,f=>2,i=>7} 7b280100e4010000 7b280100e4010000 7b280100e4010000 7cc4800093800000 7b280100e4010000 7b280100e4010000 7cc4800093800000 7b280100e4010000 7cc4800093800000 - {e=>2,a=>7,d=>2,c=>-3,h=>2,b=>-1,g=>6,f=>7,i=>5} 7fa5030056010000 7fa5030056010000 7fa5030056010000 fea5c000ca800000 7fa5030056010000 7fa5030056010000 fea5c000ca800000 7fa5030056010000 fea5c000ca800000 - {e=>2,a=>2,d=>5,c=>-2,h=>0,b=>-1,g=>0,f=>6,i=>7} ba2b0300c0010000 ba2b0300c0010000 ba2b0300c0010000 5f55800003800000 ba2b0300c0010000 ba2b0300c0010000 5f55800003800000 ba2b0300c0010000 5f55800003800000 - {e=>-4,a=>0,d=>7,c=>0,h=>1,b=>3,g=>6,f=>0,i=>2} 184e00008e000000 184e00008e000000 184e00008e000000 0c780000c5000000 184e00008e000000 184e00008e000000 0c780000c5000000 184e00008e000000 0c780000c5000000 - {e=>0,a=>4,d=>3,c=>-1,h=>-4,b=>-4,g=>3,f=>6,i=>7} e4070300e3010000 e4070300e3010000 e4070300e3010000 93b1800073800000 e4070300e3010000 e4070300e3010000 93b1800073800000 e4070300e3010000 93b1800073800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>-3,a=>2,d=>5,j=>51,c=>-3,h=>-4,b=>-1,g=>5,f=>7,i=>4} 7adb030025013300 7adb030025013300 7adb030025013300 5edbc000b2003300 7adb030025013300 7adb030025013300 5edbc000b2003300 7adb030025013300 5edbc000b2003300 - {e=>2,a=>5,d=>0,j=>-45,c=>-2,h=>2,b=>-1,g=>6,f=>3,i=>2} bda101009600d300 bda101009600d300 bda101009600d300 bf04c000c900d300 bda101009600d300 bda101009600d300 bf04c000c900d300 bda101009600d300 bf04c000c900d300 - {e=>-1,a=>3,d=>4,j=>-26,c=>2,h=>3,b=>0,g=>1,f=>5,i=>0} 83f802001900e600 83f802001900e600 83f802001900e600 614f40002c00e600 83f802001900e600 83f802001900e600 614f40002c00e600 83f802001900e600 614f40002c00e600 - {e=>1,a=>4,d=>0,j=>-56,c=>1,h=>3,b=>2,g=>2,f=>3,i=>4} 549001001a01c800 549001001a01c800 549001001a01c800 8882c0004e00c800 549001001a01c800 549001001a01c800 8882c0004e00c800 549001001a01c800 8882c0004e00c800 - {e=>2,a=>7,d=>4,j=>-122,c=>-4,h=>1,b=>-2,g=>1,f=>4,i=>6} 3729020089018600 3729020089018600 3729020089018600 fa45000027008600 3729020089018600 3729020089018600 fa45000027008600 3729020089018600 fa45000027008600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>3,a=>6,d=>7,j=>112,c=>0,k=>2,h=>-4,b=>-3,g=>3,f=>7,i=>5} 2ebe030063017002 2ebe030063017002 2ebe030063017002 d477c00072807040 2ebe030063017002 2ebe030063017002 d477c00072807040 2ebe030063017002 d477c00072807040 - {e=>-3,a=>1,d=>7,j=>-86,c=>3,k=>2,h=>3,b=>-4,g=>7,f=>0,i=>3} e15e0000df00aa02 e15e0000df00aa02 e15e0000df00aa02 31fa0000ed80aa40 e15e0000df00aa02 e15e0000df00aa02 31fa0000ed80aa40 e15e0000df00aa02 31fa0000ed80aa40 - {e=>-2,a=>0,d=>6,j=>-117,c=>-3,k=>7,h=>0,b=>-1,g=>6,f=>7,i=>2} 78ed030086008b07 78ed030086008b07 78ed030086008b07 1eedc000c1008be0 78ed030086008b07 78ed030086008b07 1eedc000c1008be0 78ed030086008b07 1eedc000c1008be0 - {e=>1,a=>5,d=>5,j=>-119,c=>-2,k=>6,h=>1,b=>2,g=>3,f=>2,i=>0} 951b01000b008906 951b01000b008906 951b01000b008906 ab528000640089c0 951b01000b008906 951b01000b008906 ab528000640089c0 951b01000b008906 ab528000640089c0 - {e=>3,a=>6,d=>6,j=>-128,c=>-2,k=>0,h=>2,b=>-4,g=>3,f=>3,i=>5} a6bd010053018000 a6bd010053018000 a6bd010053018000 d366c0006a808000 a6bd010053018000 a6bd010053018000 d366c0006a808000 a6bd010053018000 d366c0006a808000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>-1,a=>1,d=>3,j=>90,l=>-1,c=>2,k=>4,h=>0,b=>-2,g=>5,f=>4,i=>3} b1760200c5005a3c b1760200c5005a3c b1760200c5005a3c 393f0000a1805a9c b1760200c5005a3c b1760200c5005a3c 393f0000a1805a9c b1760200c5005a3c 393f0000a1805a9c - {e=>3,a=>0,d=>3,j=>27,l=>-2,c=>-3,k=>5,h=>0,b=>-1,g=>2,f=>1,i=>5} 78b7000042011b35 78b7000042011b35 78b7000042011b35 1eb6400042801bb8 78b7000042011b35 78b7000042011b35 1eb6400042801bb8 78b7000042011b35 1eb6400042801bb8 - {e=>1,a=>1,d=>3,j=>-13,l=>-4,c=>-3,k=>5,h=>2,b=>-2,g=>6,f=>1,i=>1} 719700005600f325 719700005600f325 719700005600f325 3ab24000c880f3b0 719700005600f325 719700005600f325 3ab24000c880f3b0 719700005600f325 3ab24000c880f3b0 - {e=>2,a=>3,d=>7,j=>-47,l=>-2,c=>-3,k=>1,h=>3,b=>-3,g=>6,f=>3,i=>6} 6baf01009e01d131 6baf01009e01d131 6baf01009e01d131 76f4c000cf00d138 6baf01009e01d131 6baf01009e01d131 76f4c000cf00d138 6baf01009e01d131 76f4c000cf00d138 - {e=>1,a=>3,d=>4,j=>20,l=>2,c=>-4,k=>3,h=>-3,b=>2,g=>4,f=>0,i=>4} 131900002c011413 131900002c011413 131900002c011413 6a42000096001468 131900002c011413 131900002c011413 6a42000096001468 131900002c011413 6a42000096001468 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-2,a=>2,m=>1,d=>3,j=>66,l=>2,c=>1,k=>7,h=>0,b=>3,g=>3,f=>3,i=>4} 5ae601000301421701000000 5ae601000301421701000000 5ae601000301421701000000 4cbcc000620042e820000000 5ae601000301421701000000 5ae601000301421701000000 4cbcc000620042e820000000 5ae601000301421701000000 4cbcc000620042e820000000 - {e=>3,a=>7,m=>5,d=>2,j=>87,l=>-2,c=>-4,k=>4,h=>0,b=>1,g=>4,f=>1,i=>1} 0fb500004400573405000000 0fb500004400573405000000 0fb500004400573405000000 e626400080805798a0000000 0fb500004400573405000000 0fb500004400573405000000 e626400080805798a0000000 0fb500004400573405000000 e626400080805798a0000000 - {e=>0,a=>3,m=>7,d=>4,j=>2,l=>-3,c=>2,k=>7,h=>-4,b=>-2,g=>0,f=>4,i=>1} b30802006000022f07000000 b30802006000022f07000000 b30802006000022f07000000 79410000108002f4e0000000 b30802006000022f07000000 b30802006000022f07000000 79410000108002f4e0000000 b30802006000022f07000000 79410000108002f4e0000000 - {e=>0,a=>6,m=>1,d=>0,j=>-127,l=>0,c=>0,k=>2,h=>-3,b=>-2,g=>3,f=>2,i=>1} 360001006b00810201000000 360001006b00810201000000 360001006b00810201000000 d80080007480814020000000 360001006b00810201000000 360001006b00810201000000 d80080007480814020000000 360001006b00810201000000 d80080007480814020000000 - {e=>-1,a=>4,m=>4,d=>0,j=>-10,l=>-3,c=>0,k=>4,h=>-4,b=>1,g=>6,f=>3,i=>0} 0cf001002600f62c04000000 0cf001002600f62c04000000 0cf001002600f62c04000000 840ec000d000f69480000000 0cf001002600f62c04000000 0cf001002600f62c04000000 840ec000d000f69480000000 0cf001002600f62c04000000 840ec000d000f69480000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>-3,n=>71,a=>1,m=>5,d=>3,j=>-14,l=>-1,c=>0,k=>5,h=>-3,b=>0,g=>0,f=>5,i=>5} 01d602006801f23d05470000 01d602006801f23d05470000 01d602006801f23d05470000 203b40001680f2bca0470000 01d602006801f23d05470000 01d602006801f23d05470000 203b40001680f2bca0470000 01d602006801f23d05470000 203b40001680f2bca0470000 - {e=>1,n=>212,a=>5,m=>3,d=>1,j=>-32,l=>3,c=>-2,k=>5,h=>-2,b=>-3,g=>4,f=>0,i=>4} ad1300003401e01d03d40000 ad1300003401e01d03d40000 ad1300003401e01d03d40000 b71200009a00e0ac60d40000 ad1300003401e01d03d40000 ad1300003401e01d03d40000 b71200009a00e0ac60d40000 ad1300003401e01d03d40000 b71200009a00e0ac60d40000 - {e=>-1,n=>32,a=>4,m=>3,d=>1,j=>-40,l=>-2,c=>-1,k=>3,h=>-1,b=>2,g=>0,f=>5,i=>5} d4f302007801d83303200000 d4f302007801d83303200000 d4f302007801d83303200000 8b9f40001e80d87860200000 d4f302007801d83303200000 d4f302007801d83303200000 8b9f40001e80d87860200000 d4f302007801d83303200000 8b9f40001e80d87860200000 - {e=>-1,n=>95,a=>2,m=>6,d=>6,j=>-84,l=>0,c=>2,k=>0,h=>2,b=>-3,g=>2,f=>3,i=>2} aafc01009200ac00065f0000 aafc01009200ac00065f0000 aafc01009200ac00065f0000 556ec0004900ac00c05f0000 aafc01009200ac00065f0000 aafc01009200ac00065f0000 556ec0004900ac00c05f0000 aafc01009200ac00065f0000 556ec0004900ac00c05f0000 - {e=>0,n=>37,a=>4,m=>6,d=>1,j=>46,l=>2,c=>-3,k=>7,h=>0,b=>3,g=>0,f=>7,i=>0} 5c83030000002e1706250000 5c83030000002e1706250000 5c83030000002e1706250000 8e91c00000002ee8c0250000 5c83030000002e1706250000 5c83030000002e1706250000 8e91c00000002ee8c0250000 5c83030000002e1706250000 8e91c00000002ee8c0250000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; }; - {a=>106,b=>0} 6a000000 6a000000 6a000000 6a000000 6a000000 6a000000 6a000000 6a000000 6a000000 - {a=>-10,b=>0} f6000000 f6000000 f6000000 f6000000 f6000000 f6000000 f6000000 f6000000 f6000000 - {a=>12,b=>6} 0c060000 0c060000 0c060000 0cc00000 0c060000 0c060000 0cc00000 0c060000 0cc00000 - {a=>-86,b=>1} aa010000 aa010000 aa010000 aa200000 aa010000 aa010000 aa200000 aa010000 aa200000 - {a=>-33,b=>2} df020000 df020000 df020000 df400000 df020000 df020000 df400000 df020000 df400000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; }; - {c=>-3,a=>-108,b=>2} 942a0000 942a0000 942a0000 94540000 942a0000 942a0000 94540000 942a0000 94540000 - {c=>1,a=>96,b=>5} 600d0000 600d0000 600d0000 60a40000 600d0000 600d0000 60a40000 600d0000 60a40000 - {c=>3,a=>-121,b=>6} 871e0000 871e0000 871e0000 87cc0000 871e0000 871e0000 87cc0000 871e0000 87cc0000 - {c=>-1,a=>-58,b=>1} c6390000 c6390000 c6390000 c63c0000 c6390000 c6390000 c63c0000 c6390000 c63c0000 - {c=>2,a=>62,b=>2} 3e120000 3e120000 3e120000 3e480000 3e120000 3e120000 3e480000 3e120000 3e480000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>40,b=>3,d=>-2} 28a30100 28a30100 28a30100 28730000 28a30100 28a30100 28730000 28a30100 28730000 - {c=>-3,a=>68,b=>4,d=>-3} 446c0100 446c0100 446c0100 44968000 446c0100 446c0100 44968000 446c0100 44968000 - {c=>-3,a=>21,b=>0,d=>3} 15e80000 15e80000 15e80000 15158000 15e80000 15e80000 15158000 15e80000 15158000 - {c=>-3,a=>-98,b=>2,d=>-1} 9eea0100 9eea0100 9eea0100 9e578000 9eea0100 9eea0100 9e578000 9eea0100 9e578000 - {c=>-3,a=>74,b=>7,d=>1} 4a6f0000 4a6f0000 4a6f0000 4af48000 4a6f0000 4a6f0000 4af48000 4a6f0000 4af48000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>-2,a=>4,b=>0,d=>-4} 04300700 04300700 04300700 041a3000 04300700 04300700 041a3000 04300700 041a3000 - {e=>4,c=>-1,a=>44,b=>0,d=>2} 2cb80800 2cb80800 2cb80800 2c1d4000 2cb80800 2cb80800 2c1d4000 2cb80800 2c1d4000 - {e=>7,c=>-1,a=>-108,b=>5,d=>-2} 94bd0f00 94bd0f00 94bd0f00 94bf7000 94bd0f00 94bd0f00 94bf7000 94bd0f00 94bf7000 - {e=>3,c=>2,a=>-123,b=>0,d=>3} 85d00600 85d00600 85d00600 8509b000 85d00600 85d00600 8509b000 85d00600 8509b000 - {e=>3,c=>0,a=>-85,b=>5,d=>0} ab050600 ab050600 ab050600 aba03000 ab050600 ab050600 aba03000 ab050600 aba03000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>-3,a=>-86,b=>1,d=>-3,f=>3} aa693500 aa693500 aa693500 aa36a600 aa693500 aa693500 aa36a600 aa693500 aa36a600 - {e=>4,c=>1,a=>-10,b=>0,d=>0,f=>3} f6083800 f6083800 f6083800 f6044600 f6083800 f6083800 f6044600 f6083800 f6044600 - {e=>7,c=>-2,a=>18,b=>2,d=>-2,f=>-1} 12b27f00 12b27f00 12b27f00 125b7e00 12b27f00 12b27f00 125b7e00 12b27f00 125b7e00 - {e=>2,c=>3,a=>-8,b=>5,d=>1,f=>2} f85d2400 f85d2400 f85d2400 f8aca400 f85d2400 f85d2400 f8aca400 f85d2400 f8aca400 - {e=>1,c=>0,a=>-98,b=>0,d=>1,f=>0} 9e400200 9e400200 9e400200 9e009000 9e400200 9e400200 9e009000 9e400200 9e009000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>3,c=>1,a=>126,g=>5,b=>0,d=>0,f=>3} 7e08b602 7e08b602 7e08b602 7e043740 7e08b602 7e08b602 7e043740 7e08b602 7e043740 - {e=>0,c=>-4,a=>-72,g=>4,b=>2,d=>-1,f=>2} b8e22102 b8e22102 b8e22102 b8538500 b8e22102 b8e22102 b8538500 b8e22102 b8538500 - {e=>4,c=>-2,a=>-68,g=>1,b=>6,d=>3,f=>3} bcf6b800 bcf6b800 bcf6b800 bcd9c640 bcf6b800 bcf6b800 bcd9c640 bcf6b800 bcd9c640 - {e=>1,c=>-2,a=>34,g=>4,b=>7,d=>-4,f=>-4} 22374302 22374302 22374302 22fa1900 22374302 22374302 22fa1900 22374302 22fa1900 - {e=>2,c=>3,a=>13,g=>1,b=>3,d=>2,f=>-3} 0d9bd400 0d9bd400 0d9bd400 0d6d2a40 0d9bd400 0d9bd400 0d6d2a40 0d9bd400 0d6d2a40 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>6,c=>2,a=>-126,g=>7,b=>4,d=>-3,f=>2} 8254ad03 8254ad03 8254ad03 828ae5c0 8254ad03 8254ad03 828ae5c0 8254ad03 828ae5c0 - {e=>7,c=>-3,a=>-72,g=>3,b=>6,d=>-4,f=>-3} b82edf01 b82edf01 b82edf01 b8d67ac0 b82edf01 b82edf01 b8d67ac0 b82edf01 b8d67ac0 - {e=>6,c=>-3,a=>67,g=>7,b=>6,d=>-1,f=>-4} 43eecd03 43eecd03 43eecd03 43d7e9c0 43eecd03 43eecd03 43d7e9c0 43eecd03 43d7e9c0 - {e=>4,c=>-2,a=>-37,g=>6,b=>2,d=>3,f=>3} dbf23803 dbf23803 dbf23803 db59c780 dbf23803 dbf23803 db59c780 dbf23803 db59c780 - {e=>4,c=>3,a=>23,g=>7,b=>1,d=>2,f=>2} 1799a803 1799a803 1799a803 172d45c0 1799a803 1799a803 172d45c0 1799a803 172d45c0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>106,d=>0,c=>1,h=>0,b=>6,g=>3,f=>3} 6a0eb60100000000 6a0eb60100000000 6a0eb60100000000 6ac436c000000000 6a0eb60100000000 6a0eb60100000000 6ac436c000000000 6a0eb60100000000 6ac436c000000000 - {e=>0,a=>102,d=>-2,c=>-2,h=>0,b=>5,g=>0,f=>2} 66b5210000000000 66b5210000000000 66b5210000000000 66bb040000000000 66b5210000000000 66b5210000000000 66bb040000000000 66b5210000000000 66bb040000000000 - {e=>1,a=>-118,d=>2,c=>-3,h=>1,b=>1,g=>6,f=>3} 8aa9320301000000 8aa9320301000000 8aa9320301000000 8a35178020000000 8aa9320301000000 8aa9320301000000 8a35178020000000 8aa9320301000000 8a35178020000000 - {e=>0,a=>60,d=>-3,c=>2,h=>0,b=>3,g=>0,f=>0} 3c53010000000000 3c53010000000000 3c53010000000000 3c6a800000000000 3c53010000000000 3c53010000000000 3c6a800000000000 3c53010000000000 3c6a800000000000 - {e=>5,a=>19,d=>-2,c=>3,h=>1,b=>2,g=>4,f=>3} 139a3b0201000000 139a3b0201000000 139a3b0201000000 134f570020000000 139a3b0201000000 139a3b0201000000 134f570020000000 139a3b0201000000 134f570020000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>126,d=>2,c=>1,h=>5,b=>4,g=>6,f=>3,i=>-4} 7e8c380325000000 7e8c380325000000 7e8c380325000000 7e854780b0000000 7e8c380325000000 7e8c380325000000 7e854780b0000000 7e8c380325000000 7e854780b0000000 - {e=>7,a=>-19,d=>0,c=>1,h=>2,b=>3,g=>5,f=>0,i=>-3} ed0b8e022a000000 ed0b8e022a000000 ed0b8e022a000000 ed64714054000000 ed0b8e022a000000 ed0b8e022a000000 ed64714054000000 ed0b8e022a000000 ed64714054000000 - {e=>0,a=>122,d=>3,c=>3,h=>2,b=>4,g=>2,f=>-2,i=>2} 7adc600112000000 7adc600112000000 7adc600112000000 7a8d8c8048000000 7adc600112000000 7adc600112000000 7a8d8c8048000000 7adc600112000000 7a8d8c8048000000 - {e=>2,a=>62,d=>-4,c=>-4,h=>6,b=>3,g=>5,f=>-2,i=>3} 3e23e5021e000000 3e23e5021e000000 3e23e5021e000000 3e722d40cc000000 3e23e5021e000000 3e23e5021e000000 3e722d40cc000000 3e23e5021e000000 3e722d40cc000000 - {e=>1,a=>64,d=>-3,c=>-4,h=>0,b=>3,g=>1,f=>-4,i=>-4} 4063c30020000000 4063c30020000000 4063c30020000000 4072984010000000 4063c30020000000 4063c30020000000 4072984010000000 4063c30020000000 4072984010000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>6,a=>-51,d=>2,j=>2,c=>1,h=>0,b=>4,g=>2,f=>0,i=>-3} cd8c0c01a8000000 cd8c0c01a8000000 cd8c0c01a8000000 cd85608015000000 cd8c0c01a8000000 cd8c0c01a8000000 cd85608015000000 cd8c0c01a8000000 cd85608015000000 - {e=>3,a=>36,d=>-4,j=>7,c=>3,h=>7,b=>5,g=>6,f=>0,i=>-2} 241d0703f7010000 241d0703f7010000 241d0703f7010000 24ae3180fb800000 241d0703f7010000 241d0703f7010000 24ae3180fb800000 241d0703f7010000 24ae3180fb800000 - {e=>3,a=>-65,d=>-2,j=>7,c=>-1,h=>5,b=>0,g=>5,f=>3,i=>-1} bfb8b702fd010000 bfb8b702fd010000 bfb8b702fd010000 bf1f3740bf800000 bfb8b702fd010000 bfb8b702fd010000 bf1f3740bf800000 bfb8b702fd010000 bf1f3740bf800000 - {e=>3,a=>-4,d=>2,j=>4,c=>1,h=>1,b=>5,g=>1,f=>-1,i=>1} fc8df60009010000 fc8df60009010000 fc8df60009010000 fca53e4026000000 fc8df60009010000 fc8df60009010000 fca53e4026000000 fc8df60009010000 fca53e4026000000 - {e=>5,a=>114,d=>2,j=>0,c=>1,h=>2,b=>7,g=>2,f=>-3,i=>-3} 728f5a012a000000 728f5a012a000000 728f5a012a000000 72e55a8054000000 728f5a012a000000 728f5a012a000000 72e55a8054000000 728f5a012a000000 72e55a8054000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>66,d=>1,j=>3,c=>3,k=>-88,h=>4,b=>5,g=>0,f=>3,i=>1} 425d3c00cc00a800 425d3c00cc00a800 425d3c00cc00a800 42ace6008580a800 425d3c00cc00a800 425d3c00cc00a800 42ace6008580a800 425d3c00cc00a800 42ace6008580a800 - {e=>3,a=>-27,d=>3,j=>3,c=>-4,k=>-71,h=>2,b=>6,g=>1,f=>1,i=>-3} e5e69600ea00b900 e5e69600ea00b900 e5e69600ea00b900 e5d1b2405580b900 e5e69600ea00b900 e5e69600ea00b900 e5d1b2405580b900 e5e69600ea00b900 e5d1b2405580b900 - {e=>7,a=>-4,d=>-3,j=>1,c=>-3,k=>-71,h=>5,b=>0,g=>3,f=>2,i=>-4} fc68af016500b900 fc68af016500b900 fc68af016500b900 fc16f4c0b080b900 fc68af016500b900 fc68af016500b900 fc16f4c0b080b900 fc68af016500b900 fc16f4c0b080b900 - {e=>7,a=>-35,d=>-3,j=>6,c=>2,k=>50,h=>5,b=>5,g=>6,f=>1,i=>2} dd551f0395013200 dd551f0395013200 dd551f0395013200 ddaaf380ab003200 dd551f0395013200 dd551f0395013200 ddaaf380ab003200 dd551f0395013200 ddaaf380ab003200 - {e=>5,a=>-47,d=>0,j=>3,c=>3,k=>-120,h=>3,b=>2,g=>7,f=>2,i=>1} d11aaa03cb008800 d11aaa03cb008800 d11aaa03cb008800 d14c55c065808800 d11aaa03cb008800 d11aaa03cb008800 d14c55c065808800 d11aaa03cb008800 d14c55c065808800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>2,a=>-32,d=>-4,j=>1,l=>2,c=>-4,k=>-17,h=>5,b=>0,g=>3,f=>1,i=>-3} e02095016d00ef02 e02095016d00ef02 e02095016d00ef02 e01222c0b480ef40 e02095016d00ef02 e02095016d00ef02 e01222c0b480ef40 e02095016d00ef02 e01222c0b480ef40 - {e=>7,a=>-51,d=>2,j=>0,l=>7,c=>-1,k=>-66,h=>1,b=>5,g=>3,f=>1,i=>-1} cdbd9e013900be07 cdbd9e013900be07 cdbd9e013900be07 cdbd72c03c00bee0 cdbd9e013900be07 cdbd9e013900be07 cdbd72c03c00bee0 cdbd9e013900be07 cdbd72c03c00bee0 - {e=>5,a=>73,d=>2,j=>4,l=>7,c=>-3,k=>-107,h=>4,b=>6,g=>4,f=>-2,i=>-4} 49ae6a0224019507 49ae6a0224019507 49ae6a0224019507 49d55d00920095e0 49ae6a0224019507 49ae6a0224019507 49d55d00920095e0 49ae6a0224019507 49d55d00920095e0 - {e=>7,a=>-32,d=>0,j=>2,l=>6,c=>1,k=>-119,h=>6,b=>7,g=>0,f=>-4,i=>0} e00f4e0086008906 e00f4e0086008906 e00f4e0086008906 e0e47800c10089c0 e00f4e0086008906 e00f4e0086008906 e0e47800c10089c0 e00f4e0086008906 e0e47800c10089c0 - {e=>7,a=>70,d=>1,j=>3,l=>0,c=>2,k=>-78,h=>4,b=>1,g=>4,f=>3,i=>-1} 46513e02fc00b200 46513e02fc00b200 46513e02fc00b200 4628f7009d80b200 46513e02fc00b200 46513e02fc00b200 4628f7009d80b200 46513e02fc00b200 4628f7009d80b200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>5,a=>82,m=>1,d=>-4,j=>4,l=>4,c=>2,k=>75,h=>1,b=>7,g=>3,f=>-2,i=>2} 5217eb0111014b0c 5217eb0111014b0c 5217eb0111014b0c 52ea5cc02a004b84 5217eb0111014b0c 5217eb0111014b0c 52ea5cc02a004b84 5217eb0111014b0c 52ea5cc02a004b84 - {e=>1,a=>65,m=>0,d=>-2,j=>6,l=>6,c=>1,k=>10,h=>7,b=>6,g=>6,f=>1,i=>3} 418e13039f010a06 418e13039f010a06 418e13039f010a06 41c71380ef000ac0 418e13039f010a06 418e13039f010a06 41c71380ef000ac0 418e13039f010a06 41c71380ef000ac0 - {e=>1,a=>50,m=>0,d=>-1,j=>4,l=>1,c=>3,k=>-39,h=>4,b=>5,g=>1,f=>3,i=>2} 32ddb3001401d901 32ddb3001401d901 32ddb3001401d901 32af96408a00d920 32ddb3001401d901 32ddb3001401d901 32af96408a00d920 32ddb3001401d901 32af96408a00d920 - {e=>1,a=>-30,m=>-3,d=>-3,j=>4,l=>3,c=>0,k=>-58,h=>2,b=>2,g=>4,f=>-3,i=>-1} e24253023a01c62b e24253023a01c62b e24253023a01c62b e2429b005e00c674 e24253023a01c62b e24253023a01c62b e2429b005e00c674 e24253023a01c62b e2429b005e00c674 - {e=>6,a=>-8,m=>-1,d=>-4,j=>1,l=>7,c=>1,k=>-96,h=>4,b=>1,g=>2,f=>-4,i=>3} f8094d015c00a03f f8094d015c00a03f f8094d015c00a03f f82668808c80a0fc f8094d015c00a03f f8094d015c00a03f f82668808c80a0fc f8094d015c00a03f f82668808c80a0fc = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>7,a=>127,m=>-3,d=>2,j=>1,l=>4,c=>3,k=>113,h=>7,b=>0,g=>3,f=>-2,i=>1} 7f98ec014f00712c07000000 7f98ec014f00712c07000000 7f98ec014f00712c07000000 7f0d6cc0e4807194e0000000 7f98ec014f00712c07000000 7f98ec014f00712c07000000 7f0d6cc0e4807194e0000000 7f98ec014f00712c07000000 7f0d6cc0e4807194e0000000 - {e=>4,n=>0,a=>91,m=>2,d=>-1,j=>4,l=>6,c=>0,k=>7,h=>3,b=>0,g=>3,f=>2,i=>2} 5bc0a9011301071600000000 5bc0a9011301071600000000 5bc0a9011301071600000000 5b03c4c06a0007c800000000 5bc0a9011301071600000000 5bc0a9011301071600000000 5b03c4c06a0007c800000000 5bc0a9011301071600000000 5b03c4c06a0007c800000000 - {e=>3,n=>7,a=>-20,m=>-1,d=>-3,j=>0,l=>1,c=>3,k=>18,h=>1,b=>6,g=>4,f=>2,i=>-2} ec5e27023100123907000000 ec5e27023100123907000000 ec5e27023100123907000000 ecceb5003800123ce0000000 ec5e27023100123907000000 ec5e27023100123907000000 ecceb5003800123ce0000000 ec5e27023100123907000000 ecceb5003800123ce0000000 - {e=>6,n=>4,a=>46,m=>-4,d=>-2,j=>7,l=>6,c=>-3,k=>27,h=>0,b=>6,g=>7,f=>2,i=>3} 2eaead03d8011b2604000000 2eaead03d8011b2604000000 2eaead03d8011b2604000000 2ed765c00f801bd080000000 2eaead03d8011b2604000000 2eaead03d8011b2604000000 2ed765c00f801bd080000000 2eaead03d8011b2604000000 2ed765c00f801bd080000000 - {e=>6,n=>5,a=>47,m=>-1,d=>-4,j=>7,l=>6,c=>-3,k=>-66,h=>0,b=>6,g=>0,f=>-4,i=>0} 2f2e4d00c001be3e05000000 2f2e4d00c001be3e05000000 2f2e4d00c001be3e05000000 2fd668000380bedca0000000 2f2e4d00c001be3e05000000 2f2e4d00c001be3e05000000 2fd668000380bedca0000000 2f2e4d00c001be3e05000000 2fd668000380bedca0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>3,a=>90,m=>-1,d=>-4,j=>1,l=>4,c=>2,k=>65,h=>5,b=>7,g=>5,f=>1,o=>24,i=>2} 5a179f025500413c03180000 5a179f025500413c03180000 5a179f025500413c03180000 5aea7340a880419c60180000 5a179f025500413c03180000 5a179f025500413c03180000 5aea7340a880419c60180000 5a179f025500413c03180000 5aea7340a880419c60180000 - {e=>2,n=>4,a=>119,m=>3,d=>-2,j=>6,l=>0,c=>-4,k=>51,h=>3,b=>6,g=>7,f=>-4,o=>208,i=>-4} 77a6c503a301331804d00000 77a6c503a301331804d00000 77a6c503a301331804d00000 77d329c07300330c80d00000 77a6c503a301331804d00000 77a6c503a301331804d00000 77d329c07300330c80d00000 77a6c503a301331804d00000 77d329c07300330c80d00000 - {e=>7,n=>2,a=>-108,m=>-3,d=>2,j=>4,l=>7,c=>-1,k=>14,h=>5,b=>7,g=>3,f=>3,o=>186,i=>3} 94bfbe011d010e2f02ba0000 94bfbe011d010e2f02ba0000 94bfbe011d010e2f02ba0000 94fd76c0ae000ef440ba0000 94bfbe011d010e2f02ba0000 94bfbe011d010e2f02ba0000 94fd76c0ae000ef440ba0000 94bfbe011d010e2f02ba0000 94fd76c0ae000ef440ba0000 - {e=>6,n=>0,a=>-25,m=>-1,d=>1,j=>2,l=>3,c=>-1,k=>-23,h=>6,b=>5,g=>5,f=>2,o=>143,i=>2} e77dac029600e93b008f0000 e77dac029600e93b008f0000 e77dac029600e93b008f0000 e7bce540c900e97c008f0000 e77dac029600e93b008f0000 e77dac029600e93b008f0000 e7bce540c900e97c008f0000 e77dac029600e93b008f0000 e7bce540c900e97c008f0000 - {e=>3,n=>2,a=>-24,m=>0,d=>-1,j=>4,l=>3,c=>3,k=>57,h=>3,b=>7,g=>0,f=>-2,o=>223,i=>2} e8df67001301390302df0000 e8df67001301390302df0000 e8df67001301390302df0000 e8efbc006a00396040df0000 e8df67001301390302df0000 e8df67001301390302df0000 e8efbc006a00396040df0000 e8df67001301390302df0000 e8efbc006a00396040df0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; }; - {a=>-22,b=>5} eaff0500 eaff0500 eaff0500 ffeaa000 eaff0500 eaff0500 ffeaa000 eaff0500 ffeaa000 - {a=>45,b=>7} 2d000700 2d000700 2d000700 002de000 2d000700 2d000700 002de000 2d000700 002de000 - {a=>-48,b=>5} d0ff0500 d0ff0500 d0ff0500 ffd0a000 d0ff0500 d0ff0500 ffd0a000 d0ff0500 ffd0a000 - {a=>-29,b=>0} e3ff0000 e3ff0000 e3ff0000 ffe30000 e3ff0000 e3ff0000 ffe30000 e3ff0000 ffe30000 - {a=>124,b=>1} 7c000100 7c000100 7c000100 007c2000 7c000100 7c000100 007c2000 7c000100 007c2000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-68,b=>0} bcff0000 bcff0000 bcff0000 ffbc0000 bcff0000 bcff0000 ffbc0000 bcff0000 ffbc0000 - {c=>0,a=>-11,b=>4} f5ff0400 f5ff0400 f5ff0400 fff58000 f5ff0400 f5ff0400 fff58000 f5ff0400 fff58000 - {c=>-4,a=>-111,b=>3} 91ff2300 91ff2300 91ff2300 ff917000 91ff2300 91ff2300 ff917000 91ff2300 ff917000 - {c=>-1,a=>-105,b=>0} 97ff3800 97ff3800 97ff3800 ff971c00 97ff3800 97ff3800 ff971c00 97ff3800 ff971c00 - {c=>0,a=>-96,b=>4} a0ff0400 a0ff0400 a0ff0400 ffa08000 a0ff0400 a0ff0400 ffa08000 a0ff0400 ffa08000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-55,b=>7,d=>1} c9ff6700 c9ff6700 c9ff6700 ffc9f080 c9ff6700 c9ff6700 ffc9f080 c9ff6700 ffc9f080 - {c=>3,a=>59,b=>3,d=>-2} 3b009b01 3b009b01 3b009b01 003b6f00 3b009b01 3b009b01 003b6f00 3b009b01 003b6f00 - {c=>-1,a=>-48,b=>3,d=>0} d0ff3b00 d0ff3b00 d0ff3b00 ffd07c00 d0ff3b00 d0ff3b00 ffd07c00 d0ff3b00 ffd07c00 - {c=>-1,a=>-29,b=>6,d=>3} e3fffe00 e3fffe00 e3fffe00 ffe3dd80 e3fffe00 e3fffe00 ffe3dd80 e3fffe00 ffe3dd80 - {c=>-3,a=>32,b=>0,d=>1} 20006800 20006800 20006800 00201480 20006800 20006800 00201480 20006800 00201480 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-3,a=>20,b=>1,d=>-3} 14006909 14006909 14006909 001436c0 14006909 14006909 001436c0 14006909 001436c0 - {e=>3,c=>2,a=>-60,b=>0,d=>-2} c4ff9007 c4ff9007 c4ff9007 ffc40b30 c4ff9007 c4ff9007 ffc40b30 c4ff9007 ffc40b30 - {e=>5,c=>-3,a=>-102,b=>3,d=>-4} 9aff2b0b 9aff2b0b 9aff2b0b ff9a7650 9aff2b0b 9aff2b0b ff9a7650 9aff2b0b ff9a7650 - {e=>3,c=>-4,a=>5,b=>0,d=>1} 05006006 05006006 05006006 000510b0 05006006 05006006 000510b0 05006006 000510b0 - {e=>4,c=>0,a=>-80,b=>6,d=>0} b0ff0608 b0ff0608 b0ff0608 ffb0c040 b0ff0608 b0ff0608 ffb0c040 b0ff0608 ffb0c040 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>5,c=>-1,a=>-102,b=>0,d=>1,f=>0} 9aff780a 9aff780a 9aff780a ff9a1cd0 9aff780a 9aff780a ff9a1cd0 9aff780a ff9a1cd0 - {e=>4,c=>2,a=>7,b=>4,d=>-4,f=>-1} 07001479 07001479 07001479 00078a4e 07001479 07001479 00078a4e 07001479 00078a4e - {e=>4,c=>-1,a=>99,b=>1,d=>1,f=>-1} 63007978 63007978 63007978 00633cce 63007978 63007978 00633cce 63007978 00633cce - {e=>3,c=>-2,a=>-105,b=>7,d=>-4,f=>-3} 97ff3757 97ff3757 97ff3757 ff97fa3a 97ff3757 97ff3757 ff97fa3a 97ff3757 ff97fa3a - {e=>6,c=>-2,a=>102,b=>7,d=>-4,f=>-1} 6600377d 6600377d 6600377d 0066fa6e 6600377d 6600377d 0066fa6e 6600377d 0066fa6e = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>4,c=>0,a=>106,g=>0,b=>1,d=>-3,f=>1} 6a00411900000000 6a00411900000000 6a00411900000000 006a22c200000000 6a00411900000000 6a00411900000000 006a22c200000000 6a00411900000000 006a22c200000000 - {e=>6,c=>-4,a=>-47,g=>4,b=>0,d=>2,f=>-1} d1ffa07c04000000 d1ffa07c04000000 d1ffa07c04000000 ffd1116e80000000 d1ffa07c04000000 d1ffa07c04000000 ffd1116e80000000 d1ffa07c04000000 ffd1116e80000000 - {e=>2,c=>0,a=>28,g=>2,b=>3,d=>-4,f=>-1} 1c00037502000000 1c00037502000000 1c00037502000000 001c622e40000000 1c00037502000000 1c00037502000000 001c622e40000000 1c00037502000000 001c622e40000000 - {e=>2,c=>2,a=>8,g=>0,b=>4,d=>-3,f=>1} 0800541500000000 0800541500000000 0800541500000000 00088aa200000000 0800541500000000 0800541500000000 00088aa200000000 0800541500000000 00088aa200000000 - {e=>7,c=>1,a=>-41,g=>1,b=>6,d=>-3,f=>-3} d7ff4e5f01000000 d7ff4e5f01000000 d7ff4e5f01000000 ffd7c6fa20000000 d7ff4e5f01000000 d7ff4e5f01000000 ffd7c6fa20000000 d7ff4e5f01000000 ffd7c6fa20000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>2,c=>2,a=>57,g=>4,b=>4,d=>-3,f=>-3} 3900545504000000 3900545504000000 3900545504000000 00398aaa80000000 3900545504000000 3900545504000000 00398aaa80000000 3900545504000000 00398aaa80000000 - {e=>5,c=>-1,a=>108,g=>7,b=>2,d=>-1,f=>-3} 6c00fa5b07000000 6c00fa5b07000000 6c00fa5b07000000 006c5fdae0000000 6c00fa5b07000000 6c00fa5b07000000 006c5fdae0000000 6c00fa5b07000000 006c5fdae0000000 - {e=>3,c=>-3,a=>59,g=>1,b=>5,d=>1,f=>-2} 3b006d6601000000 3b006d6601000000 3b006d6601000000 003bb4bc20000000 3b006d6601000000 3b006d6601000000 003bb4bc20000000 3b006d6601000000 003bb4bc20000000 - {e=>3,c=>-2,a=>82,g=>7,b=>1,d=>-1,f=>-1} 5200f17707000000 5200f17707000000 5200f17707000000 00523bbee0000000 5200f17707000000 5200f17707000000 00523bbee0000000 5200f17707000000 00523bbee0000000 - {e=>1,c=>-1,a=>12,g=>2,b=>6,d=>3,f=>-1} 0c00fe7202000000 0c00fe7202000000 0c00fe7202000000 000cdd9e40000000 0c00fe7202000000 0c00fe7202000000 000cdd9e40000000 0c00fe7202000000 000cdd9e40000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>50,d=>-3,c=>-2,h=>0,b=>7,g=>4,f=>-2} 320077630400000000000000 320077630400000000000000 320077630400000000000000 0032fa9c8000000000000000 320077630400000000000000 320077630400000000000000 0032fa9c8000000000000000 320077630400000000000000 0032fa9c8000000000000000 - {e=>5,a=>40,d=>-3,c=>-4,h=>2,b=>3,g=>0,f=>3} 2800633b0000000002000000 2800633b0000000002000000 2800633b0000000002000000 002872d60000000040000000 2800633b0000000002000000 2800633b0000000002000000 002872d60000000040000000 2800633b0000000002000000 002872d60000000040000000 - {e=>6,a=>21,d=>-1,c=>3,h=>2,b=>6,g=>7,f=>-1} 1500de7d0700000002000000 1500de7d0700000002000000 1500de7d0700000002000000 0015cfeee000000040000000 1500de7d0700000002000000 1500de7d0700000002000000 0015cfeee000000040000000 1500de7d0700000002000000 0015cfeee000000040000000 - {e=>0,a=>-119,d=>0,c=>-1,h=>6,b=>1,g=>7,f=>3} 89ff39300700000006000000 89ff39300700000006000000 89ff39300700000006000000 ff893c06e0000000c0000000 89ff39300700000006000000 89ff39300700000006000000 ff893c06e0000000c0000000 89ff39300700000006000000 ff893c06e0000000c0000000 - {e=>4,a=>-45,d=>2,c=>1,h=>2,b=>7,g=>7,f=>0} d3ff8f080700000002000000 d3ff8f080700000002000000 d3ff8f080700000002000000 ffd3e540e000000040000000 d3ff8f080700000002000000 d3ff8f080700000002000000 ffd3e540e000000040000000 d3ff8f080700000002000000 ffd3e540e000000040000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>95,d=>0,c=>-2,h=>1,b=>4,g=>3,f=>0,i=>-1} 5f0034040300000039000000 5f0034040300000039000000 5f0034040300000039000000 005f9820600000003c000000 5f0034040300000039000000 5f0034040300000039000000 005f9820600000003c000000 5f0034040300000039000000 005f9820600000003c000000 - {e=>4,a=>34,d=>0,c=>3,h=>3,b=>2,g=>1,f=>0,i=>-1} 22001a08010000003b000000 22001a08010000003b000000 22001a08010000003b000000 00224c40200000007c000000 22001a08010000003b000000 22001a08010000003b000000 00224c40200000007c000000 22001a08010000003b000000 00224c40200000007c000000 - {e=>7,a=>40,d=>-2,c=>-2,h=>0,b=>3,g=>1,f=>2,i=>1} 2800b32f0100000008000000 2800b32f0100000008000000 2800b32f0100000008000000 00287b742000000004000000 2800b32f0100000008000000 2800b32f0100000008000000 00287b742000000004000000 2800b32f0100000008000000 00287b742000000004000000 - {e=>2,a=>-13,d=>-3,c=>1,h=>1,b=>0,g=>5,f=>3,i=>-2} f3ff48350500000031000000 f3ff48350500000031000000 f3ff48350500000031000000 fff306a6a000000038000000 f3ff48350500000031000000 f3ff48350500000031000000 fff306a6a000000038000000 f3ff48350500000031000000 fff306a6a000000038000000 - {e=>6,a=>-50,d=>0,c=>1,h=>6,b=>6,g=>5,f=>-3,i=>-2} ceff0e5c0500000036000000 ceff0e5c0500000036000000 ceff0e5c0500000036000000 ffcec46aa0000000d8000000 ceff0e5c0500000036000000 ceff0e5c0500000036000000 ffcec46aa0000000d8000000 ceff0e5c0500000036000000 ffcec46aa0000000d8000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-78,d=>-2,j=>4,c=>-1,h=>1,b=>3,g=>6,f=>-3,i=>-2} b2ffbb510600000031010000 b2ffbb510600000031010000 b2ffbb510600000031010000 ffb27f0ac00000003a000000 b2ffbb510600000031010000 b2ffbb510600000031010000 ffb27f0ac00000003a000000 b2ffbb510600000031010000 ffb27f0ac00000003a000000 - {e=>7,a=>76,d=>-2,j=>1,c=>-4,h=>5,b=>6,g=>3,f=>-4,i=>2} 4c00a64f0300000055000000 4c00a64f0300000055000000 4c00a64f0300000055000000 004cd37860000000a8800000 4c00a64f0300000055000000 4c00a64f0300000055000000 004cd37860000000a8800000 4c00a64f0300000055000000 004cd37860000000a8800000 - {e=>7,a=>88,d=>0,j=>0,c=>1,h=>1,b=>1,g=>1,f=>1,i=>2} 5800091e0100000011000000 5800091e0100000011000000 5800091e0100000011000000 005824722000000028000000 5800091e0100000011000000 5800091e0100000011000000 005824722000000028000000 5800091e0100000011000000 005824722000000028000000 - {e=>7,a=>-27,d=>0,j=>7,c=>-1,h=>1,b=>0,g=>0,f=>-4,i=>-1} e5ff384e00000000f9010000 e5ff384e00000000f9010000 e5ff384e00000000f9010000 ffe51c78000000003f800000 e5ff384e00000000f9010000 e5ff384e00000000f9010000 ffe51c78000000003f800000 e5ff384e00000000f9010000 ffe51c78000000003f800000 - {e=>1,a=>-99,d=>-3,j=>3,c=>1,h=>5,b=>1,g=>6,f=>3,i=>3} 9dff493306000000dd000000 9dff493306000000dd000000 9dff493306000000dd000000 ff9d2696c0000000ad800000 9dff493306000000dd000000 9dff493306000000dd000000 ff9d2696c0000000ad800000 9dff493306000000dd000000 ff9d2696c0000000ad800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>2,a=>4,d=>1,j=>5,c=>-3,k=>75,h=>5,b=>0,g=>2,f=>3,i=>-1} 04006834020000007d014b00 04006834020000007d014b00 04006834020000007d014b00 000414a640000000be804b00 04006834020000007d014b00 04006834020000007d014b00 000414a640000000be804b00 04006834020000007d014b00 000414a640000000be804b00 - {e=>5,a=>7,d=>-2,j=>1,c=>0,k=>19,h=>4,b=>6,g=>6,f=>3,i=>1} 0700863b060000004c001300 0700863b060000004c001300 0700863b060000004c001300 0007c356c000000084801300 0700863b060000004c001300 0700863b060000004c001300 0007c356c000000084801300 0700863b060000004c001300 0007c356c000000084801300 - {e=>2,a=>57,d=>1,j=>0,c=>1,k=>89,h=>1,b=>3,g=>6,f=>3,i=>1} 39004b340600000009005900 39004b340600000009005900 39004b340600000009005900 003964a6c000000024005900 39004b340600000009005900 39004b340600000009005900 003964a6c000000024005900 39004b340600000009005900 003964a6c000000024005900 - {e=>4,a=>7,d=>0,j=>2,c=>-1,k=>-8,h=>3,b=>7,g=>4,f=>-1,i=>-4} 07003f7804000000a300f800 07003f7804000000a300f800 07003f7804000000a300f800 0007fc4e800000007100f800 07003f7804000000a300f800 07003f7804000000a300f800 0007fc4e800000007100f800 07003f7804000000a300f800 0007fc4e800000007100f800 - {e=>5,a=>105,d=>3,j=>1,c=>3,k=>119,h=>7,b=>7,g=>0,f=>0,i=>-2} 6900df0a0000000077007700 6900df0a0000000077007700 6900df0a0000000077007700 0069edd000000000f8807700 6900df0a0000000077007700 6900df0a0000000077007700 0069edd000000000f8807700 6900df0a0000000077007700 0069edd000000000f8807700 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>3,a=>-68,d=>3,j=>1,l=>0,c=>-3,k=>40,h=>5,b=>6,g=>0,f=>0,i=>2} bcffee060000000055002800 bcffee060000000055002800 bcffee060000000055002800 ffbcd5b000000000a8802800 bcffee060000000055002800 bcffee060000000055002800 ffbcd5b000000000a8802800 bcffee060000000055002800 ffbcd5b000000000a8802800 - {e=>6,a=>84,d=>-4,j=>4,l=>0,c=>1,k=>100,h=>2,b=>1,g=>6,f=>3,i=>2} 5400093d0600000012016400 5400093d0600000012016400 5400093d0600000012016400 00542666c00000004a006400 5400093d0600000012016400 5400093d0600000012016400 00542666c00000004a006400 5400093d0600000012016400 00542666c00000004a006400 - {e=>2,a=>-8,d=>-4,j=>2,l=>4,c=>-2,k=>-68,h=>2,b=>6,g=>5,f=>-1,i=>-1} f8ff367505000000ba00bc04 f8ff367505000000ba00bc04 f8ff367505000000ba00bc04 fff8da2ea00000005d00bc80 f8ff367505000000ba00bc04 f8ff367505000000ba00bc04 fff8da2ea00000005d00bc80 f8ff367505000000ba00bc04 fff8da2ea00000005d00bc80 - {e=>0,a=>-64,d=>3,j=>4,l=>1,c=>-4,k=>-2,h=>3,b=>1,g=>4,f=>-3,i=>-3} c0ffe150040000002b01fe01 c0ffe150040000002b01fe01 c0ffe150040000002b01fe01 ffc0318a800000007600fe20 c0ffe150040000002b01fe01 c0ffe150040000002b01fe01 ffc0318a800000007600fe20 c0ffe150040000002b01fe01 ffc0318a800000007600fe20 - {e=>5,a=>64,d=>-4,j=>6,l=>7,c=>0,k=>13,h=>2,b=>4,g=>7,f=>-4,i=>3} 4000044b070000009a010d07 4000044b070000009a010d07 4000044b070000009a010d07 00408258e00000004f000de0 4000044b070000009a010d07 4000044b070000009a010d07 00408258e00000004f000de0 4000044b070000009a010d07 00408258e00000004f000de0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>2,a=>-53,m=>2,d=>0,j=>4,l=>6,c=>0,k=>-28,h=>4,b=>1,g=>0,f=>0,i=>-1} cbff0104000000003c01e416 cbff0104000000003c01e416 cbff0104000000003c01e416 ffcb2020000000009e00e4c8 cbff0104000000003c01e416 cbff0104000000003c01e416 ffcb2020000000009e00e4c8 cbff0104000000003c01e416 ffcb2020000000009e00e4c8 - {e=>2,a=>-58,m=>-4,d=>-3,j=>7,l=>1,c=>1,k=>-110,h=>4,b=>2,g=>5,f=>-2,i=>1} c6ff4a6505000000cc019221 c6ff4a6505000000cc019221 c6ff4a6505000000cc019221 ffc646aca000000087809230 c6ff4a6505000000cc019221 c6ff4a6505000000cc019221 ffc646aca000000087809230 c6ff4a6505000000cc019221 ffc646aca000000087809230 - {e=>2,a=>-95,m=>1,d=>2,j=>3,l=>1,c=>2,k=>47,h=>7,b=>5,g=>2,f=>3,i=>0} a1ff953402000000c7002f09 a1ff953402000000c7002f09 a1ff953402000000c7002f09 ffa1a92640000000e1802f24 a1ff953402000000c7002f09 a1ff953402000000c7002f09 ffa1a92640000000e1802f24 a1ff953402000000c7002f09 ffa1a92640000000e1802f24 - {e=>2,a=>86,m=>0,d=>-1,j=>3,l=>0,c=>3,k=>-1,h=>4,b=>3,g=>1,f=>0,i=>-3} 5600db0501000000ec00ff00 5600db0501000000ec00ff00 5600db0501000000ec00ff00 00566fa0200000009580ff00 5600db0501000000ec00ff00 5600db0501000000ec00ff00 00566fa0200000009580ff00 5600db0501000000ec00ff00 00566fa0200000009580ff00 - {e=>5,a=>31,m=>-3,d=>1,j=>4,l=>5,c=>1,k=>1,h=>6,b=>1,g=>2,f=>2,i=>-4} 1f00492a020000002601012d 1f00492a020000002601012d 1f00492a020000002601012d 001f24d440000000d20001b4 1f00492a020000002601012d 1f00492a020000002601012d 001f24d440000000d20001b4 1f00492a020000002601012d 001f24d440000000d20001b4 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>4,n=>3,a=>-119,m=>-2,d=>0,j=>0,l=>0,c=>3,k=>127,h=>3,b=>3,g=>0,f=>-3,i=>-3} 89ff1b58000000002b007f3003000000 89ff1b58000000002b007f3003000000 89ff1b58000000002b007f3003000000 ff896c4a0000000074007f1860000000 89ff1b58000000002b007f3003000000 89ff1b58000000002b007f3003000000 ff896c4a0000000074007f1860000000 89ff1b58000000002b007f3003000000 ff896c4a0000000074007f1860000000 - {e=>2,n=>3,a=>47,m=>-4,d=>1,j=>6,l=>7,c=>1,k=>-126,h=>6,b=>1,g=>2,f=>-2,i=>-4} 2f00496402000000a601822703000000 2f00496402000000a601822703000000 2f00496402000000a601822703000000 002f24ac40000000d30082f060000000 2f00496402000000a601822703000000 2f00496402000000a601822703000000 002f24ac40000000d30082f060000000 2f00496402000000a601822703000000 002f24ac40000000d30082f060000000 - {e=>6,n=>4,a=>-16,m=>3,d=>-4,j=>3,l=>3,c=>2,k=>-100,h=>4,b=>4,g=>3,f=>-1,i=>3} f0ff147d03000000dc009c1b04000000 f0ff147d03000000dc009c1b04000000 f0ff147d03000000dc009c1b04000000 fff08a6e600000008d809c6c80000000 f0ff147d03000000dc009c1b04000000 f0ff147d03000000dc009c1b04000000 fff08a6e600000008d809c6c80000000 f0ff147d03000000dc009c1b04000000 fff08a6e600000008d809c6c80000000 - {e=>0,n=>3,a=>99,m=>-3,d=>-4,j=>4,l=>1,c=>-1,k=>-77,h=>3,b=>1,g=>0,f=>-2,i=>3} 63003961000000001b01b32903000000 63003961000000001b01b32903000000 63003961000000001b01b32903000000 00633e0c000000006e00b33460000000 63003961000000001b01b32903000000 63003961000000001b01b32903000000 00633e0c000000006e00b33460000000 63003961000000001b01b32903000000 00633e0c000000006e00b33460000000 - {e=>5,n=>0,a=>-106,m=>-2,d=>-4,j=>7,l=>7,c=>-3,k=>-97,h=>3,b=>3,g=>2,f=>1,i=>-3} 96ff2b1b02000000eb019f3700000000 96ff2b1b02000000eb019f3700000000 96ff2b1b02000000eb019f3700000000 ff9676524000000077809ff800000000 96ff2b1b02000000eb019f3700000000 96ff2b1b02000000eb019f3700000000 ff9676524000000077809ff800000000 96ff2b1b02000000eb019f3700000000 ff9676524000000077809ff800000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>3,n=>7,a=>-113,m=>1,d=>-3,j=>5,l=>0,c=>1,k=>2,h=>6,b=>0,g=>5,f=>-2,o=>22,i=>0} 8fff4867050000004601020807160000 8fff4867050000004601020807160000 8fff4867050000004601020807160000 ff8f06bca0000000c2800204e0160000 8fff4867050000004601020807160000 8fff4867050000004601020807160000 ff8f06bca0000000c2800204e0160000 8fff4867050000004601020807160000 ff8f06bca0000000c2800204e0160000 - {e=>6,n=>7,a=>-82,m=>-2,d=>-3,j=>7,l=>3,c=>-1,k=>-116,h=>6,b=>1,g=>5,f=>2,o=>227,i=>-2} aeff792d05000000f6018c3307e30000 aeff792d05000000f6018c3307e30000 aeff792d05000000f6018c3307e30000 ffae3ee4a0000000db808c78e0e30000 aeff792d05000000f6018c3307e30000 aeff792d05000000f6018c3307e30000 ffae3ee4a0000000db808c78e0e30000 aeff792d05000000f6018c3307e30000 ffae3ee4a0000000db808c78e0e30000 - {e=>1,n=>4,a=>-117,m=>-2,d=>-2,j=>2,l=>5,c=>1,k=>-17,h=>3,b=>6,g=>3,f=>-4,o=>238,i=>-2} 8bff8e4303000000b300ef3504ee0000 8bff8e4303000000b300ef3504ee0000 8bff8e4303000000b300ef3504ee0000 ff8bc718600000007900efb880ee0000 8bff8e4303000000b300ef3504ee0000 8bff8e4303000000b300ef3504ee0000 ff8bc718600000007900efb880ee0000 8bff8e4303000000b300ef3504ee0000 ff8bc718600000007900efb880ee0000 - {e=>4,n=>6,a=>62,m=>-2,d=>3,j=>0,l=>4,c=>2,k=>119,h=>2,b=>7,g=>6,f=>0,o=>141,i=>-4} 3e00d7080600000022007734068d0000 3e00d7080600000022007734068d0000 3e00d7080600000022007734068d0000 003ee9c0c000000050007798c08d0000 3e00d7080600000022007734068d0000 3e00d7080600000022007734068d0000 003ee9c0c000000050007798c08d0000 3e00d7080600000022007734068d0000 003ee9c0c000000050007798c08d0000 - {e=>0,n=>5,a=>59,m=>0,d=>1,j=>3,l=>5,c=>-2,k=>-64,h=>0,b=>7,g=>0,f=>-4,o=>130,i=>3} 3b00774000000000d800c00505820000 3b00774000000000d800c00505820000 3b00774000000000d800c00505820000 003bf888000000000d80c0a0a0820000 3b00774000000000d800c00505820000 3b00774000000000d800c00505820000 003bf888000000000d80c0a0a0820000 3b00774000000000d800c00505820000 003bf888000000000d80c0a0a0820000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; }; - {a=>-25,b=>5} e7ffffff05000000 e7ffffff05000000 e7ffffff05000000 ffffffe7a0000000 e7ffffff05000000 e7ffffff05000000 ffffffe7a0000000 e7ffffff05000000 ffffffe7a0000000 - {a=>10,b=>1} 0a00000001000000 0a00000001000000 0a00000001000000 0000000a20000000 0a00000001000000 0a00000001000000 0000000a20000000 0a00000001000000 0000000a20000000 - {a=>8,b=>7} 0800000007000000 0800000007000000 0800000007000000 00000008e0000000 0800000007000000 0800000007000000 00000008e0000000 0800000007000000 00000008e0000000 - {a=>-93,b=>6} a3ffffff06000000 a3ffffff06000000 a3ffffff06000000 ffffffa3c0000000 a3ffffff06000000 a3ffffff06000000 ffffffa3c0000000 a3ffffff06000000 ffffffa3c0000000 - {a=>-67,b=>1} bdffffff01000000 bdffffff01000000 bdffffff01000000 ffffffbd20000000 bdffffff01000000 bdffffff01000000 ffffffbd20000000 bdffffff01000000 ffffffbd20000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-12,b=>7} f4ffffff07000000 f4ffffff07000000 f4ffffff07000000 fffffff4e0000000 f4ffffff07000000 f4ffffff07000000 fffffff4e0000000 f4ffffff07000000 fffffff4e0000000 - {c=>-4,a=>99,b=>7} 6300000027000000 6300000027000000 6300000027000000 00000063f0000000 6300000027000000 6300000027000000 00000063f0000000 6300000027000000 00000063f0000000 - {c=>1,a=>18,b=>7} 120000000f000000 120000000f000000 120000000f000000 00000012e4000000 120000000f000000 120000000f000000 00000012e4000000 120000000f000000 00000012e4000000 - {c=>2,a=>43,b=>7} 2b00000017000000 2b00000017000000 2b00000017000000 0000002be8000000 2b00000017000000 2b00000017000000 0000002be8000000 2b00000017000000 0000002be8000000 - {c=>-4,a=>34,b=>0} 2200000020000000 2200000020000000 2200000020000000 0000002210000000 2200000020000000 2200000020000000 0000002210000000 2200000020000000 0000002210000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>26,b=>4,d=>1} 1a00000074000000 1a00000074000000 1a00000074000000 0000001a98800000 1a00000074000000 1a00000074000000 0000001a98800000 1a00000074000000 0000001a98800000 - {c=>-3,a=>42,b=>5,d=>0} 2a0000002d000000 2a0000002d000000 2a0000002d000000 0000002ab4000000 2a0000002d000000 2a0000002d000000 0000002ab4000000 2a0000002d000000 0000002ab4000000 - {c=>3,a=>115,b=>3,d=>-4} 730000001b010000 730000001b010000 730000001b010000 000000736e000000 730000001b010000 730000001b010000 000000736e000000 730000001b010000 000000736e000000 - {c=>1,a=>21,b=>4,d=>-2} 150000008c010000 150000008c010000 150000008c010000 0000001587000000 150000008c010000 150000008c010000 0000001587000000 150000008c010000 0000001587000000 - {c=>1,a=>124,b=>0,d=>-2} 7c00000088010000 7c00000088010000 7c00000088010000 0000007c07000000 7c00000088010000 7c00000088010000 0000007c07000000 7c00000088010000 0000007c07000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-3,a=>-59,b=>7,d=>-3} c5ffffff6f030000 c5ffffff6f030000 c5ffffff6f030000 ffffffc5f6900000 c5ffffff6f030000 c5ffffff6f030000 ffffffc5f6900000 c5ffffff6f030000 ffffffc5f6900000 - {e=>5,c=>3,a=>96,b=>7,d=>1} 600000005f0a0000 600000005f0a0000 600000005f0a0000 00000060ecd00000 600000005f0a0000 600000005f0a0000 00000060ecd00000 600000005f0a0000 00000060ecd00000 - {e=>6,c=>-3,a=>97,b=>1,d=>1} 61000000690c0000 61000000690c0000 61000000690c0000 0000006134e00000 61000000690c0000 61000000690c0000 0000006134e00000 61000000690c0000 0000006134e00000 - {e=>0,c=>-3,a=>45,b=>5,d=>-2} 2d000000ad010000 2d000000ad010000 2d000000ad010000 0000002db7000000 2d000000ad010000 2d000000ad010000 0000002db7000000 2d000000ad010000 0000002db7000000 - {e=>5,c=>-4,a=>-125,b=>0,d=>1} 83ffffff600a0000 83ffffff600a0000 83ffffff600a0000 ffffff8310d00000 83ffffff600a0000 83ffffff600a0000 ffffff8310d00000 83ffffff600a0000 ffffff8310d00000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>3,a=>-75,b=>2,d=>-3,f=>0} b5ffffff5a0d0000 b5ffffff5a0d0000 b5ffffff5a0d0000 ffffffb54ee00000 b5ffffff5a0d0000 b5ffffff5a0d0000 ffffffb54ee00000 b5ffffff5a0d0000 ffffffb54ee00000 - {e=>5,c=>-4,a=>-82,b=>3,d=>3,f=>1} aeffffffe31a0000 aeffffffe31a0000 aeffffffe31a0000 ffffffae71d20000 aeffffffe31a0000 aeffffffe31a0000 ffffffae71d20000 aeffffffe31a0000 ffffffae71d20000 - {e=>7,c=>1,a=>53,b=>4,d=>-2,f=>0} 350000008c0f0000 350000008c0f0000 350000008c0f0000 0000003587700000 350000008c0f0000 350000008c0f0000 0000003587700000 350000008c0f0000 0000003587700000 - {e=>1,c=>2,a=>126,b=>6,d=>-3,f=>0} 7e00000056030000 7e00000056030000 7e00000056030000 0000007eca900000 7e00000056030000 7e00000056030000 0000007eca900000 7e00000056030000 0000007eca900000 - {e=>3,c=>0,a=>11,b=>4,d=>-1,f=>-1} 0b000000c4770000 0b000000c4770000 0b000000c4770000 0000000b83be0000 0b000000c4770000 0b000000c4770000 0000000b83be0000 0b000000c4770000 0000000b83be0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>2,c=>-1,a=>-28,g=>6,b=>6,d=>1,f=>-2} e4ffffff7e640300 e4ffffff7e640300 e4ffffff7e640300 ffffffe4dcad8000 e4ffffff7e640300 e4ffffff7e640300 ffffffe4dcad8000 e4ffffff7e640300 ffffffe4dcad8000 - {e=>1,c=>2,a=>-122,g=>5,b=>3,d=>2,f=>-2} 86ffffff93e20200 86ffffff93e20200 86ffffff93e20200 ffffff86691d4000 86ffffff93e20200 86ffffff93e20200 ffffff86691d4000 86ffffff93e20200 ffffff86691d4000 - {e=>7,c=>-2,a=>-4,g=>7,b=>7,d=>1,f=>3} fcffffff77be0300 fcffffff77be0300 fcffffff77be0300 fffffffcf8f7c000 fcffffff77be0300 fcffffff77be0300 fffffffcf8f7c000 fcffffff77be0300 fffffffcf8f7c000 - {e=>3,c=>-1,a=>-107,g=>6,b=>5,d=>-4,f=>-3} 95ffffff3d570300 95ffffff3d570300 95ffffff3d570300 ffffff95be3b8000 95ffffff3d570300 95ffffff3d570300 ffffff95be3b8000 95ffffff3d570300 ffffff95be3b8000 - {e=>2,c=>1,a=>-115,g=>0,b=>7,d=>2,f=>0} 8dffffff8f040000 8dffffff8f040000 8dffffff8f040000 ffffff8de5200000 8dffffff8f040000 8dffffff8f040000 ffffff8de5200000 8dffffff8f040000 ffffff8de5200000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>4,c=>1,a=>-92,g=>6,b=>5,d=>-4,f=>-4} a4ffffff0d490300 a4ffffff0d490300 a4ffffff0d490300 ffffffa4a6498000 a4ffffff0d490300 a4ffffff0d490300 ffffffa4a6498000 a4ffffff0d490300 ffffffa4a6498000 - {e=>3,c=>3,a=>112,g=>1,b=>4,d=>0,f=>-3} 700000001cd60000 700000001cd60000 700000001cd60000 000000708c3a4000 700000001cd60000 700000001cd60000 000000708c3a4000 700000001cd60000 000000708c3a4000 - {e=>2,c=>1,a=>-90,g=>7,b=>2,d=>1,f=>0} a6ffffff4a840300 a6ffffff4a840300 a6ffffff4a840300 ffffffa644a1c000 a6ffffff4a840300 a6ffffff4a840300 ffffffa644a1c000 a6ffffff4a840300 ffffffa644a1c000 - {e=>1,c=>3,a=>20,g=>3,b=>6,d=>-1,f=>-4} 14000000dec30100 14000000dec30100 14000000dec30100 00000014cf98c000 14000000dec30100 14000000dec30100 00000014cf98c000 14000000dec30100 00000014cf98c000 - {e=>0,c=>1,a=>-18,g=>4,b=>0,d=>-2,f=>-2} eeffffff88610200 eeffffff88610200 eeffffff88610200 ffffffee070d0000 eeffffff88610200 eeffffff88610200 ffffffee070d0000 eeffffff88610200 ffffffee070d0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>38,d=>-1,c=>-1,h=>0,b=>7,g=>7,f=>3} 26000000ffbd030000000000 26000000ffbd030000000000 26000000ffbd030000000000 00000026ffe7c00000000000 26000000ffbd030000000000 26000000ffbd030000000000 00000026ffe7c00000000000 26000000ffbd030000000000 00000026ffe7c00000000000 - {e=>6,a=>31,d=>3,c=>2,h=>1,b=>2,g=>0,f=>3} 1f000000d23c000001000000 1f000000d23c000001000000 1f000000d23c000001000000 0000001f49e6000020000000 1f000000d23c000001000000 1f000000d23c000001000000 0000001f49e6000020000000 1f000000d23c000001000000 0000001f49e6000020000000 - {e=>7,a=>-56,d=>-4,c=>0,h=>5,b=>1,g=>2,f=>-4} c8ffffff014f010005000000 c8ffffff014f010005000000 c8ffffff014f010005000000 ffffffc822788000a0000000 c8ffffff014f010005000000 c8ffffff014f010005000000 ffffffc822788000a0000000 c8ffffff014f010005000000 ffffffc822788000a0000000 - {e=>7,a=>119,d=>2,c=>-4,h=>5,b=>7,g=>0,f=>-3} 77000000a75e000005000000 77000000a75e000005000000 77000000a75e000005000000 00000077f17a0000a0000000 77000000a75e000005000000 77000000a75e000005000000 00000077f17a0000a0000000 77000000a75e000005000000 00000077f17a0000a0000000 - {e=>7,a=>-122,d=>3,c=>3,h=>6,b=>2,g=>7,f=>2} 86ffffffdaae030006000000 86ffffffdaae030006000000 86ffffffdaae030006000000 ffffff864df5c000c0000000 86ffffffdaae030006000000 86ffffffdaae030006000000 ffffff864df5c000c0000000 86ffffffdaae030006000000 ffffff864df5c000c0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>0,a=>66,d=>-4,c=>-4,h=>6,b=>2,g=>6,f=>3,i=>2} 420000002231030016000000 420000002231030016000000 420000002231030016000000 0000004252078000c8000000 420000002231030016000000 420000002231030016000000 0000004252078000c8000000 420000002231030016000000 0000004252078000c8000000 - {e=>2,a=>19,d=>-2,c=>3,h=>4,b=>6,g=>5,f=>2,i=>3} 130000009ea502001c000000 130000009ea502001c000000 130000009ea502001c000000 00000013cf2540008c000000 130000009ea502001c000000 130000009ea502001c000000 00000013cf2540008c000000 130000009ea502001c000000 00000013cf2540008c000000 - {e=>1,a=>-41,d=>-3,c=>-3,h=>6,b=>5,g=>0,f=>-3,i=>-2} d7ffffff6d53000036000000 d7ffffff6d53000036000000 d7ffffff6d53000036000000 ffffffd7b69a0000d8000000 d7ffffff6d53000036000000 d7ffffff6d53000036000000 ffffffd7b69a0000d8000000 d7ffffff6d53000036000000 ffffffd7b69a0000d8000000 - {e=>3,a=>-25,d=>1,c=>0,h=>2,b=>2,g=>6,f=>2,i=>-3} e7ffffff422603002a000000 e7ffffff422603002a000000 e7ffffff422603002a000000 ffffffe740b5800054000000 e7ffffff422603002a000000 e7ffffff422603002a000000 ffffffe740b5800054000000 e7ffffff422603002a000000 ffffffe740b5800054000000 - {e=>3,a=>77,d=>3,c=>-1,h=>3,b=>5,g=>6,f=>-1,i=>3} 4d000000fd7603001b000000 4d000000fd7603001b000000 4d000000fd7603001b000000 0000004dbdbf80006c000000 4d000000fd7603001b000000 4d000000fd7603001b000000 0000004dbdbf80006c000000 4d000000fd7603001b000000 0000004dbdbf80006c000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>7,a=>-49,d=>3,j=>4,c=>1,h=>6,b=>5,g=>7,f=>-3,i=>-2} cfffffffcdde030036010000 cfffffffcdde030036010000 cfffffffcdde030036010000 ffffffcfa5fbc000da000000 cfffffffcdde030036010000 cfffffffcdde030036010000 ffffffcfa5fbc000da000000 cfffffffcdde030036010000 ffffffcfa5fbc000da000000 - {e=>4,a=>-24,d=>-3,j=>3,c=>3,h=>3,b=>6,g=>6,f=>3,i=>1} e8ffffff5e390300cb000000 e8ffffff5e390300cb000000 e8ffffff5e390300cb000000 ffffffe8cec7800065800000 e8ffffff5e390300cb000000 e8ffffff5e390300cb000000 ffffffe8cec7800065800000 e8ffffff5e390300cb000000 ffffffe8cec7800065800000 - {e=>5,a=>-77,d=>1,j=>7,c=>-3,h=>0,b=>6,g=>1,f=>2,i=>1} b3ffffff6eaa0000c8010000 b3ffffff6eaa0000c8010000 b3ffffff6eaa0000c8010000 ffffffb3d4d4400007800000 b3ffffff6eaa0000c8010000 b3ffffff6eaa0000c8010000 ffffffb3d4d4400007800000 b3ffffff6eaa0000c8010000 ffffffb3d4d4400007800000 - {e=>5,a=>80,d=>3,j=>5,c=>-3,h=>1,b=>6,g=>7,f=>-4,i=>3} 50000000eeca030059010000 50000000eeca030059010000 50000000eeca030059010000 00000050d5d9c0002e800000 50000000eeca030059010000 50000000eeca030059010000 00000050d5d9c0002e800000 50000000eeca030059010000 00000050d5d9c0002e800000 - {e=>3,a=>33,d=>-4,j=>4,c=>-1,h=>5,b=>4,g=>2,f=>3,i=>-2} 210000003c37010035010000 210000003c37010035010000 210000003c37010035010000 000000219e368000ba000000 210000003c37010035010000 210000003c37010035010000 000000219e368000ba000000 210000003c37010035010000 000000219e368000ba000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>1,a=>-125,d=>-4,j=>6,c=>-1,k=>-20,h=>4,b=>1,g=>5,f=>-1,i=>1} 83ffffff39f302008c01ec00 83ffffff39f302008c01ec00 83ffffff39f302008c01ec00 ffffff833e1f40008700ec00 83ffffff39f302008c01ec00 83ffffff39f302008c01ec00 ffffff833e1f40008700ec00 83ffffff39f302008c01ec00 ffffff833e1f40008700ec00 - {e=>6,a=>123,d=>0,j=>3,c=>1,k=>-127,h=>6,b=>5,g=>2,f=>-2,i=>-2} 7b0000000d6c0100f6008100 7b0000000d6c0100f6008100 7b0000000d6c0100f6008100 0000007ba46c8000d9808100 7b0000000d6c0100f6008100 7b0000000d6c0100f6008100 0000007ba46c8000d9808100 7b0000000d6c0100f6008100 0000007ba46c8000d9808100 - {e=>3,a=>80,d=>-3,j=>6,c=>3,k=>-21,h=>1,b=>7,g=>5,f=>-2,i=>-1} 500000005fe70200b901eb00 500000005fe70200b901eb00 500000005fe70200b901eb00 00000050eebd40003f00eb00 500000005fe70200b901eb00 500000005fe70200b901eb00 00000050eebd40003f00eb00 500000005fe70200b901eb00 00000050eebd40003f00eb00 - {e=>6,a=>85,d=>-2,j=>5,c=>-3,k=>-38,h=>1,b=>5,g=>2,f=>-4,i=>-1} 55000000ad4d01007901da00 55000000ad4d01007901da00 55000000ad4d01007901da00 00000055b76880003e80da00 55000000ad4d01007901da00 55000000ad4d01007901da00 00000055b76880003e80da00 55000000ad4d01007901da00 00000055b76880003e80da00 - {e=>6,a=>-9,d=>-1,j=>0,c=>1,k=>20,h=>1,b=>6,g=>3,f=>-3,i=>-1} f7ffffffcedd010039001400 f7ffffffcedd010039001400 f7ffffffcedd010039001400 fffffff7c7eac0003c001400 f7ffffffcedd010039001400 f7ffffffcedd010039001400 fffffff7c7eac0003c001400 f7ffffffcedd010039001400 fffffff7c7eac0003c001400 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>5,a=>42,d=>2,j=>4,l=>7,c=>1,k=>-45,h=>5,b=>5,g=>3,f=>2,i=>1} 2a0000008daa01000d01d307 2a0000008daa01000d01d307 2a0000008daa01000d01d307 0000002aa554c000a600d3e0 2a0000008daa01000d01d307 2a0000008daa01000d01d307 0000002aa554c000a600d3e0 2a0000008daa01000d01d307 0000002aa554c000a600d3e0 - {e=>7,a=>-123,d=>2,j=>5,l=>5,c=>3,k=>-51,h=>4,b=>7,g=>5,f=>-3,i=>0} 85ffffff9fde02004401cd05 85ffffff9fde02004401cd05 85ffffff9fde02004401cd05 ffffff85ed7b40008280cda0 85ffffff9fde02004401cd05 85ffffff9fde02004401cd05 ffffff85ed7b40008280cda0 85ffffff9fde02004401cd05 ffffff85ed7b40008280cda0 - {e=>0,a=>0,d=>-3,j=>0,l=>2,c=>3,k=>-69,h=>4,b=>4,g=>6,f=>-1,i=>-4} 000000005c7103002400bb02 000000005c7103002400bb02 000000005c7103002400bb02 000000008e8f80009000bb40 000000005c7103002400bb02 000000005c7103002400bb02 000000008e8f80009000bb40 000000005c7103002400bb02 000000008e8f80009000bb40 - {e=>0,a=>17,d=>-2,j=>3,l=>2,c=>-4,k=>-21,h=>0,b=>6,g=>7,f=>-1,i=>2} 11000000a6f10300d000eb02 11000000a6f10300d000eb02 11000000a6f10300d000eb02 00000011d30fc0000980eb40 11000000a6f10300d000eb02 11000000a6f10300d000eb02 00000011d30fc0000980eb40 11000000a6f10300d000eb02 00000011d30fc0000980eb40 - {e=>2,a=>-122,d=>2,j=>5,l=>6,c=>0,k=>-75,h=>4,b=>7,g=>2,f=>-3,i=>0} 86ffffff875401004401b506 86ffffff875401004401b506 86ffffff875401004401b506 ffffff86e12a80008280b5c0 86ffffff875401004401b506 86ffffff875401004401b506 ffffff86e12a80008280b5c0 86ffffff875401004401b506 ffffff86e12a80008280b5c0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-47,m=>-1,d=>-2,j=>0,l=>1,c=>2,k=>8,h=>1,b=>5,g=>4,f=>0,i=>-2} d1ffffff9509020031000839 d1ffffff9509020031000839 d1ffffff9509020031000839 ffffffd1ab4100003800083c d1ffffff9509020031000839 d1ffffff9509020031000839 ffffffd1ab4100003800083c d1ffffff9509020031000839 ffffffd1ab4100003800083c - {e=>4,a=>96,m=>1,d=>-1,j=>2,l=>1,c=>-4,k=>62,h=>0,b=>1,g=>6,f=>0,i=>3} 60000000e109030098003e09 60000000e109030098003e09 60000000e109030098003e09 0000006033c180000d003e24 60000000e109030098003e09 60000000e109030098003e09 0000006033c180000d003e24 60000000e109030098003e09 0000006033c180000d003e24 - {e=>7,a=>119,m=>-3,d=>1,j=>2,l=>5,c=>0,k=>22,h=>2,b=>6,g=>1,f=>-4,i=>2} 7700000046ce00009200162d 7700000046ce00009200162d 7700000046ce00009200162d 00000077c0f84000490016b4 7700000046ce00009200162d 7700000046ce00009200162d 00000077c0f84000490016b4 7700000046ce00009200162d 00000077c0f84000490016b4 - {e=>5,a=>105,m=>-4,d=>-4,j=>6,l=>5,c=>-3,k=>5,h=>1,b=>4,g=>2,f=>1,i=>0} 690000002c1b010081010525 690000002c1b010081010525 690000002c1b010081010525 0000006996528000230005b0 690000002c1b010081010525 690000002c1b010081010525 0000006996528000230005b0 690000002c1b010081010525 0000006996528000230005b0 - {e=>3,a=>23,m=>1,d=>-4,j=>1,l=>2,c=>1,k=>-75,h=>5,b=>4,g=>3,f=>0,i=>3} 170000000c8701005d00b50a 170000000c8701005d00b50a 170000000c8701005d00b50a 000000178630c000ac80b544 170000000c8701005d00b50a 170000000c8701005d00b50a 000000178630c000ac80b544 170000000c8701005d00b50a 000000178630c000ac80b544 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>3,a=>-113,m=>0,d=>1,j=>4,l=>0,c=>-1,k=>-9,h=>4,b=>0,g=>0,f=>2,i=>-4} 8fffffff782a00002401f70003000000 8fffffff782a00002401f70003000000 8fffffff782a00002401f70003000000 ffffff8f1cd400009200f70060000000 8fffffff782a00002401f70003000000 8fffffff782a00002401f70003000000 ffffff8f1cd400009200f70060000000 8fffffff782a00002401f70003000000 ffffff8f1cd400009200f70060000000 - {e=>0,n=>4,a=>64,m=>2,d=>-3,j=>4,l=>3,c=>-3,k=>-98,h=>5,b=>3,g=>6,f=>-3,i=>-4} 400000006b51030025019e1304000000 400000006b51030025019e1304000000 400000006b51030025019e1304000000 00000040768b8000b2009e6880000000 400000006b51030025019e1304000000 400000006b51030025019e1304000000 00000040768b8000b2009e6880000000 400000006b51030025019e1304000000 00000040768b8000b2009e6880000000 - {e=>1,n=>7,a=>-94,m=>-4,d=>3,j=>1,l=>2,c=>2,k=>-115,h=>0,b=>0,g=>6,f=>2,i=>2} a2ffffffd022030050008d2207000000 a2ffffffd022030050008d2207000000 a2ffffffd022030050008d2207000000 ffffffa20995800008808d50e0000000 a2ffffffd022030050008d2207000000 a2ffffffd022030050008d2207000000 ffffffa20995800008808d50e0000000 a2ffffffd022030050008d2207000000 ffffffa20995800008808d50e0000000 - {e=>3,n=>0,a=>-84,m=>0,d=>-2,j=>4,l=>2,c=>-1,k=>-57,h=>4,b=>5,g=>4,f=>-1,i=>1} acffffffbd7702000c01c70200000000 acffffffbd7702000c01c70200000000 acffffffbd7702000c01c70200000000 ffffffacbf3f00008600c74000000000 acffffffbd7702000c01c70200000000 acffffffbd7702000c01c70200000000 ffffffacbf3f00008600c74000000000 acffffffbd7702000c01c70200000000 ffffffacbf3f00008600c74000000000 - {e=>6,n=>3,a=>-84,m=>0,d=>-2,j=>6,l=>5,c=>-4,k=>45,h=>4,b=>0,g=>3,f=>-1,i=>-3} acffffffa0fd0100ac012d0503000000 acffffffa0fd0100ac012d0503000000 acffffffa0fd0100ac012d0503000000 ffffffac136ec00097002da060000000 acffffffa0fd0100ac012d0503000000 acffffffa0fd0100ac012d0503000000 ffffffac136ec00097002da060000000 acffffffa0fd0100ac012d0503000000 ffffffac136ec00097002da060000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>1,a=>73,m=>-2,d=>1,j=>5,l=>1,c=>-4,k=>34,h=>0,b=>2,g=>0,f=>-2,o=>136,i=>0} 49000000626400004001223101880000 49000000626400004001223101880000 49000000626400004001223101880000 0000004950ac00000280223820880000 49000000626400004001223101880000 49000000626400004001223101880000 0000004950ac00000280223820880000 49000000626400004001223101880000 0000004950ac00000280223820880000 - {e=>7,n=>0,a=>-14,m=>-2,d=>2,j=>2,l=>3,c=>-2,k=>-24,h=>3,b=>6,g=>5,f=>3,o=>72,i=>1} f2ffffffb6be02008b00e83300480000 f2ffffffb6be02008b00e83300480000 f2ffffffb6be02008b00e83300480000 fffffff2d97740006500e87800480000 f2ffffffb6be02008b00e83300480000 f2ffffffb6be02008b00e83300480000 fffffff2d97740006500e87800480000 f2ffffffb6be02008b00e83300480000 fffffff2d97740006500e87800480000 - {e=>7,n=>0,a=>-32,m=>0,d=>3,j=>6,l=>3,c=>-2,k=>-5,h=>3,b=>6,g=>6,f=>1,o=>139,i=>-2} e0fffffff61e0300b301fb03008b0000 e0fffffff61e0300b301fb03008b0000 e0fffffff61e0300b301fb03008b0000 ffffffe0d9f380007b00fb60008b0000 e0fffffff61e0300b301fb03008b0000 e0fffffff61e0300b301fb03008b0000 ffffffe0d9f380007b00fb60008b0000 e0fffffff61e0300b301fb03008b0000 ffffffe0d9f380007b00fb60008b0000 - {e=>7,n=>0,a=>-69,m=>2,d=>2,j=>2,l=>1,c=>0,k=>118,h=>3,b=>5,g=>4,f=>-4,o=>156,i=>2} bbffffff854e020093007611009c0000 bbffffff854e020093007611009c0000 bbffffff854e020093007611009c0000 ffffffbba179000069007628009c0000 bbffffff854e020093007611009c0000 bbffffff854e020093007611009c0000 ffffffbba179000069007628009c0000 bbffffff854e020093007611009c0000 ffffffbba179000069007628009c0000 - {e=>0,n=>4,a=>-23,m=>-1,d=>-2,j=>3,l=>7,c=>0,k=>44,h=>7,b=>0,g=>5,f=>0,o=>146,i=>1} e9ffffff80810200cf002c3f04920000 e9ffffff80810200cf002c3f04920000 e9ffffff80810200cf002c3f04920000 ffffffe903014000e5802cfc80920000 e9ffffff80810200cf002c3f04920000 e9ffffff80810200cf002c3f04920000 ffffffe903014000e5802cfc80920000 e9ffffff80810200cf002c3f04920000 ffffffe903014000e5802cfc80920000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; }; - {a=>116,b=>0} 7400000000000000 74000000000000000000000000000000 74000000000000000000000000000000 0000007400000000 7400000000000000 7400000000000000 00000000000000740000000000000000 7400000000000000 0000007400000000 - {a=>-38,b=>2} daffffff02000000 daffffffffffffff0200000000000000 daffffffffffffff0200000000000000 ffffffda40000000 daffffff02000000 daffffff02000000 ffffffffffffffda4000000000000000 daffffff02000000 ffffffda40000000 - {a=>-116,b=>0} 8cffffff00000000 8cffffffffffffff0000000000000000 8cffffffffffffff0000000000000000 ffffff8c00000000 8cffffff00000000 8cffffff00000000 ffffffffffffff8c0000000000000000 8cffffff00000000 ffffff8c00000000 - {a=>-9,b=>4} f7ffffff04000000 f7ffffffffffffff0400000000000000 f7ffffffffffffff0400000000000000 fffffff780000000 f7ffffff04000000 f7ffffff04000000 fffffffffffffff78000000000000000 f7ffffff04000000 fffffff780000000 - {a=>-84,b=>1} acffffff01000000 acffffffffffffff0100000000000000 acffffffffffffff0100000000000000 ffffffac20000000 acffffff01000000 acffffff01000000 ffffffffffffffac2000000000000000 acffffff01000000 ffffffac20000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; }; - {c=>2,a=>-53,b=>0} cbffffff10000000 cbffffffffffffff1000000000000000 cbffffffffffffff1000000000000000 ffffffcb08000000 cbffffff10000000 cbffffff10000000 ffffffffffffffcb0800000000000000 cbffffff10000000 ffffffcb08000000 - {c=>-2,a=>54,b=>3} 3600000033000000 36000000000000003300000000000000 36000000000000003300000000000000 0000003678000000 3600000033000000 3600000033000000 00000000000000367800000000000000 3600000033000000 0000003678000000 - {c=>-2,a=>90,b=>7} 5a00000037000000 5a000000000000003700000000000000 5a000000000000003700000000000000 0000005af8000000 5a00000037000000 5a00000037000000 000000000000005af800000000000000 5a00000037000000 0000005af8000000 - {c=>-1,a=>16,b=>0} 1000000038000000 10000000000000003800000000000000 10000000000000003800000000000000 000000101c000000 1000000038000000 1000000038000000 00000000000000101c00000000000000 1000000038000000 000000101c000000 - {c=>2,a=>66,b=>6} 4200000016000000 42000000000000001600000000000000 42000000000000001600000000000000 00000042c8000000 4200000016000000 4200000016000000 0000000000000042c800000000000000 4200000016000000 00000042c8000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>101,b=>3,d=>-4} 650000000b010000 65000000000000000b01000000000000 65000000000000000b01000000000000 0000006566000000 650000000b010000 650000000b010000 00000000000000656600000000000000 650000000b010000 0000006566000000 - {c=>0,a=>-29,b=>2,d=>-4} e3ffffff02010000 e3ffffffffffffff0201000000000000 e3ffffffffffffff0201000000000000 ffffffe342000000 e3ffffff02010000 e3ffffff02010000 ffffffffffffffe34200000000000000 e3ffffff02010000 ffffffe342000000 - {c=>-2,a=>-116,b=>7,d=>2} 8cffffffb7000000 8cffffffffffffffb700000000000000 8cffffffffffffffb700000000000000 ffffff8cf9000000 8cffffffb7000000 8cffffffb7000000 ffffffffffffff8cf900000000000000 8cffffffb7000000 ffffff8cf9000000 - {c=>-4,a=>-103,b=>1,d=>-2} 99ffffffa1010000 99ffffffffffffffa101000000000000 99ffffffffffffffa101000000000000 ffffff9933000000 99ffffffa1010000 99ffffffa1010000 ffffffffffffff993300000000000000 99ffffffa1010000 ffffff9933000000 - {c=>-4,a=>90,b=>4,d=>0} 5a00000024000000 5a000000000000002400000000000000 5a000000000000002400000000000000 0000005a90000000 5a00000024000000 5a00000024000000 000000000000005a9000000000000000 5a00000024000000 0000005a90000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>6,c=>-3,a=>-61,b=>2,d=>-2} c3ffffffaa0d0000 c3ffffffffffffffaa0d000000000000 c3ffffffffffffffaa0d000000000000 ffffffc357600000 c3ffffffaa0d0000 c3ffffffaa0d0000 ffffffffffffffc35760000000000000 c3ffffffaa0d0000 ffffffc357600000 - {e=>4,c=>1,a=>111,b=>2,d=>3} 6f000000ca080000 6f00000000000000ca08000000000000 6f00000000000000ca08000000000000 0000006f45c00000 6f000000ca080000 6f000000ca080000 000000000000006f45c0000000000000 6f000000ca080000 0000006f45c00000 - {e=>4,c=>0,a=>-27,b=>3,d=>-2} e5ffffff83090000 e5ffffffffffffff8309000000000000 e5ffffffffffffff8309000000000000 ffffffe563400000 e5ffffff83090000 e5ffffff83090000 ffffffffffffffe56340000000000000 e5ffffff83090000 ffffffe563400000 - {e=>0,c=>0,a=>123,b=>5,d=>-2} 7b00000085010000 7b000000000000008501000000000000 7b000000000000008501000000000000 0000007ba3000000 7b00000085010000 7b00000085010000 000000000000007ba300000000000000 7b00000085010000 0000007ba3000000 - {e=>2,c=>0,a=>92,b=>7,d=>-4} 5c00000007050000 5c000000000000000705000000000000 5c000000000000000705000000000000 0000005ce2200000 5c00000007050000 5c00000007050000 000000000000005ce220000000000000 5c00000007050000 0000005ce2200000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>3,c=>0,a=>-105,b=>0,d=>2,f=>0} 97ffffff80060000 97ffffffffffffff8006000000000000 97ffffffffffffff8006000000000000 ffffff9701300000 97ffffff80060000 97ffffff80060000 ffffffffffffff970130000000000000 97ffffff80060000 ffffff9701300000 - {e=>0,c=>1,a=>-22,b=>2,d=>-1,f=>-2} eaffffffca610000 eaffffffffffffffca61000000000000 eaffffffffffffffca61000000000000 ffffffea478c0000 eaffffffca610000 eaffffffca610000 ffffffffffffffea478c000000000000 eaffffffca610000 ffffffea478c0000 - {e=>1,c=>-3,a=>42,b=>2,d=>-1,f=>-1} 2a000000ea730000 2a00000000000000ea73000000000000 2a00000000000000ea73000000000000 0000002a579e0000 2a000000ea730000 2a000000ea730000 000000000000002a579e000000000000 2a000000ea730000 0000002a579e0000 - {e=>6,c=>0,a=>-26,b=>6,d=>-1,f=>-3} e6ffffffc65d0000 e6ffffffffffffffc65d000000000000 e6ffffffffffffffc65d000000000000 ffffffe6c3ea0000 e6ffffffc65d0000 e6ffffffc65d0000 ffffffffffffffe6c3ea000000000000 e6ffffffc65d0000 ffffffe6c3ea0000 - {e=>2,c=>2,a=>65,b=>0,d=>0,f=>0} 4100000010040000 41000000000000001004000000000000 41000000000000001004000000000000 0000004108200000 4100000010040000 4100000010040000 00000000000000410820000000000000 4100000010040000 0000004108200000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>0,c=>-2,a=>40,g=>2,b=>5,d=>2,f=>-4} 28000000b5400100 2800000000000000b540010000000000 2800000000000000b540010000000000 00000028b9088000 28000000b5400100 28000000b5400100 0000000000000028b908800000000000 28000000b5400100 00000028b9088000 - {e=>7,c=>3,a=>118,g=>5,b=>4,d=>-3,f=>-3} 760000005cdf0200 76000000000000005cdf020000000000 76000000000000005cdf020000000000 000000768efb4000 760000005cdf0200 760000005cdf0200 00000000000000768efb400000000000 760000005cdf0200 000000768efb4000 - {e=>5,c=>-2,a=>-74,g=>3,b=>3,d=>-4,f=>2} b6ffffff33ab0100 b6ffffffffffffff33ab010000000000 b6ffffffffffffff33ab010000000000 ffffffb67a54c000 b6ffffff33ab0100 b6ffffff33ab0100 ffffffffffffffb67a54c00000000000 b6ffffff33ab0100 ffffffb67a54c000 - {e=>4,c=>-4,a=>-40,g=>1,b=>7,d=>-4,f=>-1} d8ffffff27f90000 d8ffffffffffffff27f9000000000000 d8ffffffffffffff27f9000000000000 ffffffd8f24e4000 d8ffffff27f90000 d8ffffff27f90000 ffffffffffffffd8f24e400000000000 d8ffffff27f90000 ffffffd8f24e4000 - {e=>0,c=>3,a=>18,g=>6,b=>0,d=>-4,f=>1} 1200000018110300 12000000000000001811030000000000 12000000000000001811030000000000 000000120e038000 1200000018110300 1200000018110300 00000000000000120e03800000000000 1200000018110300 000000120e038000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>0,c=>-2,a=>14,g=>3,b=>7,d=>3,f=>0} 0e000000f7800100 0e00000000000000f780010000000000 0e00000000000000f780010000000000 0000000ef980c000 0e000000f7800100 0e000000f7800100 000000000000000ef980c00000000000 0e000000f7800100 0000000ef980c000 - {e=>1,c=>0,a=>-50,g=>4,b=>7,d=>3,f=>0} ceffffffc7020200 ceffffffffffffffc702020000000000 ceffffffffffffffc702020000000000 ffffffcee1910000 ceffffffc7020200 ceffffffc7020200 ffffffffffffffcee191000000000000 ceffffffc7020200 ffffffcee1910000 - {e=>6,c=>-3,a=>101,g=>4,b=>2,d=>-4,f=>0} 650000002a0d0200 65000000000000002a0d020000000000 65000000000000002a0d020000000000 0000006556610000 650000002a0d0200 650000002a0d0200 00000000000000655661000000000000 650000002a0d0200 0000006556610000 - {e=>4,c=>-1,a=>87,g=>0,b=>1,d=>1,f=>1} 5700000079180000 57000000000000007918000000000000 57000000000000007918000000000000 000000573cc20000 5700000079180000 5700000079180000 00000000000000573cc2000000000000 5700000079180000 000000573cc20000 - {e=>3,c=>-1,a=>45,g=>7,b=>0,d=>-2,f=>3} 2d000000b8b70300 2d00000000000000b8b7030000000000 2d00000000000000b8b7030000000000 0000002d1f37c000 2d000000b8b70300 2d000000b8b70300 000000000000002d1f37c00000000000 2d000000b8b70300 0000002d1f37c000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>-39,d=>0,c=>-2,h=>1,b=>3,g=>7,f=>-3} d9ffffff33dc030001000000 d9ffffffffffffff33dc030001000000 d9ffffffffffffff33dc030001000000 ffffffd9786bc00020000000 d9ffffff33dc030001000000 d9ffffff33dc030001000000 ffffffffffffffd9786bc00020000000 d9ffffff33dc030001000000 ffffffd9786bc00020000000 - {e=>2,a=>-6,d=>-3,c=>1,h=>0,b=>1,g=>4,f=>-1} faffffff4975020000000000 faffffffffffffff4975020000000000 faffffffffffffff4975020000000000 fffffffa26af000000000000 faffffff4975020000000000 faffffff4975020000000000 fffffffffffffffa26af000000000000 faffffff4975020000000000 fffffffa26af000000000000 - {e=>4,a=>-114,d=>3,c=>-2,h=>2,b=>6,g=>2,f=>3} 8efffffff638010002000000 8efffffffffffffff638010002000000 8efffffffffffffff638010002000000 ffffff8ed9c6800040000000 8efffffff638010002000000 8efffffff638010002000000 ffffffffffffff8ed9c6800040000000 8efffffff638010002000000 ffffff8ed9c6800040000000 - {e=>2,a=>-117,d=>0,c=>-2,h=>2,b=>3,g=>0,f=>0} 8bffffff3304000002000000 8bffffffffffffff3304000002000000 8bffffffffffffff3304000002000000 ffffff8b7820000040000000 8bffffff3304000002000000 8bffffff3304000002000000 ffffffffffffff8b7820000040000000 8bffffff3304000002000000 ffffff8b7820000040000000 - {e=>6,a=>120,d=>2,c=>1,h=>5,b=>7,g=>4,f=>-3} 780000008f5c020005000000 78000000000000008f5c020005000000 78000000000000008f5c020005000000 00000078e56b0000a0000000 780000008f5c020005000000 780000008f5c020005000000 0000000000000078e56b0000a0000000 780000008f5c020005000000 00000078e56b0000a0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>52,d=>1,c=>3,h=>2,b=>3,g=>6,f=>2,i=>-3} 340000005b2203002a000000 34000000000000005b2203002a000000 34000000000000005b2203002a000000 000000346c95800054000000 340000005b2203002a000000 340000005b2203002a000000 00000000000000346c95800054000000 340000005b2203002a000000 000000346c95800054000000 - {e=>3,a=>53,d=>0,c=>0,h=>1,b=>3,g=>6,f=>2,i=>1} 350000000326030009000000 35000000000000000326030009000000 35000000000000000326030009000000 000000356035800024000000 350000000326030009000000 350000000326030009000000 00000000000000356035800024000000 350000000326030009000000 000000356035800024000000 - {e=>6,a=>16,d=>-4,c=>-1,h=>7,b=>1,g=>6,f=>1,i=>3} 10000000391d03001f000000 1000000000000000391d03001f000000 1000000000000000391d03001f000000 000000103e638000ec000000 10000000391d03001f000000 10000000391d03001f000000 00000000000000103e638000ec000000 10000000391d03001f000000 000000103e638000ec000000 - {e=>5,a=>110,d=>-3,c=>-2,h=>1,b=>4,g=>6,f=>1,i=>-1} 6e000000741b030039000000 6e00000000000000741b030039000000 6e00000000000000741b030039000000 0000006e9ad380003c000000 6e000000741b030039000000 6e000000741b030039000000 000000000000006e9ad380003c000000 6e000000741b030039000000 0000006e9ad380003c000000 - {e=>2,a=>-21,d=>1,c=>3,h=>1,b=>2,g=>0,f=>-4,i=>-3} ebffffff5a44000029000000 ebffffffffffffff5a44000029000000 ebffffffffffffff5a44000029000000 ffffffeb4ca8000034000000 ebffffff5a44000029000000 ebffffff5a44000029000000 ffffffffffffffeb4ca8000034000000 ebffffff5a44000029000000 ffffffeb4ca8000034000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>-50,d=>3,j=>1,c=>0,h=>3,b=>2,g=>2,f=>3,i=>-2} ceffffffc236010073000000 ceffffffffffffffc236010073000000 ceffffffffffffffc236010073000000 ffffffce41b6800078800000 ceffffffc236010073000000 ceffffffc236010073000000 ffffffffffffffce41b6800078800000 ceffffffc236010073000000 ffffffce41b6800078800000 - {e=>1,a=>-3,d=>0,j=>2,c=>-3,h=>2,b=>0,g=>1,f=>-2,i=>-4} fdffffff28e20000a2000000 fdffffffffffffff28e20000a2000000 fdffffffffffffff28e20000a2000000 fffffffd141c400051000000 fdffffff28e20000a2000000 fdffffff28e20000a2000000 fffffffffffffffd141c400051000000 fdffffff28e20000a2000000 fffffffd141c400051000000 - {e=>4,a=>52,d=>-2,j=>6,c=>-2,h=>1,b=>2,g=>0,f=>0,i=>-2} 34000000b2090000b1010000 3400000000000000b2090000b1010000 3400000000000000b2090000b1010000 000000345b4000003b000000 34000000b2090000b1010000 34000000b2090000b1010000 00000000000000345b4000003b000000 34000000b2090000b1010000 000000345b4000003b000000 - {e=>1,a=>99,d=>1,j=>7,c=>3,h=>7,b=>6,g=>4,f=>0,i=>3} 630000005e020200df010000 63000000000000005e020200df010000 63000000000000005e020200df010000 00000063cc910000ef800000 630000005e020200df010000 630000005e020200df010000 0000000000000063cc910000ef800000 630000005e020200df010000 00000063cc910000ef800000 - {e=>6,a=>127,d=>2,j=>0,c=>1,h=>5,b=>5,g=>5,f=>1,i=>-2} 7f0000008d9c020035000000 7f000000000000008d9c020035000000 7f000000000000008d9c020035000000 0000007fa5634000b8000000 7f0000008d9c020035000000 7f0000008d9c020035000000 000000000000007fa5634000b8000000 7f0000008d9c020035000000 0000007fa5634000b8000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>5,a=>53,d=>-2,j=>1,c=>0,k=>-7,h=>4,b=>1,g=>5,f=>1,i=>-1} 35000000819b02007c00f900 3500000000000000819b02007c00f900 3500000000000000819b02007c00f900 00000035235340009c80f900 35000000819b02007c00f900 35000000819b02007c00f900 0000000000000035235340009c80f900 35000000819b02007c00f900 00000035235340009c80f900 - {e=>4,a=>-53,d=>-4,j=>2,c=>1,k=>34,h=>7,b=>1,g=>3,f=>0,i=>0} cbffffff0989010087002200 cbffffffffffffff0989010087002200 cbffffffffffffff0989010087002200 ffffffcb2640c000e1002200 cbffffff0989010087002200 cbffffff0989010087002200 ffffffffffffffcb2640c000e1002200 cbffffff0989010087002200 ffffffcb2640c000e1002200 - {e=>6,a=>-45,d=>3,j=>5,c=>1,k=>97,h=>4,b=>6,g=>0,f=>-3,i=>2} d3ffffffce5c000054016100 d3ffffffffffffffce5c000054016100 d3ffffffffffffffce5c000054016100 ffffffd3c5ea00008a806100 d3ffffffce5c000054016100 d3ffffffce5c000054016100 ffffffffffffffd3c5ea00008a806100 d3ffffffce5c000054016100 ffffffd3c5ea00008a806100 - {e=>1,a=>65,d=>1,j=>0,c=>0,k=>30,h=>0,b=>0,g=>2,f=>3,i=>-4} 410000004032010020001e00 41000000000000004032010020001e00 41000000000000004032010020001e00 000000410096800010001e00 410000004032010020001e00 410000004032010020001e00 00000000000000410096800010001e00 410000004032010020001e00 000000410096800010001e00 - {e=>1,a=>-80,d=>-4,j=>5,c=>-3,k=>115,h=>3,b=>5,g=>3,f=>-4,i=>3} b0ffffff2dc301005b017300 b0ffffffffffffff2dc301005b017300 b0ffffffffffffff2dc301005b017300 ffffffb0b618c0006e807300 b0ffffff2dc301005b017300 b0ffffff2dc301005b017300 ffffffffffffffb0b618c0006e807300 b0ffffff2dc301005b017300 ffffffb0b618c0006e807300 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>4,a=>122,d=>2,j=>4,l=>5,c=>-3,k=>111,h=>7,b=>3,g=>4,f=>2,i=>2} 7a000000ab28020017016f05 7a00000000000000ab28020017016f05 7a00000000000000ab28020017016f05 0000007a75450000ea006fa0 7a000000ab28020017016f05 7a000000ab28020017016f05 000000000000007a75450000ea006fa0 7a000000ab28020017016f05 0000007a75450000ea006fa0 - {e=>4,a=>-118,d=>2,j=>0,l=>5,c=>-1,k=>9,h=>1,b=>4,g=>4,f=>1,i=>-3} 8affffffbc18020029000905 8affffffffffffffbc18020029000905 8affffffffffffffbc18020029000905 ffffff8a9d430000340009a0 8affffffbc18020029000905 8affffffbc18020029000905 ffffffffffffff8a9d430000340009a0 8affffffbc18020029000905 ffffff8a9d430000340009a0 - {e=>7,a=>-99,d=>-3,j=>1,l=>6,c=>3,k=>-51,h=>4,b=>0,g=>0,f=>2,i=>-1} 9dffffff582f00007c00cd06 9dffffffffffffff582f00007c00cd06 9dffffffffffffff582f00007c00cd06 ffffff9d0ef400009c80cdc0 9dffffff582f00007c00cd06 9dffffff582f00007c00cd06 ffffffffffffff9d0ef400009c80cdc0 9dffffff582f00007c00cd06 ffffff9d0ef400009c80cdc0 - {e=>5,a=>46,d=>-1,j=>7,l=>2,c=>-4,k=>-82,h=>4,b=>6,g=>6,f=>-4,i=>-1} 2e000000e64b0300fc01ae02 2e00000000000000e64b0300fc01ae02 2e00000000000000e64b0300fc01ae02 0000002ed3d980009f80ae40 2e000000e64b0300fc01ae02 2e000000e64b0300fc01ae02 000000000000002ed3d980009f80ae40 2e000000e64b0300fc01ae02 0000002ed3d980009f80ae40 - {e=>5,a=>-15,d=>-4,j=>3,l=>1,c=>3,k=>-7,h=>3,b=>7,g=>2,f=>-3,i=>3} f1ffffff1f5b0100db00f901 f1ffffffffffffff1f5b0100db00f901 f1ffffffffffffff1f5b0100db00f901 fffffff1ee5a80006d80f920 f1ffffff1f5b0100db00f901 f1ffffff1f5b0100db00f901 fffffffffffffff1ee5a80006d80f920 f1ffffff1f5b0100db00f901 fffffff1ee5a80006d80f920 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>-125,m=>2,d=>0,j=>0,l=>5,c=>-2,k=>49,h=>6,b=>0,g=>6,f=>3,i=>-4} 83ffffff3036030026003115 83ffffffffffffff3036030026003115 83ffffffffffffff3036030026003115 ffffff8318378000d00031a8 83ffffff3036030026003115 83ffffff3036030026003115 ffffffffffffff8318378000d00031a8 83ffffff3036030026003115 ffffff8318378000d00031a8 - {e=>5,a=>127,m=>1,d=>-3,j=>3,l=>3,c=>-4,k=>15,h=>1,b=>5,g=>6,f=>3,i=>1} 7f000000653b0300c9000f0b 7f00000000000000653b0300c9000f0b 7f00000000000000653b0300c9000f0b 0000007fb2d7800025800f64 7f000000653b0300c9000f0b 7f000000653b0300c9000f0b 000000000000007fb2d7800025800f64 7f000000653b0300c9000f0b 0000007fb2d7800025800f64 - {e=>5,a=>-102,m=>2,d=>1,j=>7,l=>4,c=>-2,k=>76,h=>2,b=>5,g=>4,f=>2,i=>0} 9affffff752a0200c2014c14 9affffffffffffff752a0200c2014c14 9affffffffffffff752a0200c2014c14 ffffff9ab8d5000043804c88 9affffff752a0200c2014c14 9affffff752a0200c2014c14 ffffffffffffff9ab8d5000043804c88 9affffff752a0200c2014c14 ffffff9ab8d5000043804c88 - {e=>3,a=>83,m=>-2,d=>-3,j=>6,l=>6,c=>-4,k=>56,h=>4,b=>0,g=>3,f=>1,i=>-1} 5300000060970100bc013836 530000000000000060970100bc013836 530000000000000060970100bc013836 0000005312b2c0009f0038d8 5300000060970100bc013836 5300000060970100bc013836 000000000000005312b2c0009f0038d8 5300000060970100bc013836 0000005312b2c0009f0038d8 - {e=>1,a=>-24,m=>-4,d=>-3,j=>0,l=>0,c=>2,k=>-52,h=>5,b=>6,g=>3,f=>2,i=>-2} e8ffffff56a301003500cc20 e8ffffffffffffff56a301003500cc20 e8ffffffffffffff56a301003500cc20 ffffffe8ca94c000b800cc10 e8ffffff56a301003500cc20 e8ffffff56a301003500cc20 ffffffffffffffe8ca94c000b800cc10 e8ffffff56a301003500cc20 ffffffe8ca94c000b800cc10 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>0,a=>74,m=>-2,d=>1,j=>6,l=>3,c=>2,k=>113,h=>1,b=>0,g=>0,f=>0,i=>-4} 4a000000500a0000a101713300000000 4a00000000000000500a0000a10171330000000000000000 4a00000000000000500a0000a10171330000000000000000 0000004a08d000003300717800000000 4a000000500a0000a101713300000000 4a000000500a0000a101713300000000 000000000000004a08d00000330071780000000000000000 4a000000500a0000a101713300000000 0000004a08d000003300717800000000 - {e=>5,n=>3,a=>-44,m=>1,d=>-3,j=>3,l=>6,c=>2,k=>-63,h=>7,b=>0,g=>4,f=>-1,i=>3} d4ffffff507b0200df00c10e03000000 d4ffffffffffffff507b0200df00c10e0300000000000000 d4ffffffffffffff507b0200df00c10e0300000000000000 ffffffd40adf0000ed80c1c460000000 d4ffffff507b0200df00c10e03000000 d4ffffff507b0200df00c10e03000000 ffffffffffffffd40adf0000ed80c1c46000000000000000 d4ffffff507b0200df00c10e03000000 ffffffd40adf0000ed80c1c460000000 - {e=>5,n=>1,a=>39,m=>1,d=>-3,j=>5,l=>0,c=>0,k=>1,h=>0,b=>1,g=>3,f=>2,i=>-1} 2700000041ab01007801010801000000 270000000000000041ab0100780101080100000000000000 270000000000000041ab0100780101080100000000000000 0000002722d4c0001e80010420000000 2700000041ab01007801010801000000 2700000041ab01007801010801000000 000000000000002722d4c0001e8001042000000000000000 2700000041ab01007801010801000000 0000002722d4c0001e80010420000000 - {e=>4,n=>3,a=>97,m=>-3,d=>-3,j=>7,l=>4,c=>-3,k=>75,h=>5,b=>6,g=>5,f=>3,i=>3} 610000006eb90200dd014b2c03000000 61000000000000006eb90200dd014b2c0300000000000000 61000000000000006eb90200dd014b2c0300000000000000 00000061d6c74000af804b9460000000 610000006eb90200dd014b2c03000000 610000006eb90200dd014b2c03000000 0000000000000061d6c74000af804b946000000000000000 610000006eb90200dd014b2c03000000 00000061d6c74000af804b9460000000 - {e=>1,n=>3,a=>77,m=>1,d=>-2,j=>3,l=>6,c=>-4,k=>50,h=>4,b=>0,g=>1,f=>-2,i=>-4} 4d000000a0e30000e400320e03000000 4d00000000000000a0e30000e400320e0300000000000000 4d00000000000000a0e30000e400320e0300000000000000 0000004d131c4000918032c460000000 4d000000a0e30000e400320e03000000 4d000000a0e30000e400320e03000000 000000000000004d131c4000918032c46000000000000000 4d000000a0e30000e400320e03000000 0000004d131c4000918032c460000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>1,a=>104,m=>0,d=>3,j=>1,l=>6,c=>2,k=>-66,h=>7,b=>0,g=>4,f=>-1,o=>189,i=>-3} 68000000d07402006f00be0601bd0000 6800000000000000d07402006f00be0601bd000000000000 6800000000000000d07402006f00be0601bd000000000000 0000006809af0000f480bec020bd0000 68000000d07402006f00be0601bd0000 68000000d07402006f00be0601bd0000 000000000000006809af0000f480bec020bd000000000000 68000000d07402006f00be0601bd0000 0000006809af0000f480bec020bd0000 - {e=>4,n=>1,a=>-82,m=>-1,d=>-2,j=>2,l=>6,c=>3,k=>81,h=>7,b=>1,g=>0,f=>-2,o=>27,i=>-3} aeffffff99690000af00513e011b0000 aeffffffffffffff99690000af00513e011b000000000000 aeffffffffffffff99690000af00513e011b000000000000 ffffffae2f4c0000f50051dc201b0000 aeffffff99690000af00513e011b0000 aeffffff99690000af00513e011b0000 ffffffffffffffae2f4c0000f50051dc201b000000000000 aeffffff99690000af00513e011b0000 ffffffae2f4c0000f50051dc201b0000 - {e=>0,n=>0,a=>110,m=>-3,d=>0,j=>2,l=>6,c=>-3,k=>27,h=>6,b=>6,g=>5,f=>0,o=>50,i=>3} 6e0000002e8002009e001b2e00320000 6e000000000000002e8002009e001b2e0032000000000000 6e000000000000002e8002009e001b2e0032000000000000 0000006ed4014000cd001bd400320000 6e0000002e8002009e001b2e00320000 6e0000002e8002009e001b2e00320000 000000000000006ed4014000cd001bd40032000000000000 6e0000002e8002009e001b2e00320000 0000006ed4014000cd001bd400320000 - {e=>0,n=>5,a=>65,m=>-4,d=>1,j=>3,l=>2,c=>-1,k=>-88,h=>2,b=>4,g=>7,f=>0,o=>17,i=>1} 410000007c800300ca00a82205110000 41000000000000007c800300ca00a8220511000000000000 41000000000000007c800300ca00a8220511000000000000 000000419c81c0004580a850a0110000 410000007c800300ca00a82205110000 410000007c800300ca00a82205110000 00000000000000419c81c0004580a850a011000000000000 410000007c800300ca00a82205110000 000000419c81c0004580a850a0110000 - {e=>2,n=>3,a=>51,m=>-2,d=>-3,j=>1,l=>1,c=>-1,k=>-125,h=>6,b=>2,g=>2,f=>-2,o=>98,i=>2} 330000007a6501005600833103620000 33000000000000007a650100560083310362000000000000 33000000000000007a650100560083310362000000000000 000000335eac8000c880833860620000 330000007a6501005600833103620000 330000007a6501005600833103620000 00000000000000335eac8000c88083386062000000000000 330000007a6501005600833103620000 000000335eac8000c880833860620000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; }; - {a=>4} 04000000 04000000 04000000 80000000 04000000 04000000 80000000 04000000 80000000 - {a=>3} 03000000 03000000 03000000 60000000 03000000 03000000 60000000 03000000 60000000 - {a=>1} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {a=>3} 03000000 03000000 03000000 60000000 03000000 03000000 60000000 03000000 60000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; }; - {a=>1,b=>-2} 31000000 31000000 31000000 38000000 31000000 31000000 38000000 31000000 38000000 - {a=>2,b=>3} 1a000000 1a000000 1a000000 4c000000 1a000000 1a000000 4c000000 1a000000 4c000000 - {a=>2,b=>2} 12000000 12000000 12000000 48000000 12000000 12000000 48000000 12000000 48000000 - {a=>2,b=>-2} 32000000 32000000 32000000 58000000 32000000 32000000 58000000 32000000 58000000 - {a=>5,b=>-4} 25000000 25000000 25000000 b0000000 25000000 25000000 b0000000 25000000 b0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>0,a=>0,b=>3} 18000000 18000000 18000000 0c000000 18000000 18000000 0c000000 18000000 0c000000 - {c=>-3,a=>0,b=>-3} 68010000 68010000 68010000 16800000 68010000 68010000 16800000 68010000 16800000 - {c=>-3,a=>3,b=>-4} 63010000 63010000 63010000 72800000 63010000 63010000 72800000 63010000 72800000 - {c=>-2,a=>6,b=>-2} b6010000 b6010000 b6010000 db000000 b6010000 b6010000 db000000 b6010000 db000000 - {c=>-1,a=>4,b=>-3} ec010000 ec010000 ec010000 97800000 ec010000 ec010000 97800000 ec010000 97800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>0,a=>5,b=>-1,d=>0} 3d000000 3d000000 3d000000 bc000000 3d000000 3d000000 bc000000 3d000000 bc000000 - {c=>3,a=>4,b=>-2,d=>4} f4080000 f4080000 f4080000 99c00000 f4080000 f4080000 99c00000 f4080000 99c00000 - {c=>2,a=>0,b=>-1,d=>4} b8080000 b8080000 b8080000 1d400000 b8080000 b8080000 1d400000 b8080000 1d400000 - {c=>-3,a=>4,b=>2,d=>3} 54070000 54070000 54070000 8ab00000 54070000 54070000 8ab00000 54070000 8ab00000 - {c=>-2,a=>0,b=>0,d=>7} 800f0000 800f0000 800f0000 03700000 800f0000 800f0000 03700000 800f0000 03700000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>1,c=>-1,a=>5,b=>1,d=>0} cd110000 cd110000 cd110000 a7820000 cd110000 cd110000 a7820000 cd110000 a7820000 - {e=>-3,c=>-4,a=>1,b=>2,d=>4} 11590000 11590000 11590000 2a4a0000 11590000 11590000 2a4a0000 11590000 2a4a0000 - {e=>-1,c=>-1,a=>3,b=>0,d=>7} c37f0000 c37f0000 c37f0000 63fe0000 c37f0000 c37f0000 63fe0000 c37f0000 63fe0000 - {e=>0,c=>-3,a=>4,b=>-3,d=>0} 6c010000 6c010000 6c010000 96800000 6c010000 6c010000 96800000 6c010000 96800000 - {e=>2,c=>0,a=>5,b=>1,d=>7} 0d2e0000 0d2e0000 0d2e0000 a4740000 0d2e0000 0d2e0000 a4740000 0d2e0000 a4740000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>-1,c=>3,a=>3,b=>-2,d=>2,f=>6} f3740300 f3740300 f3740300 79af8000 f3740300 f3740300 79af8000 f3740300 79af8000 - {e=>2,c=>-1,a=>1,b=>-4,d=>5,f=>2} e12b0100 e12b0100 e12b0100 33d48000 e12b0100 e12b0100 33d48000 e12b0100 33d48000 - {e=>1,c=>1,a=>3,b=>-4,d=>2,f=>6} 63140300 63140300 63140300 70a38000 63140300 63140300 70a38000 63140300 70a38000 - {e=>1,c=>-2,a=>2,b=>-4,d=>2,f=>3} a2950100 a2950100 a2950100 5322c000 a2950100 a2950100 5322c000 a2950100 5322c000 - {e=>0,c=>0,a=>5,b=>-4,d=>4,f=>5} 25880200 25880200 25880200 b0414000 25880200 25880200 b0414000 25880200 b0414000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>-4,c=>-1,a=>5,b=>3,d=>2,f=>2} dd450100 dd450100 dd450100 afa88000 dd450100 dd450100 afa88000 dd450100 afa88000 - {e=>1,c=>-1,a=>3,b=>2,d=>7,f=>6} d31f0300 d31f0300 d31f0300 6bf38000 d31f0300 d31f0300 6bf38000 d31f0300 6bf38000 - {e=>-1,c=>3,a=>0,b=>1,d=>4,f=>5} c8f80200 c8f80200 c8f80200 05cf4000 c8f80200 c8f80200 05cf4000 c8f80200 05cf4000 - {e=>1,c=>-4,a=>2,b=>1,d=>1,f=>7} 0a930300 0a930300 0a930300 4613c000 0a930300 0a930300 4613c000 0a930300 4613c000 - {e=>-4,c=>-3,a=>2,b=>-1,d=>4,f=>1} 7ac90000 7ac90000 7ac90000 5ec84000 7ac90000 7ac90000 5ec84000 7ac90000 5ec84000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>-3,c=>3,a=>4,g=>2,b=>-1,d=>7,f=>5} fcde020002000000 fcde020002000000 fcde020002000000 9dfb400040000000 fcde020002000000 fcde020002000000 9dfb400040000000 fcde020002000000 9dfb400040000000 - {e=>0,c=>-4,a=>2,g=>2,b=>-4,d=>5,f=>5} 228b020002000000 228b020002000000 228b020002000000 5251400040000000 228b020002000000 228b020002000000 5251400040000000 228b020002000000 5251400040000000 - {e=>2,c=>1,a=>1,g=>6,b=>3,d=>3,f=>0} 5926000006000000 5926000006000000 5926000006000000 2cb40000c0000000 5926000006000000 5926000006000000 2cb40000c0000000 5926000006000000 2cb40000c0000000 - {e=>1,c=>-3,a=>3,g=>6,b=>2,d=>7,f=>0} 531f000006000000 531f000006000000 531f000006000000 6af20000c0000000 531f000006000000 531f000006000000 6af20000c0000000 531f000006000000 6af20000c0000000 - {e=>-4,c=>0,a=>5,g=>1,b=>-1,d=>3,f=>2} 3d46010001000000 3d46010001000000 3d46010001000000 bc38800020000000 3d46010001000000 3d46010001000000 bc38800020000000 3d46010001000000 bc38800020000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>-3,a=>2,d=>5,c=>-4,h=>0,b=>-1,g=>5,f=>7} 3adb030005000000 3adb030005000000 3adb030005000000 5e5bc000a0000000 3adb030005000000 3adb030005000000 5e5bc000a0000000 3adb030005000000 5e5bc000a0000000 - {e=>-3,a=>4,d=>6,c=>2,h=>-4,b=>3,g=>6,f=>3} 9cdc010026000000 9cdc010026000000 9cdc010026000000 8d6ac000d0000000 9cdc010026000000 9cdc010026000000 8d6ac000d0000000 9cdc010026000000 8d6ac000d0000000 - {e=>1,a=>4,d=>4,c=>3,h=>-1,b=>-2,g=>6,f=>3} f49801003e000000 f49801003e000000 f49801003e000000 99c2c000dc000000 f49801003e000000 f49801003e000000 99c2c000dc000000 f49801003e000000 99c2c000dc000000 - {e=>3,a=>5,d=>5,c=>1,h=>-2,b=>2,g=>6,f=>2} 553a010036000000 553a010036000000 553a010036000000 a8d68000d8000000 553a010036000000 553a010036000000 a8d68000d8000000 553a010036000000 a8d68000d8000000 - {e=>1,a=>7,d=>6,c=>2,h=>0,b=>3,g=>0,f=>6} 9f1c030000000000 9f1c030000000000 9f1c030000000000 ed63800000000000 9f1c030000000000 9f1c030000000000 ed63800000000000 9f1c030000000000 ed63800000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>2,a=>1,d=>3,c=>-3,h=>1,b=>-4,g=>1,f=>7,i=>5} 61a7030049010000 61a7030049010000 61a7030049010000 32b5c00026800000 61a7030049010000 61a7030049010000 32b5c00026800000 61a7030049010000 32b5c00026800000 - {e=>-4,a=>1,d=>3,c=>-2,h=>2,b=>-3,g=>7,f=>4,i=>3} a9470200d7000000 a9470200d7000000 a9470200d7000000 37390000e9800000 a9470200d7000000 a9470200d7000000 37390000e9800000 a9470200d7000000 37390000e9800000 - {e=>0,a=>2,d=>7,c=>3,h=>2,b=>2,g=>5,f=>2,i=>1} d20e010055000000 d20e010055000000 d20e010055000000 49f08000a8800000 d20e010055000000 d20e010055000000 49f08000a8800000 d20e010055000000 49f08000a8800000 - {e=>1,a=>3,d=>2,c=>2,h=>2,b=>0,g=>7,f=>6,i=>0} 8314030017000000 8314030017000000 8314030017000000 61238000e8000000 8314030017000000 8314030017000000 61238000e8000000 8314030017000000 61238000e8000000 - {e=>-4,a=>3,d=>2,c=>-1,h=>0,b=>-3,g=>4,f=>7,i=>4} ebc5030004010000 ebc5030004010000 ebc5030004010000 77a9c00082000000 ebc5030004010000 ebc5030004010000 77a9c00082000000 ebc5030004010000 77a9c00082000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>0,a=>0,d=>0,j=>-15,c=>0,h=>-4,b=>-2,g=>1,f=>2,i=>3} 30000100e100f100 30000100e100f100 30000100e100f100 180080003180f100 30000100e100f100 30000100e100f100 180080003180f100 30000100e100f100 180080003180f100 - {e=>-4,a=>2,d=>1,j=>101,c=>3,h=>1,b=>-2,g=>5,f=>1,i=>6} f2c200008d016500 f2c200008d016500 f2c200008d016500 59984000a7006500 f2c200008d016500 f2c200008d016500 59984000a7006500 f2c200008d016500 59984000a7006500 - {e=>-1,a=>0,d=>3,j=>90,c=>3,h=>3,b=>2,g=>6,f=>2,i=>1} d07601005e005a00 d07601005e005a00 d07601005e005a00 09be8000cc805a00 d07601005e005a00 d07601005e005a00 09be8000cc805a00 d07601005e005a00 09be8000cc805a00 - {e=>-4,a=>2,d=>2,j=>87,c=>3,h=>-1,b=>-1,g=>6,f=>4,i=>4} fa4402003e015700 fa4402003e015700 fa4402003e015700 5da90000de005700 fa4402003e015700 fa4402003e015700 5da90000de005700 fa4402003e015700 5da90000de005700 - {e=>1,a=>7,d=>3,j=>-72,c=>1,h=>0,b=>-1,g=>4,f=>1,i=>0} 7f9600000400b800 7f9600000400b800 7f9600000400b800 fcb240008000b800 7f9600000400b800 7f9600000400b800 fcb240008000b800 7f9600000400b800 fcb240008000b800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>-3,a=>3,d=>4,j=>77,c=>1,k=>1,h=>-3,b=>2,g=>3,f=>0,i=>2} 53580000ab004d01 53580000ab004d01 53580000ab004d01 68ca000075004d20 53580000ab004d01 53580000ab004d01 68ca000075004d20 53580000ab004d01 68ca000075004d20 - {e=>1,a=>1,d=>1,j=>20,c=>2,k=>1,h=>1,b=>-3,g=>3,f=>3,i=>4} a99201000b011401 a99201000b011401 a99201000b011401 3512c00066001420 a99201000b011401 a99201000b011401 3512c00066001420 a99201000b011401 3512c00066001420 - {e=>2,a=>5,d=>2,j=>108,c=>1,k=>5,h=>2,b=>0,g=>2,f=>5,i=>2} 45a4020092006c05 45a4020092006c05 45a4020092006c05 a0a5400049006ca0 45a4020092006c05 45a4020092006c05 a0a5400049006ca0 45a4020092006c05 a0a5400049006ca0 - {e=>3,a=>1,d=>1,j=>-2,c=>1,k=>7,h=>-1,b=>-3,g=>4,f=>4,i=>4} 693202003c01fe07 693202003c01fe07 693202003c01fe07 349700009e00fee0 693202003c01fe07 693202003c01fe07 349700009e00fee0 693202003c01fe07 349700009e00fee0 - {e=>0,a=>4,d=>7,j=>-104,c=>-2,k=>3,h=>2,b=>-4,g=>2,f=>6,i=>3} a40f0300d2009803 a40f0300d2009803 a40f0300d2009803 9371800049809860 a40f0300d2009803 a40f0300d2009803 9371800049809860 a40f0300d2009803 9371800049809860 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>1,a=>6,d=>7,j=>30,l=>2,c=>-1,k=>0,h=>-3,b=>-2,g=>6,f=>7,i=>5} f69f03006e011e10 f69f03006e011e10 f69f03006e011e10 dbf3c000d6801e08 f69f03006e011e10 f69f03006e011e10 dbf3c000d6801e08 f69f03006e011e10 dbf3c000d6801e08 - {e=>1,a=>1,d=>3,j=>-98,l=>0,c=>-1,k=>6,h=>-4,b=>-2,g=>1,f=>3,i=>1} f197010061009e06 f197010061009e06 f197010061009e06 3bb2c00030809ec0 f197010061009e06 f197010061009e06 3bb2c00030809ec0 f197010061009e06 3bb2c00030809ec0 - {e=>-2,a=>2,d=>1,j=>-45,l=>-2,c=>1,k=>7,h=>2,b=>-3,g=>0,f=>6,i=>6} 6a6203009001d337 6a6203009001d337 6a6203009001d337 549d80000b00d3f8 6a6203009001d337 6a6203009001d337 549d80000b00d3f8 6a6203009001d337 549d80000b00d3f8 - {e=>-2,a=>4,d=>2,j=>-1,l=>0,c=>-4,k=>0,h=>-3,b=>0,g=>3,f=>0,i=>4} 046500002b01ff00 046500002b01ff00 046500002b01ff00 822c00007600ff00 046500002b01ff00 046500002b01ff00 822c00007600ff00 046500002b01ff00 822c00007600ff00 - {e=>3,a=>4,d=>4,j=>110,l=>-1,c=>0,k=>1,h=>2,b=>-4,g=>0,f=>7,i=>6} 24b8030090016e39 24b8030090016e39 24b8030090016e39 9047c0000b006e3c 24b8030090016e39 24b8030090016e39 9047c0000b006e3c 24b8030090016e39 9047c0000b006e3c = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-2,a=>6,m=>4,d=>0,j=>28,l=>-3,c=>-3,k=>2,h=>3,b=>-1,g=>3,f=>5,i=>6} 7ee102009b011c2a04000000 7ee102009b011c2a04000000 7ee102009b011c2a04000000 de8d40006f001c5480000000 7ee102009b011c2a04000000 7ee102009b011c2a04000000 de8d40006f001c5480000000 7ee102009b011c2a04000000 de8d40006f001c5480000000 - {e=>-1,a=>7,m=>1,d=>6,j=>79,l=>2,c=>1,k=>3,h=>-4,b=>1,g=>1,f=>5,i=>2} 4ffc0200a1004f1301000000 4ffc0200a1004f1301000000 4ffc0200a1004f1301000000 e4ef400031004f6820000000 4ffc0200a1004f1301000000 4ffc0200a1004f1301000000 e4ef400031004f6820000000 4ffc0200a1004f1301000000 e4ef400031004f6820000000 - {e=>-3,a=>5,m=>2,d=>3,j=>43,l=>-2,c=>-4,k=>3,h=>-4,b=>-3,g=>5,f=>6,i=>5} 2d57030065012b3302000000 2d57030065012b3302000000 2d57030065012b3302000000 b63b8000b2802b7840000000 2d57030065012b3302000000 2d57030065012b3302000000 b63b8000b2802b7840000000 2d57030065012b3302000000 b63b8000b2802b7840000000 - {e=>-2,a=>6,m=>4,d=>2,j=>62,l=>-2,c=>-4,k=>4,h=>-2,b=>-1,g=>1,f=>5,i=>4} 3ee5020031013e3404000000 3ee5020031013e3404000000 3ee5020031013e3404000000 de2d40003a003e9880000000 3ee5020031013e3404000000 3ee5020031013e3404000000 de2d40003a003e9880000000 3ee5020031013e3404000000 de2d40003a003e9880000000 - {e=>1,a=>1,m=>0,d=>4,j=>-74,l=>-3,c=>2,k=>1,h=>-2,b=>2,g=>2,f=>6,i=>4} 911803003201b62900000000 911803003201b62900000000 911803003201b62900000000 294380005a00b63400000000 911803003201b62900000000 911803003201b62900000000 294380005a00b63400000000 911803003201b62900000000 294380005a00b63400000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>-4,n=>116,a=>1,m=>6,d=>4,j=>-19,l=>-1,c=>-2,k=>1,h=>0,b=>-1,g=>5,f=>3,i=>5} b9c901004501ed3906740000 b9c901004501ed3906740000 b9c901004501ed3906740000 3f48c000a280ed3cc0740000 b9c901004501ed3906740000 b9c901004501ed3906740000 3f48c000a280ed3cc0740000 b9c901004501ed3906740000 3f48c000a280ed3cc0740000 - {e=>2,n=>61,a=>4,m=>3,d=>0,j=>78,l=>-2,c=>3,k=>3,h=>-3,b=>-3,g=>2,f=>0,i=>2} ec200000aa004e33033d0000 ec200000aa004e33033d0000 ec200000aa004e33033d0000 9584000055004e78603d0000 ec200000aa004e33033d0000 ec200000aa004e33033d0000 9584000055004e78603d0000 ec200000aa004e33033d0000 9584000055004e78603d0000 - {e=>-1,n=>150,a=>3,m=>2,d=>3,j=>-89,l=>-4,c=>-3,k=>7,h=>-3,b=>-1,g=>3,f=>5,i=>1} 7bf702006b00a72702960000 7bf702006b00a72702960000 7bf702006b00a72702960000 7ebf40007480a7f040960000 7bf702006b00a72702960000 7bf702006b00a72702960000 7ebf40007480a7f040960000 7bf702006b00a72702960000 7ebf40007480a7f040960000 - {e=>-1,n=>162,a=>3,m=>5,d=>1,j=>46,l=>-2,c=>-1,k=>2,h=>-1,b=>3,g=>4,f=>0,i=>2} db730000bc002e3205a20000 db730000bc002e3205a20000 db730000bc002e3205a20000 6f9e00009d002e58a0a20000 db730000bc002e3205a20000 db730000bc002e3205a20000 6f9e00009d002e58a0a20000 db730000bc002e3205a20000 6f9e00009d002e58a0a20000 - {e=>-4,n=>162,a=>2,m=>5,d=>7,j=>-26,l=>2,c=>3,k=>0,h=>3,b=>-2,g=>1,f=>3,i=>6} f2ce01009901e61005a20000 f2ce01009901e61005a20000 f2ce01009901e61005a20000 59f8c0002f00e608a0a20000 f2ce01009901e61005a20000 f2ce01009901e61005a20000 59f8c0002f00e608a0a20000 f2ce01009901e61005a20000 59f8c0002f00e608a0a20000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; }; - {a=>-94,b=>6} a2060000 a2060000 a2060000 a2c00000 a2060000 a2060000 a2c00000 a2060000 a2c00000 - {a=>-87,b=>1} a9010000 a9010000 a9010000 a9200000 a9010000 a9010000 a9200000 a9010000 a9200000 - {a=>-8,b=>2} f8020000 f8020000 f8020000 f8400000 f8020000 f8020000 f8400000 f8020000 f8400000 - {a=>-106,b=>2} 96020000 96020000 96020000 96400000 96020000 96020000 96400000 96020000 96400000 - {a=>-98,b=>5} 9e050000 9e050000 9e050000 9ea00000 9e050000 9e050000 9ea00000 9e050000 9ea00000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; }; - {c=>3,a=>-72,b=>5} b81d0000 b81d0000 b81d0000 b8ac0000 b81d0000 b81d0000 b8ac0000 b81d0000 b8ac0000 - {c=>0,a=>-13,b=>5} f3050000 f3050000 f3050000 f3a00000 f3050000 f3050000 f3a00000 f3050000 f3a00000 - {c=>3,a=>-92,b=>6} a41e0000 a41e0000 a41e0000 a4cc0000 a41e0000 a41e0000 a4cc0000 a41e0000 a4cc0000 - {c=>-1,a=>79,b=>3} 4f3b0000 4f3b0000 4f3b0000 4f7c0000 4f3b0000 4f3b0000 4f7c0000 4f3b0000 4f7c0000 - {c=>-3,a=>-108,b=>7} 942f0000 942f0000 942f0000 94f40000 942f0000 942f0000 94f40000 942f0000 94f40000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>49,b=>2,d=>-3} 314a0100 314a0100 314a0100 31468000 314a0100 314a0100 31468000 314a0100 31468000 - {c=>0,a=>42,b=>7,d=>0} 2a070000 2a070000 2a070000 2ae00000 2a070000 2a070000 2ae00000 2a070000 2ae00000 - {c=>-4,a=>41,b=>5,d=>-3} 29650100 29650100 29650100 29b28000 29650100 29650100 29b28000 29650100 29b28000 - {c=>1,a=>-70,b=>4,d=>0} ba0c0000 ba0c0000 ba0c0000 ba840000 ba0c0000 ba0c0000 ba840000 ba0c0000 ba840000 - {c=>2,a=>-18,b=>5,d=>-1} eed50100 eed50100 eed50100 eeab8000 eed50100 eed50100 eeab8000 eed50100 eeab8000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-3,a=>-42,b=>7,d=>-2} d6af0300 d6af0300 d6af0300 d6f71000 d6af0300 d6af0300 d6f71000 d6af0300 d6f71000 - {e=>5,c=>-4,a=>109,b=>4,d=>1} 6d640a00 6d640a00 6d640a00 6d90d000 6d640a00 6d640a00 6d90d000 6d640a00 6d90d000 - {e=>7,c=>-2,a=>-119,b=>4,d=>0} 89340e00 89340e00 89340e00 89987000 89340e00 89340e00 89987000 89340e00 89987000 - {e=>3,c=>-3,a=>-23,b=>6,d=>0} e92e0600 e92e0600 e92e0600 e9d43000 e92e0600 e92e0600 e9d43000 e92e0600 e9d43000 - {e=>1,c=>-4,a=>-38,b=>2,d=>3} dae20200 dae20200 dae20200 da519000 dae20200 dae20200 da519000 dae20200 da519000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>5,c=>-3,a=>-8,b=>3,d=>-1,f=>0} f8eb0b00 f8eb0b00 f8eb0b00 f877d000 f8eb0b00 f8eb0b00 f877d000 f8eb0b00 f877d000 - {e=>4,c=>0,a=>3,b=>7,d=>2,f=>2} 03872800 03872800 03872800 03e14400 03872800 03872800 03e14400 03872800 03e14400 - {e=>4,c=>2,a=>43,b=>3,d=>-4,f=>-3} 2b135900 2b135900 2b135900 2b6a4a00 2b135900 2b135900 2b6a4a00 2b135900 2b6a4a00 - {e=>2,c=>-3,a=>-97,b=>6,d=>-4,f=>1} 9f2e1500 9f2e1500 9f2e1500 9fd62200 9f2e1500 9f2e1500 9fd62200 9f2e1500 9fd62200 - {e=>6,c=>3,a=>87,b=>5,d=>2,f=>-1} 579d7c00 579d7c00 579d7c00 57ad6e00 579d7c00 579d7c00 57ad6e00 579d7c00 57ad6e00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>7,c=>2,a=>-29,g=>2,b=>6,d=>-1,f=>-3} e3d65f01 e3d65f01 e3d65f01 e3cbfa80 e3d65f01 e3d65f01 e3cbfa80 e3d65f01 e3cbfa80 - {e=>5,c=>3,a=>-72,g=>6,b=>4,d=>-2,f=>0} b89c0b03 b89c0b03 b89c0b03 b88f5180 b89c0b03 b89c0b03 b88f5180 b89c0b03 b88f5180 - {e=>4,c=>0,a=>-24,g=>5,b=>4,d=>1,f=>2} e844a802 e844a802 e844a802 e880c540 e844a802 e844a802 e880c540 e844a802 e880c540 - {e=>1,c=>-1,a=>-37,g=>1,b=>4,d=>-3,f=>1} db7c9300 db7c9300 db7c9300 db9e9240 db7c9300 db7c9300 db9e9240 db7c9300 db9e9240 - {e=>7,c=>-2,a=>92,g=>0,b=>4,d=>-2,f=>-4} 5cb44f00 5cb44f00 5cb44f00 5c9b7800 5cb44f00 5cb44f00 5c9b7800 5cb44f00 5c9b7800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>7,c=>2,a=>93,g=>4,b=>1,d=>-3,f=>3} 5d513f02 5d513f02 5d513f02 5d2af700 5d513f02 5d513f02 5d2af700 5d513f02 5d2af700 - {e=>0,c=>-1,a=>-59,g=>5,b=>2,d=>-3,f=>-1} c57af102 c57af102 c57af102 c55e8f40 c57af102 c57af102 c55e8f40 c57af102 c55e8f40 - {e=>5,c=>-1,a=>8,g=>5,b=>2,d=>-2,f=>-1} 08bafb02 08bafb02 08bafb02 085f5f40 08bafb02 08bafb02 085f5f40 08bafb02 085f5f40 - {e=>0,c=>3,a=>-103,g=>5,b=>5,d=>1,f=>0} 995d8002 995d8002 995d8002 99ac8140 995d8002 995d8002 99ac8140 995d8002 99ac8140 - {e=>5,c=>-3,a=>114,g=>7,b=>1,d=>-4,f=>-1} 7229fb03 7229fb03 7229fb03 72365fc0 7229fb03 7229fb03 72365fc0 7229fb03 72365fc0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>2,d=>0,c=>2,h=>7,b=>5,g=>6,f=>-1} 0215760307000000 0215760307000000 0215760307000000 02a83f80e0000000 0215760307000000 0215760307000000 02a83f80e0000000 0215760307000000 02a83f80e0000000 - {e=>3,a=>-24,d=>-1,c=>-1,h=>6,b=>3,g=>2,f=>2} e8fb270106000000 e8fb270106000000 e8fb270106000000 e87fb480c0000000 e8fb270106000000 e8fb270106000000 e87fb480c0000000 e8fb270106000000 e87fb480c0000000 - {e=>6,a=>66,d=>0,c=>-3,h=>1,b=>3,g=>1,f=>-1} 422bfc0001000000 422bfc0001000000 422bfc0001000000 42746e4020000000 422bfc0001000000 422bfc0001000000 42746e4020000000 422bfc0001000000 42746e4020000000 - {e=>7,a=>83,d=>3,c=>0,h=>1,b=>1,g=>3,f=>3} 53c1be0101000000 53c1be0101000000 53c1be0101000000 5321f6c020000000 53c1be0101000000 53c1be0101000000 5321f6c020000000 53c1be0101000000 5321f6c020000000 - {e=>2,a=>47,d=>-1,c=>-1,h=>7,b=>0,g=>5,f=>3} 2ff8b50207000000 2ff8b50207000000 2ff8b50207000000 2f1fa740e0000000 2ff8b50207000000 2ff8b50207000000 2f1fa740e0000000 2ff8b50207000000 2f1fa740e0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>60,d=>-2,c=>0,h=>6,b=>2,g=>2,f=>-2,i=>-2} 3c826f0136000000 3c826f0136000000 3c826f0136000000 3c437c80d8000000 3c826f0136000000 3c826f0136000000 3c437c80d8000000 3c826f0136000000 3c437c80d8000000 - {e=>6,a=>-97,d=>0,c=>0,h=>0,b=>3,g=>4,f=>0,i=>3} 9f030c0218000000 9f030c0218000000 9f030c0218000000 9f6061000c000000 9f030c0218000000 9f030c0218000000 9f6061000c000000 9f030c0218000000 9f6061000c000000 - {e=>3,a=>88,d=>-3,c=>-4,h=>7,b=>5,g=>1,f=>-4,i=>-2} 5865c70037000000 5865c70037000000 5865c70037000000 58b2b840f8000000 5865c70037000000 5865c70037000000 58b2b840f8000000 5865c70037000000 58b2b840f8000000 - {e=>6,a=>86,d=>2,c=>0,h=>5,b=>0,g=>1,f=>3,i=>-2} 5680bc0035000000 5680bc0035000000 5680bc0035000000 56016640b8000000 5680bc0035000000 5680bc0035000000 56016640b8000000 5680bc0035000000 56016640b8000000 - {e=>0,a=>52,d=>-3,c=>-4,h=>5,b=>5,g=>0,f=>3,i=>3} 346531001d000000 346531001d000000 346531001d000000 34b28600ac000000 346531001d000000 346531001d000000 34b28600ac000000 346531001d000000 34b28600ac000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>80,d=>-2,j=>7,c=>0,h=>3,b=>2,g=>4,f=>1,i=>3} 50821702db010000 50821702db010000 50821702db010000 504333006f800000 50821702db010000 50821702db010000 504333006f800000 50821702db010000 504333006f800000 - {e=>7,a=>-43,d=>-3,j=>6,c=>1,h=>2,b=>0,g=>4,f=>0,i=>3} d5480f029a010000 d5480f029a010000 d5480f029a010000 d506f1004f000000 d5480f029a010000 d5480f029a010000 d506f1004f000000 d5480f029a010000 d506f1004f000000 - {e=>7,a=>87,d=>0,j=>3,c=>2,h=>7,b=>0,g=>7,f=>-3,i=>2} 5710de03d7000000 5710de03d7000000 5710de03d7000000 57087bc0e9800000 5710de03d7000000 5710de03d7000000 57087bc0e9800000 5710de03d7000000 57087bc0e9800000 - {e=>1,a=>57,d=>-4,j=>7,c=>-3,h=>2,b=>7,g=>4,f=>2,i=>2} 392f2302d2010000 392f2302d2010000 392f2302d2010000 39f615004b800000 392f2302d2010000 392f2302d2010000 39f615004b800000 392f2302d2010000 39f615004b800000 - {e=>1,a=>61,d=>0,j=>0,c=>-2,h=>3,b=>3,g=>7,f=>0,i=>1} 3d3382030b000000 3d3382030b000000 3d3382030b000000 3d7811c064000000 3d3382030b000000 3d3382030b000000 3d7811c064000000 3d3382030b000000 3d7811c064000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>2,a=>-111,d=>2,j=>6,c=>0,k=>2,h=>7,b=>5,g=>5,f=>-2,i=>1} 9185e4028f010200 9185e4028f010200 9185e4028f010200 91a12d40e7000200 9185e4028f010200 9185e4028f010200 91a12d40e7000200 9185e4028f010200 91a12d40e7000200 - {e=>3,a=>125,d=>-3,j=>7,c=>2,k=>102,h=>6,b=>4,g=>2,f=>-3,i=>3} 7d545701de016600 7d545701de016600 7d545701de016600 7d8aba80cf806600 7d545701de016600 7d545701de016600 7d8aba80cf806600 7d545701de016600 7d8aba80cf806600 - {e=>5,a=>-3,d=>-3,j=>4,c=>0,k=>42,h=>5,b=>0,g=>6,f=>-1,i=>-4} fd407b0325012a00 fd407b0325012a00 fd407b0325012a00 fd02df80b2002a00 fd407b0325012a00 fd407b0325012a00 fd02df80b2002a00 fd407b0325012a00 fd02df80b2002a00 - {e=>2,a=>-127,d=>0,j=>1,c=>-1,k=>70,h=>5,b=>0,g=>0,f=>1,i=>-2} 8138140075004600 8138140075004600 8138140075004600 811c2200b8804600 8138140075004600 8138140075004600 811c2200b8804600 8138140075004600 811c2200b8804600 - {e=>0,a=>43,d=>3,j=>3,c=>2,k=>93,h=>4,b=>2,g=>6,f=>1,i=>1} 2bd21003cc005d00 2bd21003cc005d00 2bd21003cc005d00 2b49838085805d00 2bd21003cc005d00 2bd21003cc005d00 2b49838085805d00 2bd21003cc005d00 2b49838085805d00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>0,a=>-82,d=>1,j=>3,l=>2,c=>-1,k=>124,h=>4,b=>3,g=>7,f=>3,i=>-4} ae7bb003e4007c02 ae7bb003e4007c02 ae7bb003e4007c02 ae7c87c091807c40 ae7bb003e4007c02 ae7bb003e4007c02 ae7c87c091807c40 ae7bb003e4007c02 ae7c87c091807c40 - {e=>7,a=>125,d=>-3,j=>6,l=>7,c=>-3,k=>33,h=>0,b=>5,g=>7,f=>2,i=>-3} 7d6daf03a8012107 7d6daf03a8012107 7d6daf03a8012107 7db6f5c0170021e0 7d6daf03a8012107 7d6daf03a8012107 7db6f5c0170021e0 7d6daf03a8012107 7db6f5c0170021e0 - {e=>0,a=>-27,d=>-1,j=>3,l=>5,c=>-1,k=>41,h=>0,b=>7,g=>6,f=>-2,i=>-2} e5ff6103f0002905 e5ff6103f0002905 e5ff6103f0002905 e5ff8d80198029a0 e5ff6103f0002905 e5ff6103f0002905 e5ff8d80198029a0 e5ff6103f0002905 e5ff8d80198029a0 - {e=>6,a=>-76,d=>-3,j=>7,l=>0,c=>0,k=>-16,h=>5,b=>7,g=>4,f=>-1,i=>2} b4477d02d501f000 b4477d02d501f000 b4477d02d501f000 b4e2ef00ab80f000 b4477d02d501f000 b4477d02d501f000 b4e2ef00ab80f000 b4477d02d501f000 b4e2ef00ab80f000 - {e=>4,a=>-66,d=>3,j=>1,l=>5,c=>2,k=>-26,h=>1,b=>6,g=>6,f=>0,i=>-1} bed608037900e605 bed608037900e605 bed608037900e605 bec9c1803c80e6a0 bed608037900e605 bed608037900e605 bec9c1803c80e6a0 bed608037900e605 bec9c1803c80e6a0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>-113,m=>3,d=>-2,j=>5,l=>3,c=>2,k=>-9,h=>0,b=>7,g=>1,f=>0,i=>1} 8f978f004801f71b 8f978f004801f71b 8f978f004801f71b 8feb70400680f76c 8f978f004801f71b 8f978f004801f71b 8feb70400680f76c 8f978f004801f71b 8feb70400680f76c - {e=>5,a=>14,m=>3,d=>-4,j=>7,l=>1,c=>-1,k=>41,h=>6,b=>4,g=>0,f=>-2,i=>-4} 0e3c6b00e6012919 0e3c6b00e6012919 0e3c6b00e6012919 0e9e5c00d380292c 0e3c6b00e6012919 0e3c6b00e6012919 0e9e5c00d380292c 0e3c6b00e6012919 0e9e5c00d380292c - {e=>1,a=>50,m=>2,d=>3,j=>7,l=>3,c=>-4,k=>-106,h=>4,b=>3,g=>0,f=>-1,i=>-4} 32e37200e4019613 32e37200e4019613 32e37200e4019613 32719e0093809668 32e37200e4019613 32e37200e4019613 32719e0093809668 32e37200e4019613 32719e0093809668 - {e=>3,a=>122,m=>2,d=>1,j=>5,l=>6,c=>-3,k=>83,h=>4,b=>0,g=>0,f=>-2,i=>2} 7a68660054015316 7a68660054015316 7a68660054015316 7a14bc008a8053c8 7a68660054015316 7a68660054015316 7a14bc008a8053c8 7a68660054015316 7a14bc008a8053c8 - {e=>4,a=>25,m=>-4,d=>1,j=>5,l=>0,c=>1,k=>115,h=>2,b=>1,g=>6,f=>1,i=>0} 1949180342017320 1949180342017320 1949180342017320 1924c38042807310 1949180342017320 1949180342017320 1924c38042807310 1949180342017320 1924c38042807310 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>7,a=>-13,m=>2,d=>-3,j=>4,l=>5,c=>-3,k=>-63,h=>6,b=>1,g=>7,f=>3,i=>3} f369b7031e01c11507000000 f369b7031e01c11507000000 f369b7031e01c11507000000 f336b7c0ce00c1a8e0000000 f369b7031e01c11507000000 f369b7031e01c11507000000 f336b7c0ce00c1a8e0000000 f369b7031e01c11507000000 f336b7c0ce00c1a8e0000000 - {e=>2,n=>2,a=>10,m=>2,d=>3,j=>4,l=>0,c=>2,k=>-15,h=>1,b=>3,g=>3,f=>-3,i=>-2} 0ad3d4013101f11002000000 0ad3d4013101f11002000000 0ad3d4013101f11002000000 0a69aac03a00f10840000000 0ad3d4013101f11002000000 0ad3d4013101f11002000000 0a69aac03a00f10840000000 0ad3d4013101f11002000000 0a69aac03a00f10840000000 - {e=>2,n=>5,a=>53,m=>-2,d=>2,j=>5,l=>1,c=>2,k=>-31,h=>5,b=>7,g=>4,f=>-3,i=>1} 359754024d01e13105000000 359754024d01e13105000000 359754024d01e13105000000 35e92b00a680e138a0000000 359754024d01e13105000000 359754024d01e13105000000 35e92b00a680e138a0000000 359754024d01e13105000000 35e92b00a680e138a0000000 - {e=>2,n=>3,a=>92,m=>3,d=>3,j=>6,l=>6,c=>-2,k=>99,h=>7,b=>3,g=>4,f=>-4,i=>-2} 5cf34402b701631e03000000 5cf34402b701631e03000000 5cf34402b701631e03000000 5c79a900fb0063cc60000000 5cf34402b701631e03000000 5cf34402b701631e03000000 5c79a900fb0063cc60000000 5cf34402b701631e03000000 5c79a900fb0063cc60000000 - {e=>2,n=>6,a=>-14,m=>1,d=>0,j=>0,l=>2,c=>-4,k=>1,h=>7,b=>7,g=>4,f=>1,i=>-3} f22714022f00010a06000000 f22714022f00010a06000000 f22714022f00010a06000000 f2f02300f4000144c0000000 f22714022f00010a06000000 f22714022f00010a06000000 f2f02300f4000144c0000000 f22714022f00010a06000000 f2f02300f4000144c0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>5,a=>61,m=>-2,d=>-4,j=>1,l=>6,c=>1,k=>-87,h=>5,b=>7,g=>7,f=>-1,o=>42,i=>1} 3d0ff1034d00a936052a0000 3d0ff1034d00a936052a0000 3d0ff1034d00a936052a0000 3de60fc0a480a9d8a02a0000 3d0ff1034d00a936052a0000 3d0ff1034d00a936052a0000 3de60fc0a480a9d8a02a0000 3d0ff1034d00a936052a0000 3de60fc0a480a9d8a02a0000 - {e=>1,n=>4,a=>116,m=>-1,d=>-4,j=>0,l=>7,c=>3,k=>-107,h=>2,b=>6,g=>5,f=>0,o=>162,i=>3} 741e83021a00953f04a20000 741e83021a00953f04a20000 741e83021a00953f04a20000 74ce11404c0095fc80a20000 741e83021a00953f04a20000 741e83021a00953f04a20000 74ce11404c0095fc80a20000 741e83021a00953f04a20000 74ce11404c0095fc80a20000 - {e=>4,n=>5,a=>114,m=>-3,d=>-2,j=>4,l=>5,c=>-2,k=>68,h=>3,b=>7,g=>3,f=>-2,o=>112,i=>-2} 72b7e9013301442d05700000 72b7e9013301442d05700000 72b7e9013301442d05700000 72fb4cc07a0044b4a0700000 72b7e9013301442d05700000 72b7e9013301442d05700000 72fb4cc07a0044b4a0700000 72b7e9013301442d05700000 72fb4cc07a0044b4a0700000 - {e=>2,n=>7,a=>-31,m=>-2,d=>-2,j=>7,l=>7,c=>-4,k=>20,h=>2,b=>1,g=>3,f=>-3,o=>162,i=>-2} e1a1d501f201143707a20000 e1a1d501f201143707a20000 e1a1d501f201143707a20000 e1332ac05b8014f8e0a20000 e1a1d501f201143707a20000 e1a1d501f201143707a20000 e1332ac05b8014f8e0a20000 e1a1d501f201143707a20000 e1332ac05b8014f8e0a20000 - {e=>2,n=>1,a=>-39,m=>-4,d=>-1,j=>4,l=>3,c=>1,k=>-123,h=>7,b=>7,g=>5,f=>1,o=>105,i=>-2} d9cf95023701852301690000 d9cf95023701852301690000 d9cf95023701852301690000 d9e7a340fa00857020690000 d9cf95023701852301690000 d9cf95023701852301690000 d9e7a340fa00857020690000 d9cf95023701852301690000 d9e7a340fa00857020690000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; }; - {a=>103,b=>3} 67000300 67000300 67000300 00676000 67000300 67000300 00676000 67000300 00676000 - {a=>38,b=>4} 26000400 26000400 26000400 00268000 26000400 26000400 00268000 26000400 00268000 - {a=>52,b=>0} 34000000 34000000 34000000 00340000 34000000 34000000 00340000 34000000 00340000 - {a=>-12,b=>3} f4ff0300 f4ff0300 f4ff0300 fff46000 f4ff0300 f4ff0300 fff46000 f4ff0300 fff46000 - {a=>5,b=>6} 05000600 05000600 05000600 0005c000 05000600 05000600 0005c000 05000600 0005c000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-92,b=>5} a4ff0500 a4ff0500 a4ff0500 ffa4a000 a4ff0500 a4ff0500 ffa4a000 a4ff0500 ffa4a000 - {c=>-2,a=>-97,b=>2} 9fff3200 9fff3200 9fff3200 ff9f5800 9fff3200 9fff3200 ff9f5800 9fff3200 ff9f5800 - {c=>3,a=>-63,b=>1} c1ff1900 c1ff1900 c1ff1900 ffc12c00 c1ff1900 c1ff1900 ffc12c00 c1ff1900 ffc12c00 - {c=>2,a=>93,b=>2} 5d001200 5d001200 5d001200 005d4800 5d001200 5d001200 005d4800 5d001200 005d4800 - {c=>2,a=>1,b=>3} 01001300 01001300 01001300 00016800 01001300 01001300 00016800 01001300 00016800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>65,b=>6,d=>-1} 4100f601 4100f601 4100f601 0041db80 4100f601 4100f601 0041db80 4100f601 0041db80 - {c=>-2,a=>107,b=>0,d=>3} 6b00f000 6b00f000 6b00f000 006b1980 6b00f000 6b00f000 006b1980 6b00f000 006b1980 - {c=>-2,a=>-7,b=>3,d=>1} f9ff7300 f9ff7300 f9ff7300 fff97880 f9ff7300 f9ff7300 fff97880 f9ff7300 fff97880 - {c=>-1,a=>-11,b=>3,d=>0} f5ff3b00 f5ff3b00 f5ff3b00 fff57c00 f5ff3b00 f5ff3b00 fff57c00 f5ff3b00 fff57c00 - {c=>-3,a=>-10,b=>7,d=>-3} f6ff6f01 f6ff6f01 f6ff6f01 fff6f680 f6ff6f01 f6ff6f01 fff6f680 f6ff6f01 fff6f680 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>7,c=>-3,a=>69,b=>7,d=>-2} 4500af0f 4500af0f 4500af0f 0045f770 4500af0f 4500af0f 0045f770 4500af0f 0045f770 - {e=>1,c=>1,a=>92,b=>7,d=>3} 5c00cf02 5c00cf02 5c00cf02 005ce590 5c00cf02 5c00cf02 005ce590 5c00cf02 005ce590 - {e=>5,c=>-3,a=>104,b=>7,d=>1} 68006f0a 68006f0a 68006f0a 0068f4d0 68006f0a 68006f0a 0068f4d0 68006f0a 0068f4d0 - {e=>6,c=>-3,a=>50,b=>7,d=>1} 32006f0c 32006f0c 32006f0c 0032f4e0 32006f0c 32006f0c 0032f4e0 32006f0c 0032f4e0 - {e=>6,c=>-3,a=>52,b=>5,d=>2} 3400ad0c 3400ad0c 3400ad0c 0034b560 3400ad0c 3400ad0c 0034b560 3400ad0c 0034b560 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>1,a=>-16,b=>7,d=>-4,f=>2} f0ff0f25 f0ff0f25 f0ff0f25 fff0e624 f0ff0f25 f0ff0f25 fff0e624 f0ff0f25 fff0e624 - {e=>3,c=>1,a=>-81,b=>2,d=>-3,f=>-2} afff4a67 afff4a67 afff4a67 ffaf46bc afff4a67 afff4a67 ffaf46bc afff4a67 ffaf46bc - {e=>0,c=>-2,a=>-7,b=>6,d=>2,f=>2} f9ffb620 f9ffb620 f9ffb620 fff9d904 f9ffb620 f9ffb620 fff9d904 f9ffb620 fff9d904 - {e=>5,c=>3,a=>46,b=>4,d=>1,f=>3} 2e005c3a 2e005c3a 2e005c3a 002e8cd6 2e005c3a 2e005c3a 002e8cd6 2e005c3a 002e8cd6 - {e=>2,c=>-4,a=>110,b=>3,d=>2,f=>-3} 6e00a354 6e00a354 6e00a354 006e712a 6e00a354 6e00a354 006e712a 6e00a354 006e712a = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>1,c=>2,a=>-118,g=>2,b=>2,d=>1,f=>1} 8aff521202000000 8aff521202000000 8aff521202000000 ff8a489240000000 8aff521202000000 8aff521202000000 ff8a489240000000 8aff521202000000 ff8a489240000000 - {e=>7,c=>-3,a=>73,g=>6,b=>3,d=>-4,f=>3} 49002b3f06000000 49002b3f06000000 49002b3f06000000 00497676c0000000 49002b3f06000000 49002b3f06000000 00497676c0000000 49002b3f06000000 00497676c0000000 - {e=>0,c=>-4,a=>51,g=>5,b=>3,d=>-1,f=>-1} 3300e37105000000 3300e37105000000 3300e37105000000 0033738ea0000000 3300e37105000000 3300e37105000000 0033738ea0000000 3300e37105000000 0033738ea0000000 - {e=>6,c=>0,a=>-60,g=>3,b=>4,d=>-3,f=>1} c4ff441d03000000 c4ff441d03000000 c4ff441d03000000 ffc482e260000000 c4ff441d03000000 c4ff441d03000000 ffc482e260000000 c4ff441d03000000 ffc482e260000000 - {e=>3,c=>-4,a=>-59,g=>0,b=>1,d=>-3,f=>3} c5ff613700000000 c5ff613700000000 c5ff613700000000 ffc532b600000000 c5ff613700000000 c5ff613700000000 ffc532b600000000 c5ff613700000000 ffc532b600000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>5,c=>-3,a=>-108,g=>3,b=>6,d=>-1,f=>-4} 94ffee4b03000000 94ffee4b03000000 94ffee4b03000000 ff94d7d860000000 94ffee4b03000000 94ffee4b03000000 ff94d7d860000000 94ffee4b03000000 ff94d7d860000000 - {e=>0,c=>1,a=>1,g=>6,b=>4,d=>-3,f=>-3} 01004c5106000000 01004c5106000000 01004c5106000000 0001868ac0000000 01004c5106000000 01004c5106000000 0001868ac0000000 01004c5106000000 0001868ac0000000 - {e=>7,c=>-3,a=>-122,g=>3,b=>2,d=>-4,f=>1} 86ff2a1f03000000 86ff2a1f03000000 86ff2a1f03000000 ff86567260000000 86ff2a1f03000000 86ff2a1f03000000 ff86567260000000 86ff2a1f03000000 ff86567260000000 - {e=>4,c=>-2,a=>112,g=>2,b=>6,d=>-4,f=>1} 7000361902000000 7000361902000000 7000361902000000 0070da4240000000 7000361902000000 7000361902000000 0070da4240000000 7000361902000000 0070da4240000000 - {e=>0,c=>-1,a=>-72,g=>6,b=>5,d=>3,f=>-4} b8fffd4006000000 b8fffd4006000000 b8fffd4006000000 ffb8bd88c0000000 b8fffd4006000000 b8fffd4006000000 ffb8bd88c0000000 b8fffd4006000000 ffb8bd88c0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>7,a=>108,d=>2,c=>0,h=>5,b=>7,g=>0,f=>3} 6c00873e0000000005000000 6c00873e0000000005000000 6c00873e0000000005000000 006ce17600000000a0000000 6c00873e0000000005000000 6c00873e0000000005000000 006ce17600000000a0000000 6c00873e0000000005000000 006ce17600000000a0000000 - {e=>3,a=>126,d=>-1,c=>3,h=>6,b=>3,g=>6,f=>-2} 7e00db670600000006000000 7e00db670600000006000000 7e00db670600000006000000 007e6fbcc0000000c0000000 7e00db670600000006000000 7e00db670600000006000000 007e6fbcc0000000c0000000 7e00db670600000006000000 007e6fbcc0000000c0000000 - {e=>0,a=>-62,d=>-2,c=>-4,h=>1,b=>5,g=>7,f=>-1} c2ffa5710700000001000000 c2ffa5710700000001000000 c2ffa5710700000001000000 ffc2b30ee000000020000000 c2ffa5710700000001000000 c2ffa5710700000001000000 ffc2b30ee000000020000000 c2ffa5710700000001000000 ffc2b30ee000000020000000 - {e=>4,a=>102,d=>2,c=>2,h=>7,b=>1,g=>3,f=>-1} 660091780300000007000000 660091780300000007000000 660091780300000007000000 0066294e60000000e0000000 660091780300000007000000 660091780300000007000000 0066294e60000000e0000000 660091780300000007000000 0066294e60000000e0000000 - {e=>5,a=>-66,d=>2,c=>-4,h=>7,b=>7,g=>7,f=>-2} beffa76a0700000007000000 beffa76a0700000007000000 beffa76a0700000007000000 ffbef15ce0000000e0000000 beffa76a0700000007000000 beffa76a0700000007000000 ffbef15ce0000000e0000000 beffa76a0700000007000000 ffbef15ce0000000e0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>114,d=>1,c=>-2,h=>7,b=>7,g=>2,f=>-1,i=>-2} 7200777e0200000037000000 7200777e0200000037000000 7200777e0200000037000000 0072f8fe40000000f8000000 7200777e0200000037000000 7200777e0200000037000000 0072f8fe40000000f8000000 7200777e0200000037000000 0072f8fe40000000f8000000 - {e=>1,a=>-112,d=>-3,c=>2,h=>5,b=>5,g=>1,f=>-2,i=>-2} 90ff55630100000035000000 90ff55630100000035000000 90ff55630100000035000000 ff90aa9c20000000b8000000 90ff55630100000035000000 90ff55630100000035000000 ff90aa9c20000000b8000000 90ff55630100000035000000 ff90aa9c20000000b8000000 - {e=>5,a=>88,d=>0,c=>1,h=>4,b=>4,g=>6,f=>-2,i=>2} 58000c6a0600000014000000 58000c6a0600000014000000 58000c6a0600000014000000 0058845cc000000088000000 58000c6a0600000014000000 58000c6a0600000014000000 0058845cc000000088000000 58000c6a0600000014000000 0058845cc000000088000000 - {e=>2,a=>-8,d=>-2,c=>-1,h=>5,b=>0,g=>4,f=>-4,i=>0} f8ffb8450400000005000000 f8ffb8450400000005000000 f8ffb8450400000005000000 fff81f2880000000a0000000 f8ffb8450400000005000000 f8ffb8450400000005000000 fff81f2880000000a0000000 f8ffb8450400000005000000 fff81f2880000000a0000000 - {e=>7,a=>-35,d=>3,c=>3,h=>0,b=>4,g=>0,f=>-2,i=>-4} ddffdc6e0000000020000000 ddffdc6e0000000020000000 ddffdc6e0000000020000000 ffdd8dfc0000000010000000 ddffdc6e0000000020000000 ddffdc6e0000000020000000 ffdd8dfc0000000010000000 ddffdc6e0000000020000000 ffdd8dfc0000000010000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-31,d=>-2,j=>5,c=>-3,h=>0,b=>0,g=>5,f=>-3,i=>3} e1ffa8510500000058010000 e1ffa8510500000058010000 e1ffa8510500000058010000 ffe1170aa00000000e800000 e1ffa8510500000058010000 e1ffa8510500000058010000 ffe1170aa00000000e800000 e1ffa8510500000058010000 ffe1170aa00000000e800000 - {e=>3,a=>0,d=>-1,j=>1,c=>-1,h=>0,b=>2,g=>1,f=>-2,i=>2} 0000fa670100000050000000 0000fa670100000050000000 0000fa670100000050000000 00005fbc2000000008800000 0000fa670100000050000000 0000fa670100000050000000 00005fbc2000000008800000 0000fa670100000050000000 00005fbc2000000008800000 - {e=>0,a=>72,d=>-1,j=>5,c=>2,h=>6,b=>5,g=>1,f=>-4,i=>-4} 4800d5410100000066010000 4800d5410100000066010000 4800d5410100000066010000 0048ab8820000000d2800000 4800d5410100000066010000 4800d5410100000066010000 0048ab8820000000d2800000 4800d5410100000066010000 0048ab8820000000d2800000 - {e=>5,a=>84,d=>1,j=>1,c=>1,h=>3,b=>5,g=>2,f=>-3,i=>2} 54004d5a0200000053000000 54004d5a0200000053000000 54004d5a0200000053000000 0054a4da4000000068800000 54004d5a0200000053000000 54004d5a0200000053000000 0054a4da4000000068800000 54004d5a0200000053000000 0054a4da4000000068800000 - {e=>2,a=>75,d=>1,j=>3,c=>1,h=>2,b=>7,g=>5,f=>-2,i=>0} 4b004f6405000000c2000000 4b004f6405000000c2000000 4b004f6405000000c2000000 004be4aca000000041800000 4b004f6405000000c2000000 4b004f6405000000c2000000 004be4aca000000041800000 4b004f6405000000c2000000 004be4aca000000041800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>7,a=>-23,d=>-3,j=>1,c=>-3,k=>-79,h=>4,b=>0,g=>6,f=>0,i=>1} e9ff680f060000004c00b100 e9ff680f060000004c00b100 e9ff680f060000004c00b100 ffe916f0c00000008480b100 e9ff680f060000004c00b100 e9ff680f060000004c00b100 ffe916f0c00000008480b100 e9ff680f060000004c00b100 ffe916f0c00000008480b100 - {e=>2,a=>-89,d=>0,j=>5,c=>1,k=>-14,h=>6,b=>6,g=>6,f=>3,i=>-3} a7ff0e34060000006e01f200 a7ff0e34060000006e01f200 a7ff0e34060000006e01f200 ffa7c426c0000000d680f200 a7ff0e34060000006e01f200 a7ff0e34060000006e01f200 ffa7c426c0000000d680f200 a7ff0e34060000006e01f200 ffa7c426c0000000d680f200 - {e=>1,a=>-23,d=>0,j=>2,c=>1,k=>-2,h=>1,b=>1,g=>5,f=>2,i=>-2} e9ff092205000000b100fe00 e9ff092205000000b100fe00 e9ff092205000000b100fe00 ffe92414a00000003900fe00 e9ff092205000000b100fe00 e9ff092205000000b100fe00 ffe92414a00000003900fe00 e9ff092205000000b100fe00 ffe92414a00000003900fe00 - {e=>7,a=>-84,d=>-2,j=>3,c=>-4,k=>1,h=>6,b=>3,g=>4,f=>-2,i=>-4} acffa36f04000000e6000100 acffa36f04000000e6000100 acffa36f04000000e6000100 ffac737c80000000d1800100 acffa36f04000000e6000100 acffa36f04000000e6000100 ffac737c80000000d1800100 acffa36f04000000e6000100 ffac737c80000000d1800100 - {e=>4,a=>-2,d=>-1,j=>3,c=>3,k=>-56,h=>3,b=>2,g=>6,f=>0,i=>-2} feffda0906000000f300c800 feffda0906000000f300c800 feffda0906000000f300c800 fffe4fc0c00000007980c800 feffda0906000000f300c800 feffda0906000000f300c800 fffe4fc0c00000007980c800 feffda0906000000f300c800 fffe4fc0c00000007980c800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>43,d=>-2,j=>3,l=>3,c=>0,k=>-20,h=>3,b=>4,g=>1,f=>1,i=>-2} 2b00841301000000f300ec03 2b00841301000000f300ec03 2b00841301000000f300ec03 002b8312200000007980ec60 2b00841301000000f300ec03 2b00841301000000f300ec03 002b8312200000007980ec60 2b00841301000000f300ec03 002b8312200000007980ec60 - {e=>1,a=>-33,d=>1,j=>3,l=>2,c=>-3,k=>77,h=>2,b=>4,g=>0,f=>2,i=>2} dfff6c2200000000d2004d02 dfff6c2200000000d2004d02 dfff6c2200000000d2004d02 ffdf94940000000049804d40 dfff6c2200000000d2004d02 dfff6c2200000000d2004d02 ffdf94940000000049804d40 dfff6c2200000000d2004d02 ffdf94940000000049804d40 - {e=>7,a=>122,d=>0,j=>5,l=>3,c=>-3,k=>-62,h=>7,b=>5,g=>3,f=>3,i=>0} 7a002d3e030000004701c203 7a002d3e030000004701c203 7a002d3e030000004701c203 007ab47660000000e280c260 7a002d3e030000004701c203 7a002d3e030000004701c203 007ab47660000000e280c260 7a002d3e030000004701c203 007ab47660000000e280c260 - {e=>4,a=>36,d=>3,j=>2,l=>1,c=>0,k=>-1,h=>6,b=>7,g=>1,f=>-3,i=>-3} 2400c75801000000ae00ff01 2400c75801000000ae00ff01 2400c75801000000ae00ff01 0024e1ca20000000d500ff20 2400c75801000000ae00ff01 2400c75801000000ae00ff01 0024e1ca20000000d500ff20 2400c75801000000ae00ff01 0024e1ca20000000d500ff20 - {e=>2,a=>126,d=>-4,j=>2,l=>3,c=>0,k=>-47,h=>2,b=>6,g=>7,f=>0,i=>-4} 7e00060507000000a200d103 7e00060507000000a200d103 7e00060507000000a200d103 007ec220e00000005100d160 7e00060507000000a200d103 7e00060507000000a200d103 007ec220e00000005100d160 7e00060507000000a200d103 007ec220e00000005100d160 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>-59,m=>-4,d=>1,j=>2,l=>7,c=>0,k=>-30,h=>2,b=>7,g=>7,f=>-1,i=>0} c5ff4770070000008200e227 c5ff4770070000008200e227 c5ff4770070000008200e227 ffc5e08ee00000004100e2f0 c5ff4770070000008200e227 c5ff4770070000008200e227 ffc5e08ee00000004100e2f0 c5ff4770070000008200e227 ffc5e08ee00000004100e2f0 - {e=>5,a=>-106,m=>-1,d=>3,j=>2,l=>5,c=>3,k=>84,h=>4,b=>3,g=>3,f=>-3,i=>-1} 96ffdb5a03000000bc00543d 96ffdb5a03000000bc00543d 96ffdb5a03000000bc00543d ff966dda600000009d0054bc 96ffdb5a03000000bc00543d 96ffdb5a03000000bc00543d ff966dda600000009d0054bc 96ffdb5a03000000bc00543d ff966dda600000009d0054bc - {e=>1,a=>41,m=>1,d=>1,j=>7,l=>5,c=>2,k=>33,h=>5,b=>7,g=>4,f=>-1,i=>-1} 2900577204000000fd01210d 2900577204000000fd01210d 2900577204000000fd01210d 0029e89e80000000bf8021a4 2900577204000000fd01210d 2900577204000000fd01210d 0029e89e80000000bf8021a4 2900577204000000fd01210d 0029e89e80000000bf8021a4 - {e=>7,a=>53,m=>0,d=>2,j=>5,l=>6,c=>0,k=>-74,h=>1,b=>1,g=>6,f=>-1,i=>-4} 3500817e060000006101b606 3500817e060000006101b606 3500817e060000006101b606 0035217ec00000003280b6c0 3500817e060000006101b606 3500817e060000006101b606 0035217ec00000003280b6c0 3500817e060000006101b606 0035217ec00000003280b6c0 - {e=>0,a=>-26,m=>0,d=>-3,j=>0,l=>6,c=>1,k=>94,h=>3,b=>2,g=>5,f=>3,i=>-2} e6ff4a310500000033005e06 e6ff4a310500000033005e06 e6ff4a310500000033005e06 ffe64686a000000078005ec0 e6ff4a310500000033005e06 e6ff4a310500000033005e06 ffe64686a000000078005ec0 e6ff4a310500000033005e06 ffe64686a000000078005ec0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>3,a=>116,m=>1,d=>-1,j=>4,l=>5,c=>-4,k=>-99,h=>6,b=>1,g=>1,f=>-1,i=>-4} 7400e1770100000026019d0d03000000 7400e1770100000026019d0d03000000 7400e1770100000026019d0d03000000 007433be20000000d2009da460000000 7400e1770100000026019d0d03000000 7400e1770100000026019d0d03000000 007433be20000000d2009da460000000 7400e1770100000026019d0d03000000 007433be20000000d2009da460000000 - {e=>5,n=>6,a=>-60,m=>-4,d=>-1,j=>1,l=>5,c=>0,k=>-90,h=>3,b=>3,g=>2,f=>-2,i=>-3} c4ffc36b020000006b00a62506000000 c4ffc36b020000006b00a62506000000 c4ffc36b020000006b00a62506000000 ffc463dc400000007480a6b0c0000000 c4ffc36b020000006b00a62506000000 c4ffc36b020000006b00a62506000000 ffc463dc400000007480a6b0c0000000 c4ffc36b020000006b00a62506000000 ffc463dc400000007480a6b0c0000000 - {e=>1,n=>3,a=>101,m=>1,d=>1,j=>5,l=>4,c=>-1,k=>0,h=>0,b=>0,g=>3,f=>3,i=>2} 65007832030000005001000c03000000 65007832030000005001000c03000000 65007832030000005001000c03000000 00651c96600000000a80008460000000 65007832030000005001000c03000000 65007832030000005001000c03000000 00651c96600000000a80008460000000 65007832030000005001000c03000000 00651c96600000000a80008460000000 - {e=>1,n=>5,a=>-81,m=>-2,d=>1,j=>4,l=>7,c=>-3,k=>24,h=>2,b=>7,g=>4,f=>2,i=>1} afff6f22040000000a01183705000000 afff6f22040000000a01183705000000 afff6f22040000000a01183705000000 ffaff49480000000460018f8a0000000 afff6f22040000000a01183705000000 afff6f22040000000a01183705000000 ffaff49480000000460018f8a0000000 afff6f22040000000a01183705000000 ffaff49480000000460018f8a0000000 - {e=>5,n=>7,a=>69,m=>-1,d=>-4,j=>4,l=>5,c=>-3,k=>-48,h=>3,b=>1,g=>1,f=>-3,i=>1} 4500295b010000000b01d03d07000000 4500295b010000000b01d03d07000000 4500295b010000000b01d03d07000000 0045365a200000006600d0bce0000000 4500295b010000000b01d03d07000000 4500295b010000000b01d03d07000000 0045365a200000006600d0bce0000000 4500295b010000000b01d03d07000000 0045365a200000006600d0bce0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>1,a=>-4,m=>-3,d=>1,j=>6,l=>4,c=>1,k=>-26,h=>3,b=>6,g=>0,f=>3,o=>238,i=>2} fcff4e3c000000009301e62c01ee0000 fcff4e3c000000009301e62c01ee0000 fcff4e3c000000009301e62c01ee0000 fffcc4e6000000006b00e69420ee0000 fcff4e3c000000009301e62c01ee0000 fcff4e3c000000009301e62c01ee0000 fffcc4e6000000006b00e69420ee0000 fcff4e3c000000009301e62c01ee0000 fffcc4e6000000006b00e69420ee0000 - {e=>0,n=>1,a=>-68,m=>-2,d=>1,j=>5,l=>3,c=>-2,k=>121,h=>3,b=>2,g=>1,f=>-2,o=>129,i=>2} bcff7260010000005301793301810000 bcff7260010000005301793301810000 bcff7260010000005301793301810000 ffbc588c200000006a80797820810000 bcff7260010000005301793301810000 bcff7260010000005301793301810000 ffbc588c200000006a80797820810000 bcff7260010000005301793301810000 ffbc588c200000006a80797820810000 - {e=>0,n=>3,a=>-111,m=>-4,d=>2,j=>1,l=>5,c=>-4,k=>58,h=>7,b=>2,g=>1,f=>-4,o=>239,i=>-2} 91ffa2400100000077003a2503ef0000 91ffa2400100000077003a2503ef0000 91ffa2400100000077003a2503ef0000 ff91510820000000f8803ab060ef0000 91ffa2400100000077003a2503ef0000 91ffa2400100000077003a2503ef0000 ff91510820000000f8803ab060ef0000 91ffa2400100000077003a2503ef0000 ff91510820000000f8803ab060ef0000 - {e=>0,n=>5,a=>-114,m=>-2,d=>-4,j=>1,l=>2,c=>2,k=>-17,h=>7,b=>3,g=>3,f=>-3,o=>107,i=>-1} 8eff1351030000007f00ef32056b0000 8eff1351030000007f00ef32056b0000 8eff1351030000007f00ef32056b0000 ff8e6a0a60000000fc80ef58a06b0000 8eff1351030000007f00ef32056b0000 8eff1351030000007f00ef32056b0000 ff8e6a0a60000000fc80ef58a06b0000 8eff1351030000007f00ef32056b0000 ff8e6a0a60000000fc80ef58a06b0000 - {e=>1,n=>6,a=>-2,m=>1,d=>0,j=>0,l=>6,c=>1,k=>68,h=>6,b=>2,g=>4,f=>-3,o=>139,i=>1} feff0a52040000000e00440e068b0000 feff0a52040000000e00440e068b0000 feff0a52040000000e00440e068b0000 fffe441a80000000c40044c4c08b0000 feff0a52040000000e00440e068b0000 feff0a52040000000e00440e068b0000 fffe441a80000000c40044c4c08b0000 feff0a52040000000e00440e068b0000 fffe441a80000000c40044c4c08b0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; }; - {a=>109,b=>7} 6d00000007000000 6d00000007000000 6d00000007000000 0000006de0000000 6d00000007000000 6d00000007000000 0000006de0000000 6d00000007000000 0000006de0000000 - {a=>-103,b=>4} 99ffffff04000000 99ffffff04000000 99ffffff04000000 ffffff9980000000 99ffffff04000000 99ffffff04000000 ffffff9980000000 99ffffff04000000 ffffff9980000000 - {a=>111,b=>4} 6f00000004000000 6f00000004000000 6f00000004000000 0000006f80000000 6f00000004000000 6f00000004000000 0000006f80000000 6f00000004000000 0000006f80000000 - {a=>-58,b=>4} c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 ffffffc680000000 c6ffffff04000000 c6ffffff04000000 ffffffc680000000 c6ffffff04000000 ffffffc680000000 - {a=>117,b=>4} 7500000004000000 7500000004000000 7500000004000000 0000007580000000 7500000004000000 7500000004000000 0000007580000000 7500000004000000 0000007580000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>54,b=>7} 3600000027000000 3600000027000000 3600000027000000 00000036f0000000 3600000027000000 3600000027000000 00000036f0000000 3600000027000000 00000036f0000000 - {c=>-4,a=>-26,b=>7} e6ffffff27000000 e6ffffff27000000 e6ffffff27000000 ffffffe6f0000000 e6ffffff27000000 e6ffffff27000000 ffffffe6f0000000 e6ffffff27000000 ffffffe6f0000000 - {c=>1,a=>35,b=>7} 230000000f000000 230000000f000000 230000000f000000 00000023e4000000 230000000f000000 230000000f000000 00000023e4000000 230000000f000000 00000023e4000000 - {c=>-3,a=>59,b=>0} 3b00000028000000 3b00000028000000 3b00000028000000 0000003b14000000 3b00000028000000 3b00000028000000 0000003b14000000 3b00000028000000 0000003b14000000 - {c=>-3,a=>70,b=>2} 460000002a000000 460000002a000000 460000002a000000 0000004654000000 460000002a000000 460000002a000000 0000004654000000 460000002a000000 0000004654000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-61,b=>4,d=>2} c3ffffffa4000000 c3ffffffa4000000 c3ffffffa4000000 ffffffc391000000 c3ffffffa4000000 c3ffffffa4000000 ffffffc391000000 c3ffffffa4000000 ffffffc391000000 - {c=>-3,a=>79,b=>5,d=>3} 4f000000ed000000 4f000000ed000000 4f000000ed000000 0000004fb5800000 4f000000ed000000 4f000000ed000000 0000004fb5800000 4f000000ed000000 0000004fb5800000 - {c=>-3,a=>-113,b=>0,d=>-3} 8fffffff68010000 8fffffff68010000 8fffffff68010000 ffffff8f16800000 8fffffff68010000 8fffffff68010000 ffffff8f16800000 8fffffff68010000 ffffff8f16800000 - {c=>-3,a=>-20,b=>5,d=>3} ecffffffed000000 ecffffffed000000 ecffffffed000000 ffffffecb5800000 ecffffffed000000 ecffffffed000000 ffffffecb5800000 ecffffffed000000 ffffffecb5800000 - {c=>-1,a=>84,b=>7,d=>-3} 540000007f010000 540000007f010000 540000007f010000 00000054fe800000 540000007f010000 540000007f010000 00000054fe800000 540000007f010000 00000054fe800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>0,a=>-47,b=>6,d=>-1} d1ffffffc6090000 d1ffffffc6090000 d1ffffffc6090000 ffffffd1c3c00000 d1ffffffc6090000 d1ffffffc6090000 ffffffd1c3c00000 d1ffffffc6090000 ffffffd1c3c00000 - {e=>3,c=>1,a=>-93,b=>5,d=>-3} a3ffffff4d070000 a3ffffff4d070000 a3ffffff4d070000 ffffffa3a6b00000 a3ffffff4d070000 a3ffffff4d070000 ffffffa3a6b00000 a3ffffff4d070000 ffffffa3a6b00000 - {e=>1,c=>3,a=>123,b=>0,d=>-1} 7b000000d8030000 7b000000d8030000 7b000000d8030000 0000007b0f900000 7b000000d8030000 7b000000d8030000 0000007b0f900000 7b000000d8030000 0000007b0f900000 - {e=>1,c=>-1,a=>-36,b=>7,d=>3} dcffffffff020000 dcffffffff020000 dcffffffff020000 ffffffdcfd900000 dcffffffff020000 dcffffffff020000 ffffffdcfd900000 dcffffffff020000 ffffffdcfd900000 - {e=>2,c=>0,a=>-51,b=>2,d=>1} cdffffff42040000 cdffffff42040000 cdffffff42040000 ffffffcd40a00000 cdffffff42040000 cdffffff42040000 ffffffcd40a00000 cdffffff42040000 ffffffcd40a00000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>-3,a=>54,b=>4,d=>-3,f=>1} 360000006c1d0000 360000006c1d0000 360000006c1d0000 0000003696e20000 360000006c1d0000 360000006c1d0000 0000003696e20000 360000006c1d0000 0000003696e20000 - {e=>4,c=>2,a=>53,b=>2,d=>-4,f=>0} 3500000012090000 3500000012090000 3500000012090000 000000354a400000 3500000012090000 3500000012090000 000000354a400000 3500000012090000 000000354a400000 - {e=>3,c=>1,a=>-32,b=>6,d=>2,f=>1} e0ffffff8e160000 e0ffffff8e160000 e0ffffff8e160000 ffffffe0c5320000 e0ffffff8e160000 e0ffffff8e160000 ffffffe0c5320000 e0ffffff8e160000 ffffffe0c5320000 - {e=>4,c=>-4,a=>57,b=>1,d=>-1,f=>-4} 39000000e1490000 39000000e1490000 39000000e1490000 0000003933c80000 39000000e1490000 39000000e1490000 0000003933c80000 39000000e1490000 0000003933c80000 - {e=>2,c=>-2,a=>-128,b=>2,d=>0,f=>-2} 80ffffff32640000 80ffffff32640000 80ffffff32640000 ffffff80582c0000 80ffffff32640000 80ffffff32640000 ffffff80582c0000 80ffffff32640000 ffffff80582c0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>7,c=>-2,a=>-88,g=>0,b=>2,d=>3,f=>-4} a8fffffff24e0000 a8fffffff24e0000 a8fffffff24e0000 ffffffa859f80000 a8fffffff24e0000 a8fffffff24e0000 ffffffa859f80000 a8fffffff24e0000 ffffffa859f80000 - {e=>5,c=>-3,a=>90,g=>6,b=>2,d=>-1,f=>1} 5a000000ea1b0300 5a000000ea1b0300 5a000000ea1b0300 0000005a57d38000 5a000000ea1b0300 5a000000ea1b0300 0000005a57d38000 5a000000ea1b0300 0000005a57d38000 - {e=>4,c=>3,a=>68,g=>6,b=>2,d=>-1,f=>-3} 44000000da590300 44000000da590300 44000000da590300 000000444fcb8000 44000000da590300 44000000da590300 000000444fcb8000 44000000da590300 000000444fcb8000 - {e=>0,c=>3,a=>54,g=>6,b=>1,d=>-2,f=>2} 3600000099210300 3600000099210300 3600000099210300 000000362f058000 3600000099210300 3600000099210300 000000362f058000 3600000099210300 000000362f058000 - {e=>2,c=>2,a=>45,g=>3,b=>1,d=>2,f=>-4} 2d00000091c40100 2d00000091c40100 2d00000091c40100 0000002d2928c000 2d00000091c40100 2d00000091c40100 0000002d2928c000 2d00000091c40100 0000002d2928c000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>3,c=>2,a=>-87,g=>6,b=>4,d=>0,f=>-1} a9ffffff14760300 a9ffffff14760300 a9ffffff14760300 ffffffa9883f8000 a9ffffff14760300 a9ffffff14760300 ffffffa9883f8000 a9ffffff14760300 ffffffa9883f8000 - {e=>7,c=>-3,a=>103,g=>6,b=>0,d=>2,f=>-4} 67000000a84e0300 67000000a84e0300 67000000a84e0300 0000006715798000 67000000a84e0300 67000000a84e0300 0000006715798000 67000000a84e0300 0000006715798000 - {e=>2,c=>2,a=>-32,g=>2,b=>6,d=>2,f=>-2} e0ffffff96640100 e0ffffff96640100 e0ffffff96640100 ffffffe0c92c8000 e0ffffff96640100 e0ffffff96640100 ffffffe0c92c8000 e0ffffff96640100 ffffffe0c92c8000 - {e=>5,c=>0,a=>122,g=>7,b=>4,d=>-4,f=>1} 7a000000049b0300 7a000000049b0300 7a000000049b0300 0000007a8253c000 7a000000049b0300 7a000000049b0300 0000007a8253c000 7a000000049b0300 0000007a8253c000 - {e=>4,c=>-2,a=>-85,g=>0,b=>0,d=>-3,f=>-3} abffffff70590000 abffffff70590000 abffffff70590000 ffffffab1aca0000 abffffff70590000 abffffff70590000 ffffffab1aca0000 abffffff70590000 ffffffab1aca0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>2,a=>-79,d=>-4,c=>2,h=>5,b=>0,g=>4,f=>-4} b1ffffff1045020005000000 b1ffffff1045020005000000 b1ffffff1045020005000000 ffffffb10a290000a0000000 b1ffffff1045020005000000 b1ffffff1045020005000000 ffffffb10a290000a0000000 b1ffffff1045020005000000 ffffffb10a290000a0000000 - {e=>1,a=>61,d=>1,c=>-2,h=>7,b=>2,g=>4,f=>-3} 3d0000007252020007000000 3d0000007252020007000000 3d0000007252020007000000 0000003d589b0000e0000000 3d0000007252020007000000 3d0000007252020007000000 0000003d589b0000e0000000 3d0000007252020007000000 0000003d589b0000e0000000 - {e=>7,a=>-36,d=>3,c=>-2,h=>0,b=>2,g=>0,f=>-1} dcfffffff27e000000000000 dcfffffff27e000000000000 dcfffffff27e000000000000 ffffffdc59fe000000000000 dcfffffff27e000000000000 dcfffffff27e000000000000 ffffffdc59fe000000000000 dcfffffff27e000000000000 ffffffdc59fe000000000000 - {e=>3,a=>-11,d=>-2,c=>-4,h=>2,b=>6,g=>5,f=>3} f5ffffffa6b7020002000000 f5ffffffa6b7020002000000 f5ffffffa6b7020002000000 fffffff5d337400040000000 f5ffffffa6b7020002000000 f5ffffffa6b7020002000000 fffffff5d337400040000000 f5ffffffa6b7020002000000 fffffff5d337400040000000 - {e=>7,a=>-10,d=>1,c=>-3,h=>4,b=>7,g=>0,f=>3} f6ffffff6f3e000004000000 f6ffffff6f3e000004000000 f6ffffff6f3e000004000000 fffffff6f4f6000080000000 f6ffffff6f3e000004000000 f6ffffff6f3e000004000000 fffffff6f4f6000080000000 f6ffffff6f3e000004000000 fffffff6f4f6000080000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>32,d=>-2,c=>1,h=>7,b=>7,g=>0,f=>1,i=>3} 200000008f1d00001f000000 200000008f1d00001f000000 200000008f1d00001f000000 00000020e7620000ec000000 200000008f1d00001f000000 200000008f1d00001f000000 00000020e7620000ec000000 200000008f1d00001f000000 00000020e7620000ec000000 - {e=>7,a=>-98,d=>-3,c=>3,h=>1,b=>1,g=>1,f=>-1,i=>1} 9effffff59ff000009000000 9effffff59ff000009000000 9effffff59ff000009000000 ffffff9e2efe400024000000 9effffff59ff000009000000 9effffff59ff000009000000 ffffff9e2efe400024000000 9effffff59ff000009000000 ffffff9e2efe400024000000 - {e=>0,a=>-83,d=>-2,c=>-4,h=>7,b=>5,g=>5,f=>-4,i=>1} adffffffa5c102000f000000 adffffffa5c102000f000000 adffffffa5c102000f000000 ffffffadb3094000e4000000 adffffffa5c102000f000000 adffffffa5c102000f000000 ffffffadb3094000e4000000 adffffffa5c102000f000000 ffffffadb3094000e4000000 - {e=>6,a=>-52,d=>-4,c=>-4,h=>5,b=>5,g=>0,f=>-1,i=>-2} ccffffff257d000035000000 ccffffff257d000035000000 ccffffff257d000035000000 ffffffccb26e0000b8000000 ccffffff257d000035000000 ccffffff257d000035000000 ffffffccb26e0000b8000000 ccffffff257d000035000000 ffffffccb26e0000b8000000 - {e=>4,a=>123,d=>2,c=>0,h=>6,b=>7,g=>2,f=>-1,i=>0} 7b0000008778010006000000 7b0000008778010006000000 7b0000008778010006000000 0000007be14e8000c0000000 7b0000008778010006000000 7b0000008778010006000000 0000007be14e8000c0000000 7b0000008778010006000000 0000007be14e8000c0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>62,d=>-1,j=>3,c=>-2,h=>0,b=>7,g=>2,f=>1,i=>-3} 3e000000f7170100e8000000 3e000000f7170100e8000000 3e000000f7170100e8000000 0000003efbb2800015800000 3e000000f7170100e8000000 3e000000f7170100e8000000 0000003efbb2800015800000 3e000000f7170100e8000000 0000003efbb2800015800000 - {e=>6,a=>-59,d=>2,j=>5,c=>1,h=>5,b=>5,g=>7,f=>3,i=>0} c5ffffff8dbc030045010000 c5ffffff8dbc030045010000 c5ffffff8dbc030045010000 ffffffc5a567c000a2800000 c5ffffff8dbc030045010000 c5ffffff8dbc030045010000 ffffffc5a567c000a2800000 c5ffffff8dbc030045010000 ffffffc5a567c000a2800000 - {e=>6,a=>76,d=>0,j=>7,c=>2,h=>1,b=>4,g=>2,f=>1,i=>-1} 4c000000141c0100f9010000 4c000000141c0100f9010000 4c000000141c0100f9010000 0000004c886280003f800000 4c000000141c0100f9010000 4c000000141c0100f9010000 0000004c886280003f800000 4c000000141c0100f9010000 0000004c886280003f800000 - {e=>6,a=>-74,d=>0,j=>1,c=>1,h=>5,b=>6,g=>7,f=>3,i=>-1} b6ffffff0ebc03007d000000 b6ffffff0ebc03007d000000 b6ffffff0ebc03007d000000 ffffffb6c467c000bc800000 b6ffffff0ebc03007d000000 b6ffffff0ebc03007d000000 ffffffb6c467c000bc800000 b6ffffff0ebc03007d000000 ffffffb6c467c000bc800000 - {e=>0,a=>-90,d=>-4,j=>4,c=>3,h=>5,b=>5,g=>2,f=>-2,i=>0} a6ffffff1d61010005010000 a6ffffff1d61010005010000 a6ffffff1d61010005010000 ffffffa6ae0c8000a2000000 a6ffffff1d61010005010000 a6ffffff1d61010005010000 ffffffa6ae0c8000a2000000 a6ffffff1d61010005010000 ffffffa6ae0c8000a2000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>-103,d=>-1,j=>0,c=>1,k=>-31,h=>7,b=>0,g=>1,f=>1,i=>-3} 99ffffffc89d00002f00e100 99ffffffc89d00002f00e100 99ffffffc89d00002f00e100 ffffff9907e24000f400e100 99ffffffc89d00002f00e100 99ffffffc89d00002f00e100 ffffff9907e24000f400e100 99ffffffc89d00002f00e100 ffffff9907e24000f400e100 - {e=>5,a=>-2,d=>-1,j=>6,c=>0,k=>78,h=>6,b=>1,g=>4,f=>3,i=>3} feffffffc13b02009e014e00 feffffffc13b02009e014e00 feffffffc13b02009e014e00 fffffffe23d70000cf004e00 feffffffc13b02009e014e00 feffffffc13b02009e014e00 fffffffe23d70000cf004e00 feffffffc13b02009e014e00 fffffffe23d70000cf004e00 - {e=>3,a=>-110,d=>-1,j=>1,c=>2,k=>-117,h=>6,b=>1,g=>6,f=>1,i=>2} 92ffffffd117030056008b00 92ffffffd117030056008b00 92ffffffd117030056008b00 ffffff922bb38000c8808b00 92ffffffd117030056008b00 92ffffffd117030056008b00 ffffff922bb38000c8808b00 92ffffffd117030056008b00 ffffff922bb38000c8808b00 - {e=>3,a=>-42,d=>-2,j=>0,c=>-2,k=>-72,h=>4,b=>5,g=>4,f=>-4,i=>1} d6ffffffb54702000c00b800 d6ffffffb54702000c00b800 d6ffffffb54702000c00b800 ffffffd6bb3900008400b800 d6ffffffb54702000c00b800 d6ffffffb54702000c00b800 ffffffd6bb3900008400b800 d6ffffffb54702000c00b800 ffffffd6bb3900008400b800 - {e=>1,a=>117,d=>-4,j=>1,c=>-3,k=>97,h=>4,b=>0,g=>1,f=>2,i=>-3} 7500000028a300006c006100 7500000028a300006c006100 7500000028a300006c006100 000000751614400094806100 7500000028a300006c006100 7500000028a300006c006100 000000751614400094806100 7500000028a300006c006100 000000751614400094806100 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>3,a=>-57,d=>2,j=>6,l=>1,c=>0,k=>73,h=>5,b=>5,g=>3,f=>1,i=>-3} c7ffffff85960100ad014901 c7ffffff85960100ad014901 c7ffffff85960100ad014901 ffffffc7a132c000b7004920 c7ffffff85960100ad014901 c7ffffff85960100ad014901 ffffffc7a132c000b7004920 c7ffffff85960100ad014901 ffffffc7a132c000b7004920 - {e=>6,a=>-107,d=>1,j=>5,l=>4,c=>-2,k=>25,h=>2,b=>1,g=>3,f=>3,i=>3} 95ffffff71bc01005a011904 95ffffff71bc01005a011904 95ffffff71bc01005a011904 ffffff9538e6c0004e801980 95ffffff71bc01005a011904 95ffffff71bc01005a011904 ffffff9538e6c0004e801980 95ffffff71bc01005a011904 ffffff9538e6c0004e801980 - {e=>2,a=>108,d=>-3,j=>1,l=>5,c=>-3,k=>74,h=>4,b=>7,g=>4,f=>0,i=>-3} 6c0000006f0502006c004a05 6c0000006f0502006c004a05 6c0000006f0502006c004a05 0000006cf6a1000094804aa0 6c0000006f0502006c004a05 6c0000006f0502006c004a05 0000006cf6a1000094804aa0 6c0000006f0502006c004a05 0000006cf6a1000094804aa0 - {e=>7,a=>-5,d=>3,j=>2,l=>7,c=>-3,k=>54,h=>0,b=>1,g=>0,f=>-2,i=>-1} fbffffffe96e0000b8003607 fbffffffe96e0000b8003607 fbffffffe96e0000b8003607 fffffffb35fc00001d0036e0 fbffffffe96e0000b8003607 fbffffffe96e0000b8003607 fffffffb35fc00001d0036e0 fbffffffe96e0000b8003607 fffffffb35fc00001d0036e0 - {e=>0,a=>-52,d=>2,j=>2,l=>0,c=>0,k=>118,h=>7,b=>0,g=>4,f=>1,i=>3} ccffffff801002009f007600 ccffffff801002009f007600 ccffffff801002009f007600 ffffffcc01030000ed007600 ccffffff801002009f007600 ccffffff801002009f007600 ffffffcc01030000ed007600 ccffffff801002009f007600 ffffffcc01030000ed007600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>-84,m=>1,d=>0,j=>1,l=>3,c=>-2,k=>78,h=>2,b=>4,g=>7,f=>2,i=>-3} acffffff34a603006a004e0b acffffff34a603006a004e0b acffffff34a603006a004e0b ffffffac9835c00054804e64 acffffff34a603006a004e0b acffffff34a603006a004e0b ffffffac9835c00054804e64 acffffff34a603006a004e0b ffffffac9835c00054804e64 - {e=>7,a=>80,m=>-4,d=>0,j=>6,l=>1,c=>3,k=>-88,h=>3,b=>1,g=>7,f=>-3,i=>1} 5000000019de03008b01a821 5000000019de03008b01a821 5000000019de03008b01a821 000000502c7bc0006700a830 5000000019de03008b01a821 5000000019de03008b01a821 000000502c7bc0006700a830 5000000019de03008b01a821 000000502c7bc0006700a830 - {e=>6,a=>112,m=>-2,d=>1,j=>3,l=>1,c=>3,k=>69,h=>2,b=>1,g=>4,f=>-1,i=>2} 70000000597c0200d2004531 70000000597c0200d2004531 70000000597c0200d2004531 000000702cef000049804538 70000000597c0200d2004531 70000000597c0200d2004531 000000702cef000049804538 70000000597c0200d2004531 000000702cef000049804538 - {e=>1,a=>110,m=>-1,d=>0,j=>1,l=>3,c=>0,k=>-21,h=>1,b=>4,g=>0,f=>2,i=>1} 6e000000042200004900eb3b 6e000000042200004900eb3b 6e000000042200004900eb3b 0000006e801400002480eb7c 6e000000042200004900eb3b 6e000000042200004900eb3b 0000006e801400002480eb7c 6e000000042200004900eb3b 0000006e801400002480eb7c - {e=>7,a=>35,m=>-2,d=>0,j=>1,l=>1,c=>3,k=>36,h=>3,b=>4,g=>4,f=>-4,i=>-3} 230000001c4e02006b002431 230000001c4e02006b002431 230000001c4e02006b002431 000000238c79000074802438 230000001c4e02006b002431 230000001c4e02006b002431 000000238c79000074802438 230000001c4e02006b002431 000000238c79000074802438 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>2,n=>0,a=>-6,m=>3,d=>0,j=>7,l=>2,c=>-4,k=>-55,h=>7,b=>3,g=>5,f=>2,i=>-2} faffffff23a40200f701c91a00000000 faffffff23a40200f701c91a00000000 faffffff23a40200f701c91a00000000 fffffffa70254000fb80c94c00000000 faffffff23a40200f701c91a00000000 faffffff23a40200f701c91a00000000 fffffffa70254000fb80c94c00000000 faffffff23a40200f701c91a00000000 fffffffa70254000fb80c94c00000000 - {e=>1,n=>7,a=>-87,m=>0,d=>0,j=>6,l=>4,c=>-2,k=>24,h=>7,b=>2,g=>1,f=>-3,i=>-3} a9ffffff32d20000af01180407000000 a9ffffff32d20000af01180407000000 a9ffffff32d20000af01180407000000 ffffffa9581a4000f7001880e0000000 a9ffffff32d20000af01180407000000 a9ffffff32d20000af01180407000000 ffffffa9581a4000f7001880e0000000 a9ffffff32d20000af01180407000000 ffffffa9581a4000f7001880e0000000 - {e=>4,n=>4,a=>-107,m=>-1,d=>-2,j=>6,l=>0,c=>1,k=>-90,h=>5,b=>5,g=>2,f=>-4,i=>-2} 95ffffff8d490100b501a63804000000 95ffffff8d490100b501a63804000000 95ffffff8d490100b501a63804000000 ffffff95a7488000bb00a61c80000000 95ffffff8d490100b501a63804000000 95ffffff8d490100b501a63804000000 ffffff95a7488000bb00a61c80000000 95ffffff8d490100b501a63804000000 ffffff95a7488000bb00a61c80000000 - {e=>1,n=>5,a=>-24,m=>-2,d=>-4,j=>6,l=>7,c=>1,k=>-102,h=>1,b=>5,g=>0,f=>-2,i=>0} e8ffffff0d63000081019a3705000000 e8ffffff0d63000081019a3705000000 e8ffffff0d63000081019a3705000000 ffffffe8a61c000023009af8a0000000 e8ffffff0d63000081019a3705000000 e8ffffff0d63000081019a3705000000 ffffffe8a61c000023009af8a0000000 e8ffffff0d63000081019a3705000000 ffffffe8a61c000023009af8a0000000 - {e=>0,n=>4,a=>127,m=>-2,d=>-1,j=>7,l=>4,c=>-4,k=>68,h=>0,b=>1,g=>4,f=>-4,i=>-3} 7f000000e1410200e801443404000000 7f000000e1410200e801443404000000 7f000000e1410200e801443404000000 0000007f338900001780449880000000 7f000000e1410200e801443404000000 7f000000e1410200e801443404000000 0000007f338900001780449880000000 7f000000e1410200e801443404000000 0000007f338900001780449880000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>4,a=>47,m=>3,d=>0,j=>7,l=>0,c=>3,k=>-117,h=>2,b=>3,g=>0,f=>-4,o=>238,i=>-3} 2f0000001b440000ea018b1804ee0000 2f0000001b440000ea018b1804ee0000 2f0000001b440000ea018b1804ee0000 0000002f6c28000057808b0c80ee0000 2f0000001b440000ea018b1804ee0000 2f0000001b440000ea018b1804ee0000 0000002f6c28000057808b0c80ee0000 2f0000001b440000ea018b1804ee0000 0000002f6c28000057808b0c80ee0000 - {e=>1,n=>4,a=>-56,m=>-3,d=>0,j=>0,l=>3,c=>-3,k=>-65,h=>0,b=>6,g=>7,f=>-2,o=>157,i=>3} c8ffffff2ee203001800bf2b049d0000 c8ffffff2ee203001800bf2b049d0000 c8ffffff2ee203001800bf2b049d0000 ffffffc8d41dc0000c00bf74809d0000 c8ffffff2ee203001800bf2b049d0000 c8ffffff2ee203001800bf2b049d0000 ffffffc8d41dc0000c00bf74809d0000 c8ffffff2ee203001800bf2b049d0000 ffffffc8d41dc0000c00bf74809d0000 - {e=>6,n=>5,a=>44,m=>1,d=>1,j=>3,l=>1,c=>1,k=>57,h=>1,b=>7,g=>4,f=>2,o=>68,i=>2} 2c0000004f2c0200d100390905440000 2c0000004f2c0200d100390905440000 2c0000004f2c0200d100390905440000 0000002ce4e5000029803924a0440000 2c0000004f2c0200d100390905440000 2c0000004f2c0200d100390905440000 0000002ce4e5000029803924a0440000 2c0000004f2c0200d100390905440000 0000002ce4e5000029803924a0440000 - {e=>2,n=>6,a=>-122,m=>0,d=>0,j=>6,l=>6,c=>3,k=>87,h=>1,b=>2,g=>7,f=>2,o=>182,i=>3} 86ffffff1aa403009901570606b60000 86ffffff1aa403009901570606b60000 86ffffff1aa403009901570606b60000 ffffff864c25c0002f0057c0c0b60000 86ffffff1aa403009901570606b60000 86ffffff1aa403009901570606b60000 ffffff864c25c0002f0057c0c0b60000 86ffffff1aa403009901570606b60000 ffffff864c25c0002f0057c0c0b60000 - {e=>6,n=>4,a=>-93,m=>0,d=>-3,j=>5,l=>2,c=>2,k=>104,h=>6,b=>0,g=>1,f=>-3,o=>134,i=>-1} a3ffffff50dd00007e01680204860000 a3ffffff50dd00007e01680204860000 a3ffffff50dd00007e01680204860000 ffffffa30aea4000de80684080860000 a3ffffff50dd00007e01680204860000 a3ffffff50dd00007e01680204860000 ffffffa30aea4000de80684080860000 a3ffffff50dd00007e01680204860000 ffffffa30aea4000de80684080860000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; }; - {a=>92,b=>7} 5c00000007000000 5c000000000000000700000000000000 5c000000000000000700000000000000 0000005ce0000000 5c00000007000000 5c00000007000000 000000000000005ce000000000000000 5c00000007000000 0000005ce0000000 - {a=>73,b=>2} 4900000002000000 49000000000000000200000000000000 49000000000000000200000000000000 0000004940000000 4900000002000000 4900000002000000 00000000000000494000000000000000 4900000002000000 0000004940000000 - {a=>-17,b=>2} efffffff02000000 efffffffffffffff0200000000000000 efffffffffffffff0200000000000000 ffffffef40000000 efffffff02000000 efffffff02000000 ffffffffffffffef4000000000000000 efffffff02000000 ffffffef40000000 - {a=>6,b=>0} 0600000000000000 06000000000000000000000000000000 06000000000000000000000000000000 0000000600000000 0600000000000000 0600000000000000 00000000000000060000000000000000 0600000000000000 0000000600000000 - {a=>-12,b=>7} f4ffffff07000000 f4ffffffffffffff0700000000000000 f4ffffffffffffff0700000000000000 fffffff4e0000000 f4ffffff07000000 f4ffffff07000000 fffffffffffffff4e000000000000000 f4ffffff07000000 fffffff4e0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>5,b=>1} 0500000001000000 05000000000000000100000000000000 05000000000000000100000000000000 0000000520000000 0500000001000000 0500000001000000 00000000000000052000000000000000 0500000001000000 0000000520000000 - {c=>3,a=>54,b=>3} 360000001b000000 36000000000000001b00000000000000 36000000000000001b00000000000000 000000366c000000 360000001b000000 360000001b000000 00000000000000366c00000000000000 360000001b000000 000000366c000000 - {c=>3,a=>58,b=>0} 3a00000018000000 3a000000000000001800000000000000 3a000000000000001800000000000000 0000003a0c000000 3a00000018000000 3a00000018000000 000000000000003a0c00000000000000 3a00000018000000 0000003a0c000000 - {c=>2,a=>-6,b=>6} faffffff16000000 faffffffffffffff1600000000000000 faffffffffffffff1600000000000000 fffffffac8000000 faffffff16000000 faffffff16000000 fffffffffffffffac800000000000000 faffffff16000000 fffffffac8000000 - {c=>1,a=>-30,b=>2} e2ffffff0a000000 e2ffffffffffffff0a00000000000000 e2ffffffffffffff0a00000000000000 ffffffe244000000 e2ffffff0a000000 e2ffffff0a000000 ffffffffffffffe24400000000000000 e2ffffff0a000000 ffffffe244000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>3,a=>18,b=>6,d=>1} 120000005e000000 12000000000000005e00000000000000 12000000000000005e00000000000000 00000012cc800000 120000005e000000 120000005e000000 0000000000000012cc80000000000000 120000005e000000 00000012cc800000 - {c=>-1,a=>-92,b=>2,d=>-2} a4ffffffba010000 a4ffffffffffffffba01000000000000 a4ffffffffffffffba01000000000000 ffffffa45f000000 a4ffffffba010000 a4ffffffba010000 ffffffffffffffa45f00000000000000 a4ffffffba010000 ffffffa45f000000 - {c=>-1,a=>-128,b=>5,d=>3} 80fffffffd000000 80fffffffffffffffd00000000000000 80fffffffffffffffd00000000000000 ffffff80bd800000 80fffffffd000000 80fffffffd000000 ffffffffffffff80bd80000000000000 80fffffffd000000 ffffff80bd800000 - {c=>-4,a=>-90,b=>0,d=>0} a6ffffff20000000 a6ffffffffffffff2000000000000000 a6ffffffffffffff2000000000000000 ffffffa610000000 a6ffffff20000000 a6ffffff20000000 ffffffffffffffa61000000000000000 a6ffffff20000000 ffffffa610000000 - {c=>2,a=>-12,b=>2,d=>2} f4ffffff92000000 f4ffffffffffffff9200000000000000 f4ffffffffffffff9200000000000000 fffffff449000000 f4ffffff92000000 f4ffffff92000000 fffffffffffffff44900000000000000 f4ffffff92000000 fffffff449000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-2,a=>-52,b=>1,d=>-2} ccffffffb1090000 ccffffffffffffffb109000000000000 ccffffffffffffffb109000000000000 ffffffcc3b400000 ccffffffb1090000 ccffffffb1090000 ffffffffffffffcc3b40000000000000 ccffffffb1090000 ffffffcc3b400000 - {e=>3,c=>2,a=>-5,b=>6,d=>0} fbffffff16060000 fbffffffffffffff1606000000000000 fbffffffffffffff1606000000000000 fffffffbc8300000 fbffffff16060000 fbffffff16060000 fffffffffffffffbc830000000000000 fbffffff16060000 fffffffbc8300000 - {e=>5,c=>-4,a=>51,b=>1,d=>-2} 33000000a10b0000 3300000000000000a10b000000000000 3300000000000000a10b000000000000 0000003333500000 33000000a10b0000 33000000a10b0000 00000000000000333350000000000000 33000000a10b0000 0000003333500000 - {e=>2,c=>2,a=>-120,b=>6,d=>-4} 88ffffff16050000 88ffffffffffffff1605000000000000 88ffffffffffffff1605000000000000 ffffff88ca200000 88ffffff16050000 88ffffff16050000 ffffffffffffff88ca20000000000000 88ffffff16050000 ffffff88ca200000 - {e=>5,c=>1,a=>-11,b=>3,d=>2} f5ffffff8b0a0000 f5ffffffffffffff8b0a000000000000 f5ffffffffffffff8b0a000000000000 fffffff565500000 f5ffffff8b0a0000 f5ffffff8b0a0000 fffffffffffffff56550000000000000 f5ffffff8b0a0000 fffffff565500000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>-4,a=>-32,b=>4,d=>0,f=>-1} e0ffffff247c0000 e0ffffffffffffff247c000000000000 e0ffffffffffffff247c000000000000 ffffffe0906e0000 e0ffffff247c0000 e0ffffff247c0000 ffffffffffffffe0906e000000000000 e0ffffff247c0000 ffffffe0906e0000 - {e=>5,c=>2,a=>50,b=>1,d=>2,f=>1} 32000000911a0000 3200000000000000911a000000000000 3200000000000000911a000000000000 0000003229520000 32000000911a0000 32000000911a0000 00000000000000322952000000000000 32000000911a0000 0000003229520000 - {e=>7,c=>-2,a=>106,b=>5,d=>-4,f=>1} 6a000000351f0000 6a00000000000000351f000000000000 6a00000000000000351f000000000000 0000006aba720000 6a000000351f0000 6a000000351f0000 000000000000006aba72000000000000 6a000000351f0000 0000006aba720000 - {e=>4,c=>-4,a=>-26,b=>5,d=>-3,f=>-4} e6ffffff65490000 e6ffffffffffffff6549000000000000 e6ffffffffffffff6549000000000000 ffffffe6b2c80000 e6ffffff65490000 e6ffffff65490000 ffffffffffffffe6b2c8000000000000 e6ffffff65490000 ffffffe6b2c80000 - {e=>6,c=>1,a=>30,b=>1,d=>-3,f=>1} 1e000000491d0000 1e00000000000000491d000000000000 1e00000000000000491d000000000000 0000001e26e20000 1e000000491d0000 1e000000491d0000 000000000000001e26e2000000000000 1e000000491d0000 0000001e26e20000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>2,c=>-3,a=>34,g=>7,b=>0,d=>0,f=>-2} 2200000028e40300 220000000000000028e4030000000000 220000000000000028e4030000000000 00000022142dc000 2200000028e40300 2200000028e40300 0000000000000022142dc00000000000 2200000028e40300 00000022142dc000 - {e=>7,c=>1,a=>-121,g=>0,b=>5,d=>0,f=>-2} 87ffffff0d6e0000 87ffffffffffffff0d6e000000000000 87ffffffffffffff0d6e000000000000 ffffff87a47c0000 87ffffff0d6e0000 87ffffff0d6e0000 ffffffffffffff87a47c000000000000 87ffffff0d6e0000 ffffff87a47c0000 - {e=>3,c=>-3,a=>0,g=>1,b=>0,d=>2,f=>-1} 00000000a8f60000 0000000000000000a8f6000000000000 0000000000000000a8f6000000000000 00000000153e4000 00000000a8f60000 00000000a8f60000 0000000000000000153e400000000000 00000000a8f60000 00000000153e4000 - {e=>5,c=>-3,a=>-126,g=>5,b=>5,d=>-3,f=>3} 82ffffff6dbb0200 82ffffffffffffff6dbb020000000000 82ffffffffffffff6dbb020000000000 ffffff82b6d74000 82ffffff6dbb0200 82ffffff6dbb0200 ffffffffffffff82b6d7400000000000 82ffffff6dbb0200 ffffff82b6d74000 - {e=>0,c=>2,a=>-72,g=>7,b=>0,d=>3,f=>3} b8ffffffd0b00300 b8ffffffffffffffd0b0030000000000 b8ffffffffffffffd0b0030000000000 ffffffb80987c000 b8ffffffd0b00300 b8ffffffd0b00300 ffffffffffffffb80987c00000000000 b8ffffffd0b00300 ffffffb80987c000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-1,a=>16,g=>1,b=>3,d=>-4,f=>-4} 100000003bc30000 10000000000000003bc3000000000000 10000000000000003bc3000000000000 000000107e184000 100000003bc30000 100000003bc30000 00000000000000107e18400000000000 100000003bc30000 000000107e184000 - {e=>5,c=>-2,a=>-124,g=>2,b=>1,d=>3,f=>3} 84fffffff13a0100 84fffffffffffffff13a010000000000 84fffffffffffffff13a010000000000 ffffff8439d68000 84fffffff13a0100 84fffffff13a0100 ffffffffffffff8439d6800000000000 84fffffff13a0100 ffffff8439d68000 - {e=>3,c=>-4,a=>-30,g=>6,b=>6,d=>0,f=>-3} e2ffffff26560300 e2ffffffffffffff2656030000000000 e2ffffffffffffff2656030000000000 ffffffe2d03b8000 e2ffffff26560300 e2ffffff26560300 ffffffffffffffe2d03b800000000000 e2ffffff26560300 ffffffe2d03b8000 - {e=>5,c=>-4,a=>101,g=>4,b=>2,d=>2,f=>2} 65000000a22a0200 6500000000000000a22a020000000000 6500000000000000a22a020000000000 0000006551550000 65000000a22a0200 65000000a22a0200 00000000000000655155000000000000 65000000a22a0200 0000006551550000 - {e=>0,c=>1,a=>-30,g=>0,b=>0,d=>-1,f=>-1} e2ffffffc8710000 e2ffffffffffffffc871000000000000 e2ffffffffffffffc871000000000000 ffffffe2078e0000 e2ffffffc8710000 e2ffffffc8710000 ffffffffffffffe2078e000000000000 e2ffffffc8710000 ffffffe2078e0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>-63,d=>-4,c=>-3,h=>4,b=>0,g=>7,f=>-1} c1ffffff28f7030004000000 c1ffffffffffffff28f7030004000000 c1ffffffffffffff28f7030004000000 ffffffc1163fc00080000000 c1ffffff28f7030004000000 c1ffffff28f7030004000000 ffffffffffffffc1163fc00080000000 c1ffffff28f7030004000000 ffffffc1163fc00080000000 - {e=>1,a=>-112,d=>3,c=>0,h=>7,b=>3,g=>1,f=>2} 90ffffffc3a2000007000000 90ffffffffffffffc3a2000007000000 90ffffffffffffffc3a2000007000000 ffffff9061944000e0000000 90ffffffc3a2000007000000 90ffffffc3a2000007000000 ffffffffffffff9061944000e0000000 90ffffffc3a2000007000000 ffffff9061944000e0000000 - {e=>5,a=>-65,d=>-1,c=>2,h=>5,b=>6,g=>4,f=>-2} bfffffffd66b020005000000 bfffffffffffffffd66b020005000000 bfffffffffffffffd66b020005000000 ffffffbfcbdd0000a0000000 bfffffffd66b020005000000 bfffffffd66b020005000000 ffffffffffffffbfcbdd0000a0000000 bfffffffd66b020005000000 ffffffbfcbdd0000a0000000 - {e=>7,a=>63,d=>0,c=>-4,h=>3,b=>5,g=>4,f=>1} 3f000000251e020003000000 3f00000000000000251e020003000000 3f00000000000000251e020003000000 0000003fb073000060000000 3f000000251e020003000000 3f000000251e020003000000 000000000000003fb073000060000000 3f000000251e020003000000 0000003fb073000060000000 - {e=>3,a=>-66,d=>-3,c=>3,h=>4,b=>0,g=>2,f=>-3} beffffff5857010004000000 beffffffffffffff5857010004000000 beffffffffffffff5857010004000000 ffffffbe0eba800080000000 beffffff5857010004000000 beffffff5857010004000000 ffffffffffffffbe0eba800080000000 beffffff5857010004000000 ffffffbe0eba800080000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>0,a=>-44,d=>-1,c=>-2,h=>7,b=>4,g=>5,f=>-3,i=>1} d4fffffff4d102000f000000 d4fffffffffffffff4d102000f000000 d4fffffffffffffff4d102000f000000 ffffffd49b8b4000e4000000 d4fffffff4d102000f000000 d4fffffff4d102000f000000 ffffffffffffffd49b8b4000e4000000 d4fffffff4d102000f000000 ffffffd49b8b4000e4000000 - {e=>2,a=>-106,d=>-4,c=>2,h=>0,b=>5,g=>5,f=>-3,i=>-2} 96ffffff15d5020030000000 96ffffffffffffff15d5020030000000 96ffffffffffffff15d5020030000000 ffffff96aa2b400018000000 96ffffff15d5020030000000 96ffffff15d5020030000000 ffffffffffffff96aa2b400018000000 96ffffff15d5020030000000 ffffff96aa2b400018000000 - {e=>0,a=>127,d=>-4,c=>2,h=>5,b=>2,g=>1,f=>-2,i=>-4} 7f00000012e1000025000000 7f0000000000000012e1000025000000 7f0000000000000012e1000025000000 0000007f4a0c4000b0000000 7f00000012e1000025000000 7f00000012e1000025000000 000000000000007f4a0c4000b0000000 7f00000012e1000025000000 0000007f4a0c4000b0000000 - {e=>2,a=>-89,d=>1,c=>-2,h=>5,b=>4,g=>0,f=>-2,i=>3} a7ffffff746400001d000000 a7ffffffffffffff746400001d000000 a7ffffffffffffff746400001d000000 ffffffa798ac0000ac000000 a7ffffff746400001d000000 a7ffffff746400001d000000 ffffffffffffffa798ac0000ac000000 a7ffffff746400001d000000 ffffffa798ac0000ac000000 - {e=>3,a=>86,d=>2,c=>1,h=>6,b=>4,g=>7,f=>3,i=>-4} 560000008cb6030026000000 56000000000000008cb6030026000000 56000000000000008cb6030026000000 000000568537c000d0000000 560000008cb6030026000000 560000008cb6030026000000 00000000000000568537c000d0000000 560000008cb6030026000000 000000568537c000d0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>2,a=>68,d=>-3,j=>7,c=>-1,h=>6,b=>2,g=>2,f=>-2,i=>-1} 440000007a650100fe010000 44000000000000007a650100fe010000 44000000000000007a650100fe010000 000000445eac8000df800000 440000007a650100fe010000 440000007a650100fe010000 00000000000000445eac8000df800000 440000007a650100fe010000 000000445eac8000df800000 - {e=>5,a=>125,d=>2,j=>0,c=>2,h=>0,b=>0,g=>1,f=>2,i=>3} 7d00000090aa000018000000 7d0000000000000090aa000018000000 7d0000000000000090aa000018000000 0000007d095440000c000000 7d00000090aa000018000000 7d00000090aa000018000000 000000000000007d095440000c000000 7d00000090aa000018000000 0000007d095440000c000000 - {e=>7,a=>-98,d=>-3,j=>3,c=>1,h=>0,b=>2,g=>0,f=>3,i=>2} 9effffff4a3f0000d0000000 9effffffffffffff4a3f0000d0000000 9effffffffffffff4a3f0000d0000000 ffffff9e46f6000009800000 9effffff4a3f0000d0000000 9effffff4a3f0000d0000000 ffffffffffffff9e46f6000009800000 9effffff4a3f0000d0000000 ffffff9e46f6000009800000 - {e=>6,a=>65,d=>-4,j=>2,c=>2,h=>4,b=>4,g=>6,f=>0,i=>-1} 41000000140d0300bc000000 4100000000000000140d0300bc000000 4100000000000000140d0300bc000000 000000418a6180009d000000 41000000140d0300bc000000 41000000140d0300bc000000 00000000000000418a6180009d000000 41000000140d0300bc000000 000000418a6180009d000000 - {e=>4,a=>-43,d=>-4,j=>1,c=>0,h=>7,b=>1,g=>0,f=>1,i=>2} d5ffffff0119000057000000 d5ffffffffffffff0119000057000000 d5ffffffffffffff0119000057000000 ffffffd522420000e8800000 d5ffffff0119000057000000 d5ffffff0119000057000000 ffffffffffffffd522420000e8800000 d5ffffff0119000057000000 ffffffd522420000e8800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>7,a=>86,d=>3,j=>2,c=>0,k=>-13,h=>7,b=>3,g=>7,f=>3,i=>-4} 56000000c3be0300a700f300 5600000000000000c3be0300a700f300 5600000000000000c3be0300a700f300 0000005661f7c000f100f300 56000000c3be0300a700f300 56000000c3be0300a700f300 000000000000005661f7c000f100f300 56000000c3be0300a700f300 0000005661f7c000f100f300 - {e=>5,a=>-12,d=>-3,j=>6,c=>-3,k=>-95,h=>0,b=>6,g=>0,f=>-2,i=>-3} f4ffffff6e6b0000a801a100 f4ffffffffffffff6e6b0000a801a100 f4ffffffffffffff6e6b0000a801a100 fffffff4d6dc00001700a100 f4ffffff6e6b0000a801a100 f4ffffff6e6b0000a801a100 fffffffffffffff4d6dc00001700a100 f4ffffff6e6b0000a801a100 fffffff4d6dc00001700a100 - {e=>6,a=>-124,d=>3,j=>3,c=>-3,k=>50,h=>6,b=>7,g=>2,f=>-1,i=>-1} 84ffffffef7c0100fe003200 84ffffffffffffffef7c0100fe003200 84ffffffffffffffef7c0100fe003200 ffffff84f5ee8000dd803200 84ffffffef7c0100fe003200 84ffffffef7c0100fe003200 ffffffffffffff84f5ee8000dd803200 84ffffffef7c0100fe003200 ffffff84f5ee8000dd803200 - {e=>2,a=>47,d=>0,j=>0,c=>-4,k=>102,h=>3,b=>7,g=>6,f=>-4,i=>2} 2f0000002744030013006600 2f000000000000002744030013006600 2f000000000000002744030013006600 0000002ff029800068006600 2f0000002744030013006600 2f0000002744030013006600 000000000000002ff029800068006600 2f0000002744030013006600 0000002ff029800068006600 - {e=>5,a=>95,d=>0,j=>6,c=>0,k=>66,h=>6,b=>6,g=>6,f=>-4,i=>-4} 5f000000064a0300a6014200 5f00000000000000064a0300a6014200 5f00000000000000064a0300a6014200 0000005fc0598000d3004200 5f000000064a0300a6014200 5f000000064a0300a6014200 000000000000005fc0598000d3004200 5f000000064a0300a6014200 0000005fc0598000d3004200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>7,a=>101,d=>-2,j=>1,l=>0,c=>-3,k=>83,h=>7,b=>0,g=>3,f=>-4,i=>2} 65000000a8cf010057005300 6500000000000000a8cf010057005300 6500000000000000a8cf010057005300 000000651778c000e8805300 65000000a8cf010057005300 65000000a8cf010057005300 00000000000000651778c000e8805300 65000000a8cf010057005300 000000651778c000e8805300 - {e=>7,a=>-82,d=>2,j=>3,l=>2,c=>1,k=>50,h=>0,b=>2,g=>7,f=>-2,i=>-2} aeffffff8aee0300f0003202 aeffffffffffffff8aee0300f0003202 aeffffffffffffff8aee0300f0003202 ffffffae457dc00019803240 aeffffff8aee0300f0003202 aeffffff8aee0300f0003202 ffffffffffffffae457dc00019803240 aeffffff8aee0300f0003202 ffffffae457dc00019803240 - {e=>5,a=>49,d=>-3,j=>1,l=>7,c=>-2,k=>-9,h=>7,b=>5,g=>5,f=>-1,i=>2} 3100000075fb02005700f707 310000000000000075fb02005700f707 310000000000000075fb02005700f707 00000031badf4000e880f7e0 3100000075fb02005700f707 3100000075fb02005700f707 0000000000000031badf4000e880f7e0 3100000075fb02005700f707 00000031badf4000e880f7e0 - {e=>0,a=>-76,d=>3,j=>0,l=>0,c=>-1,k=>-27,h=>7,b=>6,g=>6,f=>-1,i=>-4} b4fffffffe7003002700e500 b4fffffffffffffffe7003002700e500 b4fffffffffffffffe7003002700e500 ffffffb4dd8f8000f000e500 b4fffffffe7003002700e500 b4fffffffe7003002700e500 ffffffffffffffb4dd8f8000f000e500 b4fffffffe7003002700e500 ffffffb4dd8f8000f000e500 - {e=>5,a=>62,d=>2,j=>1,l=>2,c=>-1,k=>-59,h=>5,b=>1,g=>5,f=>-2,i=>-2} 3e000000b9ea02007500c502 3e00000000000000b9ea02007500c502 3e00000000000000b9ea02007500c502 0000003e3d5d4000b880c540 3e000000b9ea02007500c502 3e000000b9ea02007500c502 000000000000003e3d5d4000b880c540 3e000000b9ea02007500c502 0000003e3d5d4000b880c540 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>61,m=>-3,d=>-2,j=>7,l=>1,c=>3,k=>-49,h=>5,b=>0,g=>1,f=>-3,i=>0} 3d00000098df0000c501cf29 3d0000000000000098df0000c501cf29 3d0000000000000098df0000c501cf29 0000003d0f7a4000a380cf34 3d00000098df0000c501cf29 3d00000098df0000c501cf29 000000000000003d0f7a4000a380cf34 3d00000098df0000c501cf29 0000003d0f7a4000a380cf34 - {e=>6,a=>115,m=>-1,d=>0,j=>4,l=>2,c=>-2,k=>32,h=>7,b=>4,g=>3,f=>-2,i=>-2} 7300000034ec01003701203a 730000000000000034ec01003701203a 730000000000000034ec01003701203a 00000073986cc000fa00205c 7300000034ec01003701203a 7300000034ec01003701203a 0000000000000073986cc000fa00205c 7300000034ec01003701203a 00000073986cc000fa00205c - {e=>7,a=>74,m=>3,d=>-1,j=>6,l=>5,c=>-1,k=>34,h=>3,b=>4,g=>4,f=>2,i=>2} 4a000000fc2f02009301221d 4a00000000000000fc2f02009301221d 4a00000000000000fc2f02009301221d 0000004a9ff500006b0022ac 4a000000fc2f02009301221d 4a000000fc2f02009301221d 000000000000004a9ff500006b0022ac 4a000000fc2f02009301221d 0000004a9ff500006b0022ac - {e=>3,a=>91,m=>-3,d=>0,j=>2,l=>7,c=>-1,k=>-86,h=>5,b=>0,g=>1,f=>-1,i=>-4} 5b00000038f60000a500aa2f 5b0000000000000038f60000a500aa2f 5b0000000000000038f60000a500aa2f 0000005b1c3e4000b100aaf4 5b00000038f60000a500aa2f 5b00000038f60000a500aa2f 000000000000005b1c3e4000b100aaf4 5b00000038f60000a500aa2f 0000005b1c3e4000b100aaf4 - {e=>4,a=>-16,m=>0,d=>2,j=>2,l=>3,c=>-2,k=>-46,h=>7,b=>2,g=>0,f=>-1,i=>-3} f0ffffffb2780000af00d203 f0ffffffffffffffb2780000af00d203 f0ffffffffffffffb2780000af00d203 fffffff0594e0000f500d260 f0ffffffb2780000af00d203 f0ffffffb2780000af00d203 fffffffffffffff0594e0000f500d260 f0ffffffb2780000af00d203 fffffff0594e0000f500d260 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>1,n=>1,a=>-128,m=>-2,d=>2,j=>3,l=>2,c=>3,k=>-47,h=>3,b=>1,g=>0,f=>1,i=>0} 80ffffff99120000c300d13201000000 80ffffffffffffff99120000c300d1320100000000000000 80ffffffffffffff99120000c300d1320100000000000000 ffffff802d1200006180d15820000000 80ffffff99120000c300d13201000000 80ffffff99120000c300d13201000000 ffffffffffffff802d1200006180d1582000000000000000 80ffffff99120000c300d13201000000 ffffff802d1200006180d15820000000 - {e=>0,n=>3,a=>39,m=>2,d=>2,j=>2,l=>2,c=>-2,k=>-60,h=>2,b=>2,g=>1,f=>-4,i=>-1} 27000000b2c00000ba00c41203000000 2700000000000000b2c00000ba00c4120300000000000000 2700000000000000b2c00000ba00c4120300000000000000 00000027590840005d00c44860000000 27000000b2c00000ba00c41203000000 27000000b2c00000ba00c41203000000 0000000000000027590840005d00c4486000000000000000 27000000b2c00000ba00c41203000000 00000027590840005d00c44860000000 - {e=>0,n=>7,a=>86,m=>-3,d=>-2,j=>4,l=>4,c=>-1,k=>24,h=>1,b=>4,g=>3,f=>-2,i=>3} 56000000bce101001901182c07000000 5600000000000000bce101001901182c0700000000000000 5600000000000000bce101001901182c0700000000000000 000000569f0cc0002e001894e0000000 56000000bce101001901182c07000000 56000000bce101001901182c07000000 00000000000000569f0cc0002e001894e000000000000000 56000000bce101001901182c07000000 000000569f0cc0002e001894e0000000 - {e=>3,n=>4,a=>-28,m=>2,d=>3,j=>2,l=>5,c=>0,k=>-23,h=>7,b=>2,g=>7,f=>1,i=>1} e4ffffffc29603008f00e91504000000 e4ffffffffffffffc29603008f00e9150400000000000000 e4ffffffffffffffc29603008f00e9150400000000000000 ffffffe441b3c000e500e9a880000000 e4ffffffc29603008f00e91504000000 e4ffffffc29603008f00e91504000000 ffffffffffffffe441b3c000e500e9a88000000000000000 e4ffffffc29603008f00e91504000000 ffffffe441b3c000e500e9a880000000 - {e=>3,n=>3,a=>-127,m=>-4,d=>-2,j=>6,l=>7,c=>0,k=>51,h=>2,b=>0,g=>5,f=>-3,i=>-2} 81ffffff80d70200b201332703000000 81ffffffffffffff80d70200b20133270300000000000000 81ffffffffffffff80d70200b20133270300000000000000 ffffff81033b40005b0033f060000000 81ffffff80d70200b201332703000000 81ffffff80d70200b201332703000000 ffffffffffffff81033b40005b0033f06000000000000000 81ffffff80d70200b201332703000000 ffffff81033b40005b0033f060000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>5,a=>-107,m=>2,d=>3,j=>1,l=>1,c=>-1,k=>88,h=>1,b=>3,g=>2,f=>3,o=>104,i=>2} 95fffffffb3401005100581105680000 95fffffffffffffffb340100510058110568000000000000 95fffffffffffffffb340100510058110568000000000000 ffffff957da6800028805828a0680000 95fffffffb3401005100581105680000 95fffffffb3401005100581105680000 ffffffffffffff957da6800028805828a068000000000000 95fffffffb3401005100581105680000 ffffff957da6800028805828a0680000 - {e=>1,n=>6,a=>84,m=>-1,d=>-2,j=>3,l=>7,c=>1,k=>29,h=>2,b=>3,g=>3,f=>-2,o=>30,i=>-3} 540000008be30100ea001d3f061e0000 54000000000000008be30100ea001d3f061e000000000000 54000000000000008be30100ea001d3f061e000000000000 00000054671cc00055801dfcc01e0000 540000008be30100ea001d3f061e0000 540000008be30100ea001d3f061e0000 0000000000000054671cc00055801dfcc01e000000000000 540000008be30100ea001d3f061e0000 00000054671cc00055801dfcc01e0000 - {e=>3,n=>0,a=>79,m=>3,d=>-3,j=>2,l=>6,c=>1,k=>125,h=>1,b=>2,g=>3,f=>3,o=>59,i=>-1} 4f0000004ab70100b9007d1e003b0000 4f000000000000004ab70100b9007d1e003b000000000000 4f000000000000004ab70100b9007d1e003b000000000000 0000004f46b6c0003d007dcc003b0000 4f0000004ab70100b9007d1e003b0000 4f0000004ab70100b9007d1e003b0000 000000000000004f46b6c0003d007dcc003b000000000000 4f0000004ab70100b9007d1e003b0000 0000004f46b6c0003d007dcc003b0000 - {e=>7,n=>7,a=>112,m=>-1,d=>3,j=>4,l=>0,c=>1,k=>-29,h=>5,b=>4,g=>4,f=>-2,o=>130,i=>2} 70000000cc6e02001501e33807820000 7000000000000000cc6e02001501e3380782000000000000 7000000000000000cc6e02001501e3380782000000000000 0000007085fd0000aa00e31ce0820000 70000000cc6e02001501e33807820000 70000000cc6e02001501e33807820000 000000000000007085fd0000aa00e31ce082000000000000 70000000cc6e02001501e33807820000 0000007085fd0000aa00e31ce0820000 - {e=>7,n=>0,a=>27,m=>-1,d=>2,j=>1,l=>6,c=>-2,k=>40,h=>4,b=>0,g=>5,f=>1,o=>182,i=>-4} 1b000000b09e02006400283e00b60000 1b00000000000000b09e02006400283e00b6000000000000 1b00000000000000b09e02006400283e00b6000000000000 0000001b19734000908028dc00b60000 1b000000b09e02006400283e00b60000 1b000000b09e02006400283e00b60000 000000000000001b19734000908028dc00b6000000000000 1b000000b09e02006400283e00b60000 0000001b19734000908028dc00b60000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; }; - {a=>3} 03000000 03000000 03000000 60000000 03000000 03000000 60000000 03000000 60000000 - {a=>1} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 - {a=>1} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 - {a=>6} 06000000 06000000 06000000 c0000000 06000000 06000000 c0000000 06000000 c0000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; }; - {a=>4,b=>-3} 2c000000 2c000000 2c000000 94000000 2c000000 2c000000 94000000 2c000000 94000000 - {a=>7,b=>-4} 27000000 27000000 27000000 f0000000 27000000 27000000 f0000000 27000000 f0000000 - {a=>3,b=>-3} 2b000000 2b000000 2b000000 74000000 2b000000 2b000000 74000000 2b000000 74000000 - {a=>3,b=>-3} 2b000000 2b000000 2b000000 74000000 2b000000 2b000000 74000000 2b000000 74000000 - {a=>6,b=>-3} 2e000000 2e000000 2e000000 d4000000 2e000000 2e000000 d4000000 2e000000 d4000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>3,a=>7,b=>-3} ef000000 ef000000 ef000000 f5800000 ef000000 ef000000 f5800000 ef000000 f5800000 - {c=>-3,a=>7,b=>-3} 6f010000 6f010000 6f010000 f6800000 6f010000 6f010000 f6800000 6f010000 f6800000 - {c=>-4,a=>0,b=>2} 10010000 10010000 10010000 0a000000 10010000 10010000 0a000000 10010000 0a000000 - {c=>1,a=>0,b=>3} 58000000 58000000 58000000 0c800000 58000000 58000000 0c800000 58000000 0c800000 - {c=>-1,a=>5,b=>-2} f5010000 f5010000 f5010000 bb800000 f5010000 f5010000 bb800000 f5010000 bb800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>1,a=>5,b=>-2,d=>7} 750e0000 750e0000 750e0000 b8f00000 750e0000 750e0000 b8f00000 750e0000 b8f00000 - {c=>-3,a=>0,b=>-4,d=>1} 60030000 60030000 60030000 12900000 60030000 60030000 12900000 60030000 12900000 - {c=>-4,a=>4,b=>-2,d=>0} 34010000 34010000 34010000 9a000000 34010000 34010000 9a000000 34010000 9a000000 - {c=>0,a=>3,b=>3,d=>5} 1b0a0000 1b0a0000 1b0a0000 6c500000 1b0a0000 1b0a0000 6c500000 1b0a0000 6c500000 - {c=>-4,a=>6,b=>2,d=>3} 16070000 16070000 16070000 ca300000 16070000 16070000 ca300000 16070000 ca300000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; }; - {e=>'UE6',c=>2,a=>1,b=>-1,d=>1} b9620000 b9620000 b9620000 3d1c0000 b9620000 b9620000 3d1c0000 b9620000 3d1c0000 - {e=>'UE7',c=>-2,a=>1,b=>1,d=>0} 89710000 89710000 89710000 270e0000 89710000 89710000 270e0000 89710000 270e0000 - {e=>'UE7',c=>-4,a=>0,b=>-1,d=>4} 38790000 38790000 38790000 1e4e0000 38790000 38790000 1e4e0000 38790000 1e4e0000 - {e=>'UE0',c=>-3,a=>4,b=>-4,d=>0} 64010000 64010000 64010000 92800000 64010000 64010000 92800000 64010000 92800000 - {e=>'UE5',c=>-3,a=>5,b=>-3,d=>0} 6d510000 6d510000 6d510000 b68a0000 6d510000 6d510000 b68a0000 6d510000 b68a0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; }; - {e=>'UE2',c=>-2,a=>7,b=>1,d=>7,f=>1} 8faf0000 8faf0000 8faf0000 e7744000 8faf0000 8faf0000 e7744000 8faf0000 e7744000 - {e=>'UE3',c=>0,a=>4,b=>2,d=>4,f=>2} 14380100 14380100 14380100 88468000 14380100 14380100 88468000 14380100 88468000 - {e=>'UE2',c=>3,a=>4,b=>0,d=>0,f=>0} c4200000 c4200000 c4200000 81840000 c4200000 c4200000 81840000 c4200000 81840000 - {e=>'UE1',c=>0,a=>3,b=>1,d=>0,f=>6} 0b100300 0b100300 0b100300 64038000 0b100300 0b100300 64038000 0b100300 64038000 - {e=>'UE2',c=>3,a=>1,b=>2,d=>3,f=>5} d1a60200 d1a60200 d1a60200 29b54000 d1a60200 d1a60200 29b54000 d1a60200 29b54000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; }; - {e=>'UE1',c=>3,a=>2,b=>-3,d=>0,f=>0} ea100000 ea100000 ea100000 55820000 ea100000 ea100000 55820000 ea100000 55820000 - {e=>'UE6',c=>-2,a=>7,b=>-2,d=>7,f=>1} b7ef0000 b7ef0000 b7ef0000 fb7c4000 b7ef0000 b7ef0000 fb7c4000 b7ef0000 fb7c4000 - {e=>'UE2',c=>-2,a=>5,b=>2,d=>6,f=>5} 95ad0200 95ad0200 95ad0200 ab654000 95ad0200 95ad0200 ab654000 95ad0200 ab654000 - {e=>'UE1',c=>2,a=>1,b=>-1,d=>4,f=>6} b9180300 b9180300 b9180300 3d438000 b9180300 b9180300 3d438000 b9180300 3d438000 - {e=>'UE1',c=>3,a=>1,b=>-3,d=>3,f=>4} e9160200 e9160200 e9160200 35b30000 e9160200 e9160200 35b30000 e9160200 35b30000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>'UE6',c=>-2,a=>0,g=>0,b=>3,d=>6,f=>4} 986d020000000000 986d020000000000 986d020000000000 0f6d000000000000 986d020000000000 986d020000000000 0f6d000000000000 986d020000000000 0f6d000000000000 - {e=>'UE4',c=>2,a=>2,g=>2,b=>-4,d=>7,f=>3} a2ce010002000000 a2ce010002000000 a2ce010002000000 5178c00040000000 a2ce010002000000 a2ce010002000000 5178c00040000000 a2ce010002000000 5178c00040000000 - {e=>'UE2',c=>-3,a=>4,g=>6,b=>3,d=>6,f=>7} 5cad030006000000 5cad030006000000 5cad030006000000 8ee5c000c0000000 5cad030006000000 5cad030006000000 8ee5c000c0000000 5cad030006000000 8ee5c000c0000000 - {e=>'UE6',c=>-1,a=>7,g=>6,b=>2,d=>7,f=>6} d76f030006000000 d76f030006000000 d76f030006000000 ebfd8000c0000000 d76f030006000000 d76f030006000000 ebfd8000c0000000 d76f030006000000 ebfd8000c0000000 - {e=>'UE3',c=>-2,a=>7,g=>2,b=>-3,d=>4,f=>7} afb9030002000000 afb9030002000000 afb9030002000000 f747c00040000000 afb9030002000000 afb9030002000000 f747c00040000000 afb9030002000000 f747c00040000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>'UE2',a=>3,d=>3,c=>1,h=>2,b=>-1,g=>0,f=>2} 7b26010010000000 7b26010010000000 7b26010010000000 7cb4800008000000 7b26010010000000 7b26010010000000 7cb4800008000000 7b26010010000000 7cb4800008000000 - {e=>'UE5',a=>4,d=>6,c=>1,h=>-4,b=>-1,g=>5,f=>4} 7c5c020025000000 7c5c020025000000 7c5c020025000000 9ceb0000b0000000 7c5c020025000000 7c5c020025000000 9ceb0000b0000000 7c5c020025000000 9ceb0000b0000000 - {e=>'UE0',a=>7,d=>2,c=>3,h=>1,b=>-3,g=>2,f=>1} ef8400000a000000 ef8400000a000000 ef8400000a000000 f5a0400044000000 ef8400000a000000 ef8400000a000000 f5a0400044000000 ef8400000a000000 f5a0400044000000 - {e=>'UE0',a=>1,d=>7,c=>-3,h=>-1,b=>1,g=>3,f=>4} 490f02003b000000 490f02003b000000 490f02003b000000 26f100007c000000 490f02003b000000 490f02003b000000 26f100007c000000 490f02003b000000 26f100007c000000 - {e=>'UE1',a=>5,d=>3,c=>3,h=>2,b=>-4,g=>2,f=>5} e596020012000000 e596020012000000 e596020012000000 b1b3400048000000 e596020012000000 e596020012000000 b1b3400048000000 e596020012000000 b1b3400048000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; }; - {e=>'UE2',a=>0,d=>0,c=>-4,h=>1,b=>1,g=>0,f=>7,i=>'SEM2'} 08a1030088010000 08a1030088010000 08a1030088010000 0605c00007000000 08a1030088010000 08a1030088010000 0605c00007000000 08a1030088010000 0605c00007000000 - {e=>'UE1',a=>1,d=>7,c=>-1,h=>3,b=>2,g=>2,f=>5,i=>'SEM1'} d19f0200da010000 d19f0200da010000 d19f0200da010000 2bf340004f800000 d19f0200da010000 d19f0200da010000 2bf340004f800000 d19f0200da010000 2bf340004f800000 - {e=>'UE7',a=>7,d=>3,c=>-4,h=>3,b=>-3,g=>0,f=>5,i=>'SE0'} 2ff7020018000000 2ff7020018000000 2ff7020018000000 f63f40000c000000 2ff7020018000000 2ff7020018000000 f63f40000c000000 2ff7020018000000 f63f40000c000000 - {e=>'UE6',a=>6,d=>1,c=>3,h=>0,b=>1,g=>5,f=>5,i=>'SEM2'} cee2020085010000 cee2020085010000 cee2020085010000 c59d4000a3000000 cee2020085010000 cee2020085010000 c59d4000a3000000 cee2020085010000 c59d4000a3000000 - {e=>'UE6',a=>5,d=>4,c=>3,h=>1,b=>3,g=>2,f=>4,i=>'SE1'} dd6802004a000000 dd6802004a000000 dd6802004a000000 adcd000044800000 dd6802004a000000 dd6802004a000000 adcd000044800000 dd6802004a000000 adcd000044800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; }; - {e=>'UE4',a=>6,d=>2,j=>117,c=>2,h=>-4,b=>2,g=>0,f=>5,i=>'SE2'} 96c40200a0007500 96c40200a0007500 96c40200a0007500 c929400011007500 96c40200a0007500 96c40200a0007500 c929400011007500 96c40200a0007500 c929400011007500 - {e=>'UE1',a=>3,d=>4,j=>126,c=>3,h=>0,b=>-4,g=>2,f=>5,i=>'SEM3'} e398020042017e00 e398020042017e00 e398020042017e00 71c3400042807e00 e398020042017e00 e398020042017e00 71c3400042807e00 e398020042017e00 71c3400042807e00 - {e=>'UE4',a=>4,d=>7,j=>-36,c=>1,h=>-4,b=>-3,g=>7,f=>2,i=>'SEM2'} 6c4e0100a701dc00 6c4e0100a701dc00 6c4e0100a701dc00 94f88000f300dc00 6c4e0100a701dc00 6c4e0100a701dc00 94f88000f300dc00 6c4e0100a701dc00 94f88000f300dc00 - {e=>'UE5',a=>1,d=>1,j=>61,c=>-3,h=>-3,b=>-4,g=>4,f=>6,i=>'SEM1'} 61530300ec013d00 61530300ec013d00 61530300ec013d00 329b800097803d00 61530300ec013d00 61530300ec013d00 329b800097803d00 61530300ec013d00 329b800097803d00 - {e=>'UE6',a=>3,d=>1,j=>-91,c=>1,h=>-1,b=>-1,g=>6,f=>1,i=>'SEM4'} 7be200003e01a500 7be200003e01a500 7be200003e01a500 7c9c4000de00a500 7be200003e01a500 7be200003e01a500 7c9c4000de00a500 7be200003e01a500 7c9c4000de00a500 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; }; - {e=>'UE4',a=>1,d=>0,j=>-29,c=>-3,k=>3,h=>3,b=>-1,g=>1,f=>7,i=>'SE2'} 79c103009900e303 79c103009900e303 79c103009900e303 3e89c0002d00e360 79c103009900e303 79c103009900e303 3e89c0002d00e360 79c103009900e303 3e89c0002d00e360 - {e=>'UE7',a=>0,d=>6,j=>9,c=>1,k=>7,h=>2,b=>-4,g=>3,f=>4,i=>'SEM4'} 607c020013010907 607c020013010907 607c020013010907 10ef00006a0009e0 607c020013010907 607c020013010907 10ef00006a0009e0 607c020013010907 10ef00006a0009e0 - {e=>'UE2',a=>0,d=>2,j=>101,c=>2,k=>1,h=>-4,b=>1,g=>7,f=>1,i=>'SEM2'} 88a40000a7016501 88a40000a7016501 88a40000a7016501 05244000f3006520 88a40000a7016501 88a40000a7016501 05244000f3006520 88a40000a7016501 05244000f3006520 - {e=>'UE3',a=>0,d=>6,j=>74,c=>1,k=>1,h=>-1,b=>1,g=>4,f=>2,i=>'SE0'} 483c01003c004a01 483c01003c004a01 483c01003c004a01 04e680009c004a20 483c01003c004a01 483c01003c004a01 04e680009c004a20 483c01003c004a01 04e680009c004a20 - {e=>'UE1',a=>4,d=>7,j=>-119,c=>-3,k=>4,h=>1,b=>2,g=>7,f=>4,i=>'SEM4'} 541f02000f018904 541f02000f018904 541f02000f018904 8af30000e6008980 541f02000f018904 541f02000f018904 8af30000e6008980 541f02000f018904 8af30000e6008980 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>'UE0',a=>5,d=>7,j=>-122,l=>-3,c=>-4,k=>2,h=>1,b=>-1,g=>4,f=>3,i=>'SEM3'} 3d8f01004c01862a 3d8f01004c01862a 3d8f01004c01862a be70c00086808654 3d8f01004c01862a 3d8f01004c01862a be70c00086808654 3d8f01004c01862a be70c00086808654 - {e=>'UE0',a=>1,d=>3,j=>-34,l=>-4,c=>-3,k=>6,h=>-3,b=>-2,g=>1,f=>7,i=>'SEM1'} 71870300e901de26 71870300e901de26 71870300e901de26 3ab1c0003780ded0 71870300e901de26 71870300e901de26 3ab1c0003780ded0 71870300e901de26 3ab1c0003780ded0 - {e=>'UE1',a=>1,d=>0,j=>86,l=>-4,c=>-3,k=>3,h=>2,b=>1,g=>0,f=>0,i=>'SEM3'} 4911000050015623 4911000050015623 4911000050015623 268200000a805670 4911000050015623 4911000050015623 268200000a805670 4911000050015623 268200000a805670 - {e=>'UE1',a=>2,d=>1,j=>-57,l=>-1,c=>3,k=>5,h=>1,b=>-2,g=>7,f=>0,i=>'SE3'} f2120000cf00c73d f2120000cf00c73d f2120000cf00c73d 59920000e580c7bc f2120000cf00c73d f2120000cf00c73d 59920000e580c7bc f2120000cf00c73d 59920000e580c7bc - {e=>'UE7',a=>3,d=>1,j=>111,l=>-4,c=>-4,k=>6,h=>-3,b=>-2,g=>4,f=>3,i=>'SEM2'} 33f30100ac016f26 33f30100ac016f26 33f30100ac016f26 7a1ec00097006fd0 33f30100ac016f26 33f30100ac016f26 7a1ec00097006fd0 33f30100ac016f26 7a1ec00097006fd0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>'UE3',a=>5,m=>4,d=>5,j=>-36,l=>2,c=>0,k=>4,h=>0,b=>-3,g=>5,f=>0,i=>'SEM1'} 2d3a0000c501dc1404000000 2d3a0000c501dc1404000000 2d3a0000c501dc1404000000 b4560000a380dc8880000000 2d3a0000c501dc1404000000 2d3a0000c501dc1404000000 b4560000a380dc8880000000 2d3a0000c501dc1404000000 b4560000a380dc8880000000 - {e=>'UE7',a=>5,m=>0,d=>6,j=>-48,l=>3,c=>1,k=>3,h=>2,b=>-3,g=>2,f=>0,i=>'SE1'} 6d7c00005200d01b00000000 6d7c00005200d01b00000000 6d7c00005200d01b00000000 b4ee00004880d06c00000000 6d7c00005200d01b00000000 6d7c00005200d01b00000000 b4ee00004880d06c00000000 6d7c00005200d01b00000000 b4ee00004880d06c00000000 - {e=>'UE5',a=>6,m=>5,d=>5,j=>-112,l=>1,c=>-4,k=>5,h=>0,b=>2,g=>1,f=>3,i=>'SEM2'} 16db01008101900d05000000 16db01008101900d05000000 16db01008101900d05000000 ca5ac000230090a4a0000000 16db01008101900d05000000 16db01008101900d05000000 ca5ac000230090a4a0000000 16db01008101900d05000000 ca5ac000230090a4a0000000 - {e=>'UE3',a=>5,m=>5,d=>5,j=>-44,l=>-2,c=>-3,k=>0,h=>1,b=>-1,g=>4,f=>3,i=>'SE0'} 7dbb01000c00d43005000000 7dbb01000c00d43005000000 7dbb01000c00d43005000000 bed6c0008400d418a0000000 7dbb01000c00d43005000000 7dbb01000c00d43005000000 bed6c0008400d418a0000000 7dbb01000c00d43005000000 bed6c0008400d418a0000000 - {e=>'UE1',a=>5,m=>1,d=>7,j=>-106,l=>0,c=>-2,k=>7,h=>-4,b=>2,g=>0,f=>0,i=>'SE2'} 951f0000a000960701000000 951f0000a000960701000000 951f0000a000960701000000 ab720000110096e020000000 951f0000a000960701000000 951f0000a000960701000000 ab720000110096e020000000 951f0000a000960701000000 ab720000110096e020000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>'UE2',n=>245,a=>6,m=>3,d=>5,j=>21,l=>-3,c=>3,k=>3,h=>-2,b=>1,g=>3,f=>4,i=>'SE2'} ce2a0200b300152b03f50000 ce2a0200b300152b03f50000 ce2a0200b300152b03f50000 c5d500007900157460f50000 ce2a0200b300152b03f50000 ce2a0200b300152b03f50000 c5d500007900157460f50000 ce2a0200b300152b03f50000 c5d500007900157460f50000 - {e=>'UE4',n=>39,a=>4,m=>1,d=>1,j=>-106,l=>0,c=>-3,k=>5,h=>2,b=>1,g=>6,f=>2,i=>'SEM1'} 4c430100d601960501270000 4c430100d601960501270000 4c430100d601960501270000 86988000cb8096a020270000 4c430100d601960501270000 4c430100d601960501270000 86988000cb8096a020270000 4c430100d601960501270000 86988000cb8096a020270000 - {e=>'UE2',n=>222,a=>0,m=>0,d=>4,j=>23,l=>0,c=>-2,k=>3,h=>3,b=>-1,g=>2,f=>1,i=>'SE1'} b8a900005a00170300de0000 b8a900005a00170300de0000 b8a900005a00170300de0000 1f4440004c80176000de0000 b8a900005a00170300de0000 b8a900005a00170300de0000 1f4440004c80176000de0000 b8a900005a00170300de0000 1f4440004c80176000de0000 - {e=>'UE1',n=>14,a=>6,m=>6,d=>0,j=>-82,l=>3,c=>-4,k=>6,h=>-2,b=>-4,g=>4,f=>7,i=>'SEM4'} 269103003401ae1e060e0000 269103003401ae1e060e0000 269103003401ae1e060e0000 d203c0009a00aeccc00e0000 269103003401ae1e060e0000 269103003401ae1e060e0000 d203c0009a00aeccc00e0000 269103003401ae1e060e0000 d203c0009a00aeccc00e0000 - {e=>'UE5',n=>1,a=>2,m=>5,d=>2,j=>-12,l=>1,c=>-3,k=>4,h=>-3,b=>1,g=>0,f=>7,i=>'SEM3'} 4ad503006801f40c05010000 4ad503006801f40c05010000 4ad503006801f40c05010000 46abc0001680f484a0010000 4ad503006801f40c05010000 4ad503006801f40c05010000 46abc0001680f484a0010000 4ad503006801f40c05010000 46abc0001680f484a0010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; }; - {a=>13,b=>3} 0d030000 0d030000 0d030000 0d600000 0d030000 0d030000 0d600000 0d030000 0d600000 - {a=>-11,b=>1} f5010000 f5010000 f5010000 f5200000 f5010000 f5010000 f5200000 f5010000 f5200000 - {a=>5,b=>2} 05020000 05020000 05020000 05400000 05020000 05020000 05400000 05020000 05400000 - {a=>-65,b=>1} bf010000 bf010000 bf010000 bf200000 bf010000 bf010000 bf200000 bf010000 bf200000 - {a=>51,b=>3} 33030000 33030000 33030000 33600000 33030000 33030000 33600000 33030000 33600000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; }; - {c=>3,a=>-27,b=>4} e51c0000 e51c0000 e51c0000 e58c0000 e51c0000 e51c0000 e58c0000 e51c0000 e58c0000 - {c=>-2,a=>123,b=>4} 7b340000 7b340000 7b340000 7b980000 7b340000 7b340000 7b980000 7b340000 7b980000 - {c=>-4,a=>-38,b=>5} da250000 da250000 da250000 dab00000 da250000 da250000 dab00000 da250000 dab00000 - {c=>-3,a=>4,b=>0} 04280000 04280000 04280000 04140000 04280000 04280000 04140000 04280000 04140000 - {c=>0,a=>-104,b=>5} 98050000 98050000 98050000 98a00000 98050000 98050000 98a00000 98050000 98a00000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>-116,b=>0,d=>-2} 8cb00100 8cb00100 8cb00100 8c1b0000 8cb00100 8cb00100 8c1b0000 8cb00100 8c1b0000 - {c=>-3,a=>-33,b=>2,d=>-3} df6a0100 df6a0100 df6a0100 df568000 df6a0100 df6a0100 df568000 df6a0100 df568000 - {c=>-2,a=>-99,b=>7,d=>2} 9db70000 9db70000 9db70000 9df90000 9db70000 9db70000 9df90000 9db70000 9df90000 - {c=>-4,a=>103,b=>5,d=>-3} 67650100 67650100 67650100 67b28000 67650100 67650100 67b28000 67650100 67b28000 - {c=>1,a=>111,b=>5,d=>0} 6f0d0000 6f0d0000 6f0d0000 6fa40000 6f0d0000 6f0d0000 6fa40000 6f0d0000 6fa40000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>0,a=>17,b=>1,d=>-4} 11010300 11010300 11010300 11221000 11010300 11010300 11221000 11010300 11221000 - {e=>4,c=>-2,a=>-99,b=>6,d=>-1} 9df60900 9df60900 9df60900 9ddbc000 9df60900 9df60900 9ddbc000 9df60900 9ddbc000 - {e=>3,c=>-1,a=>-98,b=>4,d=>-1} 9efc0700 9efc0700 9efc0700 9e9fb000 9efc0700 9efc0700 9e9fb000 9efc0700 9e9fb000 - {e=>1,c=>-2,a=>-9,b=>2,d=>3} f7f20200 f7f20200 f7f20200 f7599000 f7f20200 f7f20200 f7599000 f7f20200 f7599000 - {e=>5,c=>0,a=>-8,b=>0,d=>0} f8000a00 f8000a00 f8000a00 f8005000 f8000a00 f8000a00 f8005000 f8000a00 f8005000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>5,c=>-1,a=>-128,b=>0,d=>2,f=>'UE2'} 80b82a00 80b82a00 80b82a00 801d5400 80b82a00 80b82a00 801d5400 80b82a00 801d5400 - {e=>1,c=>-1,a=>19,b=>6,d=>3,f=>'UE0'} 13fe0200 13fe0200 13fe0200 13dd9000 13fe0200 13fe0200 13dd9000 13fe0200 13dd9000 - {e=>3,c=>1,a=>-34,b=>1,d=>-3,f=>'UE2'} de492700 de492700 de492700 de26b400 de492700 de492700 de26b400 de492700 de26b400 - {e=>3,c=>3,a=>-85,b=>7,d=>1,f=>'UE4'} ab5f4600 ab5f4600 ab5f4600 abecb800 ab5f4600 ab5f4600 abecb800 ab5f4600 abecb800 - {e=>3,c=>-3,a=>14,b=>3,d=>1,f=>'UE7'} 0e6b7600 0e6b7600 0e6b7600 0e74be00 0e6b7600 0e6b7600 0e74be00 0e6b7600 0e74be00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>3,c=>-2,a=>-81,g=>5,b=>0,d=>3,f=>'UE1'} aff09602 aff09602 aff09602 af19b340 aff09602 aff09602 af19b340 aff09602 af19b340 - {e=>5,c=>3,a=>-48,g=>4,b=>5,d=>-3,f=>'UE0'} d05d0b02 d05d0b02 d05d0b02 d0aed100 d05d0b02 d05d0b02 d0aed100 d05d0b02 d0aed100 - {e=>6,c=>1,a=>72,g=>3,b=>3,d=>-3,f=>'UE4'} 484bcd01 484bcd01 484bcd01 4866e8c0 484bcd01 484bcd01 4866e8c0 484bcd01 4866e8c0 - {e=>5,c=>-4,a=>-73,g=>6,b=>4,d=>-1,f=>'UE3'} b7e43b03 b7e43b03 b7e43b03 b793d780 b7e43b03 b7e43b03 b793d780 b7e43b03 b793d780 - {e=>4,c=>-4,a=>33,g=>5,b=>5,d=>-3,f=>'UE6'} 2165e902 2165e902 2165e902 21b2cd40 2165e902 2165e902 21b2cd40 2165e902 21b2cd40 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>4,c=>2,a=>15,g=>5,b=>7,d=>1,f=>'UE1'} 0f579802 0f579802 0f579802 0fe8c340 0f579802 0f579802 0fe8c340 0f579802 0fe8c340 - {e=>6,c=>-2,a=>117,g=>0,b=>0,d=>-2,f=>'UE3'} 75b03d00 75b03d00 75b03d00 751b6600 75b03d00 75b03d00 751b6600 75b03d00 751b6600 - {e=>3,c=>2,a=>70,g=>7,b=>0,d=>2,f=>'UE0'} 46908603 46908603 46908603 460931c0 46908603 46908603 460931c0 46908603 460931c0 - {e=>7,c=>-3,a=>95,g=>4,b=>2,d=>-2,f=>'UE7'} 5faa7f02 5faa7f02 5faa7f02 5f577f00 5faa7f02 5faa7f02 5f577f00 5faa7f02 5f577f00 - {e=>3,c=>0,a=>42,g=>4,b=>7,d=>2,f=>'UE4'} 2a874602 2a874602 2a874602 2ae13900 2a874602 2a874602 2ae13900 2a874602 2ae13900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>-95,d=>0,c=>-2,h=>7,b=>4,g=>4,f=>'UE1'} a1341a0207000000 a1341a0207000000 a1341a0207000000 a1985300e0000000 a1341a0207000000 a1341a0207000000 a1985300e0000000 a1341a0207000000 a1985300e0000000 - {e=>0,a=>79,d=>3,c=>3,h=>4,b=>2,g=>0,f=>'UE4'} 4fda400004000000 4fda400004000000 4fda400004000000 4f4d880080000000 4fda400004000000 4fda400004000000 4f4d880080000000 4fda400004000000 4f4d880080000000 - {e=>4,a=>23,d=>0,c=>3,h=>5,b=>5,g=>0,f=>'UE4'} 171d480005000000 171d480005000000 171d480005000000 17ac4800a0000000 171d480005000000 171d480005000000 17ac4800a0000000 171d480005000000 17ac4800a0000000 - {e=>5,a=>-48,d=>2,c=>1,h=>4,b=>4,g=>4,f=>'UE1'} d08c1a0204000000 d08c1a0204000000 d08c1a0204000000 d085530080000000 d08c1a0204000000 d08c1a0204000000 d085530080000000 d08c1a0204000000 d085530080000000 - {e=>1,a=>-57,d=>3,c=>1,h=>5,b=>0,g=>0,f=>'UE3'} c7c8320005000000 c7c8320005000000 c7c8320005000000 c7059600a0000000 c7c8320005000000 c7c8320005000000 c7059600a0000000 c7c8320005000000 c7059600a0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>5,a=>-24,d=>-4,c=>3,h=>2,b=>2,g=>3,f=>'UE2',i=>-2} e81aab0132000000 e81aab0132000000 e81aab0132000000 e84e54c058000000 e81aab0132000000 e81aab0132000000 e84e54c058000000 e81aab0132000000 e84e54c058000000 - {e=>7,a=>25,d=>0,c=>3,h=>3,b=>2,g=>3,f=>'UE0',i=>0} 191a8e0103000000 191a8e0103000000 191a8e0103000000 194c70c060000000 191a8e0103000000 191a8e0103000000 194c70c060000000 191a8e0103000000 194c70c060000000 - {e=>3,a=>31,d=>2,c=>-1,h=>1,b=>1,g=>4,f=>'UE5',i=>1} 1fb9560209000000 1fb9560209000000 1fb9560209000000 1f3d3b0024000000 1fb9560209000000 1fb9560209000000 1f3d3b0024000000 1fb9560209000000 1f3d3b0024000000 - {e=>4,a=>21,d=>-2,c=>1,h=>4,b=>6,g=>6,f=>'UE4',i=>-2} 158e490334000000 158e490334000000 158e490334000000 15c7498098000000 158e490334000000 158e490334000000 15c7498098000000 158e490334000000 15c7498098000000 - {e=>6,a=>106,d=>-1,c=>1,h=>0,b=>0,g=>4,f=>'UE5',i=>-2} 6ac85d0230000000 6ac85d0230000000 6ac85d0230000000 6a07eb0018000000 6ac85d0230000000 6ac85d0230000000 6a07eb0018000000 6ac85d0230000000 6a07eb0018000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>-92,d=>-4,j=>'SEM4',c=>1,h=>0,b=>7,g=>4,f=>'UE4',i=>0} a40f4b0200010000 a40f4b0200010000 a40f4b0200010000 a4e6590002000000 a40f4b0200010000 a40f4b0200010000 a4e6590002000000 a40f4b0200010000 a4e6590002000000 - {e=>6,a=>89,d=>1,j=>'SEM4',c=>0,h=>5,b=>5,g=>1,f=>'UE7',i=>2} 5945fc0015010000 5945fc0015010000 5945fc0015010000 59a0ee40aa000000 5945fc0015010000 5945fc0015010000 59a0ee40aa000000 5945fc0015010000 59a0ee40aa000000 - {e=>2,a=>15,d=>0,j=>'SEM2',c=>1,h=>1,b=>4,g=>3,f=>'UE7',i=>0} 0f0cf40181010000 0f0cf40181010000 0f0cf40181010000 0f842ec023000000 0f0cf40181010000 0f0cf40181010000 0f842ec023000000 0f0cf40181010000 0f842ec023000000 - {e=>3,a=>-2,d=>3,j=>'SEM2',c=>1,h=>1,b=>3,g=>4,f=>'UE7',i=>1} fecb760289010000 fecb760289010000 fecb760289010000 fe65bf0027000000 fecb760289010000 fecb760289010000 fe65bf0027000000 fecb760289010000 fe65bf0027000000 - {e=>5,a=>113,d=>0,j=>'SE2',c=>3,h=>5,b=>4,g=>5,f=>'UE2',i=>3} 711caa029d000000 711caa029d000000 711caa029d000000 718c5540ad000000 711caa029d000000 711caa029d000000 718c5540ad000000 711caa029d000000 718c5540ad000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>-108,d=>-2,j=>'SE0',c=>3,k=>33,h=>1,b=>5,g=>1,f=>'UE4',i=>-2} 949dc90031002100 949dc90031002100 949dc90031002100 94af484038002100 949dc90031002100 949dc90031002100 94af484038002100 949dc90031002100 94af484038002100 - {e=>5,a=>-119,d=>-4,j=>'SE1',c=>-2,k=>-4,h=>2,b=>0,g=>3,f=>'UE2',i=>-4} 8930ab016200fc00 8930ab016200fc00 8930ab016200fc00 891a54c05080fc00 8930ab016200fc00 8930ab016200fc00 891a54c05080fc00 8930ab016200fc00 891a54c05080fc00 - {e=>7,a=>-38,d=>-4,j=>'SEM1',c=>1,k=>-5,h=>1,b=>7,g=>7,f=>'UE2',i=>1} da0faf03c901fb00 da0faf03c901fb00 da0faf03c901fb00 dae675c02780fb00 da0faf03c901fb00 da0faf03c901fb00 dae675c02780fb00 da0faf03c901fb00 dae675c02780fb00 - {e=>4,a=>-11,d=>0,j=>'SEM3',c=>3,k=>-84,h=>3,b=>6,g=>3,f=>'UE3',i=>2} f51eb8015301ac00 f51eb8015301ac00 f51eb8015301ac00 f5cc46c06a80ac00 f51eb8015301ac00 f51eb8015301ac00 f5cc46c06a80ac00 f51eb8015301ac00 f5cc46c06a80ac00 - {e=>0,a=>27,d=>2,j=>'SE2',c=>1,k=>-54,h=>0,b=>4,g=>1,f=>'UE4',i=>3} 1b8cc0009800ca00 1b8cc0009800ca00 1b8cc0009800ca00 1b8508400d00ca00 1b8cc0009800ca00 1b8cc0009800ca00 1b8508400d00ca00 1b8cc0009800ca00 1b8508400d00ca00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>4,a=>-97,d=>3,j=>'SEM4',l=>0,c=>-2,k=>122,h=>3,b=>1,g=>1,f=>'UE3',i=>1} 9ff1b8000b017a00 9ff1b8000b017a00 9ff1b8000b017a00 9f39c64066007a00 9ff1b8000b017a00 9ff1b8000b017a00 9f39c64066007a00 9ff1b8000b017a00 9f39c64066007a00 - {e=>4,a=>-122,d=>3,j=>'SEM2',l=>1,c=>3,k=>50,h=>0,b=>4,g=>5,f=>'UE0',i=>-3} 86dc8802a8013201 86dc8802a8013201 86dc8802a8013201 868dc14017003220 86dc8802a8013201 86dc8802a8013201 868dc14017003220 86dc8802a8013201 868dc14017003220 - {e=>1,a=>-106,d=>0,j=>'SEM1',l=>1,c=>3,k=>-92,h=>5,b=>3,g=>7,f=>'UE1',i=>1} 961b9203cd01a401 961b9203cd01a401 961b9203cd01a401 966c13c0a780a420 961b9203cd01a401 961b9203cd01a401 966c13c0a780a420 961b9203cd01a401 966c13c0a780a420 - {e=>5,a=>-50,d=>0,j=>'SE1',l=>0,c=>-2,k=>62,h=>7,b=>3,g=>6,f=>'UE5',i=>0} ce335a0347003e00 ce335a0347003e00 ce335a0347003e00 ce785b80e0803e00 ce335a0347003e00 ce335a0347003e00 ce785b80e0803e00 ce335a0347003e00 ce785b80e0803e00 - {e=>5,a=>100,d=>0,j=>'SE3',l=>3,c=>-4,k=>67,h=>1,b=>1,g=>7,f=>'UE3',i=>1} 6421ba03c9004303 6421ba03c9004303 6421ba03c9004303 643057c025804360 6421ba03c9004303 6421ba03c9004303 643057c025804360 6421ba03c9004303 643057c025804360 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>18,m=>-4,d=>-2,j=>'SE0',l=>1,c=>-3,k=>-93,h=>5,b=>2,g=>6,f=>'UE1',i=>3} 12aa17031d00a321 12aa17031d00a321 12aa17031d00a321 12573380ac00a330 12aa17031d00a321 12aa17031d00a321 12573380ac00a330 12aa17031d00a321 12573380ac00a330 - {e=>3,a=>-79,m=>-4,d=>0,j=>'SEM1',l=>5,c=>3,k=>20,h=>2,b=>5,g=>5,f=>'UE2',i=>-3} b11da602ea011425 b11da602ea011425 b11da602ea011425 b1ac3540578014b0 b11da602ea011425 b11da602ea011425 b1ac3540578014b0 b11da602ea011425 b1ac3540578014b0 - {e=>1,a=>16,m=>-1,d=>2,j=>'SEM3',l=>5,c=>1,k=>116,h=>3,b=>7,g=>5,f=>'UE1',i=>-3} 108f92026b01743d 108f92026b01743d 108f92026b01743d 10e51340768074bc 108f92026b01743d 108f92026b01743d 10e51340768074bc 108f92026b01743d 10e51340768074bc - {e=>3,a=>33,m=>-2,d=>0,j=>'SE0',l=>4,c=>3,k=>98,h=>3,b=>1,g=>6,f=>'UE6',i=>0} 2119660303006234 2119660303006234 2119660303006234 212c3d8060006298 2119660303006234 2119660303006234 212c3d8060006298 2119660303006234 212c3d8060006298 - {e=>7,a=>-14,m=>-4,d=>-2,j=>'SE2',l=>7,c=>1,k=>-62,h=>0,b=>2,g=>0,f=>'UE2',i=>-1} f28a2f00b800c227 f28a2f00b800c227 f28a2f00b800c227 f24774001d00c2f0 f28a2f00b800c227 f28a2f00b800c227 f24774001d00c2f0 f28a2f00b800c227 f24774001d00c2f0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>2,n=>0,a=>-27,m=>-4,d=>-3,j=>'SEM3',l=>3,c=>3,k=>23,h=>3,b=>6,g=>7,f=>'UE4',i=>-3} e55ec5036b01172300000000 e55ec5036b01172300000000 e55ec5036b01172300000000 e5cea9c07680177000000000 e55ec5036b01172300000000 e55ec5036b01172300000000 e5cea9c07680177000000000 e55ec5036b01172300000000 e5cea9c07680177000000000 - {e=>4,n=>7,a=>-105,m=>-4,d=>-4,j=>'SE0',l=>6,c=>2,k=>99,h=>3,b=>1,g=>6,f=>'UE0',i=>2} 971109031300632607000000 971109031300632607000000 971109031300632607000000 972a4180680063d0e0000000 971109031300632607000000 971109031300632607000000 972a4180680063d0e0000000 971109031300632607000000 972a4180680063d0e0000000 - {e=>4,n=>4,a=>96,m=>-3,d=>-3,j=>'SEM2',l=>4,c=>-1,k=>7,h=>7,b=>3,g=>5,f=>'UE3',i=>1} 607bb9028f01072c04000000 607bb9028f01072c04000000 607bb9028f01072c04000000 607ec740e700079480000000 607bb9028f01072c04000000 607bb9028f01072c04000000 607ec740e700079480000000 607bb9028f01072c04000000 607ec740e700079480000000 - {e=>0,n=>4,a=>-116,m=>-1,d=>-4,j=>'SE1',l=>1,c=>0,k=>-79,h=>4,b=>7,g=>6,f=>'UE4',i=>-2} 8c0741037400b13904000000 8c0741037400b13904000000 8c0741037400b13904000000 8ce209809880b13c80000000 8c0741037400b13904000000 8c0741037400b13904000000 8ce209809880b13c80000000 8c0741037400b13904000000 8ce209809880b13c80000000 - {e=>3,n=>0,a=>75,m=>0,d=>1,j=>'SEM4',l=>3,c=>-1,k=>-22,h=>4,b=>7,g=>7,f=>'UE1',i=>-2} 4b7f96033401ea0300000000 4b7f96033401ea0300000000 4b7f96033401ea0300000000 4bfcb3c09a00ea6000000000 4b7f96033401ea0300000000 4b7f96033401ea0300000000 4bfcb3c09a00ea6000000000 4b7f96033401ea0300000000 4bfcb3c09a00ea6000000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>0,a=>-125,m=>1,d=>-1,j=>'SE1',l=>4,c=>3,k=>75,h=>2,b=>4,g=>2,f=>'UE4',o=>207,i=>1} 83dc4f014a004b0c00cf0000 83dc4f014a004b0c00cf0000 83dc4f014a004b0c00cf0000 838ff88044804b8400cf0000 83dc4f014a004b0c00cf0000 83dc4f014a004b0c00cf0000 838ff88044804b8400cf0000 83dc4f014a004b0c00cf0000 838ff88044804b8400cf0000 - {e=>5,n=>5,a=>123,m=>2,d=>2,j=>'SEM4',l=>0,c=>-1,k=>-99,h=>5,b=>0,g=>6,f=>'UE2',o=>139,i=>0} 7bb82a0305019d10058b0000 7bb82a0305019d10058b0000 7bb82a0305019d10058b0000 7b1d5580a2009d08a08b0000 7bb82a0305019d10058b0000 7bb82a0305019d10058b0000 7b1d5580a2009d08a08b0000 7bb82a0305019d10058b0000 7b1d5580a2009d08a08b0000 - {e=>4,n=>3,a=>11,m=>-1,d=>-1,j=>'SE1',l=>7,c=>-1,k=>-112,h=>3,b=>4,g=>6,f=>'UE7',o=>200,i=>-2} 0bfc79037300903f03c80000 0bfc79037300903f03c80000 0bfc79037300903f03c80000 0b9fcf80788090fc60c80000 0bfc79037300903f03c80000 0bfc79037300903f03c80000 0b9fcf80788090fc60c80000 0bfc79037300903f03c80000 0b9fcf80788090fc60c80000 - {e=>3,n=>1,a=>-24,m=>1,d=>1,j=>'SE3',l=>4,c=>1,k=>14,h=>1,b=>5,g=>4,f=>'UE3',o=>226,i=>1} e84d3602c9000e0c01e20000 e84d3602c9000e0c01e20000 e84d3602c9000e0c01e20000 e8a4b70025800e8420e20000 e84d3602c9000e0c01e20000 e84d3602c9000e0c01e20000 e8a4b70025800e8420e20000 e84d3602c9000e0c01e20000 e8a4b70025800e8420e20000 - {e=>1,n=>3,a=>-40,m=>-4,d=>3,j=>'SE0',l=>2,c=>3,k=>-119,h=>2,b=>6,g=>1,f=>'UE3',o=>233,i=>0} d8deb2000200892203e90000 d8deb2000200892203e90000 d8deb2000200892203e90000 d8cd96404000895060e90000 d8deb2000200892203e90000 d8deb2000200892203e90000 d8cd96404000895060e90000 d8deb2000200892203e90000 d8cd96404000895060e90000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; }; - {a=>66,b=>2} 42000200 42000200 42000200 00424000 42000200 42000200 00424000 42000200 00424000 - {a=>47,b=>3} 2f000300 2f000300 2f000300 002f6000 2f000300 2f000300 002f6000 2f000300 002f6000 - {a=>34,b=>7} 22000700 22000700 22000700 0022e000 22000700 22000700 0022e000 22000700 0022e000 - {a=>-104,b=>2} 98ff0200 98ff0200 98ff0200 ff984000 98ff0200 98ff0200 ff984000 98ff0200 ff984000 - {a=>43,b=>2} 2b000200 2b000200 2b000200 002b4000 2b000200 2b000200 002b4000 2b000200 002b4000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; }; - {c=>1,a=>3,b=>3} 03000b00 03000b00 03000b00 00036400 03000b00 03000b00 00036400 03000b00 00036400 - {c=>-2,a=>65,b=>7} 41003700 41003700 41003700 0041f800 41003700 41003700 0041f800 41003700 0041f800 - {c=>-2,a=>41,b=>1} 29003100 29003100 29003100 00293800 29003100 29003100 00293800 29003100 00293800 - {c=>2,a=>111,b=>5} 6f001500 6f001500 6f001500 006fa800 6f001500 6f001500 006fa800 6f001500 006fa800 - {c=>-2,a=>11,b=>1} 0b003100 0b003100 0b003100 000b3800 0b003100 0b003100 000b3800 0b003100 000b3800 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>121,b=>6,d=>-2} 79008e01 79008e01 79008e01 0079c700 79008e01 79008e01 0079c700 79008e01 0079c700 - {c=>2,a=>-66,b=>7,d=>-3} beff5701 beff5701 beff5701 ffbeea80 beff5701 beff5701 ffbeea80 beff5701 ffbeea80 - {c=>3,a=>-37,b=>3,d=>1} dbff5b00 dbff5b00 dbff5b00 ffdb6c80 dbff5b00 dbff5b00 ffdb6c80 dbff5b00 ffdb6c80 - {c=>-1,a=>-22,b=>6,d=>-3} eaff7e01 eaff7e01 eaff7e01 ffeade80 eaff7e01 eaff7e01 ffeade80 eaff7e01 ffeade80 - {c=>-1,a=>-107,b=>1,d=>-2} 95ffb901 95ffb901 95ffb901 ff953f00 95ffb901 95ffb901 ff953f00 95ffb901 ff953f00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>3,a=>113,b=>7,d=>2} 71009f04 71009f04 71009f04 0071ed20 71009f04 71009f04 0071ed20 71009f04 0071ed20 - {e=>3,c=>2,a=>104,b=>0,d=>-2} 68009007 68009007 68009007 00680b30 68009007 68009007 00680b30 68009007 00680b30 - {e=>4,c=>-4,a=>91,b=>2,d=>-1} 5b00e209 5b00e209 5b00e209 005b53c0 5b00e209 5b00e209 005b53c0 5b00e209 005b53c0 - {e=>1,c=>0,a=>-67,b=>3,d=>0} bdff0302 bdff0302 bdff0302 ffbd6010 bdff0302 bdff0302 ffbd6010 bdff0302 ffbd6010 - {e=>6,c=>-2,a=>-125,b=>5,d=>-2} 83ffb50d 83ffb50d 83ffb50d ff83bb60 83ffb50d 83ffb50d ff83bb60 83ffb50d ff83bb60 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>-4,a=>63,b=>1,d=>-3,f=>'UE7'} 3f006179 3f006179 3f006179 003f32ce 3f006179 3f006179 003f32ce 3f006179 003f32ce - {e=>2,c=>2,a=>20,b=>1,d=>-4,f=>'UE1'} 14001115 14001115 14001115 00142a22 14001115 14001115 00142a22 14001115 00142a22 - {e=>6,c=>-3,a=>-51,b=>5,d=>1,f=>'UE1'} cdff6d1c cdff6d1c cdff6d1c ffcdb4e2 cdff6d1c cdff6d1c ffcdb4e2 cdff6d1c ffcdb4e2 - {e=>6,c=>0,a=>82,b=>2,d=>0,f=>'UE0'} 5200020c 5200020c 5200020c 00524060 5200020c 5200020c 00524060 5200020c 00524060 - {e=>5,c=>-4,a=>32,b=>4,d=>0,f=>'UE6'} 2000246a 2000246a 2000246a 0020905c 2000246a 2000246a 0020905c 2000246a 0020905c = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>0,c=>-4,a=>-51,g=>5,b=>5,d=>1,f=>'UE0'} cdff650005000000 cdff650005000000 cdff650005000000 ffcdb080a0000000 cdff650005000000 cdff650005000000 ffcdb080a0000000 cdff650005000000 ffcdb080a0000000 - {e=>3,c=>-3,a=>51,g=>5,b=>3,d=>1,f=>'UE7'} 33006b7605000000 33006b7605000000 33006b7605000000 003374bea0000000 33006b7605000000 33006b7605000000 003374bea0000000 33006b7605000000 003374bea0000000 - {e=>2,c=>-3,a=>-58,g=>5,b=>3,d=>3,f=>'UE3'} c6ffeb3405000000 c6ffeb3405000000 c6ffeb3405000000 ffc675a6a0000000 c6ffeb3405000000 c6ffeb3405000000 ffc675a6a0000000 c6ffeb3405000000 ffc675a6a0000000 - {e=>5,c=>1,a=>-74,g=>7,b=>3,d=>-2,f=>'UE3'} b6ff8b3b07000000 b6ff8b3b07000000 b6ff8b3b07000000 ffb66756e0000000 b6ff8b3b07000000 b6ff8b3b07000000 ffb66756e0000000 b6ff8b3b07000000 ffb66756e0000000 - {e=>3,c=>1,a=>90,g=>5,b=>1,d=>3,f=>'UE6'} 5a00c96605000000 5a00c96605000000 5a00c96605000000 005a25bca0000000 5a00c96605000000 5a00c96605000000 005a25bca0000000 5a00c96605000000 005a25bca0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>7,c=>-4,a=>20,g=>5,b=>1,d=>2,f=>'UE0'} 1400a10e05000000 1400a10e05000000 1400a10e05000000 00143170a0000000 1400a10e05000000 1400a10e05000000 00143170a0000000 1400a10e05000000 00143170a0000000 - {e=>3,c=>-3,a=>78,g=>5,b=>4,d=>2,f=>'UE5'} 4e00ac5605000000 4e00ac5605000000 4e00ac5605000000 004e953aa0000000 4e00ac5605000000 4e00ac5605000000 004e953aa0000000 4e00ac5605000000 004e953aa0000000 - {e=>6,c=>3,a=>-109,g=>0,b=>6,d=>2,f=>'UE4'} 93ff9e4c00000000 93ff9e4c00000000 93ff9e4c00000000 ff93cd6800000000 93ff9e4c00000000 93ff9e4c00000000 ff93cd6800000000 93ff9e4c00000000 ff93cd6800000000 - {e=>5,c=>0,a=>92,g=>2,b=>4,d=>1,f=>'UE1'} 5c00441a02000000 5c00441a02000000 5c00441a02000000 005c80d240000000 5c00441a02000000 5c00441a02000000 005c80d240000000 5c00441a02000000 005c80d240000000 - {e=>6,c=>2,a=>-108,g=>4,b=>7,d=>-1,f=>'UE4'} 94ffd74d04000000 94ffd74d04000000 94ffd74d04000000 ff94ebe880000000 94ffd74d04000000 94ffd74d04000000 ff94ebe880000000 94ffd74d04000000 ff94ebe880000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>8,d=>-1,c=>-4,h=>6,b=>1,g=>5,f=>'UE6'} 0800e1670500000006000000 0800e1670500000006000000 0800e1670500000006000000 000833bca0000000c0000000 0800e1670500000006000000 0800e1670500000006000000 000833bca0000000c0000000 0800e1670500000006000000 000833bca0000000c0000000 - {e=>4,a=>118,d=>1,c=>0,h=>2,b=>3,g=>1,f=>'UE6'} 760043680100000002000000 760043680100000002000000 760043680100000002000000 007660cc2000000040000000 760043680100000002000000 760043680100000002000000 007660cc2000000040000000 760043680100000002000000 007660cc2000000040000000 - {e=>7,a=>27,d=>-4,c=>2,h=>1,b=>4,g=>3,f=>'UE2'} 1b00142f0300000001000000 1b00142f0300000001000000 1b00142f0300000001000000 001b8a746000000020000000 1b00142f0300000001000000 1b00142f0300000001000000 001b8a746000000020000000 1b00142f0300000001000000 001b8a746000000020000000 - {e=>0,a=>91,d=>-2,c=>3,h=>3,b=>5,g=>1,f=>'UE6'} 5b009d610100000003000000 5b009d610100000003000000 5b009d610100000003000000 005baf0c2000000060000000 5b009d610100000003000000 5b009d610100000003000000 005baf0c2000000060000000 5b009d610100000003000000 005baf0c2000000060000000 - {e=>2,a=>70,d=>-3,c=>1,h=>6,b=>6,g=>5,f=>'UE4'} 46004e450500000006000000 46004e450500000006000000 46004e450500000006000000 0046c6a8a0000000c0000000 46004e450500000006000000 46004e450500000006000000 0046c6a8a0000000c0000000 46004e450500000006000000 0046c6a8a0000000c0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>-26,d=>1,c=>-1,h=>0,b=>3,g=>0,f=>'UE4',i=>-4} e6ff7b440000000020000000 e6ff7b440000000020000000 e6ff7b440000000020000000 ffe67ca80000000010000000 e6ff7b440000000020000000 e6ff7b440000000020000000 ffe67ca80000000010000000 e6ff7b440000000020000000 ffe67ca80000000010000000 - {e=>0,a=>70,d=>3,c=>0,h=>3,b=>0,g=>5,f=>'UE0',i=>1} 4600c000050000000b000000 4600c000050000000b000000 4600c000050000000b000000 00460180a000000064000000 4600c000050000000b000000 4600c000050000000b000000 00460180a000000064000000 4600c000050000000b000000 00460180a000000064000000 - {e=>1,a=>17,d=>3,c=>-4,h=>3,b=>1,g=>1,f=>'UE4',i=>-1} 1100e142010000003b000000 1100e142010000003b000000 1100e142010000003b000000 00113198200000007c000000 1100e142010000003b000000 1100e142010000003b000000 00113198200000007c000000 1100e142010000003b000000 00113198200000007c000000 - {e=>2,a=>39,d=>1,c=>1,h=>0,b=>1,g=>0,f=>'UE1',i=>0} 270049140000000000000000 270049140000000000000000 270049140000000000000000 002724a20000000000000000 270049140000000000000000 270049140000000000000000 002724a20000000000000000 270049140000000000000000 002724a20000000000000000 - {e=>6,a=>-65,d=>-2,c=>-1,h=>2,b=>6,g=>7,f=>'UE1',i=>-4} bfffbe1d0700000022000000 bfffbe1d0700000022000000 bfffbe1d0700000022000000 ffbfdf62e000000050000000 bfffbe1d0700000022000000 bfffbe1d0700000022000000 ffbfdf62e000000050000000 bfffbe1d0700000022000000 ffbfdf62e000000050000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>7,a=>118,d=>1,j=>'SE2',c=>1,h=>6,b=>3,g=>5,f=>'UE4',i=>2} 76004b4e0500000096000000 76004b4e0500000096000000 76004b4e0500000096000000 007664f8a0000000c9000000 76004b4e0500000096000000 76004b4e0500000096000000 007664f8a0000000c9000000 76004b4e0500000096000000 007664f8a0000000c9000000 - {e=>0,a=>32,d=>2,j=>'SE3',c=>2,h=>5,b=>3,g=>7,f=>'UE1',i=>-4} 2000931007000000e5000000 2000931007000000e5000000 2000931007000000e5000000 00206902e0000000b1800000 2000931007000000e5000000 2000931007000000e5000000 00206902e0000000b1800000 2000931007000000e5000000 00206902e0000000b1800000 - {e=>2,a=>88,d=>0,j=>'SEM3',c=>1,h=>5,b=>2,g=>2,f=>'UE0',i=>1} 58000a04020000004d010000 58000a04020000004d010000 58000a04020000004d010000 0058442040000000a6800000 58000a04020000004d010000 58000a04020000004d010000 0058442040000000a6800000 58000a04020000004d010000 0058442040000000a6800000 - {e=>7,a=>105,d=>-3,j=>'SE3',c=>0,h=>0,b=>3,g=>2,f=>'UE0',i=>-2} 6900430f02000000f0000000 6900430f02000000f0000000 6900430f02000000f0000000 006962f04000000019800000 6900430f02000000f0000000 6900430f02000000f0000000 006962f04000000019800000 6900430f02000000f0000000 006962f04000000019800000 - {e=>4,a=>-56,d=>-2,j=>'SE0',c=>-3,h=>4,b=>1,g=>4,f=>'UE4',i=>2} c8ffa9490400000014000000 c8ffa9490400000014000000 c8ffa9490400000014000000 ffc837488000000088000000 c8ffa9490400000014000000 c8ffa9490400000014000000 ffc837488000000088000000 c8ffa9490400000014000000 ffc837488000000088000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>0,a=>-104,d=>-4,j=>'SE0',c=>-2,k=>8,h=>1,b=>4,g=>6,f=>'UE1',i=>1} 98ff34110600000009000800 98ff34110600000009000800 98ff34110600000009000800 ff989a02c000000024000800 98ff34110600000009000800 98ff34110600000009000800 ff989a02c000000024000800 98ff34110600000009000800 ff989a02c000000024000800 - {e=>2,a=>-127,d=>-1,j=>'SE0',c=>0,k=>-15,h=>5,b=>7,g=>0,f=>'UE1',i=>-1} 81ffc715000000003d00f100 81ffc715000000003d00f100 81ffc715000000003d00f100 ff81e3a200000000bc00f100 81ffc715000000003d00f100 81ffc715000000003d00f100 ff81e3a200000000bc00f100 81ffc715000000003d00f100 ff81e3a200000000bc00f100 - {e=>0,a=>47,d=>2,j=>'SEM2',c=>-4,k=>-44,h=>0,b=>7,g=>0,f=>'UE3',i=>-3} 2f00a73000000000a801d400 2f00a73000000000a801d400 2f00a73000000000a801d400 002ff106000000001700d400 2f00a73000000000a801d400 2f00a73000000000a801d400 002ff106000000001700d400 2f00a73000000000a801d400 002ff106000000001700d400 - {e=>7,a=>116,d=>-1,j=>'SEM3',c=>-3,k=>-14,h=>3,b=>5,g=>1,f=>'UE7',i=>2} 7400ed7f010000005301f200 7400ed7f010000005301f200 7400ed7f010000005301f200 0074b7fe200000006a80f200 7400ed7f010000005301f200 7400ed7f010000005301f200 0074b7fe200000006a80f200 7400ed7f010000005301f200 0074b7fe200000006a80f200 - {e=>7,a=>45,d=>-1,j=>'SE3',c=>-4,k=>65,h=>3,b=>2,g=>6,f=>'UE0',i=>1} 2d00e20f06000000cb004100 2d00e20f06000000cb004100 2d00e20f06000000cb004100 002d53f0c000000065804100 2d00e20f06000000cb004100 2d00e20f06000000cb004100 002d53f0c000000065804100 2d00e20f06000000cb004100 002d53f0c000000065804100 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>1,a=>-38,d=>0,j=>'SEM4',l=>1,c=>3,k=>122,h=>0,b=>3,g=>6,f=>'UE0',i=>-4} daff1b020600000020017a01 daff1b020600000020017a01 daff1b020600000020017a01 ffda6c10c000000012007a20 daff1b020600000020017a01 daff1b020600000020017a01 ffda6c10c000000012007a20 daff1b020600000020017a01 ffda6c10c000000012007a20 - {e=>6,a=>-120,d=>-2,j=>'SE0',l=>0,c=>2,k=>-45,h=>4,b=>5,g=>6,f=>'UE7',i=>-1} 88ff957d060000003c00d300 88ff957d060000003c00d300 88ff957d060000003c00d300 ff88ab6ec00000009c00d300 88ff957d060000003c00d300 88ff957d060000003c00d300 ff88ab6ec00000009c00d300 88ff957d060000003c00d300 ff88ab6ec00000009c00d300 - {e=>2,a=>115,d=>3,j=>'SEM4',l=>2,c=>-1,k=>-24,h=>4,b=>3,g=>1,f=>'UE2',i=>-3} 7300fb24010000002c01e802 7300fb24010000002c01e802 7300fb24010000002c01e802 00737da4200000009600e840 7300fb24010000002c01e802 7300fb24010000002c01e802 00737da4200000009600e840 7300fb24010000002c01e802 00737da4200000009600e840 - {e=>2,a=>-120,d=>2,j=>'SEM3',l=>5,c=>-3,k=>-38,h=>3,b=>5,g=>5,f=>'UE0',i=>0} 88ffad04050000004301da05 88ffad04050000004301da05 88ffad04050000004301da05 ff88b520a00000006280daa0 88ffad04050000004301da05 88ffad04050000004301da05 ff88b520a00000006280daa0 88ffad04050000004301da05 ff88b520a00000006280daa0 - {e=>1,a=>-3,d=>3,j=>'SEM4',l=>6,c=>3,k=>-72,h=>4,b=>1,g=>3,f=>'UE4',i=>-3} fdffd942030000002c01b806 fdffd942030000002c01b806 fdffd942030000002c01b806 fffd2d98600000009600b8c0 fdffd942030000002c01b806 fdffd942030000002c01b806 fffd2d98600000009600b8c0 fdffd942030000002c01b806 fffd2d98600000009600b8c0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>-115,m=>-1,d=>1,j=>'SE1',l=>5,c=>3,k=>34,h=>4,b=>3,g=>5,f=>'UE3',i=>-1} 8dff5b30050000007c00223d 8dff5b30050000007c00223d 8dff5b30050000007c00223d ff8d6c86a00000009c8022bc 8dff5b30050000007c00223d 8dff5b30050000007c00223d ff8d6c86a00000009c8022bc 8dff5b30050000007c00223d ff8d6c86a00000009c8022bc - {e=>7,a=>101,m=>-3,d=>2,j=>'SE2',l=>7,c=>2,k=>33,h=>5,b=>4,g=>7,f=>'UE5',i=>1} 6500945e070000008d00212f 6500945e070000008d00212f 6500945e070000008d00212f 0065897ae0000000a50021f4 6500945e070000008d00212f 6500945e070000008d00212f 0065897ae0000000a50021f4 6500945e070000008d00212f 0065897ae0000000a50021f4 - {e=>4,a=>75,m=>-2,d=>-1,j=>'SE0',l=>6,c=>-4,k=>-42,h=>0,b=>5,g=>5,f=>'UE2',i=>-1} 4b00e529050000003800d636 4b00e529050000003800d636 4b00e529050000003800d636 004bb3c4a00000001c00d6d8 4b00e529050000003800d636 4b00e529050000003800d636 004bb3c4a00000001c00d6d8 4b00e529050000003800d636 004bb3c4a00000001c00d6d8 - {e=>4,a=>124,m=>-2,d=>1,j=>'SE0',l=>2,c=>2,k=>-11,h=>2,b=>2,g=>2,f=>'UE5',i=>-1} 7c005258020000003a00f532 7c005258020000003a00f532 7c005258020000003a00f532 007c48ca400000005c00f558 7c005258020000003a00f532 7c005258020000003a00f532 007c48ca400000005c00f558 7c005258020000003a00f532 007c48ca400000005c00f558 - {e=>1,a=>39,m=>-2,d=>2,j=>'SE1',l=>5,c=>0,k=>86,h=>1,b=>1,g=>0,f=>'UE6',i=>-4} 270081620000000061005635 270081620000000061005635 270081620000000061005635 0027211c00000000308056b8 270081620000000061005635 270081620000000061005635 0027211c00000000308056b8 270081620000000061005635 0027211c00000000308056b8 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>6,a=>-69,m=>-2,d=>1,j=>'SE2',l=>5,c=>3,k=>-27,h=>7,b=>0,g=>7,f=>'UE6',i=>-2} bbff586a07000000b700e53506000000 bbff586a07000000b700e53506000000 bbff586a07000000b700e53506000000 ffbb0cdce0000000f900e5b8c0000000 bbff586a07000000b700e53506000000 bbff586a07000000b700e53506000000 ffbb0cdce0000000f900e5b8c0000000 bbff586a07000000b700e53506000000 ffbb0cdce0000000f900e5b8c0000000 - {e=>5,n=>2,a=>107,m=>-3,d=>0,j=>'SE1',l=>1,c=>-4,k=>111,h=>1,b=>0,g=>4,f=>'UE6',i=>-2} 6b00206a0400000071006f2902000000 6b00206a0400000071006f2902000000 6b00206a0400000071006f2902000000 006b105c8000000038806f3440000000 6b00206a0400000071006f2902000000 6b00206a0400000071006f2902000000 006b105c8000000038806f3440000000 6b00206a0400000071006f2902000000 006b105c8000000038806f3440000000 - {e=>4,n=>7,a=>-128,m=>-2,d=>-1,j=>'SEM2',l=>7,c=>-4,k=>-5,h=>5,b=>5,g=>1,f=>'UE7',i=>-4} 80ffe57901000000a501fb3707000000 80ffe57901000000a501fb3707000000 80ffe57901000000a501fb3707000000 ff80b3ce20000000b300fbf8e0000000 80ffe57901000000a501fb3707000000 80ffe57901000000a501fb3707000000 ff80b3ce20000000b300fbf8e0000000 80ffe57901000000a501fb3707000000 ff80b3ce20000000b300fbf8e0000000 - {e=>4,n=>4,a=>-44,m=>0,d=>3,j=>'SEM3',l=>3,c=>1,k=>-62,h=>4,b=>0,g=>2,f=>'UE5',i=>-1} d4ffc858020000007c01c20304000000 d4ffc858020000007c01c20304000000 d4ffc858020000007c01c20304000000 ffd405ca400000009e80c26080000000 d4ffc858020000007c01c20304000000 d4ffc858020000007c01c20304000000 ffd405ca400000009e80c26080000000 d4ffc858020000007c01c20304000000 ffd405ca400000009e80c26080000000 - {e=>1,n=>3,a=>20,m=>0,d=>-3,j=>'SE0',l=>7,c=>3,k=>86,h=>1,b=>3,g=>2,f=>'UE2',i=>3} 14005b23020000001900560703000000 14005b23020000001900560703000000 14005b23020000001900560703000000 00146e94400000002c0056e060000000 14005b23020000001900560703000000 14005b23020000001900560703000000 00146e94400000002c0056e060000000 14005b23020000001900560703000000 00146e94400000002c0056e060000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>7,a=>-36,m=>-2,d=>-4,j=>'SEM1',l=>5,c=>-4,k=>-30,h=>6,b=>2,g=>7,f=>'UE1',o=>11,i=>-1} dcff221107000000fe01e235070b0000 dcff221107000000fe01e235070b0000 dcff221107000000fe01e235070b0000 ffdc5202e0000000df80e2b8e00b0000 dcff221107000000fe01e235070b0000 dcff221107000000fe01e235070b0000 ffdc5202e0000000df80e2b8e00b0000 dcff221107000000fe01e235070b0000 ffdc5202e0000000df80e2b8e00b0000 - {e=>1,n=>0,a=>47,m=>2,d=>-1,j=>'SE1',l=>6,c=>2,k=>19,h=>7,b=>5,g=>3,f=>'UE5',o=>117,i=>-1} 2f00d553030000007f00131600750000 2f00d553030000007f00131600750000 2f00d553030000007f00131600750000 002fab9a60000000fc8013c800750000 2f00d553030000007f00131600750000 2f00d553030000007f00131600750000 002fab9a60000000fc8013c800750000 2f00d553030000007f00131600750000 002fab9a60000000fc8013c800750000 - {e=>3,n=>4,a=>60,m=>-4,d=>0,j=>'SE0',l=>6,c=>-2,k=>48,h=>1,b=>2,g=>6,f=>'UE7',o=>42,i=>1} 3c0032760600000009003026042a0000 3c0032760600000009003026042a0000 3c0032760600000009003026042a0000 003c583ec0000000240030d0802a0000 3c0032760600000009003026042a0000 3c0032760600000009003026042a0000 003c583ec0000000240030d0802a0000 3c0032760600000009003026042a0000 003c583ec0000000240030d0802a0000 - {e=>1,n=>2,a=>116,m=>1,d=>-4,j=>'SEM2',l=>7,c=>3,k=>100,h=>0,b=>7,g=>2,f=>'UE3',o=>77,i=>-1} 74001f3302000000b801640f024d0000 74001f3302000000b801640f024d0000 74001f3302000000b801640f024d0000 0074ee16400000001f0064e4404d0000 74001f3302000000b801640f024d0000 74001f3302000000b801640f024d0000 0074ee16400000001f0064e4404d0000 74001f3302000000b801640f024d0000 0074ee16400000001f0064e4404d0000 - {e=>1,n=>7,a=>-98,m=>-3,d=>2,j=>'SEM4',l=>5,c=>0,k=>27,h=>7,b=>1,g=>1,f=>'UE2',o=>35,i=>-2} 9eff81220100000037011b2d07230000 9eff81220100000037011b2d07230000 9eff81220100000037011b2d07230000 ff9e211420000000fa001bb4e0230000 9eff81220100000037011b2d07230000 9eff81220100000037011b2d07230000 ff9e211420000000fa001bb4e0230000 9eff81220100000037011b2d07230000 ff9e211420000000fa001bb4e0230000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; }; - {a=>54,b=>7} 3600000007000000 3600000007000000 3600000007000000 00000036e0000000 3600000007000000 3600000007000000 00000036e0000000 3600000007000000 00000036e0000000 - {a=>-14,b=>1} f2ffffff01000000 f2ffffff01000000 f2ffffff01000000 fffffff220000000 f2ffffff01000000 f2ffffff01000000 fffffff220000000 f2ffffff01000000 fffffff220000000 - {a=>8,b=>5} 0800000005000000 0800000005000000 0800000005000000 00000008a0000000 0800000005000000 0800000005000000 00000008a0000000 0800000005000000 00000008a0000000 - {a=>-128,b=>2} 80ffffff02000000 80ffffff02000000 80ffffff02000000 ffffff8040000000 80ffffff02000000 80ffffff02000000 ffffff8040000000 80ffffff02000000 ffffff8040000000 - {a=>89,b=>7} 5900000007000000 5900000007000000 5900000007000000 00000059e0000000 5900000007000000 5900000007000000 00000059e0000000 5900000007000000 00000059e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>71,b=>4} 4700000024000000 4700000024000000 4700000024000000 0000004790000000 4700000024000000 4700000024000000 0000004790000000 4700000024000000 0000004790000000 - {c=>-1,a=>22,b=>7} 160000003f000000 160000003f000000 160000003f000000 00000016fc000000 160000003f000000 160000003f000000 00000016fc000000 160000003f000000 00000016fc000000 - {c=>3,a=>6,b=>4} 060000001c000000 060000001c000000 060000001c000000 000000068c000000 060000001c000000 060000001c000000 000000068c000000 060000001c000000 000000068c000000 - {c=>0,a=>5,b=>7} 0500000007000000 0500000007000000 0500000007000000 00000005e0000000 0500000007000000 0500000007000000 00000005e0000000 0500000007000000 00000005e0000000 - {c=>-1,a=>71,b=>5} 470000003d000000 470000003d000000 470000003d000000 00000047bc000000 470000003d000000 470000003d000000 00000047bc000000 470000003d000000 00000047bc000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>-39,b=>5,d=>-4} d9ffffff2d010000 d9ffffff2d010000 d9ffffff2d010000 ffffffd9b6000000 d9ffffff2d010000 d9ffffff2d010000 ffffffd9b6000000 d9ffffff2d010000 ffffffd9b6000000 - {c=>1,a=>-63,b=>0,d=>-1} c1ffffffc8010000 c1ffffffc8010000 c1ffffffc8010000 ffffffc107800000 c1ffffffc8010000 c1ffffffc8010000 ffffffc107800000 c1ffffffc8010000 ffffffc107800000 - {c=>3,a=>-125,b=>4,d=>1} 83ffffff5c000000 83ffffff5c000000 83ffffff5c000000 ffffff838c800000 83ffffff5c000000 83ffffff5c000000 ffffff838c800000 83ffffff5c000000 ffffff838c800000 - {c=>-4,a=>-67,b=>6,d=>-1} bdffffffe6010000 bdffffffe6010000 bdffffffe6010000 ffffffbdd3800000 bdffffffe6010000 bdffffffe6010000 ffffffbdd3800000 bdffffffe6010000 ffffffbdd3800000 - {c=>3,a=>-19,b=>7,d=>-4} edffffff1f010000 edffffff1f010000 edffffff1f010000 ffffffedee000000 edffffff1f010000 edffffff1f010000 ffffffedee000000 edffffff1f010000 ffffffedee000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>-1,a=>96,b=>4,d=>1} 600000007c040000 600000007c040000 600000007c040000 000000609ca00000 600000007c040000 600000007c040000 000000609ca00000 600000007c040000 000000609ca00000 - {e=>0,c=>1,a=>-33,b=>2,d=>0} dfffffff0a000000 dfffffff0a000000 dfffffff0a000000 ffffffdf44000000 dfffffff0a000000 dfffffff0a000000 ffffffdf44000000 dfffffff0a000000 ffffffdf44000000 - {e=>1,c=>-3,a=>-123,b=>4,d=>-2} 85ffffffac030000 85ffffffac030000 85ffffffac030000 ffffff8597100000 85ffffffac030000 85ffffffac030000 ffffff8597100000 85ffffffac030000 ffffff8597100000 - {e=>2,c=>0,a=>-85,b=>3,d=>2} abffffff83040000 abffffff83040000 abffffff83040000 ffffffab61200000 abffffff83040000 abffffff83040000 ffffffab61200000 abffffff83040000 ffffffab61200000 - {e=>5,c=>2,a=>93,b=>6,d=>-3} 5d000000560b0000 5d000000560b0000 5d000000560b0000 0000005dcad00000 5d000000560b0000 5d000000560b0000 0000005dcad00000 5d000000560b0000 0000005dcad00000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>-2,a=>-117,b=>4,d=>2,f=>'UE6'} 8bffffffb4680000 8bffffffb4680000 8bffffffb4680000 ffffff8b994c0000 8bffffffb4680000 8bffffffb4680000 ffffff8b994c0000 8bffffffb4680000 ffffff8b994c0000 - {e=>2,c=>-4,a=>78,b=>0,d=>-2,f=>'UE4'} 4e000000a0450000 4e000000a0450000 4e000000a0450000 0000004e13280000 4e000000a0450000 4e000000a0450000 0000004e13280000 4e000000a0450000 0000004e13280000 - {e=>3,c=>3,a=>-102,b=>0,d=>-3,f=>'UE2'} 9affffff58270000 9affffff58270000 9affffff58270000 ffffff9a0eb40000 9affffff58270000 9affffff58270000 ffffff9a0eb40000 9affffff58270000 ffffff9a0eb40000 - {e=>3,c=>-4,a=>10,b=>2,d=>0,f=>'UE1'} 0a00000022160000 0a00000022160000 0a00000022160000 0000000a50320000 0a00000022160000 0a00000022160000 0000000a50320000 0a00000022160000 0000000a50320000 - {e=>5,c=>3,a=>112,b=>7,d=>-2,f=>'UE1'} 700000009f1b0000 700000009f1b0000 700000009f1b0000 00000070ef520000 700000009f1b0000 700000009f1b0000 00000070ef520000 700000009f1b0000 00000070ef520000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>4,c=>3,a=>77,g=>5,b=>3,d=>2,f=>'UE5'} 4d0000009bd80200 4d0000009bd80200 4d0000009bd80200 0000004d6d4b4000 4d0000009bd80200 4d0000009bd80200 0000004d6d4b4000 4d0000009bd80200 0000004d6d4b4000 - {e=>7,c=>3,a=>5,g=>6,b=>2,d=>0,f=>'UE5'} 050000001a5e0300 050000001a5e0300 050000001a5e0300 000000054c7b8000 050000001a5e0300 050000001a5e0300 000000054c7b8000 050000001a5e0300 000000054c7b8000 - {e=>7,c=>-2,a=>-24,g=>2,b=>0,d=>3,f=>'UE1'} e8fffffff01e0100 e8fffffff01e0100 e8fffffff01e0100 ffffffe819f28000 e8fffffff01e0100 e8fffffff01e0100 ffffffe819f28000 e8fffffff01e0100 ffffffe819f28000 - {e=>7,c=>3,a=>-1,g=>3,b=>6,d=>-2,f=>'UE6'} ffffffff9eef0100 ffffffff9eef0100 ffffffff9eef0100 ffffffffcf7cc000 ffffffff9eef0100 ffffffff9eef0100 ffffffffcf7cc000 ffffffff9eef0100 ffffffffcf7cc000 - {e=>1,c=>-1,a=>-111,g=>1,b=>4,d=>1,f=>'UE5'} 91ffffff7cd20000 91ffffff7cd20000 91ffffff7cd20000 ffffff919c9a4000 91ffffff7cd20000 91ffffff7cd20000 ffffff919c9a4000 91ffffff7cd20000 ffffff919c9a4000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>3,c=>-3,a=>50,g=>6,b=>2,d=>-3,f=>'UE2'} 320000006a270300 320000006a270300 320000006a270300 0000003256b58000 320000006a270300 320000006a270300 0000003256b58000 320000006a270300 0000003256b58000 - {e=>2,c=>-3,a=>47,g=>0,b=>3,d=>-3,f=>'UE1'} 2f0000006b150000 2f0000006b150000 2f0000006b150000 0000002f76a20000 2f0000006b150000 2f0000006b150000 0000002f76a20000 2f0000006b150000 0000002f76a20000 - {e=>0,c=>0,a=>-123,g=>6,b=>6,d=>-3,f=>'UE4'} 85ffffff46410300 85ffffff46410300 85ffffff46410300 ffffff85c2898000 85ffffff46410300 85ffffff46410300 ffffff85c2898000 85ffffff46410300 ffffff85c2898000 - {e=>1,c=>-2,a=>-46,g=>4,b=>5,d=>0,f=>'UE6'} d2ffffff35620200 d2ffffff35620200 d2ffffff35620200 ffffffd2b81d0000 d2ffffff35620200 d2ffffff35620200 ffffffd2b81d0000 d2ffffff35620200 ffffffd2b81d0000 - {e=>4,c=>-4,a=>41,g=>7,b=>7,d=>-2,f=>'UE3'} 29000000a7b90300 29000000a7b90300 29000000a7b90300 00000029f347c000 29000000a7b90300 29000000a7b90300 00000029f347c000 29000000a7b90300 00000029f347c000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>4,a=>-86,d=>3,c=>3,h=>2,b=>7,g=>7,f=>'UE7'} aaffffffdff8030002000000 aaffffffdff8030002000000 aaffffffdff8030002000000 ffffffaaedcfc00040000000 aaffffffdff8030002000000 aaffffffdff8030002000000 ffffffaaedcfc00040000000 aaffffffdff8030002000000 ffffffaaedcfc00040000000 - {e=>4,a=>64,d=>2,c=>1,h=>5,b=>5,g=>4,f=>'UE0'} 400000008d08020005000000 400000008d08020005000000 400000008d08020005000000 00000040a5410000a0000000 400000008d08020005000000 400000008d08020005000000 00000040a5410000a0000000 400000008d08020005000000 00000040a5410000a0000000 - {e=>4,a=>-56,d=>2,c=>-4,h=>6,b=>5,g=>1,f=>'UE6'} c8ffffffa5e8000006000000 c8ffffffa5e8000006000000 c8ffffffa5e8000006000000 ffffffc8b14c4000c0000000 c8ffffffa5e8000006000000 c8ffffffa5e8000006000000 ffffffc8b14c4000c0000000 c8ffffffa5e8000006000000 ffffffc8b14c4000c0000000 - {e=>6,a=>78,d=>3,c=>-1,h=>3,b=>0,g=>6,f=>'UE4'} 4e000000f84c030003000000 4e000000f84c030003000000 4e000000f84c030003000000 0000004e1de9800060000000 4e000000f84c030003000000 4e000000f84c030003000000 0000004e1de9800060000000 4e000000f84c030003000000 0000004e1de9800060000000 - {e=>7,a=>-101,d=>0,c=>-2,h=>6,b=>1,g=>4,f=>'UE1'} 9bffffff311e020006000000 9bffffff311e020006000000 9bffffff311e020006000000 ffffff9b38730000c0000000 9bffffff311e020006000000 9bffffff311e020006000000 ffffff9b38730000c0000000 9bffffff311e020006000000 ffffff9b38730000c0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>98,d=>1,c=>0,h=>3,b=>1,g=>0,f=>'UE5',i=>-4} 620000004158000023000000 620000004158000023000000 620000004158000023000000 0000006220ca000070000000 620000004158000023000000 620000004158000023000000 0000006220ca000070000000 620000004158000023000000 0000006220ca000070000000 - {e=>6,a=>-56,d=>-2,c=>-4,h=>6,b=>4,g=>7,f=>'UE5',i=>2} c8ffffffa4dd030016000000 c8ffffffa4dd030016000000 c8ffffffa4dd030016000000 ffffffc8936bc000c8000000 c8ffffffa4dd030016000000 c8ffffffa4dd030016000000 ffffffc8936bc000c8000000 c8ffffffa4dd030016000000 ffffffc8936bc000c8000000 - {e=>3,a=>-48,d=>0,c=>1,h=>5,b=>7,g=>5,f=>'UE1',i=>3} d0ffffff0f9602001d000000 d0ffffff0f9602001d000000 d0ffffff0f9602001d000000 ffffffd0e4334000ac000000 d0ffffff0f9602001d000000 d0ffffff0f9602001d000000 ffffffd0e4334000ac000000 d0ffffff0f9602001d000000 ffffffd0e4334000ac000000 - {e=>0,a=>-14,d=>-1,c=>-4,h=>1,b=>1,g=>4,f=>'UE1',i=>1} f2ffffffe111020009000000 f2ffffffe111020009000000 f2ffffffe111020009000000 fffffff23383000024000000 f2ffffffe111020009000000 f2ffffffe111020009000000 fffffff23383000024000000 f2ffffffe111020009000000 fffffff23383000024000000 - {e=>4,a=>-3,d=>3,c=>2,h=>1,b=>6,g=>6,f=>'UE4',i=>-2} fdffffffd648030031000000 fdffffffd648030031000000 fdffffffd648030031000000 fffffffdc9c9800038000000 fdffffffd648030031000000 fdffffffd648030031000000 fffffffdc9c9800038000000 fdffffffd648030031000000 fffffffdc9c9800038000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>7,a=>-125,d=>-1,j=>'SE0',c=>-3,h=>0,b=>3,g=>0,f=>'UE0',i=>0} 83ffffffeb0f000000000000 83ffffffeb0f000000000000 83ffffffeb0f000000000000 ffffff8377f0000000000000 83ffffffeb0f000000000000 83ffffffeb0f000000000000 ffffff8377f0000000000000 83ffffffeb0f000000000000 ffffff8377f0000000000000 - {e=>4,a=>-83,d=>1,j=>'SEM1',c=>-2,h=>0,b=>5,g=>2,f=>'UE1',i=>3} adffffff75180100d8010000 adffffff75180100d8010000 adffffff75180100d8010000 ffffffadb8c280000f800000 adffffff75180100d8010000 adffffff75180100d8010000 ffffffadb8c280000f800000 adffffff75180100d8010000 ffffffadb8c280000f800000 - {e=>1,a=>118,d=>-1,j=>'SE0',c=>1,h=>6,b=>1,g=>5,f=>'UE7',i=>0} 76000000c9f3020006000000 76000000c9f3020006000000 76000000c9f3020006000000 00000076279f4000c0000000 76000000c9f3020006000000 76000000c9f3020006000000 00000076279f4000c0000000 76000000c9f3020006000000 00000076279f4000c0000000 - {e=>1,a=>-5,d=>-4,j=>'SE0',c=>0,h=>0,b=>6,g=>3,f=>'UE3',i=>2} fbffffff06b3010010000000 fbffffff06b3010010000000 fbffffff06b3010010000000 fffffffbc216c00008000000 fbffffff06b3010010000000 fbffffff06b3010010000000 fffffffbc216c00008000000 fbffffff06b3010010000000 fffffffbc216c00008000000 - {e=>0,a=>70,d=>-3,j=>'SEM1',c=>0,h=>3,b=>5,g=>3,f=>'UE5',i=>2} 4600000045d10100d3010000 4600000045d10100d3010000 4600000045d10100d3010000 00000046a28ac0006b800000 4600000045d10100d3010000 4600000045d10100d3010000 00000046a28ac0006b800000 4600000045d10100d3010000 00000046a28ac0006b800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>0,a=>2,d=>0,j=>'SE2',c=>2,k=>37,h=>4,b=>1,g=>0,f=>'UE2',i=>0} 020000001120000084002500 020000001120000084002500 020000001120000084002500 000000022804000081002500 020000001120000084002500 020000001120000084002500 000000022804000081002500 020000001120000084002500 000000022804000081002500 - {e=>1,a=>68,d=>-2,j=>'SEM2',c=>-4,k=>-109,h=>0,b=>4,g=>2,f=>'UE5',i=>0} 44000000a453010080019300 44000000a453010080019300 44000000a453010080019300 00000044931a800003009300 44000000a453010080019300 44000000a453010080019300 00000044931a800003009300 44000000a453010080019300 00000044931a800003009300 - {e=>4,a=>117,d=>-4,j=>'SEM4',c=>2,k=>-10,h=>7,b=>3,g=>1,f=>'UE3',i=>-2} 7500000013b900003701f600 7500000013b900003701f600 7500000013b900003701f600 000000756a464000fa00f600 7500000013b900003701f600 7500000013b900003701f600 000000756a464000fa00f600 7500000013b900003701f600 000000756a464000fa00f600 - {e=>7,a=>-56,d=>-3,j=>'SE2',c=>3,k=>30,h=>7,b=>6,g=>5,f=>'UE5',i=>-1} c8ffffff5edf0200bf001e00 c8ffffff5edf0200bf001e00 c8ffffff5edf0200bf001e00 ffffffc8cefb4000fd001e00 c8ffffff5edf0200bf001e00 c8ffffff5edf0200bf001e00 ffffffc8cefb4000fd001e00 c8ffffff5edf0200bf001e00 ffffffc8cefb4000fd001e00 - {e=>1,a=>-1,d=>-2,j=>'SEM1',c=>-3,k=>-71,h=>6,b=>6,g=>3,f=>'UE2',i=>-3} ffffffffaea30100ee01b900 ffffffffaea30100ee01b900 ffffffffaea30100ee01b900 ffffffffd714c000d780b900 ffffffffaea30100ee01b900 ffffffffaea30100ee01b900 ffffffffd714c000d780b900 ffffffffaea30100ee01b900 ffffffffd714c000d780b900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>1,a=>26,d=>2,j=>'SEM1',l=>2,c=>-2,k=>-113,h=>2,b=>0,g=>0,f=>'UE7',i=>-3} 1a000000b0720000ea018f02 1a000000b0720000ea018f02 1a000000b0720000ea018f02 0000001a191e000057808f40 1a000000b0720000ea018f02 1a000000b0720000ea018f02 0000001a191e000057808f40 1a000000b0720000ea018f02 0000001a191e000057808f40 - {e=>2,a=>117,d=>-4,j=>'SE1',l=>6,c=>3,k=>-95,h=>1,b=>6,g=>4,f=>'UE0',i=>1} 750000001e0502004900a106 750000001e0502004900a106 750000001e0502004900a106 00000075ce2100002480a1c0 750000001e0502004900a106 750000001e0502004900a106 00000075ce2100002480a1c0 750000001e0502004900a106 00000075ce2100002480a1c0 - {e=>4,a=>69,d=>3,j=>'SE1',l=>7,c=>-3,k=>-103,h=>5,b=>4,g=>7,f=>'UE2',i=>-4} 45000000eca8030065009907 45000000eca8030065009907 45000000eca8030065009907 0000004595c5c000b08099e0 45000000eca8030065009907 45000000eca8030065009907 0000004595c5c000b08099e0 45000000eca8030065009907 0000004595c5c000b08099e0 - {e=>0,a=>66,d=>0,j=>'SEM1',l=>4,c=>-2,k=>-115,h=>0,b=>6,g=>2,f=>'UE6',i=>-1} 4200000036600100f8018d04 4200000036600100f8018d04 4200000036600100f8018d04 00000042d80c80001f808d80 4200000036600100f8018d04 4200000036600100f8018d04 00000042d80c80001f808d80 4200000036600100f8018d04 00000042d80c80001f808d80 - {e=>0,a=>115,d=>3,j=>'SE3',l=>6,c=>-3,k=>-110,h=>4,b=>7,g=>6,f=>'UE3',i=>1} 73000000ef300300cc009206 73000000ef300300cc009206 73000000ef300300cc009206 00000073f5878000858092c0 73000000ef300300cc009206 73000000ef300300cc009206 00000073f5878000858092c0 73000000ef300300cc009206 00000073f5878000858092c0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>20,m=>-3,d=>1,j=>'SE3',l=>5,c=>-3,k=>47,h=>7,b=>3,g=>2,f=>'UE7',i=>-4} 140000006b720100e7002f2d 140000006b720100e7002f2d 140000006b720100e7002f2d 00000014749e8000f1802fb4 140000006b720100e7002f2d 140000006b720100e7002f2d 00000014749e8000f1802fb4 140000006b720100e7002f2d 00000014749e8000f1802fb4 - {e=>5,a=>113,m=>0,d=>-2,j=>'SE3',l=>3,c=>-4,k=>63,h=>2,b=>7,g=>2,f=>'UE2',i=>2} 71000000a72b0100d2003f03 71000000a72b0100d2003f03 71000000a72b0100d2003f03 00000071f354800049803f60 71000000a72b0100d2003f03 71000000a72b0100d2003f03 00000071f354800049803f60 71000000a72b0100d2003f03 00000071f354800049803f60 - {e=>1,a=>58,m=>-1,d=>-1,j=>'SEM2',l=>1,c=>1,k=>4,h=>1,b=>2,g=>7,f=>'UE5',i=>-2} 3a000000cad30300b1010439 3a000000cad30300b1010439 3a000000cad30300b1010439 0000003a479bc0003b00043c 3a000000cad30300b1010439 3a000000cad30300b1010439 0000003a479bc0003b00043c 3a000000cad30300b1010439 0000003a479bc0003b00043c - {e=>5,a=>101,m=>0,d=>3,j=>'SEM4',l=>6,c=>-2,k=>124,h=>5,b=>7,g=>0,f=>'UE0',i=>-1} 65000000f70a00003d017c06 65000000f70a00003d017c06 65000000f70a00003d017c06 00000065f9d00000be007cc0 65000000f70a00003d017c06 65000000f70a00003d017c06 00000065f9d00000be007cc0 65000000f70a00003d017c06 00000065f9d00000be007cc0 - {e=>1,a=>73,m=>-4,d=>-1,j=>'SEM1',l=>2,c=>1,k=>-19,h=>4,b=>0,g=>5,f=>'UE3',i=>-4} 49000000c8b30200e401ed22 49000000c8b30200e401ed22 49000000c8b30200e401ed22 00000049079740009380ed50 49000000c8b30200e401ed22 49000000c8b30200e401ed22 00000049079740009380ed50 49000000c8b30200e401ed22 00000049079740009380ed50 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>1,n=>1,a=>-71,m=>-2,d=>0,j=>'SE1',l=>0,c=>-2,k=>60,h=>6,b=>4,g=>5,f=>'UE5',i=>-1} b9ffffff34d202007e003c3001000000 b9ffffff34d202007e003c3001000000 b9ffffff34d202007e003c3001000000 ffffffb9981b4000dc803c1820000000 b9ffffff34d202007e003c3001000000 b9ffffff34d202007e003c3001000000 ffffffb9981b4000dc803c1820000000 b9ffffff34d202007e003c3001000000 ffffffb9981b4000dc803c1820000000 - {e=>7,n=>5,a=>-15,m=>-1,d=>0,j=>'SEM1',l=>5,c=>-2,k=>4,h=>2,b=>3,g=>3,f=>'UE0',i=>-3} f1ffffff338e0100ea01043d05000000 f1ffffff338e0100ea01043d05000000 f1ffffff338e0100ea01043d05000000 fffffff17870c000578004bca0000000 f1ffffff338e0100ea01043d05000000 f1ffffff338e0100ea01043d05000000 fffffff17870c000578004bca0000000 f1ffffff338e0100ea01043d05000000 fffffff17870c000578004bca0000000 - {e=>6,n=>3,a=>12,m=>1,d=>3,j=>'SE3',l=>4,c=>-4,k=>116,h=>6,b=>1,g=>4,f=>'UE2',i=>-2} 0c000000e12c0200f600740c03000000 0c000000e12c0200f600740c03000000 0c000000e12c0200f600740c03000000 0000000c31e50000d980748460000000 0c000000e12c0200f600740c03000000 0c000000e12c0200f600740c03000000 0000000c31e50000d980748460000000 0c000000e12c0200f600740c03000000 0000000c31e50000d980748460000000 - {e=>5,n=>3,a=>42,m=>1,d=>-3,j=>'SE3',l=>4,c=>1,k=>-90,h=>4,b=>3,g=>6,f=>'UE3',i=>-1} 2a0000004b3b0300fc00a60c03000000 2a0000004b3b0300fc00a60c03000000 2a0000004b3b0300fc00a60c03000000 0000002a66d780009d80a68460000000 2a0000004b3b0300fc00a60c03000000 2a0000004b3b0300fc00a60c03000000 0000002a66d780009d80a68460000000 2a0000004b3b0300fc00a60c03000000 0000002a66d780009d80a68460000000 - {e=>7,n=>3,a=>55,m=>-2,d=>0,j=>'SE2',l=>0,c=>2,k=>-125,h=>4,b=>5,g=>7,f=>'UE7',i=>-4} 3700000015fe0300a400833003000000 3700000015fe0300a400833003000000 3700000015fe0300a400833003000000 00000037a87fc0009100831860000000 3700000015fe0300a400833003000000 3700000015fe0300a400833003000000 00000037a87fc0009100831860000000 3700000015fe0300a400833003000000 00000037a87fc0009100831860000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>5,a=>111,m=>-1,d=>3,j=>'SE1',l=>5,c=>-1,k=>85,h=>5,b=>0,g=>4,f=>'UE7',o=>100,i=>2} 6f000000f87e02005500553d05640000 6f000000f87e02005500553d05640000 6f000000f87e02005500553d05640000 0000006f1dff0000a88055bca0640000 6f000000f87e02005500553d05640000 6f000000f87e02005500553d05640000 0000006f1dff0000a88055bca0640000 6f000000f87e02005500553d05640000 0000006f1dff0000a88055bca0640000 - {e=>3,n=>3,a=>68,m=>3,d=>-2,j=>'SE0',l=>2,c=>3,k=>30,h=>0,b=>6,g=>3,f=>'UE0',o=>140,i=>-1} 440000009e87010038001e1a038c0000 440000009e87010038001e1a038c0000 440000009e87010038001e1a038c0000 00000044cf30c0001c001e4c608c0000 440000009e87010038001e1a038c0000 440000009e87010038001e1a038c0000 00000044cf30c0001c001e4c608c0000 440000009e87010038001e1a038c0000 00000044cf30c0001c001e4c608c0000 - {e=>1,n=>2,a=>-1,m=>2,d=>1,j=>'SE0',l=>1,c=>3,k=>-56,h=>3,b=>0,g=>3,f=>'UE1',o=>96,i=>2} ffffffff589201001300c81102600000 ffffffff589201001300c81102600000 ffffffff589201001300c81102600000 ffffffff0c92c0006800c82840600000 ffffffff589201001300c81102600000 ffffffff589201001300c81102600000 ffffffff0c92c0006800c82840600000 ffffffff589201001300c81102600000 ffffffff0c92c0006800c82840600000 - {e=>7,n=>5,a=>26,m=>3,d=>1,j=>'SEM3',l=>5,c=>-1,k=>-127,h=>0,b=>4,g=>2,f=>'UE1',o=>99,i=>-3} 1a0000007c1e01006801811d05630000 1a0000007c1e01006801811d05630000 1a0000007c1e01006801811d05630000 0000001a9cf28000168081aca0630000 1a0000007c1e01006801811d05630000 1a0000007c1e01006801811d05630000 0000001a9cf28000168081aca0630000 1a0000007c1e01006801811d05630000 0000001a9cf28000168081aca0630000 - {e=>1,n=>3,a=>-55,m=>0,d=>0,j=>'SEM1',l=>2,c=>1,k=>-1,h=>1,b=>3,g=>3,f=>'UE2',o=>164,i=>-4} c9ffffff0ba20100e101ff0203a40000 c9ffffff0ba20100e101ff0203a40000 c9ffffff0ba20100e101ff0203a40000 ffffffc96414c0003380ff4060a40000 c9ffffff0ba20100e101ff0203a40000 c9ffffff0ba20100e101ff0203a40000 ffffffc96414c0003380ff4060a40000 c9ffffff0ba20100e101ff0203a40000 ffffffc96414c0003380ff4060a40000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; }; - {a=>30,b=>3} 1e00000003000000 1e000000000000000300000000000000 1e000000000000000300000000000000 0000001e60000000 1e00000003000000 1e00000003000000 000000000000001e6000000000000000 1e00000003000000 0000001e60000000 - {a=>-14,b=>4} f2ffffff04000000 f2ffffffffffffff0400000000000000 f2ffffffffffffff0400000000000000 fffffff280000000 f2ffffff04000000 f2ffffff04000000 fffffffffffffff28000000000000000 f2ffffff04000000 fffffff280000000 - {a=>3,b=>2} 0300000002000000 03000000000000000200000000000000 03000000000000000200000000000000 0000000340000000 0300000002000000 0300000002000000 00000000000000034000000000000000 0300000002000000 0000000340000000 - {a=>98,b=>5} 6200000005000000 62000000000000000500000000000000 62000000000000000500000000000000 00000062a0000000 6200000005000000 6200000005000000 0000000000000062a000000000000000 6200000005000000 00000062a0000000 - {a=>85,b=>3} 5500000003000000 55000000000000000300000000000000 55000000000000000300000000000000 0000005560000000 5500000003000000 5500000003000000 00000000000000556000000000000000 5500000003000000 0000005560000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; }; - {c=>-1,a=>-46,b=>6} d2ffffff3e000000 d2ffffffffffffff3e00000000000000 d2ffffffffffffff3e00000000000000 ffffffd2dc000000 d2ffffff3e000000 d2ffffff3e000000 ffffffffffffffd2dc00000000000000 d2ffffff3e000000 ffffffd2dc000000 - {c=>2,a=>-36,b=>5} dcffffff15000000 dcffffffffffffff1500000000000000 dcffffffffffffff1500000000000000 ffffffdca8000000 dcffffff15000000 dcffffff15000000 ffffffffffffffdca800000000000000 dcffffff15000000 ffffffdca8000000 - {c=>-4,a=>78,b=>7} 4e00000027000000 4e000000000000002700000000000000 4e000000000000002700000000000000 0000004ef0000000 4e00000027000000 4e00000027000000 000000000000004ef000000000000000 4e00000027000000 0000004ef0000000 - {c=>-4,a=>65,b=>5} 4100000025000000 41000000000000002500000000000000 41000000000000002500000000000000 00000041b0000000 4100000025000000 4100000025000000 0000000000000041b000000000000000 4100000025000000 00000041b0000000 - {c=>-1,a=>124,b=>3} 7c0000003b000000 7c000000000000003b00000000000000 7c000000000000003b00000000000000 0000007c7c000000 7c0000003b000000 7c0000003b000000 000000000000007c7c00000000000000 7c0000003b000000 0000007c7c000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>0,a=>45,b=>2,d=>1} 2d00000042000000 2d000000000000004200000000000000 2d000000000000004200000000000000 0000002d40800000 2d00000042000000 2d00000042000000 000000000000002d4080000000000000 2d00000042000000 0000002d40800000 - {c=>0,a=>-85,b=>5,d=>0} abffffff05000000 abffffffffffffff0500000000000000 abffffffffffffff0500000000000000 ffffffaba0000000 abffffff05000000 abffffff05000000 ffffffffffffffaba000000000000000 abffffff05000000 ffffffaba0000000 - {c=>-3,a=>62,b=>0,d=>0} 3e00000028000000 3e000000000000002800000000000000 3e000000000000002800000000000000 0000003e14000000 3e00000028000000 3e00000028000000 000000000000003e1400000000000000 3e00000028000000 0000003e14000000 - {c=>3,a=>52,b=>1,d=>1} 3400000059000000 34000000000000005900000000000000 34000000000000005900000000000000 000000342c800000 3400000059000000 3400000059000000 00000000000000342c80000000000000 3400000059000000 000000342c800000 - {c=>-2,a=>17,b=>6,d=>-4} 1100000036010000 11000000000000003601000000000000 11000000000000003601000000000000 00000011da000000 1100000036010000 1100000036010000 0000000000000011da00000000000000 1100000036010000 00000011da000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-1,a=>-49,b=>1,d=>-4} cfffffff39090000 cfffffffffffffff3909000000000000 cfffffffffffffff3909000000000000 ffffffcf3e400000 cfffffff39090000 cfffffff39090000 ffffffffffffffcf3e40000000000000 cfffffff39090000 ffffffcf3e400000 - {e=>5,c=>0,a=>127,b=>4,d=>0} 7f000000040a0000 7f00000000000000040a000000000000 7f00000000000000040a000000000000 0000007f80500000 7f000000040a0000 7f000000040a0000 000000000000007f8050000000000000 7f000000040a0000 0000007f80500000 - {e=>3,c=>0,a=>28,b=>0,d=>3} 1c000000c0060000 1c00000000000000c006000000000000 1c00000000000000c006000000000000 0000001c01b00000 1c000000c0060000 1c000000c0060000 000000000000001c01b0000000000000 1c000000c0060000 0000001c01b00000 - {e=>3,c=>2,a=>42,b=>3,d=>-4} 2a00000013070000 2a000000000000001307000000000000 2a000000000000001307000000000000 0000002a6a300000 2a00000013070000 2a00000013070000 000000000000002a6a30000000000000 2a00000013070000 0000002a6a300000 - {e=>1,c=>3,a=>-60,b=>0,d=>-2} c4ffffff98030000 c4ffffffffffffff9803000000000000 c4ffffffffffffff9803000000000000 ffffffc40f100000 c4ffffff98030000 c4ffffff98030000 ffffffffffffffc40f10000000000000 c4ffffff98030000 ffffffc40f100000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>7,c=>3,a=>-108,b=>1,d=>-1,f=>'UE1'} 94ffffffd91f0000 94ffffffffffffffd91f000000000000 94ffffffffffffffd91f000000000000 ffffff942ff20000 94ffffffd91f0000 94ffffffd91f0000 ffffffffffffff942ff2000000000000 94ffffffd91f0000 ffffff942ff20000 - {e=>6,c=>-2,a=>4,b=>1,d=>-4,f=>'UE2'} 04000000312d0000 0400000000000000312d000000000000 0400000000000000312d000000000000 000000043a640000 04000000312d0000 04000000312d0000 00000000000000043a64000000000000 04000000312d0000 000000043a640000 - {e=>3,c=>-3,a=>79,b=>0,d=>-4,f=>'UE0'} 4f00000028070000 4f000000000000002807000000000000 4f000000000000002807000000000000 0000004f16300000 4f00000028070000 4f00000028070000 000000000000004f1630000000000000 4f00000028070000 0000004f16300000 - {e=>2,c=>-2,a=>45,b=>0,d=>3,f=>'UE5'} 2d000000f0540000 2d00000000000000f054000000000000 2d00000000000000f054000000000000 0000002d19aa0000 2d000000f0540000 2d000000f0540000 000000000000002d19aa000000000000 2d000000f0540000 0000002d19aa0000 - {e=>4,c=>-1,a=>18,b=>7,d=>-1,f=>'UE2'} 12000000ff290000 1200000000000000ff29000000000000 1200000000000000ff29000000000000 00000012ffc40000 12000000ff290000 12000000ff290000 0000000000000012ffc4000000000000 12000000ff290000 00000012ffc40000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>5,c=>-1,a=>107,g=>7,b=>1,d=>-2,f=>'UE5'} 6b000000b9db0300 6b00000000000000b9db030000000000 6b00000000000000b9db030000000000 0000006b3f5bc000 6b000000b9db0300 6b000000b9db0300 000000000000006b3f5bc00000000000 6b000000b9db0300 0000006b3f5bc000 - {e=>0,c=>-1,a=>-57,g=>6,b=>7,d=>-4,f=>'UE2'} c7ffffff3f210300 c7ffffffffffffff3f21030000000000 c7ffffffffffffff3f21030000000000 ffffffc7fe058000 c7ffffff3f210300 c7ffffff3f210300 ffffffffffffffc7fe05800000000000 c7ffffff3f210300 ffffffc7fe058000 - {e=>1,c=>2,a=>9,g=>5,b=>7,d=>2,f=>'UE7'} 0900000097f20200 090000000000000097f2020000000000 090000000000000097f2020000000000 00000009e91f4000 0900000097f20200 0900000097f20200 0000000000000009e91f400000000000 0900000097f20200 00000009e91f4000 - {e=>3,c=>3,a=>-7,g=>4,b=>4,d=>2,f=>'UE5'} f9ffffff9c560200 f9ffffffffffffff9c56020000000000 f9ffffffffffffff9c56020000000000 fffffff98d3b0000 f9ffffff9c560200 f9ffffff9c560200 fffffffffffffff98d3b000000000000 f9ffffff9c560200 fffffff98d3b0000 - {e=>7,c=>1,a=>-15,g=>6,b=>2,d=>2,f=>'UE0'} f1ffffff8a0e0300 f1ffffffffffffff8a0e030000000000 f1ffffffffffffff8a0e030000000000 fffffff145718000 f1ffffff8a0e0300 f1ffffff8a0e0300 fffffffffffffff14571800000000000 f1ffffff8a0e0300 fffffff145718000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-1,a=>-17,g=>2,b=>3,d=>-2,f=>'UE0'} efffffffbb030100 efffffffffffffffbb03010000000000 efffffffffffffffbb03010000000000 ffffffef7f108000 efffffffbb030100 efffffffbb030100 ffffffffffffffef7f10800000000000 efffffffbb030100 ffffffef7f108000 - {e=>7,c=>-2,a=>6,g=>1,b=>0,d=>-3,f=>'UE6'} 0600000070ef0000 060000000000000070ef000000000000 060000000000000070ef000000000000 000000061afc4000 0600000070ef0000 0600000070ef0000 00000000000000061afc400000000000 0600000070ef0000 000000061afc4000 - {e=>2,c=>3,a=>64,g=>4,b=>2,d=>2,f=>'UE1'} 400000009a140200 40000000000000009a14020000000000 40000000000000009a14020000000000 000000404d230000 400000009a140200 400000009a140200 00000000000000404d23000000000000 400000009a140200 000000404d230000 - {e=>2,c=>1,a=>58,g=>6,b=>1,d=>1,f=>'UE5'} 3a00000049540300 3a000000000000004954030000000000 3a000000000000004954030000000000 0000003a24ab8000 3a00000049540300 3a00000049540300 000000000000003a24ab800000000000 3a00000049540300 0000003a24ab8000 - {e=>0,c=>1,a=>-124,g=>4,b=>2,d=>-1,f=>'UE4'} 84ffffffca410200 84ffffffffffffffca41020000000000 84ffffffffffffffca41020000000000 ffffff8447890000 84ffffffca410200 84ffffffca410200 ffffffffffffff844789000000000000 84ffffffca410200 ffffff8447890000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>5,d=>1,c=>-3,h=>0,b=>1,g=>2,f=>'UE1'} 05000000691a010000000000 0500000000000000691a010000000000 0500000000000000691a010000000000 0000000534d2800000000000 05000000691a010000000000 05000000691a010000000000 000000000000000534d2800000000000 05000000691a010000000000 0000000534d2800000000000 - {e=>2,a=>-102,d=>-2,c=>-2,h=>5,b=>0,g=>1,f=>'UE6'} 9affffffb0e5000005000000 9affffffffffffffb0e5000005000000 9affffffffffffffb0e5000005000000 ffffff9a1b2c4000a0000000 9affffffb0e5000005000000 9affffffb0e5000005000000 ffffffffffffff9a1b2c4000a0000000 9affffffb0e5000005000000 ffffff9a1b2c4000a0000000 - {e=>5,a=>65,d=>-4,c=>0,h=>7,b=>3,g=>2,f=>'UE7'} 41000000037b010007000000 4100000000000000037b010007000000 4100000000000000037b010007000000 00000041625e8000e0000000 41000000037b010007000000 41000000037b010007000000 0000000000000041625e8000e0000000 41000000037b010007000000 00000041625e8000e0000000 - {e=>2,a=>-87,d=>3,c=>-1,h=>1,b=>7,g=>2,f=>'UE6'} a9ffffffff64010001000000 a9ffffffffffffffff64010001000000 a9ffffffffffffffff64010001000000 ffffffa9fdac800020000000 a9ffffffff64010001000000 a9ffffffff64010001000000 ffffffffffffffa9fdac800020000000 a9ffffffff64010001000000 ffffffa9fdac800020000000 - {e=>5,a=>-29,d=>2,c=>-4,h=>3,b=>6,g=>7,f=>'UE3'} e3ffffffa6ba030003000000 e3ffffffffffffffa6ba030003000000 e3ffffffffffffffa6ba030003000000 ffffffe3d157c00060000000 e3ffffffa6ba030003000000 e3ffffffa6ba030003000000 ffffffffffffffe3d157c00060000000 e3ffffffa6ba030003000000 ffffffe3d157c00060000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>-52,d=>-3,c=>2,h=>1,b=>4,g=>2,f=>'UE6',i=>3} ccffffff5463010019000000 ccffffffffffffff5463010019000000 ccffffffffffffff5463010019000000 ffffffcc8a9c80002c000000 ccffffff5463010019000000 ccffffff5463010019000000 ffffffffffffffcc8a9c80002c000000 ccffffff5463010019000000 ffffffcc8a9c80002c000000 - {e=>6,a=>-55,d=>-2,c=>2,h=>7,b=>1,g=>4,f=>'UE2',i=>-2} c9ffffff912d020037000000 c9ffffffffffffff912d020037000000 c9ffffffffffffff912d020037000000 ffffffc92b650000f8000000 c9ffffff912d020037000000 c9ffffff912d020037000000 ffffffffffffffc92b650000f8000000 c9ffffff912d020037000000 ffffffc92b650000f8000000 - {e=>3,a=>1,d=>-4,c=>3,h=>2,b=>6,g=>2,f=>'UE1',i=>0} 010000001e17010002000000 01000000000000001e17010002000000 01000000000000001e17010002000000 00000001ce32800040000000 010000001e17010002000000 010000001e17010002000000 0000000000000001ce32800040000000 010000001e17010002000000 00000001ce32800040000000 - {e=>7,a=>92,d=>1,c=>0,h=>3,b=>6,g=>4,f=>'UE3',i=>3} 5c000000463e02001b000000 5c00000000000000463e02001b000000 5c00000000000000463e02001b000000 0000005cc0f700006c000000 5c000000463e02001b000000 5c000000463e02001b000000 000000000000005cc0f700006c000000 5c000000463e02001b000000 0000005cc0f700006c000000 - {e=>4,a=>83,d=>-3,c=>-2,h=>6,b=>1,g=>6,f=>'UE5',i=>-3} 53000000715903002e000000 5300000000000000715903002e000000 5300000000000000715903002e000000 000000533acb8000d4000000 53000000715903002e000000 53000000715903002e000000 00000000000000533acb8000d4000000 53000000715903002e000000 000000533acb8000d4000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>2,a=>104,d=>1,j=>'SEM2',c=>-3,h=>4,b=>3,g=>5,f=>'UE4',i=>3} 680000006bc402009c010000 68000000000000006bc402009c010000 68000000000000006bc402009c010000 0000006874a940008f000000 680000006bc402009c010000 680000006bc402009c010000 000000000000006874a940008f000000 680000006bc402009c010000 0000006874a940008f000000 - {e=>5,a=>72,d=>-3,j=>'SE0',c=>2,h=>6,b=>2,g=>5,f=>'UE0',i=>0} 48000000528b020006000000 4800000000000000528b020006000000 4800000000000000528b020006000000 000000484ad14000c0000000 48000000528b020006000000 48000000528b020006000000 00000000000000484ad14000c0000000 48000000528b020006000000 000000484ad14000c0000000 - {e=>4,a=>-114,d=>2,j=>'SE0',c=>-4,h=>4,b=>5,g=>7,f=>'UE7',i=>3} 8effffffa5f803001c000000 8effffffffffffffa5f803001c000000 8effffffffffffffa5f803001c000000 ffffff8eb14fc0008c000000 8effffffa5f803001c000000 8effffffa5f803001c000000 ffffffffffffff8eb14fc0008c000000 8effffffa5f803001c000000 ffffff8eb14fc0008c000000 - {e=>5,a=>-114,d=>3,j=>'SE1',c=>2,h=>2,b=>5,g=>2,f=>'UE1',i=>-2} 8effffffd51a010072000000 8effffffffffffffd51a010072000000 8effffffffffffffd51a010072000000 ffffff8ea9d2800058800000 8effffffd51a010072000000 8effffffd51a010072000000 ffffffffffffff8ea9d2800058800000 8effffffd51a010072000000 ffffff8ea9d2800058800000 - {e=>7,a=>-75,d=>1,j=>'SEM3',c=>-3,h=>1,b=>7,g=>1,f=>'UE2',i=>0} b5ffffff6fae000041010000 b5ffffffffffffff6fae000041010000 b5ffffffffffffff6fae000041010000 ffffffb5f4f4400022800000 b5ffffff6fae000041010000 b5ffffff6fae000041010000 ffffffffffffffb5f4f4400022800000 b5ffffff6fae000041010000 ffffffb5f4f4400022800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>2,a=>48,d=>-2,j=>'SE3',c=>3,k=>43,h=>4,b=>2,g=>2,f=>'UE5',i=>0} 300000009a550100c4002b00 30000000000000009a550100c4002b00 30000000000000009a550100c4002b00 000000304f2a800081802b00 300000009a550100c4002b00 300000009a550100c4002b00 00000000000000304f2a800081802b00 300000009a550100c4002b00 000000304f2a800081802b00 - {e=>6,a=>-50,d=>0,j=>'SE0',c=>-1,k=>78,h=>6,b=>5,g=>5,f=>'UE6',i=>-3} ceffffff3dec02002e004e00 ceffffffffffffff3dec02002e004e00 ceffffffffffffff3dec02002e004e00 ffffffcebc6d4000d4004e00 ceffffff3dec02002e004e00 ceffffff3dec02002e004e00 ffffffffffffffcebc6d4000d4004e00 ceffffff3dec02002e004e00 ffffffcebc6d4000d4004e00 - {e=>4,a=>67,d=>0,j=>'SEM2',c=>3,k=>-96,h=>7,b=>3,g=>1,f=>'UE3',i=>2} 430000001bb800009701a000 43000000000000001bb800009701a000 43000000000000001bb800009701a000 000000436c464000eb00a000 430000001bb800009701a000 430000001bb800009701a000 00000000000000436c464000eb00a000 430000001bb800009701a000 000000436c464000eb00a000 - {e=>5,a=>-6,d=>1,j=>'SE2',c=>0,k=>69,h=>4,b=>5,g=>0,f=>'UE0',i=>-4} faffffff450a0000a4004500 faffffffffffffff450a0000a4004500 faffffffffffffff450a0000a4004500 fffffffaa0d0000091004500 faffffff450a0000a4004500 faffffff450a0000a4004500 fffffffffffffffaa0d0000091004500 faffffff450a0000a4004500 fffffffaa0d0000091004500 - {e=>7,a=>-120,d=>1,j=>'SE0',c=>-1,k=>92,h=>1,b=>5,g=>5,f=>'UE3',i=>2} 88ffffff7dbe020011005c00 88ffffffffffffff7dbe020011005c00 88ffffffffffffff7dbe020011005c00 ffffff88bcf7400028005c00 88ffffff7dbe020011005c00 88ffffff7dbe020011005c00 ffffffffffffff88bcf7400028005c00 88ffffff7dbe020011005c00 ffffff88bcf7400028005c00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>3,a=>-102,d=>-2,j=>'SEM4',l=>7,c=>-3,k=>-44,h=>3,b=>3,g=>7,f=>'UE6',i=>0} 9affffffabe703000301d407 9affffffffffffffabe703000301d407 9affffffffffffffabe703000301d407 ffffff9a773dc0006200d4e0 9affffffabe703000301d407 9affffffabe703000301d407 ffffffffffffff9a773dc0006200d4e0 9affffffabe703000301d407 ffffff9a773dc0006200d4e0 - {e=>6,a=>15,d=>1,j=>'SE1',l=>1,c=>2,k=>-19,h=>5,b=>7,g=>1,f=>'UE6',i=>-2} 0f00000057ec00007500ed01 0f0000000000000057ec00007500ed01 0f0000000000000057ec00007500ed01 0000000fe8ec4000b880ed20 0f00000057ec00007500ed01 0f00000057ec00007500ed01 000000000000000fe8ec4000b880ed20 0f00000057ec00007500ed01 0000000fe8ec4000b880ed20 - {e=>2,a=>-49,d=>-1,j=>'SEM3',l=>3,c=>-2,k=>75,h=>0,b=>4,g=>7,f=>'UE3',i=>-3} cffffffff4b5030068014b03 cffffffffffffffff4b5030068014b03 cffffffffffffffff4b5030068014b03 ffffffcf9ba7c00016804b60 cffffffff4b5030068014b03 cffffffff4b5030068014b03 ffffffffffffffcf9ba7c00016804b60 cffffffff4b5030068014b03 ffffffcf9ba7c00016804b60 - {e=>6,a=>-49,d=>1,j=>'SEM2',l=>3,c=>3,k=>-128,h=>7,b=>5,g=>0,f=>'UE1',i=>2} cfffffff5d1c000097018003 cfffffffffffffff5d1c000097018003 cfffffffffffffff5d1c000097018003 ffffffcface20000eb008060 cfffffff5d1c000097018003 cfffffff5d1c000097018003 ffffffffffffffcface20000eb008060 cfffffff5d1c000097018003 ffffffcface20000eb008060 - {e=>3,a=>-61,d=>0,j=>'SEM1',l=>1,c=>1,k=>6,h=>0,b=>1,g=>3,f=>'UE0',i=>-2} c3ffffff09860100f0010601 c3ffffffffffffff09860100f0010601 c3ffffffffffffff09860100f0010601 ffffffc32430c0001b800620 c3ffffff09860100f0010601 c3ffffff09860100f0010601 ffffffffffffffc32430c0001b800620 c3ffffff09860100f0010601 ffffffc32430c0001b800620 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>101,m=>1,d=>3,j=>'SEM4',l=>0,c=>3,k=>115,h=>2,b=>1,g=>3,f=>'UE0',i=>-3} 65000000d98201002a017308 6500000000000000d98201002a017308 6500000000000000d98201002a017308 000000652d90c00056007304 65000000d98201002a017308 65000000d98201002a017308 00000000000000652d90c00056007304 65000000d98201002a017308 000000652d90c00056007304 - {e=>4,a=>-15,m=>1,d=>-3,j=>'SE2',l=>6,c=>-3,k=>-105,h=>6,b=>3,g=>5,f=>'UE5',i=>1} f1ffffff6bd902008e00970e f1ffffffffffffff6bd902008e00970e f1ffffffffffffff6bd902008e00970e fffffff176cb4000c50097c4 f1ffffff6bd902008e00970e f1ffffff6bd902008e00970e fffffffffffffff176cb4000c50097c4 f1ffffff6bd902008e00970e fffffff176cb4000c50097c4 - {e=>3,a=>111,m=>-1,d=>1,j=>'SE0',l=>6,c=>-1,k=>-84,h=>3,b=>4,g=>0,f=>'UE4',i=>-1} 6f0000007c4600003b00ac3e 6f000000000000007c4600003b00ac3e 6f000000000000007c4600003b00ac3e 0000006f9cb800007c00acdc 6f0000007c4600003b00ac3e 6f0000007c4600003b00ac3e 000000000000006f9cb800007c00acdc 6f0000007c4600003b00ac3e 0000006f9cb800007c00acdc - {e=>7,a=>-11,m=>3,d=>-4,j=>'SEM1',l=>3,c=>0,k=>-99,h=>0,b=>4,g=>4,f=>'UE4',i=>-3} f5ffffff044f0200e8019d1b f5ffffffffffffff044f0200e8019d1b f5ffffffffffffff044f0200e8019d1b fffffff58279000017809d6c f5ffffff044f0200e8019d1b f5ffffff044f0200e8019d1b fffffffffffffff58279000017809d6c f5ffffff044f0200e8019d1b fffffff58279000017809d6c - {e=>4,a=>-69,m=>-3,d=>-2,j=>'SEM3',l=>2,c=>0,k=>94,h=>2,b=>4,g=>3,f=>'UE3',i=>2} bbffffff84b9010052015e2a bbffffffffffffff84b9010052015e2a bbffffffffffffff84b9010052015e2a ffffffbb8346c0004a805e54 bbffffff84b9010052015e2a bbffffff84b9010052015e2a ffffffffffffffbb8346c0004a805e54 bbffffff84b9010052015e2a ffffffbb8346c0004a805e54 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>4,a=>-5,m=>-1,d=>-3,j=>'SE0',l=>4,c=>-3,k=>70,h=>7,b=>6,g=>4,f=>'UE5',i=>-3} fbffffff6e5b02002f00463c04000000 fbffffffffffffff6e5b02002f00463c0400000000000000 fbffffffffffffff6e5b02002f00463c0400000000000000 fffffffbd6db0000f400469c80000000 fbffffff6e5b02002f00463c04000000 fbffffff6e5b02002f00463c04000000 fffffffffffffffbd6db0000f400469c8000000000000000 fbffffff6e5b02002f00463c04000000 fffffffbd6db0000f400469c80000000 - {e=>7,n=>6,a=>108,m=>-3,d=>1,j=>'SEM3',l=>5,c=>-3,k=>-4,h=>3,b=>0,g=>6,f=>'UE6',i=>-2} 6c000000686e03007301fc2d06000000 6c00000000000000686e03007301fc2d0600000000000000 6c00000000000000686e03007301fc2d0600000000000000 0000006c14fd80007a80fcb4c0000000 6c000000686e03007301fc2d06000000 6c000000686e03007301fc2d06000000 000000000000006c14fd80007a80fcb4c000000000000000 6c000000686e03007301fc2d06000000 0000006c14fd80007a80fcb4c0000000 - {e=>3,n=>7,a=>-39,m=>-2,d=>3,j=>'SEM2',l=>2,c=>-4,k=>59,h=>1,b=>0,g=>7,f=>'UE5',i=>-4} d9ffffffe0d60300a1013b3207000000 d9ffffffffffffffe0d60300a1013b320700000000000000 d9ffffffffffffffe0d60300a1013b320700000000000000 ffffffd911bbc00033003b58e0000000 d9ffffffe0d60300a1013b3207000000 d9ffffffe0d60300a1013b3207000000 ffffffffffffffd911bbc00033003b58e000000000000000 d9ffffffe0d60300a1013b3207000000 ffffffd911bbc00033003b58e0000000 - {e=>2,n=>0,a=>-64,m=>1,d=>1,j=>'SE1',l=>0,c=>2,k=>123,h=>0,b=>7,g=>7,f=>'UE7',i=>1} c0ffffff57f4030048007b0800000000 c0ffffffffffffff57f4030048007b080000000000000000 c0ffffffffffffff57f4030048007b080000000000000000 ffffffc0e8afc00004807b0400000000 c0ffffff57f4030048007b0800000000 c0ffffff57f4030048007b0800000000 ffffffffffffffc0e8afc00004807b040000000000000000 c0ffffff57f4030048007b0800000000 ffffffc0e8afc00004807b0400000000 - {e=>5,n=>7,a=>-49,m=>-2,d=>-3,j=>'SE2',l=>0,c=>0,k=>95,h=>1,b=>5,g=>6,f=>'UE1',i=>-1} cfffffff451b0300b9005f3007000000 cfffffffffffffff451b0300b9005f300700000000000000 cfffffffffffffff451b0300b9005f300700000000000000 ffffffcfa2d380003d005f18e0000000 cfffffff451b0300b9005f3007000000 cfffffff451b0300b9005f3007000000 ffffffffffffffcfa2d380003d005f18e000000000000000 cfffffff451b0300b9005f3007000000 ffffffcfa2d380003d005f18e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>7,a=>-65,m=>-2,d=>-3,j=>'SEM3',l=>0,c=>0,k=>67,h=>5,b=>3,g=>6,f=>'UE7',o=>184,i=>3} bfffffff437d03005d01433007b80000 bfffffffffffffff437d03005d01433007b8000000000000 bfffffffffffffff437d03005d01433007b8000000000000 ffffffbf62ef8000ae804318e0b80000 bfffffff437d03005d01433007b80000 bfffffff437d03005d01433007b80000 ffffffffffffffbf62ef8000ae804318e0b8000000000000 bfffffff437d03005d01433007b80000 ffffffbf62ef8000ae804318e0b80000 - {e=>5,n=>0,a=>80,m=>-2,d=>0,j=>'SEM2',l=>4,c=>-3,k=>18,h=>7,b=>4,g=>5,f=>'UE5',o=>3,i=>1} 500000002cda02008f01123400030000 50000000000000002cda02008f0112340003000000000000 50000000000000002cda02008f0112340003000000000000 00000050945b4000e700129800030000 500000002cda02008f01123400030000 500000002cda02008f01123400030000 0000000000000050945b4000e70012980003000000000000 500000002cda02008f01123400030000 00000050945b4000e700129800030000 - {e=>5,n=>0,a=>89,m=>-1,d=>-4,j=>'SEM4',l=>6,c=>2,k=>-48,h=>0,b=>2,g=>2,f=>'UE7',o=>146,i=>2} 59000000127b01001001d03e00920000 5900000000000000127b01001001d03e0092000000000000 5900000000000000127b01001001d03e0092000000000000 000000594a5e80000a00d0dc00920000 59000000127b01001001d03e00920000 59000000127b01001001d03e00920000 00000000000000594a5e80000a00d0dc0092000000000000 59000000127b01001001d03e00920000 000000594a5e80000a00d0dc00920000 - {e=>5,n=>6,a=>-3,m=>-1,d=>0,j=>'SE1',l=>1,c=>0,k=>72,h=>1,b=>3,g=>4,f=>'UE2',o=>92,i=>2} fdffffff032a020051004839065c0000 fdffffffffffffff032a020051004839065c000000000000 fdffffffffffffff032a020051004839065c000000000000 fffffffd605500002880483cc05c0000 fdffffff032a020051004839065c0000 fdffffff032a020051004839065c0000 fffffffffffffffd605500002880483cc05c000000000000 fdffffff032a020051004839065c0000 fffffffd605500002880483cc05c0000 - {e=>3,n=>5,a=>-96,m=>-4,d=>3,j=>'SE1',l=>5,c=>-4,k=>-39,h=>0,b=>3,g=>3,f=>'UE4',o=>240,i=>-2} a0ffffffe3c601007000d92505f00000 a0ffffffffffffffe3c601007000d92505f0000000000000 a0ffffffffffffffe3c601007000d92505f0000000000000 ffffffa071b8c0001880d9b0a0f00000 a0ffffffe3c601007000d92505f00000 a0ffffffe3c601007000d92505f00000 ffffffffffffffa071b8c0001880d9b0a0f0000000000000 a0ffffffe3c601007000d92505f00000 ffffffa071b8c0001880d9b0a0f00000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; }; - {a=>3} 03000000 03000000 03000000 60000000 03000000 03000000 60000000 03000000 60000000 - {a=>4} 04000000 04000000 04000000 80000000 04000000 04000000 80000000 04000000 80000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>2} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; }; - {a=>5,b=>2} 15000000 15000000 15000000 a8000000 15000000 15000000 a8000000 15000000 a8000000 - {a=>6,b=>-2} 36000000 36000000 36000000 d8000000 36000000 36000000 d8000000 36000000 d8000000 - {a=>6,b=>3} 1e000000 1e000000 1e000000 cc000000 1e000000 1e000000 cc000000 1e000000 cc000000 - {a=>7,b=>3} 1f000000 1f000000 1f000000 ec000000 1f000000 1f000000 ec000000 1f000000 ec000000 - {a=>1,b=>0} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>-4,a=>2,b=>-1} 3a010000 3a010000 3a010000 5e000000 3a010000 3a010000 5e000000 3a010000 5e000000 - {c=>2,a=>0,b=>2} 90000000 90000000 90000000 09000000 90000000 90000000 09000000 90000000 09000000 - {c=>-3,a=>7,b=>-4} 67010000 67010000 67010000 f2800000 67010000 67010000 f2800000 67010000 f2800000 - {c=>2,a=>3,b=>1} 8b000000 8b000000 8b000000 65000000 8b000000 8b000000 65000000 8b000000 65000000 - {c=>-4,a=>0,b=>-3} 28010000 28010000 28010000 16000000 28010000 28010000 16000000 28010000 16000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>2,a=>4,b=>0,d=>3} 84060000 84060000 84060000 81300000 84060000 84060000 81300000 84060000 81300000 - {c=>-4,a=>2,b=>2,d=>5} 120b0000 120b0000 120b0000 4a500000 120b0000 120b0000 4a500000 120b0000 4a500000 - {c=>-3,a=>2,b=>-3,d=>7} 6a0f0000 6a0f0000 6a0f0000 56f00000 6a0f0000 6a0f0000 56f00000 6a0f0000 56f00000 - {c=>1,a=>7,b=>-4,d=>1} 67020000 67020000 67020000 f0900000 67020000 67020000 f0900000 67020000 f0900000 - {c=>-2,a=>2,b=>3,d=>3} 9a070000 9a070000 9a070000 4f300000 9a070000 9a070000 4f300000 9a070000 4f300000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; }; - {e=>'UE6',c=>-4,a=>5,b=>-3,d=>1} 2d630000 2d630000 2d630000 b61c0000 2d630000 2d630000 b61c0000 2d630000 b61c0000 - {e=>'UE5',c=>1,a=>6,b=>2,d=>4} 56580000 56580000 56580000 c8ca0000 56580000 56580000 c8ca0000 56580000 c8ca0000 - {e=>'UE6',c=>-1,a=>0,b=>-4,d=>7} e06f0000 e06f0000 e06f0000 13fc0000 e06f0000 e06f0000 13fc0000 e06f0000 13fc0000 - {e=>'UE1',c=>-4,a=>4,b=>-3,d=>4} 2c190000 2c190000 2c190000 96420000 2c190000 2c190000 96420000 2c190000 96420000 - {e=>'UE1',c=>-2,a=>2,b=>2,d=>4} 92190000 92190000 92190000 4b420000 92190000 92190000 4b420000 92190000 4b420000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; }; - {e=>'UE1',c=>-4,a=>4,b=>-1,d=>3,f=>3} 3c970100 3c970100 3c970100 9e32c000 3c970100 3c970100 9e32c000 3c970100 9e32c000 - {e=>'UE3',c=>-4,a=>2,b=>-3,d=>0,f=>0} 2a310000 2a310000 2a310000 56060000 2a310000 2a310000 56060000 2a310000 56060000 - {e=>'UE0',c=>0,a=>3,b=>-3,d=>5,f=>0} 2b0a0000 2b0a0000 2b0a0000 74500000 2b0a0000 2b0a0000 74500000 2b0a0000 74500000 - {e=>'UE7',c=>1,a=>3,b=>-3,d=>3,f=>4} 6b760200 6b760200 6b760200 74bf0000 6b760200 6b760200 74bf0000 6b760200 74bf0000 - {e=>'UE7',c=>-2,a=>2,b=>3,d=>6,f=>5} 9afd0200 9afd0200 9afd0200 4f6f4000 9afd0200 9afd0200 4f6f4000 9afd0200 4f6f4000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; }; - {e=>'UE4',c=>2,a=>1,b=>-4,d=>1,f=>3} a1c20100 a1c20100 a1c20100 3118c000 a1c20100 a1c20100 3118c000 a1c20100 3118c000 - {e=>'UE7',c=>0,a=>6,b=>-4,d=>2,f=>7} 26f40300 26f40300 26f40300 d02fc000 26f40300 26f40300 d02fc000 26f40300 d02fc000 - {e=>'UE6',c=>3,a=>4,b=>-2,d=>5,f=>2} f46a0100 f46a0100 f46a0100 99dc8000 f46a0100 f46a0100 99dc8000 f46a0100 99dc8000 - {e=>'UE0',c=>-3,a=>5,b=>-2,d=>5,f=>3} 758b0100 758b0100 758b0100 bad0c000 758b0100 758b0100 bad0c000 758b0100 bad0c000 - {e=>'UE1',c=>0,a=>6,b=>0,d=>3,f=>4} 06160200 06160200 06160200 c0330000 06160200 06160200 c0330000 06160200 c0330000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>'UE4',c=>-2,a=>3,g=>3,b=>-4,d=>7,f=>5} a3cf020003000000 a3cf020003000000 a3cf020003000000 7379400060000000 a3cf020003000000 a3cf020003000000 7379400060000000 a3cf020003000000 7379400060000000 - {e=>'UE2',c=>0,a=>1,g=>7,b=>0,d=>6,f=>2} 012c010007000000 012c010007000000 012c010007000000 20648000e0000000 012c010007000000 012c010007000000 20648000e0000000 012c010007000000 20648000e0000000 - {e=>'UE2',c=>-1,a=>3,g=>7,b=>3,d=>4,f=>2} db29010007000000 db29010007000000 db29010007000000 6fc48000e0000000 db29010007000000 db29010007000000 6fc48000e0000000 db29010007000000 6fc48000e0000000 - {e=>'UE0',c=>-1,a=>4,g=>1,b=>2,d=>0,f=>0} d401000001000000 d401000001000000 d401000001000000 8b80000020000000 d401000001000000 d401000001000000 8b80000020000000 d401000001000000 8b80000020000000 - {e=>'UE1',c=>-2,a=>7,g=>4,b=>-2,d=>3,f=>6} b717030004000000 b717030004000000 b717030004000000 fb33800080000000 b717030004000000 b717030004000000 fb33800080000000 b717030004000000 fb33800080000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>'UE4',a=>1,d=>4,c=>-4,h=>-1,b=>2,g=>3,f=>1} 11c900003b000000 11c900003b000000 11c900003b000000 2a4840007c000000 11c900003b000000 11c900003b000000 2a4840007c000000 11c900003b000000 2a4840007c000000 - {e=>'UE3',a=>3,d=>3,c=>2,h=>1,b=>-3,g=>5,f=>2} ab3601000d000000 ab3601000d000000 ab3601000d000000 75368000a4000000 ab3601000d000000 ab3601000d000000 75368000a4000000 ab3601000d000000 75368000a4000000 - {e=>'UE2',a=>0,d=>4,c=>-3,h=>2,b=>1,g=>2,f=>7} 48a9030012000000 48a9030012000000 48a9030012000000 06c5c00048000000 48a9030012000000 48a9030012000000 06c5c00048000000 48a9030012000000 06c5c00048000000 - {e=>'UE4',a=>2,d=>3,c=>0,h=>-1,b=>-1,g=>2,f=>4} 3a4602003a000000 3a4602003a000000 3a4602003a000000 5c3900005c000000 3a4602003a000000 3a4602003a000000 5c3900005c000000 3a4602003a000000 5c3900005c000000 - {e=>'UE5',a=>5,d=>7,c=>0,h=>-1,b=>3,g=>1,f=>1} 1dde000039000000 1dde000039000000 1dde000039000000 ac7a40003c000000 1dde000039000000 1dde000039000000 ac7a40003c000000 1dde000039000000 ac7a40003c000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; }; - {e=>'UE4',a=>1,d=>7,c=>-3,h=>0,b=>-4,g=>4,f=>3,i=>'SEM2'} 61cf010084010000 61cf010084010000 61cf010084010000 32f8c00083000000 61cf010084010000 61cf010084010000 32f8c00083000000 61cf010084010000 32f8c00083000000 - {e=>'UE0',a=>0,d=>3,c=>1,h=>0,b=>-3,g=>6,f=>6,i=>'SE3'} 68060300c6000000 68060300c6000000 68060300c6000000 14b18000c1800000 68060300c6000000 68060300c6000000 14b18000c1800000 68060300c6000000 14b18000c1800000 - {e=>'UE5',a=>0,d=>1,c=>-2,h=>2,b=>0,g=>6,f=>0,i=>'SE3'} 80530000d6000000 80530000d6000000 80530000d6000000 031a0000c9800000 80530000d6000000 80530000d6000000 031a0000c9800000 80530000d6000000 031a0000c9800000 - {e=>'UE7',a=>5,d=>4,c=>-3,h=>-1,b=>2,g=>5,f=>6,i=>'SE2'} 55790300bd000000 55790300bd000000 55790300bd000000 aacf8000bd000000 55790300bd000000 55790300bd000000 aacf8000bd000000 55790300bd000000 aacf8000bd000000 - {e=>'UE4',a=>6,d=>1,c=>-1,h=>2,b=>-3,g=>5,f=>1,i=>'SEM4'} eec3000015010000 eec3000015010000 eec3000015010000 d7984000aa000000 eec3000015010000 eec3000015010000 d7984000aa000000 eec3000015010000 d7984000aa000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; }; - {e=>'UE2',a=>3,d=>3,j=>79,c=>-1,h=>-3,b=>2,g=>4,f=>1,i=>'SE3'} d3a70000ec004f00 d3a70000ec004f00 d3a70000ec004f00 6bb4400095804f00 d3a70000ec004f00 d3a70000ec004f00 6bb4400095804f00 d3a70000ec004f00 6bb4400095804f00 - {e=>'UE3',a=>4,d=>5,j=>33,c=>-2,h=>-4,b=>-1,g=>7,f=>7,i=>'SEM3'} bcbb030067012100 bcbb030067012100 bcbb030067012100 9f57c000f2802100 bcbb030067012100 bcbb030067012100 9f57c000f2802100 bcbb030067012100 9f57c000f2802100 - {e=>'UE3',a=>2,d=>6,j=>127,c=>-1,h=>1,b=>0,g=>1,f=>5,i=>'SEM1'} c2bd0200c9017f00 c2bd0200c9017f00 c2bd0200c9017f00 43e7400027807f00 c2bd0200c9017f00 c2bd0200c9017f00 43e7400027807f00 c2bd0200c9017f00 43e7400027807f00 - {e=>'UE7',a=>4,d=>1,j=>84,c=>2,h=>-3,b=>3,g=>7,f=>0,i=>'SEM1'} 9c720000ef015400 9c720000ef015400 9c720000ef015400 8d1e0000f7805400 9c720000ef015400 9c720000ef015400 8d1e0000f7805400 9c720000ef015400 8d1e0000f7805400 - {e=>'UE6',a=>1,d=>7,j=>37,c=>2,h=>-2,b=>0,g=>3,f=>5,i=>'SE3'} 81ee0200f3002500 81ee0200f3002500 81ee0200f3002500 217d400079802500 81ee0200f3002500 81ee0200f3002500 217d400079802500 81ee0200f3002500 217d400079802500 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; }; - {e=>'UE0',a=>7,d=>4,j=>-44,c=>0,k=>0,h=>0,b=>2,g=>5,f=>1,i=>'SEM4'} 178800000501d400 178800000501d400 178800000501d400 e8404000a200d400 178800000501d400 178800000501d400 e8404000a200d400 178800000501d400 e8404000a200d400 - {e=>'UE6',a=>0,d=>4,j=>-58,c=>2,k=>1,h=>1,b=>-2,g=>2,f=>3,i=>'SEM3'} b0e801004a01c601 b0e801004a01c601 b0e801004a01c601 194cc0004680c620 b0e801004a01c601 b0e801004a01c601 194cc0004680c620 b0e801004a01c601 194cc0004680c620 - {e=>'UE7',a=>0,d=>4,j=>-25,c=>-4,k=>2,h=>-4,b=>1,g=>6,f=>3,i=>'SEM1'} 08f90100e601e702 08f90100e601e702 08f90100e601e702 064ec000d380e740 08f90100e601e702 08f90100e601e702 064ec000d380e740 08f90100e601e702 064ec000d380e740 - {e=>'UE0',a=>0,d=>5,j=>87,c=>2,k=>4,h=>1,b=>2,g=>5,f=>4,i=>'SEM2'} 900a02008d015704 900a02008d015704 900a02008d015704 09510000a7005780 900a02008d015704 900a02008d015704 09510000a7005780 900a02008d015704 09510000a7005780 - {e=>'UE3',a=>6,d=>5,j=>-127,c=>0,k=>4,h=>2,b=>-3,g=>7,f=>6,i=>'SE0'} 2e3a030017008104 2e3a030017008104 2e3a030017008104 d4578000e8008180 2e3a030017008104 2e3a030017008104 d4578000e8008180 2e3a030017008104 d4578000e8008180 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>'UE1',a=>5,d=>7,j=>116,l=>-1,c=>2,k=>3,h=>-4,b=>0,g=>0,f=>1,i=>'SE3'} 859e0000e000743b 859e0000e000743b 859e0000e000743b a17240001180747c 859e0000e000743b 859e0000e000743b a17240001180747c 859e0000e000743b a17240001180747c - {e=>'UE0',a=>3,d=>5,j=>-63,l=>3,c=>-4,k=>7,h=>2,b=>0,g=>1,f=>1,i=>'SEM2'} 038b00009101c11f 038b00009101c11f 038b00009101c11f 625040002b00c1ec 038b00009101c11f 038b00009101c11f 625040002b00c1ec 038b00009101c11f 625040002b00c1ec - {e=>'UE1',a=>6,d=>3,j=>-79,l=>1,c=>2,k=>1,h=>-2,b=>-4,g=>5,f=>0,i=>'SE0'} a61600003500b109 a61600003500b109 a61600003500b109 d1320000b800b124 a61600003500b109 a61600003500b109 d1320000b800b124 a61600003500b109 d1320000b800b124 - {e=>'UE1',a=>4,d=>5,j=>7,l=>2,c=>-2,k=>4,h=>-4,b=>-2,g=>3,f=>7,i=>'SE1'} b49b030063000714 b49b030063000714 b49b030063000714 9b53c00070800788 b49b030063000714 b49b030063000714 9b53c00070800788 b49b030063000714 9b53c00070800788 - {e=>'UE2',a=>5,d=>0,j=>41,l=>-2,c=>-4,k=>4,h=>-1,b=>3,g=>5,f=>4,i=>'SEM2'} 1d210200bd012934 1d210200bd012934 1d210200bd012934 ae050000bf002998 1d210200bd012934 1d210200bd012934 ae050000bf002998 1d210200bd012934 ae050000bf002998 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>'UE1',a=>1,m=>3,d=>5,j=>80,l=>-4,c=>-4,k=>7,h=>-2,b=>1,g=>5,f=>1,i=>'SEM4'} 099b00003501502703000000 099b00003501502703000000 099b00003501502703000000 26524000ba0050f060000000 099b00003501502703000000 099b00003501502703000000 26524000ba0050f060000000 099b00003501502703000000 26524000ba0050f060000000 - {e=>'UE0',a=>3,m=>1,d=>7,j=>-49,l=>-4,c=>-3,k=>5,h=>0,b=>-1,g=>3,f=>5,i=>'SEM4'} 7b8f02000301cf2501000000 7b8f02000301cf2501000000 7b8f02000301cf2501000000 7ef140006200cfb020000000 7b8f02000301cf2501000000 7b8f02000301cf2501000000 7ef140006200cfb020000000 7b8f02000301cf2501000000 7ef140006200cfb020000000 - {e=>'UE5',a=>3,m=>7,d=>7,j=>100,l=>-4,c=>1,k=>4,h=>0,b=>-3,g=>1,f=>7,i=>'SE3'} 6bde0300c100642407000000 6bde0300c100642407000000 6bde0300c100642407000000 74fbc00021806490e0000000 6bde0300c100642407000000 6bde0300c100642407000000 74fbc00021806490e0000000 6bde0300c100642407000000 74fbc00021806490e0000000 - {e=>'UE5',a=>7,m=>2,d=>0,j=>-111,l=>1,c=>2,k=>6,h=>0,b=>0,g=>4,f=>7,i=>'SEM3'} 87d003004401910e02000000 87d003004401910e02000000 87d003004401910e02000000 e10bc000828091c440000000 87d003004401910e02000000 87d003004401910e02000000 e10bc000828091c440000000 87d003004401910e02000000 e10bc000828091c440000000 - {e=>'UE1',a=>6,m=>1,d=>3,j=>78,l=>-2,c=>-2,k=>1,h=>-3,b=>3,g=>4,f=>5,i=>'SE0'} 9e9702002c004e3101000000 9e9702002c004e3101000000 9e9702002c004e3101000000 cf33400094004e3820000000 9e9702002c004e3101000000 9e9702002c004e3101000000 cf33400094004e3820000000 9e9702002c004e3101000000 cf33400094004e3820000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>'UE0',n=>164,a=>0,m=>3,d=>1,j=>-21,l=>-4,c=>2,k=>3,h=>-4,b=>1,g=>0,f=>5,i=>'SE2'} 88820200a000eb2303a40000 88820200a000eb2303a40000 88820200a000eb2303a40000 051140001100eb7060a40000 88820200a000eb2303a40000 88820200a000eb2303a40000 051140001100eb7060a40000 88820200a000eb2303a40000 051140001100eb7060a40000 - {e=>'UE6',n=>235,a=>5,m=>3,d=>0,j=>122,l=>0,c=>-2,k=>5,h=>3,b=>-2,g=>6,f=>1,i=>'SEM3'} b5e100005e017a0503eb0000 b5e100005e017a0503eb0000 b5e100005e017a0503eb0000 bb0c4000ce807aa060eb0000 b5e100005e017a0503eb0000 b5e100005e017a0503eb0000 bb0c4000ce807aa060eb0000 b5e100005e017a0503eb0000 bb0c4000ce807aa060eb0000 - {e=>'UE2',n=>226,a=>5,m=>6,d=>1,j=>0,l=>0,c=>-4,k=>4,h=>3,b=>-2,g=>1,f=>5,i=>'SEM3'} 35a302005901000406e20000 35a302005901000406e20000 35a302005901000406e20000 ba1540002e800080c0e20000 35a302005901000406e20000 35a302005901000406e20000 ba1540002e800080c0e20000 35a302005901000406e20000 ba1540002e800080c0e20000 - {e=>'UE4',n=>153,a=>0,m=>7,d=>6,j=>106,l=>-2,c=>1,k=>6,h=>2,b=>2,g=>2,f=>2,i=>'SE3'} 504c0100d2006a3607990000 504c0100d2006a3607990000 504c0100d2006a3607990000 08e8800049806ad8e0990000 504c0100d2006a3607990000 504c0100d2006a3607990000 08e8800049806ad8e0990000 504c0100d2006a3607990000 08e8800049806ad8e0990000 - {e=>'UE5',n=>143,a=>3,m=>3,d=>4,j=>112,l=>3,c=>1,k=>5,h=>-4,b=>-1,g=>3,f=>7,i=>'SEM4'} 7bd803002301701d038f0000 7bd803002301701d038f0000 7bd803002301701d038f0000 7ccbc000720070ac608f0000 7bd803002301701d038f0000 7bd803002301701d038f0000 7ccbc000720070ac608f0000 7bd803002301701d038f0000 7ccbc000720070ac608f0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; }; - {a=>35,b=>4} 23040000 23040000 23040000 23800000 23040000 23040000 23800000 23040000 23800000 - {a=>-103,b=>7} 99070000 99070000 99070000 99e00000 99070000 99070000 99e00000 99070000 99e00000 - {a=>-90,b=>6} a6060000 a6060000 a6060000 a6c00000 a6060000 a6060000 a6c00000 a6060000 a6c00000 - {a=>-77,b=>1} b3010000 b3010000 b3010000 b3200000 b3010000 b3010000 b3200000 b3010000 b3200000 - {a=>73,b=>6} 49060000 49060000 49060000 49c00000 49060000 49060000 49c00000 49060000 49c00000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>8,b=>7} 08270000 08270000 08270000 08f00000 08270000 08270000 08f00000 08270000 08f00000 - {c=>-4,a=>110,b=>2} 6e220000 6e220000 6e220000 6e500000 6e220000 6e220000 6e500000 6e220000 6e500000 - {c=>0,a=>-68,b=>0} bc000000 bc000000 bc000000 bc000000 bc000000 bc000000 bc000000 bc000000 bc000000 - {c=>0,a=>7,b=>7} 07070000 07070000 07070000 07e00000 07070000 07070000 07e00000 07070000 07e00000 - {c=>1,a=>-91,b=>5} a50d0000 a50d0000 a50d0000 a5a40000 a50d0000 a50d0000 a5a40000 a50d0000 a5a40000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>-105,b=>7,d=>1} 97770000 97770000 97770000 97f88000 97770000 97770000 97f88000 97770000 97f88000 - {c=>0,a=>68,b=>2,d=>-1} 44c20100 44c20100 44c20100 44438000 44c20100 44c20100 44438000 44c20100 44438000 - {c=>3,a=>66,b=>2,d=>-4} 421a0100 421a0100 421a0100 424e0000 421a0100 421a0100 424e0000 421a0100 424e0000 - {c=>-2,a=>-3,b=>5,d=>2} fdb50000 fdb50000 fdb50000 fdb90000 fdb50000 fdb50000 fdb90000 fdb50000 fdb90000 - {c=>2,a=>-69,b=>0,d=>2} bb900000 bb900000 bb900000 bb090000 bb900000 bb900000 bb090000 bb900000 bb090000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>5,c=>-4,a=>-27,b=>0,d=>2} e5a00a00 e5a00a00 e5a00a00 e5115000 e5a00a00 e5a00a00 e5115000 e5a00a00 e5115000 - {e=>6,c=>-1,a=>67,b=>7,d=>-4} 433f0d00 433f0d00 433f0d00 43fe6000 433f0d00 433f0d00 43fe6000 433f0d00 43fe6000 - {e=>5,c=>-3,a=>-14,b=>5,d=>0} f22d0a00 f22d0a00 f22d0a00 f2b45000 f22d0a00 f22d0a00 f2b45000 f22d0a00 f2b45000 - {e=>7,c=>-3,a=>-84,b=>6,d=>0} ac2e0e00 ac2e0e00 ac2e0e00 acd47000 ac2e0e00 ac2e0e00 acd47000 ac2e0e00 acd47000 - {e=>4,c=>-1,a=>49,b=>2,d=>-1} 31fa0900 31fa0900 31fa0900 315fc000 31fa0900 31fa0900 315fc000 31fa0900 315fc000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>1,c=>2,a=>83,b=>0,d=>1,f=>'UE5'} 53505200 53505200 53505200 53089a00 53505200 53505200 53089a00 53505200 53089a00 - {e=>2,c=>-2,a=>-120,b=>2,d=>-3,f=>'UE1'} 88721500 88721500 88721500 885aa200 88721500 88721500 885aa200 88721500 885aa200 - {e=>7,c=>2,a=>-63,b=>6,d=>-1,f=>'UE4'} c1d64f00 c1d64f00 c1d64f00 c1cbf800 c1d64f00 c1d64f00 c1cbf800 c1d64f00 c1cbf800 - {e=>3,c=>2,a=>-5,b=>1,d=>-1,f=>'UE3'} fbd13700 fbd13700 fbd13700 fb2bb600 fbd13700 fbd13700 fb2bb600 fbd13700 fb2bb600 - {e=>3,c=>-1,a=>107,b=>5,d=>-1,f=>'UE2'} 6bfd2700 6bfd2700 6bfd2700 6bbfb400 6bfd2700 6bfd2700 6bbfb400 6bfd2700 6bbfb400 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>3,c=>-2,a=>0,g=>4,b=>0,d=>2,f=>'UE6'} 00b06602 00b06602 00b06602 00193d00 00b06602 00b06602 00193d00 00b06602 00193d00 - {e=>1,c=>1,a=>30,g=>6,b=>2,d=>-2,f=>'UE4'} 1e8a4303 1e8a4303 1e8a4303 1e471980 1e8a4303 1e8a4303 1e471980 1e8a4303 1e471980 - {e=>6,c=>3,a=>4,g=>1,b=>4,d=>0,f=>'UE7'} 041cfc00 041cfc00 041cfc00 048c6e40 041cfc00 041cfc00 048c6e40 041cfc00 048c6e40 - {e=>7,c=>-1,a=>-95,g=>6,b=>5,d=>1,f=>'UE6'} a17d6e03 a17d6e03 a17d6e03 a1bcfd80 a17d6e03 a17d6e03 a1bcfd80 a17d6e03 a1bcfd80 - {e=>7,c=>2,a=>-102,g=>2,b=>3,d=>2,f=>'UE3'} 9a933e01 9a933e01 9a933e01 9a697680 9a933e01 9a933e01 9a697680 9a933e01 9a697680 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>2,c=>-3,a=>17,g=>0,b=>7,d=>-4,f=>'UE0'} 112f0500 112f0500 112f0500 11f62000 112f0500 112f0500 11f62000 112f0500 11f62000 - {e=>5,c=>1,a=>-35,g=>5,b=>3,d=>0,f=>'UE7'} dd0bfa02 dd0bfa02 dd0bfa02 dd645f40 dd0bfa02 dd0bfa02 dd645f40 dd0bfa02 dd645f40 - {e=>3,c=>1,a=>-16,g=>3,b=>3,d=>-4,f=>'UE1'} f00b9701 f00b9701 f00b9701 f06632c0 f00b9701 f00b9701 f06632c0 f00b9701 f06632c0 - {e=>6,c=>3,a=>-120,g=>6,b=>3,d=>-2,f=>'UE6'} 889b6d03 889b6d03 889b6d03 886f6d80 889b6d03 889b6d03 886f6d80 889b6d03 886f6d80 - {e=>6,c=>1,a=>-121,g=>1,b=>7,d=>-4,f=>'UE3'} 870fbd00 870fbd00 870fbd00 87e66640 870fbd00 870fbd00 87e66640 870fbd00 87e66640 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>72,d=>-1,c=>-3,h=>1,b=>0,g=>2,f=>'UE5'} 48e85b0101000000 48e85b0101000000 48e85b0101000000 4817da8020000000 48e85b0101000000 48e85b0101000000 4817da8020000000 48e85b0101000000 4817da8020000000 - {e=>3,a=>-54,d=>1,c=>-4,h=>3,b=>0,g=>2,f=>'UE3'} ca60360103000000 ca60360103000000 ca60360103000000 ca10b68060000000 ca60360103000000 ca60360103000000 ca10b68060000000 ca60360103000000 ca10b68060000000 - {e=>0,a=>-29,d=>3,c=>1,h=>1,b=>2,g=>7,f=>'UE1'} e3ca900301000000 e3ca900301000000 e3ca900301000000 e34583c020000000 e3ca900301000000 e3ca900301000000 e34583c020000000 e3ca900301000000 e34583c020000000 - {e=>5,a=>60,d=>-4,c=>3,h=>1,b=>5,g=>1,f=>'UE4'} 3c1dcb0001000000 3c1dcb0001000000 3c1dcb0001000000 3cae584020000000 3c1dcb0001000000 3c1dcb0001000000 3cae584020000000 3c1dcb0001000000 3cae584020000000 - {e=>3,a=>21,d=>1,c=>0,h=>7,b=>2,g=>2,f=>'UE7'} 1542760107000000 1542760107000000 1542760107000000 1540be80e0000000 1542760107000000 1542760107000000 1540be80e0000000 1542760107000000 1540be80e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>3,a=>31,d=>-2,c=>0,h=>4,b=>1,g=>4,f=>'UE7',i=>-3} 1f8177022c000000 1f8177022c000000 1f8177022c000000 1f233f0094000000 1f8177022c000000 1f8177022c000000 1f233f0094000000 1f8177022c000000 1f233f0094000000 - {e=>7,a=>-56,d=>-4,c=>0,h=>3,b=>0,g=>6,f=>'UE0',i=>1} c8000f030b000000 c8000f030b000000 c8000f030b000000 c802718064000000 c8000f030b000000 c8000f030b000000 c802718064000000 c8000f030b000000 c802718064000000 - {e=>4,a=>-92,d=>3,c=>3,h=>0,b=>7,g=>7,f=>'UE0',i=>-2} a4df880330000000 a4df880330000000 a4df880330000000 a4edc1c018000000 a4df880330000000 a4df880330000000 a4edc1c018000000 a4df880330000000 a4edc1c018000000 - {e=>7,a=>27,d=>1,c=>-4,h=>7,b=>6,g=>4,f=>'UE1',i=>1} 1b661e020f000000 1b661e020f000000 1b661e020f000000 1bd0f300e4000000 1b661e020f000000 1b661e020f000000 1bd0f300e4000000 1b661e020f000000 1bd0f300e4000000 - {e=>0,a=>-28,d=>1,c=>1,h=>1,b=>2,g=>5,f=>'UE1',i=>2} e44a900211000000 e44a900211000000 e44a900211000000 e444834028000000 e44a900211000000 e44a900211000000 e444834028000000 e44a900211000000 e444834028000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>43,d=>-4,j=>'SEM1',c=>-2,h=>5,b=>1,g=>0,f=>'UE6',i=>0} 2b316b00c5010000 2b316b00c5010000 2b316b00c5010000 2b3a5c00a3800000 2b316b00c5010000 2b316b00c5010000 2b3a5c00a3800000 2b316b00c5010000 2b3a5c00a3800000 - {e=>1,a=>-116,d=>-3,j=>'SE2',c=>-3,h=>4,b=>4,g=>3,f=>'UE6',i=>1} 8c6ce3018c000000 8c6ce3018c000000 8c6ce3018c000000 8c969cc085000000 8c6ce3018c000000 8c6ce3018c000000 8c969cc085000000 8c6ce3018c000000 8c969cc085000000 - {e=>5,a=>-97,d=>-4,j=>'SE2',c=>0,h=>6,b=>6,g=>2,f=>'UE0',i=>2} 9f060b0196000000 9f060b0196000000 9f060b0196000000 9fc25080c9000000 9f060b0196000000 9f060b0196000000 9fc25080c9000000 9f060b0196000000 9fc25080c9000000 - {e=>3,a=>-10,d=>0,j=>'SE1',c=>-4,h=>1,b=>4,g=>4,f=>'UE7',i=>-3} f624760269000000 f624760269000000 f624760269000000 f6903f0034800000 f624760269000000 f624760269000000 f6903f0034800000 f624760269000000 f6903f0034800000 - {e=>0,a=>-83,d=>3,j=>'SEM4',c=>-1,h=>3,b=>7,g=>0,f=>'UE0',i=>2} adff000013010000 adff000013010000 adff000013010000 adfd80006a000000 adff000013010000 adff000013010000 adfd80006a000000 adff000013010000 adfd80006a000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>-72,d=>1,j=>'SEM4',c=>-2,k=>-69,h=>2,b=>2,g=>4,f=>'UE6',i=>-3} b87268022a01bb00 b87268022a01bb00 b87268022a01bb00 b858cd005600bb00 b87268022a01bb00 b87268022a01bb00 b858cd005600bb00 b87268022a01bb00 b858cd005600bb00 - {e=>3,a=>-74,d=>3,j=>'SE1',c=>1,k=>-22,h=>7,b=>7,g=>1,f=>'UE4',i=>1} b6cfc6004f00ea00 b6cfc6004f00ea00 b6cfc6004f00ea00 b6e5b840e480ea00 b6cfc6004f00ea00 b6cfc6004f00ea00 b6e5b840e480ea00 b6cfc6004f00ea00 b6e5b840e480ea00 - {e=>2,a=>-35,d=>3,j=>'SE0',c=>-3,k=>-17,h=>4,b=>5,g=>0,f=>'UE7',i=>-1} dded74003c00ef00 dded74003c00ef00 dded74003c00ef00 ddb5ae009c00ef00 dded74003c00ef00 dded74003c00ef00 ddb5ae009c00ef00 dded74003c00ef00 ddb5ae009c00ef00 - {e=>6,a=>36,d=>-4,j=>'SEM2',c=>-4,k=>-49,h=>0,b=>3,g=>4,f=>'UE3',i=>-2} 24233d02b001cf00 24233d02b001cf00 24233d02b001cf00 247267001b00cf00 24233d02b001cf00 24233d02b001cf00 247267001b00cf00 24233d02b001cf00 247267001b00cf00 - {e=>0,a=>34,d=>-3,j=>'SEM2',c=>0,k=>9,h=>2,b=>6,g=>4,f=>'UE3',i=>-1} 22463102ba010900 22463102ba010900 22463102ba010900 22c287005f000900 22463102ba010900 22463102ba010900 22c287005f000900 22463102ba010900 22c287005f000900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>7,a=>-52,d=>0,j=>'SE0',l=>6,c=>0,k=>67,h=>4,b=>1,g=>4,f=>'UE1',i=>3} cc011e021c004306 cc011e021c004306 cc011e021c004306 cc2073008c0043c0 cc011e021c004306 cc011e021c004306 cc2073008c0043c0 cc011e021c004306 cc2073008c0043c0 - {e=>0,a=>104,d=>-4,j=>'SE3',l=>4,c=>1,k=>-98,h=>7,b=>1,g=>2,f=>'UE1',i=>-1} 68091101ff009e04 68091101ff009e04 68091101ff009e04 68260280fd809e80 68091101ff009e04 68091101ff009e04 68260280fd809e80 68091101ff009e04 68260280fd809e80 - {e=>1,a=>88,d=>-1,j=>'SE2',l=>4,c=>-2,k=>51,h=>4,b=>2,g=>4,f=>'UE2',i=>-2} 58f22302b4003304 58f22302b4003304 58f22302b4003304 585b950099003380 58f22302b4003304 58f22302b4003304 585b950099003380 58f22302b4003304 585b950099003380 - {e=>2,a=>-81,d=>2,j=>'SE0',l=>2,c=>0,k=>87,h=>1,b=>1,g=>6,f=>'UE4',i=>0} af81440301005702 af81440301005702 af81440301005702 af21298020005740 af81440301005702 af81440301005702 af21298020005740 af81440301005702 af21298020005740 - {e=>5,a=>-126,d=>2,j=>'SE3',l=>6,c=>-3,k=>79,h=>0,b=>3,g=>4,f=>'UE4',i=>1} 82ab4a02c8004f06 82ab4a02c8004f06 82ab4a02c8004f06 8275590005804fc0 82ab4a02c8004f06 82ab4a02c8004f06 8275590005804fc0 82ab4a02c8004f06 8275590005804fc0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-69,m=>2,d=>2,j=>'SE1',l=>1,c=>2,k=>35,h=>6,b=>4,g=>4,f=>'UE5',i=>3} bb9458025e002311 bb9458025e002311 bb9458025e002311 bb894b00cc802328 bb9458025e002311 bb9458025e002311 bb894b00cc802328 bb9458025e002311 bb894b00cc802328 - {e=>7,a=>87,m=>-2,d=>-4,j=>'SEM4',l=>1,c=>-1,k=>1,h=>7,b=>6,g=>4,f=>'UE4',i=>2} 573e4f0217010131 573e4f0217010131 573e4f0217010131 57de7900ea000138 573e4f0217010131 573e4f0217010131 57de7900ea000138 573e4f0217010131 57de7900ea000138 - {e=>6,a=>-102,m=>1,d=>3,j=>'SEM4',l=>2,c=>-4,k=>78,h=>5,b=>7,g=>6,f=>'UE3',i=>-3} 9ae73c032d014e0a 9ae73c032d014e0a 9ae73c032d014e0a 9af1e780b6004e44 9ae73c032d014e0a 9ae73c032d014e0a 9af1e780b6004e44 9ae73c032d014e0a 9af1e780b6004e44 - {e=>0,a=>122,m=>2,d=>-1,j=>'SEM2',l=>4,c=>-1,k=>-59,h=>6,b=>4,g=>0,f=>'UE1',i=>-3} 7afc1100ae01c514 7afc1100ae01c514 7afc1100ae01c514 7a9f8200d700c588 7afc1100ae01c514 7afc1100ae01c514 7a9f8200d700c588 7afc1100ae01c514 7a9f8200d700c588 - {e=>2,a=>91,m=>2,d=>2,j=>'SEM4',l=>2,c=>0,k=>-51,h=>2,b=>4,g=>3,f=>'UE2',i=>3} 5b84a4011a01cd12 5b84a4011a01cd12 5b84a4011a01cd12 5b8124c04e00cd48 5b84a4011a01cd12 5b84a4011a01cd12 5b8124c04e00cd48 5b84a4011a01cd12 5b8124c04e00cd48 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>0,a=>40,m=>0,d=>-2,j=>'SEM1',l=>4,c=>-3,k=>69,h=>7,b=>4,g=>3,f=>'UE0',i=>-1} 28ac8d01ff01450400000000 28ac8d01ff01450400000000 28ac8d01ff01450400000000 289760c0ff80458000000000 28ac8d01ff01450400000000 28ac8d01ff01450400000000 289760c0ff80458000000000 28ac8d01ff01450400000000 289760c0ff80458000000000 - {e=>4,n=>6,a=>30,m=>1,d=>3,j=>'SEM1',l=>0,c=>-2,k=>-11,h=>4,b=>6,g=>7,f=>'UE3',i=>-1} 1ef6b803fc01f50806000000 1ef6b803fc01f50806000000 1ef6b803fc01f50806000000 1ed9c7c09f80f504c0000000 1ef6b803fc01f50806000000 1ef6b803fc01f50806000000 1ed9c7c09f80f504c0000000 1ef6b803fc01f50806000000 1ed9c7c09f80f504c0000000 - {e=>7,n=>3,a=>-38,m=>3,d=>2,j=>'SEM4',l=>2,c=>-2,k=>-84,h=>7,b=>7,g=>3,f=>'UE2',i=>3} dab7ae011f01ac1a03000000 dab7ae011f01ac1a03000000 dab7ae011f01ac1a03000000 daf974c0ee00ac4c60000000 dab7ae011f01ac1a03000000 dab7ae011f01ac1a03000000 daf974c0ee00ac4c60000000 dab7ae011f01ac1a03000000 daf974c0ee00ac4c60000000 - {e=>0,n=>3,a=>39,m=>0,d=>1,j=>'SEM3',l=>7,c=>3,k=>-120,h=>5,b=>2,g=>6,f=>'UE2',i=>3} 275a20035d01880703000000 275a20035d01880703000000 275a20035d01880703000000 274c8580ae8088e060000000 275a20035d01880703000000 275a20035d01880703000000 274c8580ae8088e060000000 275a20035d01880703000000 274c8580ae8088e060000000 - {e=>5,n=>5,a=>-10,m=>-4,d=>-1,j=>'SEM3',l=>5,c=>0,k=>23,h=>7,b=>0,g=>7,f=>'UE7',i=>0} f6c0fb034701172505000000 f6c0fb034701172505000000 f6c0fb034701172505000000 f603dfc0e28017b0a0000000 f6c0fb034701172505000000 f6c0fb034701172505000000 f603dfc0e28017b0a0000000 f6c0fb034701172505000000 f603dfc0e28017b0a0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>4,a=>-49,m=>-4,d=>-2,j=>'SE3',l=>1,c=>0,k=>-90,h=>0,b=>3,g=>1,f=>'UE1',o=>232,i=>1} cf839500c800a62104e80000 cf839500c800a62104e80000 cf839500c800a62104e80000 cf6322400580a63080e80000 cf839500c800a62104e80000 cf839500c800a62104e80000 cf6322400580a63080e80000 cf839500c800a62104e80000 cf6322400580a63080e80000 - {e=>6,n=>2,a=>4,m=>1,d=>3,j=>'SEM2',l=>1,c=>1,k=>-19,h=>7,b=>4,g=>3,f=>'UE0',o=>88,i=>1} 04cc8c018f01ed0902580000 04cc8c018f01ed0902580000 04cc8c018f01ed0902580000 0485e0c0e700ed2440580000 04cc8c018f01ed0902580000 04cc8c018f01ed0902580000 0485e0c0e700ed2440580000 04cc8c018f01ed0902580000 0485e0c0e700ed2440580000 - {e=>4,n=>7,a=>61,m=>0,d=>2,j=>'SE1',l=>6,c=>-1,k=>113,h=>2,b=>6,g=>5,f=>'UE6',o=>234,i=>2} 3dbee8025200710607ea0000 3dbee8025200710607ea0000 3dbee8025200710607ea0000 3ddd4d40488071c0e0ea0000 3dbee8025200710607ea0000 3dbee8025200710607ea0000 3ddd4d40488071c0e0ea0000 3dbee8025200710607ea0000 3ddd4d40488071c0e0ea0000 - {e=>1,n=>0,a=>-69,m=>-2,d=>2,j=>'SE0',l=>0,c=>0,k=>38,h=>4,b=>5,g=>1,f=>'UE6',o=>145,i=>-2} bb85e2003400263000910000 bb85e2003400263000910000 bb85e2003400263000910000 bba11c409800261800910000 bb85e2003400263000910000 bb85e2003400263000910000 bba11c409800261800910000 bb85e2003400263000910000 bba11c409800261800910000 - {e=>3,n=>2,a=>-1,m=>-1,d=>2,j=>'SEM3',l=>1,c=>1,k=>-52,h=>3,b=>1,g=>2,f=>'UE1',o=>195,i=>-3} ff8916016b01cc3902c30000 ff8916016b01cc3902c30000 ff8916016b01cc3902c30000 ff2532807680cc3c40c30000 ff8916016b01cc3902c30000 ff8916016b01cc3902c30000 ff2532807680cc3c40c30000 ff8916016b01cc3902c30000 ff2532807680cc3c40c30000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; }; - {a=>-117,b=>5} 8bff0500 8bff0500 8bff0500 ff8ba000 8bff0500 8bff0500 ff8ba000 8bff0500 ff8ba000 - {a=>72,b=>7} 48000700 48000700 48000700 0048e000 48000700 48000700 0048e000 48000700 0048e000 - {a=>10,b=>5} 0a000500 0a000500 0a000500 000aa000 0a000500 0a000500 000aa000 0a000500 000aa000 - {a=>-60,b=>2} c4ff0200 c4ff0200 c4ff0200 ffc44000 c4ff0200 c4ff0200 ffc44000 c4ff0200 ffc44000 - {a=>-76,b=>6} b4ff0600 b4ff0600 b4ff0600 ffb4c000 b4ff0600 b4ff0600 ffb4c000 b4ff0600 ffb4c000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>-67,b=>0} bdff2000 bdff2000 bdff2000 ffbd1000 bdff2000 bdff2000 ffbd1000 bdff2000 ffbd1000 - {c=>-3,a=>-101,b=>6} 9bff2e00 9bff2e00 9bff2e00 ff9bd400 9bff2e00 9bff2e00 ff9bd400 9bff2e00 ff9bd400 - {c=>2,a=>-19,b=>7} edff1700 edff1700 edff1700 ffede800 edff1700 edff1700 ffede800 edff1700 ffede800 - {c=>-2,a=>92,b=>7} 5c003700 5c003700 5c003700 005cf800 5c003700 5c003700 005cf800 5c003700 005cf800 - {c=>3,a=>46,b=>7} 2e001f00 2e001f00 2e001f00 002eec00 2e001f00 2e001f00 002eec00 2e001f00 002eec00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>79,b=>0,d=>0} 4f002000 4f002000 4f002000 004f1000 4f002000 4f002000 004f1000 4f002000 004f1000 - {c=>-3,a=>93,b=>4,d=>0} 5d002c00 5d002c00 5d002c00 005d9400 5d002c00 5d002c00 005d9400 5d002c00 005d9400 - {c=>-3,a=>-14,b=>5,d=>-1} f2ffed01 f2ffed01 f2ffed01 fff2b780 f2ffed01 f2ffed01 fff2b780 f2ffed01 fff2b780 - {c=>0,a=>-47,b=>4,d=>-4} d1ff0401 d1ff0401 d1ff0401 ffd18200 d1ff0401 d1ff0401 ffd18200 d1ff0401 ffd18200 - {c=>2,a=>-7,b=>5,d=>2} f9ff9500 f9ff9500 f9ff9500 fff9a900 f9ff9500 f9ff9500 fff9a900 f9ff9500 fff9a900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>6,c=>-1,a=>-71,b=>2,d=>0} b9ff3a0c b9ff3a0c b9ff3a0c ffb95c60 b9ff3a0c b9ff3a0c ffb95c60 b9ff3a0c ffb95c60 - {e=>0,c=>-1,a=>-25,b=>1,d=>3} e7fff900 e7fff900 e7fff900 ffe73d80 e7fff900 e7fff900 ffe73d80 e7fff900 ffe73d80 - {e=>0,c=>0,a=>-15,b=>4,d=>-4} f1ff0401 f1ff0401 f1ff0401 fff18200 f1ff0401 f1ff0401 fff18200 f1ff0401 fff18200 - {e=>6,c=>-1,a=>26,b=>6,d=>-3} 1a007e0d 1a007e0d 1a007e0d 001adee0 1a007e0d 1a007e0d 001adee0 1a007e0d 001adee0 - {e=>7,c=>3,a=>-24,b=>1,d=>2} e8ff990e e8ff990e e8ff990e ffe82d70 e8ff990e e8ff990e ffe82d70 e8ff990e ffe82d70 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>2,c=>-3,a=>-20,b=>5,d=>3,f=>'UE1'} ecffed14 ecffed14 ecffed14 ffecb5a2 ecffed14 ecffed14 ffecb5a2 ecffed14 ffecb5a2 - {e=>1,c=>2,a=>47,b=>6,d=>2,f=>'UE3'} 2f009632 2f009632 2f009632 002fc916 2f009632 2f009632 002fc916 2f009632 002fc916 - {e=>6,c=>1,a=>16,b=>5,d=>0,f=>'UE7'} 10000d7c 10000d7c 10000d7c 0010a46e 10000d7c 10000d7c 0010a46e 10000d7c 0010a46e - {e=>6,c=>-2,a=>102,b=>5,d=>2,f=>'UE1'} 6600b51c 6600b51c 6600b51c 0066b962 6600b51c 6600b51c 0066b962 6600b51c 0066b962 - {e=>3,c=>-3,a=>-74,b=>2,d=>-4,f=>'UE7'} b6ff2a77 b6ff2a77 b6ff2a77 ffb6563e b6ff2a77 b6ff2a77 ffb6563e b6ff2a77 ffb6563e = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>5,c=>3,a=>65,g=>2,b=>7,d=>0,f=>'UE3'} 41001f3a02000000 41001f3a02000000 41001f3a02000000 0041ec5640000000 41001f3a02000000 41001f3a02000000 0041ec5640000000 41001f3a02000000 0041ec5640000000 - {e=>1,c=>-1,a=>17,g=>4,b=>3,d=>3,f=>'UE4'} 1100fb4204000000 1100fb4204000000 1100fb4204000000 00117d9880000000 1100fb4204000000 1100fb4204000000 00117d9880000000 1100fb4204000000 00117d9880000000 - {e=>0,c=>1,a=>100,g=>1,b=>1,d=>1,f=>'UE5'} 6400495001000000 6400495001000000 6400495001000000 0064248a20000000 6400495001000000 6400495001000000 0064248a20000000 6400495001000000 0064248a20000000 - {e=>5,c=>1,a=>90,g=>5,b=>1,d=>3,f=>'UE4'} 5a00c94a05000000 5a00c94a05000000 5a00c94a05000000 005a25d8a0000000 5a00c94a05000000 5a00c94a05000000 005a25d8a0000000 5a00c94a05000000 005a25d8a0000000 - {e=>5,c=>3,a=>-34,g=>1,b=>7,d=>1,f=>'UE7'} deff5f7a01000000 deff5f7a01000000 deff5f7a01000000 ffdeecde20000000 deff5f7a01000000 deff5f7a01000000 ffdeecde20000000 deff5f7a01000000 ffdeecde20000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>6,c=>-1,a=>-29,g=>4,b=>0,d=>0,f=>'UE0'} e3ff380c04000000 e3ff380c04000000 e3ff380c04000000 ffe31c6080000000 e3ff380c04000000 e3ff380c04000000 ffe31c6080000000 e3ff380c04000000 ffe31c6080000000 - {e=>4,c=>1,a=>-112,g=>5,b=>1,d=>-4,f=>'UE6'} 90ff096905000000 90ff096905000000 90ff096905000000 ff90264ca0000000 90ff096905000000 90ff096905000000 ff90264ca0000000 90ff096905000000 ff90264ca0000000 - {e=>4,c=>-1,a=>-66,g=>1,b=>4,d=>2,f=>'UE0'} beffbc0801000000 beffbc0801000000 beffbc0801000000 ffbe9d4020000000 beffbc0801000000 beffbc0801000000 ffbe9d4020000000 beffbc0801000000 ffbe9d4020000000 - {e=>7,c=>-3,a=>-106,g=>5,b=>5,d=>-1,f=>'UE2'} 96ffed2f05000000 96ffed2f05000000 96ffed2f05000000 ff96b7f4a0000000 96ffed2f05000000 96ffed2f05000000 ff96b7f4a0000000 96ffed2f05000000 ff96b7f4a0000000 - {e=>7,c=>3,a=>-85,g=>4,b=>5,d=>-1,f=>'UE5'} abffdd5f04000000 abffdd5f04000000 abffdd5f04000000 ffabaffa80000000 abffdd5f04000000 abffdd5f04000000 ffabaffa80000000 abffdd5f04000000 ffabaffa80000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>-70,d=>3,c=>-2,h=>1,b=>7,g=>0,f=>'UE6'} bafff7620000000001000000 bafff7620000000001000000 bafff7620000000001000000 ffbaf99c0000000020000000 bafff7620000000001000000 bafff7620000000001000000 ffbaf99c0000000020000000 bafff7620000000001000000 ffbaf99c0000000020000000 - {e=>3,a=>16,d=>-2,c=>1,h=>1,b=>3,g=>7,f=>'UE2'} 10008b270700000001000000 10008b270700000001000000 10008b270700000001000000 00106734e000000020000000 10008b270700000001000000 10008b270700000001000000 00106734e000000020000000 10008b270700000001000000 00106734e000000020000000 - {e=>7,a=>34,d=>-3,c=>-1,h=>3,b=>1,g=>4,f=>'UE6'} 2200796f0400000003000000 2200796f0400000003000000 2200796f0400000003000000 00223efc8000000060000000 2200796f0400000003000000 2200796f0400000003000000 00223efc8000000060000000 2200796f0400000003000000 00223efc8000000060000000 - {e=>1,a=>15,d=>-3,c=>-1,h=>6,b=>7,g=>7,f=>'UE0'} 0f007f030700000006000000 0f007f030700000006000000 0f007f030700000006000000 000ffe90e0000000c0000000 0f007f030700000006000000 0f007f030700000006000000 000ffe90e0000000c0000000 0f007f030700000006000000 000ffe90e0000000c0000000 - {e=>5,a=>120,d=>0,c=>3,h=>7,b=>7,g=>0,f=>'UE4'} 78001f4a0000000007000000 78001f4a0000000007000000 78001f4a0000000007000000 0078ec5800000000e0000000 78001f4a0000000007000000 78001f4a0000000007000000 0078ec5800000000e0000000 78001f4a0000000007000000 0078ec5800000000e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>110,d=>1,c=>0,h=>3,b=>1,g=>7,f=>'UE3',i=>-3} 6e00413e070000002b000000 6e00413e070000002b000000 6e00413e070000002b000000 006e20f6e000000074000000 6e00413e070000002b000000 6e00413e070000002b000000 006e20f6e000000074000000 6e00413e070000002b000000 006e20f6e000000074000000 - {e=>4,a=>-31,d=>-2,c=>-4,h=>0,b=>7,g=>7,f=>'UE7',i=>-2} e1ffa7790700000030000000 e1ffa7790700000030000000 e1ffa7790700000030000000 ffe1f34ee000000018000000 e1ffa7790700000030000000 e1ffa7790700000030000000 ffe1f34ee000000018000000 e1ffa7790700000030000000 ffe1f34ee000000018000000 - {e=>6,a=>64,d=>2,c=>-1,h=>4,b=>3,g=>5,f=>'UE5',i=>-3} 4000bb5c050000002c000000 4000bb5c050000002c000000 4000bb5c050000002c000000 00407d6aa000000094000000 4000bb5c050000002c000000 4000bb5c050000002c000000 00407d6aa000000094000000 4000bb5c050000002c000000 00407d6aa000000094000000 - {e=>5,a=>100,d=>1,c=>3,h=>5,b=>4,g=>4,f=>'UE2',i=>-1} 64005c2a040000003d000000 64005c2a040000003d000000 64005c2a040000003d000000 00648cd480000000bc000000 64005c2a040000003d000000 64005c2a040000003d000000 00648cd480000000bc000000 64005c2a040000003d000000 00648cd480000000bc000000 - {e=>5,a=>-124,d=>-4,c=>-2,h=>6,b=>1,g=>4,f=>'UE4',i=>2} 84ff314b0400000016000000 84ff314b0400000016000000 84ff314b0400000016000000 ff843a5880000000c8000000 84ff314b0400000016000000 84ff314b0400000016000000 ff843a5880000000c8000000 84ff314b0400000016000000 ff843a5880000000c8000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>6,a=>-89,d=>2,j=>'SE2',c=>0,h=>7,b=>2,g=>7,f=>'UE6',i=>-4} a7ff826c07000000a7000000 a7ff826c07000000a7000000 a7ff826c07000000a7000000 ffa7416ce0000000f1000000 a7ff826c07000000a7000000 a7ff826c07000000a7000000 ffa7416ce0000000f1000000 a7ff826c07000000a7000000 ffa7416ce0000000f1000000 - {e=>6,a=>63,d=>-2,j=>'SEM1',c=>-4,h=>2,b=>6,g=>6,f=>'UE0',i=>-1} 3f00a60d06000000fa010000 3f00a60d06000000fa010000 3f00a60d06000000fa010000 003fd360c00000005f800000 3f00a60d06000000fa010000 3f00a60d06000000fa010000 003fd360c00000005f800000 3f00a60d06000000fa010000 003fd360c00000005f800000 - {e=>4,a=>93,d=>-4,j=>'SE2',c=>3,h=>7,b=>5,g=>7,f=>'UE7',i=>-1} 5d001d7907000000bf000000 5d001d7907000000bf000000 5d001d7907000000bf000000 005dae4ee0000000fd000000 5d001d7907000000bf000000 5d001d7907000000bf000000 005dae4ee0000000fd000000 5d001d7907000000bf000000 005dae4ee0000000fd000000 - {e=>4,a=>-43,d=>0,j=>'SE3',c=>-2,h=>1,b=>7,g=>6,f=>'UE6',i=>-1} d5ff376806000000f9000000 d5ff376806000000f9000000 d5ff376806000000f9000000 ffd5f84cc00000003d800000 d5ff376806000000f9000000 d5ff376806000000f9000000 ffd5f84cc00000003d800000 d5ff376806000000f9000000 ffd5f84cc00000003d800000 - {e=>1,a=>21,d=>2,j=>'SEM3',c=>-3,h=>0,b=>6,g=>4,f=>'UE4',i=>-2} 1500ae420400000070010000 1500ae420400000070010000 1500ae420400000070010000 0015d518800000001a800000 1500ae420400000070010000 1500ae420400000070010000 0015d518800000001a800000 1500ae420400000070010000 0015d518800000001a800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>124,d=>-1,j=>'SE2',c=>2,k=>-23,h=>7,b=>1,g=>2,f=>'UE4',i=>0} 7c00d149020000008700e900 7c00d149020000008700e900 7c00d149020000008700e900 007c2bc840000000e100e900 7c00d149020000008700e900 7c00d149020000008700e900 007c2bc840000000e100e900 7c00d149020000008700e900 007c2bc840000000e100e900 - {e=>6,a=>-50,d=>-3,j=>'SE2',c=>-3,k=>-66,h=>3,b=>5,g=>2,f=>'UE5',i=>1} ceff6d5d020000008b00be00 ceff6d5d020000008b00be00 ceff6d5d020000008b00be00 ffceb6ea400000006500be00 ceff6d5d020000008b00be00 ceff6d5d020000008b00be00 ffceb6ea400000006500be00 ceff6d5d020000008b00be00 ffceb6ea400000006500be00 - {e=>4,a=>31,d=>2,j=>'SEM1',c=>-4,k=>-117,h=>1,b=>4,g=>3,f=>'UE5',i=>0} 1f00a45803000000c1018b00 1f00a45803000000c1018b00 1f00a45803000000c1018b00 001f914a6000000023808b00 1f00a45803000000c1018b00 1f00a45803000000c1018b00 001f914a6000000023808b00 1f00a45803000000c1018b00 001f914a6000000023808b00 - {e=>0,a=>-107,d=>0,j=>'SEM4',c=>-3,k=>8,h=>7,b=>7,g=>5,f=>'UE5',i=>-1} 95ff2f50050000003f010800 95ff2f50050000003f010800 95ff2f50050000003f010800 ff95f40aa0000000fe000800 95ff2f50050000003f010800 95ff2f50050000003f010800 ff95f40aa0000000fe000800 95ff2f50050000003f010800 ff95f40aa0000000fe000800 - {e=>7,a=>-5,d=>1,j=>'SEM4',c=>1,k=>71,h=>4,b=>2,g=>6,f=>'UE1',i=>2} fbff4a1e0600000014014700 fbff4a1e0600000014014700 fbff4a1e0600000014014700 fffb44f2c00000008a004700 fbff4a1e0600000014014700 fbff4a1e0600000014014700 fffb44f2c00000008a004700 fbff4a1e0600000014014700 fffb44f2c00000008a004700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>2,a=>-31,d=>2,j=>'SE1',l=>0,c=>2,k=>75,h=>7,b=>1,g=>0,f=>'UE1',i=>2} e1ff91140000000057004b00 e1ff91140000000057004b00 e1ff91140000000057004b00 ffe1292200000000e8804b00 e1ff91140000000057004b00 e1ff91140000000057004b00 ffe1292200000000e8804b00 e1ff91140000000057004b00 ffe1292200000000e8804b00 - {e=>2,a=>-101,d=>-3,j=>'SEM4',l=>4,c=>-4,k=>-56,h=>0,b=>2,g=>1,f=>'UE0',i=>-3} 9bff6205010000002801c804 9bff6205010000002801c804 9bff6205010000002801c804 ff9b52a0200000001600c880 9bff6205010000002801c804 9bff6205010000002801c804 ff9b52a0200000001600c880 9bff6205010000002801c804 ff9b52a0200000001600c880 - {e=>7,a=>79,d=>1,j=>'SE2',l=>0,c=>-4,k=>87,h=>0,b=>7,g=>2,f=>'UE6',i=>-1} 4f00676e02000000b8005700 4f00676e02000000b8005700 4f00676e02000000b8005700 004ff0fc400000001d005700 4f00676e02000000b8005700 4f00676e02000000b8005700 004ff0fc400000001d005700 4f00676e02000000b8005700 004ff0fc400000001d005700 - {e=>1,a=>44,d=>1,j=>'SE0',l=>3,c=>2,k=>97,h=>7,b=>5,g=>3,f=>'UE5',i=>3} 2c005552030000001f006103 2c005552030000001f006103 2c005552030000001f006103 002ca89a60000000ec006160 2c005552030000001f006103 2c005552030000001f006103 002ca89a60000000ec006160 2c005552030000001f006103 002ca89a60000000ec006160 - {e=>3,a=>59,d=>2,j=>'SEM3',l=>5,c=>2,k=>-17,h=>0,b=>4,g=>3,f=>'UE4',i=>1} 3b009446030000004801ef05 3b009446030000004801ef05 3b009446030000004801ef05 003b8938600000000680efa0 3b009446030000004801ef05 3b009446030000004801ef05 003b8938600000000680efa0 3b009446030000004801ef05 003b8938600000000680efa0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>54,m=>-4,d=>2,j=>'SE2',l=>1,c=>1,k=>91,h=>0,b=>5,g=>5,f=>'UE5',i=>2} 36008d500500000090005b21 36008d500500000090005b21 36008d500500000090005b21 0036a50aa000000009005b30 36008d500500000090005b21 36008d500500000090005b21 0036a50aa000000009005b30 36008d500500000090005b21 0036a50aa000000009005b30 - {e=>6,a=>-109,m=>-4,d=>1,j=>'SEM1',l=>4,c=>-2,k=>111,h=>7,b=>7,g=>7,f=>'UE7',i=>0} 93ff777c07000000c7016f24 93ff777c07000000c7016f24 93ff777c07000000c7016f24 ff93f8eee0000000e3806f90 93ff777c07000000c7016f24 93ff777c07000000c7016f24 ff93f8eee0000000e3806f90 93ff777c07000000c7016f24 ff93f8eee0000000e3806f90 - {e=>4,a=>-18,m=>-1,d=>-2,j=>'SEM4',l=>7,c=>3,k=>-106,h=>2,b=>6,g=>7,f=>'UE1',i=>-4} eeff9e19070000002201963f eeff9e19070000002201963f eeff9e19070000002201963f ffeecf42e0000000520096fc eeff9e19070000002201963f eeff9e19070000002201963f ffeecf42e0000000520096fc eeff9e19070000002201963f ffeecf42e0000000520096fc - {e=>5,a=>77,m=>1,d=>1,j=>'SE2',l=>6,c=>-2,k=>-38,h=>5,b=>1,g=>6,f=>'UE2',i=>3} 4d00712a060000009d00da0e 4d00712a060000009d00da0e 4d00712a060000009d00da0e 004d38d4c0000000ad00dac4 4d00712a060000009d00da0e 4d00712a060000009d00da0e 004d38d4c0000000ad00dac4 4d00712a060000009d00da0e 004d38d4c0000000ad00dac4 - {e=>2,a=>63,m=>2,d=>0,j=>'SEM4',l=>4,c=>-3,k=>-13,h=>0,b=>2,g=>5,f=>'UE6',i=>2} 3f002a64050000001001f314 3f002a64050000001001f314 3f002a64050000001001f314 003f542ca00000000a00f388 3f002a64050000001001f314 3f002a64050000001001f314 003f542ca00000000a00f388 3f002a64050000001001f314 003f542ca00000000a00f388 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>7,n=>1,a=>6,m=>2,d=>-1,j=>'SEM1',l=>4,c=>3,k=>-96,h=>7,b=>7,g=>2,f=>'UE0',i=>-2} 0600df0f02000000f701a01401000000 0600df0f02000000f701a01401000000 0600df0f02000000f701a01401000000 0006eff040000000fb80a08820000000 0600df0f02000000f701a01401000000 0600df0f02000000f701a01401000000 0006eff040000000fb80a08820000000 0600df0f02000000f701a01401000000 0006eff040000000fb80a08820000000 - {e=>1,n=>3,a=>-28,m=>0,d=>1,j=>'SEM4',l=>5,c=>-2,k=>118,h=>2,b=>1,g=>1,f=>'UE1',i=>-2} e4ff7112010000003201760503000000 e4ff7112010000003201760503000000 e4ff7112010000003201760503000000 ffe43892200000005a0076a060000000 e4ff7112010000003201760503000000 e4ff7112010000003201760503000000 ffe43892200000005a0076a060000000 e4ff7112010000003201760503000000 ffe43892200000005a0076a060000000 - {e=>6,n=>5,a=>125,m=>-4,d=>1,j=>'SEM1',l=>3,c=>-1,k=>1,h=>5,b=>7,g=>6,f=>'UE6',i=>-1} 7d007f6c06000000fd01012305000000 7d007f6c06000000fd01012305000000 7d007f6c06000000fd01012305000000 007dfcecc0000000bf800170a0000000 7d007f6c06000000fd01012305000000 7d007f6c06000000fd01012305000000 007dfcecc0000000bf800170a0000000 7d007f6c06000000fd01012305000000 007dfcecc0000000bf800170a0000000 - {e=>3,n=>1,a=>4,m=>-4,d=>-3,j=>'SE1',l=>5,c=>-4,k=>82,h=>7,b=>3,g=>0,f=>'UE5',i=>-4} 04006357000000006700522501000000 04006357000000006700522501000000 04006357000000006700522501000000 000472ba00000000f08052b020000000 04006357000000006700522501000000 04006357000000006700522501000000 000472ba00000000f08052b020000000 04006357000000006700522501000000 000472ba00000000f08052b020000000 - {e=>4,n=>7,a=>98,m=>1,d=>1,j=>'SE2',l=>5,c=>-3,k=>-32,h=>6,b=>2,g=>3,f=>'UE5',i=>1} 62006a58030000008e00e00d07000000 62006a58030000008e00e00d07000000 62006a58030000008e00e00d07000000 006254ca60000000c500e0a4e0000000 62006a58030000008e00e00d07000000 62006a58030000008e00e00d07000000 006254ca60000000c500e0a4e0000000 62006a58030000008e00e00d07000000 006254ca60000000c500e0a4e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>5,n=>6,a=>-72,m=>-2,d=>-3,j=>'SEM1',l=>0,c=>1,k=>95,h=>2,b=>5,g=>7,f=>'UE0',o=>120,i=>-3} b8ff4d0b07000000ea015f3006780000 b8ff4d0b07000000ea015f3006780000 b8ff4d0b07000000ea015f3006780000 ffb8a6d0e000000057805f18c0780000 b8ff4d0b07000000ea015f3006780000 b8ff4d0b07000000ea015f3006780000 ffb8a6d0e000000057805f18c0780000 b8ff4d0b07000000ea015f3006780000 ffb8a6d0e000000057805f18c0780000 - {e=>2,n=>0,a=>-69,m=>-1,d=>0,j=>'SE0',l=>0,c=>1,k=>-105,h=>7,b=>6,g=>0,f=>'UE1',o=>44,i=>2} bbff0e140000000017009738002c0000 bbff0e140000000017009738002c0000 bbff0e140000000017009738002c0000 ffbbc42200000000e800971c002c0000 bbff0e140000000017009738002c0000 bbff0e140000000017009738002c0000 ffbbc42200000000e800971c002c0000 bbff0e140000000017009738002c0000 ffbbc42200000000e800971c002c0000 - {e=>0,n=>5,a=>94,m=>-3,d=>-2,j=>'SEM3',l=>4,c=>-1,k=>53,h=>7,b=>4,g=>7,f=>'UE3',o=>232,i=>3} 5e00bc31070000005f01352c05e80000 5e00bc31070000005f01352c05e80000 5e00bc31070000005f01352c05e80000 005e9f06e0000000ee803594a0e80000 5e00bc31070000005f01352c05e80000 5e00bc31070000005f01352c05e80000 005e9f06e0000000ee803594a0e80000 5e00bc31070000005f01352c05e80000 005e9f06e0000000ee803594a0e80000 - {e=>1,n=>0,a=>112,m=>-1,d=>-3,j=>'SE3',l=>4,c=>-2,k=>50,h=>1,b=>4,g=>7,f=>'UE6',o=>103,i=>1} 7000746307000000c900323c00670000 7000746307000000c900323c00670000 7000746307000000c900323c00670000 00709a9ce00000002580329c00670000 7000746307000000c900323c00670000 7000746307000000c900323c00670000 00709a9ce00000002580329c00670000 7000746307000000c900323c00670000 00709a9ce00000002580329c00670000 - {e=>7,n=>6,a=>-116,m=>1,d=>3,j=>'SEM1',l=>3,c=>0,k=>117,h=>5,b=>5,g=>7,f=>'UE0',o=>207,i=>-1} 8cffc50e07000000fd01750b06cf0000 8cffc50e07000000fd01750b06cf0000 8cffc50e07000000fd01750b06cf0000 ff8ca1f0e0000000bf807564c0cf0000 8cffc50e07000000fd01750b06cf0000 8cffc50e07000000fd01750b06cf0000 ff8ca1f0e0000000bf807564c0cf0000 8cffc50e07000000fd01750b06cf0000 ff8ca1f0e0000000bf807564c0cf0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; }; - {a=>59,b=>6} 3b00000006000000 3b00000006000000 3b00000006000000 0000003bc0000000 3b00000006000000 3b00000006000000 0000003bc0000000 3b00000006000000 0000003bc0000000 - {a=>-72,b=>6} b8ffffff06000000 b8ffffff06000000 b8ffffff06000000 ffffffb8c0000000 b8ffffff06000000 b8ffffff06000000 ffffffb8c0000000 b8ffffff06000000 ffffffb8c0000000 - {a=>-11,b=>2} f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 fffffff540000000 f5ffffff02000000 f5ffffff02000000 fffffff540000000 f5ffffff02000000 fffffff540000000 - {a=>-120,b=>5} 88ffffff05000000 88ffffff05000000 88ffffff05000000 ffffff88a0000000 88ffffff05000000 88ffffff05000000 ffffff88a0000000 88ffffff05000000 ffffff88a0000000 - {a=>16,b=>4} 1000000004000000 1000000004000000 1000000004000000 0000001080000000 1000000004000000 1000000004000000 0000001080000000 1000000004000000 0000001080000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>-6,b=>5} faffffff25000000 faffffff25000000 faffffff25000000 fffffffab0000000 faffffff25000000 faffffff25000000 fffffffab0000000 faffffff25000000 fffffffab0000000 - {c=>2,a=>-12,b=>0} f4ffffff10000000 f4ffffff10000000 f4ffffff10000000 fffffff408000000 f4ffffff10000000 f4ffffff10000000 fffffff408000000 f4ffffff10000000 fffffff408000000 - {c=>-1,a=>-6,b=>7} faffffff3f000000 faffffff3f000000 faffffff3f000000 fffffffafc000000 faffffff3f000000 faffffff3f000000 fffffffafc000000 faffffff3f000000 fffffffafc000000 - {c=>-3,a=>126,b=>1} 7e00000029000000 7e00000029000000 7e00000029000000 0000007e34000000 7e00000029000000 7e00000029000000 0000007e34000000 7e00000029000000 0000007e34000000 - {c=>-2,a=>3,b=>2} 0300000032000000 0300000032000000 0300000032000000 0000000358000000 0300000032000000 0300000032000000 0000000358000000 0300000032000000 0000000358000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>6,b=>4,d=>1} 060000006c000000 060000006c000000 060000006c000000 0000000694800000 060000006c000000 060000006c000000 0000000694800000 060000006c000000 0000000694800000 - {c=>2,a=>-111,b=>6,d=>-3} 91ffffff56010000 91ffffff56010000 91ffffff56010000 ffffff91ca800000 91ffffff56010000 91ffffff56010000 ffffff91ca800000 91ffffff56010000 ffffff91ca800000 - {c=>1,a=>-80,b=>4,d=>-3} b0ffffff4c010000 b0ffffff4c010000 b0ffffff4c010000 ffffffb086800000 b0ffffff4c010000 b0ffffff4c010000 ffffffb086800000 b0ffffff4c010000 ffffffb086800000 - {c=>3,a=>54,b=>4,d=>0} 360000001c000000 360000001c000000 360000001c000000 000000368c000000 360000001c000000 360000001c000000 000000368c000000 360000001c000000 000000368c000000 - {c=>-1,a=>-73,b=>5,d=>-4} b7ffffff3d010000 b7ffffff3d010000 b7ffffff3d010000 ffffffb7be000000 b7ffffff3d010000 b7ffffff3d010000 ffffffb7be000000 b7ffffff3d010000 ffffffb7be000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-2,a=>59,b=>4,d=>1} 3b00000074020000 3b00000074020000 3b00000074020000 0000003b98900000 3b00000074020000 3b00000074020000 0000003b98900000 3b00000074020000 0000003b98900000 - {e=>4,c=>3,a=>-20,b=>1,d=>-3} ecffffff59090000 ecffffff59090000 ecffffff59090000 ffffffec2ec00000 ecffffff59090000 ecffffff59090000 ffffffec2ec00000 ecffffff59090000 ffffffec2ec00000 - {e=>3,c=>-4,a=>59,b=>0,d=>-2} 3b000000a0070000 3b000000a0070000 3b000000a0070000 0000003b13300000 3b000000a0070000 3b000000a0070000 0000003b13300000 3b000000a0070000 0000003b13300000 - {e=>5,c=>-4,a=>-67,b=>2,d=>2} bdffffffa20a0000 bdffffffa20a0000 bdffffffa20a0000 ffffffbd51500000 bdffffffa20a0000 bdffffffa20a0000 ffffffbd51500000 bdffffffa20a0000 ffffffbd51500000 - {e=>7,c=>1,a=>-13,b=>2,d=>2} f3ffffff8a0e0000 f3ffffff8a0e0000 f3ffffff8a0e0000 fffffff345700000 f3ffffff8a0e0000 f3ffffff8a0e0000 fffffff345700000 f3ffffff8a0e0000 fffffff345700000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>3,a=>-90,b=>0,d=>-4,f=>'UE5'} a6ffffff18590000 a6ffffff18590000 a6ffffff18590000 ffffffa60e4a0000 a6ffffff18590000 a6ffffff18590000 ffffffa60e4a0000 a6ffffff18590000 ffffffa60e4a0000 - {e=>4,c=>-3,a=>-120,b=>6,d=>-4,f=>'UE3'} 88ffffff2e390000 88ffffff2e390000 88ffffff2e390000 ffffff88d6460000 88ffffff2e390000 88ffffff2e390000 ffffff88d6460000 88ffffff2e390000 ffffff88d6460000 - {e=>2,c=>2,a=>94,b=>0,d=>-1,f=>'UE7'} 5e000000d0750000 5e000000d0750000 5e000000d0750000 0000005e0bae0000 5e000000d0750000 5e000000d0750000 0000005e0bae0000 5e000000d0750000 0000005e0bae0000 - {e=>7,c=>2,a=>51,b=>2,d=>0,f=>'UE3'} 33000000123e0000 33000000123e0000 33000000123e0000 0000003348760000 33000000123e0000 33000000123e0000 0000003348760000 33000000123e0000 0000003348760000 - {e=>1,c=>-1,a=>74,b=>1,d=>1,f=>'UE6'} 4a00000079620000 4a00000079620000 4a00000079620000 0000004a3c9c0000 4a00000079620000 4a00000079620000 0000004a3c9c0000 4a00000079620000 0000004a3c9c0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>2,c=>3,a=>-102,g=>2,b=>7,d=>2,f=>'UE1'} 9affffff9f140100 9affffff9f140100 9affffff9f140100 ffffff9aed228000 9affffff9f140100 9affffff9f140100 ffffff9aed228000 9affffff9f140100 ffffff9aed228000 - {e=>5,c=>0,a=>55,g=>0,b=>3,d=>1,f=>'UE1'} 37000000431a0000 37000000431a0000 37000000431a0000 0000003760d20000 37000000431a0000 37000000431a0000 0000003760d20000 37000000431a0000 0000003760d20000 - {e=>7,c=>0,a=>-113,g=>0,b=>6,d=>-2,f=>'UE1'} 8fffffff861f0000 8fffffff861f0000 8fffffff861f0000 ffffff8fc3720000 8fffffff861f0000 8fffffff861f0000 ffffff8fc3720000 8fffffff861f0000 ffffff8fc3720000 - {e=>3,c=>3,a=>56,g=>5,b=>5,d=>-1,f=>'UE3'} 38000000ddb70200 38000000ddb70200 38000000ddb70200 00000038afb74000 38000000ddb70200 38000000ddb70200 00000038afb74000 38000000ddb70200 00000038afb74000 - {e=>4,c=>-2,a=>-74,g=>2,b=>3,d=>-1,f=>'UE4'} b6fffffff3490100 b6fffffff3490100 b6fffffff3490100 ffffffb67bc88000 b6fffffff3490100 b6fffffff3490100 ffffffb67bc88000 b6fffffff3490100 ffffffb67bc88000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-4,a=>98,g=>3,b=>6,d=>-4,f=>'UE7'} 6200000026f30100 6200000026f30100 6200000026f30100 00000062d21ec000 6200000026f30100 6200000026f30100 00000062d21ec000 6200000026f30100 00000062d21ec000 - {e=>6,c=>-1,a=>-100,g=>6,b=>1,d=>-2,f=>'UE2'} 9cffffffb92d0300 9cffffffb92d0300 9cffffffb92d0300 ffffff9c3f658000 9cffffffb92d0300 9cffffffb92d0300 ffffff9c3f658000 9cffffffb92d0300 ffffff9c3f658000 - {e=>3,c=>0,a=>-41,g=>4,b=>6,d=>1,f=>'UE2'} d7ffffff46260200 d7ffffff46260200 d7ffffff46260200 ffffffd7c0b50000 d7ffffff46260200 d7ffffff46260200 ffffffd7c0b50000 d7ffffff46260200 ffffffd7c0b50000 - {e=>3,c=>-4,a=>74,g=>2,b=>2,d=>-3,f=>'UE4'} 4a00000062470100 4a00000062470100 4a00000062470100 0000004a52b88000 4a00000062470100 4a00000062470100 0000004a52b88000 4a00000062470100 0000004a52b88000 - {e=>2,c=>2,a=>-78,g=>4,b=>4,d=>-2,f=>'UE7'} b2ffffff94750200 b2ffffff94750200 b2ffffff94750200 ffffffb28b2f0000 b2ffffff94750200 b2ffffff94750200 ffffffb28b2f0000 b2ffffff94750200 ffffffb28b2f0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>14,d=>-2,c=>-3,h=>7,b=>3,g=>7,f=>'UE6'} 0e000000abe3030007000000 0e000000abe3030007000000 0e000000abe3030007000000 0000000e771dc000e0000000 0e000000abe3030007000000 0e000000abe3030007000000 0000000e771dc000e0000000 0e000000abe3030007000000 0000000e771dc000e0000000 - {e=>5,a=>-111,d=>-2,c=>-2,h=>7,b=>0,g=>5,f=>'UE0'} 91ffffffb08b020007000000 91ffffffb08b020007000000 91ffffffb08b020007000000 ffffff911b514000e0000000 91ffffffb08b020007000000 91ffffffb08b020007000000 ffffff911b514000e0000000 91ffffffb08b020007000000 ffffff911b514000e0000000 - {e=>6,a=>68,d=>-3,c=>1,h=>7,b=>2,g=>1,f=>'UE2'} 440000004aad000007000000 440000004aad000007000000 440000004aad000007000000 0000004446e44000e0000000 440000004aad000007000000 440000004aad000007000000 0000004446e44000e0000000 440000004aad000007000000 0000004446e44000e0000000 - {e=>5,a=>-108,d=>1,c=>-3,h=>7,b=>1,g=>4,f=>'UE3'} 94ffffff693a020007000000 94ffffff693a020007000000 94ffffff693a020007000000 ffffff9434d70000e0000000 94ffffff693a020007000000 94ffffff693a020007000000 ffffff9434d70000e0000000 94ffffff693a020007000000 ffffff9434d70000e0000000 - {e=>3,a=>114,d=>-2,c=>-1,h=>6,b=>1,g=>2,f=>'UE5'} 72000000b957010006000000 72000000b957010006000000 72000000b957010006000000 000000723f3a8000c0000000 72000000b957010006000000 72000000b957010006000000 000000723f3a8000c0000000 72000000b957010006000000 000000723f3a8000c0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>-51,d=>-4,c=>2,h=>0,b=>1,g=>7,f=>'UE3',i=>-4} cdffffff11b5030020000000 cdffffff11b5030020000000 cdffffff11b5030020000000 ffffffcd2a27c00010000000 cdffffff11b5030020000000 cdffffff11b5030020000000 ffffffcd2a27c00010000000 cdffffff11b5030020000000 ffffffcd2a27c00010000000 - {e=>2,a=>-42,d=>2,c=>3,h=>7,b=>3,g=>2,f=>'UE5',i=>1} d6ffffff9b5401000f000000 d6ffffff9b5401000f000000 d6ffffff9b5401000f000000 ffffffd66d2a8000e4000000 d6ffffff9b5401000f000000 d6ffffff9b5401000f000000 ffffffd66d2a8000e4000000 d6ffffff9b5401000f000000 ffffffd66d2a8000e4000000 - {e=>1,a=>47,d=>3,c=>3,h=>1,b=>0,g=>4,f=>'UE0',i=>-4} 2f000000d802020021000000 2f000000d802020021000000 2f000000d802020021000000 0000002f0d91000030000000 2f000000d802020021000000 2f000000d802020021000000 0000002f0d91000030000000 2f000000d802020021000000 0000002f0d91000030000000 - {e=>0,a=>-80,d=>-1,c=>-4,h=>5,b=>2,g=>4,f=>'UE7',i=>0} b0ffffffe271020005000000 b0ffffffe271020005000000 b0ffffffe271020005000000 ffffffb0538f0000a0000000 b0ffffffe271020005000000 b0ffffffe271020005000000 ffffffb0538f0000a0000000 b0ffffffe271020005000000 ffffffb0538f0000a0000000 - {e=>2,a=>-76,d=>-1,c=>1,h=>5,b=>6,g=>3,f=>'UE6',i=>2} b4ffffffcee5010015000000 b4ffffffcee5010015000000 b4ffffffcee5010015000000 ffffffb4c7acc000a8000000 b4ffffffcee5010015000000 b4ffffffcee5010015000000 ffffffb4c7acc000a8000000 b4ffffffcee5010015000000 ffffffb4c7acc000a8000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>-74,d=>2,j=>'SEM1',c=>0,h=>7,b=>0,g=>2,f=>'UE7',i=>-3} b6ffffff807a0100ef010000 b6ffffff807a0100ef010000 b6ffffff807a0100ef010000 ffffffb6015e8000f7800000 b6ffffff807a0100ef010000 b6ffffff807a0100ef010000 ffffffb6015e8000f7800000 b6ffffff807a0100ef010000 ffffffb6015e8000f7800000 - {e=>5,a=>94,d=>-1,j=>'SEM4',c=>3,h=>3,b=>5,g=>2,f=>'UE6',i=>-3} 5e000000dd6b01002b010000 5e000000dd6b01002b010000 5e000000dd6b01002b010000 0000005eafdc800076000000 5e000000dd6b01002b010000 5e000000dd6b01002b010000 0000005eafdc800076000000 5e000000dd6b01002b010000 0000005eafdc800076000000 - {e=>6,a=>-63,d=>-3,j=>'SE2',c=>3,h=>3,b=>5,g=>1,f=>'UE1',i=>2} c1ffffff5d9d000093000000 c1ffffff5d9d000093000000 c1ffffff5d9d000093000000 ffffffc1aee2400069000000 c1ffffff5d9d000093000000 c1ffffff5d9d000093000000 ffffffc1aee2400069000000 c1ffffff5d9d000093000000 ffffffc1aee2400069000000 - {e=>2,a=>15,d=>3,j=>'SEM3',c=>0,h=>2,b=>4,g=>5,f=>'UE7',i=>-4} 0f000000c4f4020062010000 0f000000c4f4020062010000 0f000000c4f4020062010000 0000000f81af400052800000 0f000000c4f4020062010000 0f000000c4f4020062010000 0000000f81af400052800000 0f000000c4f4020062010000 0000000f81af400052800000 - {e=>4,a=>-16,d=>-4,j=>'SEM4',c=>-3,h=>4,b=>7,g=>2,f=>'UE3',i=>1} f0ffffff2f3901000c010000 f0ffffff2f3901000c010000 f0ffffff2f3901000c010000 fffffff0f646800086000000 f0ffffff2f3901000c010000 f0ffffff2f3901000c010000 fffffff0f646800086000000 f0ffffff2f3901000c010000 fffffff0f646800086000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>7,a=>-113,d=>0,j=>'SE3',c=>2,k=>96,h=>4,b=>7,g=>5,f=>'UE3',i=>0} 8fffffff17be0200c4006000 8fffffff17be0200c4006000 8fffffff17be0200c4006000 ffffff8fe877400081806000 8fffffff17be0200c4006000 8fffffff17be0200c4006000 ffffff8fe877400081806000 8fffffff17be0200c4006000 ffffff8fe877400081806000 - {e=>2,a=>-5,d=>-4,j=>'SEM4',c=>-1,k=>28,h=>2,b=>4,g=>0,f=>'UE0',i=>1} fbffffff3c0500000a011c00 fbffffff3c0500000a011c00 fbffffff3c0500000a011c00 fffffffb9e20000046001c00 fbffffff3c0500000a011c00 fbffffff3c0500000a011c00 fffffffb9e20000046001c00 fbffffff3c0500000a011c00 fffffffb9e20000046001c00 - {e=>5,a=>52,d=>-3,j=>'SE3',c=>-3,k=>-1,h=>2,b=>6,g=>1,f=>'UE6',i=>1} 340000006eeb0000ca00ff00 340000006eeb0000ca00ff00 340000006eeb0000ca00ff00 00000034d6dc40004580ff00 340000006eeb0000ca00ff00 340000006eeb0000ca00ff00 00000034d6dc40004580ff00 340000006eeb0000ca00ff00 00000034d6dc40004580ff00 - {e=>4,a=>-47,d=>-3,j=>'SE2',c=>2,k=>112,h=>6,b=>3,g=>2,f=>'UE3',i=>1} d1ffffff533901008e007000 d1ffffff533901008e007000 d1ffffff533901008e007000 ffffffd16ac68000c5007000 d1ffffff533901008e007000 d1ffffff533901008e007000 ffffffd16ac68000c5007000 d1ffffff533901008e007000 ffffffd16ac68000c5007000 - {e=>4,a=>-78,d=>2,j=>'SE3',c=>2,k=>55,h=>1,b=>0,g=>5,f=>'UE2',i=>1} b2ffffff90a80200c9003700 b2ffffff90a80200c9003700 b2ffffff90a80200c9003700 ffffffb20945400025803700 b2ffffff90a80200c9003700 b2ffffff90a80200c9003700 ffffffb20945400025803700 b2ffffff90a80200c9003700 ffffffb20945400025803700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>0,a=>-33,d=>-4,j=>'SEM1',l=>0,c=>-2,k=>46,h=>6,b=>0,g=>3,f=>'UE7',i=>-2} dfffffff30f10100f6012e00 dfffffff30f10100f6012e00 dfffffff30f10100f6012e00 ffffffdf1a0ec000db802e00 dfffffff30f10100f6012e00 dfffffff30f10100f6012e00 ffffffdf1a0ec000db802e00 dfffffff30f10100f6012e00 ffffffdf1a0ec000db802e00 - {e=>3,a=>78,d=>-4,j=>'SE3',l=>1,c=>-1,k=>-21,h=>5,b=>3,g=>5,f=>'UE2',i=>-3} 4e0000003ba70200ed00eb01 4e0000003ba70200ed00eb01 4e0000003ba70200ed00eb01 0000004e7e354000b580eb20 4e0000003ba70200ed00eb01 4e0000003ba70200ed00eb01 0000004e7e354000b580eb20 4e0000003ba70200ed00eb01 0000004e7e354000b580eb20 - {e=>3,a=>-6,d=>0,j=>'SE0',l=>2,c=>-1,k=>54,h=>1,b=>1,g=>0,f=>'UE6',i=>2} faffffff3966000011003602 faffffff3966000011003602 faffffff3966000011003602 fffffffa3c3c000028003640 faffffff3966000011003602 faffffff3966000011003602 fffffffa3c3c000028003640 faffffff3966000011003602 fffffffa3c3c000028003640 - {e=>3,a=>-92,d=>2,j=>'SEM2',l=>3,c=>-3,k=>28,h=>0,b=>5,g=>6,f=>'UE1',i=>0} a4ffffffad16030080011c03 a4ffffffad16030080011c03 a4ffffffad16030080011c03 ffffffa4b533800003001c60 a4ffffffad16030080011c03 a4ffffffad16030080011c03 ffffffa4b533800003001c60 a4ffffffad16030080011c03 ffffffa4b533800003001c60 - {e=>0,a=>109,d=>3,j=>'SE1',l=>7,c=>-1,k=>116,h=>4,b=>4,g=>6,f=>'UE3',i=>-3} 6d000000fc3003006c007407 6d000000fc3003006c007407 6d000000fc3003006c007407 0000006d9d878000948074e0 6d000000fc3003006c007407 6d000000fc3003006c007407 0000006d9d878000948074e0 6d000000fc3003006c007407 0000006d9d878000948074e0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>61,m=>0,d=>3,j=>'SEM3',l=>5,c=>-4,k=>-68,h=>1,b=>6,g=>5,f=>'UE4',i=>0} 3d000000e6c202004101bc05 3d000000e6c202004101bc05 3d000000e6c202004101bc05 0000003dd19940002280bca0 3d000000e6c202004101bc05 3d000000e6c202004101bc05 0000003dd19940002280bca0 3d000000e6c202004101bc05 0000003dd19940002280bca0 - {e=>2,a=>-25,m=>-1,d=>2,j=>'SE2',l=>3,c=>-2,k=>-89,h=>3,b=>3,g=>4,f=>'UE1',i=>0} e7ffffffb31402008300a73b e7ffffffb31402008300a73b e7ffffffb31402008300a73b ffffffe7792300006100a77c e7ffffffb31402008300a73b e7ffffffb31402008300a73b ffffffe7792300006100a77c e7ffffffb31402008300a73b ffffffe7792300006100a77c - {e=>2,a=>14,m=>0,d=>3,j=>'SEM3',l=>7,c=>1,k=>75,h=>6,b=>7,g=>6,f=>'UE5',i=>0} 0e000000cf54030046014b07 0e000000cf54030046014b07 0e000000cf54030046014b07 0000000ee5ab8000c2804be0 0e000000cf54030046014b07 0e000000cf54030046014b07 0000000ee5ab8000c2804be0 0e000000cf54030046014b07 0000000ee5ab8000c2804be0 - {e=>6,a=>-81,m=>-2,d=>3,j=>'SEM1',l=>1,c=>3,k=>45,h=>1,b=>0,g=>2,f=>'UE7',i=>-4} afffffffd87c0100e1012d31 afffffffd87c0100e1012d31 afffffffd87c0100e1012d31 ffffffaf0dee800033802d38 afffffffd87c0100e1012d31 afffffffd87c0100e1012d31 ffffffaf0dee800033802d38 afffffffd87c0100e1012d31 ffffffaf0dee800033802d38 - {e=>0,a=>-15,m=>-2,d=>2,j=>'SEM1',l=>6,c=>-4,k=>52,h=>4,b=>4,g=>4,f=>'UE1',i=>2} f1ffffffa4100200d4013436 f1ffffffa4100200d4013436 f1ffffffa4100200d4013436 fffffff1910300008b8034d8 f1ffffffa4100200d4013436 f1ffffffa4100200d4013436 fffffff1910300008b8034d8 f1ffffffa4100200d4013436 fffffff1910300008b8034d8 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>7,n=>3,a=>-25,m=>2,d=>0,j=>'SE0',l=>5,c=>3,k=>-128,h=>6,b=>7,g=>1,f=>'UE4',i=>2} e7ffffff1fce00001600801503000000 e7ffffff1fce00001600801503000000 e7ffffff1fce00001600801503000000 ffffffe7ec784000c80080a860000000 e7ffffff1fce00001600801503000000 e7ffffff1fce00001600801503000000 ffffffe7ec784000c80080a860000000 e7ffffff1fce00001600801503000000 ffffffe7ec784000c80080a860000000 - {e=>4,n=>1,a=>31,m=>2,d=>-1,j=>'SE2',l=>0,c=>-1,k=>-106,h=>3,b=>0,g=>2,f=>'UE7',i=>0} 1f000000f87901008300961001000000 1f000000f87901008300961001000000 1f000000f87901008300961001000000 0000001f1fce80006100960820000000 1f000000f87901008300961001000000 1f000000f87901008300961001000000 0000001f1fce80006100960820000000 1f000000f87901008300961001000000 0000001f1fce80006100960820000000 - {e=>7,n=>5,a=>42,m=>-4,d=>-4,j=>'SEM2',l=>3,c=>-4,k=>82,h=>1,b=>6,g=>7,f=>'UE0',i=>-1} 2a000000268f0300b901522305000000 2a000000268f0300b901522305000000 2a000000268f0300b901522305000000 0000002ad271c0003f005270a0000000 2a000000268f0300b901522305000000 2a000000268f0300b901522305000000 0000002ad271c0003f005270a0000000 2a000000268f0300b901522305000000 0000002ad271c0003f005270a0000000 - {e=>3,n=>5,a=>51,m=>-4,d=>2,j=>'SEM4',l=>7,c=>3,k=>-87,h=>1,b=>2,g=>0,f=>'UE5',i=>0} 330000009a5600000101a92705000000 330000009a5600000101a92705000000 330000009a5600000101a92705000000 000000334d3a00002200a9f0a0000000 330000009a5600000101a92705000000 330000009a5600000101a92705000000 000000334d3a00002200a9f0a0000000 330000009a5600000101a92705000000 000000334d3a00002200a9f0a0000000 - {e=>0,n=>7,a=>31,m=>-3,d=>2,j=>'SE1',l=>2,c=>2,k=>-41,h=>5,b=>4,g=>6,f=>'UE1',i=>2} 1f000000941003005500d72a07000000 1f000000941003005500d72a07000000 1f000000941003005500d72a07000000 0000001f89038000a880d754e0000000 1f000000941003005500d72a07000000 1f000000941003005500d72a07000000 0000001f89038000a880d754e0000000 1f000000941003005500d72a07000000 0000001f89038000a880d754e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>6,a=>-128,m=>-1,d=>0,j=>'SE2',l=>1,c=>0,k=>-95,h=>3,b=>5,g=>7,f=>'UE6',o=>62,i=>2} 80ffffff05e003009300a139063e0000 80ffffff05e003009300a139063e0000 80ffffff05e003009300a139063e0000 ffffff80a00dc0006900a13cc03e0000 80ffffff05e003009300a139063e0000 80ffffff05e003009300a139063e0000 ffffff80a00dc0006900a13cc03e0000 80ffffff05e003009300a139063e0000 ffffff80a00dc0006900a13cc03e0000 - {e=>3,n=>5,a=>-9,m=>-4,d=>1,j=>'SEM1',l=>3,c=>3,k=>-61,h=>2,b=>6,g=>0,f=>'UE5',o=>76,i=>1} f7ffffff5e560000ca01c323054c0000 f7ffffff5e560000ca01c323054c0000 f7ffffff5e560000ca01c323054c0000 fffffff7ccba00004780c370a04c0000 f7ffffff5e560000ca01c323054c0000 f7ffffff5e560000ca01c323054c0000 fffffff7ccba00004780c370a04c0000 f7ffffff5e560000ca01c323054c0000 fffffff7ccba00004780c370a04c0000 - {e=>4,n=>7,a=>15,m=>1,d=>-2,j=>'SEM2',l=>6,c=>2,k=>-46,h=>3,b=>5,g=>4,f=>'UE0',o=>51,i=>-1} 0f00000095090200bb01d20e07330000 0f00000095090200bb01d20e07330000 0f00000095090200bb01d20e07330000 0000000fab4100007f00d2c4e0330000 0f00000095090200bb01d20e07330000 0f00000095090200bb01d20e07330000 0000000fab4100007f00d2c4e0330000 0f00000095090200bb01d20e07330000 0000000fab4100007f00d2c4e0330000 - {e=>7,n=>2,a=>-103,m=>2,d=>2,j=>'SEM3',l=>3,c=>-2,k=>75,h=>4,b=>7,g=>4,f=>'UE2',o=>76,i=>-1} 99ffffffb72e02007c014b13024c0000 99ffffffb72e02007c014b13024c0000 99ffffffb72e02007c014b13024c0000 ffffff99f97500009e804b68404c0000 99ffffffb72e02007c014b13024c0000 99ffffffb72e02007c014b13024c0000 ffffff99f97500009e804b68404c0000 99ffffffb72e02007c014b13024c0000 ffffff99f97500009e804b68404c0000 - {e=>6,n=>2,a=>-114,m=>-3,d=>-4,j=>'SEM1',l=>5,c=>-2,k=>88,h=>6,b=>0,g=>5,f=>'UE3',o=>44,i=>-3} 8effffff30bd0200ee01582d022c0000 8effffff30bd0200ee01582d022c0000 8effffff30bd0200ee01582d022c0000 ffffff8e1a674000d78058b4402c0000 8effffff30bd0200ee01582d022c0000 8effffff30bd0200ee01582d022c0000 ffffff8e1a674000d78058b4402c0000 8effffff30bd0200ee01582d022c0000 ffffff8e1a674000d78058b4402c0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; }; - {a=>20,b=>5} 1400000005000000 14000000000000000500000000000000 14000000000000000500000000000000 00000014a0000000 1400000005000000 1400000005000000 0000000000000014a000000000000000 1400000005000000 00000014a0000000 - {a=>-55,b=>5} c9ffffff05000000 c9ffffffffffffff0500000000000000 c9ffffffffffffff0500000000000000 ffffffc9a0000000 c9ffffff05000000 c9ffffff05000000 ffffffffffffffc9a000000000000000 c9ffffff05000000 ffffffc9a0000000 - {a=>98,b=>5} 6200000005000000 62000000000000000500000000000000 62000000000000000500000000000000 00000062a0000000 6200000005000000 6200000005000000 0000000000000062a000000000000000 6200000005000000 00000062a0000000 - {a=>-119,b=>4} 89ffffff04000000 89ffffffffffffff0400000000000000 89ffffffffffffff0400000000000000 ffffff8980000000 89ffffff04000000 89ffffff04000000 ffffffffffffff898000000000000000 89ffffff04000000 ffffff8980000000 - {a=>-90,b=>0} a6ffffff00000000 a6ffffffffffffff0000000000000000 a6ffffffffffffff0000000000000000 ffffffa600000000 a6ffffff00000000 a6ffffff00000000 ffffffffffffffa60000000000000000 a6ffffff00000000 ffffffa600000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; }; - {c=>-3,a=>-84,b=>3} acffffff2b000000 acffffffffffffff2b00000000000000 acffffffffffffff2b00000000000000 ffffffac74000000 acffffff2b000000 acffffff2b000000 ffffffffffffffac7400000000000000 acffffff2b000000 ffffffac74000000 - {c=>-4,a=>5,b=>3} 0500000023000000 05000000000000002300000000000000 05000000000000002300000000000000 0000000570000000 0500000023000000 0500000023000000 00000000000000057000000000000000 0500000023000000 0000000570000000 - {c=>0,a=>-27,b=>6} e5ffffff06000000 e5ffffffffffffff0600000000000000 e5ffffffffffffff0600000000000000 ffffffe5c0000000 e5ffffff06000000 e5ffffff06000000 ffffffffffffffe5c000000000000000 e5ffffff06000000 ffffffe5c0000000 - {c=>1,a=>41,b=>1} 2900000009000000 29000000000000000900000000000000 29000000000000000900000000000000 0000002924000000 2900000009000000 2900000009000000 00000000000000292400000000000000 2900000009000000 0000002924000000 - {c=>2,a=>-56,b=>5} c8ffffff15000000 c8ffffffffffffff1500000000000000 c8ffffffffffffff1500000000000000 ffffffc8a8000000 c8ffffff15000000 c8ffffff15000000 ffffffffffffffc8a800000000000000 c8ffffff15000000 ffffffc8a8000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>38,b=>5,d=>-1} 26000000ed010000 2600000000000000ed01000000000000 2600000000000000ed01000000000000 00000026b7800000 26000000ed010000 26000000ed010000 0000000000000026b780000000000000 26000000ed010000 00000026b7800000 - {c=>-4,a=>-66,b=>1,d=>2} beffffffa1000000 beffffffffffffffa100000000000000 beffffffffffffffa100000000000000 ffffffbe31000000 beffffffa1000000 beffffffa1000000 ffffffffffffffbe3100000000000000 beffffffa1000000 ffffffbe31000000 - {c=>-2,a=>-17,b=>2,d=>0} efffffff32000000 efffffffffffffff3200000000000000 efffffffffffffff3200000000000000 ffffffef58000000 efffffff32000000 efffffff32000000 ffffffffffffffef5800000000000000 efffffff32000000 ffffffef58000000 - {c=>-3,a=>-93,b=>4,d=>3} a3ffffffec000000 a3ffffffffffffffec00000000000000 a3ffffffffffffffec00000000000000 ffffffa395800000 a3ffffffec000000 a3ffffffec000000 ffffffffffffffa39580000000000000 a3ffffffec000000 ffffffa395800000 - {c=>3,a=>83,b=>6,d=>0} 530000001e000000 53000000000000001e00000000000000 53000000000000001e00000000000000 00000053cc000000 530000001e000000 530000001e000000 0000000000000053cc00000000000000 530000001e000000 00000053cc000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>-2,a=>79,b=>7,d=>-1} 4f000000f7070000 4f00000000000000f707000000000000 4f00000000000000f707000000000000 0000004ffbb00000 4f000000f7070000 4f000000f7070000 000000000000004ffbb0000000000000 4f000000f7070000 0000004ffbb00000 - {e=>0,c=>2,a=>118,b=>4,d=>-4} 7600000014010000 76000000000000001401000000000000 76000000000000001401000000000000 000000768a000000 7600000014010000 7600000014010000 00000000000000768a00000000000000 7600000014010000 000000768a000000 - {e=>6,c=>0,a=>-24,b=>0,d=>3} e8ffffffc00c0000 e8ffffffffffffffc00c000000000000 e8ffffffffffffffc00c000000000000 ffffffe801e00000 e8ffffffc00c0000 e8ffffffc00c0000 ffffffffffffffe801e0000000000000 e8ffffffc00c0000 ffffffe801e00000 - {e=>4,c=>-1,a=>-90,b=>3,d=>-3} a6ffffff7b090000 a6ffffffffffffff7b09000000000000 a6ffffffffffffff7b09000000000000 ffffffa67ec00000 a6ffffff7b090000 a6ffffff7b090000 ffffffffffffffa67ec0000000000000 a6ffffff7b090000 ffffffa67ec00000 - {e=>3,c=>1,a=>80,b=>3,d=>2} 500000008b060000 50000000000000008b06000000000000 50000000000000008b06000000000000 0000005065300000 500000008b060000 500000008b060000 00000000000000506530000000000000 500000008b060000 0000005065300000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>0,c=>-3,a=>-26,b=>6,d=>-1,f=>'UE1'} e6ffffffee110000 e6ffffffffffffffee11000000000000 e6ffffffffffffffee11000000000000 ffffffe6d7820000 e6ffffffee110000 e6ffffffee110000 ffffffffffffffe6d782000000000000 e6ffffffee110000 ffffffe6d7820000 - {e=>4,c=>2,a=>124,b=>4,d=>-4,f=>'UE2'} 7c00000014290000 7c000000000000001429000000000000 7c000000000000001429000000000000 0000007c8a440000 7c00000014290000 7c00000014290000 000000000000007c8a44000000000000 7c00000014290000 0000007c8a440000 - {e=>7,c=>-2,a=>-9,b=>1,d=>3,f=>'UE2'} f7fffffff12e0000 f7fffffffffffffff12e000000000000 f7fffffffffffffff12e000000000000 fffffff739f40000 f7fffffff12e0000 f7fffffff12e0000 fffffffffffffff739f4000000000000 f7fffffff12e0000 fffffff739f40000 - {e=>7,c=>0,a=>122,b=>4,d=>2,f=>'UE5'} 7a000000845e0000 7a00000000000000845e000000000000 7a00000000000000845e000000000000 0000007a817a0000 7a000000845e0000 7a000000845e0000 000000000000007a817a000000000000 7a000000845e0000 0000007a817a0000 - {e=>1,c=>-4,a=>-12,b=>6,d=>-4,f=>'UE4'} f4ffffff26430000 f4ffffffffffffff2643000000000000 f4ffffffffffffff2643000000000000 fffffff4d2180000 f4ffffff26430000 f4ffffff26430000 fffffffffffffff4d218000000000000 f4ffffff26430000 fffffff4d2180000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>7,c=>-4,a=>-80,g=>7,b=>2,d=>3,f=>'UE2'} b0ffffffe2ae0300 b0ffffffffffffffe2ae030000000000 b0ffffffffffffffe2ae030000000000 ffffffb051f5c000 b0ffffffe2ae0300 b0ffffffe2ae0300 ffffffffffffffb051f5c00000000000 b0ffffffe2ae0300 ffffffb051f5c000 - {e=>1,c=>2,a=>93,g=>2,b=>1,d=>3,f=>'UE0'} 5d000000d1020100 5d00000000000000d102010000000000 5d00000000000000d102010000000000 0000005d29908000 5d000000d1020100 5d000000d1020100 000000000000005d2990800000000000 5d000000d1020100 0000005d29908000 - {e=>0,c=>0,a=>-46,g=>2,b=>3,d=>-3,f=>'UE6'} d2ffffff43610100 d2ffffffffffffff4361010000000000 d2ffffffffffffff4361010000000000 ffffffd2628c8000 d2ffffff43610100 d2ffffff43610100 ffffffffffffffd2628c800000000000 d2ffffff43610100 ffffffd2628c8000 - {e=>4,c=>1,a=>120,g=>0,b=>2,d=>1,f=>'UE6'} 780000004a680000 78000000000000004a68000000000000 78000000000000004a68000000000000 0000007844cc0000 780000004a680000 780000004a680000 000000000000007844cc000000000000 780000004a680000 0000007844cc0000 - {e=>3,c=>0,a=>19,g=>6,b=>7,d=>-4,f=>'UE0'} 1300000007070300 13000000000000000707030000000000 13000000000000000707030000000000 00000013e2318000 1300000007070300 1300000007070300 0000000000000013e231800000000000 1300000007070300 00000013e2318000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>6,c=>-2,a=>-99,g=>4,b=>1,d=>0,f=>'UE0'} 9dffffff310c0200 9dffffffffffffff310c020000000000 9dffffffffffffff310c020000000000 ffffff9d38610000 9dffffff310c0200 9dffffff310c0200 ffffffffffffff9d3861000000000000 9dffffff310c0200 ffffff9d38610000 - {e=>0,c=>0,a=>-111,g=>1,b=>4,d=>-1,f=>'UE6'} 91ffffffc4e10000 91ffffffffffffffc4e1000000000000 91ffffffffffffffc4e1000000000000 ffffff91838c4000 91ffffffc4e10000 91ffffffc4e10000 ffffffffffffff91838c400000000000 91ffffffc4e10000 ffffff91838c4000 - {e=>0,c=>1,a=>106,g=>1,b=>3,d=>3,f=>'UE0'} 6a000000cb800000 6a00000000000000cb80000000000000 6a00000000000000cb80000000000000 0000006a65804000 6a000000cb800000 6a000000cb800000 000000000000006a6580400000000000 6a000000cb800000 0000006a65804000 - {e=>4,c=>-3,a=>94,g=>0,b=>2,d=>1,f=>'UE6'} 5e0000006a680000 5e000000000000006a68000000000000 5e000000000000006a68000000000000 0000005e54cc0000 5e0000006a680000 5e0000006a680000 000000000000005e54cc000000000000 5e0000006a680000 0000005e54cc0000 - {e=>7,c=>-4,a=>-48,g=>2,b=>3,d=>2,f=>'UE6'} d0ffffffa36e0100 d0ffffffffffffffa36e010000000000 d0ffffffffffffffa36e010000000000 ffffffd0717c8000 d0ffffffa36e0100 d0ffffffa36e0100 ffffffffffffffd0717c800000000000 d0ffffffa36e0100 ffffffd0717c8000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>4,a=>-127,d=>2,c=>-2,h=>0,b=>1,g=>6,f=>'UE0'} 81ffffffb108030000000000 81ffffffffffffffb108030000000000 81ffffffffffffffb108030000000000 ffffff813941800000000000 81ffffffb108030000000000 81ffffffb108030000000000 ffffffffffffff813941800000000000 81ffffffb108030000000000 ffffff813941800000000000 - {e=>0,a=>16,d=>-2,c=>-1,h=>5,b=>0,g=>2,f=>'UE6'} 10000000b861010005000000 1000000000000000b861010005000000 1000000000000000b861010005000000 000000101f0c8000a0000000 10000000b861010005000000 10000000b861010005000000 00000000000000101f0c8000a0000000 10000000b861010005000000 000000101f0c8000a0000000 - {e=>7,a=>-107,d=>2,c=>0,h=>1,b=>6,g=>7,f=>'UE5'} 95ffffff86de030001000000 95ffffffffffffff86de030001000000 95ffffffffffffff86de030001000000 ffffff95c17bc00020000000 95ffffff86de030001000000 95ffffff86de030001000000 ffffffffffffff95c17bc00020000000 95ffffff86de030001000000 ffffff95c17bc00020000000 - {e=>3,a=>53,d=>-2,c=>0,h=>0,b=>0,g=>5,f=>'UE0'} 350000008087020000000000 35000000000000008087020000000000 35000000000000008087020000000000 000000350331400000000000 350000008087020000000000 350000008087020000000000 00000000000000350331400000000000 350000008087020000000000 000000350331400000000000 - {e=>5,a=>33,d=>3,c=>0,h=>6,b=>7,g=>3,f=>'UE7'} 21000000c7fa010006000000 2100000000000000c7fa010006000000 2100000000000000c7fa010006000000 00000021e1dec000c0000000 21000000c7fa010006000000 21000000c7fa010006000000 0000000000000021e1dec000c0000000 21000000c7fa010006000000 00000021e1dec000c0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>3,d=>0,c=>1,h=>4,b=>3,g=>2,f=>'UE0',i=>-2} 030000000b02010034000000 03000000000000000b02010034000000 03000000000000000b02010034000000 000000036410800098000000 030000000b02010034000000 030000000b02010034000000 00000000000000036410800098000000 030000000b02010034000000 000000036410800098000000 - {e=>1,a=>-126,d=>0,c=>0,h=>1,b=>1,g=>7,f=>'UE7',i=>-4} 82ffffff01f2030021000000 82ffffffffffffff01f2030021000000 82ffffffffffffff01f2030021000000 ffffff82201fc00030000000 82ffffff01f2030021000000 82ffffff01f2030021000000 ffffffffffffff82201fc00030000000 82ffffff01f2030021000000 ffffff82201fc00030000000 - {e=>2,a=>58,d=>2,c=>-2,h=>1,b=>2,g=>4,f=>'UE4',i=>0} 3a000000b244020001000000 3a00000000000000b244020001000000 3a00000000000000b244020001000000 0000003a5929000020000000 3a000000b244020001000000 3a000000b244020001000000 000000000000003a5929000020000000 3a000000b244020001000000 0000003a5929000020000000 - {e=>4,a=>66,d=>-4,c=>-3,h=>7,b=>2,g=>5,f=>'UE4',i=>-4} 420000002ac9020027000000 42000000000000002ac9020027000000 42000000000000002ac9020027000000 0000004256494000f0000000 420000002ac9020027000000 420000002ac9020027000000 000000000000004256494000f0000000 420000002ac9020027000000 0000004256494000f0000000 - {e=>5,a=>9,d=>-1,c=>3,h=>4,b=>3,g=>3,f=>'UE3',i=>3} 09000000dbbb01001c000000 0900000000000000dbbb01001c000000 0900000000000000dbbb01001c000000 000000096fd6c0008c000000 09000000dbbb01001c000000 09000000dbbb01001c000000 00000000000000096fd6c0008c000000 09000000dbbb01001c000000 000000096fd6c0008c000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>6,a=>73,d=>2,j=>'SEM3',c=>-1,h=>3,b=>0,g=>6,f=>'UE4',i=>0} 49000000b84c030043010000 4900000000000000b84c030043010000 4900000000000000b84c030043010000 000000491d69800062800000 49000000b84c030043010000 49000000b84c030043010000 00000000000000491d69800062800000 49000000b84c030043010000 000000491d69800062800000 - {e=>1,a=>24,d=>0,j=>'SEM2',c=>-3,h=>7,b=>5,g=>1,f=>'UE3',i=>3} 180000002db200009f010000 18000000000000002db200009f010000 18000000000000002db200009f010000 00000018b4164000ef000000 180000002db200009f010000 180000002db200009f010000 0000000000000018b4164000ef000000 180000002db200009f010000 00000018b4164000ef000000 - {e=>0,a=>-128,d=>0,j=>'SEM3',c=>1,h=>4,b=>7,g=>1,f=>'UE0',i=>-1} 80ffffff0f8000007c010000 80ffffffffffffff0f8000007c010000 80ffffffffffffff0f8000007c010000 ffffff80e40040009e800000 80ffffff0f8000007c010000 80ffffff0f8000007c010000 ffffffffffffff80e40040009e800000 80ffffff0f8000007c010000 ffffff80e40040009e800000 - {e=>5,a=>-96,d=>1,j=>'SE1',c=>-2,h=>4,b=>4,g=>7,f=>'UE3',i=>-2} a0ffffff74ba030074000000 a0ffffffffffffff74ba030074000000 a0ffffffffffffff74ba030074000000 ffffffa098d7c00098800000 a0ffffff74ba030074000000 a0ffffff74ba030074000000 ffffffffffffffa098d7c00098800000 a0ffffff74ba030074000000 ffffffa098d7c00098800000 - {e=>0,a=>54,d=>-1,j=>'SEM1',c=>-3,h=>3,b=>5,g=>0,f=>'UE7',i=>3} 36000000ed710000db010000 3600000000000000ed710000db010000 3600000000000000ed710000db010000 00000036b78e00006f800000 36000000ed710000db010000 36000000ed710000db010000 0000000000000036b78e00006f800000 36000000ed710000db010000 00000036b78e00006f800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>3,a=>-71,d=>-2,j=>'SEM2',c=>-3,k=>-37,h=>1,b=>1,g=>2,f=>'UE1',i=>1} b9ffffffa91701008901db00 b9ffffffffffffffa91701008901db00 b9ffffffffffffffa91701008901db00 ffffffb9373280002700db00 b9ffffffa91701008901db00 b9ffffffa91701008901db00 ffffffffffffffb9373280002700db00 b9ffffffa91701008901db00 ffffffb9373280002700db00 - {e=>6,a=>14,d=>1,j=>'SE2',c=>-3,k=>-10,h=>2,b=>0,g=>7,f=>'UE1',i=>1} 0e000000689c03008a00f600 0e00000000000000689c03008a00f600 0e00000000000000689c03008a00f600 0000000e14e3c0004500f600 0e000000689c03008a00f600 0e000000689c03008a00f600 000000000000000e14e3c0004500f600 0e000000689c03008a00f600 0000000e14e3c0004500f600 - {e=>1,a=>-4,d=>-4,j=>'SE1',c=>0,k=>-70,h=>2,b=>0,g=>7,f=>'UE0',i=>-2} fcffffff008303007200ba00 fcffffffffffffff008303007200ba00 fcffffffffffffff008303007200ba00 fffffffc0211c0005880ba00 fcffffff008303007200ba00 fcffffff008303007200ba00 fffffffffffffffc0211c0005880ba00 fcffffff008303007200ba00 fffffffc0211c0005880ba00 - {e=>0,a=>-105,d=>0,j=>'SEM1',c=>3,k=>-94,h=>3,b=>4,g=>4,f=>'UE1',i=>1} 97ffffff1c100200cb01a200 97ffffffffffffff1c100200cb01a200 97ffffffffffffff1c100200cb01a200 ffffff978c0300006780a200 97ffffff1c100200cb01a200 97ffffff1c100200cb01a200 ffffffffffffff978c0300006780a200 97ffffff1c100200cb01a200 ffffff978c0300006780a200 - {e=>0,a=>-18,d=>3,j=>'SEM4',c=>0,k=>76,h=>6,b=>7,g=>7,f=>'UE1',i=>-3} eeffffffc79003002e014c00 eeffffffffffffffc79003002e014c00 eeffffffffffffffc79003002e014c00 ffffffeee183c000d6004c00 eeffffffc79003002e014c00 eeffffffc79003002e014c00 ffffffffffffffeee183c000d6004c00 eeffffffc79003002e014c00 ffffffeee183c000d6004c00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>0,a=>-72,d=>1,j=>'SE1',l=>1,c=>2,k=>-123,h=>6,b=>0,g=>0,f=>'UE0',i=>2} b8ffffff5000000056008501 b8ffffffffffffff5000000056008501 b8ffffffffffffff5000000056008501 ffffffb808800000c8808520 b8ffffff5000000056008501 b8ffffff5000000056008501 ffffffffffffffb808800000c8808520 b8ffffff5000000056008501 ffffffb808800000c8808520 - {e=>4,a=>38,d=>0,j=>'SE3',l=>3,c=>-3,k=>109,h=>0,b=>0,g=>6,f=>'UE4',i=>-2} 2600000028480300f0006d03 260000000000000028480300f0006d03 260000000000000028480300f0006d03 000000261449800019806d60 2600000028480300f0006d03 2600000028480300f0006d03 00000000000000261449800019806d60 2600000028480300f0006d03 000000261449800019806d60 - {e=>1,a=>-38,d=>0,j=>'SEM4',l=>7,c=>1,k=>88,h=>4,b=>5,g=>1,f=>'UE2',i=>0} daffffff0da2000004015807 daffffffffffffff0da2000004015807 daffffffffffffff0da2000004015807 ffffffdaa4144000820058e0 daffffff0da2000004015807 daffffff0da2000004015807 ffffffffffffffdaa4144000820058e0 daffffff0da2000004015807 ffffffdaa4144000820058e0 - {e=>3,a=>-30,d=>-3,j=>'SEM3',l=>1,c=>0,k=>47,h=>7,b=>3,g=>4,f=>'UE1',i=>1} e2ffffff431702004f012f01 e2ffffffffffffff431702004f012f01 e2ffffffffffffff431702004f012f01 ffffffe262b30000e6802f20 e2ffffff431702004f012f01 e2ffffff431702004f012f01 ffffffffffffffe262b30000e6802f20 e2ffffff431702004f012f01 ffffffe262b30000e6802f20 - {e=>2,a=>49,d=>-4,j=>'SEM3',l=>5,c=>2,k=>101,h=>0,b=>0,g=>1,f=>'UE5',i=>-4} 3100000010d5000060016505 310000000000000010d5000060016505 310000000000000010d5000060016505 000000310a2a4000128065a0 3100000010d5000060016505 3100000010d5000060016505 00000000000000310a2a4000128065a0 3100000010d5000060016505 000000310a2a4000128065a0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>2,a=>72,m=>-1,d=>-1,j=>'SE1',l=>2,c=>-3,k=>28,h=>7,b=>0,g=>6,f=>'UE7',i=>0} 48000000e875030047001c3a 4800000000000000e875030047001c3a 4800000000000000e875030047001c3a 0000004817af8000e0801c5c 48000000e875030047001c3a 48000000e875030047001c3a 000000000000004817af8000e0801c5c 48000000e875030047001c3a 0000004817af8000e0801c5c - {e=>5,a=>-114,m=>3,d=>3,j=>'SE0',l=>7,c=>-3,k=>-79,h=>1,b=>2,g=>6,f=>'UE1',i=>2} 8effffffea1a03001100b11f 8effffffffffffffea1a03001100b11f 8effffffffffffffea1a03001100b11f ffffff8e55d380002800b1ec 8effffffea1a03001100b11f 8effffffea1a03001100b11f ffffffffffffff8e55d380002800b1ec 8effffffea1a03001100b11f ffffff8e55d380002800b1ec - {e=>6,a=>-48,m=>1,d=>-3,j=>'SE2',l=>2,c=>-3,k=>78,h=>0,b=>5,g=>1,f=>'UE7',i=>-4} d0ffffff6dfd0000a0004e0a d0ffffffffffffff6dfd0000a0004e0a d0ffffffffffffff6dfd0000a0004e0a ffffffd0b6ee400011004e44 d0ffffff6dfd0000a0004e0a d0ffffff6dfd0000a0004e0a ffffffffffffffd0b6ee400011004e44 d0ffffff6dfd0000a0004e0a ffffffd0b6ee400011004e44 - {e=>5,a=>101,m=>-2,d=>3,j=>'SE3',l=>3,c=>-3,k=>-125,h=>5,b=>4,g=>0,f=>'UE1',i=>-3} 65000000ec1a0000ed008333 6500000000000000ec1a0000ed008333 6500000000000000ec1a0000ed008333 0000006595d20000b5808378 65000000ec1a0000ed008333 65000000ec1a0000ed008333 000000000000006595d20000b5808378 65000000ec1a0000ed008333 0000006595d20000b5808378 - {e=>4,a=>-7,m=>2,d=>1,j=>'SE1',l=>7,c=>-2,k=>8,h=>4,b=>7,g=>5,f=>'UE1',i=>-2} f9ffffff7798020074000817 f9ffffffffffffff7798020074000817 f9ffffffffffffff7798020074000817 fffffff9f8c34000988008e8 f9ffffff7798020074000817 f9ffffff7798020074000817 fffffffffffffff9f8c34000988008e8 f9ffffff7798020074000817 fffffff9f8c34000988008e8 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>2,a=>-110,m=>-1,d=>3,j=>'SEM1',l=>6,c=>-3,k=>119,h=>0,b=>3,g=>3,f=>'UE4',i=>0} 92ffffffebc60100c001773e02000000 92ffffffffffffffebc60100c001773e0200000000000000 92ffffffffffffffebc60100c001773e0200000000000000 ffffff9275b8c000038077dc40000000 92ffffffebc60100c001773e02000000 92ffffffebc60100c001773e02000000 ffffffffffffff9275b8c000038077dc4000000000000000 92ffffffebc60100c001773e02000000 ffffff9275b8c000038077dc40000000 - {e=>4,n=>0,a=>-68,m=>3,d=>-1,j=>'SEM4',l=>7,c=>0,k=>57,h=>0,b=>3,g=>7,f=>'UE7',i=>-2} bcffffffc3f903003001391f00000000 bcffffffffffffffc3f903003001391f0000000000000000 bcffffffffffffffc3f903003001391f0000000000000000 ffffffbc63cfc0001a0039ec00000000 bcffffffc3f903003001391f00000000 bcffffffc3f903003001391f00000000 ffffffffffffffbc63cfc0001a0039ec0000000000000000 bcffffffc3f903003001391f00000000 ffffffbc63cfc0001a0039ec00000000 - {e=>4,n=>6,a=>-6,m=>-2,d=>-1,j=>'SE1',l=>3,c=>3,k=>127,h=>3,b=>6,g=>5,f=>'UE3',i=>2} faffffffdeb9020053007f3306000000 faffffffffffffffdeb9020053007f330600000000000000 faffffffffffffffdeb9020053007f330600000000000000 fffffffacfc7400068807f78c0000000 faffffffdeb9020053007f3306000000 faffffffdeb9020053007f3306000000 fffffffffffffffacfc7400068807f78c000000000000000 faffffffdeb9020053007f3306000000 fffffffacfc7400068807f78c0000000 - {e=>1,n=>0,a=>-116,m=>-2,d=>1,j=>'SE1',l=>7,c=>-2,k=>-82,h=>7,b=>1,g=>4,f=>'UE7',i=>3} 8cffffff717202005f00ae3700000000 8cffffffffffffff717202005f00ae370000000000000000 8cffffffffffffff717202005f00ae370000000000000000 ffffff8c389f0000ec80aef800000000 8cffffff717202005f00ae3700000000 8cffffff717202005f00ae3700000000 ffffffffffffff8c389f0000ec80aef80000000000000000 8cffffff717202005f00ae3700000000 ffffff8c389f0000ec80aef800000000 - {e=>5,n=>5,a=>122,m=>-3,d=>3,j=>'SEM2',l=>2,c=>-2,k=>31,h=>3,b=>1,g=>5,f=>'UE0',i=>1} 7a000000f18a02008b011f2a05000000 7a00000000000000f18a02008b011f2a0500000000000000 7a00000000000000f18a02008b011f2a0500000000000000 0000007a39d1400067001f54a0000000 7a000000f18a02008b011f2a05000000 7a000000f18a02008b011f2a05000000 000000000000007a39d1400067001f54a000000000000000 7a000000f18a02008b011f2a05000000 0000007a39d1400067001f54a0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>5,n=>1,a=>-10,m=>1,d=>-1,j=>'SE2',l=>2,c=>0,k=>99,h=>6,b=>3,g=>7,f=>'UE6',o=>213,i=>-2} f6ffffffc3eb0300b600630a01d50000 f6ffffffffffffffc3eb0300b600630a01d5000000000000 f6ffffffffffffffc3eb0300b600630a01d5000000000000 fffffff663ddc000d900634420d50000 f6ffffffc3eb0300b600630a01d50000 f6ffffffc3eb0300b600630a01d50000 fffffffffffffff663ddc000d900634420d5000000000000 f6ffffffc3eb0300b600630a01d50000 fffffff663ddc000d900634420d50000 - {e=>0,n=>3,a=>53,m=>-2,d=>-1,j=>'SE1',l=>7,c=>1,k=>25,h=>3,b=>2,g=>5,f=>'UE3',o=>128,i=>3} 35000000cab102005b00193703800000 3500000000000000cab102005b0019370380000000000000 3500000000000000cab102005b0019370380000000000000 00000035478740006c8019f860800000 35000000cab102005b00193703800000 35000000cab102005b00193703800000 0000000000000035478740006c8019f86080000000000000 35000000cab102005b00193703800000 00000035478740006c8019f860800000 - {e=>5,n=>2,a=>23,m=>1,d=>-2,j=>'SEM2',l=>3,c=>-3,k=>-114,h=>1,b=>1,g=>2,f=>'UE6',o=>170,i=>-4} 17000000a96b0100a1018e0b02aa0000 1700000000000000a96b0100a1018e0b02aa000000000000 1700000000000000a96b0100a1018e0b02aa000000000000 00000017375c800033008e6440aa0000 17000000a96b0100a1018e0b02aa0000 17000000a96b0100a1018e0b02aa0000 0000000000000017375c800033008e6440aa000000000000 17000000a96b0100a1018e0b02aa0000 00000017375c800033008e6440aa0000 - {e=>7,n=>7,a=>-19,m=>-1,d=>-1,j=>'SE3',l=>2,c=>0,k=>-61,h=>3,b=>3,g=>7,f=>'UE6',o=>181,i=>-1} edffffffc3ef0300fb00c33a07b50000 edffffffffffffffc3ef0300fb00c33a07b5000000000000 edffffffffffffffc3ef0300fb00c33a07b5000000000000 ffffffed63fdc0007d80c35ce0b50000 edffffffc3ef0300fb00c33a07b50000 edffffffc3ef0300fb00c33a07b50000 ffffffffffffffed63fdc0007d80c35ce0b5000000000000 edffffffc3ef0300fb00c33a07b50000 ffffffed63fdc0007d80c35ce0b50000 - {e=>5,n=>5,a=>-62,m=>0,d=>-4,j=>'SEM4',l=>6,c=>-2,k=>-114,h=>3,b=>4,g=>6,f=>'UE0',o=>248,i=>3} c2ffffff340b03001b018e0605f80000 c2ffffffffffffff340b03001b018e0605f8000000000000 c2ffffffffffffff340b03001b018e0605f8000000000000 ffffffc29a5180006e008ec0a0f80000 c2ffffff340b03001b018e0605f80000 c2ffffff340b03001b018e0605f80000 ffffffffffffffc29a5180006e008ec0a0f8000000000000 c2ffffff340b03001b018e0605f80000 ffffffc29a5180006e008ec0a0f80000 = struct toobig { unsigned char a:2; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>1} 01 01 01 40 01000000 01 40 01 40 - {a=>1} 01 01 01 40 01000000 01 40 01 40 = struct toobig { unsigned char a:2; unsigned char b:7; }; - {a=>0,b=>93} 005d 005d 005d 00ba 005d0000 005d 00ba 005d 00ba - {a=>3,b=>125} 037d 037d 037d c0fa 037d0000 037d c0fa 037d c0fa - {a=>1,b=>103} 0167 0167 0167 40ce 01670000 0167 40ce 0167 40ce - {a=>0,b=>44} 002c 002c 002c 0058 002c0000 002c 0058 002c 0058 - {a=>2,b=>56} 0238 0238 0238 8070 02380000 0238 8070 0238 8070 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>1,b=>105} 0169 0169 0169 40d2 01690000 0169 40d2 0169 40d2 - {a=>1,b=>69} 0145 0145 0145 408a 01450000 0145 408a 0145 408a - {a=>0,b=>100} 0064 0064 0064 00c8 00640000 0064 00c8 0064 00c8 - {a=>1,b=>64} 0140 0140 0140 4080 01400000 0140 4080 0140 4080 - {a=>1,b=>29} 011d 011d 011d 403a 011d0000 011d 403a 011d 403a = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>2,a=>1,b=>120} 01780200 01780200 01780200 40f08000 01780200 01780200 40f08000 01780200 40f08000 - {c=>3,a=>3,b=>117} 03750300 03750300 03750300 c0eac000 03750300 03750300 c0eac000 03750300 c0eac000 - {c=>2,a=>3,b=>66} 03420200 03420200 03420200 c0848000 03420200 03420200 c0848000 03420200 c0848000 - {c=>2,a=>3,b=>40} 03280200 03280200 03280200 c0508000 03280200 03280200 c0508000 03280200 c0508000 - {c=>3,a=>1,b=>78} 014e0300 014e0300 014e0300 409cc000 014e0300 014e0300 409cc000 014e0300 409cc000 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>1,a=>0,b=>40,d=>29011} 002801005371 002801005371 002801005371 00504000e2a6 0028010053710000 002801005371 00504000e2a6 002801005371 00504000e2a6 - {c=>1,a=>1,b=>52,d=>7870} 01340100be1e 01340100be1e 01340100be1e 406840003d7c 01340100be1e0000 01340100be1e 406840003d7c 01340100be1e 406840003d7c - {c=>3,a=>0,b=>127,d=>24484} 007f0300a45f 007f0300a45f 007f0300a45f 00fec000bf48 007f0300a45f0000 007f0300a45f 00fec000bf48 007f0300a45f 00fec000bf48 - {c=>0,a=>1,b=>117,d=>2770} 01750000d20a 01750000d20a 01750000d20a 40ea000015a4 01750000d20a0000 01750000d20a 40ea000015a4 01750000d20a 40ea000015a4 - {c=>0,a=>2,b=>117,d=>21525} 027500001554 027500001554 027500001554 80ea0000a82a 0275000015540000 027500001554 80ea0000a82a 027500001554 80ea0000a82a = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>0,a=>2,b=>47,d=>5532} 022f00009c150000 022f00009c150000 022f00009c150000 805e00002b380000 022f00009c150000 022f00009c150000 805e00002b380000 022f00009c150000 805e00002b380000 - {c=>0,a=>2,b=>53,d=>17293} 023500008d430000 023500008d430000 023500008d430000 806a0000871a0000 023500008d430000 023500008d430000 806a0000871a0000 023500008d430000 806a0000871a0000 - {c=>0,a=>0,b=>42,d=>15065} 002a0000d93a0000 002a0000d93a0000 002a0000d93a0000 0054000075b20000 002a0000d93a0000 002a0000d93a0000 0054000075b20000 002a0000d93a0000 0054000075b20000 - {c=>1,a=>2,b=>43,d=>26082} 022b0100e2650000 022b0100e2650000 022b0100e2650000 80564000cbc40000 022b0100e2650000 022b0100e2650000 80564000cbc40000 022b0100e2650000 80564000cbc40000 - {c=>2,a=>0,b=>3,d=>23011} 00030200e3590000 00030200e3590000 00030200e3590000 00068000b3c60000 00030200e3590000 00030200e3590000 00068000b3c60000 00030200e3590000 00068000b3c60000 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>0,c=>2,a=>1,b=>107,d=>14008} 016b0200b836000000000000 016b0200b836000000000000 016b0200b836000000000000 40d680006d70000000000000 016b0200b836000000000000 016b0200b836000000000000 40d680006d70000000000000 016b0200b836000000000000 40d680006d70000000000000 - {e=>1,c=>1,a=>0,b=>109,d=>31882} 006d01008a7c000001000000 006d01008a7c000001000000 006d01008a7c000001000000 00da4000f914000040000000 006d01008a7c000001000000 006d01008a7c000001000000 00da4000f914000040000000 006d01008a7c000001000000 00da4000f914000040000000 - {e=>2,c=>1,a=>0,b=>83,d=>27991} 00530100576d000002000000 00530100576d000002000000 00530100576d000002000000 00a64000daae000080000000 00530100576d000002000000 00530100576d000002000000 00a64000daae000080000000 00530100576d000002000000 00a64000daae000080000000 - {e=>0,c=>3,a=>1,b=>74,d=>7214} 014a03002e1c000000000000 014a03002e1c000000000000 014a03002e1c000000000000 4094c000385c000000000000 014a03002e1c000000000000 014a03002e1c000000000000 4094c000385c000000000000 014a03002e1c000000000000 4094c000385c000000000000 - {e=>0,c=>1,a=>0,b=>93,d=>28404} 005d0100f46e000000000000 005d0100f46e000000000000 005d0100f46e000000000000 00ba4000dde8000000000000 005d0100f46e000000000000 005d0100f46e000000000000 00ba4000dde8000000000000 005d0100f46e000000000000 00ba4000dde8000000000000 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>2,c=>3,a=>2,b=>66,d=>17839,f=>37720169} 02420300af4500000200000069903f02 02420300af4500000200000069903f02 02420300af4500000200000069903f02 8084c0008b5e000080000000047f20d2 02420300af4500000200000069903f02 02420300af4500000200000069903f02 8084c0008b5e000080000000047f20d2 02420300af4500000200000069903f02 8084c0008b5e000080000000047f20d2 - {e=>2,c=>0,a=>2,b=>81,d=>29158,f=>19309962} 02510000e6710000020000008aa52601 02510000e6710000020000008aa52601 02510000e6710000020000008aa52601 80a20000e3cc000080000000024d4b14 02510000e6710000020000008aa52601 02510000e6710000020000008aa52601 80a20000e3cc000080000000024d4b14 02510000e6710000020000008aa52601 80a20000e3cc000080000000024d4b14 - {e=>0,c=>1,a=>2,b=>98,d=>18169,f=>163308787} 02620100f946000000000000f3e4bb09 02620100f946000000000000f3e4bb09 02620100f946000000000000f3e4bb09 80c440008df20000000000001377c9e6 02620100f946000000000000f3e4bb09 02620100f946000000000000f3e4bb09 80c440008df20000000000001377c9e6 02620100f946000000000000f3e4bb09 80c440008df20000000000001377c9e6 - {e=>0,c=>3,a=>3,b=>41,d=>24753,f=>707702915} 03290300b16000000000000083b02e2a 03290300b16000000000000083b02e2a 03290300b16000000000000083b02e2a c052c000c162000000000000545d6106 03290300b16000000000000083b02e2a 03290300b16000000000000083b02e2a c052c000c162000000000000545d6106 03290300b16000000000000083b02e2a c052c000c162000000000000545d6106 - {e=>3,c=>0,a=>2,b=>18,d=>28569,f=>199312493} 02120000996f0000030000006d44e10b 02120000996f0000030000006d44e10b 02120000996f0000030000006d44e10b 80240000df320000c000000017c288da 02120000996f0000030000006d44e10b 02120000996f0000030000006d44e10b 80240000df320000c000000017c288da 02120000996f0000030000006d44e10b 80240000df320000c000000017c288da = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>3,c=>0,a=>3,g=>253,b=>73,d=>20290,f=>324422081} 03490000424f000003000000c1495613fd000000 03490000424f000003000000c1495613fd000000 03490000424f000003000000c1495613fd000000 c09200009e840000c000000026ac9382fd000000 03490000424f000003000000c1495613fd000000 03490000424f000003000000c1495613fd000000 c09200009e840000c000000026ac9382fd000000 03490000424f000003000000c1495613fd000000 c09200009e840000c000000026ac9382fd000000 - {e=>2,c=>1,a=>2,g=>98,b=>58,d=>14829,f=>1109100526} 023a0100ed39000002000000ee871b4262000000 023a0100ed39000002000000ee871b4262000000 023a0100ed39000002000000ee871b4262000000 8074400073da00008000000084370fdc62000000 023a0100ed39000002000000ee871b4262000000 023a0100ed39000002000000ee871b4262000000 8074400073da00008000000084370fdc62000000 023a0100ed39000002000000ee871b4262000000 8074400073da00008000000084370fdc62000000 - {e=>1,c=>2,a=>3,g=>243,b=>82,d=>31588,f=>727978398} 03520200647b0000010000009e11642bf3000000 03520200647b0000010000009e11642bf3000000 03520200647b0000010000009e11642bf3000000 c0a48000f6c800004000000056c8233cf3000000 03520200647b0000010000009e11642bf3000000 03520200647b0000010000009e11642bf3000000 c0a48000f6c800004000000056c8233cf3000000 03520200647b0000010000009e11642bf3000000 c0a48000f6c800004000000056c8233cf3000000 - {e=>1,c=>1,a=>1,g=>104,b=>26,d=>22162,f=>432784954} 011a010092560000010000003ac6cb1968000000 011a010092560000010000003ac6cb1968000000 011a010092560000010000003ac6cb1968000000 40344000ad2400004000000033978c7468000000 011a010092560000010000003ac6cb1968000000 011a010092560000010000003ac6cb1968000000 40344000ad2400004000000033978c7468000000 011a010092560000010000003ac6cb1968000000 40344000ad2400004000000033978c7468000000 - {e=>0,c=>3,a=>3,g=>167,b=>62,d=>17539,f=>1939871904} 033e03008344000000000000a018a073a7000000 033e03008344000000000000a018a073a7000000 033e03008344000000000000a018a073a7000000 c07cc0008906000000000000e7403140a7000000 033e03008344000000000000a018a073a7000000 033e03008344000000000000a018a073a7000000 c07cc0008906000000000000e7403140a7000000 033e03008344000000000000a018a073a7000000 c07cc0008906000000000000e7403140a7000000 = struct toobig { char a; unsigned char b:2; }; - {a=>-24,b=>1} e801 e801 e801 e840 e8010000 e801 e840 e801 e840 - {a=>61,b=>3} 3d03 3d03 3d03 3dc0 3d030000 3d03 3dc0 3d03 3dc0 - {a=>-95,b=>1} a101 a101 a101 a140 a1010000 a101 a140 a101 a140 - {a=>-2,b=>2} fe02 fe02 fe02 fe80 fe020000 fe02 fe80 fe02 fe80 - {a=>-71,b=>3} b903 b903 b903 b9c0 b9030000 b903 b9c0 b903 b9c0 = struct toobig { char a; unsigned char b:2; unsigned char c:7; }; - {c=>113,a=>-30,b=>1} e20171 e20171 e20171 e240e2 e2017100 e20171 e240e2 e20171 e240e2 - {c=>77,a=>93,b=>3} 5d034d 5d034d 5d034d 5dc09a 5d034d00 5d034d 5dc09a 5d034d 5dc09a - {c=>76,a=>-105,b=>0} 97004c 97004c 97004c 970098 97004c00 97004c 970098 97004c 970098 - {c=>113,a=>-106,b=>0} 960071 960071 960071 9600e2 96007100 960071 9600e2 960071 9600e2 - {c=>111,a=>21,b=>3} 15036f 15036f 15036f 15c0de 15036f00 15036f 15c0de 15036f 15c0de = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>117,a=>4,b=>0} 04007500 04007500 04007500 0400ea00 04007500 04007500 0400ea00 04007500 0400ea00 - {c=>110,a=>92,b=>1} 5c016e00 5c016e00 5c016e00 5c40dc00 5c016e00 5c016e00 5c40dc00 5c016e00 5c40dc00 - {c=>80,a=>1,b=>0} 01005000 01005000 01005000 0100a000 01005000 01005000 0100a000 01005000 0100a000 - {c=>115,a=>49,b=>0} 31007300 31007300 31007300 3100e600 31007300 31007300 3100e600 31007300 3100e600 - {c=>119,a=>-53,b=>1} cb017700 cb017700 cb017700 cb40ee00 cb017700 cb017700 cb40ee00 cb017700 cb40ee00 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>119,a=>99,b=>1,d=>2} 630177000200 630177000200 630177000200 6340ee008000 6301770002000000 630177000200 6340ee008000 630177000200 6340ee008000 - {c=>52,a=>-52,b=>2,d=>1} cc0234000100 cc0234000100 cc0234000100 cc8068004000 cc02340001000000 cc0234000100 cc8068004000 cc0234000100 cc8068004000 - {c=>59,a=>2,b=>2,d=>0} 02023b000000 02023b000000 02023b000000 028076000000 02023b0000000000 02023b000000 028076000000 02023b000000 028076000000 - {c=>25,a=>59,b=>3,d=>1} 3b0319000100 3b0319000100 3b0319000100 3bc032004000 3b03190001000000 3b0319000100 3bc032004000 3b0319000100 3bc032004000 - {c=>52,a=>-19,b=>0,d=>0} ed0034000000 ed0034000000 ed0034000000 ed0068000000 ed00340000000000 ed0034000000 ed0068000000 ed0034000000 ed0068000000 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>10626,c=>62,a=>76,b=>3,d=>2} 4c033e0002008229 4c033e0002008229 4c033e0002008229 4cc07c0080005304 4c033e0002008229 4c033e0002008229 4cc07c0080005304 4c033e0002008229 4cc07c0080005304 - {e=>16013,c=>106,a=>-123,b=>2,d=>2} 85026a0002008d3e 85026a0002008d3e 85026a0002008d3e 8580d40080007d1a 85026a0002008d3e 85026a0002008d3e 8580d40080007d1a 85026a0002008d3e 8580d40080007d1a - {e=>15778,c=>84,a=>-66,b=>1,d=>3} be0154000300a23d be0154000300a23d be0154000300a23d be40a800c0007b44 be0154000300a23d be0154000300a23d be40a800c0007b44 be0154000300a23d be40a800c0007b44 - {e=>3225,c=>25,a=>-124,b=>1,d=>1} 840119000100990c 840119000100990c 840119000100990c 8440320040001932 840119000100990c 840119000100990c 8440320040001932 840119000100990c 8440320040001932 - {e=>27218,c=>32,a=>-118,b=>0,d=>2} 8a0020000200526a 8a0020000200526a 8a0020000200526a 8a0040008000d4a4 8a0020000200526a 8a0020000200526a 8a0040008000d4a4 8a0020000200526a 8a0040008000d4a4 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>21377,c=>115,a=>-29,b=>0,d=>3} e300730003008153 e300730003008153 e300730003008153 e300e600c000a702 e300730003008153 e300730003008153 e300e600c000a702 e300730003008153 e300e600c000a702 - {e=>21700,c=>42,a=>-64,b=>3,d=>0} c0032a000000c454 c0032a000000c454 c0032a000000c454 c0c054000000a988 c0032a000000c454 c0032a000000c454 c0c054000000a988 c0032a000000c454 c0c054000000a988 - {e=>20468,c=>93,a=>104,b=>0,d=>3} 68005d000300f44f 68005d000300f44f 68005d000300f44f 6800ba00c0009fe8 68005d000300f44f 68005d000300f44f 6800ba00c0009fe8 68005d000300f44f 6800ba00c0009fe8 - {e=>31677,c=>22,a=>109,b=>2,d=>3} 6d0216000300bd7b 6d0216000300bd7b 6d0216000300bd7b 6d802c00c000f77a 6d0216000300bd7b 6d0216000300bd7b 6d802c00c000f77a 6d0216000300bd7b 6d802c00c000f77a - {e=>23636,c=>112,a=>-2,b=>1,d=>0} fe0170000000545c fe0170000000545c fe0170000000545c fe40e0000000b8a8 fe0170000000545c fe0170000000545c fe40e0000000b8a8 fe0170000000545c fe40e0000000b8a8 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>1537,c=>102,a=>-45,b=>3,d=>3,f=>0} d30366000300010600000000 d30366000300010600000000 d30366000300010600000000 d3c0cc00c0000c0200000000 d30366000300010600000000 d30366000300010600000000 d3c0cc00c0000c0200000000 d30366000300010600000000 d3c0cc00c0000c0200000000 - {e=>22539,c=>10,a=>-66,b=>3,d=>1,f=>1} be030a0001000b5801000000 be030a0001000b5801000000 be030a0001000b5801000000 bec014004000b01640000000 be030a0001000b5801000000 be030a0001000b5801000000 bec014004000b01640000000 be030a0001000b5801000000 bec014004000b01640000000 - {e=>28767,c=>112,a=>28,b=>1,d=>1,f=>1} 1c01700001005f7001000000 1c01700001005f7001000000 1c01700001005f7001000000 1c40e0004000e0be40000000 1c01700001005f7001000000 1c01700001005f7001000000 1c40e0004000e0be40000000 1c01700001005f7001000000 1c40e0004000e0be40000000 - {e=>10945,c=>37,a=>-128,b=>0,d=>0,f=>1} 800025000000c12a01000000 800025000000c12a01000000 800025000000c12a01000000 80004a000000558240000000 800025000000c12a01000000 800025000000c12a01000000 80004a000000558240000000 800025000000c12a01000000 80004a000000558240000000 - {e=>7837,c=>65,a=>-30,b=>2,d=>1,f=>2} e202410001009d1e02000000 e202410001009d1e02000000 e202410001009d1e02000000 e280820040003d3a80000000 e202410001009d1e02000000 e202410001009d1e02000000 e280820040003d3a80000000 e202410001009d1e02000000 e280820040003d3a80000000 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16952,c=>81,a=>-69,g=>1806494585,b=>0,d=>0,f=>1} bb005100000038420100000079ebac6b bb005100000038420100000079ebac6b bb005100000038420100000079ebac6b bb00a2000000847040000000d759d6f2 bb005100000038420100000079ebac6b bb005100000038420100000079ebac6b bb00a2000000847040000000d759d6f2 bb005100000038420100000079ebac6b bb00a2000000847040000000d759d6f2 - {e=>22905,c=>42,a=>28,g=>718498820,b=>3,d=>3,f=>0} 1c032a000300795900000000046cd32a 1c032a000300795900000000046cd32a 1c032a000300795900000000046cd32a 1cc05400c000b2f20000000055a6d808 1c032a000300795900000000046cd32a 1c032a000300795900000000046cd32a 1cc05400c000b2f20000000055a6d808 1c032a000300795900000000046cd32a 1cc05400c000b2f20000000055a6d808 - {e=>25314,c=>59,a=>-52,g=>851143488,b=>3,d=>3,f=>0} cc033b000300e26200000000406bbb32 cc033b000300e26200000000406bbb32 cc033b000300e26200000000406bbb32 ccc07600c000c5c4000000006576d680 cc033b000300e26200000000406bbb32 cc033b000300e26200000000406bbb32 ccc07600c000c5c4000000006576d680 cc033b000300e26200000000406bbb32 ccc07600c000c5c4000000006576d680 - {e=>9562,c=>91,a=>-56,g=>17470223,b=>0,d=>1,f=>0} c8005b0001005a25000000000f930a01 c8005b0001005a25000000000f930a01 c8005b0001005a25000000000f930a01 c800b60040004ab4000000000215261e c8005b0001005a25000000000f930a01 c8005b0001005a25000000000f930a01 c800b60040004ab4000000000215261e c8005b0001005a25000000000f930a01 c800b60040004ab4000000000215261e - {e=>19455,c=>19,a=>7,g=>1006255369,b=>0,d=>2,f=>3} 070013000200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b 07002600800097fec000000077f47a12 070013000200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b 07002600800097fec000000077f47a12 070013000200ff4b03000000093dfa3b 07002600800097fec000000077f47a12 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>19431,a=>126,d=>3,c=>84,h=>119,b=>2,g=>10182399,f=>1} 7e0254000300e74b01000000ff5e9b0077000000 7e0254000300e74b01000000ff5e9b0077000000 7e0254000300e74b01000000ff5e9b0077000000 7e80a800c00097ce400000000136bdfe77000000 7e0254000300e74b01000000ff5e9b0077000000 7e0254000300e74b01000000ff5e9b0077000000 7e80a800c00097ce400000000136bdfe77000000 7e0254000300e74b01000000ff5e9b0077000000 7e80a800c00097ce400000000136bdfe77000000 - {e=>1236,a=>51,d=>0,c=>82,h=>240,b=>2,g=>1480777427,f=>1} 330252000000d40401000000d3de4258f0000000 330252000000d40401000000d3de4258f0000000 330252000000d40401000000d3de4258f0000000 3380a400000009a840000000b085bda6f0000000 330252000000d40401000000d3de4258f0000000 330252000000d40401000000d3de4258f0000000 3380a400000009a840000000b085bda6f0000000 330252000000d40401000000d3de4258f0000000 3380a400000009a840000000b085bda6f0000000 - {e=>30136,a=>-73,d=>2,c=>69,h=>69,b=>0,g=>579636421,f=>2} b70045000200b87502000000c58c8c2245000000 b70045000200b87502000000c58c8c2245000000 b70045000200b87502000000c58c8c2245000000 b7008a008000eb70800000004519198a45000000 b70045000200b87502000000c58c8c2245000000 b70045000200b87502000000c58c8c2245000000 b7008a008000eb70800000004519198a45000000 b70045000200b87502000000c58c8c2245000000 b7008a008000eb70800000004519198a45000000 - {e=>25530,a=>-39,d=>2,c=>73,h=>143,b=>3,g=>1327623552,f=>3} d90349000200ba630300000080ed214f8f000000 d90349000200ba630300000080ed214f8f000000 d90349000200ba630300000080ed214f8f000000 d9c092008000c774c00000009e43db008f000000 d90349000200ba630300000080ed214f8f000000 d90349000200ba630300000080ed214f8f000000 d9c092008000c774c00000009e43db008f000000 d90349000200ba630300000080ed214f8f000000 d9c092008000c774c00000009e43db008f000000 - {e=>29715,a=>81,d=>0,c=>33,h=>85,b=>0,g=>909633605,f=>1} 51002100000013740100000045e8373655000000 51002100000013740100000045e8373655000000 51002100000013740100000045e8373655000000 510042000000e826400000006c6fd08a55000000 51002100000013740100000045e8373655000000 51002100000013740100000045e8373655000000 510042000000e826400000006c6fd08a55000000 51002100000013740100000045e8373655000000 510042000000e826400000006c6fd08a55000000 = struct toobig { short a; unsigned char b:2; }; - {a=>-69,b=>3} bbff0300 bbff0300 bbff0300 ffbbc000 bbff0300 bbff0300 ffbbc000 bbff0300 ffbbc000 - {a=>-109,b=>1} 93ff0100 93ff0100 93ff0100 ff934000 93ff0100 93ff0100 ff934000 93ff0100 ff934000 - {a=>68,b=>2} 44000200 44000200 44000200 00448000 44000200 44000200 00448000 44000200 00448000 - {a=>-46,b=>1} d2ff0100 d2ff0100 d2ff0100 ffd24000 d2ff0100 d2ff0100 ffd24000 d2ff0100 ffd24000 - {a=>109,b=>0} 6d000000 6d000000 6d000000 006d0000 6d000000 6d000000 006d0000 6d000000 006d0000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; }; - {c=>54,a=>-126,b=>1} 82ff0136 82ff0136 82ff0136 ff82406c 82ff0136 82ff0136 ff82406c 82ff0136 ff82406c - {c=>117,a=>49,b=>0} 31000075 31000075 31000075 003100ea 31000075 31000075 003100ea 31000075 003100ea - {c=>60,a=>-49,b=>3} cfff033c cfff033c cfff033c ffcfc078 cfff033c cfff033c ffcfc078 cfff033c ffcfc078 - {c=>21,a=>117,b=>0} 75000015 75000015 75000015 0075002a 75000015 75000015 0075002a 75000015 0075002a - {c=>6,a=>-91,b=>2} a5ff0206 a5ff0206 a5ff0206 ffa5800c a5ff0206 a5ff0206 ffa5800c a5ff0206 ffa5800c = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>126,a=>87,b=>0} 5700007e 5700007e 5700007e 005700fc 5700007e 5700007e 005700fc 5700007e 005700fc - {c=>27,a=>-45,b=>1} d3ff011b d3ff011b d3ff011b ffd34036 d3ff011b d3ff011b ffd34036 d3ff011b ffd34036 - {c=>6,a=>-11,b=>2} f5ff0206 f5ff0206 f5ff0206 fff5800c f5ff0206 f5ff0206 fff5800c f5ff0206 fff5800c - {c=>55,a=>63,b=>0} 3f000037 3f000037 3f000037 003f006e 3f000037 3f000037 003f006e 3f000037 003f006e - {c=>121,a=>81,b=>0} 51000079 51000079 51000079 005100f2 51000079 51000079 005100f2 51000079 005100f2 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>11,a=>-34,b=>0,d=>1} deff000b0100 deff000b0100 deff000b0100 ffde00164000 deff000b01000000 deff000b0100 ffde00164000 deff000b0100 ffde00164000 - {c=>109,a=>-11,b=>2,d=>1} f5ff026d0100 f5ff026d0100 f5ff026d0100 fff580da4000 f5ff026d01000000 f5ff026d0100 fff580da4000 f5ff026d0100 fff580da4000 - {c=>79,a=>-9,b=>1,d=>2} f7ff014f0200 f7ff014f0200 f7ff014f0200 fff7409e8000 f7ff014f02000000 f7ff014f0200 fff7409e8000 f7ff014f0200 fff7409e8000 - {c=>12,a=>121,b=>3,d=>3} 7900030c0300 7900030c0300 7900030c0300 0079c018c000 7900030c03000000 7900030c0300 0079c018c000 7900030c0300 0079c018c000 - {c=>3,a=>-105,b=>1,d=>0} 97ff01030000 97ff01030000 97ff01030000 ff9740060000 97ff010300000000 97ff01030000 ff9740060000 97ff01030000 ff9740060000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>16815,c=>31,a=>-103,b=>3,d=>0} 99ff031f0000af41 99ff031f0000af41 99ff031f0000af41 ff99c03e0000835e 99ff031f0000af41 99ff031f0000af41 ff99c03e0000835e 99ff031f0000af41 ff99c03e0000835e - {e=>30240,c=>36,a=>-51,b=>1,d=>2} cdff012402002076 cdff012402002076 cdff012402002076 ffcd40488000ec40 cdff012402002076 cdff012402002076 ffcd40488000ec40 cdff012402002076 ffcd40488000ec40 - {e=>7916,c=>40,a=>47,b=>3,d=>1} 2f0003280100ec1e 2f0003280100ec1e 2f0003280100ec1e 002fc05040003dd8 2f0003280100ec1e 2f0003280100ec1e 002fc05040003dd8 2f0003280100ec1e 002fc05040003dd8 - {e=>18293,c=>39,a=>19,b=>3,d=>2} 1300032702007547 1300032702007547 1300032702007547 0013c04e80008eea 1300032702007547 1300032702007547 0013c04e80008eea 1300032702007547 0013c04e80008eea - {e=>20458,c=>127,a=>-47,b=>1,d=>3} d1ff017f0300ea4f d1ff017f0300ea4f d1ff017f0300ea4f ffd140fec0009fd4 d1ff017f0300ea4f d1ff017f0300ea4f ffd140fec0009fd4 d1ff017f0300ea4f ffd140fec0009fd4 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>4625,c=>71,a=>-47,b=>0,d=>0} d1ff004700001112 d1ff004700001112 d1ff004700001112 ffd1008e00002422 d1ff004700001112 d1ff004700001112 ffd1008e00002422 d1ff004700001112 ffd1008e00002422 - {e=>32168,c=>81,a=>26,b=>2,d=>1} 1a0002510100a87d 1a0002510100a87d 1a0002510100a87d 001a80a24000fb50 1a0002510100a87d 1a0002510100a87d 001a80a24000fb50 1a0002510100a87d 001a80a24000fb50 - {e=>16938,c=>8,a=>95,b=>0,d=>2} 5f00000802002a42 5f00000802002a42 5f00000802002a42 005f001080008454 5f00000802002a42 5f00000802002a42 005f001080008454 5f00000802002a42 005f001080008454 - {e=>7085,c=>73,a=>-59,b=>0,d=>1} c5ff00490100ad1b c5ff00490100ad1b c5ff00490100ad1b ffc500924000375a c5ff00490100ad1b c5ff00490100ad1b ffc500924000375a c5ff00490100ad1b ffc500924000375a - {e=>22949,c=>98,a=>-95,b=>2,d=>0} a1ff02620000a559 a1ff02620000a559 a1ff02620000a559 ffa180c40000b34a a1ff02620000a559 a1ff02620000a559 ffa180c40000b34a a1ff02620000a559 ffa180c40000b34a = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>15082,c=>111,a=>-95,b=>0,d=>0,f=>2} a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 ffa100de000075d480000000 a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 ffa100de000075d480000000 a1ff006f0000ea3a02000000 ffa100de000075d480000000 - {e=>2765,c=>57,a=>35,b=>3,d=>0,f=>3} 230003390000cd0a03000000 230003390000cd0a03000000 230003390000cd0a03000000 0023c0720000159ac0000000 230003390000cd0a03000000 230003390000cd0a03000000 0023c0720000159ac0000000 230003390000cd0a03000000 0023c0720000159ac0000000 - {e=>10395,c=>112,a=>-21,b=>2,d=>3,f=>1} ebff027003009b2801000000 ebff027003009b2801000000 ebff027003009b2801000000 ffeb80e0c000513640000000 ebff027003009b2801000000 ebff027003009b2801000000 ffeb80e0c000513640000000 ebff027003009b2801000000 ffeb80e0c000513640000000 - {e=>27935,c=>81,a=>-93,b=>3,d=>1,f=>3} a3ff035101001f6d03000000 a3ff035101001f6d03000000 a3ff035101001f6d03000000 ffa3c0a24000da3ec0000000 a3ff035101001f6d03000000 a3ff035101001f6d03000000 ffa3c0a24000da3ec0000000 a3ff035101001f6d03000000 ffa3c0a24000da3ec0000000 - {e=>9978,c=>10,a=>-112,b=>2,d=>1,f=>0} 90ff020a0100fa2600000000 90ff020a0100fa2600000000 90ff020a0100fa2600000000 ff90801440004df400000000 90ff020a0100fa2600000000 90ff020a0100fa2600000000 ff90801440004df400000000 90ff020a0100fa2600000000 ff90801440004df400000000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7540,c=>19,a=>-11,g=>1471494247,b=>0,d=>2,f=>2} f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 fff5002680003ae880000000af6a70ce f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 fff5002680003ae880000000af6a70ce f5ff00130200741d020000006738b557 fff5002680003ae880000000af6a70ce - {e=>21082,c=>15,a=>-52,g=>380642011,b=>2,d=>3,f=>0} ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 ffcc801ec000a4b4000000002d6045b6 ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 ffcc801ec000a4b4000000002d6045b6 ccff020f03005a5200000000db22b016 ffcc801ec000a4b4000000002d6045b6 - {e=>20626,c=>108,a=>-96,g=>1260212640,b=>2,d=>1,f=>2} a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b ffa080d84000a12480000000963aa340 a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b ffa080d84000a12480000000963aa340 a0ff026c0100925002000000a0511d4b ffa080d84000a12480000000963aa340 - {e=>9472,c=>8,a=>-4,g=>1691591019,b=>2,d=>1,f=>2} fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 fffc801040004a0080000000c9a742d6 fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 fffc801040004a0080000000c9a742d6 fcff020801000025020000006ba1d364 fffc801040004a0080000000c9a742d6 - {e=>9356,c=>8,a=>78,g=>959851153,b=>3,d=>3,f=>2} 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 004ec010c000491880000000726c5522 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 004ec010c000491880000000726c5522 4e00030803008c2402000000912a3639 004ec010c000491880000000726c5522 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>15569,a=>49,d=>0,c=>98,h=>100,b=>2,g=>783521155,f=>1} 310002620000d13c010000008395b32e64000000 310002620000d13c010000008395b32e64000000 310002620000d13c010000008395b32e64000000 003180c4000079a2400000005d672b0664000000 310002620000d13c010000008395b32e64000000 310002620000d13c010000008395b32e64000000 003180c4000079a2400000005d672b0664000000 310002620000d13c010000008395b32e64000000 003180c4000079a2400000005d672b0664000000 - {e=>16972,a=>63,d=>1,c=>69,h=>90,b=>2,g=>609013294,f=>3} 3f00024501004c42030000002ece4c245a000000 3f00024501004c42030000002ece4c245a000000 3f00024501004c42030000002ece4c245a000000 003f808a40008498c000000048999c5c5a000000 3f00024501004c42030000002ece4c245a000000 3f00024501004c42030000002ece4c245a000000 003f808a40008498c000000048999c5c5a000000 3f00024501004c42030000002ece4c245a000000 003f808a40008498c000000048999c5c5a000000 - {e=>28524,a=>82,d=>1,c=>98,h=>95,b=>0,g=>948610449,f=>0} 5200006201006c6f0000000091a58a385f000000 5200006201006c6f0000000091a58a385f000000 5200006201006c6f0000000091a58a385f000000 005200c44000ded80000000071154b225f000000 5200006201006c6f0000000091a58a385f000000 5200006201006c6f0000000091a58a385f000000 005200c44000ded80000000071154b225f000000 5200006201006c6f0000000091a58a385f000000 005200c44000ded80000000071154b225f000000 - {e=>15555,a=>-7,d=>0,c=>124,h=>184,b=>1,g=>1579365922,f=>3} f9ff017c0000c33c030000002236235eb8000000 f9ff017c0000c33c030000002236235eb8000000 f9ff017c0000c33c030000002236235eb8000000 fff940f800007986c0000000bc466c44b8000000 f9ff017c0000c33c030000002236235eb8000000 f9ff017c0000c33c030000002236235eb8000000 fff940f800007986c0000000bc466c44b8000000 f9ff017c0000c33c030000002236235eb8000000 fff940f800007986c0000000bc466c44b8000000 - {e=>30807,a=>89,d=>3,c=>74,h=>1,b=>3,g=>681792943,f=>3} 5900034a0300577803000000af55a32801000000 5900034a0300577803000000af55a32801000000 5900034a0300577803000000af55a32801000000 0059c094c000f0aec00000005146ab5e01000000 5900034a0300577803000000af55a32801000000 5900034a0300577803000000af55a32801000000 0059c094c000f0aec00000005146ab5e01000000 5900034a0300577803000000af55a32801000000 0059c094c000f0aec00000005146ab5e01000000 = struct toobig { int a; unsigned char b:2; }; - {a=>95,b=>2} 5f00000002000000 5f00000002000000 5f00000002000000 0000005f80000000 5f00000002000000 5f00000002000000 0000005f80000000 5f00000002000000 0000005f80000000 - {a=>81,b=>1} 5100000001000000 5100000001000000 5100000001000000 0000005140000000 5100000001000000 5100000001000000 0000005140000000 5100000001000000 0000005140000000 - {a=>-17,b=>1} efffffff01000000 efffffff01000000 efffffff01000000 ffffffef40000000 efffffff01000000 efffffff01000000 ffffffef40000000 efffffff01000000 ffffffef40000000 - {a=>-1,b=>2} ffffffff02000000 ffffffff02000000 ffffffff02000000 ffffffff80000000 ffffffff02000000 ffffffff02000000 ffffffff80000000 ffffffff02000000 ffffffff80000000 - {a=>117,b=>2} 7500000002000000 7500000002000000 7500000002000000 0000007580000000 7500000002000000 7500000002000000 0000007580000000 7500000002000000 0000007580000000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; }; - {c=>67,a=>69,b=>0} 4500000000430000 4500000000430000 4500000000430000 0000004500860000 4500000000430000 4500000000430000 0000004500860000 4500000000430000 0000004500860000 - {c=>61,a=>-71,b=>3} b9ffffff033d0000 b9ffffff033d0000 b9ffffff033d0000 ffffffb9c07a0000 b9ffffff033d0000 b9ffffff033d0000 ffffffb9c07a0000 b9ffffff033d0000 ffffffb9c07a0000 - {c=>36,a=>-65,b=>0} bfffffff00240000 bfffffff00240000 bfffffff00240000 ffffffbf00480000 bfffffff00240000 bfffffff00240000 ffffffbf00480000 bfffffff00240000 ffffffbf00480000 - {c=>115,a=>-65,b=>2} bfffffff02730000 bfffffff02730000 bfffffff02730000 ffffffbf80e60000 bfffffff02730000 bfffffff02730000 ffffffbf80e60000 bfffffff02730000 ffffffbf80e60000 - {c=>98,a=>-9,b=>1} f7ffffff01620000 f7ffffff01620000 f7ffffff01620000 fffffff740c40000 f7ffffff01620000 f7ffffff01620000 fffffff740c40000 f7ffffff01620000 fffffff740c40000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>110,a=>-90,b=>2} a6ffffff026e0000 a6ffffff026e0000 a6ffffff026e0000 ffffffa680dc0000 a6ffffff026e0000 a6ffffff026e0000 ffffffa680dc0000 a6ffffff026e0000 ffffffa680dc0000 - {c=>89,a=>109,b=>3} 6d00000003590000 6d00000003590000 6d00000003590000 0000006dc0b20000 6d00000003590000 6d00000003590000 0000006dc0b20000 6d00000003590000 0000006dc0b20000 - {c=>119,a=>55,b=>2} 3700000002770000 3700000002770000 3700000002770000 0000003780ee0000 3700000002770000 3700000002770000 0000003780ee0000 3700000002770000 0000003780ee0000 - {c=>78,a=>-95,b=>2} a1ffffff024e0000 a1ffffff024e0000 a1ffffff024e0000 ffffffa1809c0000 a1ffffff024e0000 a1ffffff024e0000 ffffffa1809c0000 a1ffffff024e0000 ffffffa1809c0000 - {c=>108,a=>-76,b=>2} b4ffffff026c0000 b4ffffff026c0000 b4ffffff026c0000 ffffffb480d80000 b4ffffff026c0000 b4ffffff026c0000 ffffffb480d80000 b4ffffff026c0000 ffffffb480d80000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>67,a=>-11,b=>2,d=>2} f5ffffff02430200 f5ffffff02430200 f5ffffff02430200 fffffff580868000 f5ffffff02430200 f5ffffff02430200 fffffff580868000 f5ffffff02430200 fffffff580868000 - {c=>94,a=>-43,b=>2,d=>0} d5ffffff025e0000 d5ffffff025e0000 d5ffffff025e0000 ffffffd580bc0000 d5ffffff025e0000 d5ffffff025e0000 ffffffd580bc0000 d5ffffff025e0000 ffffffd580bc0000 - {c=>13,a=>12,b=>0,d=>3} 0c000000000d0300 0c000000000d0300 0c000000000d0300 0000000c001ac000 0c000000000d0300 0c000000000d0300 0000000c001ac000 0c000000000d0300 0000000c001ac000 - {c=>20,a=>75,b=>1,d=>3} 4b00000001140300 4b00000001140300 4b00000001140300 0000004b4028c000 4b00000001140300 4b00000001140300 0000004b4028c000 4b00000001140300 0000004b4028c000 - {c=>16,a=>99,b=>2,d=>0} 6300000002100000 6300000002100000 6300000002100000 0000006380200000 6300000002100000 6300000002100000 0000006380200000 6300000002100000 0000006380200000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>15944,c=>81,a=>-88,b=>1,d=>1} a8ffffff01510100483e0000 a8ffffff01510100483e0000 a8ffffff01510100483e0000 ffffffa840a240007c900000 a8ffffff01510100483e0000 a8ffffff01510100483e0000 ffffffa840a240007c900000 a8ffffff01510100483e0000 ffffffa840a240007c900000 - {e=>28784,c=>113,a=>-26,b=>3,d=>2} e6ffffff0371020070700000 e6ffffff0371020070700000 e6ffffff0371020070700000 ffffffe6c0e28000e0e00000 e6ffffff0371020070700000 e6ffffff0371020070700000 ffffffe6c0e28000e0e00000 e6ffffff0371020070700000 ffffffe6c0e28000e0e00000 - {e=>25323,c=>4,a=>3,b=>2,d=>3} 0300000002040300eb620000 0300000002040300eb620000 0300000002040300eb620000 000000038008c000c5d60000 0300000002040300eb620000 0300000002040300eb620000 000000038008c000c5d60000 0300000002040300eb620000 000000038008c000c5d60000 - {e=>5631,c=>25,a=>126,b=>2,d=>2} 7e00000002190200ff150000 7e00000002190200ff150000 7e00000002190200ff150000 0000007e803280002bfe0000 7e00000002190200ff150000 7e00000002190200ff150000 0000007e803280002bfe0000 7e00000002190200ff150000 0000007e803280002bfe0000 - {e=>30242,c=>81,a=>43,b=>1,d=>2} 2b0000000151020022760000 2b0000000151020022760000 2b0000000151020022760000 0000002b40a28000ec440000 2b0000000151020022760000 2b0000000151020022760000 0000002b40a28000ec440000 2b0000000151020022760000 0000002b40a28000ec440000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>26399,c=>49,a=>-62,b=>2,d=>1} c2ffffff023101001f670000 c2ffffff023101001f670000 c2ffffff023101001f670000 ffffffc280624000ce3e0000 c2ffffff023101001f670000 c2ffffff023101001f670000 ffffffc280624000ce3e0000 c2ffffff023101001f670000 ffffffc280624000ce3e0000 - {e=>29626,c=>6,a=>-98,b=>2,d=>1} 9effffff02060100ba730000 9effffff02060100ba730000 9effffff02060100ba730000 ffffff9e800c4000e7740000 9effffff02060100ba730000 9effffff02060100ba730000 ffffff9e800c4000e7740000 9effffff02060100ba730000 ffffff9e800c4000e7740000 - {e=>10198,c=>108,a=>64,b=>2,d=>1} 40000000026c0100d6270000 40000000026c0100d6270000 40000000026c0100d6270000 0000004080d840004fac0000 40000000026c0100d6270000 40000000026c0100d6270000 0000004080d840004fac0000 40000000026c0100d6270000 0000004080d840004fac0000 - {e=>10521,c=>124,a=>34,b=>0,d=>3} 22000000007c030019290000 22000000007c030019290000 22000000007c030019290000 0000002200f8c00052320000 22000000007c030019290000 22000000007c030019290000 0000002200f8c00052320000 22000000007c030019290000 0000002200f8c00052320000 - {e=>25536,c=>37,a=>88,b=>3,d=>3} 5800000003250300c0630000 5800000003250300c0630000 5800000003250300c0630000 00000058c04ac000c7800000 5800000003250300c0630000 5800000003250300c0630000 00000058c04ac000c7800000 5800000003250300c0630000 00000058c04ac000c7800000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>22897,c=>65,a=>-113,b=>1,d=>3,f=>2} 8fffffff014103007159000002000000 8fffffff014103007159000002000000 8fffffff014103007159000002000000 ffffff8f4082c000b2e2000080000000 8fffffff014103007159000002000000 8fffffff014103007159000002000000 ffffff8f4082c000b2e2000080000000 8fffffff014103007159000002000000 ffffff8f4082c000b2e2000080000000 - {e=>28655,c=>21,a=>107,b=>1,d=>3,f=>0} 6b00000001150300ef6f000000000000 6b00000001150300ef6f000000000000 6b00000001150300ef6f000000000000 0000006b402ac000dfde000000000000 6b00000001150300ef6f000000000000 6b00000001150300ef6f000000000000 0000006b402ac000dfde000000000000 6b00000001150300ef6f000000000000 0000006b402ac000dfde000000000000 - {e=>11486,c=>82,a=>27,b=>0,d=>2,f=>1} 1b00000000520200de2c000001000000 1b00000000520200de2c000001000000 1b00000000520200de2c000001000000 0000001b00a4800059bc000040000000 1b00000000520200de2c000001000000 1b00000000520200de2c000001000000 0000001b00a4800059bc000040000000 1b00000000520200de2c000001000000 0000001b00a4800059bc000040000000 - {e=>8829,c=>47,a=>-44,b=>2,d=>1,f=>3} d4ffffff022f01007d22000003000000 d4ffffff022f01007d22000003000000 d4ffffff022f01007d22000003000000 ffffffd4805e400044fa0000c0000000 d4ffffff022f01007d22000003000000 d4ffffff022f01007d22000003000000 ffffffd4805e400044fa0000c0000000 d4ffffff022f01007d22000003000000 ffffffd4805e400044fa0000c0000000 - {e=>24395,c=>33,a=>-122,b=>1,d=>0,f=>0} 86ffffff012100004b5f000000000000 86ffffff012100004b5f000000000000 86ffffff012100004b5f000000000000 ffffff8640420000be96000000000000 86ffffff012100004b5f000000000000 86ffffff012100004b5f000000000000 ffffff8640420000be96000000000000 86ffffff012100004b5f000000000000 ffffff8640420000be96000000000000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>21026,c=>66,a=>92,g=>1659281310,b=>0,d=>2,f=>1} 5c0000000042020022520000010000009e9fe662 5c0000000042020022520000010000009e9fe662 5c0000000042020022520000010000009e9fe662 0000005c00848000a444000040000000c5cd3f3c 5c0000000042020022520000010000009e9fe662 5c0000000042020022520000010000009e9fe662 0000005c00848000a444000040000000c5cd3f3c 5c0000000042020022520000010000009e9fe662 0000005c00848000a444000040000000c5cd3f3c - {e=>12920,c=>104,a=>10,g=>2107984876,b=>2,d=>2,f=>2} 0a000000026802007832000002000000ec4ba57d 0a000000026802007832000002000000ec4ba57d 0a000000026802007832000002000000ec4ba57d 0000000a80d0800064f0000080000000fb4a97d8 0a000000026802007832000002000000ec4ba57d 0a000000026802007832000002000000ec4ba57d 0000000a80d0800064f0000080000000fb4a97d8 0a000000026802007832000002000000ec4ba57d 0000000a80d0800064f0000080000000fb4a97d8 - {e=>3821,c=>93,a=>-11,g=>664990743,b=>1,d=>0,f=>0} f5ffffff015d0000ed0e00000000000017f4a227 f5ffffff015d0000ed0e00000000000017f4a227 f5ffffff015d0000ed0e00000000000017f4a227 fffffff540ba00001dda0000000000004f45e82e f5ffffff015d0000ed0e00000000000017f4a227 f5ffffff015d0000ed0e00000000000017f4a227 fffffff540ba00001dda0000000000004f45e82e f5ffffff015d0000ed0e00000000000017f4a227 fffffff540ba00001dda0000000000004f45e82e - {e=>5353,c=>99,a=>-47,g=>171749847,b=>0,d=>1,f=>1} d1ffffff00630100e914000001000000d7b13c0a d1ffffff00630100e914000001000000d7b13c0a d1ffffff00630100e914000001000000d7b13c0a ffffffd100c6400029d2000040000000147963ae d1ffffff00630100e914000001000000d7b13c0a d1ffffff00630100e914000001000000d7b13c0a ffffffd100c6400029d2000040000000147963ae d1ffffff00630100e914000001000000d7b13c0a ffffffd100c6400029d2000040000000147963ae - {e=>3580,c=>89,a=>24,g=>668072177,b=>3,d=>3,f=>0} 1800000003590300fc0d000000000000f1f8d127 1800000003590300fc0d000000000000f1f8d127 1800000003590300fc0d000000000000f1f8d127 00000018c0b2c0001bf80000000000004fa3f1e2 1800000003590300fc0d000000000000f1f8d127 1800000003590300fc0d000000000000f1f8d127 00000018c0b2c0001bf80000000000004fa3f1e2 1800000003590300fc0d000000000000f1f8d127 00000018c0b2c0001bf80000000000004fa3f1e2 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>26214,a=>3,d=>3,c=>2,h=>13,b=>0,g=>1018602210,f=>1} 03000000000203006666000001000000e2a2b63c0d000000 03000000000203006666000001000000e2a2b63c0d000000 03000000000203006666000001000000e2a2b63c0d000000 000000030004c000cccc000040000000796d45c40d000000 03000000000203006666000001000000e2a2b63c0d000000 03000000000203006666000001000000e2a2b63c0d000000 000000030004c000cccc000040000000796d45c40d000000 03000000000203006666000001000000e2a2b63c0d000000 000000030004c000cccc000040000000796d45c40d000000 - {e=>1638,a=>90,d=>0,c=>29,h=>15,b=>0,g=>1932291266,f=>2} 5a000000001d00006606000002000000c26c2c730f000000 5a000000001d00006606000002000000c26c2c730f000000 5a000000001d00006606000002000000c26c2c730f000000 0000005a003a00000ccc000080000000e658d9840f000000 5a000000001d00006606000002000000c26c2c730f000000 5a000000001d00006606000002000000c26c2c730f000000 0000005a003a00000ccc000080000000e658d9840f000000 5a000000001d00006606000002000000c26c2c730f000000 0000005a003a00000ccc000080000000e658d9840f000000 - {e=>19392,a=>98,d=>2,c=>117,h=>142,b=>2,g=>1646528382,f=>3} 6200000002750200c04b0000030000007e0724628e000000 6200000002750200c04b0000030000007e0724628e000000 6200000002750200c04b0000030000007e0724628e000000 0000006280ea800097800000c0000000c4480efc8e000000 6200000002750200c04b0000030000007e0724628e000000 6200000002750200c04b0000030000007e0724628e000000 0000006280ea800097800000c0000000c4480efc8e000000 6200000002750200c04b0000030000007e0724628e000000 0000006280ea800097800000c0000000c4480efc8e000000 - {e=>9394,a=>18,d=>2,c=>23,h=>96,b=>0,g=>1695469510,f=>0} 1200000000170200b224000000000000c6cf0e6560000000 1200000000170200b224000000000000c6cf0e6560000000 1200000000170200b224000000000000c6cf0e6560000000 00000012002e80004964000000000000ca1d9f8c60000000 1200000000170200b224000000000000c6cf0e6560000000 1200000000170200b224000000000000c6cf0e6560000000 00000012002e80004964000000000000ca1d9f8c60000000 1200000000170200b224000000000000c6cf0e6560000000 00000012002e80004964000000000000ca1d9f8c60000000 - {e=>21676,a=>69,d=>2,c=>106,h=>240,b=>1,g=>2126836617,f=>2} 45000000016a0200ac5400000200000089f3c47ef0000000 45000000016a0200ac5400000200000089f3c47ef0000000 45000000016a0200ac5400000200000089f3c47ef0000000 0000004540d48000a958000080000000fd89e712f0000000 45000000016a0200ac5400000200000089f3c47ef0000000 45000000016a0200ac5400000200000089f3c47ef0000000 0000004540d48000a958000080000000fd89e712f0000000 45000000016a0200ac5400000200000089f3c47ef0000000 0000004540d48000a958000080000000fd89e712f0000000 = struct toobig { long a; unsigned char b:2; }; - {a=>-12,b=>2} f4ffffff02000000 f4ffffffffffffff0200000000000000 f4ffffffffffffff0200000000000000 fffffff480000000 f4ffffff02000000 f4ffffff02000000 fffffffffffffff48000000000000000 f4ffffff02000000 fffffff480000000 - {a=>0,b=>1} 0000000001000000 00000000000000000100000000000000 00000000000000000100000000000000 0000000040000000 0000000001000000 0000000001000000 00000000000000004000000000000000 0000000001000000 0000000040000000 - {a=>60,b=>2} 3c00000002000000 3c000000000000000200000000000000 3c000000000000000200000000000000 0000003c80000000 3c00000002000000 3c00000002000000 000000000000003c8000000000000000 3c00000002000000 0000003c80000000 - {a=>61,b=>3} 3d00000003000000 3d000000000000000300000000000000 3d000000000000000300000000000000 0000003dc0000000 3d00000003000000 3d00000003000000 000000000000003dc000000000000000 3d00000003000000 0000003dc0000000 - {a=>122,b=>1} 7a00000001000000 7a000000000000000100000000000000 7a000000000000000100000000000000 0000007a40000000 7a00000001000000 7a00000001000000 000000000000007a4000000000000000 7a00000001000000 0000007a40000000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; }; - {c=>127,a=>-21,b=>2} ebffffff027f0000 ebffffffffffffff027f000000000000 ebffffffffffffff027f000000000000 ffffffeb80fe0000 ebffffff027f0000 ebffffff027f0000 ffffffffffffffeb80fe000000000000 ebffffff027f0000 ffffffeb80fe0000 - {c=>6,a=>-60,b=>0} c4ffffff00060000 c4ffffffffffffff0006000000000000 c4ffffffffffffff0006000000000000 ffffffc4000c0000 c4ffffff00060000 c4ffffff00060000 ffffffffffffffc4000c000000000000 c4ffffff00060000 ffffffc4000c0000 - {c=>118,a=>-112,b=>2} 90ffffff02760000 90ffffffffffffff0276000000000000 90ffffffffffffff0276000000000000 ffffff9080ec0000 90ffffff02760000 90ffffff02760000 ffffffffffffff9080ec000000000000 90ffffff02760000 ffffff9080ec0000 - {c=>100,a=>-92,b=>3} a4ffffff03640000 a4ffffffffffffff0364000000000000 a4ffffffffffffff0364000000000000 ffffffa4c0c80000 a4ffffff03640000 a4ffffff03640000 ffffffffffffffa4c0c8000000000000 a4ffffff03640000 ffffffa4c0c80000 - {c=>11,a=>123,b=>1} 7b000000010b0000 7b00000000000000010b000000000000 7b00000000000000010b000000000000 0000007b40160000 7b000000010b0000 7b000000010b0000 000000000000007b4016000000000000 7b000000010b0000 0000007b40160000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>82,a=>18,b=>3} 1200000003520000 12000000000000000352000000000000 12000000000000000352000000000000 00000012c0a40000 1200000003520000 1200000003520000 0000000000000012c0a4000000000000 1200000003520000 00000012c0a40000 - {c=>34,a=>45,b=>2} 2d00000002220000 2d000000000000000222000000000000 2d000000000000000222000000000000 0000002d80440000 2d00000002220000 2d00000002220000 000000000000002d8044000000000000 2d00000002220000 0000002d80440000 - {c=>18,a=>-66,b=>2} beffffff02120000 beffffffffffffff0212000000000000 beffffffffffffff0212000000000000 ffffffbe80240000 beffffff02120000 beffffff02120000 ffffffffffffffbe8024000000000000 beffffff02120000 ffffffbe80240000 - {c=>41,a=>53,b=>1} 3500000001290000 35000000000000000129000000000000 35000000000000000129000000000000 0000003540520000 3500000001290000 3500000001290000 00000000000000354052000000000000 3500000001290000 0000003540520000 - {c=>97,a=>60,b=>0} 3c00000000610000 3c000000000000000061000000000000 3c000000000000000061000000000000 0000003c00c20000 3c00000000610000 3c00000000610000 000000000000003c00c2000000000000 3c00000000610000 0000003c00c20000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>124,a=>18,b=>1,d=>1} 12000000017c0100 1200000000000000017c010000000000 1200000000000000017c010000000000 0000001240f84000 12000000017c0100 12000000017c0100 000000000000001240f8400000000000 12000000017c0100 0000001240f84000 - {c=>4,a=>-25,b=>3,d=>0} e7ffffff03040000 e7ffffffffffffff0304000000000000 e7ffffffffffffff0304000000000000 ffffffe7c0080000 e7ffffff03040000 e7ffffff03040000 ffffffffffffffe7c008000000000000 e7ffffff03040000 ffffffe7c0080000 - {c=>9,a=>8,b=>0,d=>2} 0800000000090200 08000000000000000009020000000000 08000000000000000009020000000000 0000000800128000 0800000000090200 0800000000090200 00000000000000080012800000000000 0800000000090200 0000000800128000 - {c=>74,a=>-10,b=>2,d=>3} f6ffffff024a0300 f6ffffffffffffff024a030000000000 f6ffffffffffffff024a030000000000 fffffff68094c000 f6ffffff024a0300 f6ffffff024a0300 fffffffffffffff68094c00000000000 f6ffffff024a0300 fffffff68094c000 - {c=>20,a=>-100,b=>0,d=>3} 9cffffff00140300 9cffffffffffffff0014030000000000 9cffffffffffffff0014030000000000 ffffff9c0028c000 9cffffff00140300 9cffffff00140300 ffffffffffffff9c0028c00000000000 9cffffff00140300 ffffff9c0028c000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>8288,c=>27,a=>27,b=>1,d=>0} 1b000000011b000060200000 1b00000000000000011b000060200000 1b00000000000000011b000060200000 0000001b4036000040c00000 1b000000011b000060200000 1b000000011b000060200000 000000000000001b4036000040c00000 1b000000011b000060200000 0000001b4036000040c00000 - {e=>31476,c=>62,a=>15,b=>2,d=>0} 0f000000023e0000f47a0000 0f00000000000000023e0000f47a0000 0f00000000000000023e0000f47a0000 0000000f807c0000f5e80000 0f000000023e0000f47a0000 0f000000023e0000f47a0000 000000000000000f807c0000f5e80000 0f000000023e0000f47a0000 0000000f807c0000f5e80000 - {e=>28645,c=>102,a=>-2,b=>0,d=>3} feffffff00660300e56f0000 feffffffffffffff00660300e56f0000 feffffffffffffff00660300e56f0000 fffffffe00ccc000dfca0000 feffffff00660300e56f0000 feffffff00660300e56f0000 fffffffffffffffe00ccc000dfca0000 feffffff00660300e56f0000 fffffffe00ccc000dfca0000 - {e=>5175,c=>47,a=>123,b=>3,d=>3} 7b000000032f030037140000 7b00000000000000032f030037140000 7b00000000000000032f030037140000 0000007bc05ec000286e0000 7b000000032f030037140000 7b000000032f030037140000 000000000000007bc05ec000286e0000 7b000000032f030037140000 0000007bc05ec000286e0000 - {e=>3986,c=>9,a=>92,b=>2,d=>2} 5c00000002090200920f0000 5c0000000000000002090200920f0000 5c0000000000000002090200920f0000 0000005c801280001f240000 5c00000002090200920f0000 5c00000002090200920f0000 000000000000005c801280001f240000 5c00000002090200920f0000 0000005c801280001f240000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>26564,c=>47,a=>75,b=>2,d=>1} 4b000000022f0100c4670000 4b00000000000000022f0100c4670000 4b00000000000000022f0100c4670000 0000004b805e4000cf880000 4b000000022f0100c4670000 4b000000022f0100c4670000 000000000000004b805e4000cf880000 4b000000022f0100c4670000 0000004b805e4000cf880000 - {e=>13162,c=>83,a=>-7,b=>3,d=>2} f9ffffff035302006a330000 f9ffffffffffffff035302006a330000 f9ffffffffffffff035302006a330000 fffffff9c0a6800066d40000 f9ffffff035302006a330000 f9ffffff035302006a330000 fffffffffffffff9c0a6800066d40000 f9ffffff035302006a330000 fffffff9c0a6800066d40000 - {e=>21769,c=>111,a=>-87,b=>3,d=>2} a9ffffff036f020009550000 a9ffffffffffffff036f020009550000 a9ffffffffffffff036f020009550000 ffffffa9c0de8000aa120000 a9ffffff036f020009550000 a9ffffff036f020009550000 ffffffffffffffa9c0de8000aa120000 a9ffffff036f020009550000 ffffffa9c0de8000aa120000 - {e=>5436,c=>68,a=>-101,b=>3,d=>0} 9bffffff034400003c150000 9bffffffffffffff034400003c150000 9bffffffffffffff034400003c150000 ffffff9bc08800002a780000 9bffffff034400003c150000 9bffffff034400003c150000 ffffffffffffff9bc08800002a780000 9bffffff034400003c150000 ffffff9bc08800002a780000 - {e=>13380,c=>90,a=>86,b=>2,d=>0} 56000000025a000044340000 5600000000000000025a000044340000 5600000000000000025a000044340000 0000005680b4000068880000 56000000025a000044340000 56000000025a000044340000 000000000000005680b4000068880000 56000000025a000044340000 0000005680b4000068880000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>23505,c=>0,a=>-30,b=>2,d=>3,f=>3} e2ffffff02000300d15b000003000000 e2ffffffffffffff02000300d15b00000300000000000000 e2ffffffffffffff02000300d15b00000300000000000000 ffffffe28000c000b7a20000c0000000 e2ffffff02000300d15b000003000000 e2ffffff02000300d15b000003000000 ffffffffffffffe28000c000b7a20000c000000000000000 e2ffffff02000300d15b000003000000 ffffffe28000c000b7a20000c0000000 - {e=>29524,c=>34,a=>72,b=>2,d=>2,f=>0} 48000000022202005473000000000000 480000000000000002220200547300000000000000000000 480000000000000002220200547300000000000000000000 0000004880448000e6a8000000000000 48000000022202005473000000000000 48000000022202005473000000000000 000000000000004880448000e6a800000000000000000000 48000000022202005473000000000000 0000004880448000e6a8000000000000 - {e=>8502,c=>60,a=>85,b=>1,d=>1,f=>1} 55000000013c01003621000001000000 5500000000000000013c0100362100000100000000000000 5500000000000000013c0100362100000100000000000000 0000005540784000426c000040000000 55000000013c01003621000001000000 55000000013c01003621000001000000 000000000000005540784000426c00004000000000000000 55000000013c01003621000001000000 0000005540784000426c000040000000 - {e=>3686,c=>42,a=>-13,b=>2,d=>0,f=>1} f3ffffff022a0000660e000001000000 f3ffffffffffffff022a0000660e00000100000000000000 f3ffffffffffffff022a0000660e00000100000000000000 fffffff3805400001ccc000040000000 f3ffffff022a0000660e000001000000 f3ffffff022a0000660e000001000000 fffffffffffffff3805400001ccc00004000000000000000 f3ffffff022a0000660e000001000000 fffffff3805400001ccc000040000000 - {e=>26261,c=>48,a=>-62,b=>1,d=>0,f=>1} c2ffffff013000009566000001000000 c2ffffffffffffff01300000956600000100000000000000 c2ffffffffffffff01300000956600000100000000000000 ffffffc240600000cd2a000040000000 c2ffffff013000009566000001000000 c2ffffff013000009566000001000000 ffffffffffffffc240600000cd2a00004000000000000000 c2ffffff013000009566000001000000 ffffffc240600000cd2a000040000000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>25271,c=>5,a=>23,g=>1549434592,b=>0,d=>0,f=>3} 1700000000050000b762000003000000e07e5a5c 170000000000000000050000b762000003000000e07e5a5c 170000000000000000050000b762000003000000e07e5a5c 00000017000a0000c56e0000c0000000b8b4fdc0 1700000000050000b762000003000000e07e5a5c 1700000000050000b762000003000000e07e5a5c 0000000000000017000a0000c56e0000c0000000b8b4fdc0 1700000000050000b762000003000000e07e5a5c 00000017000a0000c56e0000c0000000b8b4fdc0 - {e=>29769,c=>70,a=>53,g=>485498167,b=>3,d=>3,f=>3} 35000000034603004974000003000000371df01c 3500000000000000034603004974000003000000371df01c 3500000000000000034603004974000003000000371df01c 00000035c08cc000e8920000c000000039e03a6e 35000000034603004974000003000000371df01c 35000000034603004974000003000000371df01c 0000000000000035c08cc000e8920000c000000039e03a6e 35000000034603004974000003000000371df01c 00000035c08cc000e8920000c000000039e03a6e - {e=>4324,c=>68,a=>105,g=>554750747,b=>0,d=>0,f=>1} 6900000000440000e4100000010000001bd31021 690000000000000000440000e4100000010000001bd31021 690000000000000000440000e4100000010000001bd31021 000000690088000021c80000400000004221a636 6900000000440000e4100000010000001bd31021 6900000000440000e4100000010000001bd31021 00000000000000690088000021c80000400000004221a636 6900000000440000e4100000010000001bd31021 000000690088000021c80000400000004221a636 - {e=>17511,c=>94,a=>58,g=>250165519,b=>2,d=>2,f=>3} 3a000000025e020067440000030000000f39e90e 3a00000000000000025e020067440000030000000f39e90e 3a00000000000000025e020067440000030000000f39e90e 0000003a80bc800088ce0000c00000001dd2721e 3a000000025e020067440000030000000f39e90e 3a000000025e020067440000030000000f39e90e 000000000000003a80bc800088ce0000c00000001dd2721e 3a000000025e020067440000030000000f39e90e 0000003a80bc800088ce0000c00000001dd2721e - {e=>14283,c=>79,a=>-97,g=>1714885120,b=>1,d=>2,f=>1} 9fffffff014f0200cb3700000100000000123766 9fffffffffffffff014f0200cb3700000100000000123766 9fffffffffffffff014f0200cb3700000100000000123766 ffffff9f409e80006f96000040000000cc6e2400 9fffffff014f0200cb3700000100000000123766 9fffffff014f0200cb3700000100000000123766 ffffffffffffff9f409e80006f96000040000000cc6e2400 9fffffff014f0200cb3700000100000000123766 ffffff9f409e80006f96000040000000cc6e2400 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22593,a=>-105,d=>2,c=>125,h=>86,b=>2,g=>490502662,f=>2} 97ffffff027d02004158000002000000067a3c1d56000000 97ffffffffffffff027d02004158000002000000067a3c1d5600000000000000 97ffffffffffffff027d02004158000002000000067a3c1d5600000000000000 ffffff9780fa8000b0820000800000003a78f40c56000000 97ffffff027d02004158000002000000067a3c1d56000000 97ffffff027d02004158000002000000067a3c1d56000000 ffffffffffffff9780fa8000b0820000800000003a78f40c5600000000000000 97ffffff027d02004158000002000000067a3c1d56000000 ffffff9780fa8000b0820000800000003a78f40c56000000 - {e=>22467,a=>-25,d=>0,c=>60,h=>208,b=>0,g=>371229021,f=>0} e7ffffff003c0000c3570000000000005d812016d0000000 e7ffffffffffffff003c0000c3570000000000005d812016d000000000000000 e7ffffffffffffff003c0000c3570000000000005d812016d000000000000000 ffffffe700780000af860000000000002c4102bad0000000 e7ffffff003c0000c3570000000000005d812016d0000000 e7ffffff003c0000c3570000000000005d812016d0000000 ffffffffffffffe700780000af860000000000002c4102bad000000000000000 e7ffffff003c0000c3570000000000005d812016d0000000 ffffffe700780000af860000000000002c4102bad0000000 - {e=>31600,a=>-7,d=>2,c=>78,h=>234,b=>0,g=>1056003073,f=>2} f9ffffff004e0200707b0000020000000154f13eea000000 f9ffffffffffffff004e0200707b0000020000000154f13eea00000000000000 f9ffffffffffffff004e0200707b0000020000000154f13eea00000000000000 fffffff9009c8000f6e00000800000007de2a802ea000000 f9ffffff004e0200707b0000020000000154f13eea000000 f9ffffff004e0200707b0000020000000154f13eea000000 fffffffffffffff9009c8000f6e00000800000007de2a802ea00000000000000 f9ffffff004e0200707b0000020000000154f13eea000000 fffffff9009c8000f6e00000800000007de2a802ea000000 - {e=>12252,a=>38,d=>2,c=>1,h=>15,b=>1,g=>1441179725,f=>2} 2600000001010200dc2f0000020000004da8e6550f000000 260000000000000001010200dc2f0000020000004da8e6550f00000000000000 260000000000000001010200dc2f0000020000004da8e6550f00000000000000 00000026400280005fb8000080000000abcd509a0f000000 2600000001010200dc2f0000020000004da8e6550f000000 2600000001010200dc2f0000020000004da8e6550f000000 0000000000000026400280005fb8000080000000abcd509a0f00000000000000 2600000001010200dc2f0000020000004da8e6550f000000 00000026400280005fb8000080000000abcd509a0f000000 - {e=>29268,a=>28,d=>0,c=>18,h=>157,b=>1,g=>2064430442,f=>1} 1c0000000112000054720000010000006ab50c7b9d000000 1c000000000000000112000054720000010000006ab50c7b9d00000000000000 1c000000000000000112000054720000010000006ab50c7b9d00000000000000 0000001c40240000e4a8000040000000f6196ad49d000000 1c0000000112000054720000010000006ab50c7b9d000000 1c0000000112000054720000010000006ab50c7b9d000000 000000000000001c40240000e4a8000040000000f6196ad49d00000000000000 1c0000000112000054720000010000006ab50c7b9d000000 0000001c40240000e4a8000040000000f6196ad49d000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>1} 01 01 01 40 01000000 01 40 01 40 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>3,b=>122} 037a 037a 037a c0f4 037a0000 037a c0f4 037a c0f4 - {a=>0,b=>7} 0007 0007 0007 000e 00070000 0007 000e 0007 000e - {a=>3,b=>2} 0302 0302 0302 c004 03020000 0302 c004 0302 c004 - {a=>1,b=>102} 0166 0166 0166 40cc 01660000 0166 40cc 0166 40cc - {a=>1,b=>57} 0139 0139 0139 4072 01390000 0139 4072 0139 4072 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>3,b=>86} 0356 0356 0356 c0ac 03560000 0356 c0ac 0356 c0ac - {a=>2,b=>116} 0274 0274 0274 80e8 02740000 0274 80e8 0274 80e8 - {a=>2,b=>29} 021d 021d 021d 803a 021d0000 021d 803a 021d 803a - {a=>3,b=>95} 035f 035f 035f c0be 035f0000 035f c0be 035f c0be - {a=>1,b=>22} 0116 0116 0116 402c 01160000 0116 402c 0116 402c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>0,a=>1,b=>74} 014a0000 014a0000 014a0000 40940000 014a0000 014a0000 40940000 014a0000 40940000 - {c=>0,a=>2,b=>114} 02720000 02720000 02720000 80e40000 02720000 02720000 80e40000 02720000 80e40000 - {c=>2,a=>3,b=>123} 037b0200 037b0200 037b0200 c0f68000 037b0200 037b0200 c0f68000 037b0200 c0f68000 - {c=>1,a=>2,b=>78} 024e0100 024e0100 024e0100 809c4000 024e0100 024e0100 809c4000 024e0100 809c4000 - {c=>1,a=>2,b=>67} 02430100 02430100 02430100 80864000 02430100 02430100 80864000 02430100 80864000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>0,a=>2,b=>89,d=>17148} 02590000fc42 02590000fc42 02590000fc42 80b2000085f8 02590000fc420000 02590000fc42 80b2000085f8 02590000fc42 80b2000085f8 - {c=>3,a=>3,b=>1,d=>7923} 03010300f31e 03010300f31e 03010300f31e c002c0003de6 03010300f31e0000 03010300f31e c002c0003de6 03010300f31e c002c0003de6 - {c=>3,a=>3,b=>36,d=>24620} 032403002c60 032403002c60 032403002c60 c048c000c058 032403002c600000 032403002c60 c048c000c058 032403002c60 c048c000c058 - {c=>1,a=>1,b=>110,d=>27219} 016e0100536a 016e0100536a 016e0100536a 40dc4000d4a6 016e0100536a0000 016e0100536a 40dc4000d4a6 016e0100536a 40dc4000d4a6 - {c=>1,a=>2,b=>119,d=>25127} 027701002762 027701002762 027701002762 80ee4000c44e 0277010027620000 027701002762 80ee4000c44e 027701002762 80ee4000c44e = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>2,a=>1,b=>55,d=>24370} 01370200325f0000 01370200325f0000 01370200325f0000 406e8000be640000 01370200325f0000 01370200325f0000 406e8000be640000 01370200325f0000 406e8000be640000 - {c=>3,a=>1,b=>76,d=>484} 014c0300e4010000 014c0300e4010000 014c0300e4010000 4098c00003c80000 014c0300e4010000 014c0300e4010000 4098c00003c80000 014c0300e4010000 4098c00003c80000 - {c=>3,a=>0,b=>72,d=>28441} 00480300196f0000 00480300196f0000 00480300196f0000 0090c000de320000 00480300196f0000 00480300196f0000 0090c000de320000 00480300196f0000 0090c000de320000 - {c=>0,a=>1,b=>4,d=>20335} 010400006f4f0000 010400006f4f0000 010400006f4f0000 400800009ede0000 010400006f4f0000 010400006f4f0000 400800009ede0000 010400006f4f0000 400800009ede0000 - {c=>1,a=>3,b=>108,d=>25748} 036c010094640000 036c010094640000 036c010094640000 c0d84000c9280000 036c010094640000 036c010094640000 c0d84000c9280000 036c010094640000 c0d84000c9280000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>2,c=>1,a=>3,b=>25,d=>14129} 031901003137000002000000 031901003137000002000000 031901003137000002000000 c03240006e62000080000000 031901003137000002000000 031901003137000002000000 c03240006e62000080000000 031901003137000002000000 c03240006e62000080000000 - {e=>2,c=>1,a=>0,b=>43,d=>29105} 002b0100b171000002000000 002b0100b171000002000000 002b0100b171000002000000 00564000e362000080000000 002b0100b171000002000000 002b0100b171000002000000 00564000e362000080000000 002b0100b171000002000000 00564000e362000080000000 - {e=>2,c=>0,a=>2,b=>27,d=>17807} 021b00008f45000002000000 021b00008f45000002000000 021b00008f45000002000000 803600008b1e000080000000 021b00008f45000002000000 021b00008f45000002000000 803600008b1e000080000000 021b00008f45000002000000 803600008b1e000080000000 - {e=>3,c=>0,a=>0,b=>93,d=>809} 005d00002903000003000000 005d00002903000003000000 005d00002903000003000000 00ba000006520000c0000000 005d00002903000003000000 005d00002903000003000000 00ba000006520000c0000000 005d00002903000003000000 00ba000006520000c0000000 - {e=>0,c=>3,a=>1,b=>44,d=>30562} 012c03006277000000000000 012c03006277000000000000 012c03006277000000000000 4058c000eec4000000000000 012c03006277000000000000 012c03006277000000000000 4058c000eec4000000000000 012c03006277000000000000 4058c000eec4000000000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>3,c=>2,a=>2,b=>10,d=>5501,f=>1254374167} 020a02007d15000003000000173bc44a 020a02007d15000003000000173bc44a 020a02007d15000003000000173bc44a 801480002afa0000c00000009588762e 020a02007d15000003000000173bc44a 020a02007d15000003000000173bc44a 801480002afa0000c00000009588762e 020a02007d15000003000000173bc44a 801480002afa0000c00000009588762e - {e=>0,c=>3,a=>3,b=>108,d=>4783,f=>549387562} 036c0300af120000000000002afdbe20 036c0300af120000000000002afdbe20 036c0300af120000000000002afdbe20 c0d8c000255e000000000000417dfa54 036c0300af120000000000002afdbe20 036c0300af120000000000002afdbe20 c0d8c000255e000000000000417dfa54 036c0300af120000000000002afdbe20 c0d8c000255e000000000000417dfa54 - {e=>2,c=>1,a=>1,b=>71,d=>5216,f=>457981324} 0147010060140000020000008c3d4c1b 0147010060140000020000008c3d4c1b 0147010060140000020000008c3d4c1b 408e400028c000008000000036987b18 0147010060140000020000008c3d4c1b 0147010060140000020000008c3d4c1b 408e400028c000008000000036987b18 0147010060140000020000008c3d4c1b 408e400028c000008000000036987b18 - {e=>0,c=>1,a=>0,b=>108,d=>3389,f=>260729659} 006c01003d0d0000000000003b6b8a0f 006c01003d0d0000000000003b6b8a0f 006c01003d0d0000000000003b6b8a0f 00d840001a7a0000000000001f14d676 006c01003d0d0000000000003b6b8a0f 006c01003d0d0000000000003b6b8a0f 00d840001a7a0000000000001f14d676 006c01003d0d0000000000003b6b8a0f 00d840001a7a0000000000001f14d676 - {e=>2,c=>3,a=>3,b=>78,d=>9795,f=>22588338} 034e03004326000002000000b2ab5801 034e03004326000002000000b2ab5801 034e03004326000002000000b2ab5801 c09cc0004c8600008000000002b15764 034e03004326000002000000b2ab5801 034e03004326000002000000b2ab5801 c09cc0004c8600008000000002b15764 034e03004326000002000000b2ab5801 c09cc0004c8600008000000002b15764 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>0,c=>0,a=>3,g=>96,b=>9,d=>3499,f=>226878349} 03090000ab0d0000000000008de3850d60000000 03090000ab0d0000000000008de3850d60000000 03090000ab0d0000000000008de3850d60000000 c01200001b560000000000001b0bc71a60000000 03090000ab0d0000000000008de3850d60000000 03090000ab0d0000000000008de3850d60000000 c01200001b560000000000001b0bc71a60000000 03090000ab0d0000000000008de3850d60000000 c01200001b560000000000001b0bc71a60000000 - {e=>2,c=>0,a=>0,g=>93,b=>30,d=>5449,f=>524944825} 001e00004915000002000000b9054a1f5d000000 001e00004915000002000000b9054a1f5d000000 001e00004915000002000000b9054a1f5d000000 003c00002a920000800000003e940b725d000000 001e00004915000002000000b9054a1f5d000000 001e00004915000002000000b9054a1f5d000000 003c00002a920000800000003e940b725d000000 001e00004915000002000000b9054a1f5d000000 003c00002a920000800000003e940b725d000000 - {e=>3,c=>2,a=>0,g=>121,b=>95,d=>26776,f=>1524019449} 005f02009868000003000000f9b0d65a79000000 005f02009868000003000000f9b0d65a79000000 005f02009868000003000000f9b0d65a79000000 00be8000d1300000c0000000b5ad61f279000000 005f02009868000003000000f9b0d65a79000000 005f02009868000003000000f9b0d65a79000000 00be8000d1300000c0000000b5ad61f279000000 005f02009868000003000000f9b0d65a79000000 00be8000d1300000c0000000b5ad61f279000000 - {e=>0,c=>1,a=>1,g=>154,b=>21,d=>23517,f=>1699556351} 01150100dd5b000000000000ff2b4d659a000000 01150100dd5b000000000000ff2b4d659a000000 01150100dd5b000000000000ff2b4d659a000000 402a4000b7ba000000000000ca9a57fe9a000000 01150100dd5b000000000000ff2b4d659a000000 01150100dd5b000000000000ff2b4d659a000000 402a4000b7ba000000000000ca9a57fe9a000000 01150100dd5b000000000000ff2b4d659a000000 402a4000b7ba000000000000ca9a57fe9a000000 - {e=>0,c=>0,a=>1,g=>149,b=>13,d=>27687,f=>223666191} 010d0000276c0000000000000fe0540d95000000 010d0000276c0000000000000fe0540d95000000 010d0000276c0000000000000fe0540d95000000 401a0000d84e0000000000001aa9c01e95000000 010d0000276c0000000000000fe0540d95000000 010d0000276c0000000000000fe0540d95000000 401a0000d84e0000000000001aa9c01e95000000 010d0000276c0000000000000fe0540d95000000 401a0000d84e0000000000001aa9c01e95000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>-93,b=>2} a302 a302 a302 a380 a3020000 a302 a380 a302 a380 - {a=>-56,b=>0} c800 c800 c800 c800 c8000000 c800 c800 c800 c800 - {a=>-79,b=>1} b101 b101 b101 b140 b1010000 b101 b140 b101 b140 - {a=>-126,b=>2} 8202 8202 8202 8280 82020000 8202 8280 8202 8280 - {a=>44,b=>0} 2c00 2c00 2c00 2c00 2c000000 2c00 2c00 2c00 2c00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>88,a=>99,b=>0} 630058 630058 630058 6300b0 63005800 630058 6300b0 630058 6300b0 - {c=>14,a=>-42,b=>3} d6030e d6030e d6030e d6c01c d6030e00 d6030e d6c01c d6030e d6c01c - {c=>110,a=>-33,b=>2} df026e df026e df026e df80dc df026e00 df026e df80dc df026e df80dc - {c=>83,a=>37,b=>3} 250353 250353 250353 25c0a6 25035300 250353 25c0a6 250353 25c0a6 - {c=>75,a=>2,b=>0} 02004b 02004b 02004b 020096 02004b00 02004b 020096 02004b 020096 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>63,a=>-71,b=>0} b9003f00 b9003f00 b9003f00 b9007e00 b9003f00 b9003f00 b9007e00 b9003f00 b9007e00 - {c=>61,a=>68,b=>0} 44003d00 44003d00 44003d00 44007a00 44003d00 44003d00 44007a00 44003d00 44007a00 - {c=>111,a=>-7,b=>1} f9016f00 f9016f00 f9016f00 f940de00 f9016f00 f9016f00 f940de00 f9016f00 f940de00 - {c=>6,a=>-14,b=>3} f2030600 f2030600 f2030600 f2c00c00 f2030600 f2030600 f2c00c00 f2030600 f2c00c00 - {c=>25,a=>42,b=>0} 2a001900 2a001900 2a001900 2a003200 2a001900 2a001900 2a003200 2a001900 2a003200 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>78,a=>-62,b=>3,d=>2} c2034e000200 c2034e000200 c2034e000200 c2c09c008000 c2034e0002000000 c2034e000200 c2c09c008000 c2034e000200 c2c09c008000 - {c=>120,a=>110,b=>1,d=>1} 6e0178000100 6e0178000100 6e0178000100 6e40f0004000 6e01780001000000 6e0178000100 6e40f0004000 6e0178000100 6e40f0004000 - {c=>125,a=>-39,b=>1,d=>2} d9017d000200 d9017d000200 d9017d000200 d940fa008000 d9017d0002000000 d9017d000200 d940fa008000 d9017d000200 d940fa008000 - {c=>49,a=>-83,b=>1,d=>3} ad0131000300 ad0131000300 ad0131000300 ad406200c000 ad01310003000000 ad0131000300 ad406200c000 ad0131000300 ad406200c000 - {c=>102,a=>-96,b=>2,d=>3} a00266000300 a00266000300 a00266000300 a080cc00c000 a002660003000000 a00266000300 a080cc00c000 a00266000300 a080cc00c000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>11659,c=>16,a=>72,b=>3,d=>2} 4803100002008b2d 4803100002008b2d 4803100002008b2d 48c0200080005b16 4803100002008b2d 4803100002008b2d 48c0200080005b16 4803100002008b2d 48c0200080005b16 - {e=>3023,c=>30,a=>121,b=>2,d=>1} 79021e000100cf0b 79021e000100cf0b 79021e000100cf0b 79803c004000179e 79021e000100cf0b 79021e000100cf0b 79803c004000179e 79021e000100cf0b 79803c004000179e - {e=>8049,c=>55,a=>-115,b=>1,d=>2} 8d0137000200711f 8d0137000200711f 8d0137000200711f 8d406e0080003ee2 8d0137000200711f 8d0137000200711f 8d406e0080003ee2 8d0137000200711f 8d406e0080003ee2 - {e=>11589,c=>80,a=>-12,b=>1,d=>1} f40150000100452d f40150000100452d f40150000100452d f440a00040005a8a f40150000100452d f40150000100452d f440a00040005a8a f40150000100452d f440a00040005a8a - {e=>1954,c=>66,a=>-32,b=>0,d=>0} e00042000000a207 e00042000000a207 e00042000000a207 e000840000000f44 e00042000000a207 e00042000000a207 e000840000000f44 e00042000000a207 e000840000000f44 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>5026,c=>9,a=>122,b=>2,d=>3} 7a0209000300a213 7a0209000300a213 7a0209000300a213 7a801200c0002744 7a0209000300a213 7a0209000300a213 7a801200c0002744 7a0209000300a213 7a801200c0002744 - {e=>31797,c=>98,a=>-83,b=>0,d=>2} ad0062000200357c ad0062000200357c ad0062000200357c ad00c4008000f86a ad0062000200357c ad0062000200357c ad00c4008000f86a ad0062000200357c ad00c4008000f86a - {e=>10931,c=>103,a=>-107,b=>2,d=>2} 950267000200b32a 950267000200b32a 950267000200b32a 9580ce0080005566 950267000200b32a 950267000200b32a 9580ce0080005566 950267000200b32a 9580ce0080005566 - {e=>6859,c=>82,a=>6,b=>1,d=>3} 060152000300cb1a 060152000300cb1a 060152000300cb1a 0640a400c0003596 060152000300cb1a 060152000300cb1a 0640a400c0003596 060152000300cb1a 0640a400c0003596 - {e=>27967,c=>53,a=>90,b=>1,d=>2} 5a01350002003f6d 5a01350002003f6d 5a01350002003f6d 5a406a008000da7e 5a01350002003f6d 5a01350002003f6d 5a406a008000da7e 5a01350002003f6d 5a406a008000da7e = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>32078,c=>33,a=>90,b=>0,d=>1,f=>1} 5a00210001004e7d01000000 5a00210001004e7d01000000 5a00210001004e7d01000000 5a0042004000fa9c40000000 5a00210001004e7d01000000 5a00210001004e7d01000000 5a0042004000fa9c40000000 5a00210001004e7d01000000 5a0042004000fa9c40000000 - {e=>30999,c=>21,a=>-47,b=>1,d=>1,f=>2} d10115000100177902000000 d10115000100177902000000 d10115000100177902000000 d1402a004000f22e80000000 d10115000100177902000000 d10115000100177902000000 d1402a004000f22e80000000 d10115000100177902000000 d1402a004000f22e80000000 - {e=>5469,c=>52,a=>117,b=>0,d=>2,f=>0} 7500340002005d1500000000 7500340002005d1500000000 7500340002005d1500000000 7500680080002aba00000000 7500340002005d1500000000 7500340002005d1500000000 7500680080002aba00000000 7500340002005d1500000000 7500680080002aba00000000 - {e=>30192,c=>87,a=>-54,b=>3,d=>3,f=>1} ca0357000300f07501000000 ca0357000300f07501000000 ca0357000300f07501000000 cac0ae00c000ebe040000000 ca0357000300f07501000000 ca0357000300f07501000000 cac0ae00c000ebe040000000 ca0357000300f07501000000 cac0ae00c000ebe040000000 - {e=>5881,c=>2,a=>23,b=>1,d=>3,f=>0} 170102000300f91600000000 170102000300f91600000000 170102000300f91600000000 17400400c0002df200000000 170102000300f91600000000 170102000300f91600000000 17400400c0002df200000000 170102000300f91600000000 17400400c0002df200000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16281,c=>25,a=>111,g=>1820714982,b=>1,d=>0,f=>0} 6f0119000000993f00000000e6e7856c 6f0119000000993f00000000e6e7856c 6f0119000000993f00000000e6e7856c 6f40320000007f3200000000d90bcfcc 6f0119000000993f00000000e6e7856c 6f0119000000993f00000000e6e7856c 6f40320000007f3200000000d90bcfcc 6f0119000000993f00000000e6e7856c 6f40320000007f3200000000d90bcfcc - {e=>6891,c=>53,a=>-40,g=>97596344,b=>2,d=>2,f=>0} d80235000200eb1a00000000b833d105 d80235000200eb1a00000000b833d105 d80235000200eb1a00000000b833d105 d8806a00800035d6000000000ba26770 d80235000200eb1a00000000b833d105 d80235000200eb1a00000000b833d105 d8806a00800035d6000000000ba26770 d80235000200eb1a00000000b833d105 d8806a00800035d6000000000ba26770 - {e=>3360,c=>31,a=>63,g=>761179706,b=>1,d=>0,f=>0} 3f011f000000200d000000003aae5e2d 3f011f000000200d000000003aae5e2d 3f011f000000200d000000003aae5e2d 3f403e0000001a40000000005abd5c74 3f011f000000200d000000003aae5e2d 3f011f000000200d000000003aae5e2d 3f403e0000001a40000000005abd5c74 3f011f000000200d000000003aae5e2d 3f403e0000001a40000000005abd5c74 - {e=>16476,c=>63,a=>-85,g=>512020589,b=>3,d=>0,f=>3} ab033f0000005c40030000006dd0841e ab033f0000005c40030000006dd0841e ab033f0000005c40030000006dd0841e abc07e00000080b8c00000003d09a0da ab033f0000005c40030000006dd0841e ab033f0000005c40030000006dd0841e abc07e00000080b8c00000003d09a0da ab033f0000005c40030000006dd0841e abc07e00000080b8c00000003d09a0da - {e=>15061,c=>102,a=>-67,g=>473075273,b=>1,d=>1,f=>0} bd0166000100d53a00000000498e321c bd0166000100d53a00000000498e321c bd0166000100d53a00000000498e321c bd40cc00400075aa0000000038651c92 bd0166000100d53a00000000498e321c bd0166000100d53a00000000498e321c bd40cc00400075aa0000000038651c92 bd0166000100d53a00000000498e321c bd40cc00400075aa0000000038651c92 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22977,a=>-2,d=>2,c=>83,h=>109,b=>1,g=>868418545,f=>3} fe0153000200c15903000000f103c3336d000000 fe0153000200c15903000000f103c3336d000000 fe0153000200c15903000000f103c3336d000000 fe40a6008000b382c0000000678607e26d000000 fe0153000200c15903000000f103c3336d000000 fe0153000200c15903000000f103c3336d000000 fe40a6008000b382c0000000678607e26d000000 fe0153000200c15903000000f103c3336d000000 fe40a6008000b382c0000000678607e26d000000 - {e=>12366,a=>-40,d=>0,c=>7,h=>103,b=>1,g=>1323876095,f=>1} d801070000004e3001000000ffbee84e67000000 d801070000004e3001000000ffbee84e67000000 d801070000004e3001000000ffbee84e67000000 d8400e000000609c400000009dd17dfe67000000 d801070000004e3001000000ffbee84e67000000 d801070000004e3001000000ffbee84e67000000 d8400e000000609c400000009dd17dfe67000000 d801070000004e3001000000ffbee84e67000000 d8400e000000609c400000009dd17dfe67000000 - {e=>28796,a=>-113,d=>1,c=>90,h=>201,b=>3,g=>1452786621,f=>3} 8f035a0001007c7003000000bdc39756c9000000 8f035a0001007c7003000000bdc39756c9000000 8f035a0001007c7003000000bdc39756c9000000 8fc0b4004000e0f8c0000000ad2f877ac9000000 8f035a0001007c7003000000bdc39756c9000000 8f035a0001007c7003000000bdc39756c9000000 8fc0b4004000e0f8c0000000ad2f877ac9000000 8f035a0001007c7003000000bdc39756c9000000 8fc0b4004000e0f8c0000000ad2f877ac9000000 - {e=>11159,a=>98,d=>2,c=>57,h=>40,b=>0,g=>1298924782,f=>1} 620039000200972b01000000ee046c4d28000000 620039000200972b01000000ee046c4d28000000 620039000200972b01000000ee046c4d28000000 620072008000572e400000009ad809dc28000000 620039000200972b01000000ee046c4d28000000 620039000200972b01000000ee046c4d28000000 620072008000572e400000009ad809dc28000000 620039000200972b01000000ee046c4d28000000 620072008000572e400000009ad809dc28000000 - {e=>2986,a=>35,d=>3,c=>121,h=>161,b=>3,g=>287355737,f=>1} 230379000300aa0b0100000059b32011a1000000 230379000300aa0b0100000059b32011a1000000 230379000300aa0b0100000059b32011a1000000 23c0f200c000175440000000224166b2a1000000 230379000300aa0b0100000059b32011a1000000 230379000300aa0b0100000059b32011a1000000 23c0f200c000175440000000224166b2a1000000 230379000300aa0b0100000059b32011a1000000 23c0f200c000175440000000224166b2a1000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>36,b=>2} 24000200 24000200 24000200 00248000 24000200 24000200 00248000 24000200 00248000 - {a=>-42,b=>0} d6ff0000 d6ff0000 d6ff0000 ffd60000 d6ff0000 d6ff0000 ffd60000 d6ff0000 ffd60000 - {a=>52,b=>2} 34000200 34000200 34000200 00348000 34000200 34000200 00348000 34000200 00348000 - {a=>52,b=>2} 34000200 34000200 34000200 00348000 34000200 34000200 00348000 34000200 00348000 - {a=>-48,b=>1} d0ff0100 d0ff0100 d0ff0100 ffd04000 d0ff0100 d0ff0100 ffd04000 d0ff0100 ffd04000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>9,a=>-31,b=>1} e1ff0109 e1ff0109 e1ff0109 ffe14012 e1ff0109 e1ff0109 ffe14012 e1ff0109 ffe14012 - {c=>116,a=>-67,b=>0} bdff0074 bdff0074 bdff0074 ffbd00e8 bdff0074 bdff0074 ffbd00e8 bdff0074 ffbd00e8 - {c=>96,a=>-109,b=>3} 93ff0360 93ff0360 93ff0360 ff93c0c0 93ff0360 93ff0360 ff93c0c0 93ff0360 ff93c0c0 - {c=>112,a=>110,b=>1} 6e000170 6e000170 6e000170 006e40e0 6e000170 6e000170 006e40e0 6e000170 006e40e0 - {c=>85,a=>-99,b=>1} 9dff0155 9dff0155 9dff0155 ff9d40aa 9dff0155 9dff0155 ff9d40aa 9dff0155 ff9d40aa = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>59,a=>-96,b=>3} a0ff033b a0ff033b a0ff033b ffa0c076 a0ff033b a0ff033b ffa0c076 a0ff033b ffa0c076 - {c=>67,a=>-103,b=>2} 99ff0243 99ff0243 99ff0243 ff998086 99ff0243 99ff0243 ff998086 99ff0243 ff998086 - {c=>92,a=>-115,b=>1} 8dff015c 8dff015c 8dff015c ff8d40b8 8dff015c 8dff015c ff8d40b8 8dff015c ff8d40b8 - {c=>64,a=>19,b=>0} 13000040 13000040 13000040 00130080 13000040 13000040 00130080 13000040 00130080 - {c=>112,a=>95,b=>0} 5f000070 5f000070 5f000070 005f00e0 5f000070 5f000070 005f00e0 5f000070 005f00e0 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>78,a=>-30,b=>0,d=>1} e2ff004e0100 e2ff004e0100 e2ff004e0100 ffe2009c4000 e2ff004e01000000 e2ff004e0100 ffe2009c4000 e2ff004e0100 ffe2009c4000 - {c=>18,a=>106,b=>3,d=>1} 6a0003120100 6a0003120100 6a0003120100 006ac0244000 6a00031201000000 6a0003120100 006ac0244000 6a0003120100 006ac0244000 - {c=>55,a=>-74,b=>1,d=>2} b6ff01370200 b6ff01370200 b6ff01370200 ffb6406e8000 b6ff013702000000 b6ff01370200 ffb6406e8000 b6ff01370200 ffb6406e8000 - {c=>73,a=>20,b=>2,d=>0} 140002490000 140002490000 140002490000 001480920000 1400024900000000 140002490000 001480920000 140002490000 001480920000 - {c=>17,a=>-82,b=>2,d=>0} aeff02110000 aeff02110000 aeff02110000 ffae80220000 aeff021100000000 aeff02110000 ffae80220000 aeff02110000 ffae80220000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>23152,c=>68,a=>35,b=>3,d=>1} 230003440100705a 230003440100705a 230003440100705a 0023c0884000b4e0 230003440100705a 230003440100705a 0023c0884000b4e0 230003440100705a 0023c0884000b4e0 - {e=>11271,c=>14,a=>65,b=>1,d=>1} 4100010e0100072c 4100010e0100072c 4100010e0100072c 0041401c4000580e 4100010e0100072c 4100010e0100072c 0041401c4000580e 4100010e0100072c 0041401c4000580e - {e=>14141,c=>13,a=>16,b=>1,d=>2} 1000010d02003d37 1000010d02003d37 1000010d02003d37 0010401a80006e7a 1000010d02003d37 1000010d02003d37 0010401a80006e7a 1000010d02003d37 0010401a80006e7a - {e=>13679,c=>79,a=>119,b=>3,d=>0} 7700034f00006f35 7700034f00006f35 7700034f00006f35 0077c09e00006ade 7700034f00006f35 7700034f00006f35 0077c09e00006ade 7700034f00006f35 0077c09e00006ade - {e=>32421,c=>57,a=>49,b=>1,d=>0} 310001390000a57e 310001390000a57e 310001390000a57e 003140720000fd4a 310001390000a57e 310001390000a57e 003140720000fd4a 310001390000a57e 003140720000fd4a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>13261,c=>104,a=>-64,b=>3,d=>2} c0ff03680200cd33 c0ff03680200cd33 c0ff03680200cd33 ffc0c0d08000679a c0ff03680200cd33 c0ff03680200cd33 ffc0c0d08000679a c0ff03680200cd33 ffc0c0d08000679a - {e=>14081,c=>16,a=>118,b=>2,d=>0} 7600021000000137 7600021000000137 7600021000000137 0076802000006e02 7600021000000137 7600021000000137 0076802000006e02 7600021000000137 0076802000006e02 - {e=>18138,c=>125,a=>-105,b=>3,d=>3} 97ff037d0300da46 97ff037d0300da46 97ff037d0300da46 ff97c0fac0008db4 97ff037d0300da46 97ff037d0300da46 ff97c0fac0008db4 97ff037d0300da46 ff97c0fac0008db4 - {e=>10748,c=>38,a=>-13,b=>0,d=>0} f3ff00260000fc29 f3ff00260000fc29 f3ff00260000fc29 fff3004c000053f8 f3ff00260000fc29 f3ff00260000fc29 fff3004c000053f8 f3ff00260000fc29 fff3004c000053f8 - {e=>2078,c=>92,a=>59,b=>0,d=>1} 3b00005c01001e08 3b00005c01001e08 3b00005c01001e08 003b00b84000103c 3b00005c01001e08 3b00005c01001e08 003b00b84000103c 3b00005c01001e08 003b00b84000103c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>7575,c=>96,a=>14,b=>1,d=>2,f=>0} 0e0001600200971d00000000 0e0001600200971d00000000 0e0001600200971d00000000 000e40c080003b2e00000000 0e0001600200971d00000000 0e0001600200971d00000000 000e40c080003b2e00000000 0e0001600200971d00000000 000e40c080003b2e00000000 - {e=>14550,c=>56,a=>-116,b=>1,d=>0,f=>0} 8cff01380000d63800000000 8cff01380000d63800000000 8cff01380000d63800000000 ff8c4070000071ac00000000 8cff01380000d63800000000 8cff01380000d63800000000 ff8c4070000071ac00000000 8cff01380000d63800000000 ff8c4070000071ac00000000 - {e=>31077,c=>102,a=>118,b=>0,d=>3,f=>0} 760000660300657900000000 760000660300657900000000 760000660300657900000000 007600ccc000f2ca00000000 760000660300657900000000 760000660300657900000000 007600ccc000f2ca00000000 760000660300657900000000 007600ccc000f2ca00000000 - {e=>14802,c=>1,a=>-81,b=>2,d=>0,f=>3} afff02010000d23903000000 afff02010000d23903000000 afff02010000d23903000000 ffaf8002000073a4c0000000 afff02010000d23903000000 afff02010000d23903000000 ffaf8002000073a4c0000000 afff02010000d23903000000 ffaf8002000073a4c0000000 - {e=>14877,c=>55,a=>26,b=>2,d=>2,f=>2} 1a00023702001d3a02000000 1a00023702001d3a02000000 1a00023702001d3a02000000 001a806e8000743a80000000 1a00023702001d3a02000000 1a00023702001d3a02000000 001a806e8000743a80000000 1a00023702001d3a02000000 001a806e8000743a80000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7844,c=>54,a=>27,g=>751275513,b=>0,d=>2,f=>1} 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c 001b006c80003d4840000000598f1bf2 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c 001b006c80003d4840000000598f1bf2 1b0000360200a41e01000000f98dc72c 001b006c80003d4840000000598f1bf2 - {e=>11268,c=>97,a=>-121,g=>109432832,b=>2,d=>3,f=>3} 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 ff8780c2c0005808c00000000d0ba000 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 ff8780c2c0005808c00000000d0ba000 87ff02610300042c0300000000d08506 ff8780c2c0005808c00000000d0ba000 - {e=>23652,c=>90,a=>107,g=>836655276,b=>1,d=>3,f=>1} 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 006b40b4c000b8c84000000063bcb158 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 006b40b4c000b8c84000000063bcb158 6b00015a0300645c01000000ac58de31 006b40b4c000b8c84000000063bcb158 - {e=>29274,c=>92,a=>101,g=>1563176679,b=>1,d=>1,f=>1} 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d 006540b84000e4b440000000ba585dce 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d 006540b84000e4b440000000ba585dce 6500015c01005a7201000000e72e2c5d 006540b84000e4b440000000ba585dce - {e=>24723,c=>105,a=>-77,g=>980506780,b=>0,d=>3,f=>2} b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a ffb300d2c000c1268000000074e2b138 b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a ffb300d2c000c1268000000074e2b138 b3ff006903009360020000009c58713a ffb300d2c000c1268000000074e2b138 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>17518,a=>-39,d=>3,c=>91,h=>162,b=>3,g=>1543066247,f=>1} d9ff035b03006e44010000008752f95ba2000000 d9ff035b03006e44010000008752f95ba2000000 d9ff035b03006e44010000008752f95ba2000000 ffd9c0b6c00088dc40000000b7f2a50ea2000000 d9ff035b03006e44010000008752f95ba2000000 d9ff035b03006e44010000008752f95ba2000000 ffd9c0b6c00088dc40000000b7f2a50ea2000000 d9ff035b03006e44010000008752f95ba2000000 ffd9c0b6c00088dc40000000b7f2a50ea2000000 - {e=>8378,a=>71,d=>1,c=>66,h=>137,b=>0,g=>834780984,f=>3} 470000420100ba200300000038bfc13189000000 470000420100ba200300000038bfc13189000000 470000420100ba200300000038bfc13189000000 0047008440004174c000000063837e7089000000 470000420100ba200300000038bfc13189000000 470000420100ba200300000038bfc13189000000 0047008440004174c000000063837e7089000000 470000420100ba200300000038bfc13189000000 0047008440004174c000000063837e7089000000 - {e=>28729,a=>-103,d=>3,c=>19,h=>150,b=>3,g=>458128972,f=>2} 99ff031303003970020000004c7e4e1b96000000 99ff031303003970020000004c7e4e1b96000000 99ff031303003970020000004c7e4e1b96000000 ff99c026c000e07280000000369cfc9896000000 99ff031303003970020000004c7e4e1b96000000 99ff031303003970020000004c7e4e1b96000000 ff99c026c000e07280000000369cfc9896000000 99ff031303003970020000004c7e4e1b96000000 ff99c026c000e07280000000369cfc9896000000 - {e=>2388,a=>86,d=>2,c=>85,h=>7,b=>2,g=>1947211790,f=>3} 5600025502005409030000000e18107407000000 5600025502005409030000000e18107407000000 5600025502005409030000000e18107407000000 005680aa800012a8c0000000e820301c07000000 5600025502005409030000000e18107407000000 5600025502005409030000000e18107407000000 005680aa800012a8c0000000e820301c07000000 5600025502005409030000000e18107407000000 005680aa800012a8c0000000e820301c07000000 - {e=>25964,a=>-72,d=>2,c=>127,h=>252,b=>3,g=>338601299,f=>3} b8ff037f02006c650300000053a52e14fc000000 b8ff037f02006c650300000053a52e14fc000000 b8ff037f02006c650300000053a52e14fc000000 ffb8c0fe8000cad8c0000000285d4aa6fc000000 b8ff037f02006c650300000053a52e14fc000000 b8ff037f02006c650300000053a52e14fc000000 ffb8c0fe8000cad8c0000000285d4aa6fc000000 b8ff037f02006c650300000053a52e14fc000000 ffb8c0fe8000cad8c0000000285d4aa6fc000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>23,b=>3} 1700000003000000 1700000003000000 1700000003000000 00000017c0000000 1700000003000000 1700000003000000 00000017c0000000 1700000003000000 00000017c0000000 - {a=>93,b=>0} 5d00000000000000 5d00000000000000 5d00000000000000 0000005d00000000 5d00000000000000 5d00000000000000 0000005d00000000 5d00000000000000 0000005d00000000 - {a=>82,b=>3} 5200000003000000 5200000003000000 5200000003000000 00000052c0000000 5200000003000000 5200000003000000 00000052c0000000 5200000003000000 00000052c0000000 - {a=>-120,b=>3} 88ffffff03000000 88ffffff03000000 88ffffff03000000 ffffff88c0000000 88ffffff03000000 88ffffff03000000 ffffff88c0000000 88ffffff03000000 ffffff88c0000000 - {a=>-6,b=>2} faffffff02000000 faffffff02000000 faffffff02000000 fffffffa80000000 faffffff02000000 faffffff02000000 fffffffa80000000 faffffff02000000 fffffffa80000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>118,a=>39,b=>1} 2700000001760000 2700000001760000 2700000001760000 0000002740ec0000 2700000001760000 2700000001760000 0000002740ec0000 2700000001760000 0000002740ec0000 - {c=>36,a=>70,b=>1} 4600000001240000 4600000001240000 4600000001240000 0000004640480000 4600000001240000 4600000001240000 0000004640480000 4600000001240000 0000004640480000 - {c=>28,a=>12,b=>1} 0c000000011c0000 0c000000011c0000 0c000000011c0000 0000000c40380000 0c000000011c0000 0c000000011c0000 0000000c40380000 0c000000011c0000 0000000c40380000 - {c=>0,a=>-92,b=>0} a4ffffff00000000 a4ffffff00000000 a4ffffff00000000 ffffffa400000000 a4ffffff00000000 a4ffffff00000000 ffffffa400000000 a4ffffff00000000 ffffffa400000000 - {c=>54,a=>84,b=>0} 5400000000360000 5400000000360000 5400000000360000 00000054006c0000 5400000000360000 5400000000360000 00000054006c0000 5400000000360000 00000054006c0000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>29,a=>0,b=>1} 00000000011d0000 00000000011d0000 00000000011d0000 00000000403a0000 00000000011d0000 00000000011d0000 00000000403a0000 00000000011d0000 00000000403a0000 - {c=>42,a=>-2,b=>3} feffffff032a0000 feffffff032a0000 feffffff032a0000 fffffffec0540000 feffffff032a0000 feffffff032a0000 fffffffec0540000 feffffff032a0000 fffffffec0540000 - {c=>79,a=>100,b=>2} 64000000024f0000 64000000024f0000 64000000024f0000 00000064809e0000 64000000024f0000 64000000024f0000 00000064809e0000 64000000024f0000 00000064809e0000 - {c=>46,a=>-76,b=>2} b4ffffff022e0000 b4ffffff022e0000 b4ffffff022e0000 ffffffb4805c0000 b4ffffff022e0000 b4ffffff022e0000 ffffffb4805c0000 b4ffffff022e0000 ffffffb4805c0000 - {c=>57,a=>13,b=>3} 0d00000003390000 0d00000003390000 0d00000003390000 0000000dc0720000 0d00000003390000 0d00000003390000 0000000dc0720000 0d00000003390000 0000000dc0720000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>42,a=>54,b=>1,d=>3} 36000000012a0300 36000000012a0300 36000000012a0300 000000364054c000 36000000012a0300 36000000012a0300 000000364054c000 36000000012a0300 000000364054c000 - {c=>23,a=>120,b=>3,d=>1} 7800000003170100 7800000003170100 7800000003170100 00000078c02e4000 7800000003170100 7800000003170100 00000078c02e4000 7800000003170100 00000078c02e4000 - {c=>65,a=>67,b=>3,d=>3} 4300000003410300 4300000003410300 4300000003410300 00000043c082c000 4300000003410300 4300000003410300 00000043c082c000 4300000003410300 00000043c082c000 - {c=>36,a=>-14,b=>0,d=>2} f2ffffff00240200 f2ffffff00240200 f2ffffff00240200 fffffff200488000 f2ffffff00240200 f2ffffff00240200 fffffff200488000 f2ffffff00240200 fffffff200488000 - {c=>6,a=>61,b=>2,d=>3} 3d00000002060300 3d00000002060300 3d00000002060300 0000003d800cc000 3d00000002060300 3d00000002060300 0000003d800cc000 3d00000002060300 0000003d800cc000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>6171,c=>80,a=>-30,b=>1,d=>0} e2ffffff015000001b180000 e2ffffff015000001b180000 e2ffffff015000001b180000 ffffffe240a0000030360000 e2ffffff015000001b180000 e2ffffff015000001b180000 ffffffe240a0000030360000 e2ffffff015000001b180000 ffffffe240a0000030360000 - {e=>13986,c=>17,a=>16,b=>2,d=>1} 1000000002110100a2360000 1000000002110100a2360000 1000000002110100a2360000 00000010802240006d440000 1000000002110100a2360000 1000000002110100a2360000 00000010802240006d440000 1000000002110100a2360000 00000010802240006d440000 - {e=>10321,c=>77,a=>-41,b=>2,d=>1} d7ffffff024d010051280000 d7ffffff024d010051280000 d7ffffff024d010051280000 ffffffd7809a400050a20000 d7ffffff024d010051280000 d7ffffff024d010051280000 ffffffd7809a400050a20000 d7ffffff024d010051280000 ffffffd7809a400050a20000 - {e=>4855,c=>52,a=>-59,b=>2,d=>2} c5ffffff02340200f7120000 c5ffffff02340200f7120000 c5ffffff02340200f7120000 ffffffc58068800025ee0000 c5ffffff02340200f7120000 c5ffffff02340200f7120000 ffffffc58068800025ee0000 c5ffffff02340200f7120000 ffffffc58068800025ee0000 - {e=>4433,c=>3,a=>-57,b=>2,d=>2} c7ffffff0203020051110000 c7ffffff0203020051110000 c7ffffff0203020051110000 ffffffc78006800022a20000 c7ffffff0203020051110000 c7ffffff0203020051110000 ffffffc78006800022a20000 c7ffffff0203020051110000 ffffffc78006800022a20000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>924,c=>33,a=>-21,b=>0,d=>1} ebffffff002101009c030000 ebffffff002101009c030000 ebffffff002101009c030000 ffffffeb0042400007380000 ebffffff002101009c030000 ebffffff002101009c030000 ffffffeb0042400007380000 ebffffff002101009c030000 ffffffeb0042400007380000 - {e=>6351,c=>54,a=>-34,b=>1,d=>0} deffffff01360000cf180000 deffffff01360000cf180000 deffffff01360000cf180000 ffffffde406c0000319e0000 deffffff01360000cf180000 deffffff01360000cf180000 ffffffde406c0000319e0000 deffffff01360000cf180000 ffffffde406c0000319e0000 - {e=>1879,c=>52,a=>35,b=>1,d=>1} 230000000134010057070000 230000000134010057070000 230000000134010057070000 00000023406840000eae0000 230000000134010057070000 230000000134010057070000 00000023406840000eae0000 230000000134010057070000 00000023406840000eae0000 - {e=>8238,c=>76,a=>32,b=>2,d=>1} 20000000024c01002e200000 20000000024c01002e200000 20000000024c01002e200000 0000002080984000405c0000 20000000024c01002e200000 20000000024c01002e200000 0000002080984000405c0000 20000000024c01002e200000 0000002080984000405c0000 - {e=>31420,c=>54,a=>0,b=>1,d=>3} 0000000001360300bc7a0000 0000000001360300bc7a0000 0000000001360300bc7a0000 00000000406cc000f5780000 0000000001360300bc7a0000 0000000001360300bc7a0000 00000000406cc000f5780000 0000000001360300bc7a0000 00000000406cc000f5780000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>26010,c=>9,a=>2,b=>3,d=>0,f=>0} 02000000030900009a65000000000000 02000000030900009a65000000000000 02000000030900009a65000000000000 00000002c0120000cb34000000000000 02000000030900009a65000000000000 02000000030900009a65000000000000 00000002c0120000cb34000000000000 02000000030900009a65000000000000 00000002c0120000cb34000000000000 - {e=>2064,c=>80,a=>-119,b=>3,d=>3,f=>3} 89ffffff035003001008000003000000 89ffffff035003001008000003000000 89ffffff035003001008000003000000 ffffff89c0a0c00010200000c0000000 89ffffff035003001008000003000000 89ffffff035003001008000003000000 ffffff89c0a0c00010200000c0000000 89ffffff035003001008000003000000 ffffff89c0a0c00010200000c0000000 - {e=>31255,c=>2,a=>-82,b=>0,d=>0,f=>2} aeffffff00020000177a000002000000 aeffffff00020000177a000002000000 aeffffff00020000177a000002000000 ffffffae00040000f42e000080000000 aeffffff00020000177a000002000000 aeffffff00020000177a000002000000 ffffffae00040000f42e000080000000 aeffffff00020000177a000002000000 ffffffae00040000f42e000080000000 - {e=>3569,c=>113,a=>86,b=>2,d=>2,f=>1} 5600000002710200f10d000001000000 5600000002710200f10d000001000000 5600000002710200f10d000001000000 0000005680e280001be2000040000000 5600000002710200f10d000001000000 5600000002710200f10d000001000000 0000005680e280001be2000040000000 5600000002710200f10d000001000000 0000005680e280001be2000040000000 - {e=>17551,c=>23,a=>-128,b=>1,d=>3,f=>3} 80ffffff011703008f44000003000000 80ffffff011703008f44000003000000 80ffffff011703008f44000003000000 ffffff80402ec000891e0000c0000000 80ffffff011703008f44000003000000 80ffffff011703008f44000003000000 ffffff80402ec000891e0000c0000000 80ffffff011703008f44000003000000 ffffff80402ec000891e0000c0000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>22897,c=>67,a=>93,g=>236819416,b=>2,d=>0,f=>0} 5d000000024300007159000000000000d8931d0e 5d000000024300007159000000000000d8931d0e 5d000000024300007159000000000000d8931d0e 0000005d80860000b2e20000000000001c3b27b0 5d000000024300007159000000000000d8931d0e 5d000000024300007159000000000000d8931d0e 0000005d80860000b2e20000000000001c3b27b0 5d000000024300007159000000000000d8931d0e 0000005d80860000b2e20000000000001c3b27b0 - {e=>31111,c=>74,a=>119,g=>1459711425,b=>2,d=>1,f=>3} 77000000024a01008779000003000000c16d0157 77000000024a01008779000003000000c16d0157 77000000024a01008779000003000000c16d0157 0000007780944000f30e0000c0000000ae02db82 77000000024a01008779000003000000c16d0157 77000000024a01008779000003000000c16d0157 0000007780944000f30e0000c0000000ae02db82 77000000024a01008779000003000000c16d0157 0000007780944000f30e0000c0000000ae02db82 - {e=>13989,c=>102,a=>70,g=>1058309672,b=>3,d=>0,f=>2} 4600000003660000a5360000020000002886143f 4600000003660000a5360000020000002886143f 4600000003660000a5360000020000002886143f 00000046c0cc00006d4a0000800000007e290c50 4600000003660000a5360000020000002886143f 4600000003660000a5360000020000002886143f 00000046c0cc00006d4a0000800000007e290c50 4600000003660000a5360000020000002886143f 00000046c0cc00006d4a0000800000007e290c50 - {e=>26791,c=>57,a=>7,g=>1365065929,b=>1,d=>2,f=>1} 0700000001390200a768000001000000c9405d51 0700000001390200a768000001000000c9405d51 0700000001390200a768000001000000c9405d51 0000000740728000d14e000040000000a2ba8192 0700000001390200a768000001000000c9405d51 0700000001390200a768000001000000c9405d51 0000000740728000d14e000040000000a2ba8192 0700000001390200a768000001000000c9405d51 0000000740728000d14e000040000000a2ba8192 - {e=>6858,c=>70,a=>-7,g=>1686921269,b=>3,d=>3,f=>1} f9ffffff03460300ca1a00000100000035608c64 f9ffffff03460300ca1a00000100000035608c64 f9ffffff03460300ca1a00000100000035608c64 fffffff9c08cc0003594000040000000c918c06a f9ffffff03460300ca1a00000100000035608c64 f9ffffff03460300ca1a00000100000035608c64 fffffff9c08cc0003594000040000000c918c06a f9ffffff03460300ca1a00000100000035608c64 fffffff9c08cc0003594000040000000c918c06a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>32326,a=>82,d=>2,c=>71,h=>163,b=>1,g=>1658102310,f=>1} 5200000001470200467e00000100000026a2d462a3000000 5200000001470200467e00000100000026a2d462a3000000 5200000001470200467e00000100000026a2d462a3000000 00000052408e8000fc8c000040000000c5a9444ca3000000 5200000001470200467e00000100000026a2d462a3000000 5200000001470200467e00000100000026a2d462a3000000 00000052408e8000fc8c000040000000c5a9444ca3000000 5200000001470200467e00000100000026a2d462a3000000 00000052408e8000fc8c000040000000c5a9444ca3000000 - {e=>6558,a=>54,d=>0,c=>114,h=>224,b=>0,g=>240808537,f=>1} 36000000007200009e1900000100000059725a0ee0000000 36000000007200009e1900000100000059725a0ee0000000 36000000007200009e1900000100000059725a0ee0000000 0000003600e40000333c0000400000001cb4e4b2e0000000 36000000007200009e1900000100000059725a0ee0000000 36000000007200009e1900000100000059725a0ee0000000 0000003600e40000333c0000400000001cb4e4b2e0000000 36000000007200009e1900000100000059725a0ee0000000 0000003600e40000333c0000400000001cb4e4b2e0000000 - {e=>7128,a=>-105,d=>3,c=>78,h=>139,b=>2,g=>1841705631,f=>2} 97ffffff024e0300d81b0000020000009f32c66d8b000000 97ffffff024e0300d81b0000020000009f32c66d8b000000 97ffffff024e0300d81b0000020000009f32c66d8b000000 ffffff97809cc00037b0000080000000db8c653e8b000000 97ffffff024e0300d81b0000020000009f32c66d8b000000 97ffffff024e0300d81b0000020000009f32c66d8b000000 ffffff97809cc00037b0000080000000db8c653e8b000000 97ffffff024e0300d81b0000020000009f32c66d8b000000 ffffff97809cc00037b0000080000000db8c653e8b000000 - {e=>30661,a=>87,d=>2,c=>117,h=>158,b=>1,g=>176849329,f=>1} 5700000001750200c577000001000000b1818a0a9e000000 5700000001750200c577000001000000b1818a0a9e000000 5700000001750200c577000001000000b1818a0a9e000000 0000005740ea8000ef8a000040000000151503629e000000 5700000001750200c577000001000000b1818a0a9e000000 5700000001750200c577000001000000b1818a0a9e000000 0000005740ea8000ef8a000040000000151503629e000000 5700000001750200c577000001000000b1818a0a9e000000 0000005740ea8000ef8a000040000000151503629e000000 - {e=>20458,a=>-35,d=>3,c=>6,h=>255,b=>3,g=>1305982333,f=>0} ddffffff03060300ea4f0000000000007db5d74dff000000 ddffffff03060300ea4f0000000000007db5d74dff000000 ddffffff03060300ea4f0000000000007db5d74dff000000 ffffffddc00cc0009fd40000000000009baf6afaff000000 ddffffff03060300ea4f0000000000007db5d74dff000000 ddffffff03060300ea4f0000000000007db5d74dff000000 ffffffddc00cc0009fd40000000000009baf6afaff000000 ddffffff03060300ea4f0000000000007db5d74dff000000 ffffffddc00cc0009fd40000000000009baf6afaff000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>-94,b=>3} a2ffffff03000000 a2ffffffffffffff0300000000000000 a2ffffffffffffff0300000000000000 ffffffa2c0000000 a2ffffff03000000 a2ffffff03000000 ffffffffffffffa2c000000000000000 a2ffffff03000000 ffffffa2c0000000 - {a=>-70,b=>3} baffffff03000000 baffffffffffffff0300000000000000 baffffffffffffff0300000000000000 ffffffbac0000000 baffffff03000000 baffffff03000000 ffffffffffffffbac000000000000000 baffffff03000000 ffffffbac0000000 - {a=>-56,b=>0} c8ffffff00000000 c8ffffffffffffff0000000000000000 c8ffffffffffffff0000000000000000 ffffffc800000000 c8ffffff00000000 c8ffffff00000000 ffffffffffffffc80000000000000000 c8ffffff00000000 ffffffc800000000 - {a=>42,b=>1} 2a00000001000000 2a000000000000000100000000000000 2a000000000000000100000000000000 0000002a40000000 2a00000001000000 2a00000001000000 000000000000002a4000000000000000 2a00000001000000 0000002a40000000 - {a=>80,b=>0} 5000000000000000 50000000000000000000000000000000 50000000000000000000000000000000 0000005000000000 5000000000000000 5000000000000000 00000000000000500000000000000000 5000000000000000 0000005000000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>70,a=>33,b=>2} 2100000002460000 21000000000000000246000000000000 21000000000000000246000000000000 00000021808c0000 2100000002460000 2100000002460000 0000000000000021808c000000000000 2100000002460000 00000021808c0000 - {c=>99,a=>28,b=>2} 1c00000002630000 1c000000000000000263000000000000 1c000000000000000263000000000000 0000001c80c60000 1c00000002630000 1c00000002630000 000000000000001c80c6000000000000 1c00000002630000 0000001c80c60000 - {c=>31,a=>-81,b=>3} afffffff031f0000 afffffffffffffff031f000000000000 afffffffffffffff031f000000000000 ffffffafc03e0000 afffffff031f0000 afffffff031f0000 ffffffffffffffafc03e000000000000 afffffff031f0000 ffffffafc03e0000 - {c=>60,a=>50,b=>1} 32000000013c0000 3200000000000000013c000000000000 3200000000000000013c000000000000 0000003240780000 32000000013c0000 32000000013c0000 00000000000000324078000000000000 32000000013c0000 0000003240780000 - {c=>63,a=>-105,b=>3} 97ffffff033f0000 97ffffffffffffff033f000000000000 97ffffffffffffff033f000000000000 ffffff97c07e0000 97ffffff033f0000 97ffffff033f0000 ffffffffffffff97c07e000000000000 97ffffff033f0000 ffffff97c07e0000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>48,a=>-2,b=>1} feffffff01300000 feffffffffffffff0130000000000000 feffffffffffffff0130000000000000 fffffffe40600000 feffffff01300000 feffffff01300000 fffffffffffffffe4060000000000000 feffffff01300000 fffffffe40600000 - {c=>12,a=>35,b=>1} 23000000010c0000 2300000000000000010c000000000000 2300000000000000010c000000000000 0000002340180000 23000000010c0000 23000000010c0000 00000000000000234018000000000000 23000000010c0000 0000002340180000 - {c=>66,a=>83,b=>0} 5300000000420000 53000000000000000042000000000000 53000000000000000042000000000000 0000005300840000 5300000000420000 5300000000420000 00000000000000530084000000000000 5300000000420000 0000005300840000 - {c=>88,a=>9,b=>0} 0900000000580000 09000000000000000058000000000000 09000000000000000058000000000000 0000000900b00000 0900000000580000 0900000000580000 000000000000000900b0000000000000 0900000000580000 0000000900b00000 - {c=>96,a=>41,b=>1} 2900000001600000 29000000000000000160000000000000 29000000000000000160000000000000 0000002940c00000 2900000001600000 2900000001600000 000000000000002940c0000000000000 2900000001600000 0000002940c00000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>116,a=>-52,b=>3,d=>2} ccffffff03740200 ccffffffffffffff0374020000000000 ccffffffffffffff0374020000000000 ffffffccc0e88000 ccffffff03740200 ccffffff03740200 ffffffffffffffccc0e8800000000000 ccffffff03740200 ffffffccc0e88000 - {c=>2,a=>-30,b=>3,d=>2} e2ffffff03020200 e2ffffffffffffff0302020000000000 e2ffffffffffffff0302020000000000 ffffffe2c0048000 e2ffffff03020200 e2ffffff03020200 ffffffffffffffe2c004800000000000 e2ffffff03020200 ffffffe2c0048000 - {c=>22,a=>31,b=>3,d=>2} 1f00000003160200 1f000000000000000316020000000000 1f000000000000000316020000000000 0000001fc02c8000 1f00000003160200 1f00000003160200 000000000000001fc02c800000000000 1f00000003160200 0000001fc02c8000 - {c=>103,a=>99,b=>1,d=>1} 6300000001670100 63000000000000000167010000000000 63000000000000000167010000000000 0000006340ce4000 6300000001670100 6300000001670100 000000000000006340ce400000000000 6300000001670100 0000006340ce4000 - {c=>110,a=>-15,b=>0,d=>3} f1ffffff006e0300 f1ffffffffffffff006e030000000000 f1ffffffffffffff006e030000000000 fffffff100dcc000 f1ffffff006e0300 f1ffffff006e0300 fffffffffffffff100dcc00000000000 f1ffffff006e0300 fffffff100dcc000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>13673,c=>84,a=>122,b=>1,d=>3} 7a0000000154030069350000 7a000000000000000154030069350000 7a000000000000000154030069350000 0000007a40a8c0006ad20000 7a0000000154030069350000 7a0000000154030069350000 000000000000007a40a8c0006ad20000 7a0000000154030069350000 0000007a40a8c0006ad20000 - {e=>31547,c=>111,a=>-80,b=>1,d=>0} b0ffffff016f00003b7b0000 b0ffffffffffffff016f00003b7b0000 b0ffffffffffffff016f00003b7b0000 ffffffb040de0000f6760000 b0ffffff016f00003b7b0000 b0ffffff016f00003b7b0000 ffffffffffffffb040de0000f6760000 b0ffffff016f00003b7b0000 ffffffb040de0000f6760000 - {e=>19845,c=>63,a=>77,b=>1,d=>3} 4d000000013f0300854d0000 4d00000000000000013f0300854d0000 4d00000000000000013f0300854d0000 0000004d407ec0009b0a0000 4d000000013f0300854d0000 4d000000013f0300854d0000 000000000000004d407ec0009b0a0000 4d000000013f0300854d0000 0000004d407ec0009b0a0000 - {e=>6913,c=>104,a=>127,b=>2,d=>1} 7f00000002680100011b0000 7f0000000000000002680100011b0000 7f0000000000000002680100011b0000 0000007f80d0400036020000 7f00000002680100011b0000 7f00000002680100011b0000 000000000000007f80d0400036020000 7f00000002680100011b0000 0000007f80d0400036020000 - {e=>16426,c=>0,a=>57,b=>1,d=>0} 39000000010000002a400000 3900000000000000010000002a400000 3900000000000000010000002a400000 000000394000000080540000 39000000010000002a400000 39000000010000002a400000 00000000000000394000000080540000 39000000010000002a400000 000000394000000080540000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>30485,c=>17,a=>-61,b=>1,d=>2} c3ffffff0111020015770000 c3ffffffffffffff0111020015770000 c3ffffffffffffff0111020015770000 ffffffc340228000ee2a0000 c3ffffff0111020015770000 c3ffffff0111020015770000 ffffffffffffffc340228000ee2a0000 c3ffffff0111020015770000 ffffffc340228000ee2a0000 - {e=>4491,c=>69,a=>-114,b=>1,d=>3} 8effffff014503008b110000 8effffffffffffff014503008b110000 8effffffffffffff014503008b110000 ffffff8e408ac00023160000 8effffff014503008b110000 8effffff014503008b110000 ffffffffffffff8e408ac00023160000 8effffff014503008b110000 ffffff8e408ac00023160000 - {e=>1064,c=>91,a=>-67,b=>0,d=>0} bdffffff005b000028040000 bdffffffffffffff005b000028040000 bdffffffffffffff005b000028040000 ffffffbd00b6000008500000 bdffffff005b000028040000 bdffffff005b000028040000 ffffffffffffffbd00b6000008500000 bdffffff005b000028040000 ffffffbd00b6000008500000 - {e=>26263,c=>40,a=>2,b=>2,d=>1} 020000000228010097660000 02000000000000000228010097660000 02000000000000000228010097660000 0000000280504000cd2e0000 020000000228010097660000 020000000228010097660000 000000000000000280504000cd2e0000 020000000228010097660000 0000000280504000cd2e0000 - {e=>1533,c=>107,a=>-62,b=>3,d=>3} c2ffffff036b0300fd050000 c2ffffffffffffff036b0300fd050000 c2ffffffffffffff036b0300fd050000 ffffffc2c0d6c0000bfa0000 c2ffffff036b0300fd050000 c2ffffff036b0300fd050000 ffffffffffffffc2c0d6c0000bfa0000 c2ffffff036b0300fd050000 ffffffc2c0d6c0000bfa0000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>6622,c=>119,a=>103,b=>2,d=>1,f=>3} 6700000002770100de19000003000000 670000000000000002770100de1900000300000000000000 670000000000000002770100de1900000300000000000000 0000006780ee400033bc0000c0000000 6700000002770100de19000003000000 6700000002770100de19000003000000 000000000000006780ee400033bc0000c000000000000000 6700000002770100de19000003000000 0000006780ee400033bc0000c0000000 - {e=>7645,c=>92,a=>55,b=>0,d=>1,f=>3} 37000000005c0100dd1d000003000000 3700000000000000005c0100dd1d00000300000000000000 3700000000000000005c0100dd1d00000300000000000000 0000003700b840003bba0000c0000000 37000000005c0100dd1d000003000000 37000000005c0100dd1d000003000000 000000000000003700b840003bba0000c000000000000000 37000000005c0100dd1d000003000000 0000003700b840003bba0000c0000000 - {e=>23069,c=>56,a=>60,b=>3,d=>0,f=>2} 3c000000033800001d5a000002000000 3c00000000000000033800001d5a00000200000000000000 3c00000000000000033800001d5a00000200000000000000 0000003cc0700000b43a000080000000 3c000000033800001d5a000002000000 3c000000033800001d5a000002000000 000000000000003cc0700000b43a00008000000000000000 3c000000033800001d5a000002000000 0000003cc0700000b43a000080000000 - {e=>27949,c=>1,a=>-7,b=>2,d=>3,f=>3} f9ffffff020103002d6d000003000000 f9ffffffffffffff020103002d6d00000300000000000000 f9ffffffffffffff020103002d6d00000300000000000000 fffffff98002c000da5a0000c0000000 f9ffffff020103002d6d000003000000 f9ffffff020103002d6d000003000000 fffffffffffffff98002c000da5a0000c000000000000000 f9ffffff020103002d6d000003000000 fffffff98002c000da5a0000c0000000 - {e=>11648,c=>90,a=>72,b=>2,d=>3,f=>1} 48000000025a0300802d000001000000 4800000000000000025a0300802d00000100000000000000 4800000000000000025a0300802d00000100000000000000 0000004880b4c0005b00000040000000 48000000025a0300802d000001000000 48000000025a0300802d000001000000 000000000000004880b4c0005b0000004000000000000000 48000000025a0300802d000001000000 0000004880b4c0005b00000040000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>20058,c=>21,a=>-54,g=>527765798,b=>2,d=>1,f=>2} caffffff021501005a4e0000020000002611751f caffffffffffffff021501005a4e0000020000002611751f caffffffffffffff021501005a4e0000020000002611751f ffffffca802a40009cb40000800000003eea224c caffffff021501005a4e0000020000002611751f caffffff021501005a4e0000020000002611751f ffffffffffffffca802a40009cb40000800000003eea224c caffffff021501005a4e0000020000002611751f ffffffca802a40009cb40000800000003eea224c - {e=>31782,c=>68,a=>19,g=>946001649,b=>3,d=>0,f=>3} 1300000003440000267c000003000000f1d66238 130000000000000003440000267c000003000000f1d66238 130000000000000003440000267c000003000000f1d66238 00000013c0880000f84c0000c000000070c5ade2 1300000003440000267c000003000000f1d66238 1300000003440000267c000003000000f1d66238 0000000000000013c0880000f84c0000c000000070c5ade2 1300000003440000267c000003000000f1d66238 00000013c0880000f84c0000c000000070c5ade2 - {e=>7380,c=>37,a=>-52,g=>464958575,b=>2,d=>3,f=>1} ccffffff02250300d41c0000010000006fb4b61b ccffffffffffffff02250300d41c0000010000006fb4b61b ccffffffffffffff02250300d41c0000010000006fb4b61b ffffffcc804ac00039a8000040000000376d68de ccffffff02250300d41c0000010000006fb4b61b ccffffff02250300d41c0000010000006fb4b61b ffffffffffffffcc804ac00039a8000040000000376d68de ccffffff02250300d41c0000010000006fb4b61b ffffffcc804ac00039a8000040000000376d68de - {e=>21112,c=>42,a=>42,g=>906361925,b=>1,d=>0,f=>2} 2a000000012a0000785200000200000045fc0536 2a00000000000000012a0000785200000200000045fc0536 2a00000000000000012a0000785200000200000045fc0536 0000002a40540000a4f00000800000006c0bf88a 2a000000012a0000785200000200000045fc0536 2a000000012a0000785200000200000045fc0536 000000000000002a40540000a4f00000800000006c0bf88a 2a000000012a0000785200000200000045fc0536 0000002a40540000a4f00000800000006c0bf88a - {e=>30855,c=>1,a=>53,g=>1190588411,b=>0,d=>0,f=>1} 35000000000100008778000001000000fbeff646 3500000000000000000100008778000001000000fbeff646 3500000000000000000100008778000001000000fbeff646 0000003500020000f10e0000400000008deddff6 35000000000100008778000001000000fbeff646 35000000000100008778000001000000fbeff646 000000000000003500020000f10e0000400000008deddff6 35000000000100008778000001000000fbeff646 0000003500020000f10e0000400000008deddff6 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>12949,a=>112,d=>2,c=>46,h=>27,b=>1,g=>348067209,f=>0} 70000000012e020095320000000000008915bf141b000000 7000000000000000012e020095320000000000008915bf141b00000000000000 7000000000000000012e020095320000000000008915bf141b00000000000000 00000070405c8000652a000000000000297e2b121b000000 70000000012e020095320000000000008915bf141b000000 70000000012e020095320000000000008915bf141b000000 0000000000000070405c8000652a000000000000297e2b121b00000000000000 70000000012e020095320000000000008915bf141b000000 00000070405c8000652a000000000000297e2b121b000000 - {e=>12614,a=>-75,d=>0,c=>88,h=>124,b=>2,g=>2115801870,f=>3} b5ffffff0258000046310000030000000e931c7e7c000000 b5ffffffffffffff0258000046310000030000000e931c7e7c00000000000000 b5ffffffffffffff0258000046310000030000000e931c7e7c00000000000000 ffffffb580b00000628c0000c0000000fc39261c7c000000 b5ffffff0258000046310000030000000e931c7e7c000000 b5ffffff0258000046310000030000000e931c7e7c000000 ffffffffffffffb580b00000628c0000c0000000fc39261c7c00000000000000 b5ffffff0258000046310000030000000e931c7e7c000000 ffffffb580b00000628c0000c0000000fc39261c7c000000 - {e=>22026,a=>-26,d=>1,c=>44,h=>122,b=>2,g=>1176974089,f=>1} e6ffffff022c01000a56000001000000093327467a000000 e6ffffffffffffff022c01000a56000001000000093327467a00000000000000 e6ffffffffffffff022c01000a56000001000000093327467a00000000000000 ffffffe680584000ac140000400000008c4e66127a000000 e6ffffff022c01000a56000001000000093327467a000000 e6ffffff022c01000a56000001000000093327467a000000 ffffffffffffffe680584000ac140000400000008c4e66127a00000000000000 e6ffffff022c01000a56000001000000093327467a000000 ffffffe680584000ac140000400000008c4e66127a000000 - {e=>23544,a=>64,d=>3,c=>24,h=>65,b=>3,g=>598810224,f=>3} 4000000003180300f85b000003000000701eb12341000000 400000000000000003180300f85b000003000000701eb1234100000000000000 400000000000000003180300f85b000003000000701eb1234100000000000000 00000040c030c000b7f00000c000000047623ce041000000 4000000003180300f85b000003000000701eb12341000000 4000000003180300f85b000003000000701eb12341000000 0000000000000040c030c000b7f00000c000000047623ce04100000000000000 4000000003180300f85b000003000000701eb12341000000 00000040c030c000b7f00000c000000047623ce041000000 - {e=>30624,a=>65,d=>0,c=>53,h=>114,b=>1,g=>378284213,f=>2} 4100000001350000a077000002000000b5288c1672000000 410000000000000001350000a077000002000000b5288c167200000000000000 410000000000000001350000a077000002000000b5288c167200000000000000 00000041406a0000ef400000800000002d18516a72000000 4100000001350000a077000002000000b5288c1672000000 4100000001350000a077000002000000b5288c1672000000 0000000000000041406a0000ef400000800000002d18516a7200000000000000 4100000001350000a077000002000000b5288c1672000000 00000041406a0000ef400000800000002d18516a72000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>1} 01 01 01 40 01000000 01 40 01 40 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>1,b=>60} 013c 013c 013c 4078 013c0000 013c 4078 013c 4078 - {a=>3,b=>93} 035d 035d 035d c0ba 035d0000 035d c0ba 035d c0ba - {a=>3,b=>13} 030d 030d 030d c01a 030d0000 030d c01a 030d c01a - {a=>0,b=>66} 0042 0042 0042 0084 00420000 0042 0084 0042 0084 - {a=>0,b=>56} 0038 0038 0038 0070 00380000 0038 0070 0038 0070 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>2,b=>26} 021a 021a 021a 8034 021a0000 021a 8034 021a 8034 - {a=>1,b=>51} 0133 0133 0133 4066 01330000 0133 4066 0133 4066 - {a=>0,b=>90} 005a 005a 005a 00b4 005a0000 005a 00b4 005a 00b4 - {a=>0,b=>63} 003f 003f 003f 007e 003f0000 003f 007e 003f 007e - {a=>3,b=>46} 032e 032e 032e c05c 032e0000 032e c05c 032e c05c = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>0,a=>3,b=>10} 030a0000 030a0000 030a0000 c0140000 030a0000 030a0000 c0140000 030a0000 c0140000 - {c=>2,a=>1,b=>22} 01160200 01160200 01160200 402c8000 01160200 01160200 402c8000 01160200 402c8000 - {c=>2,a=>3,b=>21} 03150200 03150200 03150200 c02a8000 03150200 03150200 c02a8000 03150200 c02a8000 - {c=>3,a=>1,b=>40} 01280300 01280300 01280300 4050c000 01280300 01280300 4050c000 01280300 4050c000 - {c=>3,a=>2,b=>35} 02230300 02230300 02230300 8046c000 02230300 02230300 8046c000 02230300 8046c000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>1,a=>3,b=>106,d=>4863} 036a0100ff12 036a0100ff12 036a0100ff12 c0d4400025fe 036a0100ff120000 036a0100ff12 c0d4400025fe 036a0100ff12 c0d4400025fe - {c=>2,a=>3,b=>103,d=>15834} 03670200da3d 03670200da3d 03670200da3d c0ce80007bb4 03670200da3d0000 03670200da3d c0ce80007bb4 03670200da3d c0ce80007bb4 - {c=>2,a=>0,b=>63,d=>15070} 003f0200de3a 003f0200de3a 003f0200de3a 007e800075bc 003f0200de3a0000 003f0200de3a 007e800075bc 003f0200de3a 007e800075bc - {c=>2,a=>3,b=>122,d=>25867} 037a02000b65 037a02000b65 037a02000b65 c0f48000ca16 037a02000b650000 037a02000b65 c0f48000ca16 037a02000b65 c0f48000ca16 - {c=>3,a=>3,b=>3,d=>19726} 030303000e4d 030303000e4d 030303000e4d c006c0009a1c 030303000e4d0000 030303000e4d c006c0009a1c 030303000e4d c006c0009a1c = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>3,a=>2,b=>61,d=>16632} 023d0300f8400000 023d0300f8400000 023d0300f8400000 807ac00081f00000 023d0300f8400000 023d0300f8400000 807ac00081f00000 023d0300f8400000 807ac00081f00000 - {c=>3,a=>2,b=>27,d=>3303} 021b0300e70c0000 021b0300e70c0000 021b0300e70c0000 8036c00019ce0000 021b0300e70c0000 021b0300e70c0000 8036c00019ce0000 021b0300e70c0000 8036c00019ce0000 - {c=>3,a=>0,b=>104,d=>32422} 00680300a67e0000 00680300a67e0000 00680300a67e0000 00d0c000fd4c0000 00680300a67e0000 00680300a67e0000 00d0c000fd4c0000 00680300a67e0000 00d0c000fd4c0000 - {c=>2,a=>2,b=>11,d=>4097} 020b020001100000 020b020001100000 020b020001100000 8016800020020000 020b020001100000 020b020001100000 8016800020020000 020b020001100000 8016800020020000 - {c=>0,a=>2,b=>22,d=>2075} 021600001b080000 021600001b080000 021600001b080000 802c000010360000 021600001b080000 021600001b080000 802c000010360000 021600001b080000 802c000010360000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>3,c=>2,a=>3,b=>70,d=>22538} 034602000a58000003000000 034602000a58000003000000 034602000a58000003000000 c08c8000b0140000c0000000 034602000a58000003000000 034602000a58000003000000 c08c8000b0140000c0000000 034602000a58000003000000 c08c8000b0140000c0000000 - {e=>1,c=>0,a=>2,b=>126,d=>20675} 027e0000c350000001000000 027e0000c350000001000000 027e0000c350000001000000 80fc0000a186000040000000 027e0000c350000001000000 027e0000c350000001000000 80fc0000a186000040000000 027e0000c350000001000000 80fc0000a186000040000000 - {e=>2,c=>0,a=>1,b=>97,d=>22568} 016100002858000002000000 016100002858000002000000 016100002858000002000000 40c20000b050000080000000 016100002858000002000000 016100002858000002000000 40c20000b050000080000000 016100002858000002000000 40c20000b050000080000000 - {e=>2,c=>0,a=>3,b=>84,d=>1178} 035400009a04000002000000 035400009a04000002000000 035400009a04000002000000 c0a800000934000080000000 035400009a04000002000000 035400009a04000002000000 c0a800000934000080000000 035400009a04000002000000 c0a800000934000080000000 - {e=>0,c=>3,a=>0,b=>125,d=>500} 007d0300f401000000000000 007d0300f401000000000000 007d0300f401000000000000 00fac00003e8000000000000 007d0300f401000000000000 007d0300f401000000000000 00fac00003e8000000000000 007d0300f401000000000000 00fac00003e8000000000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>3,c=>3,a=>1,b=>44,d=>24620,f=>1808311042} 012c03002c6000000300000002a3c86b 012c03002c6000000300000002a3c86b 012c03002c6000000300000002a3c86b 4058c000c0580000c0000000d7914604 012c03002c6000000300000002a3c86b 012c03002c6000000300000002a3c86b 4058c000c0580000c0000000d7914604 012c03002c6000000300000002a3c86b 4058c000c0580000c0000000d7914604 - {e=>1,c=>2,a=>1,b=>25,d=>25227,f=>801958710} 011902008b6200000100000036ebcc2f 011902008b6200000100000036ebcc2f 011902008b6200000100000036ebcc2f 40328000c5160000400000005f99d66c 011902008b6200000100000036ebcc2f 011902008b6200000100000036ebcc2f 40328000c5160000400000005f99d66c 011902008b6200000100000036ebcc2f 40328000c5160000400000005f99d66c - {e=>1,c=>3,a=>3,b=>101,d=>18705,f=>1451666857} 036503001149000001000000a9ad8656 036503001149000001000000a9ad8656 036503001149000001000000a9ad8656 c0cac0009222000040000000ad0d5b52 036503001149000001000000a9ad8656 036503001149000001000000a9ad8656 c0cac0009222000040000000ad0d5b52 036503001149000001000000a9ad8656 c0cac0009222000040000000ad0d5b52 - {e=>0,c=>1,a=>3,b=>11,d=>27785,f=>1658211394} 030b0100896c000000000000424cd662 030b0100896c000000000000424cd662 030b0100896c000000000000424cd662 c0164000d912000000000000c5ac9884 030b0100896c000000000000424cd662 030b0100896c000000000000424cd662 c0164000d912000000000000c5ac9884 030b0100896c000000000000424cd662 c0164000d912000000000000c5ac9884 - {e=>2,c=>3,a=>2,b=>99,d=>30270,f=>922018987} 026303003e76000002000000abe4f436 026303003e76000002000000abe4f436 026303003e76000002000000abe4f436 80c6c000ec7c0000800000006de9c956 026303003e76000002000000abe4f436 026303003e76000002000000abe4f436 80c6c000ec7c0000800000006de9c956 026303003e76000002000000abe4f436 80c6c000ec7c0000800000006de9c956 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>2,c=>1,a=>3,g=>159,b=>94,d=>10039,f=>410307155} 035e0100372700000200000053ca74189f000000 035e0100372700000200000053ca74189f000000 035e0100372700000200000053ca74189f000000 c0bc40004e6e00008000000030e994a69f000000 035e0100372700000200000053ca74189f000000 035e0100372700000200000053ca74189f000000 c0bc40004e6e00008000000030e994a69f000000 035e0100372700000200000053ca74189f000000 c0bc40004e6e00008000000030e994a69f000000 - {e=>2,c=>1,a=>2,g=>50,b=>106,d=>11247,f=>668484590} 026a0100ef2b000002000000ee43d82732000000 026a0100ef2b000002000000ee43d82732000000 026a0100ef2b000002000000ee43d82732000000 80d4400057de0000800000004fb087dc32000000 026a0100ef2b000002000000ee43d82732000000 026a0100ef2b000002000000ee43d82732000000 80d4400057de0000800000004fb087dc32000000 026a0100ef2b000002000000ee43d82732000000 80d4400057de0000800000004fb087dc32000000 - {e=>0,c=>0,a=>3,g=>181,b=>49,d=>12908,f=>38446332} 033100006c32000000000000fca44a02b5000000 033100006c32000000000000fca44a02b5000000 033100006c32000000000000fca44a02b5000000 c062000064d8000000000000049549f8b5000000 033100006c32000000000000fca44a02b5000000 033100006c32000000000000fca44a02b5000000 c062000064d8000000000000049549f8b5000000 033100006c32000000000000fca44a02b5000000 c062000064d8000000000000049549f8b5000000 - {e=>0,c=>2,a=>0,g=>106,b=>119,d=>27698,f=>1629435493} 00770200326c00000000000065361f616a000000 00770200326c00000000000065361f616a000000 00770200326c00000000000065361f616a000000 00ee8000d864000000000000c23e6cca6a000000 00770200326c00000000000065361f616a000000 00770200326c00000000000065361f616a000000 00ee8000d864000000000000c23e6cca6a000000 00770200326c00000000000065361f616a000000 00ee8000d864000000000000c23e6cca6a000000 - {e=>3,c=>2,a=>3,g=>36,b=>28,d=>17585,f=>1462750237} 031c0200b1440000030000001dcc2f5724000000 031c0200b1440000030000001dcc2f5724000000 031c0200b1440000030000001dcc2f5724000000 c038800089620000c0000000ae5f983a24000000 031c0200b1440000030000001dcc2f5724000000 031c0200b1440000030000001dcc2f5724000000 c038800089620000c0000000ae5f983a24000000 031c0200b1440000030000001dcc2f5724000000 c038800089620000c0000000ae5f983a24000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>97,b=>0} 6100 6100 6100 6100 61000000 6100 6100 6100 6100 - {a=>-113,b=>1} 8f01 8f01 8f01 8f40 8f010000 8f01 8f40 8f01 8f40 - {a=>97,b=>1} 6101 6101 6101 6140 61010000 6101 6140 6101 6140 - {a=>43,b=>0} 2b00 2b00 2b00 2b00 2b000000 2b00 2b00 2b00 2b00 - {a=>8,b=>2} 0802 0802 0802 0880 08020000 0802 0880 0802 0880 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>121,a=>95,b=>1} 5f0179 5f0179 5f0179 5f40f2 5f017900 5f0179 5f40f2 5f0179 5f40f2 - {c=>47,a=>-39,b=>1} d9012f d9012f d9012f d9405e d9012f00 d9012f d9405e d9012f d9405e - {c=>126,a=>-116,b=>3} 8c037e 8c037e 8c037e 8cc0fc 8c037e00 8c037e 8cc0fc 8c037e 8cc0fc - {c=>60,a=>-8,b=>3} f8033c f8033c f8033c f8c078 f8033c00 f8033c f8c078 f8033c f8c078 - {c=>50,a=>-3,b=>3} fd0332 fd0332 fd0332 fdc064 fd033200 fd0332 fdc064 fd0332 fdc064 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>91,a=>-79,b=>2} b1025b00 b1025b00 b1025b00 b180b600 b1025b00 b1025b00 b180b600 b1025b00 b180b600 - {c=>51,a=>-12,b=>1} f4013300 f4013300 f4013300 f4406600 f4013300 f4013300 f4406600 f4013300 f4406600 - {c=>113,a=>104,b=>2} 68027100 68027100 68027100 6880e200 68027100 68027100 6880e200 68027100 6880e200 - {c=>40,a=>105,b=>3} 69032800 69032800 69032800 69c05000 69032800 69032800 69c05000 69032800 69c05000 - {c=>3,a=>-77,b=>3} b3030300 b3030300 b3030300 b3c00600 b3030300 b3030300 b3c00600 b3030300 b3c00600 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>80,a=>-57,b=>1,d=>2} c70150000200 c70150000200 c70150000200 c740a0008000 c701500002000000 c70150000200 c740a0008000 c70150000200 c740a0008000 - {c=>73,a=>13,b=>2,d=>0} 0d0249000000 0d0249000000 0d0249000000 0d8092000000 0d02490000000000 0d0249000000 0d8092000000 0d0249000000 0d8092000000 - {c=>36,a=>-29,b=>0,d=>0} e30024000000 e30024000000 e30024000000 e30048000000 e300240000000000 e30024000000 e30048000000 e30024000000 e30048000000 - {c=>123,a=>-35,b=>1,d=>3} dd017b000300 dd017b000300 dd017b000300 dd40f600c000 dd017b0003000000 dd017b000300 dd40f600c000 dd017b000300 dd40f600c000 - {c=>124,a=>10,b=>3,d=>0} 0a037c000000 0a037c000000 0a037c000000 0ac0f8000000 0a037c0000000000 0a037c000000 0ac0f8000000 0a037c000000 0ac0f8000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>28834,c=>110,a=>-15,b=>3,d=>3} f1036e000300a270 f1036e000300a270 f1036e000300a270 f1c0dc00c000e144 f1036e000300a270 f1036e000300a270 f1c0dc00c000e144 f1036e000300a270 f1c0dc00c000e144 - {e=>1691,c=>38,a=>110,b=>1,d=>3} 6e01260003009b06 6e01260003009b06 6e01260003009b06 6e404c00c0000d36 6e01260003009b06 6e01260003009b06 6e404c00c0000d36 6e01260003009b06 6e404c00c0000d36 - {e=>28902,c=>77,a=>121,b=>0,d=>0} 79004d000000e670 79004d000000e670 79004d000000e670 79009a000000e1cc 79004d000000e670 79004d000000e670 79009a000000e1cc 79004d000000e670 79009a000000e1cc - {e=>5288,c=>45,a=>70,b=>1,d=>3} 46012d000300a814 46012d000300a814 46012d000300a814 46405a00c0002950 46012d000300a814 46012d000300a814 46405a00c0002950 46012d000300a814 46405a00c0002950 - {e=>5983,c=>60,a=>35,b=>2,d=>1} 23023c0001005f17 23023c0001005f17 23023c0001005f17 2380780040002ebe 23023c0001005f17 23023c0001005f17 2380780040002ebe 23023c0001005f17 2380780040002ebe = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>22747,c=>99,a=>17,b=>0,d=>3} 110063000300db58 110063000300db58 110063000300db58 1100c600c000b1b6 110063000300db58 110063000300db58 1100c600c000b1b6 110063000300db58 1100c600c000b1b6 - {e=>8890,c=>116,a=>111,b=>3,d=>0} 6f0374000000ba22 6f0374000000ba22 6f0374000000ba22 6fc0e80000004574 6f0374000000ba22 6f0374000000ba22 6fc0e80000004574 6f0374000000ba22 6fc0e80000004574 - {e=>26859,c=>36,a=>-47,b=>3,d=>0} d10324000000eb68 d10324000000eb68 d10324000000eb68 d1c048000000d1d6 d10324000000eb68 d10324000000eb68 d1c048000000d1d6 d10324000000eb68 d1c048000000d1d6 - {e=>4561,c=>1,a=>-82,b=>1,d=>2} ae0101000200d111 ae0101000200d111 ae0101000200d111 ae400200800023a2 ae0101000200d111 ae0101000200d111 ae400200800023a2 ae0101000200d111 ae400200800023a2 - {e=>862,c=>125,a=>22,b=>1,d=>3} 16017d0003005e03 16017d0003005e03 16017d0003005e03 1640fa00c00006bc 16017d0003005e03 16017d0003005e03 1640fa00c00006bc 16017d0003005e03 1640fa00c00006bc = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>7083,c=>105,a=>101,b=>1,d=>1,f=>1} 650169000100ab1b01000000 650169000100ab1b01000000 650169000100ab1b01000000 6540d2004000375640000000 650169000100ab1b01000000 650169000100ab1b01000000 6540d2004000375640000000 650169000100ab1b01000000 6540d2004000375640000000 - {e=>26777,c=>7,a=>85,b=>2,d=>2,f=>0} 550207000200996800000000 550207000200996800000000 550207000200996800000000 55800e008000d13200000000 550207000200996800000000 550207000200996800000000 55800e008000d13200000000 550207000200996800000000 55800e008000d13200000000 - {e=>2370,c=>62,a=>-56,b=>3,d=>0,f=>0} c8033e000000420900000000 c8033e000000420900000000 c8033e000000420900000000 c8c07c000000128400000000 c8033e000000420900000000 c8033e000000420900000000 c8c07c000000128400000000 c8033e000000420900000000 c8c07c000000128400000000 - {e=>17701,c=>23,a=>112,b=>0,d=>2,f=>0} 700017000200254500000000 700017000200254500000000 700017000200254500000000 70002e0080008a4a00000000 700017000200254500000000 700017000200254500000000 70002e0080008a4a00000000 700017000200254500000000 70002e0080008a4a00000000 - {e=>7327,c=>107,a=>105,b=>0,d=>1,f=>1} 69006b0001009f1c01000000 69006b0001009f1c01000000 69006b0001009f1c01000000 6900d6004000393e40000000 69006b0001009f1c01000000 69006b0001009f1c01000000 6900d6004000393e40000000 69006b0001009f1c01000000 6900d6004000393e40000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>25941,c=>65,a=>-78,g=>738858833,b=>0,d=>1,f=>3} b2004100010055650300000051170a2c b2004100010055650300000051170a2c b2004100010055650300000051170a2c b20082004000caaac000000058142ea2 b2004100010055650300000051170a2c b2004100010055650300000051170a2c b20082004000caaac000000058142ea2 b2004100010055650300000051170a2c b20082004000caaac000000058142ea2 - {e=>16369,c=>84,a=>23,g=>253726160,b=>2,d=>3,f=>0} 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f 1780a800c0007fe2000000001e3f1ba0 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f 1780a800c0007fe2000000001e3f1ba0 170254000300f13f00000000d08d1f0f 1780a800c0007fe2000000001e3f1ba0 - {e=>20549,c=>68,a=>-90,g=>1840050508,b=>0,d=>3,f=>2} a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d a6008800c000a08a80000000db59e298 a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d a6008800c000a08a80000000db59e298 a600440003004550020000004cf1ac6d a6008800c000a08a80000000db59e298 - {e=>4229,c=>122,a=>68,g=>163350911,b=>3,d=>1,f=>3} 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 44c0f4004000210ac0000000137912fe 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 44c0f4004000210ac0000000137912fe 44037a0001008510030000007f89bc09 44c0f4004000210ac0000000137912fe - {e=>2131,c=>18,a=>-48,g=>1460988621,b=>3,d=>3,f=>1} d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 d0c02400c00010a640000000ae29d59a d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 d0c02400c00010a640000000ae29d59a d00312000300530801000000cdea1457 d0c02400c00010a640000000ae29d59a = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>28672,a=>-38,d=>3,c=>3,h=>230,b=>0,g=>1572591659,f=>3} da00030003000070030000002bd8bb5de6000000 da00030003000070030000002bd8bb5de6000000 da00030003000070030000002bd8bb5de6000000 da000600c000e000c0000000bb77b056e6000000 da00030003000070030000002bd8bb5de6000000 da00030003000070030000002bd8bb5de6000000 da000600c000e000c0000000bb77b056e6000000 da00030003000070030000002bd8bb5de6000000 da000600c000e000c0000000bb77b056e6000000 - {e=>21420,a=>6,d=>3,c=>126,h=>29,b=>1,g=>1987843785,f=>2} 06017e000300ac5302000000c9167c761d000000 06017e000300ac5302000000c9167c761d000000 06017e000300ac5302000000c9167c761d000000 0640fc00c000a75880000000ecf82d921d000000 06017e000300ac5302000000c9167c761d000000 06017e000300ac5302000000c9167c761d000000 0640fc00c000a75880000000ecf82d921d000000 06017e000300ac5302000000c9167c761d000000 0640fc00c000a75880000000ecf82d921d000000 - {e=>24974,a=>83,d=>3,c=>26,h=>197,b=>0,g=>375167546,f=>0} 53001a0003008e61000000003a9a5c16c5000000 53001a0003008e61000000003a9a5c16c5000000 53001a0003008e61000000003a9a5c16c5000000 53003400c000c31c000000002cb93474c5000000 53001a0003008e61000000003a9a5c16c5000000 53001a0003008e61000000003a9a5c16c5000000 53003400c000c31c000000002cb93474c5000000 53001a0003008e61000000003a9a5c16c5000000 53003400c000c31c000000002cb93474c5000000 - {e=>10987,a=>91,d=>0,c=>96,h=>171,b=>1,g=>1441248927,f=>3} 5b0160000000eb2a030000009fb6e755ab000000 5b0160000000eb2a030000009fb6e755ab000000 5b0160000000eb2a030000009fb6e755ab000000 5b40c000000055d6c0000000abcf6d3eab000000 5b0160000000eb2a030000009fb6e755ab000000 5b0160000000eb2a030000009fb6e755ab000000 5b40c000000055d6c0000000abcf6d3eab000000 5b0160000000eb2a030000009fb6e755ab000000 5b40c000000055d6c0000000abcf6d3eab000000 - {e=>7107,a=>62,d=>3,c=>84,h=>49,b=>0,g=>1539603978,f=>0} 3e0054000300c31b000000000a7ec45b31000000 3e0054000300c31b000000000a7ec45b31000000 3e0054000300c31b000000000a7ec45b31000000 3e00a800c000378600000000b788fc1431000000 3e0054000300c31b000000000a7ec45b31000000 3e0054000300c31b000000000a7ec45b31000000 3e00a800c000378600000000b788fc1431000000 3e0054000300c31b000000000a7ec45b31000000 3e00a800c000378600000000b788fc1431000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>-78,b=>1} b2ff0100 b2ff0100 b2ff0100 ffb24000 b2ff0100 b2ff0100 ffb24000 b2ff0100 ffb24000 - {a=>-18,b=>2} eeff0200 eeff0200 eeff0200 ffee8000 eeff0200 eeff0200 ffee8000 eeff0200 ffee8000 - {a=>3,b=>3} 03000300 03000300 03000300 0003c000 03000300 03000300 0003c000 03000300 0003c000 - {a=>-8,b=>0} f8ff0000 f8ff0000 f8ff0000 fff80000 f8ff0000 f8ff0000 fff80000 f8ff0000 fff80000 - {a=>114,b=>1} 72000100 72000100 72000100 00724000 72000100 72000100 00724000 72000100 00724000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>46,a=>40,b=>3} 2800032e 2800032e 2800032e 0028c05c 2800032e 2800032e 0028c05c 2800032e 0028c05c - {c=>26,a=>116,b=>1} 7400011a 7400011a 7400011a 00744034 7400011a 7400011a 00744034 7400011a 00744034 - {c=>116,a=>-66,b=>3} beff0374 beff0374 beff0374 ffbec0e8 beff0374 beff0374 ffbec0e8 beff0374 ffbec0e8 - {c=>45,a=>-35,b=>2} ddff022d ddff022d ddff022d ffdd805a ddff022d ddff022d ffdd805a ddff022d ffdd805a - {c=>30,a=>75,b=>3} 4b00031e 4b00031e 4b00031e 004bc03c 4b00031e 4b00031e 004bc03c 4b00031e 004bc03c = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>51,a=>56,b=>2} 38000233 38000233 38000233 00388066 38000233 38000233 00388066 38000233 00388066 - {c=>76,a=>38,b=>0} 2600004c 2600004c 2600004c 00260098 2600004c 2600004c 00260098 2600004c 00260098 - {c=>31,a=>-74,b=>3} b6ff031f b6ff031f b6ff031f ffb6c03e b6ff031f b6ff031f ffb6c03e b6ff031f ffb6c03e - {c=>95,a=>53,b=>0} 3500005f 3500005f 3500005f 003500be 3500005f 3500005f 003500be 3500005f 003500be - {c=>65,a=>-118,b=>2} 8aff0241 8aff0241 8aff0241 ff8a8082 8aff0241 8aff0241 ff8a8082 8aff0241 ff8a8082 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>104,a=>-99,b=>1,d=>3} 9dff01680300 9dff01680300 9dff01680300 ff9d40d0c000 9dff016803000000 9dff01680300 ff9d40d0c000 9dff01680300 ff9d40d0c000 - {c=>113,a=>-77,b=>0,d=>3} b3ff00710300 b3ff00710300 b3ff00710300 ffb300e2c000 b3ff007103000000 b3ff00710300 ffb300e2c000 b3ff00710300 ffb300e2c000 - {c=>38,a=>119,b=>1,d=>3} 770001260300 770001260300 770001260300 0077404cc000 7700012603000000 770001260300 0077404cc000 770001260300 0077404cc000 - {c=>120,a=>-5,b=>0,d=>0} fbff00780000 fbff00780000 fbff00780000 fffb00f00000 fbff007800000000 fbff00780000 fffb00f00000 fbff00780000 fffb00f00000 - {c=>94,a=>-19,b=>3,d=>2} edff035e0200 edff035e0200 edff035e0200 ffedc0bc8000 edff035e02000000 edff035e0200 ffedc0bc8000 edff035e0200 ffedc0bc8000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>9932,c=>43,a=>-80,b=>2,d=>3} b0ff022b0300cc26 b0ff022b0300cc26 b0ff022b0300cc26 ffb08056c0004d98 b0ff022b0300cc26 b0ff022b0300cc26 ffb08056c0004d98 b0ff022b0300cc26 ffb08056c0004d98 - {e=>30764,c=>117,a=>-54,b=>0,d=>2} caff007502002c78 caff007502002c78 caff007502002c78 ffca00ea8000f058 caff007502002c78 caff007502002c78 ffca00ea8000f058 caff007502002c78 ffca00ea8000f058 - {e=>13093,c=>118,a=>118,b=>3,d=>0} 7600037600002533 7600037600002533 7600037600002533 0076c0ec0000664a 7600037600002533 7600037600002533 0076c0ec0000664a 7600037600002533 0076c0ec0000664a - {e=>20007,c=>75,a=>-56,b=>3,d=>2} c8ff034b0200274e c8ff034b0200274e c8ff034b0200274e ffc8c09680009c4e c8ff034b0200274e c8ff034b0200274e ffc8c09680009c4e c8ff034b0200274e ffc8c09680009c4e - {e=>29692,c=>120,a=>45,b=>1,d=>3} 2d0001780300fc73 2d0001780300fc73 2d0001780300fc73 002d40f0c000e7f8 2d0001780300fc73 2d0001780300fc73 002d40f0c000e7f8 2d0001780300fc73 002d40f0c000e7f8 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>1707,c=>51,a=>-92,b=>2,d=>0} a4ff02330000ab06 a4ff02330000ab06 a4ff02330000ab06 ffa4806600000d56 a4ff02330000ab06 a4ff02330000ab06 ffa4806600000d56 a4ff02330000ab06 ffa4806600000d56 - {e=>22195,c=>16,a=>-106,b=>0,d=>3} 96ff00100300b356 96ff00100300b356 96ff00100300b356 ff960020c000ad66 96ff00100300b356 96ff00100300b356 ff960020c000ad66 96ff00100300b356 ff960020c000ad66 - {e=>26092,c=>101,a=>-52,b=>3,d=>0} ccff03650000ec65 ccff03650000ec65 ccff03650000ec65 ffccc0ca0000cbd8 ccff03650000ec65 ccff03650000ec65 ffccc0ca0000cbd8 ccff03650000ec65 ffccc0ca0000cbd8 - {e=>10767,c=>23,a=>120,b=>3,d=>0} 7800031700000f2a 7800031700000f2a 7800031700000f2a 0078c02e0000541e 7800031700000f2a 7800031700000f2a 0078c02e0000541e 7800031700000f2a 0078c02e0000541e - {e=>22371,c=>42,a=>97,b=>0,d=>3} 6100002a03006357 6100002a03006357 6100002a03006357 00610054c000aec6 6100002a03006357 6100002a03006357 00610054c000aec6 6100002a03006357 00610054c000aec6 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>5426,c=>73,a=>107,b=>1,d=>2,f=>3} 6b0001490200321503000000 6b0001490200321503000000 6b0001490200321503000000 006b409280002a64c0000000 6b0001490200321503000000 6b0001490200321503000000 006b409280002a64c0000000 6b0001490200321503000000 006b409280002a64c0000000 - {e=>25684,c=>82,a=>-99,b=>3,d=>2,f=>1} 9dff03520200546401000000 9dff03520200546401000000 9dff03520200546401000000 ff9dc0a48000c8a840000000 9dff03520200546401000000 9dff03520200546401000000 ff9dc0a48000c8a840000000 9dff03520200546401000000 ff9dc0a48000c8a840000000 - {e=>5420,c=>23,a=>75,b=>2,d=>1,f=>0} 4b00021701002c1500000000 4b00021701002c1500000000 4b00021701002c1500000000 004b802e40002a5800000000 4b00021701002c1500000000 4b00021701002c1500000000 004b802e40002a5800000000 4b00021701002c1500000000 004b802e40002a5800000000 - {e=>2354,c=>11,a=>-63,b=>0,d=>1,f=>3} c1ff000b0100320903000000 c1ff000b0100320903000000 c1ff000b0100320903000000 ffc1001640001264c0000000 c1ff000b0100320903000000 c1ff000b0100320903000000 ffc1001640001264c0000000 c1ff000b0100320903000000 ffc1001640001264c0000000 - {e=>14868,c=>64,a=>-6,b=>1,d=>3,f=>0} faff01400300143a00000000 faff01400300143a00000000 faff01400300143a00000000 fffa4080c000742800000000 faff01400300143a00000000 faff01400300143a00000000 fffa4080c000742800000000 faff01400300143a00000000 fffa4080c000742800000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7432,c=>46,a=>-97,g=>1876506977,b=>1,d=>2,f=>0} 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f ff9f405c80003a1000000000dfb272c2 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f ff9f405c80003a1000000000dfb272c2 9fff012e0200081d000000006139d96f ff9f405c80003a1000000000dfb272c2 - {e=>19949,c=>124,a=>32,g=>396727791,b=>2,d=>1,f=>2} 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 002080f840009bda800000002f4b2bde 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 002080f840009bda800000002f4b2bde 2000027c0100ed4d02000000ef95a517 002080f840009bda800000002f4b2bde - {e=>1774,c=>10,a=>110,g=>861455959,b=>0,d=>3,f=>3} 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 006e0014c0000ddcc000000066b18cae 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 006e0014c0000ddcc000000066b18cae 6e00000a0300ee060300000057c65833 006e0014c0000ddcc000000066b18cae - {e=>17159,c=>124,a=>-113,g=>2079899019,b=>2,d=>3,f=>0} 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b ff8f80f8c000860e00000000f7f17b16 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b ff8f80f8c000860e00000000f7f17b16 8fff027c03000743000000008bbdf87b ff8f80f8c000860e00000000f7f17b16 - {e=>30127,c=>49,a=>-70,g=>1975146991,b=>0,d=>0,f=>3} baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 ffba00620000eb5ec0000000eb74b3de baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 ffba00620000eb5ec0000000eb74b3de baff00310000af7503000000ef59ba75 ffba00620000eb5ec0000000eb74b3de = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>3,a=>85,d=>1,c=>69,h=>236,b=>0,g=>486067682,f=>2} 550000450100030002000000e2cdf81cec000000 550000450100030002000000e2cdf81cec000000 550000450100030002000000e2cdf81cec000000 0055008a400000068000000039f19bc4ec000000 550000450100030002000000e2cdf81cec000000 550000450100030002000000e2cdf81cec000000 0055008a400000068000000039f19bc4ec000000 550000450100030002000000e2cdf81cec000000 0055008a400000068000000039f19bc4ec000000 - {e=>30273,a=>-71,d=>3,c=>51,h=>105,b=>2,g=>1361574005,f=>3} b9ff0233030041760300000075f8275169000000 b9ff0233030041760300000075f8275169000000 b9ff0233030041760300000075f8275169000000 ffb98066c000ec82c0000000a24ff0ea69000000 b9ff0233030041760300000075f8275169000000 b9ff0233030041760300000075f8275169000000 ffb98066c000ec82c0000000a24ff0ea69000000 b9ff0233030041760300000075f8275169000000 ffb98066c000ec82c0000000a24ff0ea69000000 - {e=>25503,a=>-67,d=>3,c=>19,h=>175,b=>1,g=>190963807,f=>1} bdff011303009f63010000005fe0610baf000000 bdff011303009f63010000005fe0610baf000000 bdff011303009f63010000005fe0610baf000000 ffbd4026c000c73e4000000016c3c0beaf000000 bdff011303009f63010000005fe0610baf000000 bdff011303009f63010000005fe0610baf000000 ffbd4026c000c73e4000000016c3c0beaf000000 bdff011303009f63010000005fe0610baf000000 ffbd4026c000c73e4000000016c3c0beaf000000 - {e=>18177,a=>-30,d=>1,c=>47,h=>200,b=>1,g=>976748818,f=>3} e2ff012f01000147030000001201383ac8000000 e2ff012f01000147030000001201383ac8000000 e2ff012f01000147030000001201383ac8000000 ffe2405e40008e02c000000074700224c8000000 e2ff012f01000147030000001201383ac8000000 e2ff012f01000147030000001201383ac8000000 ffe2405e40008e02c000000074700224c8000000 e2ff012f01000147030000001201383ac8000000 ffe2405e40008e02c000000074700224c8000000 - {e=>29900,a=>97,d=>1,c=>20,h=>124,b=>0,g=>261624382,f=>3} 610000140100cc74030000003e12980f7c000000 610000140100cc74030000003e12980f7c000000 610000140100cc74030000003e12980f7c000000 006100284000e998c00000001f30247c7c000000 610000140100cc74030000003e12980f7c000000 610000140100cc74030000003e12980f7c000000 006100284000e998c00000001f30247c7c000000 610000140100cc74030000003e12980f7c000000 006100284000e998c00000001f30247c7c000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>-90,b=>3} a6ffffff03000000 a6ffffff03000000 a6ffffff03000000 ffffffa6c0000000 a6ffffff03000000 a6ffffff03000000 ffffffa6c0000000 a6ffffff03000000 ffffffa6c0000000 - {a=>41,b=>1} 2900000001000000 2900000001000000 2900000001000000 0000002940000000 2900000001000000 2900000001000000 0000002940000000 2900000001000000 0000002940000000 - {a=>-89,b=>0} a7ffffff00000000 a7ffffff00000000 a7ffffff00000000 ffffffa700000000 a7ffffff00000000 a7ffffff00000000 ffffffa700000000 a7ffffff00000000 ffffffa700000000 - {a=>96,b=>0} 6000000000000000 6000000000000000 6000000000000000 0000006000000000 6000000000000000 6000000000000000 0000006000000000 6000000000000000 0000006000000000 - {a=>-20,b=>3} ecffffff03000000 ecffffff03000000 ecffffff03000000 ffffffecc0000000 ecffffff03000000 ecffffff03000000 ffffffecc0000000 ecffffff03000000 ffffffecc0000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>30,a=>-27,b=>1} e5ffffff011e0000 e5ffffff011e0000 e5ffffff011e0000 ffffffe5403c0000 e5ffffff011e0000 e5ffffff011e0000 ffffffe5403c0000 e5ffffff011e0000 ffffffe5403c0000 - {c=>124,a=>-69,b=>0} bbffffff007c0000 bbffffff007c0000 bbffffff007c0000 ffffffbb00f80000 bbffffff007c0000 bbffffff007c0000 ffffffbb00f80000 bbffffff007c0000 ffffffbb00f80000 - {c=>28,a=>-28,b=>0} e4ffffff001c0000 e4ffffff001c0000 e4ffffff001c0000 ffffffe400380000 e4ffffff001c0000 e4ffffff001c0000 ffffffe400380000 e4ffffff001c0000 ffffffe400380000 - {c=>99,a=>50,b=>0} 3200000000630000 3200000000630000 3200000000630000 0000003200c60000 3200000000630000 3200000000630000 0000003200c60000 3200000000630000 0000003200c60000 - {c=>63,a=>-67,b=>3} bdffffff033f0000 bdffffff033f0000 bdffffff033f0000 ffffffbdc07e0000 bdffffff033f0000 bdffffff033f0000 ffffffbdc07e0000 bdffffff033f0000 ffffffbdc07e0000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>26,a=>-54,b=>2} caffffff021a0000 caffffff021a0000 caffffff021a0000 ffffffca80340000 caffffff021a0000 caffffff021a0000 ffffffca80340000 caffffff021a0000 ffffffca80340000 - {c=>38,a=>126,b=>2} 7e00000002260000 7e00000002260000 7e00000002260000 0000007e804c0000 7e00000002260000 7e00000002260000 0000007e804c0000 7e00000002260000 0000007e804c0000 - {c=>107,a=>-7,b=>0} f9ffffff006b0000 f9ffffff006b0000 f9ffffff006b0000 fffffff900d60000 f9ffffff006b0000 f9ffffff006b0000 fffffff900d60000 f9ffffff006b0000 fffffff900d60000 - {c=>13,a=>98,b=>3} 62000000030d0000 62000000030d0000 62000000030d0000 00000062c01a0000 62000000030d0000 62000000030d0000 00000062c01a0000 62000000030d0000 00000062c01a0000 - {c=>97,a=>84,b=>2} 5400000002610000 5400000002610000 5400000002610000 0000005480c20000 5400000002610000 5400000002610000 0000005480c20000 5400000002610000 0000005480c20000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>110,a=>-46,b=>1,d=>2} d2ffffff016e0200 d2ffffff016e0200 d2ffffff016e0200 ffffffd240dc8000 d2ffffff016e0200 d2ffffff016e0200 ffffffd240dc8000 d2ffffff016e0200 ffffffd240dc8000 - {c=>99,a=>-7,b=>1,d=>1} f9ffffff01630100 f9ffffff01630100 f9ffffff01630100 fffffff940c64000 f9ffffff01630100 f9ffffff01630100 fffffff940c64000 f9ffffff01630100 fffffff940c64000 - {c=>88,a=>-1,b=>1,d=>2} ffffffff01580200 ffffffff01580200 ffffffff01580200 ffffffff40b08000 ffffffff01580200 ffffffff01580200 ffffffff40b08000 ffffffff01580200 ffffffff40b08000 - {c=>65,a=>-40,b=>0,d=>2} d8ffffff00410200 d8ffffff00410200 d8ffffff00410200 ffffffd800828000 d8ffffff00410200 d8ffffff00410200 ffffffd800828000 d8ffffff00410200 ffffffd800828000 - {c=>59,a=>-76,b=>0,d=>0} b4ffffff003b0000 b4ffffff003b0000 b4ffffff003b0000 ffffffb400760000 b4ffffff003b0000 b4ffffff003b0000 ffffffb400760000 b4ffffff003b0000 ffffffb400760000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>32442,c=>51,a=>3,b=>0,d=>0} 0300000000330000ba7e0000 0300000000330000ba7e0000 0300000000330000ba7e0000 0000000300660000fd740000 0300000000330000ba7e0000 0300000000330000ba7e0000 0000000300660000fd740000 0300000000330000ba7e0000 0000000300660000fd740000 - {e=>9995,c=>67,a=>48,b=>2,d=>2} 30000000024302000b270000 30000000024302000b270000 30000000024302000b270000 00000030808680004e160000 30000000024302000b270000 30000000024302000b270000 00000030808680004e160000 30000000024302000b270000 00000030808680004e160000 - {e=>29590,c=>74,a=>75,b=>0,d=>2} 4b000000004a020096730000 4b000000004a020096730000 4b000000004a020096730000 0000004b00948000e72c0000 4b000000004a020096730000 4b000000004a020096730000 0000004b00948000e72c0000 4b000000004a020096730000 0000004b00948000e72c0000 - {e=>31156,c=>54,a=>-49,b=>1,d=>3} cfffffff01360300b4790000 cfffffff01360300b4790000 cfffffff01360300b4790000 ffffffcf406cc000f3680000 cfffffff01360300b4790000 cfffffff01360300b4790000 ffffffcf406cc000f3680000 cfffffff01360300b4790000 ffffffcf406cc000f3680000 - {e=>29653,c=>12,a=>-35,b=>3,d=>0} ddffffff030c0000d5730000 ddffffff030c0000d5730000 ddffffff030c0000d5730000 ffffffddc0180000e7aa0000 ddffffff030c0000d5730000 ddffffff030c0000d5730000 ffffffddc0180000e7aa0000 ddffffff030c0000d5730000 ffffffddc0180000e7aa0000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>29970,c=>42,a=>-35,b=>0,d=>2} ddffffff002a020012750000 ddffffff002a020012750000 ddffffff002a020012750000 ffffffdd00548000ea240000 ddffffff002a020012750000 ddffffff002a020012750000 ffffffdd00548000ea240000 ddffffff002a020012750000 ffffffdd00548000ea240000 - {e=>5805,c=>46,a=>15,b=>0,d=>0} 0f000000002e0000ad160000 0f000000002e0000ad160000 0f000000002e0000ad160000 0000000f005c00002d5a0000 0f000000002e0000ad160000 0f000000002e0000ad160000 0000000f005c00002d5a0000 0f000000002e0000ad160000 0000000f005c00002d5a0000 - {e=>32451,c=>91,a=>82,b=>3,d=>1} 52000000035b0100c37e0000 52000000035b0100c37e0000 52000000035b0100c37e0000 00000052c0b64000fd860000 52000000035b0100c37e0000 52000000035b0100c37e0000 00000052c0b64000fd860000 52000000035b0100c37e0000 00000052c0b64000fd860000 - {e=>4579,c=>50,a=>-33,b=>2,d=>1} dfffffff02320100e3110000 dfffffff02320100e3110000 dfffffff02320100e3110000 ffffffdf8064400023c60000 dfffffff02320100e3110000 dfffffff02320100e3110000 ffffffdf8064400023c60000 dfffffff02320100e3110000 ffffffdf8064400023c60000 - {e=>21164,c=>115,a=>-64,b=>0,d=>2} c0ffffff00730200ac520000 c0ffffff00730200ac520000 c0ffffff00730200ac520000 ffffffc000e68000a5580000 c0ffffff00730200ac520000 c0ffffff00730200ac520000 ffffffc000e68000a5580000 c0ffffff00730200ac520000 ffffffc000e68000a5580000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>23029,c=>127,a=>-67,b=>1,d=>3,f=>0} bdffffff017f0300f559000000000000 bdffffff017f0300f559000000000000 bdffffff017f0300f559000000000000 ffffffbd40fec000b3ea000000000000 bdffffff017f0300f559000000000000 bdffffff017f0300f559000000000000 ffffffbd40fec000b3ea000000000000 bdffffff017f0300f559000000000000 ffffffbd40fec000b3ea000000000000 - {e=>16590,c=>24,a=>-103,b=>2,d=>3,f=>0} 99ffffff02180300ce40000000000000 99ffffff02180300ce40000000000000 99ffffff02180300ce40000000000000 ffffff998030c000819c000000000000 99ffffff02180300ce40000000000000 99ffffff02180300ce40000000000000 ffffff998030c000819c000000000000 99ffffff02180300ce40000000000000 ffffff998030c000819c000000000000 - {e=>6342,c=>83,a=>-124,b=>3,d=>2,f=>3} 84ffffff03530200c618000003000000 84ffffff03530200c618000003000000 84ffffff03530200c618000003000000 ffffff84c0a68000318c0000c0000000 84ffffff03530200c618000003000000 84ffffff03530200c618000003000000 ffffff84c0a68000318c0000c0000000 84ffffff03530200c618000003000000 ffffff84c0a68000318c0000c0000000 - {e=>20449,c=>25,a=>51,b=>1,d=>2,f=>0} 3300000001190200e14f000000000000 3300000001190200e14f000000000000 3300000001190200e14f000000000000 00000033403280009fc2000000000000 3300000001190200e14f000000000000 3300000001190200e14f000000000000 00000033403280009fc2000000000000 3300000001190200e14f000000000000 00000033403280009fc2000000000000 - {e=>6146,c=>52,a=>40,b=>2,d=>0,f=>3} 28000000023400000218000003000000 28000000023400000218000003000000 28000000023400000218000003000000 000000288068000030040000c0000000 28000000023400000218000003000000 28000000023400000218000003000000 000000288068000030040000c0000000 28000000023400000218000003000000 000000288068000030040000c0000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>3892,c=>48,a=>-46,g=>316743879,b=>2,d=>1,f=>3} d2ffffff02300100340f000003000000c720e112 d2ffffff02300100340f000003000000c720e112 d2ffffff02300100340f000003000000c720e112 ffffffd2806040001e680000c000000025c2418e d2ffffff02300100340f000003000000c720e112 d2ffffff02300100340f000003000000c720e112 ffffffd2806040001e680000c000000025c2418e d2ffffff02300100340f000003000000c720e112 ffffffd2806040001e680000c000000025c2418e - {e=>26400,c=>46,a=>-27,g=>151740613,b=>2,d=>3,f=>1} e5ffffff022e03002067000001000000c5600b09 e5ffffff022e03002067000001000000c5600b09 e5ffffff022e03002067000001000000c5600b09 ffffffe5805cc000ce400000400000001216c18a e5ffffff022e03002067000001000000c5600b09 e5ffffff022e03002067000001000000c5600b09 ffffffe5805cc000ce400000400000001216c18a e5ffffff022e03002067000001000000c5600b09 ffffffe5805cc000ce400000400000001216c18a - {e=>26192,c=>62,a=>24,g=>1861908220,b=>2,d=>0,f=>3} 18000000023e00005066000003000000fc76fa6e 18000000023e00005066000003000000fc76fa6e 18000000023e00005066000003000000fc76fa6e 00000018807c0000cca00000c0000000ddf4edf8 18000000023e00005066000003000000fc76fa6e 18000000023e00005066000003000000fc76fa6e 00000018807c0000cca00000c0000000ddf4edf8 18000000023e00005066000003000000fc76fa6e 00000018807c0000cca00000c0000000ddf4edf8 - {e=>21869,c=>35,a=>48,g=>1165253908,b=>2,d=>3,f=>1} 30000000022303006d55000001000000145d7445 30000000022303006d55000001000000145d7445 30000000022303006d55000001000000145d7445 000000308046c000aada0000400000008ae8ba28 30000000022303006d55000001000000145d7445 30000000022303006d55000001000000145d7445 000000308046c000aada0000400000008ae8ba28 30000000022303006d55000001000000145d7445 000000308046c000aada0000400000008ae8ba28 - {e=>31408,c=>111,a=>30,g=>1811810369,b=>1,d=>0,f=>0} 1e000000016f0000b07a0000000000004108fe6b 1e000000016f0000b07a0000000000004108fe6b 1e000000016f0000b07a0000000000004108fe6b 0000001e40de0000f560000000000000d7fc1082 1e000000016f0000b07a0000000000004108fe6b 1e000000016f0000b07a0000000000004108fe6b 0000001e40de0000f560000000000000d7fc1082 1e000000016f0000b07a0000000000004108fe6b 0000001e40de0000f560000000000000d7fc1082 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22792,a=>69,d=>0,c=>81,h=>223,b=>0,g=>1807892872,f=>2} 450000000051000008590000020000008841c26bdf000000 450000000051000008590000020000008841c26bdf000000 450000000051000008590000020000008841c26bdf000000 0000004500a20000b210000080000000d7848310df000000 450000000051000008590000020000008841c26bdf000000 450000000051000008590000020000008841c26bdf000000 0000004500a20000b210000080000000d7848310df000000 450000000051000008590000020000008841c26bdf000000 0000004500a20000b210000080000000d7848310df000000 - {e=>6988,a=>-93,d=>1,c=>27,h=>182,b=>3,g=>374359030,f=>1} a3ffffff031b01004c1b000001000000f6435016b6000000 a3ffffff031b01004c1b000001000000f6435016b6000000 a3ffffff031b01004c1b000001000000f6435016b6000000 ffffffa3c036400036980000400000002ca087ecb6000000 a3ffffff031b01004c1b000001000000f6435016b6000000 a3ffffff031b01004c1b000001000000f6435016b6000000 ffffffa3c036400036980000400000002ca087ecb6000000 a3ffffff031b01004c1b000001000000f6435016b6000000 ffffffa3c036400036980000400000002ca087ecb6000000 - {e=>14822,a=>-84,d=>0,c=>16,h=>181,b=>0,g=>1852459803,f=>2} acffffff00100000e6390000020000001b4b6a6eb5000000 acffffff00100000e6390000020000001b4b6a6eb5000000 acffffff00100000e6390000020000001b4b6a6eb5000000 ffffffac0020000073cc000080000000dcd49636b5000000 acffffff00100000e6390000020000001b4b6a6eb5000000 acffffff00100000e6390000020000001b4b6a6eb5000000 ffffffac0020000073cc000080000000dcd49636b5000000 acffffff00100000e6390000020000001b4b6a6eb5000000 ffffffac0020000073cc000080000000dcd49636b5000000 - {e=>21205,a=>118,d=>1,c=>107,h=>123,b=>2,g=>1241312097,f=>2} 76000000026b0100d55200000200000061ebfc497b000000 76000000026b0100d55200000200000061ebfc497b000000 76000000026b0100d55200000200000061ebfc497b000000 0000007680d64000a5aa00008000000093f9d6c27b000000 76000000026b0100d55200000200000061ebfc497b000000 76000000026b0100d55200000200000061ebfc497b000000 0000007680d64000a5aa00008000000093f9d6c27b000000 76000000026b0100d55200000200000061ebfc497b000000 0000007680d64000a5aa00008000000093f9d6c27b000000 - {e=>15889,a=>-72,d=>3,c=>115,h=>148,b=>3,g=>812033748,f=>2} b8ffffff03730300113e000002000000d4a6663094000000 b8ffffff03730300113e000002000000d4a6663094000000 b8ffffff03730300113e000002000000d4a6663094000000 ffffffb8c0e6c0007c2200008000000060cd4da894000000 b8ffffff03730300113e000002000000d4a6663094000000 b8ffffff03730300113e000002000000d4a6663094000000 ffffffb8c0e6c0007c2200008000000060cd4da894000000 b8ffffff03730300113e000002000000d4a6663094000000 ffffffb8c0e6c0007c2200008000000060cd4da894000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>-83,b=>1} adffffff01000000 adffffffffffffff0100000000000000 adffffffffffffff0100000000000000 ffffffad40000000 adffffff01000000 adffffff01000000 ffffffffffffffad4000000000000000 adffffff01000000 ffffffad40000000 - {a=>-66,b=>2} beffffff02000000 beffffffffffffff0200000000000000 beffffffffffffff0200000000000000 ffffffbe80000000 beffffff02000000 beffffff02000000 ffffffffffffffbe8000000000000000 beffffff02000000 ffffffbe80000000 - {a=>29,b=>2} 1d00000002000000 1d000000000000000200000000000000 1d000000000000000200000000000000 0000001d80000000 1d00000002000000 1d00000002000000 000000000000001d8000000000000000 1d00000002000000 0000001d80000000 - {a=>3,b=>3} 0300000003000000 03000000000000000300000000000000 03000000000000000300000000000000 00000003c0000000 0300000003000000 0300000003000000 0000000000000003c000000000000000 0300000003000000 00000003c0000000 - {a=>96,b=>0} 6000000000000000 60000000000000000000000000000000 60000000000000000000000000000000 0000006000000000 6000000000000000 6000000000000000 00000000000000600000000000000000 6000000000000000 0000006000000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>65,a=>58,b=>1} 3a00000001410000 3a000000000000000141000000000000 3a000000000000000141000000000000 0000003a40820000 3a00000001410000 3a00000001410000 000000000000003a4082000000000000 3a00000001410000 0000003a40820000 - {c=>69,a=>121,b=>3} 7900000003450000 79000000000000000345000000000000 79000000000000000345000000000000 00000079c08a0000 7900000003450000 7900000003450000 0000000000000079c08a000000000000 7900000003450000 00000079c08a0000 - {c=>64,a=>43,b=>0} 2b00000000400000 2b000000000000000040000000000000 2b000000000000000040000000000000 0000002b00800000 2b00000000400000 2b00000000400000 000000000000002b0080000000000000 2b00000000400000 0000002b00800000 - {c=>119,a=>-117,b=>3} 8bffffff03770000 8bffffffffffffff0377000000000000 8bffffffffffffff0377000000000000 ffffff8bc0ee0000 8bffffff03770000 8bffffff03770000 ffffffffffffff8bc0ee000000000000 8bffffff03770000 ffffff8bc0ee0000 - {c=>121,a=>-9,b=>2} f7ffffff02790000 f7ffffffffffffff0279000000000000 f7ffffffffffffff0279000000000000 fffffff780f20000 f7ffffff02790000 f7ffffff02790000 fffffffffffffff780f2000000000000 f7ffffff02790000 fffffff780f20000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>105,a=>-106,b=>1} 96ffffff01690000 96ffffffffffffff0169000000000000 96ffffffffffffff0169000000000000 ffffff9640d20000 96ffffff01690000 96ffffff01690000 ffffffffffffff9640d2000000000000 96ffffff01690000 ffffff9640d20000 - {c=>123,a=>94,b=>1} 5e000000017b0000 5e00000000000000017b000000000000 5e00000000000000017b000000000000 0000005e40f60000 5e000000017b0000 5e000000017b0000 000000000000005e40f6000000000000 5e000000017b0000 0000005e40f60000 - {c=>116,a=>-82,b=>1} aeffffff01740000 aeffffffffffffff0174000000000000 aeffffffffffffff0174000000000000 ffffffae40e80000 aeffffff01740000 aeffffff01740000 ffffffffffffffae40e8000000000000 aeffffff01740000 ffffffae40e80000 - {c=>123,a=>72,b=>2} 48000000027b0000 4800000000000000027b000000000000 4800000000000000027b000000000000 0000004880f60000 48000000027b0000 48000000027b0000 000000000000004880f6000000000000 48000000027b0000 0000004880f60000 - {c=>73,a=>-126,b=>3} 82ffffff03490000 82ffffffffffffff0349000000000000 82ffffffffffffff0349000000000000 ffffff82c0920000 82ffffff03490000 82ffffff03490000 ffffffffffffff82c092000000000000 82ffffff03490000 ffffff82c0920000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>95,a=>0,b=>2,d=>1} 00000000025f0100 0000000000000000025f010000000000 0000000000000000025f010000000000 0000000080be4000 00000000025f0100 00000000025f0100 000000000000000080be400000000000 00000000025f0100 0000000080be4000 - {c=>66,a=>121,b=>3,d=>3} 7900000003420300 79000000000000000342030000000000 79000000000000000342030000000000 00000079c084c000 7900000003420300 7900000003420300 0000000000000079c084c00000000000 7900000003420300 00000079c084c000 - {c=>26,a=>99,b=>2,d=>2} 63000000021a0200 6300000000000000021a020000000000 6300000000000000021a020000000000 0000006380348000 63000000021a0200 63000000021a0200 00000000000000638034800000000000 63000000021a0200 0000006380348000 - {c=>88,a=>98,b=>0,d=>1} 6200000000580100 62000000000000000058010000000000 62000000000000000058010000000000 0000006200b04000 6200000000580100 6200000000580100 000000000000006200b0400000000000 6200000000580100 0000006200b04000 - {c=>3,a=>-14,b=>2,d=>3} f2ffffff02030300 f2ffffffffffffff0203030000000000 f2ffffffffffffff0203030000000000 fffffff28006c000 f2ffffff02030300 f2ffffff02030300 fffffffffffffff28006c00000000000 f2ffffff02030300 fffffff28006c000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>9767,c=>60,a=>-61,b=>1,d=>2} c3ffffff013c020027260000 c3ffffffffffffff013c020027260000 c3ffffffffffffff013c020027260000 ffffffc3407880004c4e0000 c3ffffff013c020027260000 c3ffffff013c020027260000 ffffffffffffffc3407880004c4e0000 c3ffffff013c020027260000 ffffffc3407880004c4e0000 - {e=>12740,c=>73,a=>45,b=>1,d=>0} 2d00000001490000c4310000 2d0000000000000001490000c4310000 2d0000000000000001490000c4310000 0000002d4092000063880000 2d00000001490000c4310000 2d00000001490000c4310000 000000000000002d4092000063880000 2d00000001490000c4310000 0000002d4092000063880000 - {e=>19242,c=>24,a=>3,b=>2,d=>3} 03000000021803002a4b0000 0300000000000000021803002a4b0000 0300000000000000021803002a4b0000 000000038030c00096540000 03000000021803002a4b0000 03000000021803002a4b0000 00000000000000038030c00096540000 03000000021803002a4b0000 000000038030c00096540000 - {e=>22616,c=>113,a=>104,b=>2,d=>0} 680000000271000058580000 68000000000000000271000058580000 68000000000000000271000058580000 0000006880e20000b0b00000 680000000271000058580000 680000000271000058580000 000000000000006880e20000b0b00000 680000000271000058580000 0000006880e20000b0b00000 - {e=>25298,c=>80,a=>59,b=>3,d=>0} 3b00000003500000d2620000 3b0000000000000003500000d2620000 3b0000000000000003500000d2620000 0000003bc0a00000c5a40000 3b00000003500000d2620000 3b00000003500000d2620000 000000000000003bc0a00000c5a40000 3b00000003500000d2620000 0000003bc0a00000c5a40000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>20592,c=>52,a=>-37,b=>2,d=>2} dbffffff0234020070500000 dbffffffffffffff0234020070500000 dbffffffffffffff0234020070500000 ffffffdb80688000a0e00000 dbffffff0234020070500000 dbffffff0234020070500000 ffffffffffffffdb80688000a0e00000 dbffffff0234020070500000 ffffffdb80688000a0e00000 - {e=>276,c=>125,a=>90,b=>3,d=>0} 5a000000037d000014010000 5a00000000000000037d000014010000 5a00000000000000037d000014010000 0000005ac0fa000002280000 5a000000037d000014010000 5a000000037d000014010000 000000000000005ac0fa000002280000 5a000000037d000014010000 0000005ac0fa000002280000 - {e=>32279,c=>46,a=>100,b=>2,d=>3} 64000000022e0300177e0000 6400000000000000022e0300177e0000 6400000000000000022e0300177e0000 00000064805cc000fc2e0000 64000000022e0300177e0000 64000000022e0300177e0000 0000000000000064805cc000fc2e0000 64000000022e0300177e0000 00000064805cc000fc2e0000 - {e=>25090,c=>74,a=>5,b=>1,d=>2} 05000000014a020002620000 0500000000000000014a020002620000 0500000000000000014a020002620000 0000000540948000c4040000 05000000014a020002620000 05000000014a020002620000 000000000000000540948000c4040000 05000000014a020002620000 0000000540948000c4040000 - {e=>3865,c=>84,a=>-99,b=>0,d=>1} 9dffffff00540100190f0000 9dffffffffffffff00540100190f0000 9dffffffffffffff00540100190f0000 ffffff9d00a840001e320000 9dffffff00540100190f0000 9dffffff00540100190f0000 ffffffffffffff9d00a840001e320000 9dffffff00540100190f0000 ffffff9d00a840001e320000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>21175,c=>59,a=>-120,b=>1,d=>1,f=>3} 88ffffff013b0100b752000003000000 88ffffffffffffff013b0100b75200000300000000000000 88ffffffffffffff013b0100b75200000300000000000000 ffffff8840764000a56e0000c0000000 88ffffff013b0100b752000003000000 88ffffff013b0100b752000003000000 ffffffffffffff8840764000a56e0000c000000000000000 88ffffff013b0100b752000003000000 ffffff8840764000a56e0000c0000000 - {e=>28600,c=>26,a=>40,b=>1,d=>0,f=>3} 28000000011a0000b86f000003000000 2800000000000000011a0000b86f00000300000000000000 2800000000000000011a0000b86f00000300000000000000 0000002840340000df700000c0000000 28000000011a0000b86f000003000000 28000000011a0000b86f000003000000 000000000000002840340000df700000c000000000000000 28000000011a0000b86f000003000000 0000002840340000df700000c0000000 - {e=>28585,c=>40,a=>111,b=>2,d=>1,f=>0} 6f00000002280100a96f000000000000 6f0000000000000002280100a96f00000000000000000000 6f0000000000000002280100a96f00000000000000000000 0000006f80504000df52000000000000 6f00000002280100a96f000000000000 6f00000002280100a96f000000000000 000000000000006f80504000df5200000000000000000000 6f00000002280100a96f000000000000 0000006f80504000df52000000000000 - {e=>5446,c=>49,a=>-10,b=>0,d=>3,f=>2} f6ffffff003103004615000002000000 f6ffffffffffffff00310300461500000200000000000000 f6ffffffffffffff00310300461500000200000000000000 fffffff60062c0002a8c000080000000 f6ffffff003103004615000002000000 f6ffffff003103004615000002000000 fffffffffffffff60062c0002a8c00008000000000000000 f6ffffff003103004615000002000000 fffffff60062c0002a8c000080000000 - {e=>8086,c=>115,a=>71,b=>1,d=>3,f=>2} 4700000001730300961f000002000000 470000000000000001730300961f00000200000000000000 470000000000000001730300961f00000200000000000000 0000004740e6c0003f2c000080000000 4700000001730300961f000002000000 4700000001730300961f000002000000 000000000000004740e6c0003f2c00008000000000000000 4700000001730300961f000002000000 0000004740e6c0003f2c000080000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>2515,c=>39,a=>-81,g=>1557846639,b=>0,d=>2,f=>0} afffffff00270200d3090000000000006fdada5c afffffffffffffff00270200d3090000000000006fdada5c afffffffffffffff00270200d3090000000000006fdada5c ffffffaf004e800013a6000000000000b9b5b4de afffffff00270200d3090000000000006fdada5c afffffff00270200d3090000000000006fdada5c ffffffffffffffaf004e800013a6000000000000b9b5b4de afffffff00270200d3090000000000006fdada5c ffffffaf004e800013a6000000000000b9b5b4de - {e=>24554,c=>76,a=>-55,g=>397475554,b=>0,d=>3,f=>1} c9ffffff004c0300ea5f000001000000e2feb017 c9ffffffffffffff004c0300ea5f000001000000e2feb017 c9ffffffffffffff004c0300ea5f000001000000e2feb017 ffffffc90098c000bfd40000400000002f61fdc4 c9ffffff004c0300ea5f000001000000e2feb017 c9ffffff004c0300ea5f000001000000e2feb017 ffffffffffffffc90098c000bfd40000400000002f61fdc4 c9ffffff004c0300ea5f000001000000e2feb017 ffffffc90098c000bfd40000400000002f61fdc4 - {e=>21564,c=>75,a=>-60,g=>1965999580,b=>1,d=>1,f=>0} c4ffffff014b01003c54000000000000dcc52e75 c4ffffffffffffff014b01003c54000000000000dcc52e75 c4ffffffffffffff014b01003c54000000000000dcc52e75 ffffffc440964000a878000000000000ea5d8bb8 c4ffffff014b01003c54000000000000dcc52e75 c4ffffff014b01003c54000000000000dcc52e75 ffffffffffffffc440964000a878000000000000ea5d8bb8 c4ffffff014b01003c54000000000000dcc52e75 ffffffc440964000a878000000000000ea5d8bb8 - {e=>4819,c=>95,a=>5,g=>1426045861,b=>2,d=>3,f=>0} 05000000025f0300d312000000000000a5bbff54 0500000000000000025f0300d312000000000000a5bbff54 0500000000000000025f0300d312000000000000a5bbff54 0000000580bec00025a6000000000000a9ff774a 05000000025f0300d312000000000000a5bbff54 05000000025f0300d312000000000000a5bbff54 000000000000000580bec00025a6000000000000a9ff774a 05000000025f0300d312000000000000a5bbff54 0000000580bec00025a6000000000000a9ff774a - {e=>9300,c=>73,a=>-128,g=>2026652952,b=>2,d=>2,f=>0} 80ffffff0249020054240000000000001845cc78 80ffffffffffffff0249020054240000000000001845cc78 80ffffffffffffff0249020054240000000000001845cc78 ffffff808092800048a8000000000000f1988a30 80ffffff0249020054240000000000001845cc78 80ffffff0249020054240000000000001845cc78 ffffffffffffff808092800048a8000000000000f1988a30 80ffffff0249020054240000000000001845cc78 ffffff808092800048a8000000000000f1988a30 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>21952,a=>-109,d=>2,c=>25,h=>45,b=>2,g=>1114185827,f=>3} 93ffffff02190200c055000003000000632069422d000000 93ffffffffffffff02190200c055000003000000632069422d00000000000000 93ffffffffffffff02190200c055000003000000632069422d00000000000000 ffffff9380328000ab800000c000000084d240c62d000000 93ffffff02190200c055000003000000632069422d000000 93ffffff02190200c055000003000000632069422d000000 ffffffffffffff9380328000ab800000c000000084d240c62d00000000000000 93ffffff02190200c055000003000000632069422d000000 ffffff9380328000ab800000c000000084d240c62d000000 - {e=>26940,a=>-113,d=>2,c=>52,h=>252,b=>0,g=>1775585392,f=>2} 8fffffff003402003c690000020000007048d569fc000000 8fffffffffffffff003402003c690000020000007048d569fc00000000000000 8fffffffffffffff003402003c690000020000007048d569fc00000000000000 ffffff8f00688000d278000080000000d3aa90e0fc000000 8fffffff003402003c690000020000007048d569fc000000 8fffffff003402003c690000020000007048d569fc000000 ffffffffffffff8f00688000d278000080000000d3aa90e0fc00000000000000 8fffffff003402003c690000020000007048d569fc000000 ffffff8f00688000d278000080000000d3aa90e0fc000000 - {e=>15281,a=>-108,d=>2,c=>32,h=>104,b=>0,g=>334972013,f=>0} 94ffffff00200200b13b0000000000006d44f71368000000 94ffffffffffffff00200200b13b0000000000006d44f7136800000000000000 94ffffffffffffff00200200b13b0000000000006d44f7136800000000000000 ffffff9400408000776200000000000027ee88da68000000 94ffffff00200200b13b0000000000006d44f71368000000 94ffffff00200200b13b0000000000006d44f71368000000 ffffffffffffff9400408000776200000000000027ee88da6800000000000000 94ffffff00200200b13b0000000000006d44f71368000000 ffffff9400408000776200000000000027ee88da68000000 - {e=>2768,a=>-8,d=>2,c=>44,h=>179,b=>0,g=>1813704477,f=>2} f8ffffff002c0200d00a0000020000001def1a6cb3000000 f8ffffffffffffff002c0200d00a0000020000001def1a6cb300000000000000 f8ffffffffffffff002c0200d00a0000020000001def1a6cb300000000000000 fffffff80058800015a0000080000000d835de3ab3000000 f8ffffff002c0200d00a0000020000001def1a6cb3000000 f8ffffff002c0200d00a0000020000001def1a6cb3000000 fffffffffffffff80058800015a0000080000000d835de3ab300000000000000 f8ffffff002c0200d00a0000020000001def1a6cb3000000 fffffff80058800015a0000080000000d835de3ab3000000 - {e=>4766,a=>-98,d=>1,c=>110,h=>87,b=>3,g=>1617177070,f=>1} 9effffff036e01009e12000001000000ee29646057000000 9effffffffffffff036e01009e12000001000000ee2964605700000000000000 9effffffffffffff036e01009e12000001000000ee2964605700000000000000 ffffff9ec0dc4000253c000040000000c0c853dc57000000 9effffff036e01009e12000001000000ee29646057000000 9effffff036e01009e12000001000000ee29646057000000 ffffffffffffff9ec0dc4000253c000040000000c0c853dc5700000000000000 9effffff036e01009e12000001000000ee29646057000000 ffffff9ec0dc4000253c000040000000c0c853dc57000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>1} 01 01 01 40 01000000 01 40 01 40 - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>1,b=>53} 0135 0135 0135 406a 01350000 0135 406a 0135 406a - {a=>1,b=>50} 0132 0132 0132 4064 01320000 0132 4064 0132 4064 - {a=>1,b=>123} 017b 017b 017b 40f6 017b0000 017b 40f6 017b 40f6 - {a=>1,b=>14} 010e 010e 010e 401c 010e0000 010e 401c 010e 401c - {a=>1,b=>30} 011e 011e 011e 403c 011e0000 011e 403c 011e 403c = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>0,b=>46} 002e 002e 002e 005c 002e0000 002e 005c 002e 005c - {a=>0,b=>81} 0051 0051 0051 00a2 00510000 0051 00a2 0051 00a2 - {a=>2,b=>74} 024a 024a 024a 8094 024a0000 024a 8094 024a 8094 - {a=>0,b=>65} 0041 0041 0041 0082 00410000 0041 0082 0041 0082 - {a=>2,b=>109} 026d 026d 026d 80da 026d0000 026d 80da 026d 80da = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>3,a=>2,b=>16} 02100300 02100300 02100300 8020c000 02100300 02100300 8020c000 02100300 8020c000 - {c=>1,a=>2,b=>62} 023e0100 023e0100 023e0100 807c4000 023e0100 023e0100 807c4000 023e0100 807c4000 - {c=>3,a=>1,b=>111} 016f0300 016f0300 016f0300 40dec000 016f0300 016f0300 40dec000 016f0300 40dec000 - {c=>1,a=>1,b=>68} 01440100 01440100 01440100 40884000 01440100 01440100 40884000 01440100 40884000 - {c=>2,a=>2,b=>45} 022d0200 022d0200 022d0200 805a8000 022d0200 022d0200 805a8000 022d0200 805a8000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>3,a=>1,b=>26,d=>16785} 011a03009141 011a03009141 011a03009141 4034c0008322 011a030091410000 011a03009141 4034c0008322 011a03009141 4034c0008322 - {c=>1,a=>2,b=>72,d=>27478} 02480100566b 02480100566b 02480100566b 80904000d6ac 02480100566b0000 02480100566b 80904000d6ac 02480100566b 80904000d6ac - {c=>0,a=>2,b=>38,d=>5575} 02260000c715 02260000c715 02260000c715 804c00002b8e 02260000c7150000 02260000c715 804c00002b8e 02260000c715 804c00002b8e - {c=>0,a=>0,b=>9,d=>15309} 00090000cd3b 00090000cd3b 00090000cd3b 00120000779a 00090000cd3b0000 00090000cd3b 00120000779a 00090000cd3b 00120000779a - {c=>1,a=>0,b=>50,d=>15196} 003201005c3b 003201005c3b 003201005c3b 0064400076b8 003201005c3b0000 003201005c3b 0064400076b8 003201005c3b 0064400076b8 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>3,a=>0,b=>45,d=>19854} 002d03008e4d0000 002d03008e4d0000 002d03008e4d0000 005ac0009b1c0000 002d03008e4d0000 002d03008e4d0000 005ac0009b1c0000 002d03008e4d0000 005ac0009b1c0000 - {c=>1,a=>1,b=>98,d=>13023} 01620100df320000 01620100df320000 01620100df320000 40c4400065be0000 01620100df320000 01620100df320000 40c4400065be0000 01620100df320000 40c4400065be0000 - {c=>0,a=>0,b=>60,d=>21600} 003c000060540000 003c000060540000 003c000060540000 00780000a8c00000 003c000060540000 003c000060540000 00780000a8c00000 003c000060540000 00780000a8c00000 - {c=>0,a=>3,b=>66,d=>5095} 03420000e7130000 03420000e7130000 03420000e7130000 c084000027ce0000 03420000e7130000 03420000e7130000 c084000027ce0000 03420000e7130000 c084000027ce0000 - {c=>1,a=>2,b=>6,d=>28001} 02060100616d0000 02060100616d0000 02060100616d0000 800c4000dac20000 02060100616d0000 02060100616d0000 800c4000dac20000 02060100616d0000 800c4000dac20000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>3,c=>3,a=>0,b=>58,d=>11881} 003a0300692e000003000000 003a0300692e000003000000 003a0300692e000003000000 0074c0005cd20000c0000000 003a0300692e000003000000 003a0300692e000003000000 0074c0005cd20000c0000000 003a0300692e000003000000 0074c0005cd20000c0000000 - {e=>1,c=>2,a=>3,b=>55,d=>28258} 03370200626e000001000000 03370200626e000001000000 03370200626e000001000000 c06e8000dcc4000040000000 03370200626e000001000000 03370200626e000001000000 c06e8000dcc4000040000000 03370200626e000001000000 c06e8000dcc4000040000000 - {e=>0,c=>2,a=>0,b=>80,d=>21967} 00500200cf55000000000000 00500200cf55000000000000 00500200cf55000000000000 00a08000ab9e000000000000 00500200cf55000000000000 00500200cf55000000000000 00a08000ab9e000000000000 00500200cf55000000000000 00a08000ab9e000000000000 - {e=>3,c=>1,a=>2,b=>45,d=>10113} 022d01008127000003000000 022d01008127000003000000 022d01008127000003000000 805a40004f020000c0000000 022d01008127000003000000 022d01008127000003000000 805a40004f020000c0000000 022d01008127000003000000 805a40004f020000c0000000 - {e=>2,c=>1,a=>1,b=>95,d=>17218} 015f01004243000002000000 015f01004243000002000000 015f01004243000002000000 40be40008684000080000000 015f01004243000002000000 015f01004243000002000000 40be40008684000080000000 015f01004243000002000000 40be40008684000080000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>0,c=>2,a=>3,b=>80,d=>2111,f=>1422571903} 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 c0a08000107e000000000000a99572fe 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 c0a08000107e000000000000a99572fe 035002003f080000000000007fb9ca54 c0a08000107e000000000000a99572fe - {e=>2,c=>1,a=>3,b=>64,d=>2000,f=>1965034422} 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 c08040000fa0000080000000ea40176c 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 c08040000fa0000080000000ea40176c 03400100d007000002000000b60b2075 c08040000fa0000080000000ea40176c - {e=>2,c=>3,a=>1,b=>54,d=>28927,f=>969485170} 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 406cc000e1fe000080000000739256e4 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 406cc000e1fe000080000000739256e4 01360300ff70000002000000722bc939 406cc000e1fe000080000000739256e4 - {e=>2,c=>1,a=>3,b=>123,d=>20823,f=>1458057064} 037b01005751000002000000682fe856 037b01005751000002000000682fe856 037b01005751000002000000682fe856 c0f64000a2ae000080000000add05ed0 037b01005751000002000000682fe856 037b01005751000002000000682fe856 c0f64000a2ae000080000000add05ed0 037b01005751000002000000682fe856 c0f64000a2ae000080000000add05ed0 - {e=>1,c=>2,a=>0,b=>6,d=>12501,f=>1351383989} 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 000c800061aa000040000000a118f76a 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 000c800061aa000040000000a118f76a 00060200d530000001000000b57b8c50 000c800061aa000040000000a118f76a = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>0,c=>2,a=>3,g=>84,b=>89,d=>9214,f=>106393136} 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 c0b2800047fc0000000000000caedc6054000000 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 c0b2800047fc0000000000000caedc6054000000 03590200fe23000000000000306e570654000000 c0b2800047fc0000000000000caedc6054000000 - {e=>0,c=>1,a=>3,g=>127,b=>82,d=>23276,f=>741050135} 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 c0a44000b5d800000000000058570e2e7f000000 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 c0a44000b5d800000000000058570e2e7f000000 03520100ec5a00000000000017872b2c7f000000 c0a44000b5d800000000000058570e2e7f000000 - {e=>1,c=>2,a=>3,g=>51,b=>86,d=>27154,f=>843170060} 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 c0ac8000d4240000400000006483821833000000 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 c0ac8000d4240000400000006483821833000000 03560200126a0000010000000cc1413233000000 c0ac8000d4240000400000006483821833000000 - {e=>2,c=>0,a=>1,g=>50,b=>109,d=>21142,f=>302068161} 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 40da0000a52c0000800000002402638232000000 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 40da0000a52c0000800000002402638232000000 016d00009652000002000000c131011232000000 40da0000a52c0000800000002402638232000000 - {e=>0,c=>0,a=>0,g=>115,b=>39,d=>28818,f=>1653939669} 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 004e0000e124000000000000c52a3baa73000000 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 004e0000e124000000000000c52a3baa73000000 002700009270000000000000d51d956273000000 004e0000e124000000000000c52a3baa73000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>127,b=>3} 7f03 7f03 7f03 7fc0 7f030000 7f03 7fc0 7f03 7fc0 - {a=>80,b=>3} 5003 5003 5003 50c0 50030000 5003 50c0 5003 50c0 - {a=>-62,b=>3} c203 c203 c203 c2c0 c2030000 c203 c2c0 c203 c2c0 - {a=>-100,b=>0} 9c00 9c00 9c00 9c00 9c000000 9c00 9c00 9c00 9c00 - {a=>14,b=>0} 0e00 0e00 0e00 0e00 0e000000 0e00 0e00 0e00 0e00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>39,a=>-40,b=>3} d80327 d80327 d80327 d8c04e d8032700 d80327 d8c04e d80327 d8c04e - {c=>16,a=>1,b=>2} 010210 010210 010210 018020 01021000 010210 018020 010210 018020 - {c=>127,a=>117,b=>2} 75027f 75027f 75027f 7580fe 75027f00 75027f 7580fe 75027f 7580fe - {c=>19,a=>-78,b=>3} b20313 b20313 b20313 b2c026 b2031300 b20313 b2c026 b20313 b2c026 - {c=>78,a=>-31,b=>3} e1034e e1034e e1034e e1c09c e1034e00 e1034e e1c09c e1034e e1c09c = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>49,a=>86,b=>0} 56003100 56003100 56003100 56006200 56003100 56003100 56006200 56003100 56006200 - {c=>37,a=>-76,b=>0} b4002500 b4002500 b4002500 b4004a00 b4002500 b4002500 b4004a00 b4002500 b4004a00 - {c=>41,a=>-78,b=>1} b2012900 b2012900 b2012900 b2405200 b2012900 b2012900 b2405200 b2012900 b2405200 - {c=>48,a=>-122,b=>1} 86013000 86013000 86013000 86406000 86013000 86013000 86406000 86013000 86406000 - {c=>80,a=>38,b=>1} 26015000 26015000 26015000 2640a000 26015000 26015000 2640a000 26015000 2640a000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>64,a=>67,b=>0,d=>3} 430040000300 430040000300 430040000300 43008000c000 4300400003000000 430040000300 43008000c000 430040000300 43008000c000 - {c=>7,a=>32,b=>0,d=>3} 200007000300 200007000300 200007000300 20000e00c000 2000070003000000 200007000300 20000e00c000 200007000300 20000e00c000 - {c=>48,a=>-66,b=>2,d=>3} be0230000300 be0230000300 be0230000300 be806000c000 be02300003000000 be0230000300 be806000c000 be0230000300 be806000c000 - {c=>36,a=>98,b=>1,d=>0} 620124000000 620124000000 620124000000 624048000000 6201240000000000 620124000000 624048000000 620124000000 624048000000 - {c=>52,a=>-93,b=>0,d=>0} a30034000000 a30034000000 a30034000000 a30068000000 a300340000000000 a30034000000 a30068000000 a30034000000 a30068000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>26785,c=>119,a=>-1,b=>1,d=>0} ff0177000000a168 ff0177000000a168 ff0177000000a168 ff40ee000000d142 ff0177000000a168 ff0177000000a168 ff40ee000000d142 ff0177000000a168 ff40ee000000d142 - {e=>21340,c=>96,a=>-74,b=>2,d=>0} b602600000005c53 b602600000005c53 b602600000005c53 b680c0000000a6b8 b602600000005c53 b602600000005c53 b680c0000000a6b8 b602600000005c53 b680c0000000a6b8 - {e=>28806,c=>61,a=>26,b=>3,d=>1} 1a033d0001008670 1a033d0001008670 1a033d0001008670 1ac07a004000e10c 1a033d0001008670 1a033d0001008670 1ac07a004000e10c 1a033d0001008670 1ac07a004000e10c - {e=>28589,c=>26,a=>-114,b=>2,d=>2} 8e021a000200ad6f 8e021a000200ad6f 8e021a000200ad6f 8e8034008000df5a 8e021a000200ad6f 8e021a000200ad6f 8e8034008000df5a 8e021a000200ad6f 8e8034008000df5a - {e=>26902,c=>48,a=>-95,b=>0,d=>1} a100300001001669 a100300001001669 a100300001001669 a10060004000d22c a100300001001669 a100300001001669 a10060004000d22c a100300001001669 a10060004000d22c = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>3552,c=>17,a=>-7,b=>2,d=>3} f90211000300e00d f90211000300e00d f90211000300e00d f9802200c0001bc0 f90211000300e00d f90211000300e00d f9802200c0001bc0 f90211000300e00d f9802200c0001bc0 - {e=>26031,c=>93,a=>25,b=>2,d=>2} 19025d000200af65 19025d000200af65 19025d000200af65 1980ba008000cb5e 19025d000200af65 19025d000200af65 1980ba008000cb5e 19025d000200af65 1980ba008000cb5e - {e=>22073,c=>127,a=>50,b=>3,d=>2} 32037f0002003956 32037f0002003956 32037f0002003956 32c0fe008000ac72 32037f0002003956 32037f0002003956 32c0fe008000ac72 32037f0002003956 32c0fe008000ac72 - {e=>2767,c=>28,a=>125,b=>3,d=>0} 7d031c000000cf0a 7d031c000000cf0a 7d031c000000cf0a 7dc038000000159e 7d031c000000cf0a 7d031c000000cf0a 7dc038000000159e 7d031c000000cf0a 7dc038000000159e - {e=>13191,c=>78,a=>100,b=>1,d=>0} 64014e0000008733 64014e0000008733 64014e0000008733 64409c000000670e 64014e0000008733 64014e0000008733 64409c000000670e 64014e0000008733 64409c000000670e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>30976,c=>57,a=>34,b=>3,d=>1,f=>2} 220339000100007902000000 220339000100007902000000 220339000100007902000000 22c072004000f20080000000 220339000100007902000000 220339000100007902000000 22c072004000f20080000000 220339000100007902000000 22c072004000f20080000000 - {e=>6346,c=>73,a=>-3,b=>3,d=>2,f=>2} fd0349000200ca1802000000 fd0349000200ca1802000000 fd0349000200ca1802000000 fdc092008000319480000000 fd0349000200ca1802000000 fd0349000200ca1802000000 fdc092008000319480000000 fd0349000200ca1802000000 fdc092008000319480000000 - {e=>6949,c=>88,a=>-4,b=>0,d=>0,f=>1} fc0058000000251b01000000 fc0058000000251b01000000 fc0058000000251b01000000 fc00b0000000364a40000000 fc0058000000251b01000000 fc0058000000251b01000000 fc00b0000000364a40000000 fc0058000000251b01000000 fc00b0000000364a40000000 - {e=>28006,c=>111,a=>-33,b=>1,d=>1,f=>2} df016f000100666d02000000 df016f000100666d02000000 df016f000100666d02000000 df40de004000dacc80000000 df016f000100666d02000000 df016f000100666d02000000 df40de004000dacc80000000 df016f000100666d02000000 df40de004000dacc80000000 - {e=>14019,c=>108,a=>-96,b=>0,d=>2,f=>0} a0006c000200c33600000000 a0006c000200c33600000000 a0006c000200c33600000000 a000d80080006d8600000000 a0006c000200c33600000000 a0006c000200c33600000000 a000d80080006d8600000000 a0006c000200c33600000000 a000d80080006d8600000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>9791,c=>22,a=>-47,g=>647164236,b=>2,d=>2,f=>1} d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 d1802c0080004c7e400000004d25e298 d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 d1802c0080004c7e400000004d25e298 d102160002003f26010000004cf19226 d1802c0080004c7e400000004d25e298 - {e=>27793,c=>21,a=>-62,g=>1814066393,b=>1,d=>3,f=>1} c20115000300916c01000000d974206c c20115000300916c01000000d974206c c20115000300916c01000000d974206c c2402a00c000d92240000000d840e9b2 c20115000300916c01000000d974206c c20115000300916c01000000d974206c c2402a00c000d92240000000d840e9b2 c20115000300916c01000000d974206c c2402a00c000d92240000000d840e9b2 - {e=>21047,c=>89,a=>-117,g=>455211358,b=>1,d=>2,f=>2} 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b 8b40b2008000a46e800000003643f2bc 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b 8b40b2008000a46e800000003643f2bc 8b01590002003752020000005ef9211b 8b40b2008000a46e800000003643f2bc - {e=>17235,c=>47,a=>-82,g=>2001830733,b=>1,d=>1,f=>0} ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 ae405e00400086a600000000eea3069a ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 ae405e00400086a600000000eea3069a ae012f0001005343000000004d835177 ae405e00400086a600000000eea3069a - {e=>1178,c=>72,a=>-128,g=>1850197261,b=>3,d=>2,f=>2} 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e 80c090008000093480000000dc8f8a1a 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e 80c090008000093480000000dc8f8a1a 8003480002009a04020000000dc5476e 80c090008000093480000000dc8f8a1a = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>4992,a=>101,d=>0,c=>45,h=>179,b=>3,g=>1764834428,f=>2} 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 65c05a000000270080000000d26278f8b3000000 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 65c05a000000270080000000d26278f8b3000000 65032d0000008013020000007c3c3169b3000000 65c05a000000270080000000d26278f8b3000000 - {e=>28162,a=>-27,d=>2,c=>19,h=>16,b=>1,g=>1368222481,f=>3} e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 e54026008000dc04c0000000a31ad62210000000 e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 e54026008000dc04c0000000a31ad62210000000 e50113000200026e03000000116b8d5110000000 e54026008000dc04c0000000a31ad62210000000 - {e=>9500,a=>102,d=>2,c=>48,h=>250,b=>2,g=>153279384,f=>3} 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 6680600080004a38c00000001245b730fa000000 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 6680600080004a38c00000001245b730fa000000 6602300002001c250300000098db2209fa000000 6680600080004a38c00000001245b730fa000000 - {e=>6190,a=>-9,d=>3,c=>84,h=>49,b=>1,g=>1357610161,f=>0} f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 f740a800c000305c00000000a1d6f96231000000 f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 f740a800c000305c00000000a1d6f96231000000 f701540003002e1800000000b17ceb5031000000 f740a800c000305c00000000a1d6f96231000000 - {e=>18540,a=>-57,d=>3,c=>110,h=>172,b=>1,g=>1540619102,f=>1} c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 c740dc00c00090d840000000b7a7f6bcac000000 c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 c740dc00c00090d840000000b7a7f6bcac000000 c7016e0003006c48010000005efbd35bac000000 c740dc00c00090d840000000b7a7f6bcac000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>12,b=>0} 0c000000 0c000000 0c000000 000c0000 0c000000 0c000000 000c0000 0c000000 000c0000 - {a=>56,b=>0} 38000000 38000000 38000000 00380000 38000000 38000000 00380000 38000000 00380000 - {a=>-4,b=>1} fcff0100 fcff0100 fcff0100 fffc4000 fcff0100 fcff0100 fffc4000 fcff0100 fffc4000 - {a=>-26,b=>1} e6ff0100 e6ff0100 e6ff0100 ffe64000 e6ff0100 e6ff0100 ffe64000 e6ff0100 ffe64000 - {a=>108,b=>0} 6c000000 6c000000 6c000000 006c0000 6c000000 6c000000 006c0000 6c000000 006c0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>4,a=>-80,b=>3} b0ff0304 b0ff0304 b0ff0304 ffb0c008 b0ff0304 b0ff0304 ffb0c008 b0ff0304 ffb0c008 - {c=>37,a=>1,b=>1} 01000125 01000125 01000125 0001404a 01000125 01000125 0001404a 01000125 0001404a - {c=>79,a=>-80,b=>2} b0ff024f b0ff024f b0ff024f ffb0809e b0ff024f b0ff024f ffb0809e b0ff024f ffb0809e - {c=>19,a=>36,b=>0} 24000013 24000013 24000013 00240026 24000013 24000013 00240026 24000013 00240026 - {c=>71,a=>74,b=>3} 4a000347 4a000347 4a000347 004ac08e 4a000347 4a000347 004ac08e 4a000347 004ac08e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>100,a=>40,b=>1} 28000164 28000164 28000164 002840c8 28000164 28000164 002840c8 28000164 002840c8 - {c=>34,a=>-110,b=>1} 92ff0122 92ff0122 92ff0122 ff924044 92ff0122 92ff0122 ff924044 92ff0122 ff924044 - {c=>74,a=>109,b=>2} 6d00024a 6d00024a 6d00024a 006d8094 6d00024a 6d00024a 006d8094 6d00024a 006d8094 - {c=>106,a=>85,b=>3} 5500036a 5500036a 5500036a 0055c0d4 5500036a 5500036a 0055c0d4 5500036a 0055c0d4 - {c=>103,a=>-49,b=>2} cfff0267 cfff0267 cfff0267 ffcf80ce cfff0267 cfff0267 ffcf80ce cfff0267 ffcf80ce = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>65,a=>120,b=>3,d=>2} 780003410200 780003410200 780003410200 0078c0828000 7800034102000000 780003410200 0078c0828000 780003410200 0078c0828000 - {c=>0,a=>-65,b=>1,d=>0} bfff01000000 bfff01000000 bfff01000000 ffbf40000000 bfff010000000000 bfff01000000 ffbf40000000 bfff01000000 ffbf40000000 - {c=>45,a=>-28,b=>3,d=>3} e4ff032d0300 e4ff032d0300 e4ff032d0300 ffe4c05ac000 e4ff032d03000000 e4ff032d0300 ffe4c05ac000 e4ff032d0300 ffe4c05ac000 - {c=>47,a=>-69,b=>0,d=>1} bbff002f0100 bbff002f0100 bbff002f0100 ffbb005e4000 bbff002f01000000 bbff002f0100 ffbb005e4000 bbff002f0100 ffbb005e4000 - {c=>58,a=>-126,b=>2,d=>3} 82ff023a0300 82ff023a0300 82ff023a0300 ff828074c000 82ff023a03000000 82ff023a0300 ff828074c000 82ff023a0300 ff828074c000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>23184,c=>121,a=>-111,b=>3,d=>2} 91ff03790200905a 91ff03790200905a 91ff03790200905a ff91c0f28000b520 91ff03790200905a 91ff03790200905a ff91c0f28000b520 91ff03790200905a ff91c0f28000b520 - {e=>10634,c=>6,a=>0,b=>0,d=>1} 0000000601008a29 0000000601008a29 0000000601008a29 0000000c40005314 0000000601008a29 0000000601008a29 0000000c40005314 0000000601008a29 0000000c40005314 - {e=>1052,c=>95,a=>-110,b=>0,d=>3} 92ff005f03001c04 92ff005f03001c04 92ff005f03001c04 ff9200bec0000838 92ff005f03001c04 92ff005f03001c04 ff9200bec0000838 92ff005f03001c04 ff9200bec0000838 - {e=>30124,c=>4,a=>-80,b=>0,d=>1} b0ff00040100ac75 b0ff00040100ac75 b0ff00040100ac75 ffb000084000eb58 b0ff00040100ac75 b0ff00040100ac75 ffb000084000eb58 b0ff00040100ac75 ffb000084000eb58 - {e=>6111,c=>70,a=>-3,b=>0,d=>2} fdff00460200df17 fdff00460200df17 fdff00460200df17 fffd008c80002fbe fdff00460200df17 fdff00460200df17 fffd008c80002fbe fdff00460200df17 fffd008c80002fbe = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>27293,c=>0,a=>6,b=>1,d=>1} 0600010001009d6a 0600010001009d6a 0600010001009d6a 000640004000d53a 0600010001009d6a 0600010001009d6a 000640004000d53a 0600010001009d6a 000640004000d53a - {e=>7905,c=>88,a=>-84,b=>2,d=>1} acff02580100e11e acff02580100e11e acff02580100e11e ffac80b040003dc2 acff02580100e11e acff02580100e11e ffac80b040003dc2 acff02580100e11e ffac80b040003dc2 - {e=>25121,c=>6,a=>8,b=>1,d=>3} 0800010603002162 0800010603002162 0800010603002162 0008400cc000c442 0800010603002162 0800010603002162 0008400cc000c442 0800010603002162 0008400cc000c442 - {e=>31153,c=>31,a=>-128,b=>0,d=>1} 80ff001f0100b179 80ff001f0100b179 80ff001f0100b179 ff80003e4000f362 80ff001f0100b179 80ff001f0100b179 ff80003e4000f362 80ff001f0100b179 ff80003e4000f362 - {e=>26840,c=>3,a=>-81,b=>0,d=>1} afff00030100d868 afff00030100d868 afff00030100d868 ffaf00064000d1b0 afff00030100d868 afff00030100d868 ffaf00064000d1b0 afff00030100d868 ffaf00064000d1b0 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>14623,c=>76,a=>81,b=>1,d=>0,f=>0} 5100014c00001f3900000000 5100014c00001f3900000000 5100014c00001f3900000000 005140980000723e00000000 5100014c00001f3900000000 5100014c00001f3900000000 005140980000723e00000000 5100014c00001f3900000000 005140980000723e00000000 - {e=>15019,c=>26,a=>124,b=>1,d=>1,f=>0} 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 007c40344000755600000000 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 007c40344000755600000000 7c00011a0100ab3a00000000 007c40344000755600000000 - {e=>20293,c=>73,a=>-24,b=>3,d=>1,f=>2} e8ff03490100454f02000000 e8ff03490100454f02000000 e8ff03490100454f02000000 ffe8c09240009e8a80000000 e8ff03490100454f02000000 e8ff03490100454f02000000 ffe8c09240009e8a80000000 e8ff03490100454f02000000 ffe8c09240009e8a80000000 - {e=>10913,c=>40,a=>116,b=>1,d=>3,f=>3} 740001280300a12a03000000 740001280300a12a03000000 740001280300a12a03000000 00744050c0005542c0000000 740001280300a12a03000000 740001280300a12a03000000 00744050c0005542c0000000 740001280300a12a03000000 00744050c0005542c0000000 - {e=>7039,c=>44,a=>-19,b=>1,d=>3,f=>3} edff012c03007f1b03000000 edff012c03007f1b03000000 edff012c03007f1b03000000 ffed4058c00036fec0000000 edff012c03007f1b03000000 edff012c03007f1b03000000 ffed4058c00036fec0000000 edff012c03007f1b03000000 ffed4058c00036fec0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>24746,c=>73,a=>96,g=>1050064470,b=>1,d=>2,f=>3} 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e 006040928000c154c00000007d2d6cac 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e 006040928000c154c00000007d2d6cac 600001490200aa600300000056b6963e 006040928000c154c00000007d2d6cac - {e=>3803,c=>22,a=>94,g=>1842484087,b=>1,d=>2,f=>1} 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d 005e402c80001db640000000dba426ee 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d 005e402c80001db640000000dba426ee 5e0001160200db0e010000007713d26d 005e402c80001db640000000dba426ee - {e=>214,c=>123,a=>77,g=>1848243584,b=>0,d=>3,f=>3} 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e 004d00f6c00001acc0000000dc53eb00 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e 004d00f6c00001acc0000000dc53eb00 4d00007b0300d6000300000080f5296e 004d00f6c00001acc0000000dc53eb00 - {e=>26881,c=>70,a=>-34,g=>434815639,b=>2,d=>3,f=>2} deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 ffde808cc000d2028000000033d5852e deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 ffde808cc000d2028000000033d5852e deff0246030001690200000097c2ea19 ffde808cc000d2028000000033d5852e - {e=>29110,c=>65,a=>70,g=>1149188362,b=>3,d=>1,f=>1} 460003410100b671010000000a397f44 460003410100b671010000000a397f44 460003410100b671010000000a397f44 0046c0824000e36c4000000088fe7214 460003410100b671010000000a397f44 460003410100b671010000000a397f44 0046c0824000e36c4000000088fe7214 460003410100b671010000000a397f44 0046c0824000e36c4000000088fe7214 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>14421,a=>-30,d=>3,c=>26,h=>141,b=>1,g=>4188654,f=>3} e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 ffe24034c00070aac0000000007fd3dc8d000000 e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 ffe24034c00070aac0000000007fd3dc8d000000 e2ff011a0300553803000000eee93f008d000000 ffe24034c00070aac0000000007fd3dc8d000000 - {e=>8456,a=>9,d=>3,c=>14,h=>64,b=>1,g=>622335221,f=>2} 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 0009401cc0004210800000004a3029ea40000000 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 0009401cc0004210800000004a3029ea40000000 0900010e0300082102000000f514182540000000 0009401cc0004210800000004a3029ea40000000 - {e=>4776,a=>81,d=>2,c=>60,h=>86,b=>1,g=>767737936,f=>2} 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 0051407880002550800000005b8580a056000000 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 0051407880002550800000005b8580a056000000 5100013c0200a8120200000050c0c22d56000000 0051407880002550800000005b8580a056000000 - {e=>23388,a=>-75,d=>2,c=>8,h=>15,b=>3,g=>884282703,f=>1} b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 ffb5c0108000b6b840000000696a2a9e0f000000 b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 ffb5c0108000b6b840000000696a2a9e0f000000 b5ff030802005c5b010000004f15b5340f000000 ffb5c0108000b6b840000000696a2a9e0f000000 - {e=>12562,a=>25,d=>1,c=>64,h=>193,b=>0,g=>817252271,f=>0} 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 001900804000622400000000616c8f5ec1000000 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 001900804000622400000000616c8f5ec1000000 190000400100123100000000af47b630c1000000 001900804000622400000000616c8f5ec1000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>103,b=>3} 6700000003000000 6700000003000000 6700000003000000 00000067c0000000 6700000003000000 6700000003000000 00000067c0000000 6700000003000000 00000067c0000000 - {a=>40,b=>0} 2800000000000000 2800000000000000 2800000000000000 0000002800000000 2800000000000000 2800000000000000 0000002800000000 2800000000000000 0000002800000000 - {a=>49,b=>1} 3100000001000000 3100000001000000 3100000001000000 0000003140000000 3100000001000000 3100000001000000 0000003140000000 3100000001000000 0000003140000000 - {a=>21,b=>0} 1500000000000000 1500000000000000 1500000000000000 0000001500000000 1500000000000000 1500000000000000 0000001500000000 1500000000000000 0000001500000000 - {a=>111,b=>0} 6f00000000000000 6f00000000000000 6f00000000000000 0000006f00000000 6f00000000000000 6f00000000000000 0000006f00000000 6f00000000000000 0000006f00000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>103,a=>-126,b=>1} 82ffffff01670000 82ffffff01670000 82ffffff01670000 ffffff8240ce0000 82ffffff01670000 82ffffff01670000 ffffff8240ce0000 82ffffff01670000 ffffff8240ce0000 - {c=>66,a=>-92,b=>1} a4ffffff01420000 a4ffffff01420000 a4ffffff01420000 ffffffa440840000 a4ffffff01420000 a4ffffff01420000 ffffffa440840000 a4ffffff01420000 ffffffa440840000 - {c=>11,a=>61,b=>0} 3d000000000b0000 3d000000000b0000 3d000000000b0000 0000003d00160000 3d000000000b0000 3d000000000b0000 0000003d00160000 3d000000000b0000 0000003d00160000 - {c=>87,a=>-84,b=>2} acffffff02570000 acffffff02570000 acffffff02570000 ffffffac80ae0000 acffffff02570000 acffffff02570000 ffffffac80ae0000 acffffff02570000 ffffffac80ae0000 - {c=>62,a=>-50,b=>2} ceffffff023e0000 ceffffff023e0000 ceffffff023e0000 ffffffce807c0000 ceffffff023e0000 ceffffff023e0000 ffffffce807c0000 ceffffff023e0000 ffffffce807c0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>107,a=>0,b=>0} 00000000006b0000 00000000006b0000 00000000006b0000 0000000000d60000 00000000006b0000 00000000006b0000 0000000000d60000 00000000006b0000 0000000000d60000 - {c=>118,a=>-118,b=>1} 8affffff01760000 8affffff01760000 8affffff01760000 ffffff8a40ec0000 8affffff01760000 8affffff01760000 ffffff8a40ec0000 8affffff01760000 ffffff8a40ec0000 - {c=>69,a=>-37,b=>1} dbffffff01450000 dbffffff01450000 dbffffff01450000 ffffffdb408a0000 dbffffff01450000 dbffffff01450000 ffffffdb408a0000 dbffffff01450000 ffffffdb408a0000 - {c=>30,a=>91,b=>2} 5b000000021e0000 5b000000021e0000 5b000000021e0000 0000005b803c0000 5b000000021e0000 5b000000021e0000 0000005b803c0000 5b000000021e0000 0000005b803c0000 - {c=>29,a=>124,b=>0} 7c000000001d0000 7c000000001d0000 7c000000001d0000 0000007c003a0000 7c000000001d0000 7c000000001d0000 0000007c003a0000 7c000000001d0000 0000007c003a0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>61,a=>67,b=>2,d=>0} 43000000023d0000 43000000023d0000 43000000023d0000 00000043807a0000 43000000023d0000 43000000023d0000 00000043807a0000 43000000023d0000 00000043807a0000 - {c=>127,a=>17,b=>2,d=>1} 11000000027f0100 11000000027f0100 11000000027f0100 0000001180fe4000 11000000027f0100 11000000027f0100 0000001180fe4000 11000000027f0100 0000001180fe4000 - {c=>119,a=>32,b=>1,d=>1} 2000000001770100 2000000001770100 2000000001770100 0000002040ee4000 2000000001770100 2000000001770100 0000002040ee4000 2000000001770100 0000002040ee4000 - {c=>65,a=>-115,b=>0,d=>2} 8dffffff00410200 8dffffff00410200 8dffffff00410200 ffffff8d00828000 8dffffff00410200 8dffffff00410200 ffffff8d00828000 8dffffff00410200 ffffff8d00828000 - {c=>83,a=>98,b=>1,d=>1} 6200000001530100 6200000001530100 6200000001530100 0000006240a64000 6200000001530100 6200000001530100 0000006240a64000 6200000001530100 0000006240a64000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>5523,c=>25,a=>-32,b=>3,d=>2} e0ffffff0319020093150000 e0ffffff0319020093150000 e0ffffff0319020093150000 ffffffe0c03280002b260000 e0ffffff0319020093150000 e0ffffff0319020093150000 ffffffe0c03280002b260000 e0ffffff0319020093150000 ffffffe0c03280002b260000 - {e=>17834,c=>17,a=>118,b=>3,d=>1} 7600000003110100aa450000 7600000003110100aa450000 7600000003110100aa450000 00000076c02240008b540000 7600000003110100aa450000 7600000003110100aa450000 00000076c02240008b540000 7600000003110100aa450000 00000076c02240008b540000 - {e=>25877,c=>64,a=>-78,b=>2,d=>3} b2ffffff0240030015650000 b2ffffff0240030015650000 b2ffffff0240030015650000 ffffffb28080c000ca2a0000 b2ffffff0240030015650000 b2ffffff0240030015650000 ffffffb28080c000ca2a0000 b2ffffff0240030015650000 ffffffb28080c000ca2a0000 - {e=>5816,c=>42,a=>71,b=>2,d=>3} 47000000022a0300b8160000 47000000022a0300b8160000 47000000022a0300b8160000 000000478054c0002d700000 47000000022a0300b8160000 47000000022a0300b8160000 000000478054c0002d700000 47000000022a0300b8160000 000000478054c0002d700000 - {e=>29371,c=>34,a=>49,b=>0,d=>0} 3100000000220000bb720000 3100000000220000bb720000 3100000000220000bb720000 0000003100440000e5760000 3100000000220000bb720000 3100000000220000bb720000 0000003100440000e5760000 3100000000220000bb720000 0000003100440000e5760000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>24240,c=>104,a=>-100,b=>1,d=>0} 9cffffff01680000b05e0000 9cffffff01680000b05e0000 9cffffff01680000b05e0000 ffffff9c40d00000bd600000 9cffffff01680000b05e0000 9cffffff01680000b05e0000 ffffff9c40d00000bd600000 9cffffff01680000b05e0000 ffffff9c40d00000bd600000 - {e=>12831,c=>111,a=>9,b=>1,d=>3} 09000000016f03001f320000 09000000016f03001f320000 09000000016f03001f320000 0000000940dec000643e0000 09000000016f03001f320000 09000000016f03001f320000 0000000940dec000643e0000 09000000016f03001f320000 0000000940dec000643e0000 - {e=>30312,c=>91,a=>97,b=>1,d=>2} 61000000015b020068760000 61000000015b020068760000 61000000015b020068760000 0000006140b68000ecd00000 61000000015b020068760000 61000000015b020068760000 0000006140b68000ecd00000 61000000015b020068760000 0000006140b68000ecd00000 - {e=>10363,c=>58,a=>-82,b=>1,d=>0} aeffffff013a00007b280000 aeffffff013a00007b280000 aeffffff013a00007b280000 ffffffae4074000050f60000 aeffffff013a00007b280000 aeffffff013a00007b280000 ffffffae4074000050f60000 aeffffff013a00007b280000 ffffffae4074000050f60000 - {e=>29377,c=>72,a=>39,b=>0,d=>0} 2700000000480000c1720000 2700000000480000c1720000 2700000000480000c1720000 0000002700900000e5820000 2700000000480000c1720000 2700000000480000c1720000 0000002700900000e5820000 2700000000480000c1720000 0000002700900000e5820000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>17692,c=>26,a=>9,b=>2,d=>0,f=>3} 09000000021a00001c45000003000000 09000000021a00001c45000003000000 09000000021a00001c45000003000000 00000009803400008a380000c0000000 09000000021a00001c45000003000000 09000000021a00001c45000003000000 00000009803400008a380000c0000000 09000000021a00001c45000003000000 00000009803400008a380000c0000000 - {e=>27254,c=>68,a=>-9,b=>3,d=>1,f=>2} f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 fffffff7c0884000d4ec000080000000 f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 fffffff7c0884000d4ec000080000000 f7ffffff03440100766a000002000000 fffffff7c0884000d4ec000080000000 - {e=>6512,c=>116,a=>59,b=>0,d=>3,f=>0} 3b000000007403007019000000000000 3b000000007403007019000000000000 3b000000007403007019000000000000 0000003b00e8c00032e0000000000000 3b000000007403007019000000000000 3b000000007403007019000000000000 0000003b00e8c00032e0000000000000 3b000000007403007019000000000000 0000003b00e8c00032e0000000000000 - {e=>1930,c=>119,a=>83,b=>0,d=>0,f=>3} 53000000007700008a07000003000000 53000000007700008a07000003000000 53000000007700008a07000003000000 0000005300ee00000f140000c0000000 53000000007700008a07000003000000 53000000007700008a07000003000000 0000005300ee00000f140000c0000000 53000000007700008a07000003000000 0000005300ee00000f140000c0000000 - {e=>15816,c=>57,a=>52,b=>1,d=>3,f=>3} 3400000001390300c83d000003000000 3400000001390300c83d000003000000 3400000001390300c83d000003000000 000000344072c0007b900000c0000000 3400000001390300c83d000003000000 3400000001390300c83d000003000000 000000344072c0007b900000c0000000 3400000001390300c83d000003000000 000000344072c0007b900000c0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>30223,c=>33,a=>-100,g=>121180495,b=>1,d=>2,f=>0} 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 ffffff9c40428000ec1e0000000000000e72229e 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 ffffff9c40428000ec1e0000000000000e72229e 9cffffff012102000f760000000000004f113907 ffffff9c40428000ec1e0000000000000e72229e - {e=>18201,c=>67,a=>-52,g=>392025226,b=>0,d=>0,f=>2} ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 ffffffcc008600008e320000800000002ebba914 ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 ffffffcc008600008e320000800000002ebba914 ccffffff0043000019470000020000008ad45d17 ffffffcc008600008e320000800000002ebba914 - {e=>17360,c=>19,a=>-73,g=>394570984,b=>1,d=>1,f=>3} b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 ffffffb74026400087a00000c00000002f0959d0 b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 ffffffb74026400087a00000c00000002f0959d0 b7ffffff01130100d043000003000000e8ac8417 ffffffb74026400087a00000c00000002f0959d0 - {e=>10287,c=>34,a=>-106,g=>498558563,b=>2,d=>3,f=>3} 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d ffffff968044c000505e0000c00000003b6eccc6 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d ffffff968044c000505e0000c00000003b6eccc6 96ffffff022203002f280000030000006366b71d ffffff968044c000505e0000c00000003b6eccc6 - {e=>9740,c=>45,a=>86,g=>1880755291,b=>1,d=>0,f=>2} 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 00000056405a00004c18000080000000e03418b6 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 00000056405a00004c18000080000000e03418b6 56000000012d00000c260000020000005b0c1a70 00000056405a00004c18000080000000e03418b6 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>23079,a=>112,d=>1,c=>76,h=>172,b=>0,g=>635357675,f=>2} 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 0000007000984000b44e0000800000004bbd93d6ac000000 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 0000007000984000b44e0000800000004bbd93d6ac000000 70000000004c0100275a000002000000ebc9de25ac000000 0000007000984000b44e0000800000004bbd93d6ac000000 - {e=>26130,a=>-73,d=>3,c=>118,h=>116,b=>0,g=>1812500274,f=>1} b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 ffffffb700ecc000cc24000040000000d8111e6474000000 b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 ffffffb700ecc000cc24000040000000d8111e6474000000 b7ffffff007603001266000001000000328f086c74000000 ffffffb700ecc000cc24000040000000d8111e6474000000 - {e=>24159,a=>-26,d=>2,c=>104,h=>134,b=>0,g=>700333779,f=>0} e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 ffffffe600d08000bcbe000000000000537c7da686000000 e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 ffffffe600d08000bcbe000000000000537c7da686000000 e6ffffff006802005f5e000000000000d33ebe2986000000 ffffffe600d08000bcbe000000000000537c7da686000000 - {e=>2660,a=>-41,d=>2,c=>126,h=>49,b=>2,g=>1088641385,f=>0} d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 ffffffd780fc800014c800000000000081c6b2d231000000 d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 ffffffd780fc800014c800000000000081c6b2d231000000 d7ffffff027e0200640a0000000000006959e34031000000 ffffffd780fc800014c800000000000081c6b2d231000000 - {e=>25739,a=>-16,d=>2,c=>114,h=>244,b=>1,g=>1079005221,f=>1} f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 fffffff040e48000c91600004000000080a0a04af4000000 f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 fffffff040e48000c91600004000000080a0a04af4000000 f0ffffff017202008b6400000100000025505040f4000000 fffffff040e48000c91600004000000080a0a04af4000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>90,b=>1} 5a00000001000000 5a000000000000000100000000000000 5a000000000000000100000000000000 0000005a40000000 5a00000001000000 5a00000001000000 000000000000005a4000000000000000 5a00000001000000 0000005a40000000 - {a=>-80,b=>0} b0ffffff00000000 b0ffffffffffffff0000000000000000 b0ffffffffffffff0000000000000000 ffffffb000000000 b0ffffff00000000 b0ffffff00000000 ffffffffffffffb00000000000000000 b0ffffff00000000 ffffffb000000000 - {a=>68,b=>2} 4400000002000000 44000000000000000200000000000000 44000000000000000200000000000000 0000004480000000 4400000002000000 4400000002000000 00000000000000448000000000000000 4400000002000000 0000004480000000 - {a=>-83,b=>3} adffffff03000000 adffffffffffffff0300000000000000 adffffffffffffff0300000000000000 ffffffadc0000000 adffffff03000000 adffffff03000000 ffffffffffffffadc000000000000000 adffffff03000000 ffffffadc0000000 - {a=>-41,b=>3} d7ffffff03000000 d7ffffffffffffff0300000000000000 d7ffffffffffffff0300000000000000 ffffffd7c0000000 d7ffffff03000000 d7ffffff03000000 ffffffffffffffd7c000000000000000 d7ffffff03000000 ffffffd7c0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>109,a=>96,b=>1} 60000000016d0000 6000000000000000016d000000000000 6000000000000000016d000000000000 0000006040da0000 60000000016d0000 60000000016d0000 000000000000006040da000000000000 60000000016d0000 0000006040da0000 - {c=>31,a=>-56,b=>2} c8ffffff021f0000 c8ffffffffffffff021f000000000000 c8ffffffffffffff021f000000000000 ffffffc8803e0000 c8ffffff021f0000 c8ffffff021f0000 ffffffffffffffc8803e000000000000 c8ffffff021f0000 ffffffc8803e0000 - {c=>61,a=>16,b=>3} 10000000033d0000 1000000000000000033d000000000000 1000000000000000033d000000000000 00000010c07a0000 10000000033d0000 10000000033d0000 0000000000000010c07a000000000000 10000000033d0000 00000010c07a0000 - {c=>108,a=>110,b=>1} 6e000000016c0000 6e00000000000000016c000000000000 6e00000000000000016c000000000000 0000006e40d80000 6e000000016c0000 6e000000016c0000 000000000000006e40d8000000000000 6e000000016c0000 0000006e40d80000 - {c=>19,a=>38,b=>3} 2600000003130000 26000000000000000313000000000000 26000000000000000313000000000000 00000026c0260000 2600000003130000 2600000003130000 0000000000000026c026000000000000 2600000003130000 00000026c0260000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>11,a=>-122,b=>1} 86ffffff010b0000 86ffffffffffffff010b000000000000 86ffffffffffffff010b000000000000 ffffff8640160000 86ffffff010b0000 86ffffff010b0000 ffffffffffffff864016000000000000 86ffffff010b0000 ffffff8640160000 - {c=>97,a=>16,b=>1} 1000000001610000 10000000000000000161000000000000 10000000000000000161000000000000 0000001040c20000 1000000001610000 1000000001610000 000000000000001040c2000000000000 1000000001610000 0000001040c20000 - {c=>80,a=>-128,b=>2} 80ffffff02500000 80ffffffffffffff0250000000000000 80ffffffffffffff0250000000000000 ffffff8080a00000 80ffffff02500000 80ffffff02500000 ffffffffffffff8080a0000000000000 80ffffff02500000 ffffff8080a00000 - {c=>14,a=>123,b=>0} 7b000000000e0000 7b00000000000000000e000000000000 7b00000000000000000e000000000000 0000007b001c0000 7b000000000e0000 7b000000000e0000 000000000000007b001c000000000000 7b000000000e0000 0000007b001c0000 - {c=>103,a=>47,b=>2} 2f00000002670000 2f000000000000000267000000000000 2f000000000000000267000000000000 0000002f80ce0000 2f00000002670000 2f00000002670000 000000000000002f80ce000000000000 2f00000002670000 0000002f80ce0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>34,a=>-101,b=>0,d=>3} 9bffffff00220300 9bffffffffffffff0022030000000000 9bffffffffffffff0022030000000000 ffffff9b0044c000 9bffffff00220300 9bffffff00220300 ffffffffffffff9b0044c00000000000 9bffffff00220300 ffffff9b0044c000 - {c=>68,a=>-41,b=>0,d=>2} d7ffffff00440200 d7ffffffffffffff0044020000000000 d7ffffffffffffff0044020000000000 ffffffd700888000 d7ffffff00440200 d7ffffff00440200 ffffffffffffffd70088800000000000 d7ffffff00440200 ffffffd700888000 - {c=>43,a=>8,b=>0,d=>3} 08000000002b0300 0800000000000000002b030000000000 0800000000000000002b030000000000 000000080056c000 08000000002b0300 08000000002b0300 00000000000000080056c00000000000 08000000002b0300 000000080056c000 - {c=>1,a=>-35,b=>1,d=>1} ddffffff01010100 ddffffffffffffff0101010000000000 ddffffffffffffff0101010000000000 ffffffdd40024000 ddffffff01010100 ddffffff01010100 ffffffffffffffdd4002400000000000 ddffffff01010100 ffffffdd40024000 - {c=>76,a=>104,b=>1,d=>0} 68000000014c0000 6800000000000000014c000000000000 6800000000000000014c000000000000 0000006840980000 68000000014c0000 68000000014c0000 00000000000000684098000000000000 68000000014c0000 0000006840980000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>24942,c=>46,a=>6,b=>3,d=>1} 06000000032e01006e610000 0600000000000000032e01006e610000 0600000000000000032e01006e610000 00000006c05c4000c2dc0000 06000000032e01006e610000 06000000032e01006e610000 0000000000000006c05c4000c2dc0000 06000000032e01006e610000 00000006c05c4000c2dc0000 - {e=>21474,c=>50,a=>-44,b=>1,d=>1} d4ffffff01320100e2530000 d4ffffffffffffff01320100e2530000 d4ffffffffffffff01320100e2530000 ffffffd440644000a7c40000 d4ffffff01320100e2530000 d4ffffff01320100e2530000 ffffffffffffffd440644000a7c40000 d4ffffff01320100e2530000 ffffffd440644000a7c40000 - {e=>3529,c=>20,a=>82,b=>2,d=>1} 5200000002140100c90d0000 520000000000000002140100c90d0000 520000000000000002140100c90d0000 00000052802840001b920000 5200000002140100c90d0000 5200000002140100c90d0000 0000000000000052802840001b920000 5200000002140100c90d0000 00000052802840001b920000 - {e=>17185,c=>27,a=>101,b=>1,d=>1} 65000000011b010021430000 6500000000000000011b010021430000 6500000000000000011b010021430000 000000654036400086420000 65000000011b010021430000 65000000011b010021430000 00000000000000654036400086420000 65000000011b010021430000 000000654036400086420000 - {e=>16801,c=>73,a=>65,b=>2,d=>0} 4100000002490000a1410000 410000000000000002490000a1410000 410000000000000002490000a1410000 000000418092000083420000 4100000002490000a1410000 4100000002490000a1410000 00000000000000418092000083420000 4100000002490000a1410000 000000418092000083420000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>19824,c=>4,a=>-13,b=>0,d=>3} f3ffffff00040300704d0000 f3ffffffffffffff00040300704d0000 f3ffffffffffffff00040300704d0000 fffffff30008c0009ae00000 f3ffffff00040300704d0000 f3ffffff00040300704d0000 fffffffffffffff30008c0009ae00000 f3ffffff00040300704d0000 fffffff30008c0009ae00000 - {e=>26529,c=>110,a=>-18,b=>0,d=>0} eeffffff006e0000a1670000 eeffffffffffffff006e0000a1670000 eeffffffffffffff006e0000a1670000 ffffffee00dc0000cf420000 eeffffff006e0000a1670000 eeffffff006e0000a1670000 ffffffffffffffee00dc0000cf420000 eeffffff006e0000a1670000 ffffffee00dc0000cf420000 - {e=>19156,c=>80,a=>-61,b=>3,d=>3} c3ffffff03500300d44a0000 c3ffffffffffffff03500300d44a0000 c3ffffffffffffff03500300d44a0000 ffffffc3c0a0c00095a80000 c3ffffff03500300d44a0000 c3ffffff03500300d44a0000 ffffffffffffffc3c0a0c00095a80000 c3ffffff03500300d44a0000 ffffffc3c0a0c00095a80000 - {e=>3691,c=>27,a=>-58,b=>3,d=>1} c6ffffff031b01006b0e0000 c6ffffffffffffff031b01006b0e0000 c6ffffffffffffff031b01006b0e0000 ffffffc6c03640001cd60000 c6ffffff031b01006b0e0000 c6ffffff031b01006b0e0000 ffffffffffffffc6c03640001cd60000 c6ffffff031b01006b0e0000 ffffffc6c03640001cd60000 - {e=>19252,c=>104,a=>-126,b=>0,d=>3} 82ffffff00680300344b0000 82ffffffffffffff00680300344b0000 82ffffffffffffff00680300344b0000 ffffff8200d0c00096680000 82ffffff00680300344b0000 82ffffff00680300344b0000 ffffffffffffff8200d0c00096680000 82ffffff00680300344b0000 ffffff8200d0c00096680000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>26648,c=>18,a=>21,b=>0,d=>0,f=>3} 15000000001200001868000003000000 150000000000000000120000186800000300000000000000 150000000000000000120000186800000300000000000000 0000001500240000d0300000c0000000 15000000001200001868000003000000 15000000001200001868000003000000 000000000000001500240000d0300000c000000000000000 15000000001200001868000003000000 0000001500240000d0300000c0000000 - {e=>4058,c=>41,a=>53,b=>2,d=>1,f=>1} 3500000002290100da0f000001000000 350000000000000002290100da0f00000100000000000000 350000000000000002290100da0f00000100000000000000 00000035805240001fb4000040000000 3500000002290100da0f000001000000 3500000002290100da0f000001000000 0000000000000035805240001fb400004000000000000000 3500000002290100da0f000001000000 00000035805240001fb4000040000000 - {e=>32076,c=>52,a=>69,b=>0,d=>3,f=>0} 45000000003403004c7d000000000000 4500000000000000003403004c7d00000000000000000000 4500000000000000003403004c7d00000000000000000000 000000450068c000fa98000000000000 45000000003403004c7d000000000000 45000000003403004c7d000000000000 00000000000000450068c000fa9800000000000000000000 45000000003403004c7d000000000000 000000450068c000fa98000000000000 - {e=>1444,c=>19,a=>67,b=>0,d=>3,f=>2} 4300000000130300a405000002000000 430000000000000000130300a40500000200000000000000 430000000000000000130300a40500000200000000000000 000000430026c0000b48000080000000 4300000000130300a405000002000000 4300000000130300a405000002000000 00000000000000430026c0000b4800008000000000000000 4300000000130300a405000002000000 000000430026c0000b48000080000000 - {e=>24969,c=>106,a=>-88,b=>3,d=>1,f=>2} a8ffffff036a01008961000002000000 a8ffffffffffffff036a0100896100000200000000000000 a8ffffffffffffff036a0100896100000200000000000000 ffffffa8c0d44000c312000080000000 a8ffffff036a01008961000002000000 a8ffffff036a01008961000002000000 ffffffffffffffa8c0d44000c31200008000000000000000 a8ffffff036a01008961000002000000 ffffffa8c0d44000c312000080000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16632,c=>60,a=>-40,g=>1817886941,b=>2,d=>3,f=>0} d8ffffff023c0300f840000000000000ddc05a6c d8ffffffffffffff023c0300f840000000000000ddc05a6c d8ffffffffffffff023c0300f840000000000000ddc05a6c ffffffd88078c00081f0000000000000d8b581ba d8ffffff023c0300f840000000000000ddc05a6c d8ffffff023c0300f840000000000000ddc05a6c ffffffffffffffd88078c00081f0000000000000d8b581ba d8ffffff023c0300f840000000000000ddc05a6c ffffffd88078c00081f0000000000000d8b581ba - {e=>473,c=>72,a=>-41,g=>52496826,b=>2,d=>0,f=>3} d7ffffff02480000d901000003000000ba092103 d7ffffffffffffff02480000d901000003000000ba092103 d7ffffffffffffff02480000d901000003000000ba092103 ffffffd78090000003b20000c000000006421374 d7ffffff02480000d901000003000000ba092103 d7ffffff02480000d901000003000000ba092103 ffffffffffffffd78090000003b20000c000000006421374 d7ffffff02480000d901000003000000ba092103 ffffffd78090000003b20000c000000006421374 - {e=>11344,c=>93,a=>112,g=>612815542,b=>2,d=>3,f=>3} 70000000025d0300502c000003000000b6d28624 7000000000000000025d0300502c000003000000b6d28624 7000000000000000025d0300502c000003000000b6d28624 0000007080bac00058a00000c0000000490da56c 70000000025d0300502c000003000000b6d28624 70000000025d0300502c000003000000b6d28624 000000000000007080bac00058a00000c0000000490da56c 70000000025d0300502c000003000000b6d28624 0000007080bac00058a00000c0000000490da56c - {e=>19196,c=>13,a=>-21,g=>359321552,b=>3,d=>0,f=>1} ebffffff030d0000fc4a000001000000d0cf6a15 ebffffffffffffff030d0000fc4a000001000000d0cf6a15 ebffffffffffffff030d0000fc4a000001000000d0cf6a15 ffffffebc01a000095f80000400000002ad59fa0 ebffffff030d0000fc4a000001000000d0cf6a15 ebffffff030d0000fc4a000001000000d0cf6a15 ffffffffffffffebc01a000095f80000400000002ad59fa0 ebffffff030d0000fc4a000001000000d0cf6a15 ffffffebc01a000095f80000400000002ad59fa0 - {e=>17883,c=>107,a=>108,g=>578088007,b=>3,d=>0,f=>1} 6c000000036b0000db4500000100000047ec7422 6c00000000000000036b0000db4500000100000047ec7422 6c00000000000000036b0000db4500000100000047ec7422 0000006cc0d600008bb600004000000044e9d88e 6c000000036b0000db4500000100000047ec7422 6c000000036b0000db4500000100000047ec7422 000000000000006cc0d600008bb600004000000044e9d88e 6c000000036b0000db4500000100000047ec7422 0000006cc0d600008bb600004000000044e9d88e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>12541,a=>64,d=>0,c=>105,h=>135,b=>2,g=>30539544,f=>0} 4000000002690000fd3000000000000018ffd10187000000 400000000000000002690000fd3000000000000018ffd1018700000000000000 400000000000000002690000fd3000000000000018ffd1018700000000000000 0000004080d2000061fa00000000000003a3fe3087000000 4000000002690000fd3000000000000018ffd10187000000 4000000002690000fd3000000000000018ffd10187000000 000000000000004080d2000061fa00000000000003a3fe308700000000000000 4000000002690000fd3000000000000018ffd10187000000 0000004080d2000061fa00000000000003a3fe3087000000 - {e=>20492,a=>-87,d=>3,c=>8,h=>213,b=>1,g=>1628818689,f=>3} a9ffffff010803000c5000000300000001cd1561d5000000 a9ffffffffffffff010803000c5000000300000001cd1561d500000000000000 a9ffffffffffffff010803000c5000000300000001cd1561d500000000000000 ffffffa94010c000a0180000c0000000c22b9a02d5000000 a9ffffff010803000c5000000300000001cd1561d5000000 a9ffffff010803000c5000000300000001cd1561d5000000 ffffffffffffffa94010c000a0180000c0000000c22b9a02d500000000000000 a9ffffff010803000c5000000300000001cd1561d5000000 ffffffa94010c000a0180000c0000000c22b9a02d5000000 - {e=>19965,a=>102,d=>3,c=>44,h=>160,b=>1,g=>1186990891,f=>0} 66000000012c0300fd4d0000000000002b0bc046a0000000 6600000000000000012c0300fd4d0000000000002b0bc046a000000000000000 6600000000000000012c0300fd4d0000000000002b0bc046a000000000000000 000000664058c0009bfa0000000000008d801656a0000000 66000000012c0300fd4d0000000000002b0bc046a0000000 66000000012c0300fd4d0000000000002b0bc046a0000000 00000000000000664058c0009bfa0000000000008d801656a000000000000000 66000000012c0300fd4d0000000000002b0bc046a0000000 000000664058c0009bfa0000000000008d801656a0000000 - {e=>4623,a=>123,d=>0,c=>12,h=>32,b=>0,g=>776268733,f=>1} 7b000000000c00000f12000001000000bdeb442e20000000 7b00000000000000000c00000f12000001000000bdeb442e2000000000000000 7b00000000000000000c00000f12000001000000bdeb442e2000000000000000 0000007b00180000241e0000400000005c89d77a20000000 7b000000000c00000f12000001000000bdeb442e20000000 7b000000000c00000f12000001000000bdeb442e20000000 000000000000007b00180000241e0000400000005c89d77a2000000000000000 7b000000000c00000f12000001000000bdeb442e20000000 0000007b00180000241e0000400000005c89d77a20000000 - {e=>32210,a=>87,d=>3,c=>96,h=>9,b=>0,g=>416850484,f=>1} 5700000000600300d27d00000100000034a2d81809000000 570000000000000000600300d27d00000100000034a2d8180900000000000000 570000000000000000600300d27d00000100000034a2d8180900000000000000 0000005700c0c000fba400004000000031b1446809000000 5700000000600300d27d00000100000034a2d81809000000 5700000000600300d27d00000100000034a2d81809000000 000000000000005700c0c000fba400004000000031b144680900000000000000 5700000000600300d27d00000100000034a2d81809000000 0000005700c0c000fba400004000000031b1446809000000 = Convert-Binary-C-0.85/tests/220_new.t0000644000175000001440000000135614677003452015723 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 3; } # This test is basically only for the 901_memory.t test $c = eval { Convert::Binary::C->new }; ok( $@, '' ); $c = eval { Convert::Binary::C->new( 'foo' ) }; ok( $@, qr/^Number of configuration arguments to new must be even/ ); $c = eval { Convert::Binary::C->new( foo => 42 ) }; ok( $@, qr/^Invalid option 'foo'/ ); Convert-Binary-C-0.85/tests/212_clean.t0000644000175000001440000000163714677003452016217 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 6 } eval { $c = Convert::Binary::C->new; }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $c->clean; }; ok($@,'',"failed to clean object"); eval { $c->parse( 'typedef struct foo { enum bar { ZERO } baz; } mytype;' ); }; ok($@,'',"failed to parse code"); eval { $copy = $c->clean; }; ok($@,'',"failed to clean object"); ok($copy, $c, "clean does not return an object reference"); eval { my $foo = $c->struct; }; ok( $@, qr/without parse data/, "parse data check failed" ); Convert-Binary-C-0.85/tests/232_native.t0000644000175000001440000000432714677003452016424 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Config; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 69 } eval { $s = Convert::Binary::C::native('IntSize'); }; ok($@, ''); ok($s > 0); eval { $s = Convert::Binary::C::native('foobar'); }; ok($@, qr/^Invalid property 'foobar'/); eval { $s = Convert::Binary::C::native('EnumType'); }; ok($@, qr/^Invalid property 'EnumType'/); $c = Convert::Binary::C->new; eval { $s2 = $c->native('IntSize'); }; ok($@, ''); ok($s2 > 0); ok($s == $s2); $warn_utf8 = 0; for my $prop (qw( PointerSize IntSize CharSize ShortSize LongSize LongLongSize FloatSize DoubleSize LongDoubleSize Alignment CompoundAlignment )) { my $nat = $c->native($prop); ok($nat, Convert::Binary::C::native($prop)); print "# native($prop) = $nat\n"; my $cfgvar = lc $prop; if (exists $Config{$cfgvar}) { print "# found \$Config{$cfgvar}\n"; my $val = $Config{$cfgvar}; if ($val =~ /^\d+$/) { ok($val, $c->native($prop)); next; } warn " *** Your perl seems to have broken UTF-8 support ***\n" if $ENV{LANG} =~ /utf/i and not $warn_utf8++; $val =~ s/\n/\\n/g; $val =~ s/\r/\\r/g; print "# \$Config{$cfgvar} looks broken: [$val]\n"; } ok($c->native($prop), qr/^(?:1|2|4|8|12|16)$/); } ok($c->native('EnumSize'), qr/^(?:-1|0|1|2|4|8)$/); ok($c->native('ByteOrder'), qr/^(?:Big|Little)Endian$/); ok($c->native('ByteOrder'), byte_order()); ok($c->native('UnsignedChars'), qr/^(?:0|1)$/); ok($c->native('UnsignedBitfields'), qr/^(?:0|1)$/); $nh1 = $c->native; $nh2 = Convert::Binary::C::native(); ok(join(':', sort keys %$nh1), join(':', sort keys %$nh2)); for (keys %$nh1) { ok($nh1->{$_}, $nh2->{$_}); ok($nh1->{$_}, $c->native($_)); } sub byte_order { my $byteorder = $Config{byteorder} || unpack( "a*", pack "L", 0x34333231 ); $byteorder eq '4321' || $byteorder eq '87654321' ? 'BigEndian' : 'LittleEndian'; } Convert-Binary-C-0.85/tests/223_initializer.t0000644000175000001440000001410414677003452017453 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 27 } my $CCCFG = require './tests/include/config.pl'; $c = eval { Convert::Binary::C->new( %$CCCFG ) }; ok($@,'',"failed to create Convert::Binary::C objects"); eval { $c->parse_file( 'tests/include/include.c' ) }; ok($@,'',"failed to parse C-file"); $full = $zero = $c->sourcify; for( $c->typedef_names ) { next if $c->sizeof($_) == 0; my $pre = "\n$_ S_$_ = "; my $post = ";\n"; my $init = $c->unpack( $_, $c->pack($_) ); $zero .= $pre . $c->initializer( $_ ) . $post; $full .= $pre . $c->initializer( $_, $init ) . $post; } $c = eval { Convert::Binary::C->new }; ok($@,'',"failed to create Convert::Binary::C objects"); { my @warn; local $SIG{__WARN__} = sub { push @warn, $_[0] }; eval { $c->clean->parse( $zero ) }; ok($@,'',"failed to parse zero initialization code"); eval { $c->clean->parse( $full ) }; ok($@,'',"failed to parse full initialization code"); ok( @warn == 0 ); } for my $snip ( split /={40,}/, do { local $/; } ) { my($code, @tests) = split /-{40,}/, $snip; eval { $c->clean->parse($code) }; ok($@,'',"failed to parse code snippet"); for my $test ( @tests ) { $test =~ s/#.*//gm; my($data, $id, $ref) = $test =~ /^\s*(?:\$\s*=\s*(.*?))?\s*(\w+)\s*=\s*(.*?)\s*$/; my $init = defined $data ? $c->initializer( $id, eval $data ) : $c->initializer( $id ); $init =~ s/\s+//g; $ref =~ s/\s+//g; print "# ref : $ref\n# init: $init\n"; ok( $init, $ref, "wrong return value" ); } } __DATA__ /* check that only the first union member is initialized */ typedef union { int c[10]; struct { char a, b; } d[2]; } uni; struct xxx { int a; union { struct { int a, b; uni; } a; int b; int c[10][10]; } b; int c; }; struct test { union { union { union { int a; int b; int c; } d; int e; int f; } g; int h; int i; } j; union { union { union { int a; int b; int c; }; int e; int f; }; int h; int i; }; }; ------------------------------------------------------------------------------- xxx = { 0, { { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, 0 } ------------------------------------------------------------------------------- uni = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } ------------------------------------------------------------------------------- test = { { { { 0 } } }, { { { 0 } } } } ------------------------------------------------------------------------------- $ = { j => { g => { d => { a => 42 } } }, a => -4711 } test = { { { { 42 } } }, { { { -4711 } } } } ------------------------------------------------------------------------------- $ = { j => { g => { d => { b => 42 } } }, e => -4711, a => 101 } test = { { { { 0 } } }, { { { 101 } } } } =============================================================================== /* just another example */ struct foo { int a; union { int a; struct { union { int a; char b; } a; int b; } b; char c; } b; struct { int a; union { struct { char a; int b; } a; int b; } b; char c; } c; int d; struct { int xa; int ba; }; }; ------------------------------------------------------------------------------- foo = { 0, { 0 }, { 0, { { 0, 0 } }, 0 }, 0, { 0, 0 } } =============================================================================== /* check that bitfields are working */ struct bits { int a:3; int :0; int c:2; int d:4; }; ------------------------------------------------------------------------------- bits = { 0, 0, 0 } ------------------------------------------------------------------------------- $ = { a => 3, c => 2, d => 1 } bits = { 3, 2, 1 } ------------------------------------------------------------------------------- $ = { a => 3, x => 2, d => 1 } bits = { 3, 0, 1 } =============================================================================== /* check that bitfield padding is skipped */ struct bits { int :7; int a:3; int c:2; int d:4; }; ------------------------------------------------------------------------------- bits = { 0, 0, 0 } =============================================================================== /* taken from the docs, this revealed a bug introduced * with flexible array members */ struct date { unsigned year : 12; unsigned month: 4; unsigned day : 5; unsigned hour : 5; unsigned min : 6; }; typedef struct { enum { DATE, QWORD } type; short number; union { struct date date; unsigned long qword; } choice; } data; ------------------------------------------------------------------------------- data = { 0, 0, { { 0, 0, 0, 0, 0 } } } ------------------------------------------------------------------------------- # we should be able to initialize enums $ = { type => 1 } data = { 1, 0, { { 0, 0, 0, 0, 0 } } } ------------------------------------------------------------------------------- # even when out of range $ = { type => 2 } data = { 2, 0, { { 0, 0, 0, 0, 0 } } } ------------------------------------------------------------------------------- # also by name $ = { type => 'DATE' } data = { DATE, 0, { { 0, 0, 0, 0, 0 } } } ------------------------------------------------------------------------------- # even if it doesn't exist (could be some define) $ = { type => 'SOMETHING' } data = { SOMETHING, 0, { { 0, 0, 0, 0, 0 } } } ------------------------------------------------------------------------------- # this should work for 'normal' types as well $ = { number => 'SOMETHING' } data = { 0, SOMETHING, { { 0, 0, 0, 0, 0 } } } Convert-Binary-C-0.85/cbc/0000755000175000001440000000000014677003524013742 5ustar mhxusersConvert-Binary-C-0.85/cbc/member.h0000644000175000001440000000616014677003452015365 0ustar mhxusers/******************************************************************************* * * HEADER: member.h * ******************************************************************************** * * DESCRIPTION: C::B::C struct member utilities * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_MEMBER_H #define _CBC_MEMBER_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "util/list.h" #include "util/hash.h" #include "ctlib/cttype.h" /*===== DEFINES ==============================================================*/ #define CBC_GM_ACCEPT_DOTLESS_MEMBER 0x00000001U #define CBC_GM_DONT_CROAK 0x00000002U #define CBC_GM_NO_OFFSET_SIZE_CALC 0x00000004U #define CBC_GM_REJECT_OUT_OF_BOUNDS_INDEX 0x00000008U #define CBC_GM_REJECT_OFFSET 0x00000010U /*===== TYPEDEFS =============================================================*/ typedef struct { LinkedList hit, off, pad; HashTable htpad; } GMSInfo; typedef struct { TypeSpec type; Struct *parent; Declarator *pDecl; int level; int offset; unsigned size; u_32 flags; } MemberInfo; struct me_walk_info { enum me_walk_rv { MERV_COMPOUND_MEMBER, MERV_ARRAY_INDEX, MERV_OFFSET, MERV_ERR_INVALID_MEMBER_START, MERV_ERR_INVALID_INDEX, MERV_ERR_INVALID_CHAR, MERV_ERR_INDEX_NOT_TERMINATED, MERV_ERR_INCOMPLETE, MERV_ERR_TERMINATED, MERV_END } retval; union { struct { const char *name; size_t name_length; unsigned has_dot : 1; } compound_member; int array_index; int offset; char invalid_char; } u; }; typedef struct member_expr *MemberExprWalker; /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_all_member_strings CBC_get_all_member_strings int get_all_member_strings(pTHX_ MemberInfo *pMI, LinkedList list); #define get_member_string CBC_get_member_string SV *get_member_string(pTHX_ const MemberInfo *pMI, int offset, GMSInfo *pInfo); #define get_member CBC_get_member int get_member(pTHX_ const MemberInfo *pMI, const char *member, MemberInfo *pMIout, unsigned gm_flags); #define member_expr_walker_new CBC_member_expr_walker_new MemberExprWalker member_expr_walker_new(pTHX_ const char *expr, size_t len); #define member_expr_walker_retval_string CBC_member_expr_walker_retval_string const char *member_expr_walker_retval_string(enum me_walk_rv retval); #define member_expr_walker_walk CBC_member_expr_walker_walk void member_expr_walker_walk(pTHX_ MemberExprWalker me, struct me_walk_info *info); #define member_expr_walker_delete CBC_member_expr_walker_delete void member_expr_walker_delete(pTHX_ MemberExprWalker me); #endif Convert-Binary-C-0.85/cbc/basic.h0000644000175000001440000000326314677003452015200 0ustar mhxusers/******************************************************************************* * * HEADER: basic.h * ******************************************************************************** * * DESCRIPTION: C::B::C basic types * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_BASIC_H #define _CBC_BASIC_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/cttype.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct _basic_types *BasicTypes; /*===== FUNCTION PROTOTYPES ==================================================*/ #define basic_types_new CBC_basic_types_new BasicTypes basic_types_new(void); #define basic_types_delete CBC_basic_types_delete void basic_types_delete(BasicTypes bt); #define basic_types_clone CBC_basic_types_clone BasicTypes basic_types_clone(const BasicTypes src); #define basic_types_reset CBC_basic_types_reset void basic_types_reset(BasicTypes bt); #define basic_types_get_declarator CBC_basic_types_get_declarator Declarator *basic_types_get_declarator(BasicTypes bt, unsigned tflags); #define get_basic_type_spec CBC_get_basic_type_spec int get_basic_type_spec(const char *name, TypeSpec *pTS); #endif Convert-Binary-C-0.85/cbc/pack.c0000644000175000001440000016070214677003452015032 0ustar mhxusers/******************************************************************************* * * MODULE: pack.c * ******************************************************************************** * * DESCRIPTION: C::B::C pack/unpack routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #define NO_XSLOCKS #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/dimension.h" #include "cbc/hook.h" #include "cbc/idl.h" #include "cbc/pack.h" #include "cbc/tag.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*----------------------*/ /* access configuration */ /*----------------------*/ #define PCONFIG (&PACK->THIS->cfg) /*-----------------------------------*/ /* arguments to store_/fetch_integer */ /*-----------------------------------*/ #define SF_INT_ARGS(pBI) \ (pBI) ? (pBI)->bits : 0, \ (pBI) ? (pBI)->pos : 0, \ (pBI) ? PCONFIG->layout.byte_order : PACK->order, \ pPACKBUF /*--------------------------------*/ /* macros for buffer manipulation */ /*--------------------------------*/ #define PACKPOS PACK->buf.pos #define PACKLEN PACK->buf.length #define pPACKBUF (PACK->buf.buffer + PACKPOS) #define CHECK_BUFFER(size) \ STMT_START { \ if (PACKPOS + (size) > PACKLEN) \ { \ PACKPOS = PACKLEN; \ return newSV(0); \ } \ } STMT_END #define GROW_BUFFER(size, reason) \ STMT_START { \ unsigned long _required_ = PACKPOS + (size); \ if (_required_ > PACKLEN) \ { \ CT_DEBUG(MAIN, ("Growing output SV from %ld to %ld bytes due " \ "to %s", PACKLEN, _required_, reason)); \ PACK->buf.buffer = SvGROW(PACK->bufsv, _required_ + 1); \ SvCUR_set(PACK->bufsv, _required_); \ Zero(PACK->buf.buffer + PACKLEN, _required_ + 1 - PACKLEN, char);\ PACKLEN = _required_; \ } \ } STMT_END /*----------------*/ /* ID list macros */ /*----------------*/ #define IDLP_PUSH(what) IDLIST_PUSH(&(PACK->idl), what) #define IDLP_POP IDLIST_POP(&(PACK->idl)) #define IDLP_SET_ID(value) IDLIST_SET_ID(&(PACK->idl), value) #define IDLP_SET_IX(value) IDLIST_SET_IX(&(PACK->idl), value) /*---------------------------*/ /* handling of ByteOrder tag */ /*---------------------------*/ #define dBYTEORDER const CByteOrder old_byte_order = PACK->order #define SET_BYTEORDER(tags) \ STMT_START { \ const CtTag *BOtag = find_tag(tags, CBC_TAG_BYTE_ORDER); \ if (BOtag) \ switch (BOtag->flags) \ { \ case CBC_TAG_BYTE_ORDER_BIG_ENDIAN: \ PACK->order = CBO_BIG_ENDIAN; \ break; \ \ case CBC_TAG_BYTE_ORDER_LITTLE_ENDIAN: \ PACK->order = CBO_LITTLE_ENDIAN; \ break; \ \ default: \ fatal("Unknown byte order (%d)", BOtag->flags); \ break; \ } \ } STMT_END #define RESTORE_BYTEORDER PACK->order = old_byte_order /*------------*/ /* some flags */ /*------------*/ #define PACK_FLEXIBLE 0x00000001 /*===== TYPEDEFS =============================================================*/ struct PackInfo { Buffer buf; IDList idl; const CBC *THIS; SV *bufsv; SV *self; CByteOrder order; HV *parent; }; typedef enum { FPT_UNKNOWN, FPT_FLOAT, FPT_DOUBLE, FPT_LONG_DOUBLE } FPType; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static FPType get_fp_type(u_32 flags); static void store_float_sv(pPACKARGS, unsigned size, u_32 flags, SV *sv); static SV *fetch_float_sv(pPACKARGS, unsigned size, u_32 flags); static void store_int_sv(pPACKARGS, unsigned size, unsigned sign, const BitfieldInfo *pBI, SV *sv); static SV *fetch_int_sv(pPACKARGS, unsigned size, unsigned sign, const BitfieldInfo *pBI); static unsigned load_size(const CParseConfig *pCfg, u_32 *pFlags, const BitfieldInfo *pBI); static void prepare_pack_format(pPACKARGS, const Declarator *pDecl, const CtTag *dimtag, int *pSize, u_32 *pFlags); static void pack_pointer(pPACKARGS, SV *sv); static void pack_struct(pPACKARGS, const Struct *pStruct, SV *sv, int inlined); static void pack_enum(pPACKARGS, const EnumSpecifier *pEnumSpec, const BitfieldInfo *pBI, SV *sv); static void pack_basic(pPACKARGS, u_32 flags, const BitfieldInfo *pBI, SV *sv); static void pack_format(pPACKARGS, const CtTag *format, unsigned size, u_32 flags, SV *sv); static void pack_type(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, const BitfieldInfo *pBI, SV *sv); static SV *unpack_pointer(pPACKARGS); static SV *unpack_struct(pPACKARGS, const Struct *pStruct, HV *hash); static SV *unpack_enum(pPACKARGS, const EnumSpecifier *pEnumSpec, const BitfieldInfo *pBI); static SV *unpack_basic(pPACKARGS, u_32 flags, const BitfieldInfo *pBI); static SV *unpack_format(pPACKARGS, const CtTag *format, unsigned size, u_32 flags); static SV *unpack_type(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, const BitfieldInfo *pBI); static SV *hook_call_typespec(pTHX_ SV *self, const TypeSpec *pTS, enum HookId hook_id, SV *in, int mortal); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_fp_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static FPType get_fp_type(u_32 flags) { /* mask out irrelevant flags */ flags &= T_VOID | T_CHAR | T_SHORT | T_INT | T_LONG | T_FLOAT | T_DOUBLE | T_SIGNED | T_UNSIGNED | T_LONGLONG; /* only a couple of types are supported */ switch (flags) { case T_LONG | T_DOUBLE: return FPT_LONG_DOUBLE; case T_DOUBLE : return FPT_DOUBLE; case T_FLOAT : return FPT_FLOAT; } return FPT_UNKNOWN; } /******************************************************************************* * * ROUTINE: store_float_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #ifdef CBC_HAVE_IEEE_FP #define STORE_FLOAT(ftype) \ STMT_START { \ union { \ ftype f; \ u_8 c[sizeof(ftype)]; \ } _u; \ int _i; \ u_8 *_p = (u_8 *) pPACKBUF; \ _u.f = (ftype) SvNV(sv); \ if (PACK->order == CBC_NATIVE_BYTEORDER) \ { \ for (_i = 0; _i < (int)sizeof(ftype); _i++) \ *_p++ = _u.c[_i]; \ } \ else /* swap */ \ { \ for (_i = sizeof(ftype)-1; _i >= 0; _i--) \ *_p++ = _u.c[_i]; \ } \ } STMT_END #else /* ! CBC_HAVE_IEEE_FP */ #define STORE_FLOAT(ftype) \ STMT_START { \ if (size == sizeof(ftype)) \ { \ u_8 *_p = (u_8 *) pPACKBUF; \ ftype _v = (ftype) SvNV(sv); \ Copy(&_v, _p, 1, ftype); \ } \ else \ goto non_native; \ } STMT_END #endif /* CBC_HAVE_IEEE_FP */ static void store_float_sv(pPACKARGS, unsigned size, u_32 flags, SV *sv) { FPType type = get_fp_type(flags); if (type == FPT_UNKNOWN) { SV *str = NULL; get_basic_type_spec_string(aTHX_ &str, flags); WARN((aTHX_ "Unsupported floating point type '%s' in pack", SvPV_nolen(str))); SvREFCNT_dec(str); goto finish; } #ifdef CBC_HAVE_IEEE_FP if (size == sizeof(float)) STORE_FLOAT(float); else if (size == sizeof(double)) STORE_FLOAT(double); #if ARCH_HAVE_LONG_DOUBLE else if (size == sizeof(long double)) STORE_FLOAT(long double); #endif else WARN((aTHX_ "Cannot pack %d byte floating point values", size)); #else /* ! CBC_HAVE_IEEE_FP */ if (PACK->order != CBC_NATIVE_BYTEORDER) goto non_native; switch (type) { case FPT_FLOAT : STORE_FLOAT(float); break; case FPT_DOUBLE : STORE_FLOAT(double); break; #if ARCH_HAVE_LONG_DOUBLE case FPT_LONG_DOUBLE : STORE_FLOAT(long double); break; #endif default: goto non_native; } goto finish; non_native: WARN((aTHX_ "Cannot pack non-native floating point values", size)); #endif /* CBC_HAVE_IEEE_FP */ finish: return; } #undef STORE_FLOAT /******************************************************************************* * * ROUTINE: fetch_float_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #ifdef CBC_HAVE_IEEE_FP #define FETCH_FLOAT(ftype) \ STMT_START { \ union { \ ftype f; \ u_8 c[sizeof(ftype)]; \ } _u; \ int _i; \ u_8 *_p = (u_8 *) pPACKBUF; \ if (PACK->order == CBC_NATIVE_BYTEORDER) \ { \ for (_i = 0; _i < (int)sizeof(ftype); _i++) \ _u.c[_i] = *_p++; \ } \ else /* swap */ \ { \ for (_i = sizeof(ftype)-1; _i >= 0; _i--) \ _u.c[_i] = *_p++; \ } \ value = (NV) _u.f; \ } STMT_END #else /* ! CBC_HAVE_IEEE_FP */ #define FETCH_FLOAT(ftype) \ STMT_START { \ if (size == sizeof(ftype)) \ { \ u_8 *_p = (u_8 *) pPACKBUF; \ ftype _v; \ Copy(_p, &_v, 1, ftype); \ value = (NV) _v; \ } \ else \ goto non_native; \ } STMT_END #endif /* CBC_HAVE_IEEE_FP */ static SV *fetch_float_sv(pPACKARGS, unsigned size, u_32 flags) { FPType type = get_fp_type(flags); NV value = 0.0; if (type == FPT_UNKNOWN) { SV *str = NULL; get_basic_type_spec_string(aTHX_ &str, flags); WARN((aTHX_ "Unsupported floating point type '%s' in unpack", SvPV_nolen(str))); SvREFCNT_dec(str); goto finish; } #ifdef CBC_HAVE_IEEE_FP if (size == sizeof(float)) FETCH_FLOAT(float); else if (size == sizeof(double)) FETCH_FLOAT(double); #if ARCH_HAVE_LONG_DOUBLE else if (size == sizeof(long double)) FETCH_FLOAT(long double); #endif else WARN((aTHX_ "Cannot unpack %d byte floating point values", size)); #else /* ! CBC_HAVE_IEEE_FP */ if (PACK->order != CBC_NATIVE_BYTEORDER) goto non_native; switch (type) { case FPT_FLOAT : FETCH_FLOAT(float); break; case FPT_DOUBLE : FETCH_FLOAT(double); break; #if ARCH_HAVE_LONG_DOUBLE case FPT_LONG_DOUBLE : FETCH_FLOAT(long double); break; #endif default: goto non_native; } goto finish; non_native: WARN((aTHX_ "Cannot unpack non-native floating point values", size)); #endif /* CBC_HAVE_IEEE_FP */ finish: return newSVnv(value); } #undef FETCH_FLOAT /******************************************************************************* * * ROUTINE: store_int_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void store_int_sv(pPACKARGS, unsigned size, unsigned sign, const BitfieldInfo *pBI, SV *sv) { IntValue iv; iv.sign = sign; if (SvPOK(sv) && string_is_integer(SvPVX(sv))) iv.string = SvPVX(sv); else { iv.string = NULL; if (sign) { IV val = SvIV(sv); CT_DEBUG(MAIN, ("SvIV( sv ) = %" IVdf, val)); #if ARCH_NATIVE_64_BIT_INTEGER iv.value.s = val; #else iv.value.s.h = val < 0 ? -1 : 0; iv.value.s.l = val; #endif } else { UV val = SvUV(sv); CT_DEBUG(MAIN, ("SvUV( sv ) = %" UVuf, val)); #if ARCH_NATIVE_64_BIT_INTEGER iv.value.u = val; #else iv.value.u.h = 0; iv.value.u.l = val; #endif } } store_integer(size, SF_INT_ARGS(pBI), &iv); } /******************************************************************************* * * ROUTINE: fetch_int_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #if ARCH_NATIVE_64_BIT_INTEGER #define __SIZE_LIMIT sizeof(IV) #else #define __SIZE_LIMIT sizeof(iv.value.u.l) #endif #if defined(newSVuv) && PERL_BCDVERSION >= 0x5006000 #define HAVE_USABLE_NEWSVUV 1 #else #define HAVE_USABLE_NEWSVUV 0 #endif #if HAVE_USABLE_NEWSVUV #define __TO_UV(x) newSVuv((UV) (x)) #else #define __TO_UV(x) newSViv((IV) (x)) #endif static SV *fetch_int_sv(pPACKARGS, unsigned size, unsigned sign, const BitfieldInfo *pBI) { IntValue iv; char buffer[32]; /* * Whew, I guess that could be done better, * but at least it's working... */ #if HAVE_USABLE_NEWSVUV iv.string = size > __SIZE_LIMIT ? buffer : NULL; #else /* older perls don't have newSVuv */ iv.string = size > __SIZE_LIMIT || (size == __SIZE_LIMIT && !sign) ? buffer : NULL; #endif fetch_integer(size, sign, SF_INT_ARGS(pBI), &iv); if (iv.string) return newSVpv(iv.string, 0); #if ARCH_NATIVE_64_BIT_INTEGER return sign ? newSViv(iv.value.s ) : __TO_UV(iv.value.u ); #else return sign ? newSViv((i_32) iv.value.s.l) : __TO_UV(iv.value.u.l); #endif } #undef __SIZE_LIMIT #undef __TO_UV /******************************************************************************* * * ROUTINE: load_size * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static unsigned load_size(const CParseConfig *pCfg, u_32 *pFlags, const BitfieldInfo *pBI) { unsigned size; if (pBI) { size = pBI->size; if (pCfg->unsigned_bitfields && (*pFlags & (T_SIGNED | T_UNSIGNED)) == 0) *pFlags |= T_UNSIGNED; } else { u_32 flags = *pFlags; #define LOAD_SIZE(type) \ size = pCfg->layout.type ## _size ? pCfg->layout.type ## _size \ : CTLIB_ ## type ## _SIZE if (flags & T_VOID) /* XXX: do we want void ? */ size = 1; else if (flags & T_CHAR) { LOAD_SIZE(char); if (pCfg->unsigned_chars && (flags & (T_SIGNED | T_UNSIGNED)) == 0) flags |= T_UNSIGNED; } else if ((flags & (T_LONG | T_DOUBLE)) == (T_LONG | T_DOUBLE)) LOAD_SIZE(long_double); else if (flags & T_LONGLONG) LOAD_SIZE(long_long); else if (flags & T_FLOAT) LOAD_SIZE(float); else if (flags & T_DOUBLE) LOAD_SIZE(double); else if (flags & T_SHORT) LOAD_SIZE(short); else if (flags & T_LONG) LOAD_SIZE(long); else LOAD_SIZE(int); #undef LOAD_SIZE *pFlags = flags; } return size; } /******************************************************************************* * * ROUTINE: prepare_pack_format * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void prepare_pack_format(pPACKARGS, const Declarator *pDecl, const CtTag *dimtag, int *pSize, u_32 *pFlags) { int size, one = 0; assert(pDecl != NULL); if (dimtag || pDecl->size == 0) { if (pDecl->size == 0) { int dim = LL_count(pDecl->ext.array); one = pDecl->item_size; while (dim-- > 1) one *= ((Value *) LL_get(pDecl->ext.array, dim))->iv; } else { one = pDecl->size / ((Value *) LL_get(pDecl->ext.array, 0))->iv; } } /* check if it's an incomplete array type */ if (pDecl->array_flag && (dimtag ? dimtag_is_flexible(aTHX_ dimtag->any) : pDecl->size == 0)) { assert(one > 0); size = one; *pFlags |= PACK_FLEXIBLE; } else { if (dimtag) { assert(!dimtag_is_flexible(aTHX_ dimtag->any)); assert(one > 0); size = one * dimtag_eval(aTHX_ dimtag->any, 0, PACK->self, PACK->parent); } else { size = pDecl->size; } } assert(size > 0); *pSize = size; } /******************************************************************************* * * ROUTINE: pack_pointer * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_pointer(pPACKARGS, SV *sv) { unsigned size = PCONFIG->layout.ptr_size ? PCONFIG->layout.ptr_size : sizeof(void *); CT_DEBUG(MAIN, (XSCLASS "::pack_pointer(sv=%p)", sv)); GROW_BUFFER(size, "insufficient space"); if (DEFINED(sv) && !SvROK(sv)) store_int_sv(aPACKARGS, size, 0, NULL, sv); } /******************************************************************************* * * ROUTINE: pack_struct * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_struct(pPACKARGS, const Struct *pStruct, SV *sv, int inlined) { StructDeclaration *pStructDecl; Declarator *pDecl; long pos; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::pack_struct(pStruct=%p, sv=%p, inlined=%d)", pStruct, sv, inlined)); if (pStruct->tags && !inlined) { const CtTag *tag; if ((tag = find_tag(pStruct->tags, CBC_TAG_HOOKS)) != NULL) sv = hook_call(aTHX_ PACK->self, pStruct->tflags & T_STRUCT ? "struct " : "union ", pStruct->identifier, tag->any, HOOKID_pack, sv, 1); if ((tag = find_tag(pStruct->tags, CBC_TAG_FORMAT)) != NULL) { pack_format(aPACKARGS, tag, pStruct->size, 0, sv); return; } SET_BYTEORDER(pStruct->tags); } pos = PACKPOS; if (DEFINED(sv)) { SV *hash; if (SvROK(sv) && SvTYPE(hash = SvRV(sv)) == SVt_PVHV) { ListIterator sdi; HV *h = (HV *) hash; IDLP_PUSH(ID); LL_foreach(pStructDecl, sdi, pStruct->declarations) { if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { size_t id_len = CTT_IDLEN(pDecl); if (id_len > 0) { SV **e = hv_fetch(h, pDecl->identifier, id_len, 0); BitfieldInfo *pBI; CT_DEBUG(MAIN, ("packing member '%s'", pDecl->identifier)); if (e) { SvGETMAGIC(*e); IDLP_SET_ID(pDecl->identifier); assert(pDecl->offset >= 0); PACKPOS = pos + pDecl->offset; if (pDecl->bitfield_flag) { pBI = &pDecl->ext.bitfield; assert(pBI->bits > 0); /* because id_len is > 0, too */ assert(pBI->pos < 64); assert(pBI->size > 0 && pBI->size <= 8); } else pBI = NULL; PACK->parent = h; pack_type(aPACKARGS, &pStructDecl->type, pDecl, 0, pBI, e ? *e : NULL); PACK->parent = NULL; } } } } else { TypeSpec *pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); IDLP_POP; assert(pStructDecl->offset >= 0); PACKPOS = pos + pStructDecl->offset; pack_struct(aPACKARGS, (Struct *) pTS->ptr, sv, 1); IDLP_PUSH(ID); } } IDLP_POP; } else WARN((aTHX_ "'%s' should be a hash reference", idl_to_str(aTHX_ &(PACK->idl)))); } RESTORE_BYTEORDER; } /******************************************************************************* * * ROUTINE: pack_enum * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_enum(pPACKARGS, const EnumSpecifier *pEnumSpec, const BitfieldInfo *pBI, SV *sv) { unsigned size = pBI ? pBI->size : GET_ENUM_SIZE(PCONFIG, pEnumSpec); IV value = 0; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::pack_enum(pEnumSpec=%p, pBI=%p sv=%p)", pEnumSpec, pBI, sv)); if (pEnumSpec->tags) { const CtTag *tag; if ((tag = find_tag(pEnumSpec->tags, CBC_TAG_HOOKS)) != NULL) sv = hook_call(aTHX_ PACK->self, "enum ", pEnumSpec->identifier, tag->any, HOOKID_pack, sv, 1); if ((tag = find_tag(pEnumSpec->tags, CBC_TAG_FORMAT)) != NULL) { assert(pBI == NULL); pack_format(aPACKARGS, tag, size, 0, sv); return; } SET_BYTEORDER(pEnumSpec->tags); } /* TODO: add some checks (range, perhaps even value) */ GROW_BUFFER(size, "insufficient space"); if (DEFINED(sv) && !SvROK(sv)) { IntValue iv; if (SvIOK(sv)) value = SvIVX(sv); else { Enumerator *pEnum = NULL; if (SvPOK(sv)) { STRLEN len; char *str = SvPV(sv, len); pEnum = HT_get(PACK->THIS->cpi.htEnumerators, str, len, 0); if (pEnum) { if (IS_UNSAFE_VAL(pEnum->value)) WARN((aTHX_ "Enumerator value '%s' is unsafe", str)); value = pEnum->value.iv; } } if (pEnum == NULL) value = SvIV(sv); } CT_DEBUG(MAIN, ("value(sv) = %" IVdf, value)); iv.string = NULL; iv.sign = value < 0; #if ARCH_NATIVE_64_BIT_INTEGER iv.value.s = value; #else iv.value.s.h = value < 0 ? -1 : 0; iv.value.s.l = value; #endif store_integer(size, SF_INT_ARGS(pBI), &iv); } RESTORE_BYTEORDER; } /******************************************************************************* * * ROUTINE: pack_basic * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_basic(pPACKARGS, u_32 flags, const BitfieldInfo *pBI, SV *sv) { unsigned size; CT_DEBUG(MAIN, (XSCLASS "::pack_basic(flags=0x%08lX, pBI=%p sv=%p)", (unsigned long) flags, pBI, sv)); CT_DEBUG(MAIN, ("buffer.pos=%lu, buffer.length=%lu", PACKPOS, PACKLEN)); size = load_size(PCONFIG, &flags, pBI); GROW_BUFFER(size, "insufficient space"); if (DEFINED(sv) && !SvROK(sv)) { if (flags & (T_DOUBLE | T_FLOAT)) { assert(pBI == NULL); store_float_sv(aPACKARGS, size, flags, sv); } else store_int_sv(aPACKARGS, size, (flags & T_UNSIGNED) == 0, pBI, sv); } } /******************************************************************************* * * ROUTINE: pack_format * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_format(pPACKARGS, const CtTag *format, unsigned size, u_32 flags, SV *sv) { CT_DEBUG(MAIN, (XSCLASS "::pack_format(format->flags=0x%lX, size=%u, " "flags=0x%lX, sv=%p)", (unsigned long) format->flags, size, (unsigned long) flags, sv)); if (flags & PACK_FLEXIBLE) { if (!DEFINED(sv)) size = 0; } else GROW_BUFFER(size, "insufficient space"); if (DEFINED(sv)) { STRLEN len; const char *p = SvPV(sv, len); if (flags & PACK_FLEXIBLE) { if (format->flags == CBC_TAG_FORMAT_STRING) { STRLEN tmp = 0; while (p[tmp] && tmp < len) tmp++; len = tmp + 1; /* null-termination */ } size = len % size ? (unsigned) (len + size - (len % size)) : (unsigned) len; GROW_BUFFER(size, "incomplete array type"); } if (len > size) { #define COPY_STRING_LENGTH 16 unsigned char *src = (unsigned char *)p; const char *fmtstr = "Unknown"; const char *refstr; char copy[COPY_STRING_LENGTH]; unsigned n; for (n = 0; n < COPY_STRING_LENGTH - 1 && n < len; n++) copy[n] = src[n] < 32 || src[n] > 127 ? '.' : (char) src[n]; if (len > n) for (n -= 3; n < COPY_STRING_LENGTH - 1; n++) copy[n] = '.'; copy[n] = '\0'; switch (format->flags) { case CBC_TAG_FORMAT_BINARY: fmtstr = "Binary"; break; case CBC_TAG_FORMAT_STRING: fmtstr = "String"; break; default: fatal("Unknown format (%d)", format->flags); } /* hint the user that tries to pack format tagged references */ refstr = SvROK(sv) ? " (Are you sure you want to pack a reference type?)" : ""; WARN((aTHX_ "Source string \"%s\" is longer (%u byte%s) than '%s'" " (%u byte%s) while packing '%s' format%s", copy, (unsigned) len, len == 1 ? "" : "s", idl_to_str(aTHX_ &(PACK->idl)), size, size == 1 ? "" : "s", fmtstr, refstr)); len = size; } switch (format->flags) { case CBC_TAG_FORMAT_BINARY: Copy(p, pPACKBUF, len, char); break; case CBC_TAG_FORMAT_STRING: strncpy(pPACKBUF, p, len); break; default: fatal("Unknown format (%d)", format->flags); } } } /******************************************************************************* * * ROUTINE: pack_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_type(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, const BitfieldInfo *pBI, SV *sv) { const CtTag *dimtag = NULL; int dim; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::pack_type(pTS=%p, pDecl=%p, dimension=%d, " "pBI=%p, sv=%p)", pTS, pDecl, dimension, pBI, sv)); assert(sv != NULL); if (pDecl && dimension == 0 && pDecl->tags) { const CtTag *tag; if ((tag = find_tag(pDecl->tags, CBC_TAG_HOOKS)) != NULL) sv = hook_call(aTHX_ PACK->self, NULL, pDecl->identifier, tag->any, HOOKID_pack, sv, 1); dimtag = find_tag(pDecl->tags, CBC_TAG_DIMENSION); if ((tag = find_tag(pDecl->tags, CBC_TAG_FORMAT)) != NULL) { int size; u_32 flags = 0; assert(pBI == NULL); prepare_pack_format(aPACKARGS, pDecl, dimtag, &size, &flags); pack_format(aPACKARGS, tag, size, flags, sv); return; } SET_BYTEORDER(pDecl->tags); } assert(pDecl == NULL || pDecl->bitfield_flag == 0 || pBI != NULL); if (pDecl && pDecl->array_flag && dimension < (dim = LL_count(pDecl->ext.array))) { SV *ary; int size = pDecl->item_size; assert(size > 0); assert(pBI == NULL); if (DEFINED(sv) && SvROK(sv) && SvTYPE(ary = SvRV(sv)) == SVt_PVAV) { Value *v = (Value *) LL_get(pDecl->ext.array, dimension); long i, s, avail; unsigned long pos; AV *a = (AV *) ary; while (dim-- > dimension + 1) size *= ((Value *) LL_get(pDecl->ext.array, dim))->iv; avail = av_len(a)+1; if (dimtag) { assert(dimension == 0); s = dimtag_eval(aTHX_ dimtag->any, avail, PACK->self, PACK->parent); GROW_BUFFER(s*size, "dimension tag"); } else if (v->flags & V_IS_UNDEF) { assert(dimension == 0); s = avail; GROW_BUFFER(s*size, "incomplete array type"); } else s = v->iv; IDLP_PUSH(IX); pos = PACKPOS; for (i = 0; i < s; ++i) { SV **e = av_fetch(a, i, 0); if (e) { SvGETMAGIC(*e); IDLP_SET_IX(i); PACKPOS = pos + i * size; pack_type(aPACKARGS, pTS, pDecl, dimension+1, NULL, e ? *e : NULL); } } IDLP_POP; } else { if (DEFINED(sv)) WARN((aTHX_ "'%s' should be an array reference", idl_to_str(aTHX_ &(PACK->idl)))); /* this is safe with flexible array members */ while (dim-- > dimension) size *= ((Value *) LL_get(pDecl->ext.array, dim))->iv; GROW_BUFFER(size, "insufficient space"); } } else if (pDecl && pDecl->pointer_flag) { assert(pBI == NULL); if (DEFINED(sv) && SvROK(sv)) WARN((aTHX_ "'%s' should be a scalar value", idl_to_str(aTHX_ &(PACK->idl)))); sv = hook_call_typespec(aTHX_ PACK->self, pTS, HOOKID_pack_ptr, sv, 1); pack_pointer(aPACKARGS, sv); } else if (pTS->tflags & T_TYPE) { Typedef *pTD = pTS->ptr; pack_type(aPACKARGS, pTD->pType, pTD->pDecl, 0, pBI, sv); } else if(pTS->tflags & T_COMPOUND) { Struct *pStruct = (Struct *) pTS->ptr; assert(pBI == NULL); if (pStruct->declarations == NULL) WARN_UNDEF_STRUCT(pStruct); else pack_struct(aPACKARGS, pStruct, sv, 0); } else { if (DEFINED(sv) && SvROK(sv)) WARN((aTHX_ "'%s' should be a scalar value", idl_to_str(aTHX_ &(PACK->idl)))); CT_DEBUG(MAIN, ("SET '%s' @ %lu", pDecl ? pDecl->identifier : "", PACKPOS)); if (pTS->tflags & T_ENUM) pack_enum(aPACKARGS, pTS->ptr, pBI, sv); else pack_basic(aPACKARGS, pTS->tflags, pBI, sv); } RESTORE_BYTEORDER; } /******************************************************************************* * * ROUTINE: unpack_pointer * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_pointer(pPACKARGS) { unsigned size = PCONFIG->layout.ptr_size ? PCONFIG->layout.ptr_size : sizeof(void *); CT_DEBUG(MAIN, (XSCLASS "::unpack_pointer()")); CHECK_BUFFER(size); return fetch_int_sv(aPACKARGS, size, 0, NULL); } /******************************************************************************* * * ROUTINE: unpack_struct * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_struct(pPACKARGS, const Struct *pStruct, HV *hash) { StructDeclaration *pStructDecl; Declarator *pDecl; HV *h = hash; long pos; int ordered; SV *sv; const CtTag *hooks = NULL; dTHR; dXCPT; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::unpack_struct(pStruct=%p, hash=%p)", pStruct, hash)); if (pStruct->tags && hash == NULL) { const CtTag *format; hooks = find_tag(pStruct->tags, CBC_TAG_HOOKS); if ((format = find_tag(pStruct->tags, CBC_TAG_FORMAT)) != NULL) { sv = unpack_format(aPACKARGS, format, pStruct->size, 0); goto handle_unpack_hook; } SET_BYTEORDER(pStruct->tags); } ordered = PACK->THIS->order_members && PACK->THIS->ixhash != NULL; if (h == NULL) h = ordered ? newHV_indexed(aTHX_ PACK->THIS) : newHV(); pos = PACKPOS; XCPT_TRY_START { ListIterator sdi; LL_foreach(pStructDecl, sdi, pStruct->declarations) { if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { U32 klen = CTT_IDLEN(pDecl); if (klen > 0) { CT_DEBUG(MAIN, ("unpacking member '%s'", pDecl->identifier)); if (hv_exists(h, pDecl->identifier, klen)) { WARN((aTHX_ "Member '%s' used more than once in %s%s%s defined in %s(%ld)", pDecl->identifier, pStruct->tflags & T_UNION ? "union" : "struct", pStruct->identifier[0] != '\0' ? " " : "", pStruct->identifier[0] != '\0' ? pStruct->identifier : "", pStruct->context.pFI->name, pStruct->context.line)); } else { SV *value, **didstore; BitfieldInfo *pBI; assert(pDecl->offset >= 0); PACKPOS = pos + pDecl->offset; if (pDecl->bitfield_flag) { pBI = &pDecl->ext.bitfield; assert(pBI->bits > 0); /* because id_len is > 0, too */ assert(pBI->pos < 64); assert(pBI->size > 0 && pBI->size <= 8); } else pBI = NULL; PACK->parent = h; value = unpack_type(aPACKARGS, &pStructDecl->type, pDecl, 0, pBI); PACK->parent = NULL; didstore = hv_store(h, pDecl->identifier, klen, value, 0); if (ordered) SvSETMAGIC(value); if (!didstore) SvREFCNT_dec(value); } } } } else { TypeSpec *pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); assert(pStructDecl->offset >= 0); PACKPOS = pos + pStructDecl->offset; (void) unpack_struct(aPACKARGS, (Struct *) pTS->ptr, h); } } } XCPT_TRY_END RESTORE_BYTEORDER; XCPT_CATCH { if (hash == NULL) { CT_DEBUG(MAIN, ("freeing hv @ %p in unpack_struct:%d", h, __LINE__)); SvREFCNT_dec((SV *) h); } XCPT_RETHROW; } if (hash) return NULL; sv = newRV_noinc((SV *) h); handle_unpack_hook: if (hooks) { XCPT_TRY_START { sv = hook_call(aTHX_ PACK->self, pStruct->tflags & T_STRUCT ? "struct " : "union ", pStruct->identifier, hooks->any, HOOKID_unpack, sv, 0); } XCPT_TRY_END XCPT_CATCH { CT_DEBUG(MAIN, ("freeing sv @ %p in unpack_struct:%d", sv, __LINE__)); SvREFCNT_dec(sv); XCPT_RETHROW; } } return sv; } /******************************************************************************* * * ROUTINE: unpack_enum * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_enum(pPACKARGS, const EnumSpecifier *pEnumSpec, const BitfieldInfo *pBI) { Enumerator *pEnum; unsigned size = pBI ? pBI->size : GET_ENUM_SIZE(PCONFIG, pEnumSpec); IV value; SV *sv; const CtTag *hooks = NULL; IntValue iv; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::unpack_enum(pEnumSpec=%p, pBI=%p)", pEnumSpec, pBI)); if (pEnumSpec->tags) { const CtTag *format; hooks = find_tag(pEnumSpec->tags, CBC_TAG_HOOKS); if ((format = find_tag(pEnumSpec->tags, CBC_TAG_FORMAT)) != NULL) { assert(pBI == NULL); sv = unpack_format(aPACKARGS, format, size, 0); goto handle_unpack_hook; } SET_BYTEORDER(pEnumSpec->tags); } CHECK_BUFFER(size); iv.string = NULL; fetch_integer(size, pEnumSpec->tflags & T_SIGNED, SF_INT_ARGS(pBI), &iv); if (pEnumSpec->tflags & T_SIGNED) /* TODO: handle (un)/signed correctly */ { #if ARCH_NATIVE_64_BIT_INTEGER value = iv.value.s; #else value = (i_32) iv.value.s.l; #endif } else { #if ARCH_NATIVE_64_BIT_INTEGER value = iv.value.u; #else value = iv.value.u.l; #endif } if (PACK->THIS->enumType == ET_INTEGER) sv = newSViv(value); else { ListIterator ei; LL_foreach(pEnum, ei, pEnumSpec->enumerators) if(pEnum->value.iv == value) break; if (pEnumSpec->tflags & T_UNSAFE_VAL) { if (pEnumSpec->identifier[0] != '\0') WARN((aTHX_ "Enumeration '%s' contains unsafe values", pEnumSpec->identifier)); else WARN((aTHX_ "Enumeration contains unsafe values")); } switch (PACK->THIS->enumType) { case ET_BOTH: sv = newSViv(value); if (pEnum) sv_setpv(sv, pEnum->identifier); else sv_setpvf(sv, "", value); SvIOK_on(sv); break; case ET_STRING: if (pEnum) sv = newSVpv(pEnum->identifier, 0); else sv = newSVpvf("", value); break; default: fatal("Invalid enum type (%d) in unpack_enum()!", PACK->THIS->enumType); break; } } RESTORE_BYTEORDER; handle_unpack_hook: if (hooks) { dTHR; dXCPT; XCPT_TRY_START { sv = hook_call(aTHX_ PACK->self, "enum ", pEnumSpec->identifier, hooks->any, HOOKID_unpack, sv, 0); } XCPT_TRY_END XCPT_CATCH { CT_DEBUG(MAIN, ("freeing sv @ %p in unpack_enum:%d", sv, __LINE__)); SvREFCNT_dec(sv); XCPT_RETHROW; } } return sv; } /******************************************************************************* * * ROUTINE: unpack_basic * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_basic(pPACKARGS, u_32 flags, const BitfieldInfo *pBI) { unsigned size; CT_DEBUG(MAIN, (XSCLASS "::unpack_basic(flags=0x%08lX, pBI=%p)", (unsigned long) flags, pBI)); CT_DEBUG(MAIN, ("buffer.pos=%lu, buffer.length=%lu", PACKPOS, PACKLEN)); size = load_size(PCONFIG, &flags, pBI); CHECK_BUFFER(size); if (flags & (T_FLOAT | T_DOUBLE)) { assert(pBI == NULL); return fetch_float_sv(aPACKARGS, size, flags); } else return fetch_int_sv(aPACKARGS, size, (flags & T_UNSIGNED) == 0, pBI); } /******************************************************************************* * * ROUTINE: unpack_format * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_format(pPACKARGS, const CtTag *format, unsigned size, u_32 flags) { SV *sv; CT_DEBUG(MAIN, (XSCLASS "::unpack_format(format->flags=0x%lX, size=%u, flags=0x%lX)", (unsigned long) format->flags, size, (unsigned long) flags)); if (PACKPOS + size > PACKLEN) return newSVpvn("", 0); if (flags & PACK_FLEXIBLE) { unsigned remain; assert(PACKPOS <= PACKLEN); remain = PACKLEN - PACKPOS; if (remain % size) remain -= remain % size; size = remain; } switch (format->flags) { case CBC_TAG_FORMAT_BINARY: sv = newSVpvn(pPACKBUF, size); break; case CBC_TAG_FORMAT_STRING: { unsigned n; const char *buf = pPACKBUF; for (n = 0; n < size; n++) if (buf[n] == '\0') break; sv = newSVpvn(pPACKBUF, n); } break; default: fatal("Unknown format (%d)", format->flags); } return sv; } /******************************************************************************* * * ROUTINE: unpack_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_type(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, const BitfieldInfo *pBI) { SV *rv = NULL; const CtTag *hooks = NULL; const CtTag *dimtag = NULL; int dim; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::unpack_type(pTS=%p, pDecl=%p, dimension=%d, pBI=%p)", pTS, pDecl, dimension, pBI)); if (pDecl && dimension == 0 && pDecl->tags) { const CtTag *format; hooks = find_tag(pDecl->tags, CBC_TAG_HOOKS); dimtag = find_tag(pDecl->tags, CBC_TAG_DIMENSION); if ((format = find_tag(pDecl->tags, CBC_TAG_FORMAT)) != NULL) { int size; u_32 flags = 0; assert(pBI == NULL); prepare_pack_format(aPACKARGS, pDecl, dimtag, &size, &flags); rv = unpack_format(aPACKARGS, format, size, flags); goto handle_unpack_hook; } SET_BYTEORDER(pDecl->tags); } assert(pDecl == NULL || pDecl->bitfield_flag == 0 || pBI != NULL); if (pDecl && pDecl->array_flag && dimension < (dim = LL_count(pDecl->ext.array))) { AV *a = newAV(); Value *v = (Value *) LL_get(pDecl->ext.array, dimension); long i, s, avail; unsigned long pos; int size = pDecl->item_size; dTHR; dXCPT; assert(size > 0); assert(pBI == NULL); XCPT_TRY_START { while (dim-- > dimension + 1) size *= ((Value *) LL_get(pDecl->ext.array, dim))->iv; avail = ((PACKLEN - PACKPOS) + (size - 1)) / size; if (dimtag) { assert(dimension == 0); s = dimtag_eval(aTHX_ dimtag->any, avail, PACK->self, PACK->parent); } else if (v->flags & V_IS_UNDEF) { assert(dimension == 0); s = avail; } else { s = v->iv; } if (s < 0) { /* if we're unpacking a larger "thing" and run out of data, avail may become */ /* negative and we need to protect against creating negatively sized arrays */ s = 0; } av_extend(a, s - 1); pos = PACKPOS; for (i = 0; i < s; ++i) { PACKPOS = pos + i * size; av_store(a, i, unpack_type(aPACKARGS, pTS, pDecl, dimension + 1, NULL)); } } XCPT_TRY_END XCPT_CATCH { CT_DEBUG(MAIN, ("freeing av @ %p in unpack_type:%d", a, __LINE__)); SvREFCNT_dec((SV *) a); XCPT_RETHROW; } rv = newRV_noinc((SV *) a); } else if (pDecl && pDecl->pointer_flag) { dTHR; dXCPT; assert(pBI == NULL); rv = unpack_pointer(aPACKARGS); XCPT_TRY_START { rv = hook_call_typespec(aTHX_ PACK->self, pTS, HOOKID_unpack_ptr, rv, 0); } XCPT_TRY_END XCPT_CATCH { CT_DEBUG(MAIN, ("freeing rv @ %p in unpack_type:%d", rv, __LINE__)); SvREFCNT_dec(rv); XCPT_RETHROW; } } else if (pTS->tflags & T_TYPE) { Typedef *pTD = pTS->ptr; rv = unpack_type(aPACKARGS, pTD->pType, pTD->pDecl, 0, pBI); } else if (pTS->tflags & T_COMPOUND) { Struct *pStruct = pTS->ptr; assert(pBI == NULL); if (pStruct->declarations == NULL) { WARN_UNDEF_STRUCT(pStruct); rv = newSV(0); } else rv = unpack_struct(aPACKARGS, pTS->ptr, NULL); } else { CT_DEBUG(MAIN, ("GET '%s' @ %lu", pDecl ? pDecl->identifier : "", PACKPOS)); if (pTS->tflags & T_ENUM) rv = unpack_enum(aPACKARGS, pTS->ptr, pBI); else rv = unpack_basic(aPACKARGS, pTS->tflags, pBI); } assert(rv != NULL); RESTORE_BYTEORDER; handle_unpack_hook: if (hooks) { dTHR; dXCPT; assert(pDecl != NULL); XCPT_TRY_START { rv = hook_call(aTHX_ PACK->self, NULL, pDecl->identifier, hooks->any, HOOKID_unpack, rv, 0); } XCPT_TRY_END XCPT_CATCH { CT_DEBUG(MAIN, ("freeing rv @ %p in unpack_type:%d", rv, __LINE__)); SvREFCNT_dec(rv); XCPT_RETHROW; } } return rv; } /******************************************************************************* * * ROUTINE: hook_call_typespec * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *hook_call_typespec(pTHX_ SV *self, const TypeSpec *pTS, enum HookId hook_id, SV *in, int mortal) { const char *id, *pre; CtTagList tags = NULL; if (pTS->tflags & T_TYPE) { const Typedef *p = pTS->ptr; id = p->pDecl->identifier; tags = p->pDecl->tags; pre = NULL; } else if (pTS->tflags & T_COMPOUND) { const Struct *p = pTS->ptr; id = p->identifier; tags = p->tags; pre = pTS->tflags & T_STRUCT ? "struct " : "union "; } else if (pTS->tflags & T_ENUM) { const EnumSpecifier *p = pTS->ptr; id = p->identifier; tags = p->tags; pre = "enum "; } if (tags) { const CtTag *hooks = find_tag(tags, CBC_TAG_HOOKS); if (hooks) return hook_call(aTHX_ self, pre, id, hooks->any, hook_id, in, mortal); } return in; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: pk_create * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ PackHandle pk_create(const CBC *THIS, SV *self) { PackHandle hdl; Newz(0, hdl, 1, struct PackInfo); hdl->THIS = THIS; hdl->self = self; hdl->parent = NULL; return hdl; } /******************************************************************************* * * ROUTINE: pk_set_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pk_set_type(PackHandle hdl, const char *type) { IDLIST_INIT(&hdl->idl); IDLIST_PUSH(&hdl->idl, ID); IDLIST_SET_ID(&hdl->idl, type); } /******************************************************************************* * * ROUTINE: pk_set_buffer * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pk_set_buffer(PackHandle hdl, SV *bufsv, char *buffer, unsigned long buflen) { hdl->bufsv = bufsv; hdl->buf.buffer = buffer; hdl->buf.length = buflen; } /******************************************************************************* * * ROUTINE: pk_set_buffer_pos * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pk_set_buffer_pos(PackHandle hdl, unsigned long pos) { hdl->buf.pos = pos; } /******************************************************************************* * * ROUTINE: pk_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pk_delete(PackHandle hdl) { IDLIST_FREE(&hdl->idl); Safefree(hdl); } /******************************************************************************* * * ROUTINE: pk_pack * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pk_pack(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, SV *sv) { PACK->order = PCONFIG->layout.byte_order; pack_type(aPACKARGS, pTS, pDecl, dimension, NULL, sv); } /******************************************************************************* * * ROUTINE: pk_unpack * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *pk_unpack(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension) { PACK->order = PCONFIG->layout.byte_order; return unpack_type(aPACKARGS, pTS, pDecl, dimension, NULL); } Convert-Binary-C-0.85/cbc/debug.h0000644000175000001440000000246214677003452015205 0ustar mhxusers/******************************************************************************* * * HEADER: debug.h * ******************************************************************************** * * DESCRIPTION: C::B::C debugging stuff * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_DEBUG_H #define _CBC_DEBUG_H #ifdef CBC_DEBUGGING /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define set_debug_options CBC_set_debug_options void set_debug_options(pTHX_ const char *dbopts); #define set_debug_file CBC_set_debug_file void set_debug_file(pTHX_ const char *dbfile); #define init_debugging CBC_init_debugging void init_debugging(pTHX); #endif #endif Convert-Binary-C-0.85/cbc/cbc.h0000644000175000001440000002677114677003452014657 0ustar mhxusers/******************************************************************************* * * HEADER: cbc.h * ******************************************************************************** * * DESCRIPTION: C::B::C common defines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_CBC_H #define _CBC_CBC_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/ctdebug.h" #include "ctlib/ctparse.h" #include "ctlib/cttype.h" #include "cbc/basic.h" /*===== DEFINES ==============================================================*/ #define XSCLASS "Convert::Binary::C" #define ARGTYPE_PACKAGE "Convert::Binary::C::ARGTYPE" /*-------------------------------------*/ /* some quick paranoid checks first... */ /*-------------------------------------*/ #if (defined I8SIZE && I8SIZE != 1) || \ (defined U8SIZE && U8SIZE != 1) #error "Your I8/U8 doesn't seem to have 8 bits..." #endif #if (defined I16SIZE && I16SIZE != 2) || \ (defined U16SIZE && U16SIZE != 2) #error "Your I16/U16 doesn't seem to have 16 bits..." #endif #if (defined I32SIZE && I32SIZE != 4) || \ (defined U32SIZE && U32SIZE != 4) #error "Your I32/U32 doesn't seem to have 32 bits..." #endif /*---------------*/ /* some defaults */ /*---------------*/ #ifndef CBC_DEFAULT_PTR_SIZE #define CBC_DEFAULT_PTR_SIZE CTLIB_POINTER_SIZE #else #if CBC_DEFAULT_PTR_SIZE != 1 && \ CBC_DEFAULT_PTR_SIZE != 2 && \ CBC_DEFAULT_PTR_SIZE != 4 && \ CBC_DEFAULT_PTR_SIZE != 8 #error "CBC_DEFAULT_PTR_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_ENUM_SIZE #define CBC_DEFAULT_ENUM_SIZE sizeof( int ) #else #if CBC_DEFAULT_ENUM_SIZE != 0 && \ CBC_DEFAULT_ENUM_SIZE != 1 && \ CBC_DEFAULT_ENUM_SIZE != 2 && \ CBC_DEFAULT_ENUM_SIZE != 4 && \ CBC_DEFAULT_ENUM_SIZE != 8 #error "CBC_DEFAULT_ENUM_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_INT_SIZE #define CBC_DEFAULT_INT_SIZE CTLIB_int_SIZE #else #if CBC_DEFAULT_INT_SIZE != 1 && \ CBC_DEFAULT_INT_SIZE != 2 && \ CBC_DEFAULT_INT_SIZE != 4 && \ CBC_DEFAULT_INT_SIZE != 8 #error "CBC_DEFAULT_INT_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_CHAR_SIZE #define CBC_DEFAULT_CHAR_SIZE CTLIB_char_SIZE #else #if CBC_DEFAULT_CHAR_SIZE != 1 && \ CBC_DEFAULT_CHAR_SIZE != 2 && \ CBC_DEFAULT_CHAR_SIZE != 4 && \ CBC_DEFAULT_CHAR_SIZE != 8 #error "CBC_DEFAULT_CHAR_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_SHORT_SIZE #define CBC_DEFAULT_SHORT_SIZE CTLIB_short_SIZE #else #if CBC_DEFAULT_SHORT_SIZE != 1 && \ CBC_DEFAULT_SHORT_SIZE != 2 && \ CBC_DEFAULT_SHORT_SIZE != 4 && \ CBC_DEFAULT_SHORT_SIZE != 8 #error "CBC_DEFAULT_SHORT_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_LONG_SIZE #define CBC_DEFAULT_LONG_SIZE CTLIB_long_SIZE #else #if CBC_DEFAULT_LONG_SIZE != 1 && \ CBC_DEFAULT_LONG_SIZE != 2 && \ CBC_DEFAULT_LONG_SIZE != 4 && \ CBC_DEFAULT_LONG_SIZE != 8 #error "CBC_DEFAULT_LONG_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_LONG_LONG_SIZE #define CBC_DEFAULT_LONG_LONG_SIZE CTLIB_long_long_SIZE #else #if CBC_DEFAULT_LONG_LONG_SIZE != 1 && \ CBC_DEFAULT_LONG_LONG_SIZE != 2 && \ CBC_DEFAULT_LONG_LONG_SIZE != 4 && \ CBC_DEFAULT_LONG_LONG_SIZE != 8 #error "CBC_DEFAULT_LONG_LONG_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_FLOAT_SIZE #define CBC_DEFAULT_FLOAT_SIZE CTLIB_float_SIZE #else #if CBC_DEFAULT_FLOAT_SIZE != 1 && \ CBC_DEFAULT_FLOAT_SIZE != 2 && \ CBC_DEFAULT_FLOAT_SIZE != 4 && \ CBC_DEFAULT_FLOAT_SIZE != 8 && \ CBC_DEFAULT_FLOAT_SIZE != 12 && \ CBC_DEFAULT_FLOAT_SIZE != 16 #error "CBC_DEFAULT_FLOAT_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_DOUBLE_SIZE #define CBC_DEFAULT_DOUBLE_SIZE CTLIB_double_SIZE #else #if CBC_DEFAULT_DOUBLE_SIZE != 1 && \ CBC_DEFAULT_DOUBLE_SIZE != 2 && \ CBC_DEFAULT_DOUBLE_SIZE != 4 && \ CBC_DEFAULT_DOUBLE_SIZE != 8 && \ CBC_DEFAULT_DOUBLE_SIZE != 12 && \ CBC_DEFAULT_DOUBLE_SIZE != 16 #error "CBC_DEFAULT_DOUBLE_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_LONG_DOUBLE_SIZE #define CBC_DEFAULT_LONG_DOUBLE_SIZE CTLIB_long_double_SIZE #else #if CBC_DEFAULT_LONG_DOUBLE_SIZE != 1 && \ CBC_DEFAULT_LONG_DOUBLE_SIZE != 2 && \ CBC_DEFAULT_LONG_DOUBLE_SIZE != 4 && \ CBC_DEFAULT_LONG_DOUBLE_SIZE != 8 && \ CBC_DEFAULT_LONG_DOUBLE_SIZE != 12 && \ CBC_DEFAULT_LONG_DOUBLE_SIZE != 16 #error "CBC_DEFAULT_LONG_DOUBLE_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_ALIGNMENT #define CBC_DEFAULT_ALIGNMENT 1 #elif CBC_DEFAULT_ALIGNMENT != 1 && \ CBC_DEFAULT_ALIGNMENT != 2 && \ CBC_DEFAULT_ALIGNMENT != 4 && \ CBC_DEFAULT_ALIGNMENT != 8 && \ CBC_DEFAULT_ALIGNMENT != 16 #error "CBC_DEFAULT_ALIGNMENT is invalid!" #endif #ifndef CBC_DEFAULT_COMPOUND_ALIGNMENT #define CBC_DEFAULT_COMPOUND_ALIGNMENT 1 #elif CBC_DEFAULT_COMPOUND_ALIGNMENT != 1 && \ CBC_DEFAULT_COMPOUND_ALIGNMENT != 2 && \ CBC_DEFAULT_COMPOUND_ALIGNMENT != 4 && \ CBC_DEFAULT_COMPOUND_ALIGNMENT != 8 && \ CBC_DEFAULT_COMPOUND_ALIGNMENT != 16 #error "CBC_DEFAULT_COMPOUND_ALIGNMENT is invalid!" #endif #ifndef CBC_DEFAULT_ENUMTYPE #define CBC_DEFAULT_ENUMTYPE ET_INTEGER #endif #if ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_BIG_ENDIAN #define CBC_NATIVE_BYTEORDER CBO_BIG_ENDIAN #elif ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_LITTLE_ENDIAN #define CBC_NATIVE_BYTEORDER CBO_LITTLE_ENDIAN #else #error "unknown native byte order" #endif #ifndef CBC_DEFAULT_BYTEORDER #define CBC_DEFAULT_BYTEORDER CBC_NATIVE_BYTEORDER #endif /*--------------------------------------*/ /* macros for different checks/warnings */ /*--------------------------------------*/ #if defined G_WARN_ON && defined G_WARN_ALL_ON #define PERL_WARNINGS_ON (PL_dowarn & (G_WARN_ON | G_WARN_ALL_ON)) #else #define PERL_WARNINGS_ON PL_dowarn #endif #define WARN(args) STMT_START { if (PERL_WARNINGS_ON) Perl_warn args; } STMT_END #define WARN2(args) STMT_START { if (PERL_WARNINGS_ON && THIS->cfg.issue_warnings) Perl_warn args; } STMT_END #define WARN_UNSAFE(type) \ WARN((aTHX_ "Unsafe values used in %s('%s')", method, type)) #define WARN_FLAGS(type, flags) \ STMT_START { \ if ((flags) & T_UNSAFE_VAL) \ WARN_UNSAFE(type); \ } STMT_END #define CROAK_UNDEF_STRUCT(ptr) \ Perl_croak(aTHX_ "Got no definition for '%s %s'", \ (ptr)->tflags & T_UNION ? "union" : "struct", \ (ptr)->identifier) #define WARN_UNDEF_STRUCT(ptr) \ WARN((aTHX_ "Got no definition for '%s %s'", \ (ptr)->tflags & T_UNION ? "union" : "struct", \ (ptr)->identifier)) /*----------------------------*/ /* checks if an SV is defined */ /*----------------------------*/ #define DEFINED(sv) ((sv) != NULL && SvOK(sv)) /*----------------------------------*/ /* avoid warnings with older perl's */ /*----------------------------------*/ #if PERL_REVISION == 5 && PERL_VERSION < 6 # define CONST_CHAR(x) ((char *)(x)) #else # define CONST_CHAR(x) (x) #endif /*--------------------------------------------------*/ /* macros to create SV's/HV's with constant strings */ /*--------------------------------------------------*/ #define NEW_SV_PV_CONST(str) \ newSVpvn(str, sizeof(str)/sizeof(char)-1) #define HV_STORE_CONST(hash, key, value) \ STMT_START { \ SV *_val = value; \ if (hv_store(hash, key, sizeof(key)/sizeof(char)-1, _val, 0) == NULL)\ SvREFCNT_dec(_val); \ } STMT_END /*-------------------------*/ /* get the size of an enum */ /*-------------------------*/ #define GET_ENUM_SIZE(pCfg, pES) \ ((pCfg)->layout.enum_size > 0 \ ? (unsigned) (pCfg)->layout.enum_size \ : (pES)->sizes[-(pCfg)->layout.enum_size]) /*------------------------------------------------*/ /* this is needed quite often for unnamed structs */ /*------------------------------------------------*/ #define FOLLOW_AND_CHECK_TSPTR(pTS) \ STMT_START { \ if ((pTS)->tflags & T_TYPE) \ { \ Typedef *_pT = (Typedef *) (pTS)->ptr; \ for(;;) \ { \ if (_pT && _pT->pType->tflags & T_TYPE \ && _pT->pDecl->pointer_flag == 0 \ && _pT->pDecl->array_flag == 0) \ _pT = (Typedef *) _pT->pType->ptr; \ else \ break; \ } \ (pTS) = _pT->pType; \ } \ \ if (((pTS)->tflags & T_COMPOUND) == 0) \ fatal("Unnamed member was not struct or union (type=0x%08X) " \ "in %s line %d", (pTS)->tflags, __FILE__, __LINE__); \ \ if ((pTS)->ptr == NULL) \ fatal("Type pointer to struct/union was NULL in %s line %d", \ __FILE__, __LINE__); \ } STMT_END /*===== TYPEDEFS =============================================================*/ typedef struct { CParseConfig cfg; CParseInfo cpi; enum { ET_INTEGER, ET_STRING, ET_BOTH } enumType; /* boolean options */ unsigned order_members : 1; const char *ixhash; HV *hv; BasicTypes basic; } CBC; /*===== FUNCTION PROTOTYPES ==================================================*/ #endif Convert-Binary-C-0.85/cbc/typeinfo.h0000644000175000001440000000273114677003452015753 0ustar mhxusers/******************************************************************************* * * HEADER: typeinfo.h * ******************************************************************************** * * DESCRIPTION: C::B::C type information * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_TYPEINFO_H #define _CBC_TYPEINFO_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctparse.h" #include "ctlib/cttype.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_typedef_def CBC_get_typedef_def SV *get_typedef_def(pTHX_ const CParseConfig *pCfg, const Typedef *pTypedef); #define get_enum_spec_def CBC_get_enum_spec_def SV *get_enum_spec_def(pTHX_ const CParseConfig *pCfg, const EnumSpecifier *pEnumSpec); #define get_struct_spec_def CBC_get_struct_spec_def SV *get_struct_spec_def(pTHX_ const CParseConfig *pCfg, const Struct *pStruct); #endif Convert-Binary-C-0.85/cbc/util.c0000644000175000001440000004152414677003452015071 0ustar mhxusers/******************************************************************************* * * MODULE: util.c * ******************************************************************************** * * DESCRIPTION: C::B::C utilities * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static int load_indexed_hash_module_ex(pTHX_ CBC *THIS, const char **modlist, int num); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ #define NUM_IX_HASH_MODS (sizeof(gs_IxHashMods)/sizeof(gs_IxHashMods[0])) static const char *gs_IxHashMods[] = { NULL, /* custom preferred module */ "Tie::Hash::Indexed", "Hash::Ordered", "Tie::IxHash" }; /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: load_indexed_hash_module_ex * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int load_indexed_hash_module_ex(pTHX_ CBC *THIS, const char **modlist, int num) { const char *p = NULL; int i; if (THIS->ixhash != NULL) { /* a module has already been loaded */ return 1; } for (i = 0; i < num; i++) { if (modlist[i]) { SV *sv = newSVpvn("require ", 8); sv_catpv(sv, CONST_CHAR(modlist[i])); CT_DEBUG(MAIN, ("trying to require \"%s\"", modlist[i])); (void) eval_sv(sv, G_DISCARD); SvREFCNT_dec(sv); if ((sv = get_sv("@", 0)) != NULL && strEQ(SvPV_nolen(sv), "")) { p = modlist[i]; break; } if (i == 0) { Perl_warn(aTHX_ "Couldn't load %s for member ordering, " "trying default modules", modlist[i]); } CT_DEBUG(MAIN, ("failed: \"%s\"", sv ? SvPV_nolen(sv) : "[NULL]")); } } if (p == NULL) { SV *sv = newSVpvn("", 0); for (i = 1; i < num; i++) { if (i > 1) { if (i == num-1) sv_catpvn(sv, " or ", 4); else sv_catpvn(sv, ", ", 2); } sv_catpv(sv, CONST_CHAR(modlist[i])); } Perl_warn(aTHX_ "Couldn't load a module for member ordering " "(consider installing %s)", SvPV_nolen(sv)); return 0; } CT_DEBUG(MAIN, ("using \"%s\" for member ordering", p)); THIS->ixhash = p; return 1; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: fatal * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Write fatal error to standard error and abort(). * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void fatal(const char *f, ...) { dTHX; va_list l; SV *sv = newSVpvn("", 0); va_start(l, f); sv_catpv(sv, "============================================\n" " FATAL ERROR in " XSCLASS "!\n" "--------------------------------------------\n" ); sv_vcatpvf(sv, f, &l); sv_catpv(sv, "\n" "--------------------------------------------\n" " please report this error to mhx@cpan.org\n" "============================================\n" ); va_end(l); fprintf(stderr, "%s", SvPVX(sv)); SvREFCNT_dec(sv); abort(); } /******************************************************************************* * * ROUTINE: newHV_indexed * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ HV *newHV_indexed(pTHX_ const CBC *THIS) { dSP; HV *hv, *stash; GV *gv; SV *sv; int count; hv = newHV(); sv = newSVpv(CONST_CHAR(THIS->ixhash), 0); stash = gv_stashpv(CONST_CHAR(THIS->ixhash), 0); gv = gv_fetchmethod(stash, "TIEHASH"); ENTER; SAVETMPS; PUSHMARK(SP); XPUSHs(sv_2mortal(sv)); PUTBACK; count = call_sv((SV*)GvCV(gv), G_SCALAR); SPAGAIN; if (count != 1) fatal("%s::TIEHASH returned %d elements instead of 1", THIS->ixhash, count); sv = POPs; PUTBACK; hv_magic(hv, (GV *)sv, PERL_MAGIC_tied); FREETMPS; LEAVE; return hv; } /******************************************************************************* * * ROUTINE: croak_gti * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void croak_gti(pTHX_ ErrorGTI error, const char *name, int warnOnly) { char *errstr = NULL; switch (error) { case GTI_NO_ERROR: return; case GTI_NO_STRUCT_DECL: errstr = "Got no struct declarations"; break; default: if( name ) fatal("Unknown error %d in resolution of '%s'", error, name); else fatal("Unknown error %d in resolution of typedef", error); break; } if (warnOnly) { if (name) WARN((aTHX_ "%s in resolution of '%s'", errstr, name)); else WARN((aTHX_ "%s in resolution of typedef", errstr)); } else { if (name) Perl_croak(aTHX_ "%s in resolution of '%s'", errstr, name); else Perl_croak(aTHX_ "%s in resolution of typedef", errstr); } } /******************************************************************************* * * ROUTINE: get_basic_type_spec_string * * WRITTEN BY: Marcus Holland-Moritz ON: Sep 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void get_basic_type_spec_string(pTHX_ SV **sv, u_32 flags) { struct { u_32 flag; const char *str; } *pSpec, spec[] = { {T_SIGNED, "signed" }, {T_UNSIGNED, "unsigned"}, {T_SHORT, "short" }, {T_LONGLONG, "long" }, {T_LONG, "long" }, {T_VOID, "void" }, {T_CHAR, "char" }, {T_INT , "int" }, {T_FLOAT , "float" }, {T_DOUBLE , "double" }, {0, NULL } }; int first = 1; CT_DEBUG(MAIN, (XSCLASS "::get_basic_type_spec_string( sv=%p, flags=0x%08lX )", sv, (unsigned long) flags)); for (pSpec = spec; pSpec->flag; ++pSpec) { if (pSpec->flag & flags) { if (*sv) sv_catpvf(*sv, first ? "%s" : " %s", pSpec->str); else *sv = newSVpv(CONST_CHAR(pSpec->str), 0); first = 0; } } } /******************************************************************************* * * ROUTINE: add_indent * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void add_indent(pTHX_ SV *s, int level) { #define MAXINDENT 16 static const char tab[MAXINDENT] = "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; #ifndef CBC_DONT_CLAMP_TO_MAXINDENT if (level > MAXINDENT) level = MAXINDENT; #else while (level > MAXINDENT) { sv_catpvn( s, tab, MAXINDENT ); level -= MAXINDENT; } #endif sv_catpvn(s, CONST_CHAR(tab), level); #undef MAXINDENT } /******************************************************************************* * * ROUTINE: load_indexed_hash_module * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int load_indexed_hash_module(pTHX_ CBC *THIS) { return load_indexed_hash_module_ex(aTHX_ THIS, gs_IxHashMods, NUM_IX_HASH_MODS); } /******************************************************************************* * * ROUTINE: set_preferred_indexed_hash_module * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void set_preferred_indexed_hash_module(const char *module) { gs_IxHashMods[0] = module; } /******************************************************************************* * * ROUTINE: string_new * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ char *string_new(const char *str) { char *cpy = NULL; if (str != NULL) { size_t len = strlen(str) + 1; New(0, cpy, len, char); Copy(str, cpy, len, char); } return cpy; } /******************************************************************************* * * ROUTINE: string_new_fromSV * * WRITTEN BY: Marcus Holland-Moritz ON: May 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ char *string_new_fromSV(pTHX_ SV *sv) { char *cpy = NULL; if (sv != NULL) { char *str; STRLEN len; str = SvPV(sv, len); len++; New(0, cpy, len, char); Copy(str, cpy, len, char); } return cpy; } /******************************************************************************* * * ROUTINE: string_delete * * WRITTEN BY: Marcus Holland-Moritz ON: May 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void string_delete(char *str) { Safefree(str); } /******************************************************************************* * * ROUTINE: clone_string_list * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ LinkedList clone_string_list(LinkedList list) { ListIterator li; const char *str; LinkedList clone; clone = LL_new(); LL_foreach(str, li, list) LL_push(clone, string_new(str)); return clone; } /******************************************************************************* * * ROUTINE: dump_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Dumps an SV similar to (but a lot simpler than) Devel::Peek's * Dump function, but instead of writing to the debug output, it * returns a Perl string that can be used for further processing. * Currently, the only useful information is the reference count. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define DUMP_INDENT \ STMT_START { \ if (level > 0) \ add_indent(aTHX_ buf, level); \ } STMT_END void dump_sv(pTHX_ SV *buf, int level, SV *sv) { char *str; svtype type = SvTYPE(sv); if (SvROK(sv)) { str = "RV"; } else { switch (type) { case SVt_NULL: str = "NULL"; break; case SVt_IV: str = "IV"; break; case SVt_NV: str = "NV"; break; case SVt_PV: str = "PV"; break; case SVt_PVIV: str = "PVIV"; break; case SVt_PVNV: str = "PVNV"; break; case SVt_PVMG: str = "PVMG"; break; case SVt_PVLV: str = "PVLV"; break; case SVt_PVAV: str = "PVAV"; break; case SVt_PVHV: str = "PVHV"; break; case SVt_PVCV: str = "PVCV"; break; case SVt_PVGV: str = "PVGV"; break; case SVt_PVFM: str = "PVFM"; break; case SVt_PVIO: str = "PVIO"; break; default : str = "UNKNOWN"; } } CT_DEBUG(MAIN, (XSCLASS "::dump_sv( level=%d, sv=\"%s\" )", level, str)); #ifndef CBC_USE_LESS_MEMORY /* * This speeds up dump at the cost of memory, * as it prevents a lot of realloc()s. * Actually, it was only inserted to make valgrind * run at acceptable speed... ;-) */ { STRLEN cur, len; cur = SvCUR(buf) + 64; /* estimated new string length */ if (cur > 1024) /* do nothing for small strings */ { len = SvLEN(buf); /* buffer size */ if (cur > len) { len = (len/1024)*2048; /* double buffer size */ (void) sv_grow(buf, len); } } } #endif DUMP_INDENT; level++; sv_catpvf(buf, "SV = %s @ %p (REFCNT = %lu)\n", str, sv, (unsigned long) SvREFCNT(sv)); if (SvROK(sv)) { dump_sv(aTHX_ buf, level, SvRV(sv)); return; } switch (type) { case SVt_PVAV: { AV *av = (AV *) sv; I32 c, n; for (c = 0, n = av_len(av); c <= n; ++c) { SV **p = av_fetch(av, c, 0); if (p) { DUMP_INDENT; sv_catpvf(buf, "index = %ld\n", (long) c); dump_sv(aTHX_ buf, level, *p); } } } break; case SVt_PVHV: { HV *hv = (HV *) sv; SV *v; I32 len; hv_iterinit(hv); while ((v = hv_iternextsv(hv, &str, &len)) != 0) { DUMP_INDENT; sv_catpv(buf, "key = \""); sv_catpvn(buf, str, len); sv_catpv(buf, "\"\n"); dump_sv(aTHX_ buf, level, v); } } break; default: /* nothing */ break; } } /******************************************************************************* * * ROUTINE: identify_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Identify an SV and return a string describing its type. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const char *identify_sv(SV *sv) { if (sv == NULL || !SvOK(sv)) return "an undefined value"; if (SvROK(sv)) { switch (SvTYPE(SvRV(sv))) { case SVt_PVAV: return "an array reference"; case SVt_PVHV: return "a hash reference"; case SVt_PVCV: return "a code reference"; default: return "a reference"; } } if (SvIOK(sv)) return "an integer value"; if (SvNOK(sv)) return "a numeric value"; if (SvPOK(sv)) return "a string value"; return "an unknown value"; } Convert-Binary-C-0.85/cbc/debug.c0000644000175000001440000001450614677003452015202 0ustar mhxusers/******************************************************************************* * * MODULE: debug.c * ******************************************************************************** * * DESCRIPTION: C::B::C debugging stuff * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifdef CBC_DEBUGGING /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctdebug.h" #include "util/hash.h" #include "util/memalloc.h" #include "cbc/cbc.h" #include "cbc/debug.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ #ifndef PERLIO_IS_STDIO # ifdef fprintf # undef fprintf # endif # define fprintf PerlIO_printf # ifdef vfprintf # undef vfprintf # endif # define vfprintf PerlIO_vprintf # ifdef stderr # undef stderr # endif # define stderr PerlIO_stderr() # ifdef fopen # undef fopen # endif # define fopen PerlIO_open # ifdef fclose # undef fclose # endif # define fclose PerlIO_close #endif /*===== TYPEDEFS =============================================================*/ #ifdef PerlIO typedef PerlIO * DebugStream; #else typedef FILE * DebugStream; #endif /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void debug_vprintf(const char *f, va_list *l); static void debug_printf(const char *f, ...); static void debug_printf_ctlib(const char *f, ...); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ static DebugStream gs_DB_stream; /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: debug_* * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Debug output routines. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void debug_vprintf(const char *f, va_list *l) { dTHX; vfprintf(gs_DB_stream, f, *l); } static void debug_printf(const char *f, ...) { dTHX; va_list l; va_start(l, f); vfprintf(gs_DB_stream, f, l); va_end(l); } static void debug_printf_ctlib(const char *f, ...) { dTHX; va_list l; va_start(l, f); debug_printf("DBG: "); vfprintf(gs_DB_stream, f, l); debug_printf("\n"); va_end(l); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: set_debug_options * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void set_debug_options(pTHX_ const char *dbopts) { unsigned long memflags, hashflags, dbgflags; if (strEQ(dbopts, "all")) { memflags = hashflags = dbgflags = 0xFFFFFFFF; } else { memflags = hashflags = dbgflags = 0; while (*dbopts) { switch (*dbopts) { case 'm': memflags |= DB_MEMALLOC_TRACE; break; case 'M': memflags |= DB_MEMALLOC_TRACE | DB_MEMALLOC_ASSERT; break; case 'h': hashflags |= DB_HASH_MAIN; break; case 'd': dbgflags |= DB_CTLIB_MAIN; break; case 'p': dbgflags |= DB_CTLIB_PARSER; break; case 'l': dbgflags |= DB_CTLIB_CLEXER; break; case 'y': dbgflags |= DB_CTLIB_YACC; break; case 'r': dbgflags |= DB_CTLIB_PRAGMA; break; case 'c': dbgflags |= DB_CTLIB_CTLIB; break; case 'H': dbgflags |= DB_CTLIB_HASH; break; case 't': dbgflags |= DB_CTLIB_TYPE; break; case 'P': dbgflags |= DB_CTLIB_PREPROC; break; default: Perl_croak(aTHX_ "Unknown debug option '%c'", *dbopts); break; } dbopts++; } } if (!SetDebugMemAlloc(debug_printf, memflags)) fatal("Cannot enable memory debugging"); if (!SetDebugHash(debug_printf, hashflags)) fatal("Cannot enable hash debugging"); if (!SetDebugCType(debug_printf_ctlib, debug_vprintf, dbgflags)) fatal("Cannot enable debugging"); } /******************************************************************************* * * ROUTINE: set_debug_file * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void set_debug_file(pTHX_ const char *dbfile) { if (gs_DB_stream != stderr && gs_DB_stream != NULL) { fclose(gs_DB_stream); gs_DB_stream = NULL; } gs_DB_stream = dbfile ? fopen(dbfile, "w") : stderr; if (gs_DB_stream == NULL) { WARN((aTHX_ "Cannot open '%s', defaulting to stderr", dbfile)); gs_DB_stream = stderr; } } /******************************************************************************* * * ROUTINE: init_debugging * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void init_debugging(pTHX) { gs_DB_stream = stderr; } #endif /* CBC_DEBUGGING */ Convert-Binary-C-0.85/cbc/basic.c0000644000175000001440000001773714677003452015206 0ustar mhxusers/******************************************************************************* * * MODULE: basic.c * ******************************************************************************** * * DESCRIPTION: C::B::C basic types * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/basic.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct basic_type_info { Declarator *pDecl; } BTInfo; enum BTName { BT_CHAR, BT_SIGNED_CHAR, BT_UNSIGNED_CHAR, BT_SHORT, BT_SIGNED_SHORT, BT_UNSIGNED_SHORT, BT_INT, BT_SIGNED_INT, BT_UNSIGNED_INT, BT_LONG, BT_SIGNED_LONG, BT_UNSIGNED_LONG, BT_LONG_LONG, BT_SIGNED_LONG_LONG, BT_UNSIGNED_LONG_LONG, BT_FLOAT, BT_DOUBLE, BT_LONG_DOUBLE, NUM_BT_NAMES }; struct _basic_types { BTInfo ti[NUM_BT_NAMES]; }; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: basic_types_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ BasicTypes basic_types_new(void) { BasicTypes bt; int i; New(0, bt, 1, struct _basic_types); for (i = 0; i < NUM_BT_NAMES; i++) bt->ti[i].pDecl = decl_new("", 0); return bt; } /******************************************************************************* * * ROUTINE: basic_types_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void basic_types_delete(BasicTypes bt) { if (bt) { int i; for (i = 0; i < NUM_BT_NAMES; i++) decl_delete(bt->ti[i].pDecl); Safefree(bt); } } /******************************************************************************* * * ROUTINE: basic_types_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ BasicTypes basic_types_clone(const BasicTypes src) { BasicTypes bt; int i; New(0, bt, 1, struct _basic_types); for (i = 0; i < NUM_BT_NAMES; i++) bt->ti[i].pDecl = decl_clone(src->ti[i].pDecl); return bt; } /******************************************************************************* * * ROUTINE: basic_types_reset * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void basic_types_reset(BasicTypes bt) { int i; for (i = 0; i < NUM_BT_NAMES; i++) { Declarator *pDecl = bt->ti[i].pDecl; pDecl->size = -1; pDecl->item_size = -1; } } /******************************************************************************* * * ROUTINE: basic_types_get_declarator * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Declarator *basic_types_get_declarator(BasicTypes bt, unsigned tflags) { BTInfo *bti = &bt->ti[0]; switch (tflags) { case T_CHAR: return bti[BT_CHAR].pDecl; case T_CHAR | T_SIGNED: return bti[BT_SIGNED_CHAR].pDecl; case T_CHAR | T_UNSIGNED: return bti[BT_UNSIGNED_CHAR].pDecl; case T_SHORT | T_INT: case T_SHORT: return bti[BT_SHORT].pDecl; case T_SHORT | T_SIGNED | T_INT: case T_SHORT | T_SIGNED: return bti[BT_SIGNED_SHORT].pDecl; case T_SHORT | T_UNSIGNED | T_INT: case T_SHORT | T_UNSIGNED: return bti[BT_UNSIGNED_SHORT].pDecl; case T_INT: return bti[BT_INT].pDecl; case T_SIGNED: case T_INT | T_SIGNED: return bti[BT_SIGNED_INT].pDecl; case T_UNSIGNED: case T_INT | T_UNSIGNED: return bti[BT_UNSIGNED_INT].pDecl; case T_LONG | T_INT: case T_LONG: return bti[BT_LONG].pDecl; case T_LONG | T_SIGNED | T_INT: case T_LONG | T_SIGNED: return bti[BT_SIGNED_LONG].pDecl; case T_LONG | T_UNSIGNED | T_INT: case T_LONG | T_UNSIGNED: return bti[BT_UNSIGNED_LONG].pDecl; case T_LONG | T_LONGLONG | T_INT: case T_LONG | T_LONGLONG: return bti[BT_LONG_LONG].pDecl; case T_LONG | T_LONGLONG | T_SIGNED | T_INT: case T_LONG | T_LONGLONG | T_SIGNED: return bti[BT_SIGNED_LONG_LONG].pDecl; case T_LONG | T_LONGLONG | T_UNSIGNED | T_INT: case T_LONG | T_LONGLONG | T_UNSIGNED: return bti[BT_UNSIGNED_LONG_LONG].pDecl; case T_FLOAT: return bti[BT_FLOAT].pDecl; case T_DOUBLE: return bti[BT_DOUBLE].pDecl; case T_LONG | T_DOUBLE: return bti[BT_LONG_DOUBLE].pDecl; default: return NULL; } } /******************************************************************************* * * ROUTINE: get_basic_type_spec * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_basic_type_spec(const char *name, TypeSpec *pTS) { const char *c; u_32 tflags = 0; for (;;) { success: /* skip whitespace */ while (isSPACE(*name)) name++; if (*name == '\0') break; if (!isALPHA(*name)) return 0; c = name++; while (isALPHA(*name)) name++; if (*name != '\0' && !isSPACE(*name)) return 0; #include "token/t_basic.c" unknown: return 0; } if (tflags == 0) return 0; if (pTS) { pTS->ptr = NULL; pTS->tflags = tflags; } return 1; } Convert-Binary-C-0.85/cbc/dimension.h0000644000175000001440000000416514677003452016106 0ustar mhxusers/******************************************************************************* * * HEADER: dimension.h * ******************************************************************************** * * DESCRIPTION: C::B::C dimension tag * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_DIMENSION_H #define _CBC_DIMENSION_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/member.h" #include "cbc/hook.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct dimension_tag { enum dimension_tag_type { DTT_NONE, DTT_FLEXIBLE, DTT_FIXED, DTT_MEMBER, DTT_HOOK } type; union { IV fixed; char *member; SingleHook *hook; } u; } DimensionTag; /*===== FUNCTION PROTOTYPES ==================================================*/ #define dimtag_verify CBC_dimtag_verify void dimtag_verify(pTHX_ const MemberInfo *pmi, const char *type); #define dimtag_new CBC_dimtag_new DimensionTag *dimtag_new(const DimensionTag *src); #define dimtag_delete CBC_dimtag_delete void dimtag_delete(DimensionTag *dim); #define dimtag_parse CBC_dimtag_parse int dimtag_parse(pTHX_ const MemberInfo *pmi, const char *type, SV *tag, DimensionTag *dim); #define dimtag_update CBC_dimtag_update void dimtag_update(DimensionTag *dst, const DimensionTag *src); #define dimtag_get CBC_dimtag_get SV *dimtag_get(pTHX_ const DimensionTag *dim); #define dimtag_is_flexible CBC_dimtag_is_flexible int dimtag_is_flexible(pTHX_ const DimensionTag *dim); #define dimtag_eval CBC_dimtag_eval long dimtag_eval(pTHX_ const DimensionTag *dim, long avail, SV *self, HV *parent); #endif Convert-Binary-C-0.85/cbc/object.h0000644000175000001440000000246114677003452015364 0ustar mhxusers/******************************************************************************* * * HEADER: object.h * ******************************************************************************** * * DESCRIPTION: C::B::C object * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_OBJECT_H #define _CBC_OBJECT_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define cbc_new CBC_cbc_new CBC *cbc_new(pTHX); #define cbc_delete CBC_cbc_delete void cbc_delete(pTHX_ CBC *THIS); #define cbc_clone CBC_cbc_clone CBC *cbc_clone(pTHX_ const CBC *THIS); #define cbc_bless CBC_cbc_bless SV *cbc_bless(pTHX_ CBC *THIS, const char *CLASS); #endif Convert-Binary-C-0.85/cbc/member.c0000644000175000001440000011170714677003452015364 0ustar mhxusers/******************************************************************************* * * MODULE: member.c * ******************************************************************************** * * DESCRIPTION: C::B::C compound member utilities * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/member.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /* for fast index -> string conversion */ #define MAX_IXSTR 15 /*===== TYPEDEFS =============================================================*/ typedef enum { GMS_NONE, GMS_PAD, GMS_HIT_OFF, GMS_HIT } GMSRV; typedef union { LinkedList list; int count; } AMSInfo; struct member_expr { enum { ST_MEMBER, ST_INDEX, ST_FINISH_INDEX, ST_SEARCH, ST_TERM } state; const char *p; unsigned startup : 1; unsigned has_dot : 1; char buf[1]; }; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void get_ams_struct(pTHX_ Struct *pStruct, SV *name, int level, AMSInfo *info); static void get_ams_type(pTHX_ TypeSpec *pTS, Declarator *pDecl, int dimension, SV *name, int level, AMSInfo *info); static GMSRV append_member_string_rec(pTHX_ const TypeSpec *pType, const Declarator *pDecl, int offset, SV *sv, GMSInfo *pInfo); static GMSRV get_member_string_rec(pTHX_ const Struct *pStruct, int offset, int realoffset, SV *sv, GMSInfo *pInfo); static int search_struct_member(Struct *pStruct, const char *elem, StructDeclaration **ppSD, Declarator **ppD); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_ams_struct * * WRITTEN BY: Marcus Holland-Moritz ON: Jul 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void get_ams_struct(pTHX_ Struct *pStruct, SV *name, int level, AMSInfo *info) { ListIterator sdi; StructDeclaration *pStructDecl; Declarator *pDecl; STRLEN len; CT_DEBUG(MAIN, (XSCLASS "::get_ams_struct( pStruct=%p, name='%s', level=%d, info=%p )", pStruct, name ? SvPV_nolen(name) : "", level, info)); if (name) { len = SvCUR(name); sv_catpvn_nomg(name, ".", 1); } LL_foreach(pStructDecl, sdi, pStruct->declarations) { if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { /* skip unnamed bitfield members right here */ if (pDecl->bitfield_flag && pDecl->identifier[0] == '\0') continue; if (name) { SvCUR_set(name, len+1); sv_catpvn_nomg(name, pDecl->identifier, CTT_IDLEN(pDecl)); } get_ams_type(aTHX_ &pStructDecl->type, pDecl, 0, name, level+1, info); } } else { TypeSpec *pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); if (name) SvCUR_set(name, len); get_ams_struct(aTHX_ (Struct *) pTS->ptr, name, level+1, info); } } if (name) SvCUR_set(name, len); } /******************************************************************************* * * ROUTINE: get_ams_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jul 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void get_ams_type(pTHX_ TypeSpec *pTS, Declarator *pDecl, int dimension, SV *name, int level, AMSInfo *info) { CT_DEBUG(MAIN, (XSCLASS "::get_ams_type( pTS=%p, pDecl=%p, dimension=%d, " "name='%s', level=%d, info=%p )", pTS, pDecl, dimension, name ? SvPV_nolen(name) : "", level, info)); if (pDecl && pDecl->array_flag && dimension < LL_count(pDecl->ext.array)) { Value *pValue = (Value *) LL_get(pDecl->ext.array, dimension); if ((pValue->flags & V_IS_UNDEF) == 0) { long i, ix, s = pValue->iv; STRLEN len; char ixstr[MAX_IXSTR+1]; int ixlen; if (name) { len = SvCUR(name); sv_catpvn_nomg(name, "[", 1); ixstr[MAX_IXSTR-1] = ']'; ixstr[MAX_IXSTR] = '\0'; } for (i = 0; i < s; i++) { if (name) { SvCUR_set(name, len+1); for (ix = i, ixlen = 2; ixlen < MAX_IXSTR; ix /= 10, ixlen++) { ixstr[MAX_IXSTR-ixlen] = (char)('0'+(ix%10)); if (ix < 10) break; } sv_catpvn_nomg(name, ixstr+MAX_IXSTR-ixlen, ixlen); } get_ams_type(aTHX_ pTS, pDecl, dimension+1, name, level+1, info); } if (name) SvCUR_set(name, len); } } else { if (pDecl && pDecl->pointer_flag) goto handle_basic; else if (pTS->tflags & T_TYPE) { Typedef *pTD = (Typedef *) pTS->ptr; get_ams_type(aTHX_ pTD->pType, pTD->pDecl, 0, name, level, info); } else if (pTS->tflags & T_COMPOUND) { Struct *pStruct = pTS->ptr; if (pStruct->declarations == NULL) WARN_UNDEF_STRUCT(pStruct); get_ams_struct(aTHX_ pStruct, name, level, info); } else { handle_basic: if (name) LL_push(info->list, newSVsv(name)); else info->count++; } } } /******************************************************************************* * * ROUTINE: append_member_string_rec * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static GMSRV append_member_string_rec(pTHX_ const TypeSpec *pType, const Declarator *pDecl, int offset, SV *sv, GMSInfo *pInfo) { CT_DEBUG(MAIN, ("append_member_string_rec( off=%d, sv='%s' )", offset, SvPV_nolen(sv))); if (pDecl && pDecl->identifier[0] != '\0') { CT_DEBUG(MAIN, ("Appending identifier [%s]", pDecl->identifier)); sv_catpvf(sv, ".%s", CONST_CHAR(pDecl->identifier)); } if (pDecl == NULL && pType->tflags & T_TYPE) { Typedef *pTypedef = (Typedef *) pType->ptr; pDecl = pTypedef->pDecl; pType = pTypedef->pType; } if (pDecl != NULL) { if (pDecl->offset > 0) offset -= pDecl->offset; for(;;) { int index, size; Value *pValue; if (pDecl->size < 0) fatal("pDecl->size is not initialized in append_member_string_rec()"); size = pDecl->size; if (pDecl->array_flag) { ListIterator ai; LL_foreach(pValue, ai, pDecl->ext.array) { size /= pValue->iv; index = offset/size; CT_DEBUG(MAIN, ("Appending array size [%d]", index)); sv_catpvf(sv, "[%d]", index); offset -= index*size; } } if (pDecl->pointer_flag || (pType->tflags & T_TYPE) == 0) break; do { Typedef *pTypedef = (Typedef *) pType->ptr; pDecl = pTypedef->pDecl; pType = pTypedef->pType; } while (!pDecl->pointer_flag && pType->tflags & T_TYPE && pDecl->array_flag == 0); } } if ((pDecl == NULL || !pDecl->pointer_flag) && pType->tflags & T_COMPOUND) return get_member_string_rec(aTHX_ pType->ptr, offset, offset, sv, pInfo); if (offset > 0) { CT_DEBUG(MAIN, ("Appending type offset [+%d]", offset)); sv_catpvf(sv, "+%d", offset); if (pInfo && pInfo->off) LL_push(pInfo->off, newSVsv(sv)); return GMS_HIT_OFF; } if (pInfo && pInfo->hit) LL_push(pInfo->hit, newSVsv(sv)); return GMS_HIT; } /******************************************************************************* * * ROUTINE: get_member_string_rec * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define GMS_HANDLE_PAD_REGION \ STMT_START { \ CT_DEBUG(MAIN, ("Padding region found, exiting")); \ sv_catpvf(sv, "+%d", realoffset); \ if (pInfo && pInfo->pad) \ { \ const char *str; \ STRLEN len; \ str = SvPV(sv, len); \ if (HT_store(pInfo->htpad, str, len, 0, NULL)) \ LL_push(pInfo->pad, newSVsv(sv)); \ } \ return GMS_PAD; \ } STMT_END #define GMS_HANDLE_BEST_MEMBER \ STMT_START { \ if (rval > best) \ { \ CT_DEBUG(MAIN, ("New member [%s] has better ranking (%d) than " \ "old member [%s] (%d)", SvPV_nolen(tmpSV), rval, \ bestSV ? SvPV_nolen(bestSV) : "", best)); \ \ best = rval; \ \ if (bestSV) \ { \ SV *t; \ t = tmpSV; \ tmpSV = bestSV; \ bestSV = t; \ } \ else \ { \ bestSV = tmpSV; \ tmpSV = NULL; \ } \ } \ \ if (best == GMS_HIT && pInfo == NULL) \ { \ CT_DEBUG(MAIN, ("Hit compound member without offset")); \ goto handle_union_end; \ } \ } STMT_END static GMSRV get_member_string_rec(pTHX_ const Struct *pStruct, int offset, int realoffset, SV *sv, GMSInfo *pInfo) { ListIterator sdi; StructDeclaration *pStructDecl; Declarator *pDecl; SV *tmpSV, *bestSV; GMSRV best; int isUnion; CT_DEBUG(MAIN, ("get_member_string_rec( off=%d, roff=%d, sv='%s' )", offset, realoffset, SvPV_nolen(sv))); if (pStruct->declarations == NULL) { WARN_UNDEF_STRUCT(pStruct); return GMS_NONE; } if ((isUnion = pStruct->tflags & T_UNION) != 0) { best = GMS_NONE; bestSV = NULL; tmpSV = NULL; } LL_foreach(pStructDecl, sdi, pStruct->declarations) { CT_DEBUG(MAIN, ("Current StructDecl: offset=%d size=%d decl=%p", pStructDecl->offset, pStructDecl->size, pStructDecl->declarators)); if (pStructDecl->offset > offset) GMS_HANDLE_PAD_REGION; if (pStructDecl->offset <= offset && offset < pStructDecl->offset+pStructDecl->size) { CT_DEBUG(MAIN, ("Member possilbly within current StructDecl (%d <= %d < %d)", pStructDecl->offset, offset, pStructDecl->offset+pStructDecl->size)); if (pStructDecl->declarators == NULL) { TypeSpec *pTS; CT_DEBUG(MAIN, ("Current StructDecl is an unnamed %s", isUnion ? "union" : "struct")); pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); if (isUnion) { GMSRV rval; if (tmpSV == NULL) tmpSV = newSVsv(sv); else sv_setsv(tmpSV, sv); rval = get_member_string_rec(aTHX_ (Struct *) pTS->ptr, offset, realoffset, tmpSV, pInfo); GMS_HANDLE_BEST_MEMBER; } else /* not isUnion */ { return get_member_string_rec(aTHX_ (Struct *) pTS->ptr, offset - pStructDecl->offset, realoffset, sv, pInfo); } } else { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { CT_DEBUG(MAIN, ("Current Declarator [%s]: offset=%d size=%d", pDecl->identifier, pDecl->offset, pDecl->size)); if (pDecl->offset > offset) GMS_HANDLE_PAD_REGION; if (pDecl->offset <= offset && offset < pDecl->offset+pDecl->size) { CT_DEBUG(MAIN, ("Member possibly within current Declarator [%s] " "( %d <= %d < %d )", pDecl->identifier, pDecl->offset, offset, pDecl->offset+pDecl->size)); if (isUnion) { GMSRV rval; if (tmpSV == NULL) tmpSV = newSVsv(sv); else sv_setsv(tmpSV, sv); rval = append_member_string_rec(aTHX_ &pStructDecl->type, pDecl, offset, tmpSV, pInfo); GMS_HANDLE_BEST_MEMBER; } else /* not isUnion */ { return append_member_string_rec(aTHX_ &pStructDecl->type, pDecl, offset, sv, pInfo); } } } } } } CT_DEBUG(MAIN, ("End of %s reached", isUnion ? "union" : "struct")); if (!isUnion || bestSV == NULL) GMS_HANDLE_PAD_REGION; handle_union_end: if (!isUnion) fatal("not a union!"); if (bestSV == NULL) fatal("bestSV not set!"); sv_setsv(sv, bestSV); SvREFCNT_dec(bestSV); if (tmpSV) SvREFCNT_dec(tmpSV); return best; } /******************************************************************************* * * ROUTINE: search_struct_member * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int search_struct_member(Struct *pStruct, const char *elem, StructDeclaration **ppSD, Declarator **ppD) { ListIterator sdi; StructDeclaration *pStructDecl; Declarator *pDecl = NULL; int offset; LL_foreach(pStructDecl, sdi, pStruct->declarations) { if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { if (strEQ(pDecl->identifier, elem)) break; } if (pDecl) { offset = pDecl->offset; break; } } else { TypeSpec *pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); offset = pStructDecl->offset; offset += search_struct_member((Struct *) pTS->ptr, elem, &pStructDecl, &pDecl); if (pDecl) break; } } *ppSD = pStructDecl; *ppD = pDecl; if (pDecl) return offset < 0 ? 0 : offset; return -1; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_all_member_strings * * WRITTEN BY: Marcus Holland-Moritz ON: Jul 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_all_member_strings(pTHX_ MemberInfo *pMI, LinkedList list) { AMSInfo info; if (list) info.list = list; else info.count = 0; get_ams_type(aTHX_ &pMI->type, pMI->pDecl, pMI->level, list ? sv_2mortal(newSVpvn("", 0)) : NULL, 0, &info); return list ? LL_count(list) : info.count; } /******************************************************************************* * * ROUTINE: get_member_string * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_member_string(pTHX_ const MemberInfo *pMI, int offset, GMSInfo *pInfo) { GMSRV rval; SV *sv; int dim; CT_DEBUG(MAIN, ("get_member_string( off=%d )", offset)); if (pInfo) pInfo->htpad = HT_new(4); sv = newSVpvn("", 0); /* handle array remainder here */ if (pMI->pDecl && pMI->pDecl->array_flag && pMI->level < (dim = LL_count(pMI->pDecl->ext.array))) { int i, index, size = pMI->size; for (i = pMI->level; i < dim; i++) { size /= ((Value *) LL_get(pMI->pDecl->ext.array, i))->iv; index = offset / size; sv_catpvf(sv, "[%d]", index); offset -= index*size; } } rval = append_member_string_rec(aTHX_ &pMI->type, NULL, offset, sv, pInfo); if (pInfo) HT_destroy(pInfo->htpad, NULL); if (rval == GMS_NONE) { SvREFCNT_dec(sv); sv = newSV(0); } return sv_2mortal(sv); } /******************************************************************************* * * ROUTINE: get_member * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define TRUNC_NAME \ STMT_START { \ strncpy(trunc, name, 20); \ if (strlen(name) > 20) \ { \ trunc[17] = trunc[18] = trunc[19] = '.'; \ trunc[20] = '\0'; \ } \ } STMT_END #define PROPAGATE_FLAGS(from) \ STMT_START { \ if (pMIout) \ pMIout->flags |= (from) & (T_HASBITFIELD | T_UNSAFE_VAL); \ } STMT_END #define CANNOT_ACCESS_MEMBER(type) \ STMT_START { \ assert(name != NULL); \ TRUNC_NAME; \ (void) sprintf(err = errbuf, \ "Cannot access member '%s' of " type " type", trunc); \ goto error; \ } STMT_END int get_member(pTHX_ const MemberInfo *pMI, const char *member, MemberInfo *pMIout, unsigned gm_flags) { unsigned accept_dotless_member = gm_flags & CBC_GM_ACCEPT_DOTLESS_MEMBER; const unsigned do_calc = (gm_flags & CBC_GM_NO_OFFSET_SIZE_CALC) == 0; const unsigned reject_oobi = gm_flags & CBC_GM_REJECT_OUT_OF_BOUNDS_INDEX; const unsigned reject_offset = gm_flags & CBC_GM_REJECT_OFFSET; const TypeSpec *pType; int size, level, t_off; int offset; Struct *pStruct; StructDeclaration *pSD; Declarator *pDecl; char *err, errbuf[128], trunc[32]; MemberExprWalker walker; const char *name; CT_DEBUG(MAIN, ("get_member( member=\"%s\", accept_dotless_member=%d, do_calc=%d, reject_oobi=%d )", member, accept_dotless_member, do_calc, reject_oobi)); walker = member_expr_walker_new(aTHX_ member, 0); if (pMIout) pMIout->flags = 0; pStruct = NULL; pType = &pMI->type; pDecl = pMI->pDecl; if (pDecl == NULL && pType->tflags & T_TYPE) { Typedef *pTypedef = (Typedef *) pType->ptr; pDecl = pTypedef->pDecl; pType = pTypedef->pType; } name = NULL; err = NULL; offset = 0; level = pMI->level; size = do_calc ? -1 : 0; if (do_calc && pDecl) { int i; size = pDecl->size; if (level > 0) { assert(pDecl->array_flag); if (size < 0) fatal("pDecl->size is not initialized in get_member()"); for (i = 0; i < level; i++) size /= ((Value *) LL_get(pDecl->ext.array, i))->iv; } } for (;;) { struct me_walk_info mei; member_expr_walker_walk(aTHX_ walker, &mei); CT_DEBUG(MAIN, ("(offset=%d, level=%d, size=%d) %s (%d)", offset, level, size, member_expr_walker_retval_string(mei.retval), (int) mei.retval)); if (mei.retval == MERV_END) { break; } switch (mei.retval) { case MERV_ERR_INVALID_MEMBER_START: err = "Struct members must start with a character or an underscore"; goto error; case MERV_ERR_INVALID_INDEX: err = "Array indices must be constant decimal values"; goto error; case MERV_ERR_INVALID_CHAR: (void) sprintf(err = errbuf, "Invalid character '%c' (0x%02X) in " "compound member expression", mei.u.invalid_char, (int) mei.u.invalid_char); goto error; case MERV_ERR_INDEX_NOT_TERMINATED: err = "Index operator not terminated correctly"; goto error; case MERV_ERR_INCOMPLETE: err = "Incomplete compound member expression"; goto error; case MERV_ERR_TERMINATED: fatal("member expression already terminated in get_member()"); break; default: /* handled in next switch */ break; } PROPAGATE_FLAGS(pType->tflags); if (pDecl && !pDecl->pointer_flag && pType->tflags & T_TYPE && level == (pDecl->array_flag ? LL_count(pDecl->ext.array) : 0)) { do { Typedef *pTypedef = (Typedef *) pType->ptr; pDecl = pTypedef->pDecl; pType = pTypedef->pType; } while (!pDecl->pointer_flag && pType->tflags & T_TYPE && pDecl->array_flag == 0); if (do_calc) { size = pDecl->size; } level = 0; } switch (mei.retval) { case MERV_COMPOUND_MEMBER: { name = mei.u.compound_member.name; CT_DEBUG(MAIN, ("MEMBER: \"%s\"%s", name, mei.u.compound_member.has_dot ? " [dot]" : "")); if (!accept_dotless_member && !mei.u.compound_member.has_dot) { (void) sprintf(err = errbuf, "Invalid character '%c' (0x%02X) in " "compound member expression", name[0], (int) name[0]); goto error; } if (pDecl && pDecl->array_flag && level < LL_count(pDecl->ext.array)) CANNOT_ACCESS_MEMBER("array"); else if (pDecl && pDecl->pointer_flag) CANNOT_ACCESS_MEMBER("pointer"); else if (pType->tflags & T_COMPOUND) { pStruct = (Struct *) pType->ptr; PROPAGATE_FLAGS(pStruct->tflags); } else CANNOT_ACCESS_MEMBER("non-compound"); t_off = search_struct_member(pStruct, name, &pSD, &pDecl); pType = &pSD->type; if (t_off < 0) { TRUNC_NAME; (void) sprintf(err = errbuf, "Cannot find %s member '%s'", pStruct->tflags & T_STRUCT ? "struct" : "union", trunc); goto error; } if (do_calc) { size = pDecl->size; offset += t_off; } level = 0; } break; case MERV_ARRAY_INDEX: { int dim; if (pDecl == NULL || (level == 0 && pDecl->array_flag == 0)) { if (name) { TRUNC_NAME; (void) sprintf(err = errbuf, "Cannot use '%s' as an array", trunc); } else err = "Cannot use type as an array"; goto error; } assert(pDecl->array_flag); dim = LL_count(pDecl->ext.array); if (level >= dim) { if (name) { TRUNC_NAME; (void) sprintf(err = errbuf, "Cannot use '%s' as a %d-dimensional array", trunc, level+1); } else { (void) sprintf(err = errbuf, "Cannot use type as a %d-dimensional array", level+1); } goto error; } else { Value *pValue; int index; pValue = (Value *) LL_get(pDecl->ext.array, level); index = mei.u.array_index; CT_DEBUG(MAIN, ("INDEX: %d", index)); if (pValue->flags & V_IS_UNDEF) { if (do_calc) { size = pDecl->item_size; if (size <= 0) fatal("pDecl->item_size is not initialized in get_member()"); while (dim-- > level+1) size *= ((Value *) LL_get(pDecl->ext.array, dim))->iv; } } else { dim = pValue->iv; if (reject_oobi) { if (index < 0) { (void) sprintf(err = errbuf, "Cannot use negative index %d into array", index); goto error; } else if (index >= dim) { (void) sprintf(err = errbuf, "Cannot use index %d into array of size %d", index, dim); goto error; } } if (do_calc) { if (size < 0) fatal("size is not initialized in get_member()"); size /= dim; } } if (do_calc) { if (size < 0) fatal("size is not initialized in get_member()"); offset += index * size; } level++; } } break; case MERV_OFFSET: if (reject_offset) { err = "Cannot use offset in compound member expression"; goto error; } if (do_calc) { offset += mei.u.offset; } break; default: /* all error cases have been handled above */ fatal("unexpected retval (%d) in get_member()", (int) mei.retval); break; } /* only accept dotless members at the very beginning */ accept_dotless_member = 0; } error: member_expr_walker_delete(aTHX_ walker); if (err != NULL) { if (gm_flags & CBC_GM_DONT_CROAK) return 0; Perl_croak(aTHX_ "%s", err); } CT_DEBUG(MAIN, ("FINISHED: typespec=[ptr=%p, flags=0x%lX], pDecl=%p[dim=%d], level=%d, offset=%d, size=%d, parent=%p", pType->ptr, (unsigned long) pType->tflags, pDecl, pDecl && pDecl->array_flag ? LL_count(pDecl->ext.array) : 0, level, offset, size, pStruct)); if (pMIout) { pMIout->type = *pType; pMIout->parent = pStruct; pMIout->pDecl = pDecl; pMIout->level = level; pMIout->offset = offset; pMIout->size = (unsigned) size; } return 1; } #undef TRUNC_NAME #undef PROPAGATE_FLAGS #undef CANNOT_ACCESS_MEMBER /******************************************************************************* * * ROUTINE: member_expr_walker_new * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ MemberExprWalker member_expr_walker_new(pTHX_ const char *expr, size_t len) { MemberExprWalker me; assert(expr != NULL); if (len == 0) len = strlen(expr); Newc(0, me, offsetof(struct member_expr, buf) + len + 1, char, struct member_expr); me->state = ST_SEARCH; me->p = expr; me->startup = 1; me->has_dot = 0; CT_DEBUG(MAIN, ("(walk) created new walker @ %p", me)); return me; } /******************************************************************************* * * ROUTINE: member_expr_walker_retval_string * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const char *member_expr_walker_retval_string(enum me_walk_rv retval) { static const char *Sretval[] = { "MERV_COMPOUND_MEMBER", "MERV_ARRAY_INDEX", "MERV_OFFSET", "MERV_ERR_INVALID_MEMBER_START", "MERV_ERR_INVALID_INDEX", "MERV_ERR_INVALID_CHAR", "MERV_ERR_INDEX_NOT_TERMINATED", "MERV_ERR_INCOMPLETE", "MERV_ERR_TERMINATED", "MERV_END" }; return Sretval[retval]; } /******************************************************************************* * * ROUTINE: member_expr_walker_walk * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void member_expr_walker_walk(pTHX_ MemberExprWalker me, struct me_walk_info *info) { #ifdef CBC_DEBUGGING static const char *Sstate[] = { "ST_MEMBER", "ST_INDEX", "ST_FINISH_INDEX", "ST_SEARCH", "ST_TERM" }; #endif const char *c, *ixstr; assert(me != NULL); if (me->state == ST_TERM) { info->retval = MERV_ERR_TERMINATED; return; } c = me->p; for (;;) { CT_DEBUG(MAIN, ("(walk) state = %s (%d) \"%s\"%s%s", Sstate[me->state], me->state, c, me->startup ? " [startup]" : "", me->has_dot ? " [dot]" : "")); while (isSPACE(*c)) c++; if (*c == '\0') { if (me->state != ST_SEARCH) { info->retval = MERV_ERR_INCOMPLETE; goto error; } info->retval = MERV_END; me->state = ST_TERM; return; } switch (me->state) { case ST_MEMBER: if(!(isALPHA(*c) || *c == '_')) { info->retval = MERV_ERR_INVALID_MEMBER_START; goto error; } else { char *e = &me->buf[0]; do *e++ = *c++; while (isALNUM(*c) || *c == '_'); *e = '\0'; info->retval = MERV_COMPOUND_MEMBER; info->u.compound_member.name = &me->buf[0]; info->u.compound_member.name_length = e - &me->buf[0]; info->u.compound_member.has_dot = me->has_dot; goto found; } case ST_INDEX: ixstr = c; if (*c == '-' || *c == '+') { c++; } if (!isDIGIT(*c)) { info->retval = MERV_ERR_INVALID_INDEX; goto error; } do c++; while (isDIGIT(*c)); me->state = ST_FINISH_INDEX; break; case ST_FINISH_INDEX: if (*c++ != ']') { info->retval = MERV_ERR_INDEX_NOT_TERMINATED; goto error; } info->retval = MERV_ARRAY_INDEX; info->u.array_index = atoi(ixstr); goto found; case ST_SEARCH: { int inc_c = 1; switch (*c) { case '+': if (*(c+1) != '\0') { const char *p = c+1; while (isDIGIT(*p)) p++; while (isSPACE(*p)) p++; /* only allowed at end of string */ if (*p == '\0') { info->retval = MERV_OFFSET; info->u.offset = atoi(c+1); c = p; goto found; } } /* fall through */ default: if (!me->startup || !(isALPHA(*c) || *c == '_')) { info->retval = MERV_ERR_INVALID_CHAR; info->u.invalid_char = *c; goto error; } inc_c = 0; /* fall through */ case '.': me->has_dot = *c == '.'; me->state = ST_MEMBER; break; case '[': me->state = ST_INDEX; break; } if (inc_c) c++; } break; default: fatal("invalid state (%d) in member_expr_walker_walk()", (int) me->state); break; } /* only accept dotless members at the very beginning */ me->startup = 0; } error: /* no need to update me->p here */ me->state = ST_TERM; return; found: me->p = c; me->state = ST_SEARCH; } /******************************************************************************* * * ROUTINE: member_expr_walker_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void member_expr_walker_delete(pTHX_ MemberExprWalker me) { assert(me != NULL); CT_DEBUG(MAIN, ("(walk) delete walker @ %p", me)); Safefree(me); } Convert-Binary-C-0.85/cbc/hook.h0000644000175000001440000000546214677003452015062 0ustar mhxusers/******************************************************************************* * * HEADER: hook.h * ******************************************************************************** * * DESCRIPTION: C::B::C hooks * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_HOOK_H #define _CBC_HOOK_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ /*===== DEFINES ==============================================================*/ #define SHF_ALLOW_ARG_SELF 0x00000001U #define SHF_ALLOW_ARG_TYPE 0x00000002U #define SHF_ALLOW_ARG_DATA 0x00000004U #define SHF_ALLOW_ARG_HOOK 0x00000008U #define SHF_ALLOW_ALL_ARGS 0xFFFFFFFFU /*===== TYPEDEFS =============================================================*/ typedef enum { HOOK_ARG_SELF, HOOK_ARG_TYPE, HOOK_ARG_DATA, HOOK_ARG_HOOK } HookArgType; typedef struct { SV *sub; AV *arg; } SingleHook; #include "token/t_hookid.h" typedef struct { SingleHook hooks[HOOKID_COUNT]; } TypeHooks; /*===== FUNCTION PROTOTYPES ==================================================*/ #define single_hook_fill CBC_single_hook_fill void single_hook_fill(pTHX_ const char *hook, const char *type, SingleHook *sth, SV *sub, U32 allowed_args); #define single_hook_new CBC_single_hook_new SingleHook *single_hook_new(const SingleHook *h); #define hook_new CBC_hook_new TypeHooks *hook_new(const TypeHooks *h); #define single_hook_update CBC_single_hook_update void single_hook_update(SingleHook *dst, const SingleHook *src); #define hook_update CBC_hook_update void hook_update(TypeHooks *dst, const TypeHooks *src); #define single_hook_delete CBC_single_hook_delete void single_hook_delete(SingleHook *hook); #define hook_delete CBC_hook_delete void hook_delete(TypeHooks *h); #define single_hook_call CBC_single_hook_call SV *single_hook_call(pTHX_ SV *self, const char *hook_id_str, const char *id_pre, const char *id, const SingleHook *hook, SV *in, int mortal); #define hook_call CBC_hook_call SV *hook_call(pTHX_ SV *self, const char *id_pre, const char *id, const TypeHooks *pTH, enum HookId hook_id, SV *in, int mortal); #define find_hooks CBC_find_hooks int find_hooks(pTHX_ const char *type, HV *hooks, TypeHooks *pTH); #define get_single_hook CBC_get_single_hook SV *get_single_hook(pTHX_ const SingleHook *hook); #define get_hooks CBC_get_hooks HV *get_hooks(pTHX_ const TypeHooks *pTH); #endif Convert-Binary-C-0.85/cbc/type.c0000644000175000001440000003335514677003452015100 0ustar mhxusers/******************************************************************************* * * MODULE: type.c * ******************************************************************************** * * DESCRIPTION: C::B::C type names * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/basic.h" #include "cbc/cbc.h" #include "cbc/type.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void *get_type_pointer(CBC *THIS, const char *name, const char **pEOS); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_type_pointer * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void *get_type_pointer(CBC *THIS, const char *name, const char **pEOS) { const char *c = name; void *ptr = NULL; int len = 0; enum { S_UNKNOWN, S_STRUCT, S_UNION, S_ENUM } type = S_UNKNOWN; if (!THIS->cpi.available) return NULL; while (isSPACE(*c)) c++; if (*c == '\0') return NULL; switch (c[0]) { case 's': if (c[1] == 't' && c[2] == 'r' && c[3] == 'u' && c[4] == 'c' && c[5] == 't' && isSPACE(c[6])) { type = S_STRUCT; c += 6; } break; case 'u': if (c[1] == 'n' && c[2] == 'i' && c[3] == 'o' && c[4] == 'n' && isSPACE(c[5])) { type = S_UNION; c += 5; } break; case 'e': if (c[1] == 'n' && c[2] == 'u' && c[3] == 'm' && isSPACE(c[4])) { type = S_ENUM; c += 4; } break; default: break; } while (isSPACE(*c)) c++; while (c[len] == '_' || isALNUM(c[len])) len++; if (len == 0) return NULL; switch (type) { case S_STRUCT: case S_UNION: { Struct *pStruct = HT_get(THIS->cpi.htStructs, c, len, 0); ptr = (void *) (pStruct && (pStruct->tflags & (type == S_STRUCT ? T_STRUCT : T_UNION)) ? pStruct : NULL); } break; case S_ENUM: ptr = HT_get(THIS->cpi.htEnums, c, len, 0); break; default: if ((ptr = HT_get(THIS->cpi.htTypedefs, c, len, 0)) == NULL) if ((ptr = HT_get(THIS->cpi.htStructs, c, len, 0)) == NULL) ptr = HT_get(THIS->cpi.htEnums, c, len, 0); break; } if (pEOS) { c += len; while (isSPACE(*c)) c++; *pEOS = c; } return ptr; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_member_info * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_member_info(pTHX_ CBC *THIS, const char *name, MemberInfo *pMI, unsigned gmi_flags) { const int do_calc = (gmi_flags & CBC_GMI_NO_CALC) == 0; const char *member; MemberInfo mi; if (get_type_spec(THIS, name, &member, &mi.type) == 0) return 0; if (pMI) { pMI->flags = 0; pMI->parent = NULL; if (member && *member) { mi.pDecl = NULL; mi.level = 0; (void) get_member(aTHX_ &mi, member, pMI, do_calc ? 0 : CBC_GM_NO_OFFSET_SIZE_CALC); } else if (mi.type.ptr == NULL) { Declarator *pDecl = basic_types_get_declarator(THIS->basic, mi.type.tflags); if (pDecl == NULL) { SV *str = NULL; get_basic_type_spec_string(aTHX_ &str, mi.type.tflags); sv_2mortal(str); Perl_croak(aTHX_ "Unsupported basic type '%s'", SvPV_nolen(str)); } if (do_calc && pDecl->size < 0) (void) THIS->cfg.get_type_info(&THIS->cfg.layout, &mi.type, NULL, "si", &pDecl->size, &pDecl->item_size); pMI->pDecl = pDecl; pMI->type = mi.type; pMI->flags = 0; pMI->level = 0; pMI->offset = 0; pMI->size = do_calc ? pDecl->size : 0; } else { void *ptr = mi.type.ptr; /* TODO: improve this... */ switch (GET_CTYPE(ptr)) { case TYP_TYPEDEF: { /* TODO: get rid of get_type_info, add flags to size */ ErrorGTI err; err = THIS->cfg.get_type_info(&THIS->cfg.layout, ((Typedef *) ptr)->pType, ((Typedef *) ptr)->pDecl, "sf", &pMI->size, &pMI->flags); if (err != GTI_NO_ERROR) croak_gti(aTHX_ err, name, 0); } break; case TYP_STRUCT: if (((Struct *) ptr)->declarations == NULL) CROAK_UNDEF_STRUCT((Struct *) ptr); pMI->size = ((Struct *) ptr)->size; pMI->flags = ((Struct *) ptr)->tflags & (T_HASBITFIELD | T_UNSAFE_VAL); break; case TYP_ENUM: pMI->size = GET_ENUM_SIZE(&THIS->cfg, (EnumSpecifier *) ptr); break; default: fatal("get_type_spec returned an invalid type (%d) in " "get_member_info( '%s' )", GET_CTYPE(ptr), name); break; } if (!do_calc) { pMI->size = 0; } pMI->type = mi.type; pMI->pDecl = NULL; pMI->level = 0; pMI->offset = 0; } } return 1; } /******************************************************************************* * * ROUTINE: get_type_spec * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_type_spec(CBC *THIS, const char *name, const char **pEOS, TypeSpec *pTS) { void *ptr = get_type_pointer(THIS, name, pEOS); if (ptr == NULL) { if (pEOS) *pEOS = NULL; return get_basic_type_spec(name, pTS); } switch (GET_CTYPE(ptr)) { case TYP_TYPEDEF: pTS->tflags = T_TYPE; break; case TYP_STRUCT: pTS->tflags = ((Struct *) ptr)->tflags; break; case TYP_ENUM: pTS->tflags = T_ENUM; break; default: fatal("Invalid type (%d) in get_type_spec( '%s' )", GET_CTYPE(ptr), name); break; } pTS->ptr = ptr; return 1; } /******************************************************************************* * * ROUTINE: get_type_name_string * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_type_name_string(pTHX_ const MemberInfo *pMI) { SV *sv; if (pMI == NULL) fatal("get_type_name_string() called with NULL pointer"); if (pMI->type.ptr == NULL) { sv = NULL; get_basic_type_spec_string(aTHX_ &sv, pMI->type.tflags); } else { switch (GET_CTYPE(pMI->type.ptr)) { case TYP_TYPEDEF: sv = newSVpv(((Typedef *) pMI->type.ptr)->pDecl->identifier, 0); break; case TYP_STRUCT: { Struct *pS = (Struct *) pMI->type.ptr; sv = pS->identifier[0] == '\0' ? newSVpv(pS->tflags & T_STRUCT ? "struct" : "union", 0) : newSVpvf("%s %s", pS->tflags & T_STRUCT ? "struct" : "union", pS->identifier); } break; case TYP_ENUM: { EnumSpecifier *pE = (EnumSpecifier *) pMI->type.ptr; sv = pE->identifier[0] == '\0' ? newSVpvn("enum", 4) : newSVpvf("enum %s", pE->identifier); } break; default: fatal("GET_CTYPE() returned an invalid type (%d) " "in get_type_name_string()", GET_CTYPE(pMI->type.ptr)); break; } } if (pMI->pDecl != NULL) { if (pMI->pDecl->bitfield_flag) sv_catpvf(sv, " :%d", pMI->pDecl->ext.bitfield.bits); else { if (pMI->pDecl->pointer_flag) sv_catpv(sv, " *"); if (pMI->pDecl->array_flag) { int level = pMI->level; int count = LL_count(pMI->pDecl->ext.array); if (level < count) { sv_catpv(sv, " "); while (level < count) { Value *pValue = LL_get(pMI->pDecl->ext.array, level); if (pValue->flags & V_IS_UNDEF) sv_catpvn(sv, "[]", 2); else sv_catpvf(sv, "[%ld]", pValue->iv); level++; } } } } } return sv; } /******************************************************************************* * * ROUTINE: is_typedef_defined * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int is_typedef_defined(Typedef *pTypedef) { if (pTypedef->pDecl->pointer_flag) return 1; while (pTypedef->pType->tflags & T_TYPE) { pTypedef = (Typedef *) pTypedef->pType->ptr; if (pTypedef->pDecl->pointer_flag) return 1; } if (pTypedef->pType->tflags & T_COMPOUND) return ((Struct*) pTypedef->pType->ptr)->declarations != NULL; if (pTypedef->pType->tflags & T_ENUM) return ((EnumSpecifier*) pTypedef->pType->ptr)->enumerators != NULL; return 1; } /******************************************************************************* * * ROUTINE: check_allowed_types_string * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define CHECK_ALLOWED(flag, string) \ STMT_START { \ if ((allowed_types & ALLOW_ ## flag) == 0) \ return string; \ return NULL; \ } STMT_END const char *check_allowed_types_string(const MemberInfo *pMI, U32 allowed_types) { const Declarator *pDecl = pMI->pDecl; const TypeSpec *pType = &pMI->type; int level = 0; if (pType->tflags & T_TYPE && (pDecl == NULL || (!pDecl->pointer_flag && !pDecl->array_flag))) { do { const Typedef *pTypedef = (Typedef *) pType->ptr; pDecl = pTypedef->pDecl; pType = pTypedef->pType; } while (!pDecl->pointer_flag && !pDecl->array_flag && pType->tflags & T_TYPE); } else level = pMI->level; if (pDecl != NULL) { if (pDecl->array_flag && level < LL_count(pDecl->ext.array)) CHECK_ALLOWED(ARRAYS, "an array type"); if (pDecl->pointer_flag) CHECK_ALLOWED(POINTERS, "a pointer type"); } if (pType->ptr == NULL) CHECK_ALLOWED(BASIC_TYPES, "a basic type"); if (pType->tflags & T_UNION) CHECK_ALLOWED(UNIONS, "a union"); if (pType->tflags & T_STRUCT) CHECK_ALLOWED(STRUCTS, "a struct"); if (pType->tflags & T_ENUM) CHECK_ALLOWED(ENUMS, "an enum"); return NULL; } /******************************************************************************* * * ROUTINE: check_allowed_types * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void check_allowed_types(pTHX_ const MemberInfo *pMI, const char *method, U32 allowed_types) { const char *failed_type = check_allowed_types_string(pMI, allowed_types); if (failed_type) Perl_croak(aTHX_ "Cannot use %s on %s", method, failed_type); } Convert-Binary-C-0.85/cbc/dimension.c0000644000175000001440000004623714677003452016107 0ustar mhxusers/******************************************************************************* * * MODULE: dimension.c * ******************************************************************************** * * DESCRIPTION: C::B::C dimension tag * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #define NO_XSLOCKS #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" #include "cbc/hook.h" #include "cbc/util.h" #include "cbc/dimension.h" #include "cbc/type.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void dimtag_init(pTHX_ DimensionTag *dim); static void dimtag_fini(pTHX_ DimensionTag *dim); static void validate_member_expression(pTHX_ const MemberInfo *pmi, const char *member, const char *type); static long sv_to_dimension(pTHX_ SV *sv, const char *member); static long dimension_from_member(pTHX_ const char *member, HV *parent); static long dimension_from_hook(pTHX_ SingleHook *hook, SV *self, HV *parent); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: dimtag_init * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void dimtag_init(pTHX_ DimensionTag *dim) { assert(dim != NULL); switch (dim->type) { case DTT_MEMBER: { STRLEN len; const char *src = dim->u.member; assert(src != NULL); len = strlen(src); New(0, dim->u.member, len+1, char); strcpy(dim->u.member, src); } break; case DTT_HOOK: assert(dim->u.hook != NULL); dim->u.hook = single_hook_new(dim->u.hook); break; default: /* nothing to do */ break; } } /******************************************************************************* * * ROUTINE: dimtag_fini * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void dimtag_fini(pTHX_ DimensionTag *dim) { assert(dim != NULL); switch (dim->type) { case DTT_MEMBER: assert(dim->u.member != NULL); Safefree(dim->u.member); break; case DTT_HOOK: assert(dim->u.hook != NULL); single_hook_delete(dim->u.hook); break; default: break; } } /******************************************************************************* * * ROUTINE: validate_member_expression * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void validate_member_expression(pTHX_ const MemberInfo *pmi, const char *member, const char *type) { MemberInfo mi, mi2; const char *failed_type; assert(pmi != NULL); assert(member != NULL); if (pmi->parent == NULL) { Perl_croak(aTHX_ "Cannot use member expression '%s' as Dimension tag" " for '%s' when not within a compound type", member, type); } mi.type.ptr = pmi->parent; mi.type.tflags = ((Struct *) pmi->parent)->tflags; mi.pDecl = NULL; mi.level = 0; (void) get_member(aTHX_ &mi, member, &mi2, CBC_GM_ACCEPT_DOTLESS_MEMBER | CBC_GM_REJECT_OUT_OF_BOUNDS_INDEX | CBC_GM_REJECT_OFFSET); failed_type = check_allowed_types_string(&mi2, ALLOW_BASIC_TYPES); if (failed_type) { Perl_croak(aTHX_ "Cannot use %s in member '%s' to determine a dimension for '%s'", failed_type, member, type); } if (mi2.offset + (int)mi2.size > pmi->offset) { const char *where; if (mi2.offset == pmi->offset) where = "located at same offset as"; else if (mi2.offset < pmi->offset) where = "overlapping with"; else where = "located behind"; Perl_croak(aTHX_ "Cannot use member '%s' %s '%s' in layout" " to determine a dimension", member, where, type); } } /******************************************************************************* * * ROUTINE: sv_to_dimension * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static long sv_to_dimension(pTHX_ SV *sv, const char *member) { SV *warning; const char *value = NULL; assert(sv != NULL); SvGETMAGIC(sv); if (SvOK(sv) && !SvROK(sv)) { if (looks_like_number(sv)) { return SvIV(sv); } value = SvPV_nolen(sv); } warning = newSVpvn("", 0); if (value) sv_catpvf(warning, " ('%s')", value); if (member) sv_catpvf(warning, " in '%s'", member); WARN((aTHX_ "Cannot use %s%s as dimension", identify_sv(sv), SvPV_nolen(warning))); SvREFCNT_dec(warning); return 0; } /******************************************************************************* * * ROUTINE: dimension_from_member * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static long dimension_from_member(pTHX_ const char *member, HV *parent) { MemberExprWalker walker; int success = 1; SV *sv = NULL; dTHR; dXCPT; assert(member != NULL); if (parent == NULL) { WARN((aTHX_ "Missing parent to look up '%s'", member)); return 0; } CT_DEBUG(MAIN, ("trying to get dimension from member, walking \"%s\"", member)); walker = member_expr_walker_new(aTHX_ member, 0); XCPT_TRY_START { for (;;) { struct me_walk_info mei; member_expr_walker_walk(aTHX_ walker, &mei); if (mei.retval == MERV_END) { break; lookup_failed: success = 0; break; } switch (mei.retval) { case MERV_COMPOUND_MEMBER: { const char *name = mei.u.compound_member.name; HV *hv = parent; SV **psv; CT_DEBUG(MAIN, ("found compound member \"%s\"", name)); if (sv) { SV *hash; if (SvROK(sv) && SvTYPE(hash = SvRV(sv)) == SVt_PVHV) { hv = (HV *) hash; } else { WARN((aTHX_ "Expected a hash reference to look up member '%s'" " in '%s', not %s", name, member, identify_sv(sv))); goto lookup_failed; } } psv = hv_fetch(hv, name, mei.u.compound_member.name_length, 0); if (psv) { SvGETMAGIC(*psv); sv = *psv; } else { WARN((aTHX_ "Cannot find member '%s' in hash (in '%s')", name, member)); goto lookup_failed; } } break; case MERV_ARRAY_INDEX: { long last, index = mei.u.array_index; AV *av; SV *array; SV **psv; assert(sv != NULL); CT_DEBUG(MAIN, ("found array index \"%ld\"", index)); if (SvROK(sv) && SvTYPE(array = SvRV(sv)) == SVt_PVAV) { av = (AV *) array; } else { WARN((aTHX_ "Expected an array reference to look up index '%ld'" " in '%s', not %s", index, member, identify_sv(sv))); goto lookup_failed; } last = (long) av_len(av); if (index > last) { WARN((aTHX_ "Cannot lookup index '%ld' in array of size" " '%ld' (in '%s')", index, last + 1, member)); goto lookup_failed; } psv = av_fetch(av, index, 0); if (psv == NULL) { fatal("cannot find index '%ld' in array of size '%ld' (in '%s')", index, last + 1, member); } SvGETMAGIC(*psv); sv = *psv; } break; default: fatal("unexpected return value (%d) in dimension_from_member('%s')", (int) mei.retval, member); break; } } } XCPT_TRY_END member_expr_walker_delete(aTHX_ walker); XCPT_CATCH { XCPT_RETHROW; } if (success) { assert(sv != NULL); return sv_to_dimension(aTHX_ sv, member); } return 0; } /******************************************************************************* * * ROUTINE: dimension_from_hook * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static long dimension_from_hook(pTHX_ SingleHook *hook, SV *self, HV *parent) { dTHR; dXCPT; SV *sv, *in; long rv; assert(hook != NULL); assert(self != NULL); in = parent ? newRV_inc((SV *) parent) : NULL; sv = NULL; XCPT_TRY_START { sv = single_hook_call(aTHX_ self, "dimension", NULL, NULL, hook, in, 0); } XCPT_TRY_END XCPT_CATCH { if (parent) { CT_DEBUG(MAIN, ("freeing sv @ %p in dimension_from_hook:%d", in, __LINE__)); SvREFCNT_dec(in); } XCPT_RETHROW; } assert(sv != NULL); rv = sv_to_dimension(aTHX_ sv, NULL); SvREFCNT_dec(sv); return rv; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: dimtag_verify * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void dimtag_verify(pTHX_ const MemberInfo *pmi, const char *type) { const char *failed_type; assert(pmi != NULL); assert(type != NULL); assert(pmi->level == 0); failed_type = check_allowed_types_string(pmi, ALLOW_ARRAYS); if (failed_type) { Perl_croak(aTHX_ "Cannot use Dimension tag on %s '%s'", failed_type, type); } } /******************************************************************************* * * ROUTINE: dimtag_new * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ DimensionTag *dimtag_new(const DimensionTag *src) { dTHX; DimensionTag *dst; New(0, dst, 1, DimensionTag); if (src) { *dst = *src; dimtag_init(aTHX_ dst); } else { dst->type = DTT_NONE; } return dst; } /******************************************************************************* * * ROUTINE: dimtag_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void dimtag_delete(DimensionTag *dim) { dTHX; assert(dim != NULL); dimtag_fini(aTHX_ dim); Safefree(dim); } /******************************************************************************* * * ROUTINE: dimtag_parse * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int dimtag_parse(pTHX_ const MemberInfo *pmi, const char *type, SV *tag, DimensionTag *dim) { enum dimension_tag_type tag_type = DTT_NONE; assert(type != NULL); assert(tag != NULL); assert(dim != NULL); assert(SvOK(tag)); if (SvROK(tag)) { SV *sv = SvRV(tag); switch (SvTYPE(sv)) { case SVt_PVCV: case SVt_PVAV: tag_type = DTT_HOOK; break; default: break; } } else { if (SvPOK(tag)) { STRLEN len; const char *str = SvPV(tag, len); if (len > 0) { if (strEQ(str, "*")) { tag_type = DTT_FLEXIBLE; } else if (looks_like_number(tag)) { tag_type = DTT_FIXED; } else { tag_type = DTT_MEMBER; } } } else if (SvIOK(tag)) { tag_type = DTT_FIXED; } } switch (tag_type) { case DTT_NONE: Perl_croak(aTHX_ "Invalid Dimension tag for '%s'", type); break; case DTT_FLEXIBLE: break; case DTT_FIXED: { IV value = SvIV(tag); if (value < 0) Perl_croak(aTHX_ "Cannot use negative value %" IVdf " in Dimension" " tag for '%s'", value, type); dim->u.fixed = value; } break; case DTT_MEMBER: { STRLEN len; const char *src = SvPV(tag, len); validate_member_expression(aTHX_ pmi, src, type); New(0, dim->u.member, len+1, char); Copy(src, dim->u.member, len, char); dim->u.member[len] = '\0'; } break; case DTT_HOOK: { SingleHook newhook; U32 allowed = SHF_ALLOW_ARG_SELF | SHF_ALLOW_ARG_HOOK; if (pmi->parent) allowed |= SHF_ALLOW_ARG_DATA; single_hook_fill(aTHX_ "Dimension", type, &newhook, tag, allowed); dim->u.hook = single_hook_new(&newhook); } break; } dim->type = tag_type; return 1; } /******************************************************************************* * * ROUTINE: dimtag_update * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void dimtag_update(DimensionTag *dst, const DimensionTag *src) { dTHX; assert(dst != NULL); assert(src != NULL); dimtag_fini(aTHX_ dst); *dst = *src; } /******************************************************************************* * * ROUTINE: dimtag_get * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *dimtag_get(pTHX_ const DimensionTag *dim) { SV *sv; assert(dim != NULL); switch (dim->type) { case DTT_FLEXIBLE: sv = newSVpvn("*", 1); break; case DTT_FIXED: sv = newSViv(dim->u.fixed); break; case DTT_MEMBER: sv = newSVpv(dim->u.member, 0); break; case DTT_HOOK: sv = get_single_hook(aTHX_ dim->u.hook); break; case DTT_NONE: fatal("Invalid dimension tag type in dimtag_get()"); break; default: fatal("Unknown dimension tag type (%d) in dimtag_get()", (int) dim->type); break; } return sv; } /******************************************************************************* * * ROUTINE: dimtag_is_flexible * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int dimtag_is_flexible(pTHX_ const DimensionTag *dim) { assert(dim != NULL); return dim->type == DTT_FLEXIBLE; } /******************************************************************************* * * ROUTINE: dimtag_eval * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ long dimtag_eval(pTHX_ const DimensionTag *dim, long avail, SV *self, HV *parent) { assert(dim != NULL); assert(self != NULL); CT_DEBUG(MAIN, ("dimtag_eval(%p(%d), %ld, %p, %p)", dim, (int)dim->type, avail, self, parent)); switch (dim->type) { case DTT_FLEXIBLE: return avail; case DTT_FIXED: return (long) dim->u.fixed; case DTT_MEMBER: return dimension_from_member(aTHX_ dim->u.member, parent); case DTT_HOOK: return dimension_from_hook(aTHX_ dim->u.hook, self, parent); case DTT_NONE: fatal("Invalid dimension tag type in dimtag_get()"); break; default: fatal("Unknown dimension tag type (%d) in dimtag_get()", (int) dim->type); break; } assert(0); return 0; } Convert-Binary-C-0.85/cbc/init.h0000644000175000001440000000231514677003452015057 0ustar mhxusers/******************************************************************************* * * HEADER: init.h * ******************************************************************************** * * DESCRIPTION: C::B::C initializer * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_INIT_H #define _CBC_INIT_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" #include "cbc/member.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_initializer_string CBC_get_initializer_string SV *get_initializer_string(pTHX_ CBC *THIS, MemberInfo *pMI, SV *init, const char *name); #endif Convert-Binary-C-0.85/cbc/sourcify.c0000644000175000001440000006306614677003452015764 0ustar mhxusers/******************************************************************************* * * MODULE: sourcify.c * ******************************************************************************** * * DESCRIPTION: C::B::C sourcify * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/cttype.h" #include "cbc/cbc.h" #include "cbc/idl.h" #include "cbc/sourcify.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ #define T_ALREADY_DUMPED T_USER_FLAG_1 #define F_NEWLINE 0x00000001 #define F_KEYWORD 0x00000002 #define F_DONT_EXPAND 0x00000004 #define F_PRAGMA_PACK_POP 0x00000008 #define SRC_INDENT \ STMT_START { \ if (level > 0) \ add_indent(aTHX_ s, level); \ } STMT_END #define CHECK_SET_KEYWORD \ STMT_START { \ if (pSS->flags & F_KEYWORD) \ sv_catpvn(s, " ", 1); \ else \ SRC_INDENT; \ pSS->flags &= ~F_NEWLINE; \ pSS->flags |= F_KEYWORD; \ } STMT_END #define SvGROW_early(s, granularity) \ STMT_START { \ if (SvCUR(s) + ((granularity)/2) > SvLEN(s)) \ SvGROW(s, SvCUR(s) + (granularity)); \ } STMT_END #define SVG_STRUCT 512 #define SVG_ENUM 512 /*===== TYPEDEFS =============================================================*/ typedef struct { U32 flags; unsigned pack; } SourcifyState; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void check_define_type(pTHX_ SourcifyConfig *pSC, SV *str, TypeSpec *pTS); static void add_type_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *str, SV *s, TypeSpec *pTS, int level, SourcifyState *pSS); static void add_enum_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *s, EnumSpecifier *pES, int level, SourcifyState *pSS); static void add_struct_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *str, SV *s, Struct *pStruct, int level, SourcifyState *pSS); static void add_typedef_list_decl_string(pTHX_ SV *str, TypedefList *pTDL); static void add_typedef_list_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, TypedefList *pTDL); static void add_enum_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, EnumSpecifier *pES); static void add_struct_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, Struct *pStruct); static void pp_macro_callback(const CMacroInfo *pmi); static void add_preprocessor_definitions(pTHX_ CParseInfo *pCPI, SV *str); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: check_define_type * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void check_define_type(pTHX_ SourcifyConfig *pSC, SV *str, TypeSpec *pTS) { u_32 flags = pTS->tflags; CT_DEBUG(MAIN, (XSCLASS "::check_define_type( pTS=(tflags=0x%08lX, ptr=%p) )", (unsigned long) pTS->tflags, pTS->ptr)); if (flags & T_TYPE) { Typedef *pTypedef= (Typedef *) pTS->ptr; while (!pTypedef->pDecl->pointer_flag && pTypedef->pType->tflags & T_TYPE) pTypedef = (Typedef *) pTypedef->pType->ptr; if (pTypedef->pDecl->pointer_flag) return; pTS = pTypedef->pType; flags = pTS->tflags; } if (flags & T_ENUM) { EnumSpecifier *pES = (EnumSpecifier *) pTS->ptr; if (pES && (pES->tflags & T_ALREADY_DUMPED) == 0) add_enum_spec_string(aTHX_ pSC, str, pES); } else if (flags & T_COMPOUND) { Struct *pStruct = (Struct *) pTS->ptr; if (pStruct && (pStruct->tflags & T_ALREADY_DUMPED) == 0) add_struct_spec_string(aTHX_ pSC, str, pStruct); } } /******************************************************************************* * * ROUTINE: add_type_spec_string_rec * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_type_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *str, SV *s, TypeSpec *pTS, int level, SourcifyState *pSS) { u_32 flags = pTS->tflags; CT_DEBUG(MAIN, (XSCLASS "::add_type_spec_string_rec( pTS=(tflags=0x%08lX, ptr=%p" "), level=%d, pSS->flags=0x%08lX, pSS->pack=%u )", (unsigned long) pTS->tflags, pTS->ptr, level, (unsigned long) pSS->flags, pSS->pack)); if (flags & T_TYPE) { Typedef *pTypedef= (Typedef *) pTS->ptr; if (pTypedef && pTypedef->pDecl->identifier[0]) { CHECK_SET_KEYWORD; sv_catpv(s, pTypedef->pDecl->identifier); } } else if (flags & T_ENUM) { EnumSpecifier *pES = (EnumSpecifier *) pTS->ptr; if (pES) { if (pES->identifier[0] && ((pES->tflags & T_ALREADY_DUMPED) || (pSS->flags & F_DONT_EXPAND))) { CHECK_SET_KEYWORD; sv_catpvf(s, "enum %s", pES->identifier); } else add_enum_spec_string_rec(aTHX_ pSC, s, pES, level, pSS); } } else if (flags & T_COMPOUND) { Struct *pStruct = (Struct *) pTS->ptr; if (pStruct) { if (pStruct->identifier[0] && ((pStruct->tflags & T_ALREADY_DUMPED) || (pSS->flags & F_DONT_EXPAND))) { CHECK_SET_KEYWORD; sv_catpvf(s, "%s %s", flags & T_UNION ? "union" : "struct", pStruct->identifier); } else add_struct_spec_string_rec(aTHX_ pSC, str, s, pStruct, level, pSS); } } else { CHECK_SET_KEYWORD; get_basic_type_spec_string(aTHX_ &s, flags); } } /******************************************************************************* * * ROUTINE: add_enum_spec_string_rec * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION:\ * \ * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_enum_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *s, EnumSpecifier *pES, int level, SourcifyState *pSS) { CT_DEBUG(MAIN, (XSCLASS "::add_enum_spec_string_rec( pES=(identifier=\"%s\")," " level=%d, pSS->flags=0x%08lX, pSS->pack=%u )", pES->identifier, level, (unsigned long) pSS->flags, pSS->pack)); SvGROW_early(s, SVG_ENUM); pES->tflags |= T_ALREADY_DUMPED; if (pSC->context) { if ((pSS->flags & F_NEWLINE) == 0) { sv_catpvn(s, "\n", 1); pSS->flags &= ~F_KEYWORD; pSS->flags |= F_NEWLINE; } sv_catpvf(s, "#line %lu \"%s\"\n", pES->context.line, pES->context.pFI->name); } if (pSS->flags & F_KEYWORD) sv_catpvn(s, " ", 1); else SRC_INDENT; pSS->flags &= ~(F_NEWLINE|F_KEYWORD); sv_catpvn(s, "enum", 4); if (pES->identifier[0]) sv_catpvf(s, " %s", pES->identifier); if (pES->enumerators) { ListIterator ei; Enumerator *pEnum; int first = 1; Value lastVal; sv_catpvn(s, "\n", 1); SRC_INDENT; sv_catpvn(s, "{", 1); LL_foreach(pEnum, ei, pES->enumerators) { if (!first) sv_catpvn(s, ",", 1); sv_catpvn(s, "\n", 1); SRC_INDENT; if (( first && pEnum->value.iv == 0) || (!first && pEnum->value.iv == lastVal.iv + 1)) sv_catpvf(s, "\t%s", pEnum->identifier); else sv_catpvf(s, "\t%s = %ld", pEnum->identifier, pEnum->value.iv); if (first) first = 0; lastVal = pEnum->value; } sv_catpvn(s, "\n", 1); SRC_INDENT; sv_catpvn(s, "}", 1); } } /******************************************************************************* * * ROUTINE: add_struct_spec_string_rec * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_struct_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *str, SV *s, Struct *pStruct, int level, SourcifyState *pSS) { int pack_pushed; CT_DEBUG(MAIN, (XSCLASS "::add_struct_spec_string_rec( pStruct=(identifier=" "\"%s\", pack=%d, tflags=0x%08lX), level=%d" " pSS->flags=0x%08lX, pSS->pack=%u )", pStruct->identifier, pStruct->pack, (unsigned long) pStruct->tflags, level, (unsigned long) pSS->flags, pSS->pack)); SvGROW_early(s, SVG_STRUCT); pStruct->tflags |= T_ALREADY_DUMPED; pack_pushed = pStruct->declarations && pStruct->pack && pStruct->pack != pSS->pack; if (pack_pushed) { if ((pSS->flags & F_NEWLINE) == 0) { sv_catpvn(s, "\n", 1); pSS->flags &= ~F_KEYWORD; pSS->flags |= F_NEWLINE; } sv_catpvf(s, "#pragma pack(push, %u)\n", pStruct->pack); } if (pSC->context) { if ((pSS->flags & F_NEWLINE) == 0) { sv_catpvn(s, "\n", 1); pSS->flags &= ~F_KEYWORD; pSS->flags |= F_NEWLINE; } sv_catpvf(s, "#line %lu \"%s\"\n", pStruct->context.line, pStruct->context.pFI->name); } if (pSS->flags & F_KEYWORD) sv_catpvn(s, " ", 1); else SRC_INDENT; pSS->flags &= ~(F_NEWLINE|F_KEYWORD); if(pStruct->tflags & T_STRUCT) sv_catpvn(s, "struct", 6); else sv_catpvn(s, "union", 5); if (pStruct->identifier[0]) sv_catpvf(s, " %s", pStruct->identifier); if (pStruct->declarations) { ListIterator sdi; StructDeclaration *pStructDecl; sv_catpvn(s, "\n", 1); SRC_INDENT; sv_catpvn(s, "{\n", 2); LL_foreach(pStructDecl, sdi, pStruct->declarations) { ListIterator di; Declarator *pDecl; int first = 1, need_def = 0; SourcifyState ss; ss.flags = F_NEWLINE; ss.pack = pack_pushed ? pStruct->pack : 0; LL_foreach(pDecl, di, pStructDecl->declarators) if (pDecl->pointer_flag == 0) { need_def = 1; break; } if (!need_def) ss.flags |= F_DONT_EXPAND; add_type_spec_string_rec(aTHX_ pSC, str, s, &pStructDecl->type, level+1, &ss); ss.flags &= ~F_DONT_EXPAND; if (ss.flags & F_NEWLINE) add_indent(aTHX_ s, level+1); else if (pStructDecl->declarators) sv_catpvn(s, " ", 1); LL_foreach(pDecl, di, pStructDecl->declarators) { Value *pValue; if (first) first = 0; else sv_catpvn(s, ", ", 2); if (pDecl->bitfield_flag) { sv_catpvf(s, "%s:%d", pDecl->identifier, pDecl->ext.bitfield.bits); } else { sv_catpvf(s, "%s%s", pDecl->pointer_flag ? "*" : "", pDecl->identifier); if (pDecl->array_flag) { ListIterator ai; LL_foreach(pValue, ai, pDecl->ext.array) { if (pValue->flags & V_IS_UNDEF) sv_catpvn(s, "[]", 2); else sv_catpvf(s, "[%ld]", pValue->iv); } } } } sv_catpvn(s, ";\n", 2); if (ss.flags & F_PRAGMA_PACK_POP) sv_catpvn(s, "#pragma pack(pop)\n", 18); if (need_def) check_define_type(aTHX_ pSC, str, &pStructDecl->type); } SRC_INDENT; sv_catpvn(s, "}", 1); } if (pack_pushed) pSS->flags |= F_PRAGMA_PACK_POP; } /******************************************************************************* * * ROUTINE: add_typedef_list_decl_string * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_typedef_list_decl_string(pTHX_ SV *str, TypedefList *pTDL) { ListIterator ti; Typedef *pTypedef; int first = 1; CT_DEBUG(MAIN, (XSCLASS "::add_typedef_list_decl_string( pTDL=%p )", pTDL)); LL_foreach(pTypedef, ti, pTDL->typedefs) { Declarator *pDecl = pTypedef->pDecl; Value *pValue; if (first) first = 0; else sv_catpvn(str, ", ", 2); sv_catpvf(str, "%s%s", pDecl->pointer_flag ? "*" : "", pDecl->identifier); if (pDecl->array_flag) { ListIterator ai; LL_foreach(pValue, ai, pDecl->ext.array) { if (pValue->flags & V_IS_UNDEF) sv_catpvn(str, "[]", 2); else sv_catpvf(str, "[%ld]", pValue->iv); } } } } /******************************************************************************* * * ROUTINE: add_typedef_list_spec_string * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_typedef_list_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, TypedefList *pTDL) { SV *s = newSVpv("typedef", 0); SourcifyState ss; CT_DEBUG(MAIN, (XSCLASS "::add_typedef_list_spec_string( pTDL=%p )", pTDL)); ss.flags = F_KEYWORD; ss.pack = 0; add_type_spec_string_rec(aTHX_ pSC, str, s, &pTDL->type, 0, &ss); if ((ss.flags & F_NEWLINE) == 0) sv_catpvn(s, " ", 1); add_typedef_list_decl_string(aTHX_ s, pTDL); sv_catpvn(s, ";\n", 2); if (ss.flags & F_PRAGMA_PACK_POP) sv_catpvn(s, "#pragma pack(pop)\n", 18); sv_catsv(str, s); SvREFCNT_dec(s); } /******************************************************************************* * * ROUTINE: add_enum_spec_string * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_enum_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, EnumSpecifier *pES) { SV *s = newSVpvn("", 0); SourcifyState ss; CT_DEBUG(MAIN, (XSCLASS "::add_enum_spec_string( pES=%p )", pES)); ss.flags = 0; ss.pack = 0; add_enum_spec_string_rec(aTHX_ pSC, s, pES, 0, &ss); sv_catpvn(s, ";\n", 2); sv_catsv(str, s); SvREFCNT_dec(s); } /******************************************************************************* * * ROUTINE: add_struct_spec_string * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_struct_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, Struct *pStruct) { SV *s = newSVpvn("", 0); SourcifyState ss; CT_DEBUG(MAIN, (XSCLASS "::add_struct_spec_string( pStruct=%p )", pStruct)); ss.flags = 0; ss.pack = 0; add_struct_spec_string_rec(aTHX_ pSC, str, s, pStruct, 0, &ss); sv_catpvn(s, ";\n", 2); if (ss.flags & F_PRAGMA_PACK_POP) sv_catpvn(s, "#pragma pack(pop)\n", 18); sv_catsv(str, s); SvREFCNT_dec(s); } /******************************************************************************* * * ROUTINE: pp_macro_callback * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define SvGROWexp(s, amount) \ BEGIN_STMT { \ if (SvCUR(s) + pmi->definition_len + 10 >= SvLEN(s)) \ SvGROW(s, 2*SvLEN(s)); \ } END_STMT struct macro_cb_arg { #ifdef PERL_IMPLICIT_CONTEXT void *interp; #endif SV *string; }; static void pp_macro_callback(const CMacroInfo *pmi) { struct macro_cb_arg *a = pmi->arg; SV *s = a->string; dTHXa(a->interp); if (SvCUR(s) + pmi->definition_len + 10 >= SvLEN(s)) SvGROW(s, 2*SvLEN(s)); sv_catpvn(s, "#define ", 8); sv_catpvn(s, pmi->definition, pmi->definition_len); sv_catpvn(s, "\n", 1); } /******************************************************************************* * * ROUTINE: add_preprocessor_definitions * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_preprocessor_definitions(pTHX_ CParseInfo *pCPI, SV *str) { struct macro_cb_arg a; SV *s = newSVpvn("", 0); #ifdef PERL_IMPLICIT_CONTEXT a.interp = aTHX; #endif a.string = s; SvGROW(s, 512); macro_iterate_defs(pCPI, pp_macro_callback, &a, CMIF_WITH_DEFINITION | CMIF_NO_PREDEFINED); if (SvCUR(s) > 0) { sv_catpv(str, "/* preprocessor defines */\n\n"); sv_catsv(str, s); sv_catpvn(str, "\n", 1); } SvREFCNT_dec(s); } /******************************************************************************* * * ROUTINE: get_sourcify_config_option * * WRITTEN BY: Marcus Holland-Moritz ON: Aug 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #include "token/t_sourcify.c" /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_sourcify_config * * WRITTEN BY: Marcus Holland-Moritz ON: Aug 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void get_sourcify_config(pTHX_ HV *cfg, SourcifyConfig *pSC) { HE *opt; (void) hv_iterinit(cfg); while ((opt = hv_iternext(cfg)) != NULL) { const char *key; I32 keylen; SV *value; key = hv_iterkey(opt, &keylen); value = hv_iterval(cfg, opt); switch (get_sourcify_config_option(key)) { case SOURCIFY_OPTION_Context: pSC->context = SvTRUE(value); break; case SOURCIFY_OPTION_Defines: pSC->defines = SvTRUE(value); break; default: Perl_croak(aTHX_ "Invalid option '%s'", key); } } } /******************************************************************************* * * ROUTINE: get_parsed_definitions_string * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_parsed_definitions_string(pTHX_ CParseInfo *pCPI, SourcifyConfig *pSC) { ListIterator li; TypedefList *pTDL; EnumSpecifier *pES; Struct *pStruct; int fTypedefPre = 0, fTypedef = 0, fEnum = 0, fStruct = 0, fUndefEnum = 0, fUndefStruct = 0; SV *s = newSVpvn("", 0); CT_DEBUG(MAIN, (XSCLASS "::get_parsed_definitions_string( pCPI=%p, pSC=%p )", pCPI, pSC)); /* typedef predeclarations */ LL_foreach(pTDL, li, pCPI->typedef_lists) { u_32 tflags = pTDL->type.tflags; if ((tflags & (T_ENUM|T_STRUCT|T_UNION|T_TYPE)) == 0) { if (!fTypedefPre) { sv_catpv(s, "/* typedef predeclarations */\n\n"); fTypedefPre = 1; } add_typedef_list_spec_string(aTHX_ pSC, s, pTDL); } else { const char *what = NULL, *ident; if (tflags & T_ENUM) { EnumSpecifier *pES = (EnumSpecifier *) pTDL->type.ptr; if (pES && pES->identifier[0] != '\0') { what = "enum"; ident = pES->identifier; } } else if (tflags & T_COMPOUND) { Struct *pStruct = (Struct *) pTDL->type.ptr; if (pStruct && pStruct->identifier[0] != '\0') { what = pStruct->tflags & T_STRUCT ? "struct" : "union"; ident = pStruct->identifier; } } if (what != NULL) { if (!fTypedefPre) { sv_catpv(s, "/* typedef predeclarations */\n\n"); fTypedefPre = 1; } sv_catpvf(s, "typedef %s %s ", what, ident); add_typedef_list_decl_string(aTHX_ s, pTDL); sv_catpvn(s, ";\n", 2); } } } /* typedefs */ LL_foreach(pTDL, li, pCPI->typedef_lists) if (pTDL->type.ptr != NULL) if (((pTDL->type.tflags & T_ENUM) && ((EnumSpecifier *) pTDL->type.ptr)->identifier[0] == '\0') || ((pTDL->type.tflags & T_COMPOUND) && ((Struct *) pTDL->type.ptr)->identifier[0] == '\0') || (pTDL->type.tflags & T_TYPE)) { if (!fTypedef) { sv_catpv(s, "\n\n/* typedefs */\n\n"); fTypedef = 1; } add_typedef_list_spec_string(aTHX_ pSC, s, pTDL); sv_catpvn(s, "\n", 1); } /* defined enums */ LL_foreach(pES, li, pCPI->enums) if (pES->enumerators && pES->identifier[0] != '\0' && (pES->tflags & (T_ALREADY_DUMPED)) == 0) { if (!fEnum) { sv_catpv(s, "\n/* defined enums */\n\n"); fEnum = 1; } add_enum_spec_string(aTHX_ pSC, s, pES); sv_catpvn(s, "\n", 1); } /* defined structs and unions */ LL_foreach(pStruct, li, pCPI->structs) if(pStruct->declarations && pStruct->identifier[0] != '\0' && (pStruct->tflags & (T_ALREADY_DUMPED)) == 0) { if (!fStruct) { sv_catpv(s, "\n/* defined structs and unions */\n\n"); fStruct = 1; } add_struct_spec_string(aTHX_ pSC, s, pStruct); sv_catpvn(s, "\n", 1); } /* undefined enums */ LL_foreach(pES, li, pCPI->enums) { if ((pES->tflags & T_ALREADY_DUMPED) == 0 && pES->refcount == 0) { if (pES->enumerators || pES->identifier[0] != '\0') { if (!fUndefEnum) { sv_catpv(s, "\n/* undefined enums */\n\n"); fUndefEnum = 1; } add_enum_spec_string(aTHX_ pSC, s, pES); sv_catpvn(s, "\n", 1); } } pES->tflags &= ~T_ALREADY_DUMPED; } /* undefined structs and unions */ LL_foreach(pStruct, li, pCPI->structs) { if ((pStruct->tflags & T_ALREADY_DUMPED) == 0 && pStruct->refcount == 0) { if (pStruct->declarations || pStruct->identifier[0] != '\0') { if (!fUndefStruct) { sv_catpv(s, "\n/* undefined/unnamed structs and unions */\n\n"); fUndefStruct = 1; } add_struct_spec_string(aTHX_ pSC, s, pStruct); sv_catpvn(s, "\n", 1); } } pStruct->tflags &= ~T_ALREADY_DUMPED; } /* * preprocessor stuff * * NOTE: This _must_ be at the end, because, if placed at the top, some * defines may already interfere with the C code. */ if (pSC->defines) add_preprocessor_definitions(aTHX_ pCPI, s); return s; } Convert-Binary-C-0.85/cbc/object.c0000644000175000001440000001576314677003452015370 0ustar mhxusers/******************************************************************************* * * MODULE: object.c * ******************************************************************************** * * DESCRIPTION: C::B::C object * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "util/hash.h" #include "util/list.h" #include "ctlib/ctparse.h" #include "cbc/basic.h" #include "cbc/cbc.h" #include "cbc/object.h" #include "cbc/hook.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: cbc_new * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CBC *cbc_new(pTHX) { SV *sv; CBC *THIS; Newz(0, THIS, 1, CBC); sv = newSViv(PTR2IV(THIS)); SvREADONLY_on(sv); THIS->hv = newHV(); if (hv_store(THIS->hv, "", 0, sv, 0) == NULL) fatal("Couldn't store THIS into object."); THIS->enumType = CBC_DEFAULT_ENUMTYPE; THIS->ixhash = NULL; THIS->basic = basic_types_new(); THIS->cfg.layout.ptr_size = CBC_DEFAULT_PTR_SIZE; THIS->cfg.layout.enum_size = CBC_DEFAULT_ENUM_SIZE; THIS->cfg.layout.int_size = CBC_DEFAULT_INT_SIZE; THIS->cfg.layout.char_size = CBC_DEFAULT_CHAR_SIZE; THIS->cfg.layout.short_size = CBC_DEFAULT_SHORT_SIZE; THIS->cfg.layout.long_size = CBC_DEFAULT_LONG_SIZE; THIS->cfg.layout.long_long_size = CBC_DEFAULT_LONG_LONG_SIZE; THIS->cfg.layout.float_size = CBC_DEFAULT_FLOAT_SIZE; THIS->cfg.layout.double_size = CBC_DEFAULT_DOUBLE_SIZE; THIS->cfg.layout.long_double_size = CBC_DEFAULT_LONG_DOUBLE_SIZE; THIS->cfg.layout.alignment = CBC_DEFAULT_ALIGNMENT; THIS->cfg.layout.compound_alignment = CBC_DEFAULT_COMPOUND_ALIGNMENT; THIS->cfg.layout.byte_order = CBC_DEFAULT_BYTEORDER; THIS->cfg.layout.bflayouter = bl_create("Generic"); THIS->cfg.get_type_info = get_type_info_generic; THIS->cfg.layout_compound = layout_compound_generic; THIS->cfg.includes = LL_new(); THIS->cfg.defines = LL_new(); THIS->cfg.assertions = LL_new(); THIS->cfg.disabled_keywords = LL_new(); THIS->cfg.keyword_map = HT_new(1); THIS->cfg.keywords = HAS_ALL_KEYWORDS; THIS->cfg.has_cpp_comments = 1; THIS->cfg.has_macro_vaargs = 1; THIS->cfg.has_std_c = 1; THIS->cfg.has_std_c_hosted = 1; THIS->cfg.is_std_c_hosted = 1; THIS->cfg.std_c_version = 199901L; init_parse_info(&THIS->cpi); return THIS; } /******************************************************************************* * * ROUTINE: cbc_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void cbc_delete(pTHX_ CBC *THIS) { free_parse_info(&THIS->cpi); LL_destroy(THIS->cfg.includes, (LLDestroyFunc) string_delete); LL_destroy(THIS->cfg.defines, (LLDestroyFunc) string_delete); LL_destroy(THIS->cfg.assertions, (LLDestroyFunc) string_delete); LL_destroy(THIS->cfg.disabled_keywords, (LLDestroyFunc) string_delete); basic_types_delete(THIS->basic); HT_destroy(THIS->cfg.keyword_map, NULL); THIS->cfg.layout.bflayouter->m->destroy(THIS->cfg.layout.bflayouter); Safefree(THIS); } /******************************************************************************* * * ROUTINE: cbc_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CBC *cbc_clone(pTHX_ const CBC *THIS) { SV *sv; CBC *clone; Newz(0, clone, 1, CBC); Copy(THIS, clone, 1, CBC); clone->cfg.includes = clone_string_list(THIS->cfg.includes); clone->cfg.defines = clone_string_list(THIS->cfg.defines); clone->cfg.assertions = clone_string_list(THIS->cfg.assertions); clone->cfg.disabled_keywords = clone_string_list(THIS->cfg.disabled_keywords); clone->basic = basic_types_clone(THIS->basic); clone->cfg.keyword_map = HT_clone(THIS->cfg.keyword_map, NULL); clone->cfg.layout.bflayouter = THIS->cfg.layout.bflayouter->m->clone(THIS->cfg.layout.bflayouter); init_parse_info(&clone->cpi); clone_parse_info(&clone->cpi, &THIS->cpi); sv = newSViv(PTR2IV(clone)); SvREADONLY_on(sv); clone->hv = newHV(); if (hv_store(clone->hv, "", 0, sv, 0) == NULL) fatal("Couldn't store THIS into object."); return clone; } /******************************************************************************* * * ROUTINE: cbc_bless * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *cbc_bless(pTHX_ CBC *THIS, const char *CLASS) { SV *sv; sv = newRV_noinc((SV *) THIS->hv); sv_bless(sv, gv_stashpv(CONST_CHAR(CLASS), 0)); return sv; } Convert-Binary-C-0.85/cbc/option.c0000644000175000001440000011644614677003452015432 0ustar mhxusers/******************************************************************************* * * MODULE: option.c * ******************************************************************************** * * DESCRIPTION: C::B::C options * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/ctparse.h" #include "ctlib/parser.h" #include "cbc/option.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { const int value; const char *string; } StringOption; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static int check_integer_option(pTHX_ const IV *options, int count, SV *sv, IV *value, const char *name); static const StringOption *get_string_option(pTHX_ const StringOption *options, int count, int value, SV *sv, const char *name); static void disabled_keywords(pTHX_ LinkedList *current, SV *sv, SV **rval, u_32 *pKeywordMask); static void keyword_map(pTHX_ HashTable *current, SV *sv, SV **rval); static void bitfields_option(pTHX_ BitfieldLayouter *layouter, SV *sv_val, SV **rval); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ static const StringOption ByteOrderOption[] = { { CBO_BIG_ENDIAN, "BigEndian" }, { CBO_LITTLE_ENDIAN, "LittleEndian" } }; static const StringOption EnumTypeOption[] = { { ET_INTEGER, "Integer" }, { ET_STRING, "String" }, { ET_BOTH, "Both" } }; static const IV PointerSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV EnumSizeOption[] = { -1, 0, 1, 2, 4, 8 }; static const IV IntSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV CharSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV ShortSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV LongSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV LongLongSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV FloatSizeOption[] = { 0, 1, 2, 4, 8, 12, 16 }; static const IV DoubleSizeOption[] = { 0, 1, 2, 4, 8, 12, 16 }; static const IV LongDoubleSizeOption[] = { 0, 1, 2, 4, 8, 12, 16 }; static const IV AlignmentOption[] = { 0, 1, 2, 4, 8, 16 }; static const IV CompoundAlignmentOption[] = { 0, 1, 2, 4, 8, 16 }; /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: check_integer_option * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int check_integer_option(pTHX_ const IV *options, int count, SV *sv, IV *value, const char *name) { const IV *opt = options; int n = count; if (SvROK(sv)) { Perl_croak(aTHX_ "%s must be an integer value, not a reference", name); return 0; } *value = SvIV(sv); while (n--) if (*value == *opt++) return 1; if (name) { SV *str = sv_2mortal(newSVpvn("", 0)); for (n = 0; n < count; n++) sv_catpvf(str, "%" IVdf "%s", *options++, n < count-2 ? ", " : n == count-2 ? " or " : ""); Perl_croak(aTHX_ "%s must be %s, not %" IVdf, name, SvPV_nolen(str), *value); } return 0; } /******************************************************************************* * * ROUTINE: get_string_option * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define GET_STR_OPTION(name, value, sv) \ get_string_option(aTHX_ name ## Option, sizeof(name ## Option) / \ sizeof(StringOption), value, sv, #name) static const StringOption *get_string_option(pTHX_ const StringOption *options, int count, int value, SV *sv, const char *name) { char *string = NULL; if (sv) { if (SvROK(sv)) Perl_croak(aTHX_ "%s must be a string value, not a reference", name); else string = SvPV_nolen(sv); } if (string) { const StringOption *opt = options; int n = count; while (n--) { if (strEQ(string, opt->string)) return opt; opt++; } if (name) { SV *str = sv_2mortal(newSVpvn("", 0)); for (n = 0; n < count; n++) { sv_catpv(str, CONST_CHAR((options++)->string)); if (n < count-2) sv_catpv(str, "', '"); else if (n == count-2) sv_catpv(str, "' or '"); } Perl_croak(aTHX_ "%s must be '%s', not '%s'", name, SvPV_nolen(str), string); } } else { while (count--) { if (value == options->value) return options; options++; } fatal("Inconsistent data detected in get_string_option()!"); } return NULL; } /******************************************************************************* * * ROUTINE: disabled_keywords * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void disabled_keywords(pTHX_ LinkedList *current, SV *sv, SV **rval, u_32 *pKeywordMask) { const char *str; LinkedList keyword_list = NULL; if (sv) { if (SvROK(sv)) { sv = SvRV(sv); if (SvTYPE(sv) == SVt_PVAV) { AV *av = (AV *) sv; SV **pSV; int i, max = av_len(av); u_32 keywords = HAS_ALL_KEYWORDS; keyword_list = LL_new(); for (i = 0; i <= max; i++) { if ((pSV = av_fetch(av, i, 0)) != NULL) { SvGETMAGIC(*pSV); str = SvPV_nolen(*pSV); #include "token/t_keywords.c" success: LL_push(keyword_list, string_new(str)); } else fatal("NULL returned by av_fetch() in disabled_keywords()"); } if (pKeywordMask != NULL) *pKeywordMask = keywords; if (current != NULL) { LL_destroy(*current, (LLDestroyFunc) string_delete); *current = keyword_list; } } else Perl_croak(aTHX_ "DisabledKeywords wants an array reference"); } else Perl_croak(aTHX_ "DisabledKeywords wants a reference to " "an array of strings"); } if (rval) { ListIterator li; AV *av = newAV(); LL_foreach (str, li, *current) av_push(av, newSVpv(CONST_CHAR(str), 0)); *rval = newRV_noinc((SV *) av); } return; unknown: LL_destroy(keyword_list, (LLDestroyFunc) string_delete); Perl_croak(aTHX_ "Cannot disable unknown keyword '%s'", str); } /******************************************************************************* * * ROUTINE: keyword_map * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define FAIL_CLEAN(x) \ STMT_START { \ HT_destroy(keyword_map, NULL); \ Perl_croak x; \ } STMT_END static void keyword_map(pTHX_ HashTable *current, SV *sv, SV **rval) { HashTable keyword_map = NULL; if(sv) { if (SvROK(sv)) { sv = SvRV(sv); if (SvTYPE(sv) == SVt_PVHV) { HV *hv = (HV *) sv; HE *entry; keyword_map = HT_new_ex(4, HT_AUTOGROW); (void) hv_iterinit(hv); while ((entry = hv_iternext(hv)) != NULL) { SV *value; I32 keylen; const char *key, *c; const CKeywordToken *pTok; c = key = hv_iterkey(entry, &keylen); if (*c == '\0') FAIL_CLEAN((aTHX_ "Cannot use empty string as a keyword")); while (*c == '_' || isALPHA(*c)) c++; if (*c != '\0') FAIL_CLEAN((aTHX_ "Cannot use '%s' as a keyword", key)); value = hv_iterval(hv, entry); if (!SvOK(value)) pTok = get_skip_token(); else { const char *map; if (SvROK(value)) FAIL_CLEAN((aTHX_ "Cannot use a reference as a keyword")); map = SvPV_nolen(value); if ((pTok = get_c_keyword_token(map)) == NULL) FAIL_CLEAN((aTHX_ "Cannot use '%s' as a keyword", map)); } (void) HT_store(keyword_map, key, (int) keylen, 0, (CKeywordToken *) pTok); } if (current != NULL) { HT_destroy(*current, NULL); *current = keyword_map; } } else Perl_croak(aTHX_ "KeywordMap wants a hash reference"); } else Perl_croak(aTHX_ "KeywordMap wants a hash reference"); } if (rval) { HashIterator hi; HV *hv = newHV(); CKeywordToken *tok; const char *key; int keylen; HI_init(&hi, *current); while (HI_next(&hi, &key, &keylen, (void **) &tok)) { SV *val; val = tok->name == NULL ? newSV(0) : newSVpv(CONST_CHAR(tok->name), 0); if (hv_store(hv, key, keylen, val, 0) == NULL) SvREFCNT_dec(val); } *rval = newRV_noinc((SV *) hv); } } #undef FAIL_CLEAN /******************************************************************************* * * ROUTINE: bitfields_option * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define FAIL_CLEAN(x) \ STMT_START { \ if (bl_new) \ bl_new->m->destroy(bl_new); \ Perl_croak x; \ } STMT_END static void bitfields_option(pTHX_ BitfieldLayouter *layouter, SV *sv_val, SV **rval) { BitfieldLayouter bl_new = NULL; BitfieldLayouter bl = *layouter; if(sv_val) { if (SvROK(sv_val)) { sv_val = SvRV(sv_val); if (SvTYPE(sv_val) == SVt_PVHV) { HV *hv = (HV *) sv_val; HE *entry; SV **engine = hv_fetch(hv, "Engine", 6, 0); int noptions; const BLOption *options; if (engine && *engine) { const char *name = SvPV_nolen(*engine); bl = bl_new = bl_create(name); if (bl_new == NULL) Perl_croak(aTHX_ "Unknown bitfield layout engine '%s'", name); } (void) hv_iterinit(hv); options = bl->m->options(bl, &noptions); while ((entry = hv_iternext(hv)) != NULL) { SV *value; I32 keylen; int i; const char *prop_string = hv_iterkey(entry, &keylen); BLProperty prop; BLPropValue prop_value; const BLOption *opt = NULL; enum BLError error; if (strEQ(prop_string, "Engine")) continue; prop = bl_property(prop_string); for (i = 0; i < noptions; i++) if (options[i].prop == prop) { opt = &options[i]; break; } if (opt == NULL) FAIL_CLEAN((aTHX_ "Invalid option '%s' for bitfield layout engine '%s'", prop_string, bl->m->class_name(bl))); value = hv_iterval(hv, entry); prop_value.type = opt->type; switch (opt->type) { case BLPVT_INT: prop_value.v.v_int = SvIV(value); if (opt->nval) { const BLPropValInt *pval = opt->pval; for (i = 0; i < opt->nval; i++) if (pval[i] == prop_value.v.v_int) break; } break; case BLPVT_STR: prop_value.v.v_str = bl_propval(SvPV_nolen(value)); if (opt->nval) { const BLPropValStr *pval = opt->pval; for (i = 0; i < opt->nval; i++) if (pval[i] == prop_value.v.v_str) break; } break; default: fatal("unknown opt->type (%d) in bitfields_option()", opt->type); break; } if (opt->nval && i == opt->nval) FAIL_CLEAN((aTHX_ "Invalid value '%s' for option '%s'", SvPV_nolen(value), prop_string)); error = bl->m->set(bl, prop, &prop_value); switch (error) { case BLE_NO_ERROR: break; case BLE_INVALID_PROPERTY: FAIL_CLEAN((aTHX_ "Invalid value '%s' for option '%s'", SvPV_nolen(value), prop_string)); break; default: fatal("unknown error code (%d) returned by set method", error); break; } } if (bl_new) { (*layouter)->m->destroy(*layouter); *layouter = bl_new; } } else Perl_croak(aTHX_ "Bitfields wants a hash reference"); } else Perl_croak(aTHX_ "Bitfields wants a hash reference"); } if (rval) { int noptions; const BLOption *opt; int i; HV *hv = newHV(); SV *sv = newSVpv(bl->m->class_name(bl), 0); if (hv_store(hv, "Engine", 6, sv, 0) == NULL) SvREFCNT_dec(sv); opt = bl->m->options(bl, &noptions); for (i = 0; i < noptions; i++, opt++) { BLPropValue value; enum BLError error; const char *prop_string; error = bl->m->get(bl, opt->prop, &value); if (error != BLE_NO_ERROR) fatal("unexpected error (%d) returned by get method", error); assert(value.type == opt->type); switch (opt->type) { case BLPVT_INT: sv = newSViv(value.v.v_int); break; case BLPVT_STR: { const char *valstr = bl_propval_string(value.v.v_str); assert(valstr != NULL); sv = newSVpv(valstr, 0); } break; default: fatal("unknown opt->type (%d) in bitfields_option()", opt->type); break; } prop_string = bl_property_string(opt->prop); assert(prop_string != NULL); if (hv_store(hv, prop_string, strlen(prop_string), sv, 0) == NULL) SvREFCNT_dec(sv); } *rval = newRV_noinc((SV *) hv); } } #undef FAIL_CLEAN /******************************************************************************* * * ROUTINE: get_config_option * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #include "token/t_config.c" /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: handle_string_list * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void handle_string_list(pTHX_ const char *option, LinkedList list, SV *sv, SV **rval) { const char *str; if (sv) { LL_flush(list, (LLDestroyFunc) string_delete); if (SvROK(sv)) { sv = SvRV(sv); if (SvTYPE(sv) == SVt_PVAV) { AV *av = (AV *) sv; SV **pSV; int i, max = av_len(av); for (i = 0; i <= max; i++) { if ((pSV = av_fetch(av, i, 0)) != NULL) { SvGETMAGIC(*pSV); LL_push(list, string_new_fromSV(aTHX_ *pSV)); } else fatal("NULL returned by av_fetch() in handle_string_list()"); } } else Perl_croak(aTHX_ "%s wants an array reference", option); } else Perl_croak(aTHX_ "%s wants a reference to an array of strings", option); } if (rval) { ListIterator li; AV *av = newAV(); LL_foreach(str, li, list) av_push(av, newSVpv(CONST_CHAR(str), 0)); *rval = newRV_noinc((SV *) av); } } /******************************************************************************* * * ROUTINE: handle_option * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define START_OPTIONS \ const char *option; \ ConfigOption cfgopt; \ if (p_res) \ { \ p_res->option_modified = 0; \ p_res->impacts_layout = 0; \ p_res->impacts_preproc = 0; \ } \ if (SvROK(opt)) \ Perl_croak(aTHX_ "Option name must be a string, " \ "not a reference"); \ switch (cfgopt = get_config_option(option = SvPV_nolen(opt))) { #define DID_CHANGE(change) \ STMT_START { \ if (p_res) \ p_res->option_modified = change; \ } STMT_END #define IMPACTS_LAYOUT(layout) \ STMT_START { \ if (p_res) \ p_res->impacts_layout = layout; \ } STMT_END #define IMPACTS_PREPROC(pp) \ STMT_START { \ if (p_res) \ p_res->impacts_preproc = pp; \ } STMT_END #define POST_PROCESS } switch (cfgopt) { #define END_OPTIONS default: break; } #define OPTION(name) case OPTION_ ## name : { #define ENDOPT } break; #define UPDATE_OPT(option, val) \ STMT_START { \ if ((IV) THIS->option != val) \ { \ THIS->option = val; \ DID_CHANGE(1); \ } \ } STMT_END #define FLAG_OPTION(name, flag, layout, pp) \ case OPTION_ ## name : \ IMPACTS_LAYOUT(layout); \ IMPACTS_PREPROC(pp); \ if (sv_val) \ { \ if (SvROK(sv_val)) \ Perl_croak(aTHX_ #name " must be a boolean value, " \ "not a reference"); \ else if (THIS->flag != SvIV(sv_val) ? 1 : 0) \ { \ THIS->flag = SvIV(sv_val) ? 1 : 0; \ DID_CHANGE(1); \ } \ } \ if (rval) \ *rval = newSViv(THIS->flag ? 1 : 0); \ break; #define IVAL_OPTION(name, config, layout, pp) \ case OPTION_ ## name : \ IMPACTS_LAYOUT(layout); \ IMPACTS_PREPROC(pp); \ if (sv_val) \ { \ IV val; \ if (check_integer_option(aTHX_ name ## Option, \ sizeof(name ## Option) / sizeof(IV), \ sv_val, &val, #name)) \ UPDATE_OPT(config, val); \ } \ if (rval) \ *rval = newSViv(THIS->config); \ break; #define TRISTATE_FLAG_OPTION(name, state, flag, layout, pp) \ case OPTION_ ## name : \ IMPACTS_LAYOUT(layout); \ IMPACTS_PREPROC(pp); \ if (sv_val) \ { \ unsigned isdef = SvOK(sv_val) != 0; \ int changed = isdef != THIS->state; \ THIS->state = isdef; \ if (isdef) \ { \ if (SvROK(sv_val)) \ Perl_croak(aTHX_ #name " must be undef or a boolean " \ "value, not a reference"); \ else if (THIS->flag != SvIV(sv_val) ? 1 : 0) \ { \ THIS->flag = SvIV(sv_val) ? 1 : 0; \ changed = 1; \ } \ } \ DID_CHANGE(changed); \ } \ if (rval) \ *rval = THIS->state ? newSViv(THIS->flag ? 1 : 0) : &PL_sv_undef;\ break; #define TRISTATE_INT_OPTION(name, state, config, layout, pp) \ case OPTION_ ## name : \ IMPACTS_LAYOUT(layout); \ IMPACTS_PREPROC(pp); \ if (sv_val) \ { \ unsigned isdef = SvOK(sv_val) != 0; \ int changed = isdef != THIS->state; \ THIS->state = isdef; \ if (isdef) \ { \ if (SvROK(sv_val)) \ Perl_croak(aTHX_ #name " must be undef or an integer " \ "value, not a reference"); \ else if (THIS->config != SvIV(sv_val)) \ { \ THIS->config = SvIV(sv_val); \ changed = 1; \ } \ } \ DID_CHANGE(changed); \ } \ if (rval) \ *rval = THIS->state ? newSViv(THIS->config) : &PL_sv_undef; \ break; #define STRLIST_OPTION(name, config, layout, pp) \ case OPTION_ ## name : \ IMPACTS_LAYOUT(layout); \ IMPACTS_PREPROC(pp); \ handle_string_list(aTHX_ #name, THIS->config, sv_val, rval); \ DID_CHANGE(sv_val != NULL); \ break; #define INVALID_OPTION \ default: \ Perl_croak(aTHX_ "Invalid option '%s'", option); \ break; void handle_option(pTHX_ CBC *THIS, SV *opt, SV *sv_val, SV **rval, HandleOptionResult *p_res) { START_OPTIONS FLAG_OPTION(OrderMembers, order_members, 0, 0) FLAG_OPTION(Warnings, cfg.issue_warnings, 0, 0) FLAG_OPTION(HasCPPComments, cfg.has_cpp_comments, 0, 1) FLAG_OPTION(HasMacroVAARGS, cfg.has_macro_vaargs, 0, 1) FLAG_OPTION(UnsignedChars, cfg.unsigned_chars, 0, 0) FLAG_OPTION(UnsignedBitfields, cfg.unsigned_bitfields, 0, 0) IVAL_OPTION(PointerSize, cfg.layout.ptr_size, 1, 0) IVAL_OPTION(EnumSize, cfg.layout.enum_size, 1, 0) IVAL_OPTION(IntSize, cfg.layout.int_size, 1, 0) IVAL_OPTION(CharSize, cfg.layout.char_size, 1, 0) IVAL_OPTION(ShortSize, cfg.layout.short_size, 1, 0) IVAL_OPTION(LongSize, cfg.layout.long_size, 1, 0) IVAL_OPTION(LongLongSize, cfg.layout.long_long_size, 1, 0) IVAL_OPTION(FloatSize, cfg.layout.float_size, 1, 0) IVAL_OPTION(DoubleSize, cfg.layout.double_size, 1, 0) IVAL_OPTION(LongDoubleSize, cfg.layout.long_double_size, 1, 0) IVAL_OPTION(Alignment, cfg.layout.alignment, 1, 0) IVAL_OPTION(CompoundAlignment, cfg.layout.compound_alignment, 1, 0) TRISTATE_FLAG_OPTION(HostedC, cfg.has_std_c_hosted, cfg.is_std_c_hosted, 0, 1) TRISTATE_INT_OPTION(StdCVersion, cfg.has_std_c, cfg.std_c_version, 0, 1) STRLIST_OPTION(Include, cfg.includes, 0, 1) STRLIST_OPTION(Define, cfg.defines, 0, 1) STRLIST_OPTION(Assert, cfg.assertions, 0, 1) OPTION(DisabledKeywords) IMPACTS_LAYOUT(0); disabled_keywords(aTHX_ &THIS->cfg.disabled_keywords, sv_val, rval, &THIS->cfg.keywords); DID_CHANGE(sv_val != NULL); ENDOPT OPTION(KeywordMap) IMPACTS_LAYOUT(0); keyword_map(aTHX_ &THIS->cfg.keyword_map, sv_val, rval); DID_CHANGE(sv_val != NULL); ENDOPT OPTION(ByteOrder) IMPACTS_LAYOUT(1); if (sv_val) { const StringOption *pOpt = GET_STR_OPTION(ByteOrder, 0, sv_val); UPDATE_OPT(cfg.layout.byte_order, pOpt->value); } if (rval) { const StringOption *pOpt = GET_STR_OPTION(ByteOrder, THIS->cfg.layout.byte_order, NULL); *rval = newSVpv(CONST_CHAR(pOpt->string), 0); } ENDOPT OPTION(EnumType) IMPACTS_LAYOUT(0); if (sv_val) { const StringOption *pOpt = GET_STR_OPTION(EnumType, 0, sv_val); UPDATE_OPT(enumType, pOpt->value); } if (rval) { const StringOption *pOpt = GET_STR_OPTION(EnumType, THIS->enumType, NULL); *rval = newSVpv(CONST_CHAR(pOpt->string), 0); } ENDOPT OPTION(Bitfields) IMPACTS_LAYOUT(1); bitfields_option(aTHX_ &THIS->cfg.layout.bflayouter, sv_val, rval); DID_CHANGE(sv_val != NULL); ENDOPT INVALID_OPTION POST_PROCESS OPTION(OrderMembers) if (sv_val && THIS->order_members && THIS->ixhash == NULL) load_indexed_hash_module(aTHX_ THIS); ENDOPT END_OPTIONS } #undef START_OPTIONS #undef END_OPTIONS #undef OPTION #undef ENDOPT #undef UPDATE_OPT #undef FLAG_OPTION #undef IVAL_OPTION #undef TRISTATE_FLAG_OPTION #undef TRISTATE_INT_OPTION #undef STRLIST_OPTION /******************************************************************************* * * ROUTINE: get_configuration * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define FLAG_OPTION(name, flag) \ sv = newSViv(THIS->flag); \ HV_STORE_CONST(hv, #name, sv); #define STRLIST_OPTION(name, config) \ handle_string_list(aTHX_ #name, THIS->config, NULL, &sv); \ HV_STORE_CONST(hv, #name, sv); #define IVAL_OPTION(name, config) \ sv = newSViv(THIS->config); \ HV_STORE_CONST(hv, #name, sv); #define TRISTATE_FLAG_OPTION(name, state, flag) \ sv = THIS->state ? newSViv(THIS->flag ? 1 : 0) : &PL_sv_undef; \ HV_STORE_CONST(hv, #name, sv); #define TRISTATE_INT_OPTION(name, state, config) \ sv = THIS->state ? newSViv(THIS->config) : &PL_sv_undef; \ HV_STORE_CONST(hv, #name, sv); #define STRING_OPTION(name, value) \ sv = newSVpv(CONST_CHAR(GET_STR_OPTION(name, value, NULL)->string), 0);\ HV_STORE_CONST(hv, #name, sv); SV *get_configuration(pTHX_ CBC *THIS) { HV *hv = newHV(); SV *sv; FLAG_OPTION(OrderMembers, order_members ) FLAG_OPTION(Warnings, cfg.issue_warnings ) FLAG_OPTION(HasCPPComments, cfg.has_cpp_comments ) FLAG_OPTION(HasMacroVAARGS, cfg.has_macro_vaargs ) FLAG_OPTION(UnsignedChars, cfg.unsigned_chars ) FLAG_OPTION(UnsignedBitfields, cfg.unsigned_bitfields) IVAL_OPTION(PointerSize, cfg.layout.ptr_size ) IVAL_OPTION(EnumSize, cfg.layout.enum_size ) IVAL_OPTION(IntSize, cfg.layout.int_size ) IVAL_OPTION(CharSize, cfg.layout.char_size ) IVAL_OPTION(ShortSize, cfg.layout.short_size ) IVAL_OPTION(LongSize, cfg.layout.long_size ) IVAL_OPTION(LongLongSize, cfg.layout.long_long_size ) IVAL_OPTION(FloatSize, cfg.layout.float_size ) IVAL_OPTION(DoubleSize, cfg.layout.double_size ) IVAL_OPTION(LongDoubleSize, cfg.layout.long_double_size ) IVAL_OPTION(Alignment, cfg.layout.alignment ) IVAL_OPTION(CompoundAlignment, cfg.layout.compound_alignment) TRISTATE_FLAG_OPTION(HostedC, cfg.has_std_c_hosted, cfg.is_std_c_hosted) TRISTATE_INT_OPTION(StdCVersion, cfg.has_std_c, cfg.std_c_version) STRLIST_OPTION(Include, cfg.includes ) STRLIST_OPTION(Define, cfg.defines ) STRLIST_OPTION(Assert, cfg.assertions ) STRLIST_OPTION(DisabledKeywords, cfg.disabled_keywords) keyword_map(aTHX_ &THIS->cfg.keyword_map, NULL, &sv); HV_STORE_CONST(hv, "KeywordMap", sv); STRING_OPTION(ByteOrder, THIS->cfg.layout.byte_order) STRING_OPTION(EnumType, THIS->enumType) bitfields_option(aTHX_ &THIS->cfg.layout.bflayouter, NULL, &sv); HV_STORE_CONST(hv, "Bitfields", sv); return newRV_noinc((SV *) hv); } #undef FLAG_OPTION #undef STRLIST_OPTION #undef IVAL_OPTION #undef STRING_OPTION /******************************************************************************* * * ROUTINE: get_native_property * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_native_property(pTHX_ const char *property) { static const char *native_byteorder = #if ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_BIG_ENDIAN "BigEndian" #elif ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_LITTLE_ENDIAN "LittleEndian" #else #error "unknown native byte order" #endif ; #if defined(__STDC_VERSION__) # define STD_C_NATIVE newSViv(__STDC_VERSION__) #else # define STD_C_NATIVE &PL_sv_undef #endif #ifdef __STDC_HOSTED__ # define HOSTED_C_NATIVE newSViv(__STDC_HOSTED__) #else # define HOSTED_C_NATIVE &PL_sv_undef #endif if (property == NULL) { HV *h = newHV(); HV_STORE_CONST(h, "PointerSize", newSViv(CTLIB_POINTER_SIZE)); HV_STORE_CONST(h, "IntSize", newSViv(CTLIB_int_SIZE)); HV_STORE_CONST(h, "CharSize", newSViv(CTLIB_char_SIZE)); HV_STORE_CONST(h, "ShortSize", newSViv(CTLIB_short_SIZE)); HV_STORE_CONST(h, "LongSize", newSViv(CTLIB_long_SIZE)); HV_STORE_CONST(h, "LongLongSize", newSViv(CTLIB_long_long_SIZE)); HV_STORE_CONST(h, "FloatSize", newSViv(CTLIB_float_SIZE)); HV_STORE_CONST(h, "DoubleSize", newSViv(CTLIB_double_SIZE)); HV_STORE_CONST(h, "LongDoubleSize", newSViv(CTLIB_long_double_SIZE)); HV_STORE_CONST(h, "Alignment", newSViv(CTLIB_ALIGNMENT)); HV_STORE_CONST(h, "CompoundAlignment", newSViv(CTLIB_COMPOUND_ALIGNMENT)); HV_STORE_CONST(h, "EnumSize", newSViv(get_native_enum_size())); HV_STORE_CONST(h, "ByteOrder", newSVpv(native_byteorder, 0)); HV_STORE_CONST(h, "UnsignedChars", newSViv(get_native_unsigned_chars())); HV_STORE_CONST(h, "UnsignedBitfields", newSViv(get_native_unsigned_bitfields())); HV_STORE_CONST(h, "StdCVersion", STD_C_NATIVE); HV_STORE_CONST(h, "HostedC", HOSTED_C_NATIVE); return newRV_noinc((SV *)h); } switch (get_config_option(property)) { case OPTION_PointerSize: return newSViv(CTLIB_POINTER_SIZE); case OPTION_IntSize: return newSViv(CTLIB_int_SIZE); case OPTION_CharSize: return newSViv(CTLIB_char_SIZE); case OPTION_ShortSize: return newSViv(CTLIB_short_SIZE); case OPTION_LongSize: return newSViv(CTLIB_long_SIZE); case OPTION_LongLongSize: return newSViv(CTLIB_long_long_SIZE); case OPTION_FloatSize: return newSViv(CTLIB_float_SIZE); case OPTION_DoubleSize: return newSViv(CTLIB_double_SIZE); case OPTION_LongDoubleSize: return newSViv(CTLIB_long_double_SIZE); case OPTION_Alignment: return newSViv(CTLIB_ALIGNMENT); case OPTION_CompoundAlignment: return newSViv(CTLIB_COMPOUND_ALIGNMENT); case OPTION_EnumSize: return newSViv(get_native_enum_size()); case OPTION_ByteOrder: return newSVpv(native_byteorder, 0); case OPTION_UnsignedChars: return newSViv(get_native_unsigned_chars()); case OPTION_UnsignedBitfields: return newSViv(get_native_unsigned_bitfields()); case OPTION_StdCVersion: return STD_C_NATIVE; case OPTION_HostedC: return HOSTED_C_NATIVE; default: return NULL; } } Convert-Binary-C-0.85/cbc/hook.c0000644000175000001440000004342214677003452015053 0ustar mhxusers/******************************************************************************* * * MODULE: hook.c * ******************************************************************************** * * DESCRIPTION: C::B::C hooks * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" #include "cbc/hook.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void single_hook_deref(pTHX_ const SingleHook *hook); static void single_hook_ref(pTHX_ const SingleHook *hook); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ #include "token/t_hookid.c" /******************************************************************************* * * ROUTINE: single_hook_deref * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void single_hook_deref(pTHX_ const SingleHook *hook) { assert(hook != NULL); if (hook->sub) SvREFCNT_dec(hook->sub); if (hook->arg) SvREFCNT_dec(hook->arg); } /******************************************************************************* * * ROUTINE: single_hook_ref * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void single_hook_ref(pTHX_ const SingleHook *hook) { assert(hook != NULL); if (hook->sub) SvREFCNT_inc(hook->sub); if (hook->arg) SvREFCNT_inc(hook->arg); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: single_hook_fill * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void single_hook_fill(pTHX_ const char *hook, const char *type, SingleHook *sth, SV *sub, U32 allowed_args) { if (!DEFINED(sub)) { sth->sub = NULL; sth->arg = NULL; } else if (SvROK(sub)) { SV *sv = SvRV(sub); switch (SvTYPE(sv)) { case SVt_PVCV: sth->sub = sv; sth->arg = NULL; break; case SVt_PVAV: { AV *in = (AV *) sv; I32 len = av_len(in); if (len < 0) Perl_croak(aTHX_ "Need at least a code reference in %s hook for " "type '%s'", hook, type); else { SV **pSV = av_fetch(in, 0, 0); if (pSV == NULL || !SvROK(*pSV) || SvTYPE(sv = SvRV(*pSV)) != SVt_PVCV) Perl_croak(aTHX_ "%s hook defined for '%s' is not " "a code reference", hook, type); else { I32 ix; AV *out; for (ix = 0; ix < len; ++ix) { pSV = av_fetch(in, ix+1, 0); if (pSV == NULL) fatal("NULL returned by av_fetch() in single_hook_fill()"); if (SvROK(*pSV) && sv_isa(*pSV, ARGTYPE_PACKAGE)) { HookArgType argtype = (HookArgType) SvIV(SvRV(*pSV)); #define CHECK_ARG_TYPE(type) \ case HOOK_ARG_ ## type: \ if ((allowed_args & SHF_ALLOW_ARG_ ## type) == 0) \ Perl_croak(aTHX_ #type " argument not allowed"); \ break switch (argtype) { CHECK_ARG_TYPE(SELF); CHECK_ARG_TYPE(TYPE); CHECK_ARG_TYPE(DATA); CHECK_ARG_TYPE(HOOK); } #undef CHECK_ARG_TYPE } } sth->sub = sv; out = newAV(); av_extend(out, len-1); for (ix = 0; ix < len; ++ix) { pSV = av_fetch(in, ix+1, 0); if (pSV == NULL) fatal("NULL returned by av_fetch() in single_hook_fill()"); SvREFCNT_inc(*pSV); if (av_store(out, ix, *pSV) == NULL) SvREFCNT_dec(*pSV); } sth->arg = (AV *) sv_2mortal((SV *) out); } } } break; default: goto not_code_or_array_ref; } } else { not_code_or_array_ref: Perl_croak(aTHX_ "%s hook defined for '%s' is not " "a code or array reference", hook, type); } } /******************************************************************************* * * ROUTINE: single_hook_new * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SingleHook *single_hook_new(const SingleHook *src) { dTHX; SingleHook *dst; assert(src != NULL); New(0, dst, 1, SingleHook); *dst = *src; single_hook_ref(aTHX_ src); return dst; } /******************************************************************************* * * ROUTINE: hook_new * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ TypeHooks *hook_new(const TypeHooks *h) { dTHX; TypeHooks *r; SingleHook *dst; int i; New(0, r, 1, TypeHooks); dst = &r->hooks[0]; if (h) { const SingleHook *src = &h->hooks[0]; for (i = 0; i < HOOKID_COUNT; i++, src++, dst++) { *dst = *src; single_hook_ref(aTHX_ src); } } else { for (i = 0; i < HOOKID_COUNT; i++, dst++) { dst->sub = NULL; dst->arg = NULL; } } return r; } /******************************************************************************* * * ROUTINE: single_hook_update * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void single_hook_update(SingleHook *dst, const SingleHook *src) { dTHX; assert(src != NULL); assert(dst != NULL); if (dst->sub != src->sub) { if (src->sub) SvREFCNT_inc(src->sub); if (dst->sub) SvREFCNT_dec(dst->sub); } if (dst->arg != src->arg) { if (src->arg) SvREFCNT_inc(src->arg); if (dst->arg) SvREFCNT_dec(dst->arg); } *dst = *src; } /******************************************************************************* * * ROUTINE: hook_update * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void hook_update(TypeHooks *dst, const TypeHooks *src) { dTHX; const SingleHook *hook_src = &src->hooks[0]; SingleHook *hook_dst = &dst->hooks[0]; int i; assert(src != NULL); assert(dst != NULL); for (i = 0; i < HOOKID_COUNT; i++, hook_dst++, hook_src++) single_hook_update(hook_dst, hook_src); } /******************************************************************************* * * ROUTINE: single_hook_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void single_hook_delete(SingleHook *hook) { dTHX; assert(hook != NULL); single_hook_deref(aTHX_ hook); Safefree(hook); } /******************************************************************************* * * ROUTINE: hook_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void hook_delete(TypeHooks *h) { if (h) { dTHX; SingleHook *hook = &h->hooks[0]; int i; for (i = 0; i < HOOKID_COUNT; i++, hook++) single_hook_deref(aTHX_ hook); Safefree(h); } } /******************************************************************************* * * ROUTINE: single_hook_call * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ /* TODO: The hook_call interface is a little ugly, mainly because we cannot * directly influence the arguments. This should probably be refactored. */ SV *single_hook_call(pTHX_ SV *self, const char *hook_id_str, const char *id_pre, const char *id, const SingleHook *hook, SV *in, int mortal) { dSP; int count; SV *out; CT_DEBUG(MAIN, ("single_hook_call(hid='%s', id='%s%s', hook=%p, in=%p(%d), mortal=%d)", hook_id_str, id_pre, id, hook, in, in ? (int) SvREFCNT(in) : 0, mortal)); assert(self != NULL); assert(hook != NULL); if (hook->sub == NULL) return in; ENTER; SAVETMPS; PUSHMARK(SP); if (hook->arg) { I32 ix, len; len = av_len(hook->arg); for (ix = 0; ix <= len; ++ix) { SV **pSV = av_fetch(hook->arg, ix, 0); SV *sv; if (pSV == NULL) fatal("NULL returned by av_fetch() in single_hook_call()"); if (SvROK(*pSV) && sv_isa(*pSV, ARGTYPE_PACKAGE)) { HookArgType type = (HookArgType) SvIV(SvRV(*pSV)); switch (type) { case HOOK_ARG_SELF: sv = sv_mortalcopy(self); break; case HOOK_ARG_DATA: assert(in != NULL); sv = sv_mortalcopy(in); break; case HOOK_ARG_TYPE: assert(id != NULL); sv = sv_newmortal(); if (id_pre) { sv_setpv(sv, id_pre); sv_catpv(sv, CONST_CHAR(id)); } else sv_setpv(sv, id); break; case HOOK_ARG_HOOK: if (hook_id_str) { sv = sv_newmortal(); sv_setpv(sv, hook_id_str); } else { sv = &PL_sv_undef; } break; default: fatal("Invalid hook argument type (%d) in single_hook_call()", type); break; } } else sv = sv_mortalcopy(*pSV); XPUSHs(sv); } } else { if (in) { /* only push the data argument */ XPUSHs(in); } } PUTBACK; count = call_sv(hook->sub, G_SCALAR); SPAGAIN; if (count != 1) fatal("Hook returned %d elements instead of 1", count); out = POPs; CT_DEBUG(MAIN, ("single_hook_call: in=%p(%d), out=%p(%d)", in, in ? (int) SvREFCNT(in) : 0, out, (int) SvREFCNT(out))); if (!mortal && in != NULL) SvREFCNT_dec(in); SvREFCNT_inc(out); PUTBACK; FREETMPS; LEAVE; if (mortal) sv_2mortal(out); CT_DEBUG(MAIN, ("single_hook_call: out=%p(%d)", out, (int) SvREFCNT(out))); return out; } /******************************************************************************* * * ROUTINE: hook_call * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *hook_call(pTHX_ SV *self, const char *id_pre, const char *id, const TypeHooks *pTH, enum HookId hook_id, SV *in, int mortal) { CT_DEBUG(MAIN, ("hook_call(id='%s%s', pTH=%p, in=%p(%d), mortal=%d)", id_pre, id, pTH, in, (int) SvREFCNT(in), mortal)); assert(self != NULL); assert(pTH != NULL); assert(id != NULL); assert(in != NULL); return single_hook_call(aTHX_ self, gs_HookIdStr[hook_id], id_pre, id, &pTH->hooks[hook_id], in, mortal); } /******************************************************************************* * * ROUTINE: find_hooks * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int find_hooks(pTHX_ const char *type, HV *hooks, TypeHooks *pTH) { HE *h; int i, num; assert(type != NULL); assert(hooks != NULL); assert(pTH != NULL); (void) hv_iterinit(hooks); while ((h = hv_iternext(hooks)) != NULL) { const char *key; I32 keylen; SV *sub; enum HookId id; key = hv_iterkey(h, &keylen); sub = hv_iterval(hooks, h); id = get_hook_id(key); if (id >= HOOKID_COUNT) { if (id == HOOKID_INVALID) Perl_croak(aTHX_ "Invalid hook type '%s'", key); else fatal("Invalid hook id %d for hook '%s'", id, key); } single_hook_fill(aTHX_ key, type, &pTH->hooks[id], sub, SHF_ALLOW_ARG_SELF | SHF_ALLOW_ARG_TYPE | SHF_ALLOW_ARG_DATA | SHF_ALLOW_ARG_HOOK); } for (i = num = 0; i < HOOKID_COUNT; i++) if (pTH->hooks[i].sub) num++; return num; } /******************************************************************************* * * ROUTINE: get_single_hook * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_single_hook(pTHX_ const SingleHook *hook) { SV *sv; assert(hook != NULL); sv = hook->sub; if (sv == NULL) return NULL; sv = newRV_inc(sv); if (hook->arg) { AV *av = newAV(); int j, len = 1 + av_len(hook->arg); av_extend(av, len); if (av_store(av, 0, sv) == NULL) fatal("av_store() failed in get_hooks()"); for (j = 0; j < len; j++) { SV **pSV = av_fetch(hook->arg, j, 0); if (pSV == NULL) fatal("NULL returned by av_fetch() in get_hooks()"); SvREFCNT_inc(*pSV); if (av_store(av, j+1, *pSV) == NULL) fatal("av_store() failed in get_hooks()"); } sv = newRV_noinc((SV *) av); } return sv; } /******************************************************************************* * * ROUTINE: get_hooks * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ HV *get_hooks(pTHX_ const TypeHooks *pTH) { int i; HV *hv = newHV(); assert(pTH != NULL); for (i = 0; i < HOOKID_COUNT; i++) { SV *sv = get_single_hook(aTHX_ &pTH->hooks[i]); const char *id; if (sv == NULL) continue; id = gs_HookIdStr[i]; if (hv_store(hv, id, strlen(id), sv, 0) == 0) fatal("hv_store() failed in get_hooks()"); } return hv; } Convert-Binary-C-0.85/cbc/type.h0000644000175000001440000000411614677003452015076 0ustar mhxusers/******************************************************************************* * * HEADER: type.h * ******************************************************************************** * * DESCRIPTION: C::B::C type names * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_TYPE_H #define _CBC_TYPE_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/cttype.h" #include "cbc/cbc.h" #include "cbc/member.h" /*===== DEFINES ==============================================================*/ #define ALLOW_UNIONS 0x00000001 #define ALLOW_STRUCTS 0x00000002 #define ALLOW_ENUMS 0x00000004 #define ALLOW_POINTERS 0x00000008 #define ALLOW_ARRAYS 0x00000010 #define ALLOW_BASIC_TYPES 0x00000020 #define CBC_GMI_NO_CALC 0x1 /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_member_info CBC_get_member_info int get_member_info(pTHX_ CBC *THIS, const char *name, MemberInfo *pMI, unsigned gmi_flags); #define get_type_spec CBC_get_type_spec int get_type_spec(CBC *THIS, const char *name, const char **pEOS, TypeSpec *pTS); #define get_type_name_string CBC_get_type_name_string SV *get_type_name_string(pTHX_ const MemberInfo *pMI); #define is_typedef_defined CBC_is_typedef_defined int is_typedef_defined(Typedef *pTypedef); #define check_allowed_types_string CBC_check_allowed_types_string const char *check_allowed_types_string(const MemberInfo *pMI, U32 allowed_types); #define check_allowed_types CBC_check_allowed_types void check_allowed_types(pTHX_ const MemberInfo *pMI, const char *method, U32 allowed_types); #endif Convert-Binary-C-0.85/cbc/init.c0000644000175000001440000002075514677003452015062 0ustar mhxusers/******************************************************************************* * * MODULE: init.c * ******************************************************************************** * * DESCRIPTION: C::B::C initializer * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "util/list.h" #include "cbc/idl.h" #include "cbc/init.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ #define INDENT \ STMT_START { \ if (level > 0) \ add_indent(aTHX_ string, level); \ } STMT_END #define APPEND_COMMA \ STMT_START { \ if (first) \ first = 0; \ else \ sv_catpv(string, ",\n"); \ } STMT_END #define ENTER_LEVEL \ STMT_START { \ INDENT; \ sv_catpv(string, "{\n"); \ } STMT_END #define LEAVE_LEVEL \ STMT_START { \ sv_catpv(string, "\n"); \ INDENT; \ sv_catpv(string, "}"); \ } STMT_END /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void get_init_str_struct(pTHX_ CBC *THIS, Struct *pStruct, SV *init, IDList *idl, int level, SV *string); static void get_init_str_type(pTHX_ CBC *THIS, TypeSpec *pTS, Declarator *pDecl, int dimension, SV *init, IDList *idl, int level, SV *string); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_init_str_struct * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void get_init_str_struct(pTHX_ CBC *THIS, Struct *pStruct, SV *init, IDList *idl, int level, SV *string) { ListIterator sdi; StructDeclaration *pStructDecl; Declarator *pDecl; HV *hash = NULL; int first = 1; CT_DEBUG(MAIN, (XSCLASS "::get_init_str_struct( THIS=%p, pStruct=%p, " "init=%p, idl=%p, level=%d, string=%p )", THIS, pStruct, init, idl, level, string)); if (DEFINED(init)) { SV *h; if (SvROK(init) && SvTYPE(h = SvRV(init)) == SVt_PVHV) hash = (HV *) h; else WARN((aTHX_ "'%s' should be a hash reference", idl_to_str(aTHX_ idl))); } ENTER_LEVEL; IDLIST_PUSH(idl, ID); LL_foreach(pStructDecl, sdi, pStruct->declarations) { if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { SV **e; /* skip unnamed bitfield members right here */ if (pDecl->bitfield_flag && pDecl->identifier[0] == '\0') continue; /* skip flexible array members */ if (pDecl->array_flag && pDecl->size == 0) continue; e = hash ? hv_fetch(hash, pDecl->identifier, CTT_IDLEN(pDecl), 0) : NULL; if(e) SvGETMAGIC(*e); IDLIST_SET_ID(idl, pDecl->identifier); APPEND_COMMA; get_init_str_type(aTHX_ THIS, &pStructDecl->type, pDecl, 0, e ? *e : NULL, idl, level+1, string); /* only initialize first union member */ if (pStruct->tflags & T_UNION) goto handle_end; } } else { TypeSpec *pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); APPEND_COMMA; IDLIST_POP(idl); get_init_str_struct(aTHX_ THIS, (Struct *) pTS->ptr, init, idl, level+1, string); IDLIST_PUSH(idl, ID); /* only initialize first union member */ if (pStruct->tflags & T_UNION) goto handle_end; } } handle_end: IDLIST_POP(idl); LEAVE_LEVEL; } /******************************************************************************* * * ROUTINE: get_init_str_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void get_init_str_type(pTHX_ CBC *THIS, TypeSpec *pTS, Declarator *pDecl, int dimension, SV *init, IDList *idl, int level, SV *string) { CT_DEBUG(MAIN, (XSCLASS "::get_init_str_type( THIS=%p, pTS=%p, pDecl=%p, " "dimension=%d, init=%p, idl=%p, level=%d, string=%p )", THIS, pTS, pDecl, dimension, init, idl, level, string)); if (pDecl && pDecl->array_flag && dimension < LL_count(pDecl->ext.array)) { AV *ary = NULL; long i, s = ((Value *) LL_get(pDecl->ext.array, dimension))->iv; int first = 1; if (DEFINED(init)) { SV *sv; if (SvROK(init) && SvTYPE(sv = SvRV(init)) == SVt_PVAV) ary = (AV *) sv; else WARN((aTHX_ "'%s' should be an array reference", idl_to_str(aTHX_ idl))); } ENTER_LEVEL; IDLIST_PUSH(idl, IX); for (i = 0; i < s; ++i) { SV **e = ary ? av_fetch(ary, i, 0) : NULL; if (e) SvGETMAGIC(*e); IDLIST_SET_IX(idl, i); APPEND_COMMA; get_init_str_type(aTHX_ THIS, pTS, pDecl, dimension+1, e ? *e : NULL, idl, level+1, string); } IDLIST_POP(idl); LEAVE_LEVEL; } else { if (pDecl && pDecl->pointer_flag) goto handle_basic; else if(pTS->tflags & T_TYPE) { Typedef *pTD = (Typedef *) pTS->ptr; get_init_str_type(aTHX_ THIS, pTD->pType, pTD->pDecl, 0, init, idl, level, string); } else if(pTS->tflags & T_COMPOUND) { Struct *pStruct = pTS->ptr; if (pStruct->declarations == NULL) WARN_UNDEF_STRUCT(pStruct); get_init_str_struct(aTHX_ THIS, pStruct, init, idl, level, string); } else { handle_basic: INDENT; if (DEFINED(init)) { if (SvROK(init)) WARN((aTHX_ "'%s' should be a scalar value", idl_to_str(aTHX_ idl))); sv_catsv(string, init); } else sv_catpvn(string, "0", 1); } } } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_initializer_string * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_initializer_string(pTHX_ CBC *THIS, MemberInfo *pMI, SV *init, const char *name) { SV *string = newSVpvn("", 0); IDList idl; IDLIST_INIT(&idl); IDLIST_PUSH(&idl, ID); IDLIST_SET_ID(&idl, name); get_init_str_type(aTHX_ THIS, &pMI->type, pMI->pDecl, pMI->level, init, &idl, 0, string); IDLIST_FREE(&idl); return string; } Convert-Binary-C-0.85/cbc/macros.h0000644000175000001440000000245114677003452015401 0ustar mhxusers/******************************************************************************* * * HEADER: macros.h * ******************************************************************************** * * DESCRIPTION: Handle macro lists * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_MACROS_H #define _CBC_MACROS_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "util/list.h" #include "ctlib/ctparse.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define macros_get_names CBC_macros_get_names LinkedList macros_get_names(pTHX_ CParseInfo *pCPI, size_t *count); #define macros_get_definitions CBC_macros_get_definitions LinkedList macros_get_definitions(pTHX_ CParseInfo *pCPI); #endif Convert-Binary-C-0.85/cbc/sourcify.h0000644000175000001440000000261014677003452015755 0ustar mhxusers/******************************************************************************* * * HEADER: sourcify.h * ******************************************************************************** * * DESCRIPTION: C::B::C sourcify * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_SOURCIFY_H #define _CBC_SOURCIFY_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctparse.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { int context; int defines; } SourcifyConfig; /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_sourcify_config CBC_get_sourcify_config void get_sourcify_config(pTHX_ HV *cfg, SourcifyConfig *pSC); #define get_parsed_definitions_string CBC_get_parsed_definitions_string SV *get_parsed_definitions_string(pTHX_ CParseInfo *pCPI, SourcifyConfig *pSC); #endif Convert-Binary-C-0.85/cbc/idl.c0000644000175000001440000000510214677003452014654 0ustar mhxusers/******************************************************************************* * * MODULE: idl.c * ******************************************************************************** * * DESCRIPTION: C::B::C identifier lists * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" #include "cbc/idl.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: idl_to_str * * WRITTEN BY: Marcus Holland-Moritz ON: Jul 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const char *idl_to_str(pTHX_ IDList *idl) { SV *sv; unsigned i; struct IDList_list *cur; sv = sv_2mortal(newSVpvn("", 0)); cur = idl->list; for (i = 0; i < idl->count; ++i, ++cur) { switch (cur->choice) { case IDL_ID: if (i == 0) sv_catpv(sv, CONST_CHAR(cur->val.id)); else sv_catpvf(sv, ".%s", cur->val.id); break; case IDL_IX: sv_catpvf(sv, "[%ld]", cur->val.ix); break; default: fatal("invalid choice (%d) in idl_to_str()", (int) cur->choice); break; } } return SvPV_nolen(sv); } Convert-Binary-C-0.85/cbc/tag.c0000644000175000001440000002707114677003452014670 0ustar mhxusers/******************************************************************************* * * MODULE: tag.c * ******************************************************************************** * * DESCRIPTION: C::B::C tags * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #define NO_XSLOCKS #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/hook.h" #include "cbc/dimension.h" #include "cbc/tag.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ #define NUM_TAGIDS (sizeof(gs_TagTbl) / sizeof(gs_TagTbl[0]) - 1) #define TAG_INIT(name) void name ## _Init(CtTag *tag) #define TAG_CLONE(name) void name ## _Clone(CtTag *dst, const CtTag *src) #define TAG_FREE(name) void name ## _Free(CtTag *tag) #define TAG_SET(name) TagSetRV name ## _Set(pTHX_ const TagTypeInfo *ptti PERL_UNUSED_DECL, \ CtTag *tag, SV *val) #define TAG_GET(name) SV * name ## _Get(pTHX_ const TagTypeInfo *ptti PERL_UNUSED_DECL, \ const CtTag *tag) #define TAG_VERIFY(name) void name ## _Verify(pTHX_ const TagTypeInfo *ptti PERL_UNUSED_DECL, \ const CtTag *tag PERL_UNUSED_DECL, \ SV *val PERL_UNUSED_DECL) /*===== TYPEDEFS =============================================================*/ typedef enum { TSRV_UPDATE, TSRV_DELETE } TagSetRV; typedef TagSetRV (* TagSetMethod)(pTHX_ const TagTypeInfo *ptti, CtTag *tag, SV *val); typedef SV * (* TagGetMethod)(pTHX_ const TagTypeInfo *ptti, const CtTag *tag); typedef void (* TagVerifyMethod)(pTHX_ const TagTypeInfo *ptti, const CtTag *tag, SV *val); /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ #include "token/t_tag.c" /*===== STATIC FUNCTIONS =====================================================*/ /* * So, how and when are tag methods called? * * Upon tag creation, TAG_INIT() is called to initialize the newly allocated * tag object. This can be used to allocate extra memory to store more tag * information or simply to initialize the flags and any members. * * TAG_CLONE() is obviously called when a tag object is cloned. * * TAG_FREE() is called when when a tag is removed from a taglist and the * tag object is about to be destroyed. * * TAG_SET() is called when the tag is assigned a (new) value. This method * can itself decide whether a SET is an UPDATE or a DELETE. In the latter * case, TAG_FREE() will be called after TAG_SET() returns. * * TAG_GET() is called to get information about the tag object. * * TAG_VERIFY() is optionally called before TAG_SET() / TAG_GET(), but you * usually don't need to implement it if you implement the latter methods. */ /******************************************************************************* * * ROUTINE: croak_on_bitfield * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void croak_on_bitfield(pTHX_ const TagTypeInfo *ptti, const char *tagname) { Declarator *pDecl = ptti->mi.pDecl; if (pDecl && pDecl->bitfield_flag) Perl_croak(aTHX_ "Cannot use '%s' tag on bitfields", tagname); } /******************************************************************************* * * ROUTINE: Format_Verify * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static TAG_VERIFY(Format) { croak_on_bitfield(aTHX_ ptti, "Format"); } /******************************************************************************* * * ROUTINE: ByteOrder_Verify * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static TAG_VERIFY(ByteOrder) { croak_on_bitfield(aTHX_ ptti, "ByteOrder"); } /******************************************************************************* * * ROUTINE: Hooks_* * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static TAG_INIT(Hooks) { tag->any = hook_new(NULL); } static TAG_CLONE(Hooks) { dst->any = hook_new(src->any); } static TAG_FREE(Hooks) { hook_delete(tag->any); } static TAG_SET(Hooks) { if (SvOK(val)) { HV *hooks; TypeHooks newhooks, *p_oldhooks = tag->any; if (!(SvROK(val) && SvTYPE(hooks=(HV *)SvRV(val)) == SVt_PVHV)) Perl_croak(aTHX_ "Need a hash reference to define hooks for '%s'", ptti->type); newhooks = *p_oldhooks; if (find_hooks(aTHX_ ptti->type, hooks, &newhooks) > 0) { hook_update(p_oldhooks, &newhooks); return TSRV_UPDATE; } } return TSRV_DELETE; } static TAG_GET(Hooks) { return newRV_noinc((SV *) get_hooks(aTHX_ tag->any)); } /******************************************************************************* * * ROUTINE: Dimension_* * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static TAG_INIT(Dimension) { tag->any = dimtag_new(NULL); } static TAG_CLONE(Dimension) { dst->any = dimtag_new(src->any); } static TAG_FREE(Dimension) { dimtag_delete(tag->any); } static TAG_SET(Dimension) { if (SvOK(val)) { DimensionTag newdim; if (dimtag_parse(aTHX_ &ptti->mi, ptti->type, val, &newdim) > 0) { dimtag_update(tag->any, &newdim); return TSRV_UPDATE; } } return TSRV_DELETE; } static TAG_GET(Dimension) { return dimtag_get(aTHX_ tag->any); } static TAG_VERIFY(Dimension) { dimtag_verify(aTHX_ &ptti->mi, ptti->type); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_tags * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_tags(pTHX_ const TagTypeInfo *ptti, CtTagList taglist) { HV *hv = newHV(); CtTag *tag; for (tag = taglist; tag; tag = tag->next) { if (tag->type < NUM_TAGIDS) { SV *sv = gs_TagTbl[tag->type].get(aTHX_ ptti, tag); const char *id = gs_TagIdStr[tag->type]; if (hv_store(hv, id, strlen(id), sv, 0) == NULL) fatal("hv_store() failed in get_tags()"); } else fatal("Unknown tag type (%d) in get_tags()", (int) tag->type); } return sv_2mortal(newRV_noinc((SV *) hv)); } /******************************************************************************* * * ROUTINE: handle_tag * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void handle_tag(pTHX_ const TagTypeInfo *ptti, CtTagList *ptl, SV *name, SV *val, SV **rv) { const struct tag_tbl_ent *etbl; const char *tagstr; CtTagType tagid; CtTag *tag; assert(ptl); assert(name); if (SvROK(name)) Perl_croak(aTHX_ "Tag name must be a string, not a reference"); tagstr = SvPV_nolen(name); tagid = get_tag_id(tagstr); if (tagid == CBC_INVALID_TAG) Perl_croak(aTHX_ "Invalid tag name '%s'", tagstr); if (tagid > NUM_TAGIDS) fatal("Unknown tag type (%d) in handle_tag()", (int) tagid); etbl = &gs_TagTbl[tagid]; tag = find_tag(*ptl, tagid); if (etbl->verify) etbl->verify(aTHX_ ptti, tag, val); if (val) { TagSetRV rv; if (tag == NULL) { dTHR; dXCPT; tag = tag_new(tagid, etbl->vtbl); XCPT_TRY_START { rv = etbl->set(aTHX_ ptti, tag, val); } XCPT_TRY_END XCPT_CATCH { tag_delete(tag); XCPT_RETHROW; } insert_tag(ptl, tag); } else rv = etbl->set(aTHX_ ptti, tag, val); switch (rv) { case TSRV_UPDATE: break; case TSRV_DELETE: tag_delete(remove_tag(ptl, tagid)); tag = NULL; break; default: fatal("Invalid return value for tag set method (%d)", rv); } } if (rv) *rv = tag ? etbl->get(aTHX_ ptti, tag) : &PL_sv_undef; } /******************************************************************************* * * ROUTINE: find_taglist_ptr * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTagList *find_taglist_ptr(const void *pType) { if (pType) switch (GET_CTYPE(pType)) { case TYP_STRUCT: return &((Struct *) pType)->tags; case TYP_ENUM: return &((EnumSpecifier *) pType)->tags; case TYP_TYPEDEF: return &((Typedef *) pType)->pDecl->tags; default: fatal("Invalid type (%d) in find_taglist_ptr()", GET_CTYPE(pType)); } return NULL; } /******************************************************************************* * * ROUTINE: delete_all_tags * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void delete_all_tags(CtTagList *ptl) { delete_taglist(ptl); } Convert-Binary-C-0.85/cbc/idl.h0000644000175000001440000001022314677003452014661 0ustar mhxusers/******************************************************************************* * * HEADER: idl.h * ******************************************************************************** * * DESCRIPTION: C::B::C identifier lists * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_IDL_H #define _CBC_IDL_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ /*===== DEFINES ==============================================================*/ #define IDLIST_GRANULARITY 8 #define IDLIST_INITIAL_SIZE (2*IDLIST_GRANULARITY) #define IDLIST_GROW(idl, size) \ STMT_START { \ if ((size) > (idl)->max) \ { \ unsigned grow = ((size)+(IDLIST_GRANULARITY-1))/IDLIST_GRANULARITY;\ grow *= IDLIST_GRANULARITY; \ Renew((idl)->list, grow, struct IDList_list); \ (idl)->max = grow; \ } \ } STMT_END #define IDLIST_INIT(idl) \ STMT_START { \ (idl)->count = 0; \ (idl)->max = IDLIST_INITIAL_SIZE; \ (idl)->cur = NULL; \ New(0, (idl)->list, (idl)->max, struct IDList_list); \ } STMT_END #define IDLIST_FREE(idl) \ STMT_START { \ if ((idl)->list) \ Safefree((idl)->list); \ } STMT_END #define IDLIST_PUSH(idl, what) \ STMT_START { \ IDLIST_GROW(idl, (idl)->count+1); \ (idl)->cur = (idl)->list + (idl)->count++; \ (idl)->cur->choice = IDL_ ## what; \ } STMT_END #define IDLIST_SET_ID(idl, value) \ (idl)->cur->val.id = value #define IDLIST_SET_IX(idl, index) \ (idl)->cur->val.ix = index #define IDLIST_POP(idl) \ STMT_START { \ assert((idl)->count > 0); \ if (--(idl)->count > 0) \ (idl)->cur--; \ else \ (idl)->cur = NULL; \ } STMT_END /*===== TYPEDEFS =============================================================*/ typedef struct { unsigned count, max; struct IDList_list { enum { IDL_ID, IDL_IX } choice; union { const char *id; long ix; } val; } *cur, *list; } IDList; /*===== FUNCTION PROTOTYPES ==================================================*/ #define idl_to_str CBC_idl_to_str const char *idl_to_str(pTHX_ IDList *idl); #endif Convert-Binary-C-0.85/cbc/tag.h0000644000175000001440000000307314677003452014671 0ustar mhxusers/******************************************************************************* * * HEADER: tag.h * ******************************************************************************** * * DESCRIPTION: C::B::C tags * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_TAG_H #define _CBC_TAG_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/cttags.h" #include "cbc/member.h" #include "token/t_tag.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { const char *type; MemberInfo mi; } TagTypeInfo; /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_tags CBC_get_tags SV *get_tags(pTHX_ const TagTypeInfo *ptti, CtTagList taglist); #define handle_tag CBC_handle_tag void handle_tag(pTHX_ const TagTypeInfo *ptti, CtTagList *ptl, SV *name, SV *val, SV **rv); #define find_taglist_ptr CBC_find_taglist_ptr CtTagList *find_taglist_ptr(const void *pType); #define delete_all_tags CBC_delete_all_tags void delete_all_tags(CtTagList *ptl); #endif Convert-Binary-C-0.85/cbc/option.h0000644000175000001440000000322714677003452015427 0ustar mhxusers/******************************************************************************* * * HEADER: option.h * ******************************************************************************** * * DESCRIPTION: C::B::C options * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_OPTION_H #define _CBC_OPTION_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "util/list.h" #include "cbc/cbc.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { unsigned option_modified : 1; unsigned impacts_layout : 1; unsigned impacts_preproc : 1; } HandleOptionResult; /*===== FUNCTION PROTOTYPES ==================================================*/ #define handle_string_list CBC_handle_string_list void handle_string_list(pTHX_ const char *option, LinkedList list, SV *sv, SV **rval); #define handle_option CBC_handle_option void handle_option(pTHX_ CBC *THIS, SV *opt, SV *sv_val, SV **rval, HandleOptionResult *p_res); #define get_configuration CBC_get_configuration SV *get_configuration(pTHX_ CBC *THIS); #define get_native_property CBC_get_native_property SV *get_native_property(pTHX_ const char *property); #endif Convert-Binary-C-0.85/cbc/typeinfo.c0000644000175000001440000002427514677003452015755 0ustar mhxusers/******************************************************************************* * * MODULE: typeinfo.c * ******************************************************************************** * * DESCRIPTION: C::B::C type information * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" #include "cbc/typeinfo.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static SV *get_type_spec_def(pTHX_ const CParseConfig *pCfg, const TypeSpec *pTSpec); static SV *get_enumerators_def(pTHX_ LinkedList enumerators); static SV *get_declarators_def(pTHX_ LinkedList declarators); static SV *get_struct_declarations_def(pTHX_ const CParseConfig *pCfg, LinkedList declarations); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_type_spec_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *get_type_spec_def(pTHX_ const CParseConfig *pCfg, const TypeSpec *pTSpec) { u_32 flags = pTSpec->tflags; if (flags & T_TYPE) { Typedef *pTypedef= (Typedef *) pTSpec->ptr; if (pTypedef && pTypedef->pDecl->identifier[0]) return newSVpv(pTypedef->pDecl->identifier, 0); else return NEW_SV_PV_CONST(""); } if (flags & T_ENUM) { EnumSpecifier *pEnumSpec = (EnumSpecifier *) pTSpec->ptr; if (pEnumSpec) { if (pEnumSpec->identifier[0]) return newSVpvf("enum %s", pEnumSpec->identifier); else return get_enum_spec_def(aTHX_ pCfg, pEnumSpec); } else return NEW_SV_PV_CONST("enum "); } if (flags & T_COMPOUND) { Struct *pStruct = (Struct *) pTSpec->ptr; const char *type = flags & T_UNION ? "union" : "struct"; if (pStruct) { if (pStruct->identifier[0]) return newSVpvf("%s %s", type, pStruct->identifier); else return get_struct_spec_def(aTHX_ pCfg, pStruct); } else return newSVpvf("%s ", type); } { SV *sv = NULL; get_basic_type_spec_string(aTHX_ &sv, flags); return sv ? sv : NEW_SV_PV_CONST(""); } } /******************************************************************************* * * ROUTINE: get_enumerators_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *get_enumerators_def(pTHX_ LinkedList enumerators) { ListIterator ei; Enumerator *pEnum; HV *hv = newHV(); LL_foreach(pEnum, ei, enumerators) { SV *val = newSViv(pEnum->value.iv); if (hv_store(hv, pEnum->identifier, CTT_IDLEN(pEnum), val, 0) == NULL) SvREFCNT_dec(val); } return newRV_noinc((SV *) hv); } /******************************************************************************* * * ROUTINE: get_declarators_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *get_declarators_def(pTHX_ LinkedList declarators) { ListIterator di; Declarator *pDecl; AV *av = newAV(); LL_foreach(pDecl, di, declarators) { HV *hv = newHV(); Value *pValue; if (pDecl->bitfield_flag) { HV_STORE_CONST(hv, "declarator", newSVpvf("%s:%d", pDecl->identifier[0] != '\0' ? pDecl->identifier : "", pDecl->ext.bitfield.bits)); } else { SV *sv = newSVpvf("%s%s", pDecl->pointer_flag ? "*" : "", pDecl->identifier); if (pDecl->array_flag) { ListIterator ai; LL_foreach(pValue, ai, pDecl->ext.array) { if (pValue->flags & V_IS_UNDEF) sv_catpvn(sv, "[]", 2); else sv_catpvf(sv, "[%ld]", pValue->iv); } } HV_STORE_CONST(hv, "declarator", sv); HV_STORE_CONST(hv, "offset", newSViv(pDecl->offset)); HV_STORE_CONST(hv, "size", newSViv(pDecl->size)); } av_push(av, newRV_noinc((SV *) hv)); } return newRV_noinc((SV *) av); } /******************************************************************************* * * ROUTINE: get_struct_declarations_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *get_struct_declarations_def(pTHX_ const CParseConfig *pCfg, LinkedList declarations) { ListIterator sdi; StructDeclaration *pStructDecl; AV *av = newAV(); LL_foreach(pStructDecl, sdi, declarations) { HV *hv = newHV(); HV_STORE_CONST(hv, "type", get_type_spec_def(aTHX_ pCfg, &pStructDecl->type)); if (pStructDecl->declarators) HV_STORE_CONST(hv, "declarators", get_declarators_def(aTHX_ pStructDecl->declarators)); av_push(av, newRV_noinc((SV *) hv)); } return newRV_noinc((SV *) av); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_typedef_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_typedef_def(pTHX_ const CParseConfig *pCfg, const Typedef *pTypedef) { Declarator *pDecl = pTypedef->pDecl; Value *pValue; HV *hv = newHV(); SV *sv = newSVpvf("%s%s", pDecl->pointer_flag ? "*" : "", pDecl->identifier); if (pDecl->array_flag) { ListIterator ai; LL_foreach(pValue, ai, pDecl->ext.array) { if (pValue->flags & V_IS_UNDEF) sv_catpvn(sv, "[]", 2); else sv_catpvf(sv, "[%ld]", pValue->iv); } } HV_STORE_CONST(hv, "declarator", sv); HV_STORE_CONST(hv, "type", get_type_spec_def(aTHX_ pCfg, pTypedef->pType)); return newRV_noinc((SV *) hv); } /******************************************************************************* * * ROUTINE: get_enum_spec_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_enum_spec_def(pTHX_ const CParseConfig *pCfg, const EnumSpecifier *pEnumSpec) { HV *hv = newHV(); if (pEnumSpec->identifier[0]) HV_STORE_CONST(hv, "identifier", newSVpv(pEnumSpec->identifier, 0)); if (pEnumSpec->enumerators) { HV_STORE_CONST(hv, "sign", newSViv(pEnumSpec->tflags & T_SIGNED ? 1 : 0)); HV_STORE_CONST(hv, "size", newSViv(GET_ENUM_SIZE(pCfg, pEnumSpec))); HV_STORE_CONST(hv, "enumerators", get_enumerators_def(aTHX_ pEnumSpec->enumerators)); } HV_STORE_CONST(hv, "context", newSVpvf("%s(%lu)", pEnumSpec->context.pFI->name, pEnumSpec->context.line)); return newRV_noinc((SV *) hv); } /******************************************************************************* * * ROUTINE: get_struct_spec_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_struct_spec_def(pTHX_ const CParseConfig *pCfg, const Struct *pStruct) { HV *hv = newHV(); SV *type; if (pStruct->identifier[0]) HV_STORE_CONST(hv, "identifier", newSVpv(pStruct->identifier, 0)); if (pStruct->tflags & T_UNION) type = NEW_SV_PV_CONST("union"); else type = NEW_SV_PV_CONST("struct"); HV_STORE_CONST(hv, "type", type); if (pStruct->declarations) { HV_STORE_CONST(hv, "size", newSViv(pStruct->size)); HV_STORE_CONST(hv, "align", newSViv(pStruct->align)); HV_STORE_CONST(hv, "pack", newSViv(pStruct->pack)); HV_STORE_CONST(hv, "declarations", get_struct_declarations_def(aTHX_ pCfg, pStruct->declarations)); } HV_STORE_CONST(hv, "context", newSVpvf("%s(%lu)", pStruct->context.pFI->name, pStruct->context.line)); return newRV_noinc((SV *) hv); } Convert-Binary-C-0.85/cbc/pack.h0000644000175000001440000000366714677003452015045 0ustar mhxusers/******************************************************************************* * * HEADER: pack.h * ******************************************************************************** * * DESCRIPTION: C::B::C pack/unpack routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_PACK_H #define _CBC_PACK_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/cttype.h" #include "cbc/cbc.h" /*===== DEFINES ==============================================================*/ /* values passed between all packing/unpacking routines */ #define pPACKARGS pTHX_ PackHandle PACK #define aPACKARGS aTHX_ PACK /*===== TYPEDEFS =============================================================*/ typedef struct PackInfo * PackHandle; /*===== FUNCTION PROTOTYPES ==================================================*/ #define pk_create CBC_pk_create PackHandle pk_create(const CBC *THIS, SV *self); #define pk_set_type CBC_pk_set_type void pk_set_type(PackHandle hdl, const char *type); #define pk_set_buffer CBC_pk_set_buffer void pk_set_buffer(PackHandle hdl, SV *bufsv, char *buffer, unsigned long buflen); #define pk_set_buffer_pos CBC_pk_set_buffer_pos void pk_set_buffer_pos(PackHandle hdl, unsigned long pos); #define pk_delete CBC_pk_delete void pk_delete(PackHandle hdl); #define pk_pack CBC_pk_pack void pk_pack(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, SV *sv); #define pk_unpack CBC_pk_unpack SV *pk_unpack(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension); #endif Convert-Binary-C-0.85/cbc/macros.c0000644000175000001440000001111314677003452015367 0ustar mhxusers/******************************************************************************* * * MODULE: macros.c * ******************************************************************************** * * DESCRIPTION: Handle macro lists * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/macros.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void get_names_callback(const CMacroInfo *pmi); static void get_defs_callback(const CMacroInfo *pmi); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_names_callback * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ struct get_names_cb_arg { #ifdef PERL_IMPLICIT_CONTEXT void *interp; #endif size_t count; LinkedList ll; }; static void get_names_callback(const CMacroInfo *pmi) { struct get_names_cb_arg *a = pmi->arg; if (a->ll) { dTHXa(a->interp); LL_push(a->ll, newSVpv(pmi->name, 0)); } else { a->count++; } } /******************************************************************************* * * ROUTINE: get_defs_callback * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ struct get_defs_cb_arg { #ifdef PERL_IMPLICIT_CONTEXT void *interp; #endif LinkedList ll; }; static void get_defs_callback(const CMacroInfo *pmi) { struct get_defs_cb_arg *a = pmi->arg; dTHXa(a->interp); LL_push(a->ll, newSVpv(pmi->definition, pmi->definition_len)); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: macros_get_names * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ LinkedList macros_get_names(pTHX_ CParseInfo *pCPI, size_t *count) { struct get_names_cb_arg a; #ifdef PERL_IMPLICIT_CONTEXT a.interp = aTHX; #endif if (count) { a.ll = NULL; a.count = 0; } else { a.ll = LL_new(); } macro_iterate_defs(pCPI, get_names_callback, &a, 0); if (count) { *count = a.count; } return a.ll; } /******************************************************************************* * * ROUTINE: macros_get_definitions * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ LinkedList macros_get_definitions(pTHX_ CParseInfo *pCPI) { struct get_defs_cb_arg a; #ifdef PERL_IMPLICIT_CONTEXT a.interp = aTHX; #endif a.ll = LL_new(); macro_iterate_defs(pCPI, get_defs_callback, &a, CMIF_WITH_DEFINITION); return a.ll; } Convert-Binary-C-0.85/cbc/util.h0000644000175000001440000000431514677003452015073 0ustar mhxusers/******************************************************************************* * * HEADER: util.h * ******************************************************************************** * * DESCRIPTION: C::B::C utilities * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_UTIL_H #define _CBC_UTIL_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define fatal CBC_fatal void fatal(const char *f, ...) __attribute__((__noreturn__)); #define newHV_indexed CBC_newHV_indexed HV *newHV_indexed(pTHX_ const CBC *THIS); #define croak_gti CBC_croak_gti void croak_gti(pTHX_ ErrorGTI error, const char *name, int warnOnly); #define get_basic_type_spec_string CBC_get_basic_type_spec_string void get_basic_type_spec_string(pTHX_ SV **sv, u_32 flags); #define add_indent CBC_add_indent void add_indent(pTHX_ SV *s, int level); #define load_indexed_hash_module CBC_load_indexed_hash_module int load_indexed_hash_module(pTHX_ CBC *THIS); #define set_preferred_indexed_hash_module CBC_set_preferred_indexed_hash_module void set_preferred_indexed_hash_module(const char *module); #define string_new CBC_string_new char *string_new(const char *str); #define string_new_fromSV CBC_string_new_fromSV char *string_new_fromSV(pTHX_ SV *sv); #define string_delete CBC_string_delete void string_delete(char *sv); #define clone_string_list CBC_clone_string_list LinkedList clone_string_list(LinkedList list); #define dump_sv CBC_dump_sv void dump_sv(pTHX_ SV *buf, int level, SV *sv); #define identify_sv CBC_identify_sv const char *identify_sv(SV *sv); #endif Convert-Binary-C-0.85/lib/0000755000175000001440000000000014677003524013761 5ustar mhxusersConvert-Binary-C-0.85/lib/Convert/0000755000175000001440000000000014677003524015401 5ustar mhxusersConvert-Binary-C-0.85/lib/Convert/Binary/0000755000175000001440000000000014677003524016625 5ustar mhxusersConvert-Binary-C-0.85/lib/Convert/Binary/C/0000755000175000001440000000000014677003524017007 5ustar mhxusersConvert-Binary-C-0.85/lib/Convert/Binary/C/Cached.pm0000644000175000001440000002460514677003452020523 0ustar mhxusers################################################################################ # # MODULE: Convert::Binary::C::Cached # ################################################################################ # # DESCRIPTION: Cached version of Convert::Binary::C module # ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ package Convert::Binary::C::Cached; use strict; use Convert::Binary::C; use Carp; use vars qw( @ISA $VERSION ); @ISA = qw(Convert::Binary::C); $VERSION = '0.85'; sub new { my $class = shift; my $self = $class->SUPER::new; $self->{cache} = undef; $self->{parsed} = 0; $self->{uses_cache} = 0; @_ % 2 and croak "Number of configuration arguments to new must be even"; @_ and $self->configure(@_); return $self; } sub configure { my $self = shift; if (@_ < 2 and not defined wantarray) { $^W and carp "Useless use of configure in void context"; return; } if (@_ == 0) { my $cfg = $self->SUPER::configure; $cfg->{Cache} = $self->{cache}; return $cfg; } elsif (@_ == 1 and $_[0] eq 'Cache') { return $self->{cache}; } my @args; if (@_ == 1) { @args = @_; } elsif (@_ % 2 == 0) { while (@_) { my %arg = splice @_, 0, 2; if (exists $arg{Cache}) { if ($self->{parsed}) { croak 'Cache cannot be configured after parsing'; } elsif (ref $arg{Cache}) { croak 'Cache must be a string value, not a reference'; } else { if (defined $arg{Cache}) { my @missing; eval { require Data::Dumper }; $@ and push @missing, 'Data::Dumper'; eval { require IO::File }; $@ and push @missing, 'IO::File'; if (@missing) { $^W and carp "Cannot load ", join(' and ', @missing), ", disabling cache"; undef $arg{Cache}; } } $self->{cache} = $arg{Cache}; } } else { push @args, %arg } } } my $opt = $self; if (@args) { $opt = eval { $self->SUPER::configure(@args) }; $@ =~ s/\s+at.*?Cached\.pm.*//s, croak $@ if $@; } $opt; } sub clean { my $self = shift; delete $self->{$_} for grep !/^(?:|cache|parsed|uses_cache)$/, keys %$self; $self->{parsed} = 0; $self->{uses_cache} = 0; $self->SUPER::clean; } sub clone { my $self = shift; unless (defined wantarray) { $^W and carp "Useless use of clone in void context"; return; } my $clone = $self->SUPER::clone; for (keys %$self) { if ($_) { $clone->{$_} = ref $_ eq 'ARRAY' ? [@{$self->{$_}}] : $self->{$_}; } } $clone; } sub parse_file { my $self = shift; my($warn,$error) = $self->__parse('file', $_[0]); for my $w ( @$warn ) { carp $w } defined $error and croak $error; defined wantarray and return $self; } sub parse { my $self = shift; my($warn,$error) = $self->__parse('code', $_[0]); for my $w ( @$warn ) { carp $w } defined $error and croak $error; defined wantarray and return $self; } sub dependencies { my $self = shift; $self->{parsed} or croak "Call to dependencies without parse data"; unless (defined wantarray) { $^W and carp "Useless use of dependencies in void context"; return; } $self->{files} || $self->SUPER::dependencies; } sub __uses_cache { my $self = shift; $self->{uses_cache}; } sub __parse { my $self = shift; if (defined $self->{cache}) { $self->{parsed} and croak "Cannot parse more than once for cached objects"; $self->{$_[0]} = $_[1]; if ($self->__can_use_cache) { my @WARN; { local $SIG{__WARN__} = sub { push @WARN, $_[0] }; eval { $self->SUPER::parse_file($self->{cache}) }; } unless ($@ or @WARN) { $self->{parsed} = 1; $self->{uses_cache} = 1; return; } $self->clean; } } $self->{parsed} = 1; my(@warnings, $error); { local $SIG{__WARN__} = sub { push @warnings, $_[0] }; if ($_[0] eq 'file') { eval { $self->SUPER::parse_file($_[1]) }; } else { eval { $self->SUPER::parse($_[1]) }; } } if ($@) { $error = $@; $error =~ s/\s+at.*?Cached\.pm.*//s; } else { defined $self->{cache} and $self->__save_cache; } for (@warnings) { s/\s+at.*?Cached\.pm.*//s } (\@warnings, $error); } sub __can_use_cache { my $self = shift; my $fh = IO::File->new; unless (-e $self->{cache} and -s _) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: cache file '$self->{cache}' doesn't exist or is empty\n"; return 0; } unless ($fh->open($self->{cache})) { $^W and carp "Cannot open '$self->{cache}': $!"; $ENV{CBCC_DEBUG} and print STDERR "CBCC: cannot open cache file '$self->{cache}'\n"; return 0; } my @warnings; my @config = do { my $config; unless (defined($config = <$fh>)) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: cannot read configuration\n"; return 0; } unless ($config =~ /^#if\s+0/) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: invalid configuration\n"; return 0; } local $/ = $/.'#endif'; chomp($config = <$fh>); $config =~ s/^\*//gms; local $SIG{__WARN__} = sub { push @warnings, $_[0] }; eval $config; }; # corrupt config if ($@ or @warnings or @config % 2) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: broken configuration\n"; return 0; } my %config = @config; my $what = exists $self->{code} ? 'code' : 'file'; unless (exists $config{$what} and $config{$what} eq $self->{$what} and __reccmp($config{cfg}, $self->configure)) { if ($ENV{CBCC_DEBUG}) { print STDERR "CBCC: configuration has changed\n"; print STDERR "CBCC: what='$what', \$config{$what}='$config{$what}' \$self->{$what}='$self->{$what}'\n"; my $dump = Data::Dumper->Dump([$config{cfg}, $self->configure], ['config', 'self']); $dump =~ s/^/CBCC: /mg; print STDERR $dump; } return 0; } while (my($file, $spec) = each %{$config{files}}) { unless (-e $file) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: file '$file' deleted\n"; return 0; } my($size, $mtime, $ctime) = (stat(_))[7,9,10]; unless ($spec->{size} == $size and $spec->{mtime} == $mtime and $spec->{ctime} == $ctime) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: size/mtime/ctime of '$file' changed\n"; return 0; } } $self->{files} = $config{files}; $ENV{CBCC_DEBUG} and print STDERR "CBCC: '$self->{cache}' is usable\n"; return 1; } sub __save_cache { my $self = shift; my $fh = IO::File->new; $fh->open(">$self->{cache}") or croak "Cannot open '$self->{cache}': $!"; my $what = exists $self->{code} ? 'code' : 'file'; my $config = Data::Dumper->new([{ $what => $self->{$what}, cfg => $self->configure, files => scalar $self->SUPER::dependencies, }], ['*'])->Indent(1)->Dump; $config =~ s/[^(]*//; $config =~ s/^/*/gms; print $fh "#if 0\n", $config, "#endif\n\n", do { local $^W; $self->sourcify({ Context => 1 }) }; } sub __reccmp { my($ref, $val) = @_; !defined($ref) && !defined($val) and return 1; !defined($ref) || !defined($val) and return 0; ref $ref or return $ref eq $val; if (ref $ref eq 'ARRAY') { @$ref == @$val or return 0; for (0..$#$ref) { __reccmp($ref->[$_], $val->[$_]) or return 0; } } elsif (ref $ref eq 'HASH') { keys %$ref == keys %$val or return 0; for (keys %$ref) { __reccmp($ref->{$_}, $val->{$_}) or return 0; } } else { return 0 } return 1; } 1; __END__ =head1 NAME Convert::Binary::C::Cached - Caching for Convert::Binary::C =head1 SYNOPSIS use Convert::Binary::C::Cached; use Data::Dumper; #------------------------ # Create a cached object #------------------------ $c = Convert::Binary::C::Cached->new( Cache => '/tmp/cache.c', Include => [ '/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include', '/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed', '/usr/include', ], ); #---------------------------------------------------- # Parse 'time.h' and dump the definition of timespec #---------------------------------------------------- $c->parse_file('time.h'); print Dumper($c->struct('timespec')); =head1 DESCRIPTION Convert::Binary::C::Cached simply adds caching capability to Convert::Binary::C. You can use it in just the same way that you would use Convert::Binary::C. The interface is exactly the same. To use the caching capability, you must pass the C option to the constructor. If you don't pass it, you will receive an ordinary Convert::Binary::C object. The argument to the C option is the file that is used for caching this object. The caching algorithm automatically detects when the cache file cannot be used and the original code has to be parsed. In that case, the cache file is updated. An update of the cache file can be triggered by one or more of the following factors: =over 2 =item * The cache file doesn't exist, which is obvious. =item * The cache file is corrupt, i.e. cannot be parsed. =item * The object's configuration has changed. =item * The embedded code for a L|Convert::Binary::C/"parse"> method call has changed. =item * At least one of the files that the object depends on does not exist or has a different size or a different modification or change timestamp. =back =head1 LIMITATIONS You cannot call L|Convert::Binary::C/"parse"> or L|Convert::Binary::C/"parse_file"> more that once when using a Convert::Binary::C::Cached object. This isn't a big problem, as you usually don't call them multiple times. If a dependency file changes, but the change affects neither the size nor the timestamps of that file, the caching algorithm cannot detect that an update is required. =head1 COPYRIGHT Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO See L. =cut Convert-Binary-C-0.85/lib/Convert/Binary/C.pm0000644000175000001440000043707414677003452017364 0ustar mhxusers################################################################################ # # MODULE: Convert::Binary::C # ################################################################################ # # DESCRIPTION: Convert::Binary::C Perl extension module # ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ package Convert::Binary::C; use strict; use DynaLoader; use Carp; use vars qw( @ISA $VERSION $AUTOLOAD ); @ISA = qw(DynaLoader); $VERSION = '0.85'; bootstrap Convert::Binary::C $VERSION; # Unfortunately, XS AUTOLOAD isn't supported # by stable perl distributions before 5.8.0. sub AUTOLOAD { my $self = shift; my $opt = $AUTOLOAD; ref $self or croak "$self is not an object"; $opt =~ s/.*://; $opt =~ /^[A-Z]/ or croak "Invalid method $opt called"; @_ <= 1 or croak "$opt cannot take more than one argument"; unless (@_ or defined wantarray) { carp "Useless use of $opt in void context"; return; } my @warn; { local $SIG{__WARN__} = sub { push @warn, $_[0] }; $opt = eval { $self->configure( $opt, @_ ) }; } for my $w (@warn) { $w =~ s/\s+at.*?C\.pm.*//s; carp $w; } if ($@) { $@ =~ s/\s+at.*?C\.pm.*//s; croak $@; } $opt; } 1; __END__ =head1 NAME Convert::Binary::C - Binary Data Conversion using C Types =head1 SYNOPSIS =head2 Simple use Convert::Binary::C; #--------------------------------------------- # Create a new object and parse embedded code #--------------------------------------------- my $c = Convert::Binary::C->new->parse(< 2002, month => 'DEC', day => 24 }; my $packed = $c->pack('Date', $date); =head2 Advanced use Convert::Binary::C; use Data::Dumper; #--------------------- # Create a new object #--------------------- my $c = Convert::Binary::C->new(ByteOrder => 'BigEndian'); #--------------------------------------------------- # Add include paths and global preprocessor defines #--------------------------------------------------- $c->Include('/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include', '/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed', '/usr/include') ->Define(qw( __USE_POSIX __USE_ISOC99=1 )); #---------------------------------- # Parse the 'time.h' header file #---------------------------------- $c->parse_file('time.h'); #--------------------------------------- # See which files the object depends on #--------------------------------------- print Dumper([$c->dependencies]); #----------------------------------------------------------- # See if struct timespec is defined and dump its definition #----------------------------------------------------------- if ($c->def('struct timespec')) { print Dumper($c->struct('timespec')); } #------------------------------- # Create some binary dummy data #------------------------------- my $data = "binary_test_string"; #-------------------------------------------------------- # Unpack $data according to 'struct timespec' definition #-------------------------------------------------------- if (length($data) >= $c->sizeof('timespec')) { my $perl = $c->unpack('timespec', $data); print Dumper($perl); } #-------------------------------------------------------- # See which member lies at offset 5 of 'struct timespec' #-------------------------------------------------------- my $member = $c->member('timespec', 5); print "member('timespec', 5) = '$member'\n"; =head1 DESCRIPTION Convert::Binary::C is a preprocessor and parser for C type definitions. It is highly configurable and supports arbitrarily complex data structures. Its object-oriented interface has L|/"pack"> and L|/"unpack"> methods that act as replacements for Perl's L|perlfunc/"pack"> and L|perlfunc/"unpack"> and allow one to use C types instead of a string representation of the data structure for conversion of binary data from and to Perl's complex data structures. Actually, what Convert::Binary::C does is not very different from what a C compiler does, just that it doesn't compile the source code into an object file or executable, but only parses the code and allows Perl to use the enumerations, structs, unions and typedefs that have been defined within your C source for binary data conversion, similar to Perl's L|perlfunc/"pack"> and L|perlfunc/"unpack">. Beyond that, the module offers a lot of convenience methods to retrieve information about the C types that have been parsed. =head2 Background and History In late 2000 I wrote a real-time debugging interface for an embedded medical device that allowed me to send out data from that device over its integrated Ethernet adapter. The interface was C-like, so you could easily send out strings or numbers. But you could also send out what I called I, which was intended for arbitrary blocks of the device's memory. Another part of this real-time debugger was a Perl application running on my workstation that gathered all the messages that were sent out from the embedded device. It printed all the strings and numbers, and hex-dumped the arbitrary data. However, manually parsing a couple of 300 byte hex-dumps of a complex C structure is not only frustrating, but also error-prone and time consuming. Using L|perlfunc/"unpack"> to retrieve the contents of a C structure works fine for small structures and if you don't have to deal with struct member alignment. But otherwise, maintaining such code can be as awful as deciphering hex-dumps. As I didn't find anything to solve my problem on the CPAN, I wrote a little module that translated simple C structs into L|perlfunc/"unpack"> strings. It worked, but it was slow. And since it couldn't deal with struct member alignment, I soon found myself adding padding bytes everywhere. So again, I had to maintain two sources, and changing one of them forced me to touch the other one. All in all, this little module seemed to make my task a bit easier, but it was far from being what I was thinking of: =over 2 =item * A module that could directly use the source I've been coding for the embedded device without any modifications. =item * A module that could be configured to match the properties of the different compilers and target platforms I was using. =item * A module that was fast enough to decode a great amount of binary data even on my slow workstation. =back I didn't know how to accomplish these tasks until I read something about XS. At least, it seemed as if it could solve my performance problems. However, writing a C parser in C isn't easier than it is in Perl. But writing a C preprocessor from scratch is even worse. Fortunately enough, after a few weeks of searching I found both, a lean, open-source C preprocessor library, and a reusable YACC grammar for ANSI-C. That was the beginning of the development of Convert::Binary::C in late 2001. Now, I'm successfully using the module in my embedded environment since long before it appeared on CPAN. From my point of view, it is exactly what I had in mind. It's fast, flexible, easy to use and portable. It doesn't require external programs or other Perl modules. =head2 About this document This document describes how to use Convert::Binary::C. A lot of different features are presented, and the example code sometimes uses Perl's more advanced language elements. If your experience with Perl is rather limited, you should know how to use Perl's very good documentation system. To look up one of the manpages, use the L|perldoc> command. For example, perldoc perl will show you Perl's main manpage. To look up a specific Perl function, use C: perldoc -f map gives you more information about the L|perlfunc/"map"> function. You can also search the FAQ using C: perldoc -q array will give you everything you ever wanted to know about Perl arrays. But now, let's go on with some real stuff! =head2 Why use Convert::Binary::C? Say you want to pack (or unpack) data according to the following C structure: struct foo { char ary[3]; unsigned short baz; int bar; }; You could of course use Perl's L|perlfunc/"pack"> and L|perlfunc/"unpack"> functions: @ary = (1, 2, 3); $baz = 40000; $bar = -4711; $binary = pack 'c3 S i', @ary, $baz, $bar; But this implies that the struct members are byte aligned. If they were long aligned (which is the default for most compilers), you'd have to write $binary = pack 'c3 x S x2 i', @ary, $baz, $bar; which doesn't really increase readability. Now imagine that you need to pack the data for a completely different architecture with different byte order. You would look into the L|perlfunc/"pack"> manpage again and perhaps come up with this: $binary = pack 'c3 x n x2 N', @ary, $baz, $bar; However, if you try to unpack C<$foo> again, your signed values have turned into unsigned ones. All this can still be managed with Perl. But imagine your structures get more complex? Imagine you need to support different platforms? Imagine you need to make changes to the structures? You'll not only have to change the C source but also dozens of L|perlfunc/"pack"> strings in your Perl code. This is no fun. And Perl should be fun. Now, wouldn't it be great if you could just read in the C source you've already written and use all the types defined there for packing and unpacking? That's what Convert::Binary::C does. =head2 Creating a Convert::Binary::C object To use Convert::Binary::C just say use Convert::Binary::C; to load the module. Its interface is completely object oriented, so it doesn't export any functions. Next, you need to create a new Convert::Binary::C object. This can be done by either $c = Convert::Binary::C->new; or $c = Convert::Binary::C->new; You can optionally pass configuration options to the L as described in the next section. =head2 Configuring the object To configure a Convert::Binary::C object, you can either call the L|/"configure"> method or directly pass the configuration options to the L. If you want to change byte order and alignment, you can use $c->configure(ByteOrder => 'LittleEndian', Alignment => 2); or you can change the construction code to $c = Convert::Binary::C->new(ByteOrder => 'LittleEndian', Alignment => 2); Either way, the object will now know that it should use little endian (Intel) byte order and 2-byte struct member alignment for packing and unpacking. Alternatively, you can use the option names as names of methods to configure the object, like: $c->ByteOrder('LittleEndian'); You can also retrieve information about the current configuration of a Convert::Binary::C object. For details, see the section about the L|/"configure"> method. =head2 Parsing C code Convert::Binary::C allows two ways of parsing C source. Either by parsing external C header or C source files: $c->parse_file('header.h'); Or by parsing C code embedded in your script: $c->parse(<<'CCODE'); struct foo { char ary[3]; unsigned short baz; int bar; }; CCODE Now the object C<$c> will know everything about C. The example above uses a so-called here-document. It allows one to easily embed multi-line strings in your code. You can find more about here-documents in L or L. Since the L|/"parse"> and L|/"parse_file"> methods throw an exception when a parse error occurs, you usually want to catch these in an C block: eval { $c->parse_file('header.h') }; if ($@) { # handle error appropriately } Perl's special C<$@> variable will contain an empty string (which evaluates to a false value in boolean context) on success or an error string on failure. As another feature, L|/"parse"> and L|/"parse_file"> return a reference to their object on success, just like L|/"configure"> does when you're configuring the object. This will allow you to write constructs like this: my $c = eval { Convert::Binary::C->new(Include => ['/usr/include']) ->parse_file('header.h') }; if ($@) { # handle error appropriately } =head2 Packing and unpacking Convert::Binary::C has two methods, L|/"pack"> and L|/"unpack">, that act similar to the functions of same denominator in Perl. To perform the packing described in the example above, you could write: $data = { ary => [1, 2, 3], baz => 40000, bar => -4711, }; $binary = $c->pack('foo', $data); Unpacking will work exactly the same way, just that the L|/"unpack"> method will take a byte string as its input and will return a reference to a (possibly very complex) Perl data structure. $binary = get_data_from_memory(); $data = $c->unpack('foo', $binary); You can now easily access all of the values: print "foo.ary[1] = $data->{ary}[1]\n"; Or you can even more conveniently use the L module: use Data::Dumper; print Dumper($data); The output would look something like this: $VAR1 = { 'ary' => [ 42, 48, 100 ], 'baz' => 5000, 'bar' => -271 }; =head2 Preprocessor configuration Convert::Binary::C uses Thomas Pornin's C as an internal C preprocessor. It is compliant to ISO-C99, so you don't have to worry about using even weird preprocessor constructs in your code. If your C source contains includes or depends upon preprocessor defines, you may need to configure the internal preprocessor. Use the C and C configuration options for that: $c->configure(Include => ['/usr/include', '/home/mhx/include'], Define => [qw( NDEBUG FOO=42 )]); If your code uses system includes, it is most likely that you will need to define the symbols that are usually defined by the compiler. On some operating systems, the system includes require the preprocessor to predefine a certain set of assertions. Assertions are supported by C, and you can define them either in the source code using C<#assert> or as a property of the Convert::Binary::C object using C: $c->configure(Assert => ['predicate(answer)']); Information about defined macros can be retrieved from the preprocessor as long as its configuration isn't changed. The preprocessor is implicitly reset if you change one of the following configuration options: Include Define Assert HasCPPComments HasMacroVAARGS =head2 Supported pragma directives Convert::Binary::C supports the C pragma to locally override struct member alignment. The supported syntax is as follows: =over 4 =item #pragma pack( ALIGN ) Sets the new alignment to ALIGN. If ALIGN is 0, resets the alignment to its original value. =item #pragma pack Resets the alignment to its original value. =item #pragma pack( push, ALIGN ) Saves the current alignment on a stack and sets the new alignment to ALIGN. If ALIGN is 0, sets the alignment to the default alignment. =item #pragma pack( pop ) Restores the alignment to the last value saved on the stack. =back /* Example assumes sizeof( short ) == 2, sizeof( long ) == 4. */ #pragma pack(1) struct nopad { char a; /* no padding bytes between 'a' and 'b' */ long b; }; #pragma pack /* reset to "native" alignment */ #pragma pack( push, 2 ) struct pad { char a; /* one padding byte between 'a' and 'b' */ long b; #pragma pack( push, 1 ) struct { char c; /* no padding between 'c' and 'd' */ short d; } e; /* sizeof( e ) == 3 */ #pragma pack( pop ); /* back to pack( 2 ) */ long f; /* one padding byte between 'e' and 'f' */ }; #pragma pack( pop ); /* back to "native" */ The C pragma as it is currently implemented only affects the I struct member alignment. There are compilers that also allow one to specify the I struct member alignment. This is not supported by Convert::Binary::C. =head2 Automatic configuration using C As there are over 20 different configuration options, setting all of them correctly can be a lengthy and tedious task. The L|ccconfig> script, which is bundled with this module, aims at automatically determining the correct compiler configuration by testing the compiler executable. It works for both, native and cross compilers. =head1 UNDERSTANDING TYPES This section covers one of the fundamental features of Convert::Binary::C. It's how I, referred to as TYPEs in the L, are handled by the module. Many of the methods, namely L|/"pack">, L|/"unpack">, L|/"sizeof">, L|/"typeof">, L|/"member">, L|/"offsetof">, L|/"def">, L|/"initializer"> and L|/"tag">, are passed a TYPE to operate on as their first argument. =head2 Standard Types These are trivial. Standard types are simply enum names, struct names, union names, or typedefs. Almost every method that wants a TYPE will accept a standard type. For enums, structs and unions, the prefixes C, C and C are optional. However, if a typedef with the same name exists, like in struct foo { int bar; }; typedef int foo; you will have to use the prefix to distinguish between the struct and the typedef. Otherwise, a typedef is always given preference. =head2 Basic Types Basic types, or atomic types, are C or C, for example. It's possible to use these basic types without having parsed any code. You can simply do $c = Convert::Binary::C->new; $size = $c->sizeof('unsigned long'); $data = $c->pack('short int', 42); Even though the above works fine, it is not possible to define more complex types on the fly, so $size = $c->sizeof('struct { int a, b; }'); will result in an error. Basic types are not supported by all methods. For example, it makes no sense to use L|/"member"> or L|/"offsetof"> on a basic type. Using L|/"typeof"> isn't very useful, but supported. =head2 Member Expressions This is by far the most complex part, depending on the complexity of your data structures. Any L that defines a compound or an array may be followed by a member expression to select only a certain part of the data type. Say you have parsed the following C code: struct foo { long type; struct { short x, y; } array[20]; }; typedef struct foo matrix[8][8]; You may want to know the size of the C member of C. This is quite easy: print $c->sizeof('foo.array'), " bytes"; will print 80 bytes depending of course on the C you configured. If you wanted to unpack only a single column of C, that's easy as well (and of course it doesn't matter which index you use): $column = $c->unpack('matrix[2]', $data); Just like in C, it is possible to use out-of-bounds array indices. This means that, for example, despite C is declared to have 20 elements, the following code $size = $c->sizeof('foo.array[4711]'); $offset = $c->offsetof('foo', 'array[-13]'); is perfectly valid and will result in: $size = 4 $offset = -44 Member expressions can be arbitrarily complex: $type = $c->typeof('matrix[2][3].array[7].y'); print "the type is $type"; will, for example, print the type is short Member expressions are also used as the second argument to L|/"offsetof">. =head2 Offsets Members returned by the L|/"member"> method have an optional offset suffix to indicate that the given offset doesn't point to the start of that member. For example, $member = $c->member('matrix', 1431); print $member; will print [2][0].array[3].y+1 If you would use this as a member expression, like in $size = $c->sizeof("matrix $member"); the offset suffix will simply be ignored. Actually, it will be ignored for all methods if it's used in the first argument. When used in the second argument to L|/"offsetof">, it will usually do what you mean, i. e. the offset suffix, if present, will be considered when determining the offset. This behaviour ensures that $member = $c->member('foo', 43); $offset = $c->offsetof('foo', $member); print "'$member' is located at offset $offset of struct foo"; will always correctly set C<$offset>: '.array[8].y+1' is located at offset 43 of struct foo If this is not what you mean, e.g. because you want to know the offset where the member returned by L|/"member"> starts, you just have to remove the suffix: $member =~ s/\+\d+$//; $offset = $c->offsetof('foo', $member); print "'$member' starts at offset $offset of struct foo"; This would then print: '.array[8].y' starts at offset 42 of struct foo =head1 USING TAGS In a nutshell, tags are properties that you can attach to types. You can add tags to types using the L|/"tag"> method, and remove them using L|/"tag"> or L|/"untag">, for example: # Attach 'Format' and 'Hooks' tags $c->tag('type', Format => 'String', Hooks => { pack => \&rout }); $c->untag('type', 'Format'); # Remove only 'Format' tag $c->untag('type'); # Remove all tags You can also use L|/"tag"> to see which tags are attached to a type, for example: $tags = $c->tag('type'); This would give you: $tags = { 'Hooks' => { 'pack' => \&rout }, 'Format' => 'String' }; Currently, there are only a couple of different tags that influence the way data is packed and unpacked. There are probably more tags to come in the future. =head2 The Format Tag One of the tags currently available is the C tag. Using this tag, you can tell a Convert::Binary::C object to pack and unpack a certain data type in a special way. For example, if you have a (fixed length) string type typedef char str_type[40]; this type would, by default, be unpacked as an array of Cs. That's because it B only an array of Cs, and Convert::Binary::C doesn't know it is actually used as a string. But you can tell Convert::Binary::C that C is a C string using the C tag: $c->tag('str_type', Format => 'String'); This will make L|/"unpack"> (and of course also L|/"pack">) treat the binary data like a null-terminated C string: $binary = "Hello World!\n\0 this is just some dummy data"; $hello = $c->unpack('str_type', $binary); print $hello; would thusly print: Hello World! Of course, this also works the other way round: use Data::Hexdumper; $binary = $c->pack('str_type', "Just another C::B::C hacker"); print hexdump(data => $binary); would print: 0x0000 : 4A 75 73 74 20 61 6E 6F 74 68 65 72 20 43 3A 3A : Just.another.C:: 0x0010 : 42 3A 3A 43 20 68 61 63 6B 65 72 00 00 00 00 00 : B::C.hacker..... 0x0020 : 00 00 00 00 00 00 00 00 : ........ If you want Convert::Binary::C to not interpret the binary data at all, you can set the C tag to C. This might not be seem very useful, as L|/"pack"> and L|/"unpack"> would just pass through the unmodified binary data. But you can tag not only whole types, but also compound members. For example $c->parse(<tag('packet.payload', Format => 'Binary'); would allow you to write: read FILE, $payload, $c->sizeof('packet.payload'); $packet = { header => 4711, flags => 0xf00f, payload => $payload, }; $binary = $c->pack('packet', $packet); print hexdump(data => $binary); This would print something like: 0x0000 : 12 67 F0 0F 6E 6F 0A 6E 6F 0A 6E 6F 0A 6E 6F 0A : .g..no.no.no.no. 0x0010 : 6E 6F 0A 6E 6F 0A 6E 6F 0A 6E 6F 0A 6E 6F 0A 6E : no.no.no.no.no.n For obvious reasons, it is not allowed to attach a C tag to bitfield members. Trying to do so will result in an exception being thrown by the L|/"tag"> method. =head2 The ByteOrder Tag The C tag allows you to override the byte order of certain types or members. The implementation of this tag is considered B and may be subject to changes in the future. Usually it doesn't make much sense to override the byte order, but there may be applications where a sub-structure is packed in a different byte order than the surrounding structure. Take, for example, the following code: $c = Convert::Binary::C->new(ByteOrder => 'BigEndian', OrderMembers => 1); $c->parse(<<'ENDC'); typedef unsigned short u_16; struct coords_3d { int x, y, z; }; struct coords_msg { u_16 header; u_16 length; struct coords_3d coords; }; ENDC Assume that while C is big endian, the embedded coordinates C are stored in little endian format for some reason. In C, you'll have to handle this manually. But using Convert::Binary::C, you can simply attach a C tag to either the C structure or to the C member of the C structure. Both will work in this case. The only difference is that if you tag the C member, C will only be treated as little endian if you L|/"pack"> or L|/"unpack"> the C structure. (BTW, you could also tag all members of C individually, but that would be inefficient.) So, let's attach the C tag to the C member: $c->tag('coords_msg.coords', ByteOrder => 'LittleEndian'); Assume the following binary message: 0x0000 : 00 2A 00 0C FF FF FF FF 02 00 00 00 2A 00 00 00 : .*..........*... If you unpack this message... $msg = $c->unpack('coords_msg', $binary); ...you will get the following data structure: $msg = { 'header' => 42, 'length' => 12, 'coords' => { 'x' => -1, 'y' => 2, 'z' => 42 } }; Without the C tag, you would get: $msg = { 'header' => 42, 'length' => 12, 'coords' => { 'x' => -1, 'y' => 33554432, 'z' => 704643072 } }; The C tag is a I tag, i.e. it applies to all children of the tagged object recursively. Of course, it is also possible to override a C tag by attaching another C tag to a child type. Confused? Here's an example. In addition to tagging the C member as little endian, we now tag C as big endian: $c->tag('coords_3d.y', ByteOrder => 'BigEndian'); $msg = $c->unpack('coords_msg', $binary); This will return the following data structure: $msg = { 'header' => 42, 'length' => 12, 'coords' => { 'x' => -1, 'y' => 33554432, 'z' => 42 } }; Note that if you tag both a type and a member of that type within a compound, the tag attached to the type itself has higher precedence. Using the example above, if you would attach a C tag to both C and C, the tag attached to C would always win. Also note that the C tag might not work as expected along with bitfields, which is why the implementation is considered experimental. Bitfields are currently B affected by the C tag at all. This is because the byte order would affect the bitfield layout, and a consistent implementation supporting multiple layouts of the same struct would be quite bulky and probably slow down the whole module. If you really need the correct behaviour, you can use the following trick: $le = Convert::Binary::C->new(ByteOrder => 'LittleEndian'); $le->parse(<<'ENDC'); typedef unsigned short u_16; typedef unsigned long u_32; struct message { u_16 header; u_16 length; struct { u_32 a; u_32 b; u_32 c : 7; u_32 d : 5; u_32 e : 20; } data; }; ENDC $be = $le->clone->ByteOrder('BigEndian'); $le->tag('message.data', Format => 'Binary', Hooks => { unpack => sub { $be->unpack('message.data', @_) }, pack => sub { $be->pack('message.data', @_) }, }); $msg = $le->unpack('message', $binary); This uses the L|/"The Format Tag"> and L|/"The Hooks Tag"> tags along with a big endian L|/"clone"> of the original little endian object. It attaches hooks to the little endian object and in the hooks it uses the big endian object to L|/"pack"> and L|/"unpack"> the binary data. =head2 The Dimension Tag The C tag allows you to override the declared dimension of an array for packing or unpacking data. The implementation of this tag is considered B and will B in a future release. That being said, the C tag is primarily useful to support variable length arrays. Usually, you have to write the following code for such a variable length array in C: struct c_message { unsigned count; char data[1]; }; So, because you cannot declare an empty array, you declare an array with a single element. If you have a ISO-C99 compliant compiler, you can write this code instead: struct c99_message { unsigned count; char data[]; }; This explicitly tells the compiler that C is a flexible array member. Convert::Binary::C already uses this information to handle L in a special way. As you can see in the following example, the two types are treated differently: $data = pack 'NC*', 3, 1..8; $uc = $c->unpack('c_message', $data); $uc99 = $c->unpack('c99_message', $data); This will result in: $uc = {'count' => 3,'data' => [1]}; $uc99 = {'count' => 3,'data' => [1,2,3,4,5,6,7,8]}; However, only few compilers support ISO-C99, and you probably don't want to change your existing code only to get some extra features when using Convert::Binary::C. So it is possible to attach a tag to the C member of the C struct that tells Convert::Binary::C to treat the array as if it were flexible: $c->tag('c_message.data', Dimension => '*'); Now both C and C will behave exactly the same when using L|/"pack"> or L|/"unpack">. Repeating the above code: $uc = $c->unpack('c_message', $data); This will result in: $uc = {'count' => 3,'data' => [1,2,3,4,5,6,7,8]}; But there's more you can do. Even though it probably doesn't make much sense, you can tag a fixed dimension to an array: $c->tag('c_message.data', Dimension => '5'); This will obviously result in: $uc = {'count' => 3,'data' => [1,2,3,4,5]}; A more useful way to use the C tag is to set it to the name of a member in the same compound: $c->tag('c_message.data', Dimension => 'count'); Convert::Binary::C will now use the value of that member to determine the size of the array, so unpacking will result in: $uc = {'count' => 3,'data' => [1,2,3]}; Of course, you can also tag flexible array members. And yes, it's also possible to use more complex member expressions: $c->parse(<tag('more_complex.data', Dimension => 'hdr.len[1]'); $u = $c->unpack('more_complex', $data); The result will be: $u = { 'hdr' => { 'len' => [ 42, 7 ] }, 'data' => [ 1, 2, 3, 4, 5, 6, 7 ] }; By the way, it's also possible to tag arrays that are not embedded inside a compound: $c->parse(<tag('short_array', Dimension => '5'); $u = $c->unpack('short_array', $data); Resulting in: $u = [0,42,0,7,258]; The final and most powerful way to define a C tag is to pass it a subroutine reference. The referenced subroutine can execute whatever code is necessary to determine the size of the tagged array: sub get_size { my $m = shift; return $m->{hdr}{len}[0] / $m->{hdr}{len}[1]; } $c->tag('more_complex.data', Dimension => \&get_size); $u = $c->unpack('more_complex', $data); As you can guess from the above code, the subroutine is being passed a reference to hash that stores the already unpacked part of the compound embedding the tagged array. This is the result: $u = { 'hdr' => { 'len' => [ 42, 7 ] }, 'data' => [ 1, 2, 3, 4, 5, 6 ] }; You can also pass custom arguments to the subroutines by using the L|/"arg"> method. This is similar to the functionality offered by the L|/"The Hooks Tag"> tag. Of course, all that also works for the L|/"pack"> method as well. However, the current implementation has at least one shortcomings, which is why it's experimental: The C tag doesn't impact compound layout. This means that while you can alter the size of an array in the middle of a compound, the offset of the members after that array won't be impacted. I'd rather like to see the layout adapt dynamically, so this is what I'm hoping to implement in the future. =head2 The Hooks Tag Hooks are a special kind of tag that can be extremely useful. Using hooks, you can easily override the way L|/"pack"> and L|/"unpack"> handle data using your own subroutines. If you define hooks for a certain data type, each time this data type is processed the corresponding hook will be called to allow you to modify that data. =head3 Basic Hooks Here's an example. Let's assume the following C code has been parsed: typedef unsigned int u_32; typedef u_32 ProtoId; typedef ProtoId MyProtoId; struct MsgHeader { MyProtoId id; u_32 len; }; struct String { u_32 len; char buf[]; }; You could now use the types above and, for example, unpack binary data representing a C like this: $msg_header = $c->unpack('MsgHeader', $data); This would give you: $msg_header = { 'id' => 42, 'len' => 13 }; Instead of dealing with C's as integers, you would rather like to have them as clear text. You could provide subroutines to convert between clear text and integers: %proto = ( CATS => 1, DOGS => 42, HEDGEHOGS => 4711, ); %rproto = reverse %proto; sub ProtoId_unpack { $rproto{$_[0]} || 'unknown protocol' } sub ProtoId_pack { $proto{$_[0]} or die 'unknown protocol' } You can now register these subroutines by attaching a C tag to C using the L|/"tag"> method: $c->tag('ProtoId', Hooks => { pack => \&ProtoId_pack, unpack => \&ProtoId_unpack }); Doing exactly the same unpack on C again would now return: $msg_header = { 'id' => 'DOGS', 'len' => 13 }; Actually, if you don't need the reverse operation, you don't even have to register a C hook. Or, even better, you can have a more intelligent C hook that creates a dual-typed variable: use Scalar::Util qw(dualvar); sub ProtoId_unpack2 { dualvar $_[0], $rproto{$_[0]} || 'unknown protocol' } $c->tag('ProtoId', Hooks => { unpack => \&ProtoId_unpack2 }); $msg_header = $c->unpack('MsgHeader', $data); Just as before, this would print $msg_header = { 'id' => 'DOGS', 'len' => 13 }; but without requiring a C hook for packing, at least as long as you keep the variable dual-typed. Hooks are usually called with exactly one argument, which is the data that should be processed (see L<"Advanced Hooks"> for details on how to customize hook arguments). They are called in scalar context and expected to return the processed data. To get rid of registered hooks, you can either undefine only certain hooks $c->tag('ProtoId', Hooks => { pack => undef }); or all hooks: $c->tag('ProtoId', Hooks => undef); Of course, hooks are not restricted to handling integer values. You could just as well attach hooks for the C struct from the code above. A useful example would be to have these hooks: sub string_unpack { my $s = shift; pack "c$s->{len}", @{$s->{buf}}; } sub string_pack { my $s = shift; return { len => length $s, buf => [ unpack 'c*', $s ], } } (Don't be confused by the fact that the C hook uses C and the C hook uses C. And also see L<"Advanced Hooks"> for a more clever approach.) While you would normally get the following output when unpacking a C $string = { 'len' => 12, 'buf' => [ 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33 ] }; you could just register the hooks using $c->tag('String', Hooks => { pack => \&string_pack, unpack => \&string_unpack }); and you would get a nice human-readable Perl string: $string = 'Hello World!'; Packing a string turns out to be just as easy: use Data::Hexdumper; $data = $c->pack('String', 'Just another Perl hacker,'); print hexdump(data => $data); This would print: 0x0000 : 00 00 00 19 4A 75 73 74 20 61 6E 6F 74 68 65 72 : ....Just.another 0x0010 : 20 50 65 72 6C 20 68 61 63 6B 65 72 2C : .Perl.hacker, If you want to find out if or which hooks are registered for a certain type, you can also use the L|/"tag"> method: $hooks = $c->tag('String', 'Hooks'); This would return: $hooks = { 'unpack' => \&string_unpack, 'pack' => \&string_pack }; =head3 Advanced Hooks It is also possible to combine hooks with using the C tag. This can be useful if you know better than Convert::Binary::C how to interpret the binary data. In the previous section, we've handled this type struct String { u_32 len; char buf[]; }; with the following hooks: sub string_unpack { my $s = shift; pack "c$s->{len}", @{$s->{buf}}; } sub string_pack { my $s = shift; return { len => length $s, buf => [ unpack 'c*', $s ], } } $c->tag('String', Hooks => { pack => \&string_pack, unpack => \&string_unpack }); As you can see in the hook code, C is expected to be an array of characters. For the L|/"unpack"> case Convert::Binary::C first turns the binary data into a Perl array, and then the hook packs it back into a string. The intermediate array creation and destruction is completely useless. Same thing, of course, for the L|/"pack"> case. Here's a clever way to handle this. Just tag C as binary $c->tag('String.buf', Format => 'Binary'); and use the following hooks instead: sub string_unpack2 { my $s = shift; substr $s->{buf}, 0, $s->{len}; } sub string_pack2 { my $s = shift; return { len => length $s, buf => $s, } } $c->tag('String', Hooks => { pack => \&string_pack2, unpack => \&string_unpack2 }); This will be exactly equivalent to the old code, but faster and probably even much easier to understand. But hooks are even more powerful. You can customize the arguments that are passed to your hooks and you can use L|/"arg"> to pass certain special arguments, such as the name of the type that is currently being processed by the hook. The following example shows how it is easily possible to peek into the perl internals using hooks. use Config; $c = Convert::Binary::C->new(%CC, OrderMembers => 1); $c->Include(["$Config{archlib}/CORE", @{$c->Include}]); $c->parse(<tag($_, Hooks => { unpack_ptr => [\&unpack_ptr, $c->arg(qw(SELF TYPE DATA))] }) for qw( XPVAV XPVHV ); First, we add the perl core include path and parse F. Then, we add an C hook for a couple of the internal data types. The C and C hooks are called whenever a pointer to a certain data structure is processed. This is by far the most experimental part of the hooks feature, as this includes B kind of pointer. There's no way for the hook to know the difference between a plain pointer, or a pointer to a pointer, or a pointer to an array (this is because the difference doesn't matter anywhere else in Convert::Binary::C). But the hook above makes use of another very interesting feature: It uses L|/"arg"> to pass special arguments to the hook subroutine. Usually, the hook subroutine is simply passed a single data argument. But using the above definition, it'll get a reference to the calling object (C), the name of the type being processed (C) and the data (C). But how does our hook look like? sub unpack_ptr { my($self, $type, $ptr) = @_; $ptr or return ''; my $size = $self->sizeof($type); $self->unpack($type, unpack("P$size", pack('Q', $ptr))); } As you can see, the hook is rather simple. First, it receives the arguments mentioned above. It performs a quick check if the pointer is C and shouldn't be processed any further. Next, it determines the size of the type being processed. And finally, it'll just use the C

I unpack template to read from that memory location and recursively call L|/"unpack"> to unpack the type. (And yes, this may of course again call other hooks.) Now, let's test that: my $ref = { foo => 42, bar => 4711 }; my $ptr = hex(("$ref" =~ /\(0x([[:xdigit:]]+)\)$/)[0]); print Dumper(unpack_ptr($c, 'AV', $ptr)); Just for the fun of it, we create a blessed array reference. But how do we get a pointer to the corresponding C? This is rather easy, as the address of the C is just the hex value that appears when using the array reference in string context. So we just grab that and turn it into decimal. All that's left to do is just call our hook, as it can already handle C pointers. And this is what we get: $VAR1 = { 'sv_any' => { 'xmg_stash' => 0, 'xmg_u' => { 'xmg_magic' => 0, 'xmg_hash_index' => 0 }, 'xav_fill' => 2, 'xav_max' => 7, 'xav_alloc' => 0 }, 'sv_refcnt' => 1, 'sv_flags' => 536870924, 'sv_u' => { 'svu_pv' => '94716517508048', 'svu_iv' => '94716517508048', 'svu_uv' => '94716517508048', 'svu_nv' => '4.67961773944475e-310', 'svu_rv' => '94716517508048', 'svu_array' => '94716517508048', 'svu_hash' => '94716517508048', 'svu_gp' => '94716517508048', 'svu_fp' => '94716517508048' } }; Even though it is rather easy to do such stuff using C hooks, you should really know what you're doing and do it with extreme care because of the limitations mentioned above. It's really easy to run into segmentation faults when you're dereferencing pointers that point to memory which you don't own. =head3 Performance Using hooks isn't for free. In performance-critical applications you have to keep in mind that hooks are actually perl subroutines and that they are called once for every value of a registered type that is being packed or unpacked. If only about 10% of the values require hooks to be called, you'll hardly notice the difference (if your hooks are implemented efficiently, that is). But if all values would require hooks to be called, that alone could easily make packing and unpacking very slow. =head2 Tag Order Since it is possible to attach multiple tags to a single type, the order in which the tags are processed is important. Here's a small table that shows the processing order. pack unpack --------------------- Hooks Format Format ByteOrder ByteOrder Hooks As a general rule, the L|/"The Hooks Tag"> tag is always the first thing processed when packing data, and the last thing processed when unpacking data. The L|/"The Format Tag"> and L|/"The ByteOrder Tag"> tags are exclusive, but when both are given the L|/"The Format Tag"> tag wins. =head1 METHODS =head2 new =over 8 =item C =item C OPTION1 =E VALUE1, OPTION2 =E VALUE2, ... The constructor is used to create a new Convert::Binary::C object. You can simply use $c = Convert::Binary::C->new; without additional arguments to create an object, or you can optionally pass any arguments to the constructor that are described for the L|/"configure"> method. =back =head2 configure =over 8 =item C =item C OPTION =item C OPTION1 =E VALUE1, OPTION2 =E VALUE2, ... This method can be used to configure an existing Convert::Binary::C object or to retrieve its current configuration. To configure the object, the list of options consists of key and value pairs and must therefore contain an even number of elements. L|/"configure"> (and also L|/"new"> if used with configuration options) will throw an exception if you pass an odd number of elements. Configuration will normally look like this: $c->configure(ByteOrder => 'BigEndian', IntSize => 2); To retrieve the current value of a configuration option, you must pass a single argument to L|/"configure"> that holds the name of the option, just like $order = $c->configure('ByteOrder'); If you want to get the values of all configuration options at once, you can call L|/"configure"> without any arguments and it will return a reference to a hash table that holds the whole object configuration. This can be conveniently used with the L module, for example: use Convert::Binary::C; use Data::Dumper; $c = Convert::Binary::C->new(Define => ['DEBUGGING', 'FOO=123'], Include => ['/usr/include']); print Dumper($c->configure); Which will print something like this: $VAR1 = { 'DisabledKeywords' => [], 'HasCPPComments' => 1, 'UnsignedChars' => 0, 'LongDoubleSize' => 16, 'OrderMembers' => 1, 'CompoundAlignment' => 1, 'UnsignedBitfields' => 0, 'DoubleSize' => 8, 'Assert' => [], 'PointerSize' => 8, 'ByteOrder' => 'LittleEndian', 'Warnings' => 0, 'LongSize' => 8, 'Include' => [ '/usr/include' ], 'EnumType' => 'Integer', 'EnumSize' => 4, 'ShortSize' => 2, 'IntSize' => 4, 'StdCVersion' => 199901, 'HostedC' => 1, 'Alignment' => 1, 'HasMacroVAARGS' => 1, 'KeywordMap' => {}, 'Define' => [ 'DEBUGGING', 'FOO=123' ], 'LongLongSize' => 8, 'CharSize' => 1, 'FloatSize' => 4, 'Bitfields' => { 'Engine' => 'Generic' } }; Since you may not always want to write a L|/"configure"> call when you only want to change a single configuration item, you can use any configuration option name as a method name, like: $c->ByteOrder('LittleEndian') if $c->IntSize < 4; (Yes, the example doesn't make very much sense... ;-) However, you should keep in mind that configuration methods that can take lists (namely C, C and C, but not C) may behave slightly different than their L|/"configure"> equivalent. If you pass these methods a single argument that is an array reference, the current list will be B by the new one, which is just the behaviour of the corresponding L|/"configure"> call. So the following are equivalent: $c->configure(Define => ['foo', 'bar=123']); $c->Define(['foo', 'bar=123']); But if you pass a list of strings instead of an array reference (which cannot be done when using L|/"configure">), the new list items are B to the current list, so $c = Convert::Binary::C->new(Include => ['/include']); $c->Include('/usr/include', '/usr/local/include'); print Dumper($c->Include); $c->Include(['/usr/local/include']); print Dumper($c->Include); will first print all three include paths, but finally only C will be configured: $VAR1 = [ '/include', '/usr/include', '/usr/local/include' ]; $VAR1 = [ '/usr/local/include' ]; Furthermore, configuration methods can be chained together, as they return a reference to their object if called as a set method. So, if you like, you can configure your object like this: $c = Convert::Binary::C->new(IntSize => 4) ->Define(qw( __DEBUG__ DB_LEVEL=3 )) ->ByteOrder('BigEndian'); $c->configure(EnumType => 'Both', Alignment => 4) ->Include('/usr/include', '/usr/local/include'); In the example above, C is the word list quoting operator. It returns a list of all non-whitespace sequences, and is especially useful for configuring preprocessor defines or assertions. The following assignments are equivalent: @array = ('one', 'two', 'three'); @array = qw(one two three); You can configure the following options. Unknown options, as well as invalid values for an option, will cause the object to throw exceptions. =over 4 =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by an integer. This is in most cases 2 or 4. If you set it to zero, the size of an integer on the host system will be used. This is also the default unless overridden by C at compile time. =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by a C. This rarely needs to be changed, except for some platforms that don't care about bytes, for example DSPs. If you set this to zero, the size of a C on the host system will be used. This is also the default unless overridden by C at compile time. =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by a short integer. Although integers explicitly declared as C should be always 16 bit, there are compilers that make a short 8 bit wide. If you set it to zero, the size of a short integer on the host system will be used. This is also the default unless overridden by C at compile time. =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by a long integer. If set to zero, the size of a long integer on the host system will be used. This is also the default unless overridden by C at compile time. =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by a long long integer. If set to zero, the size of a long long integer on the host system, or 8, will be used. This is also the default unless overridden by C at compile time. =item C =E 0 | 1 | 2 | 4 | 8 | 12 | 16 Set the number of bytes that are occupied by a single precision floating point value. If you set it to zero, the size of a C on the host system will be used. This is also the default unless overridden by C at compile time. For details on floating point support, see L<"FLOATING POINT VALUES">. =item C =E 0 | 1 | 2 | 4 | 8 | 12 | 16 Set the number of bytes that are occupied by a double precision floating point value. If you set it to zero, the size of a C on the host system will be used. This is also the default unless overridden by C at compile time. For details on floating point support, see L<"FLOATING POINT VALUES">. =item C =E 0 | 1 | 2 | 4 | 8 | 12 | 16 Set the number of bytes that are occupied by a double precision floating point value. If you set it to zero, the size of a C on the host system, or 12 will be used. This is also the default unless overridden by C at compile time. For details on floating point support, see L<"FLOATING POINT VALUES">. =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by a pointer. This is in most cases 2 or 4. If you set it to zero, the size of a pointer on the host system will be used. This is also the default unless overridden by C at compile time. =item C =E -1 | 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by an enumeration type. On most systems, this is equal to the size of an integer, which is also the default. However, for some compilers, the size of an enumeration type depends on the size occupied by the largest enumerator. So the size may vary between 1 and 8. If you have enum foo { ONE = 100, TWO = 200 }; this will occupy one byte because the enum can be represented as an unsigned one-byte value. However, enum foo { ONE = -100, TWO = 200 }; will occupy two bytes, because the -100 forces the type to be signed, and 200 doesn't fit into a signed one-byte value. Therefore, the type used is a signed two-byte value. If this is the behaviour you need, set the EnumSize to C<0>. Some compilers try to follow this strategy, but don't care whether the enumeration has signed values or not. They always declare an enum as signed. On such a compiler, given enum one { ONE = -100, TWO = 100 }; enum two { ONE = 100, TWO = 200 }; enum C will occupy only one byte, while enum C will occupy two bytes, even though it could be represented by a unsigned one-byte value. If this is the behaviour of your compiler, set EnumSize to C<-1>. =item C =E 0 | 1 | 2 | 4 | 8 | 16 Set the struct member alignment. This option controls where padding bytes are inserted between struct members. It globally sets the alignment for all structs/unions. However, this can be overridden from within the source code with the common C pragma as explained in L<"Supported pragma directives">. The default alignment is 1, which means no padding bytes are inserted. A setting of C<0> means I alignment, i.e. the alignment of the system that Convert::Binary::C has been compiled on. You can determine the native properties using the L|/"native"> function. The C option is similar to the C<-Zp[n]> option of the Intel compiler. It globally specifies the maximum boundary to which struct members are aligned. Consider the following structure and the sizes of C, C, C and C being 1, 2, 4 and 8, respectively. struct align { char a; short b, c; long d; double e; }; With an alignment of 1 (the default), the struct members would be packed tightly: 0 1 2 3 4 5 6 7 8 9 10 11 12 +---+---+---+---+---+---+---+---+---+---+---+---+ | a | b | c | d | ... +---+---+---+---+---+---+---+---+---+---+---+---+ 12 13 14 15 16 17 +---+---+---+---+---+ ... e | +---+---+---+---+---+ With an alignment of 2, the struct members larger than one byte would be aligned to 2-byte boundaries, which results in a single padding byte between C and C. 0 1 2 3 4 5 6 7 8 9 10 11 12 +---+---+---+---+---+---+---+---+---+---+---+---+ | a | * | b | c | d | ... +---+---+---+---+---+---+---+---+---+---+---+---+ 12 13 14 15 16 17 18 +---+---+---+---+---+---+ ... e | +---+---+---+---+---+---+ With an alignment of 4, the struct members of size 2 would be aligned to 2-byte boundaries and larger struct members would be aligned to 4-byte boundaries: 0 1 2 3 4 5 6 7 8 9 10 11 12 +---+---+---+---+---+---+---+---+---+---+---+---+ | a | * | b | c | * | * | d | ... +---+---+---+---+---+---+---+---+---+---+---+---+ 12 13 14 15 16 17 18 19 20 +---+---+---+---+---+---+---+---+ ... | e | +---+---+---+---+---+---+---+---+ This layout of the struct members allows the compiler to generate optimized code because aligned members can be accessed more easily by the underlying architecture. Finally, setting the alignment to 8 will align Cs to 8-byte boundaries: 0 1 2 3 4 5 6 7 8 9 10 11 12 +---+---+---+---+---+---+---+---+---+---+---+---+ | a | * | b | c | * | * | d | ... +---+---+---+---+---+---+---+---+---+---+---+---+ 12 13 14 15 16 17 18 19 20 21 22 23 24 +---+---+---+---+---+---+---+---+---+---+---+---+ ... | * | * | * | * | e | +---+---+---+---+---+---+---+---+---+---+---+---+ Further increasing the alignment does not alter the layout of our structure, as only members larger that 8 bytes would be affected. The alignment of a structure depends on its largest member and on the setting of the C option. With C set to 2, a structure holding a C would be aligned to a 2-byte boundary, while a structure containing only Cs would have no alignment restrictions. (Unfortunately, that's not the whole story. See the C option for details.) Here's another example. Assuming 8-byte alignment, the following two structs will both have a size of 16 bytes: struct one { char c; double d; }; struct two { double d; char c; }; This is clear for C, because the member C has to be aligned to an 8-byte boundary, and thus 7 padding bytes are inserted after C. But for C, the padding bytes are inserted B of the structure, which doesn't make much sense immediately. However, it makes perfect sense if you think about an array of C. Each C has to be aligned to an 8-byte boundary, an thus each array element would have to occupy 16 bytes. With that in mind, it would be strange if a C variable would have a different size. And it would make the widely used construct struct two array[] = { {1.0, 0}, {2.0, 1} }; int elements = sizeof(array) / sizeof(struct two); impossible. The alignment behaviour described here seems to be common for all compilers. However, not all compilers have an option to configure their default alignment. =item C =E 0 | 1 | 2 | 4 | 8 | 16 Usually, the alignment of a compound (i.e. a C or a C) depends only on its largest member and on the setting of the C option. There are, however, architectures and compilers where compounds can have different alignment constraints. For most platforms and compilers, the alignment constraint for compounds is 1 byte. That is, on most platforms struct onebyte { char byte; }; will have an alignment of 1 and also a size of 1. But if you take an ARM architecture, the above C will have an alignment of 4, and thus also a size of 4. You can configure this by setting C to 4. This will ensure that the alignment of compounds is always 4. Setting C to C<0> means I compound alignment, i.e. the compound alignment of the system that Convert::Binary::C has been compiled on. You can determine the native properties using the L|/"native"> function. There are also compilers for certain platforms that allow you to adjust the compound alignment. If you're not aware of the fact that your compiler/architecture has a compound alignment other than 1, strange things can happen. If, for example, the compound alignment is 2 and you have something like typedef unsigned char U8; struct msg_head { U8 cmd; struct { U8 hi; U8 low; } crc16; U8 len; }; there will be one padding byte inserted before the embedded C struct and after the C member, which is most probably not what was intended: 0 1 2 3 4 5 6 +-----+-----+-----+-----+-----+-----+ | cmd | * | hi | low | len | * | +-----+-----+-----+-----+-----+-----+ Note that both C<#pragma pack> and the C option can override C. If you set C to 4, but C to 2, compounds will actually be aligned on 2-byte boundaries. =item C =E 'BigEndian' | 'LittleEndian' Set the byte order for integers larger than a single byte. Little endian (Intel, least significant byte first) and big endian (Motorola, most significant byte first) byte order are supported. The default byte order is the same as the byte order of the host system unless overridden by C at compile time. =item C =E 'Integer' | 'String' | 'Both' This option controls the type that enumeration constants will have in data structures returned by the L|/"unpack"> method. If you have the following definitions: typedef enum { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } Weekday; typedef enum { JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER } Month; typedef struct { int year; Month month; int day; Weekday weekday; } Date; and a byte string that holds a packed Date struct, then you'll get the following results from a call to the L|/"unpack"> method. =over 4 =item C Enumeration constants are returned as plain integers. This is fast, but may be not very useful. It is also the default. $date = { 'year' => 2002, 'month' => 0, 'day' => 7, 'weekday' => 1 }; =item C Enumeration constants are returned as strings. This will create a string constant for every unpacked enumeration constant and thus consumes more time and memory. However, the result may be more useful. $date = { 'year' => 2002, 'month' => 'JANUARY', 'day' => 7, 'weekday' => 'MONDAY' }; =item C Enumeration constants are returned as double typed scalars. If evaluated in string context, the enumeration constant will be a string, if evaluated in numeric context, the enumeration constant will be an integer. $date = $c->EnumType('Both')->unpack('Date', $binary); printf "Weekday = %s (%d)\n\n", $date->{weekday}, $date->{weekday}; if ($date->{month} == 0) { print "It's $date->{month}, happy new year!\n\n"; } print Dumper($date); This will print: Weekday = MONDAY (1) It's JANUARY, happy new year! $VAR1 = { 'year' => 2002, 'month' => 'JANUARY', 'day' => 7, 'weekday' => 'MONDAY' }; =back =item C =E [ KEYWORDS ] This option allows you to selectively deactivate certain keywords in the C parser. Some C compilers don't have the complete ANSI keyword set, i.e. they don't recognize the keywords C or C, for example. If you do typedef int void; on such a compiler, this will usually be ok. But if you parse this with an ANSI compiler, it will be a syntax error. To parse the above code correctly, you have to disable the C keyword in the Convert::Binary::C parser: $c->DisabledKeywords([qw( void )]); By default, the Convert::Binary::C parser will recognize the keywords C and C. If your compiler doesn't have these new keywords, it usually doesn't matter. Only if you're using the keywords as identifiers, like in typedef struct inline { int a, b; } restrict; you'll have to disable these ISO-C99 keywords: $c->DisabledKeywords([qw( inline restrict )]); The parser allows you to disable the following keywords: asm auto const double enum extern float inline long register restrict short signed static unsigned void volatile =item C =E { KEYWORD =E TOKEN, ... } This option allows you to add new keywords to the parser. These new keywords can either be mapped to existing tokens or simply ignored. For example, recent versions of the GNU compiler recognize the keywords C<__signed__> and C<__extension__>. The first one obviously is a synonym for C, while the second one is only a marker for a language extension. Using the preprocessor, you could of course do the following: $c->Define(qw( __signed__=signed __extension__= )); However, the preprocessor symbols could be undefined or redefined in the code, and #ifdef __signed__ # undef __signed__ #endif typedef __extension__ __signed__ long long s_quad; would generate a parse error, because C<__signed__> is an unexpected identifier. Instead of utilizing the preprocessor, you'll have to create mappings for the new keywords directly in the parser using C. In the above example, you want to map C<__signed__> to the built-in C keyword C and ignore C<__extension__>. This could be done with the following code: $c->KeywordMap({ __signed__ => 'signed', __extension__ => undef }); You can specify any valid identifier as hash key, and either a valid C keyword or C as hash value. Having configured the object that way, you could parse even #ifdef __signed__ # undef __signed__ #endif typedef __extension__ __signed__ long long s_quad; without problems. Note that C and C perfectly work together. You could, for example, disable the C keyword, but still have C<__signed__> mapped to the original C token: $c->configure(DisabledKeywords => [ 'signed' ], KeywordMap => { __signed__ => 'signed' }); This would allow you to define typedef __signed__ long signed; which would normally be a syntax error because C cannot be used as an identifier. =item C =E 0 | 1 Use this boolean option if you want characters to be unsigned if specified without an explicit C or C type specifier. By default, characters are signed. =item C =E 0 | 1 Use this boolean option if you want bitfields to be unsigned if specified without an explicit C or C type specifier. By default, bitfields are signed. =item C =E 0 | 1 Use this boolean option if you want warnings to be issued during the parsing of source code. Currently, warnings are only reported by the preprocessor, so don't expect the output to cover everything. By default, warnings are turned off and only errors will be reported. However, even these errors are turned off if you run without the C<-w> flag. =item C =E 0 | 1 Use this option to turn C++ comments on or off. By default, C++ comments are enabled. Disabling C++ comments may be necessary if your code includes strange things like: one = 4 //* <- divide */ 4; two = 2; With C++ comments, the above will be interpreted as one = 4 two = 2; which will obviously be a syntax error, but without C++ comments, it will be interpreted as one = 4 / 4; two = 2; which is correct. =item C =E 0 | 1 Use this option to turn the C<__VA_ARGS__> macro expansion on or off. If this is enabled (which is the default), you can use variable length argument lists in your preprocessor macros. #define DEBUG( ... ) fprintf( stderr, __VA_ARGS__ ) There's normally no reason to turn that feature off. =item C =E undef | INTEGER Use this option to change the value of the preprocessor's predefined C<__STDC_VERSION__> macro. When set to C, the macro will not be defined. =item C =E undef | 0 | 1 Use this option to change the value of the preprocessor's predefined C<__STDC_HOSTED__> macro. When set to C, the macro will not be defined. =item C =E [ INCLUDES ] Use this option to set the include path for the internal preprocessor. The option value is a reference to an array of strings, each string holding a directory that should be searched for includes. =item C =E [ DEFINES ] Use this option to define symbols in the preprocessor. The option value is, again, a reference to an array of strings. Each string can be either just a symbol or an assignment to a symbol. This is completely equivalent to what the C<-D> option does for most preprocessors. The following will define the symbol C and define C to be C<12345>: $c->configure(Define => [qw( FOO BAR=12345 )]); =item C =E [ ASSERTIONS ] Use this option to make assertions in the preprocessor. If you don't know what assertions are, don't be concerned, since they're deprecated anyway. They are, however, used in some system's include files. The value is an array reference, just like for the macro definitions. Only the way the assertions are defined is a bit different and mimics the way they are defined with the C<#assert> directive: $c->configure(Assert => ['foo(bar)']); =item C =E 0 | 1 When using L|/"unpack"> on compounds and iterating over the returned hash, the order of the compound members is generally not preserved due to the nature of hash tables. It is not even guaranteed that the order is the same between different runs of the same program. This can be very annoying if you simply use to dump your data structures and the compound members always show up in a different order. By setting C to a non-zero value, all hashes returned by L|/"unpack"> are tied to a class that preserves the order of the hash keys. This way, all compound members will be returned in the correct order just as they are defined in your C code. use Convert::Binary::C; use Data::Dumper; $c = Convert::Binary::C->new->parse(<<'ENDC'); struct test { char one; char two; struct { char never; char change; char this; char order; } three; char four; }; ENDC $data = "Convert"; $u1 = $c->unpack('test', $data); $c->OrderMembers(1); $u2 = $c->unpack('test', $data); print Data::Dumper->Dump([$u1, $u2], [qw(u1 u2)]); This will print something like: $u1 = { 'one' => 67, 'two' => 111, 'three' => { 'never' => 110, 'change' => 118, 'this' => 101, 'order' => 114 }, 'four' => 116 }; $u2 = { 'one' => 67, 'two' => 111, 'three' => { 'never' => 110, 'change' => 118, 'this' => 101, 'order' => 114 }, 'four' => 116 }; To be able to use this option, you have to install one of the following modules: L, L or L. If more than one of these modules is installed, Convert::Binary::C will use them in that order of preference. When using this option, you should keep in mind that tied hashes are significantly slower and consume more memory than ordinary hashes, even when the class they're tied to is implemented efficiently. So don't turn this option on if you don't have to. You can also influence hash member ordering by using the L|/"CBC_ORDER_MEMBERS"> environment variable. =item C =E { OPTION =E VALUE, ... } Use this option to specify and configure a bitfield layouting engine. You can choose an engine by passing its name to the C option, like: $c->configure(Bitfields => { Engine => 'Generic' }); Each engine can have its own set of options, although currently none of them does. You can choose between the following bitfield engines: =over 4 =item C This engine implements the behaviour of most UNIX C compilers, including GCC. It does not handle packed bitfields yet. =item C This engine implements the behaviour of Microsoft's C compiler. It should be fairly complete and can handle packed bitfields. =item C This engine is only used for testing the bitfield infrastructure in Convert::Binary::C. There's usually no reason to use it. =back =back You can reconfigure all options even after you have parsed some code. The changes will be applied to the already parsed definitions. This works as long as array lengths are not affected by the changes. If you have Alignment and IntSize set to 4 and parse code like this typedef struct { char abc; int day; } foo; struct bar { foo zap[2*sizeof(foo)]; }; the array C in C will obviously have 16 elements. If you reconfigure the alignment to 1 now, the size of C is now 5 instead of 8. While the alignment is adjusted correctly, the number of elements in array C will still be 16 and will not be changed to 10. =back =head2 parse =over 8 =item C CODE Parses a string of valid C code. All enumeration, compound and type definitions are extracted. You can call the L|/"parse"> and L|/"parse_file"> methods as often as you like to add further definitions to the Convert::Binary::C object. L|/"parse"> will throw an exception if an error occurs. On success, the method returns a reference to its object. See L<"Parsing C code"> for an example. =back =head2 parse_file =over 8 =item C FILE Parses a C source file. All enumeration, compound and type definitions are extracted. You can call the L|/"parse"> and L|/"parse_file"> methods as often as you like to add further definitions to the Convert::Binary::C object. L|/"parse_file"> will search the include path given via the C option for the file if it cannot find it in the current directory. L|/"parse_file"> will throw an exception if an error occurs. On success, the method returns a reference to its object. See L<"Parsing C code"> for an example. When calling L|/"parse"> or L|/"parse_file"> multiple times, you may use types previously defined, but you are not allowed to redefine types. The state of the preprocessor is also saved, so you may also use defines from a previous parse. This works only as long as the preprocessor is not reset. See L<"Preprocessor configuration"> for details. When you're parsing C source files instead of C header files, note that local definitions are ignored. This means that type definitions hidden within functions will not be recognized by Convert::Binary::C. This is necessary because different functions (even different blocks within the same function) can define types with the same name: void my_func(int i) { if (i < 10) { enum digit { ONE, TWO, THREE } x = ONE; printf("%d, %d\n", i, x); } else { enum digit { THREE, TWO, ONE } x = ONE; printf("%d, %d\n", i, x); } } The above is a valid piece of C code, but it's not possible for Convert::Binary::C to distinguish between the different definitions of C, as they're only defined locally within the corresponding block. =back =head2 clean =over 8 =item C Clears all information that has been collected during previous calls to L|/"parse"> or L|/"parse_file">. You can use this method if you want to parse some entirely different code, but with the same configuration. The L|/"clean"> method returns a reference to its object. =back =head2 clone =over 8 =item C Makes the object return an exact independent copy of itself. $c = Convert::Binary::C->new(Include => ['/usr/include']); $c->parse_file('definitions.c'); $clone = $c->clone; The above code is technically equivalent (Mostly. Actually, using L|/"sourcify"> and L|/"parse"> might alter the order of the parsed data, which would make methods such as L|/"compound"> return the definitions in a different order.) to: $c = Convert::Binary::C->new(Include => ['/usr/include']); $c->parse_file('definitions.c'); $clone = Convert::Binary::C->new(%{$c->configure}); $clone->parse($c->sourcify); Using L|/"clone"> is just a lot faster. =back =head2 def =over 8 =item C NAME =item C TYPE If you need to know if a definition for a certain type name exists, use this method. You pass it the name of an enum, struct, union or typedef, and it will return a non-empty string being either C<"enum">, C<"struct">, C<"union">, or C<"typedef"> if there's a definition for the type in question, an empty string if there's no such definition, or C if the name is completely unknown. If the type can be interpreted as a basic type, C<"basic"> will be returned. If you pass in a L, the output will be slightly different. If the specified member exists, the L|/"def"> method will return C<"member">. If the member doesn't exist, or if the type cannot have members, the empty string will be returned. Again, if the name of the type is completely unknown, C will be returned. This may be useful if you want to check if a certain member exists within a compound, for example. use Convert::Binary::C; my $c = Convert::Binary::C->new->parse(<<'ENDC'); typedef struct __not not; typedef struct __not *ptr; struct foo { enum bar *xxx; }; typedef int quad[4]; ENDC for my $type (qw( not ptr foo bar xxx foo.xxx foo.abc xxx.yyy quad quad[3] quad[5] quad[-3] short[1] ), 'unsigned long') { my $def = $c->def($type); printf "%-14s => %s\n", $type, defined $def ? "'$def'" : 'undef'; } The following would be returned by the L|/"def"> method: not => '' ptr => 'typedef' foo => 'struct' bar => '' xxx => undef foo.xxx => 'member' foo.abc => '' xxx.yyy => undef quad => 'typedef' quad[3] => 'member' quad[5] => 'member' quad[-3] => 'member' short[1] => undef unsigned long => 'basic' So, if L|/"def"> returns a non-empty string, you can safely use any other method with that type's name or with that member expression. Concerning arrays, note that the index into an array doesn't need to be within the bounds of the array's definition, just like in C. In the above example, C and C are valid members of the C array, even though it is declared to have only four elements. In cases where the typedef namespace overlaps with the namespace of enums/structs/unions, the L|/"def"> method will give preference to the typedef and will thus return the string C<"typedef">. You could however force interpretation as an enum, struct or union by putting C<"enum">, C<"struct"> or C<"union"> in front of the type's name. =back =head2 defined =over 8 =item C MACRO You can use the L|/"defined"> method to find out if a certain macro is defined, just like you would use the C operator of the preprocessor. For example, the following code use Convert::Binary::C; my $c = Convert::Binary::C->new->parse(<<'ENDC'); #define ADD(a, b) ((a) + (b)) #if 1 # define DEFINED #else # define UNDEFINED #endif ENDC for my $macro (qw( ADD DEFINED UNDEFINED )) { my $not = $c->defined($macro) ? '' : ' not'; print "Macro '$macro' is$not defined.\n"; } would print: Macro 'ADD' is defined. Macro 'DEFINED' is defined. Macro 'UNDEFINED' is not defined. You have to keep in mind that this works only as long as the preprocessor is not reset. See L<"Preprocessor configuration"> for details. =back =head2 pack =over 8 =item C TYPE =item C TYPE, DATA =item C TYPE, DATA, STRING Use this method to pack a complex data structure into a binary string according to a type definition that has been previously parsed. DATA must be a scalar matching the type definition. C structures and unions are represented by references to Perl hashes, C arrays by references to Perl arrays. use Convert::Binary::C; use Data::Dumper; use Data::Hexdumper; $c = Convert::Binary::C->new( ByteOrder => 'BigEndian' , LongSize => 4 , ShortSize => 2 ) ->parse(<<'ENDC'); struct test { char ary[3]; union { short word[2]; long quad; } uni; }; ENDC Hashes don't have to contain a key for each compound member and arrays may be truncated: $binary = $c->pack('test', { ary => [1, 2], uni => { quad => 42 } }); Elements not defined in the Perl data structure will be set to zero in the packed byte string. If you pass C as or simply omit the second parameter, the whole string will be initialized with zero bytes. On success, the packed byte string is returned. print hexdump(data => $binary); The above code would print: 0x0000 : 01 02 00 00 00 00 2A : ......* You could also use L|/"unpack"> and dump the data structure. $unpacked = $c->unpack('test', $binary); print Data::Dumper->Dump([$unpacked], ['unpacked']); This would print: $unpacked = { 'ary' => [ 1, 2, 0 ], 'uni' => { 'word' => [ 0, 42 ], 'quad' => 42 } }; If L refers to a compound object, you may pack any member of that compound object. Simply add a L to the type name, just as you would access the member in C: $array = $c->pack('test.ary', [1, 2, 3]); print hexdump(data => $array); $value = $c->pack('test.uni.word[1]', 2); print hexdump(data => $value); This would give you: 0x0000 : 01 02 03 : ... 0x0000 : 00 02 : .. Call L|/"pack"> with the optional STRING argument if you want to use an existing binary string to insert the data. If called in a void context, L|/"pack"> will directly modify the string you passed as the third argument. Otherwise, a copy of the string is created, and L|/"pack"> will modify and return the copy, so the original string will remain unchanged. The 3-argument version may be useful if you want to change only a few members of a complex data structure without having to L|/"unpack"> everything, change the members, and then L|/"pack"> again (which could waste lots of memory and CPU cycles). So, instead of doing something like $test = $c->unpack('test', $binary); $test->{uni}{quad} = 4711; $new = $c->pack('test', $test); to change the C member of C<$packed>, you could simply do either $new = $c->pack('test', { uni => { quad => 4711 } }, $binary); or $c->pack('test', { uni => { quad => 4711 } }, $binary); while the latter would directly modify C<$packed>. Besides this code being a lot shorter (and perhaps even more readable), it can be significantly faster if you're dealing with really big data blocks. If the length of the input string is less than the size required by the type, the string (or its copy) is extended and the extended part is initialized to zero. If the length is more than the size required by the type, the string is kept at that length, and also a copy would be an exact copy of that string. $too_short = pack "C*", (1 .. 4); $too_long = pack "C*", (1 .. 20); $c->pack('test', { uni => { quad => 0x4711 } }, $too_short); print "too_short:\n", hexdump(data => $too_short); $copy = $c->pack('test', { uni => { quad => 0x4711 } }, $too_long); print "\ncopy:\n", hexdump(data => $copy); This would print: too_short: 0x0000 : 01 02 03 00 00 47 11 : .....G. copy: 0x0000 : 01 02 03 00 00 47 11 08 09 0A 0B 0C 0D 0E 0F 10 : .....G.......... 0x0010 : 11 12 13 14 : .... =back =head2 unpack =over 8 =item C TYPE, STRING Use this method to unpack a binary string and create an arbitrarily complex Perl data structure based on a previously parsed type definition. use Convert::Binary::C; use Data::Dumper; $c = Convert::Binary::C->new( ByteOrder => 'BigEndian' , LongSize => 4 , ShortSize => 2 ) ->parse( <<'ENDC' ); struct test { char ary[3]; union { short word[2]; long *quad; } uni; }; ENDC # Generate some binary dummy data $binary = pack "C*", 1 .. $c->sizeof('test'); On failure, e.g. if the specified type cannot be found, the method will throw an exception. On success, a reference to a complex Perl data structure is returned, which can directly be dumped using the L module: $unpacked = $c->unpack('test', $binary); print Dumper($unpacked); This would print: $VAR1 = { 'ary' => [ 1, 2, 3 ], 'uni' => { 'word' => [ 1029, 1543 ], 'quad' => '289644378304612875' } }; If L refers to a compound object, you may unpack any member of that compound object. Simply add a L to the type name, just as you would access the member in C: $binary2 = substr $binary, $c->offsetof('test', 'uni.word'); $unpack1 = $unpacked->{uni}{word}; $unpack2 = $c->unpack('test.uni.word', $binary2); print Data::Dumper->Dump([$unpack1, $unpack2], [qw(unpack1 unpack2)]); You will find that the output is exactly the same for both C<$unpack1> and C<$unpack2>: $unpack1 = [ 1029, 1543 ]; $unpack2 = [ 1029, 1543 ]; When L|/"unpack"> is called in list context, it will unpack as many elements as possible from STRING, including zero if STRING is not long enough. =back =head2 initializer =over 8 =item C TYPE =item C TYPE, DATA The L|/"initializer"> method can be used retrieve an initializer string for a certain L. This can be useful if you have to initialize only a couple of members in a huge compound type or if you simply want to generate initializers automatically. struct date { unsigned year : 12; unsigned month: 4; unsigned day : 5; unsigned hour : 5; unsigned min : 6; }; typedef struct { enum { DATE, QWORD } type; short number; union { struct date date; unsigned long qword; } choice; } data; Given the above code has been parsed $init = $c->initializer('data'); print "data x = $init;\n"; would print the following: data x = { 0, 0, { { 0, 0, 0, 0, 0 } } }; You could directly put that into a C program, although it probably isn't very useful yet. It becomes more useful if you actually specify how you want to initialize the type: $data = { type => 'QWORD', choice => { date => { month => 12, day => 24 }, qword => 4711, }, stuff => 'yes?', }; $init = $c->initializer('data', $data); print "data x = $init;\n"; This would print the following: data x = { QWORD, 0, { { 0, 12, 24, 0, 0 } } }; As only the first member of a C can be initialized, C is ignored. You will not be warned about the fact that you probably tried to initialize a member other than the first. This is considered a feature, because it allows you to use L|/"unpack"> to generate the initializer data: $data = $c->unpack('data', $binary); $init = $c->initializer('data', $data); Since L|/"unpack"> unpacks all union members, you would otherwise have to delete all but the first one previous to feeding it into L|/"initializer">. Also, C is ignored, because it actually isn't a member of C. You won't be warned about that either. =back =head2 sizeof =over 8 =item C TYPE This method will return the size of a C type in bytes. If it cannot find the type, it will throw an exception. If the type defines some kind of compound object, you may ask for the size of a L of that compound object: $size = $c->sizeof('test.uni.word[1]'); This would set C<$size> to C<2>. =back =head2 typeof =over 8 =item C TYPE This method will return the type of a C member. While this only makes sense for compound types, it's legal to also use it for non-compound types. If it cannot find the type, it will throw an exception. The L|/"typeof"> method can be used on any valid L, even on arrays or unnamed types. It will always return a string that holds the name (or in case of unnamed types only the class) of the type, optionally followed by a C<'*'> character to indicate it's a pointer type, and optionally followed by one or more array dimensions if it's an array type. If the type is a bitfield, the type name is followed by a colon and the number of bits. struct test { char ary[3]; union { short word[2]; long *quad; } uni; struct { unsigned short six:6; unsigned short ten:10; } bits; }; Given the above C code has been parsed, calls to L|/"typeof"> would return the following values: $c->typeof('test') => 'struct test' $c->typeof('test.ary') => 'char [3]' $c->typeof('test.uni') => 'union' $c->typeof('test.uni.quad') => 'long *' $c->typeof('test.uni.word') => 'short [2]' $c->typeof('test.uni.word[1]') => 'short' $c->typeof('test.bits') => 'struct' $c->typeof('test.bits.six') => 'unsigned short :6' $c->typeof('test.bits.ten') => 'unsigned short :10' =back =head2 offsetof =over 8 =item C TYPE, MEMBER You can use L|/"offsetof"> just like the C macro of same denominator. It will simply return the offset (in bytes) of L relative to L. use Convert::Binary::C; $c = Convert::Binary::C->new( Alignment => 4 , LongSize => 4 , PointerSize => 4 ) ->parse(<<'ENDC'); typedef struct { char abc; long day; int *ptr; } week; struct test { week zap[8]; }; ENDC @args = ( ['test', 'zap[5].day' ], ['test.zap[2]', 'day' ], ['test', 'zap[5].day+1'], ['test', 'zap[-3].ptr' ], ); for (@args) { my $offset = eval { $c->offsetof(@$_) }; printf "\$c->offsetof('%s', '%s') => $offset\n", @$_; } The final loop will print: $c->offsetof('test', 'zap[5].day') => 64 $c->offsetof('test.zap[2]', 'day') => 4 $c->offsetof('test', 'zap[5].day+1') => 65 $c->offsetof('test', 'zap[-3].ptr') => -28 =over 2 =item * The first iteration simply shows that the offset of C is 64 relative to the beginning of C. =item * You may additionally specify a member for the type passed as the first argument, as shown in the second iteration. =item * The L is also supported by L|/"offsetof">, so the third iteration will correctly print 65. =item * The last iteration demonstrates that even out-of-bounds array indices are handled correctly, just as they are handled in C. =back Unlike the C macro, L|/"offsetof"> also works on array types. $offset = $c->offsetof('test.zap', '[3].ptr+2'); print "offset = $offset"; This will print: offset = 46 If L is a compound, L may optionally be prefixed with a dot, so printf "offset = %d\n", $c->offsetof('week', 'day'); printf "offset = %d\n", $c->offsetof('week', '.day'); are both equivalent and will print offset = 4 offset = 4 This allows one to =over 2 =item * use the C macro style, without a leading dot, and =item * directly use the output of the L|/"member"> method, which includes a leading dot for compound types, as input for the L argument. =back =back =head2 member =over 8 =item C TYPE =item C TYPE, OFFSET You can think of L|/"member"> as being the reverse of the L|/"offsetof"> method. However, as this is more complex, there's no equivalent to L|/"member"> in the C language. Usually this method is used if you want to retrieve the name of the member that is located at a specific offset of a previously parsed type. use Convert::Binary::C; $c = Convert::Binary::C->new( Alignment => 4 , LongSize => 4 , PointerSize => 4 ) ->parse(<<'ENDC'); typedef struct { char abc; long day; int *ptr; } week; struct test { week zap[8]; }; ENDC for my $offset (24, 39, 69, 99) { print "\$c->member('test', $offset)"; my $member = eval { $c->member('test', $offset) }; print $@ ? "\n exception: $@" : " => '$member'\n"; } This will print: $c->member('test', 24) => '.zap[2].abc' $c->member('test', 39) => '.zap[3]+3' $c->member('test', 69) => '.zap[5].ptr+1' $c->member('test', 99) exception: Offset 99 out of range (0 <= offset < 96) =over 2 =item * The output of the first iteration is obvious. The member C is located at offset 24 of C. =item * In the second iteration, the offset points into a region of padding bytes and thus no member of C can be named. Instead of a member name the offset relative to C is appended. =item * In the third iteration, the offset points to C. However, C is located at 68, not at 69, and thus the remaining offset of 1 is also appended. =item * The last iteration causes an exception because the offset of 99 is not valid for C since the size of C is only 96. You might argue that this is inconsistent, since L|/"offsetof"> can also handle out-of-bounds array members. But as soon as you have more than one level of array nesting, there's an infinite number of out-of-bounds members for a single given offset, so it would be impossible to return a list of all members. =back You can additionally specify a member for the type passed as the first argument: $member = $c->member('test.zap[2]', 6); print $member; This will print: .day+2 Like L|/"offsetof">, L|/"member"> also works on array types: $member = $c->member('test.zap', 42); print $member; This will print: [3].day+2 While the behaviour for Cs is quite obvious, the behaviour for Cs is rather tricky. As a single offset usually references more than one member of a union, there are certain rules that the algorithm uses for determining the I member. =over 2 =item * The first non-compound member that is referenced without an offset has the highest priority. =item * If no member is referenced without an offset, the first non-compound member that is referenced with an offset will be returned. =item * Otherwise the first padding region that is encountered will be taken. =back As an example, given 4-byte-alignment and the union union choice { struct { char color[2]; long size; char taste; } apple; char grape[3]; struct { long weight; short price[3]; } melon; }; the L|/"member"> method would return what is shown in the I column of the following table. The I column shows the result of the L|/"typeof"> method when passing the corresponding member. Offset Member Type -------------------------------------- 0 .apple.color[0] 'char' 1 .apple.color[1] 'char' 2 .grape[2] 'char' 3 .melon.weight+3 'long' 4 .apple.size 'long' 5 .apple.size+1 'long' 6 .melon.price[1] 'short' 7 .apple.size+3 'long' 8 .apple.taste 'char' 9 .melon.price[2]+1 'short' 10 .apple+10 'struct' 11 .apple+11 'struct' It's like having a stack of all the union members and looking through the stack for the shiniest piece you can see. The beginning of a member (denoted by uppercase letters) is always shinier than the rest of a member, while padding regions (denoted by dashes) aren't shiny at all. Offset 0 1 2 3 4 5 6 7 8 9 10 11 ------------------------------------------------------- apple (C) (C) - - (S) (s) s (s) (T) - (-) (-) grape G G (G) melon W w w (w) P p (P) p P (p) - - If you look through that stack from top to bottom, you'll end up at the parenthesized members. Alternatively, if you're not only interested in the I member, you can call L|/"member"> in list context, which makes it return I members referenced by the given offset. Offset Member Type -------------------------------------- 0 .apple.color[0] 'char' .grape[0] 'char' .melon.weight 'long' 1 .apple.color[1] 'char' .grape[1] 'char' .melon.weight+1 'long' 2 .grape[2] 'char' .melon.weight+2 'long' .apple+2 'struct' 3 .melon.weight+3 'long' .apple+3 'struct' 4 .apple.size 'long' .melon.price[0] 'short' 5 .apple.size+1 'long' .melon.price[0]+1 'short' 6 .melon.price[1] 'short' .apple.size+2 'long' 7 .apple.size+3 'long' .melon.price[1]+1 'short' 8 .apple.taste 'char' .melon.price[2] 'short' 9 .melon.price[2]+1 'short' .apple+9 'struct' 10 .apple+10 'struct' .melon+10 'struct' 11 .apple+11 'struct' .melon+11 'struct' The first member returned is always the I member. The other members are sorted according to the rules given above. This means that members referenced without an offset are followed by members referenced with an offset. Padding regions will be at the end. If OFFSET is not given in the method call, L|/"member"> will return a list of I possible members of L. print "$_\n" for $c->member('choice'); This will print: .apple.color[0] .apple.color[1] .apple.size .apple.taste .grape[0] .grape[1] .grape[2] .melon.weight .melon.price[0] .melon.price[1] .melon.price[2] In scalar context, the number of possible members is returned. =back =head2 tag =over 8 =item C TYPE =item C TYPE, TAG =item C TYPE, TAG1 =E VALUE1, TAG2 =E VALUE2, ... The L|/"tag"> method can be used to tag properties to a L. It's a bit like having L|/"configure"> for individual types. See L<"USING TAGS"> for an example. Note that while you can tag whole types as well as compound members, it is not possible to tag array members, i.e. you cannot treat, for example, C and C differently. Also note that in code like this struct test { int a; struct { int x; } b, c; }; if you tag C, this will also tag C implicitly. It is also possible to tag basic types if you really want to do that, for example: $c->tag('int', Format => 'Binary'); To remove a tag from a type, you can either set that tag to C, for example $c->tag('test', Hooks => undef); or use L|/"untag">. To see if a tag is attached to a type or to get the value of a tag, pass only the type and tag name to L|/"tag">: $c->tag('test.a', Format => 'Binary'); $hooks = $c->tag('test.a', 'Hooks'); $format = $c->tag('test.a', 'Format'); This will give you: $hooks = undef; $format = 'Binary'; To see which tags are attached to a type, pass only the type. The L|/"tag"> method will now return a hash reference containing all tags attached to the type: $tags = $c->tag('test.a'); This will give you: $tags = { 'Format' => 'Binary' }; L|/"tag"> will throw an exception if an error occurs. If called as a 'set' method, it will return a reference to its object, allowing you to chain together consecutive method calls. Note that when a compound is inlined, tags attached to the inlined compound are ignored, for example: $c->parse(<tag($type, Hooks => { unpack => sub { print "unpack: $type\n"; @_ } }); } for my $type (qw( header message )) { print "[unpacking $type]\n"; $u = $c->unpack($type, $data); } This will print: [unpacking header] unpack: header.len unpack: header [unpacking message] unpack: header.len unpack: message As you can see from the above output, tags attached to members of inlined compounds (C are still handled. The following tags can be configured: =over 4 =item C =E 'Binary' | 'String' The C tag allows you to control the way binary data is converted by L|/"pack"> and L|/"unpack">. If you tag a C as C, it will not be converted at all, i.e. it will be passed through as a binary string. If you tag it as C, it will be treated like a null-terminated C string, i.e. L|/"unpack"> will convert the C string to a Perl string and vice versa. See L<"The Format Tag"> for an example. =item C =E 'BigEndian' | 'LittleEndian' The C tag allows you to explicitly set the byte order of a L. See L<"The ByteOrder Tag"> for an example. =item C =E '*' =item C =E VALUE =item C =E MEMBER =item C =E SUB =item C =E [ SUB, ARGS ] The C tag allows you to alter the size of an array dynamically. You can tag fixed size arrays as being flexible using C<'*'>. This is useful if you cannot use flexible array members in your source code. $c->tag('type.array', Dimension => '*'); You can also tag an array to have a fixed size different from the one it was originally declared with. $c->tag('type.array', Dimension => 42); If the array is a member of a compound, you can also tag it with to have a size corresponding to the value of another member in that compound. $c->tag('type.array', Dimension => 'count'); Finally, you can specify a subroutine that is called when the size of the array needs to be determined. $c->tag('type.array', Dimension => \&get_count); By default, and if the array is a compound member, that subroutine will be passed a reference to the hash storing the data for the compound. You can also instruct Convert::Binary::C to pass additional arguments to the subroutine by passing an array reference instead of the subroutine reference. This array contains the subroutine reference as well as a list of arguments. It is possible to define certain special arguments using the L|/"arg"> method. $c->tag('type.array', Dimension => [\&get_count, $c->arg('SELF'), 42]); See L<"The Dimension Tag"> for various examples. =item C =E { HOOK =E SUB, HOOK =E [ SUB, ARGS ], ... }, ... The C tag allows you to register subroutines as hooks. Hooks are called whenever a certain C is packed or unpacked. Hooks are currently considered an B feature. C can be one of the following: pack unpack pack_ptr unpack_ptr C and C hooks are called when processing their C, while C and C hooks are called when processing pointers to their C. C is a reference to a subroutine that usually takes one input argument, processes it and returns one output argument. Alternatively, you can pass a custom list of arguments to the hook by using an array reference instead of C that holds the subroutine reference in the first element and the arguments to be passed to the subroutine as the other elements. This way, you can even pass special arguments to the hook using the L|/"arg"> method. Here are a few examples for registering hooks: $c->tag('ObjectType', Hooks => { pack => \&obj_pack, unpack => \&obj_unpack }); $c->tag('ProtocolId', Hooks => { unpack => sub { $protos[$_[0]] } }); $c->tag('ProtocolId', Hooks => { unpack_ptr => [sub { sprintf "$_[0]:{0x%X}", $_[1] }, $c->arg('TYPE', 'DATA') ], }); Note that the above example registers both an C hook and an C hook for C with two separate calls to L|/"tag">. As long as you don't explicitly overwrite a previously registered hook, it won't be modified or removed by registering other hooks for the same C. To remove all registered hooks for a type, simply remove the C tag: $c->untag('ProtocolId', 'Hooks'); To remove only a single hook, pass C as C instead of a subroutine reference: $c->tag('ObjectType', Hooks => { pack => undef }); If all hooks are removed, the whole C tag is removed. See L<"The Hooks Tag"> for examples on how to use hooks. =back =back =head2 untag =over 8 =item C TYPE =item C TYPE, TAG1, TAG2, ... Use the L|/"untag"> method to remove one, more, or all tags from a type. If you don't pass any tag names, all tags attached to the type will be removed. Otherwise only the listed tags will be removed. See L<"USING TAGS"> for an example. =back =head2 arg =over 8 =item C 'ARG', ... Creates placeholders for special arguments to be passed to hooks or other subroutines. These arguments are currently: =over 4 =item C A reference to the calling Convert::Binary::C object. This may be useful if you need to work with the object inside the subroutine. =item C The name of the type that is currently being processed by the hook. =item C The data argument that is passed to the subroutine. =item C The type of the hook as which the subroutine has been called, for example C or C. =back L|/"arg"> will return a placeholder for each argument it is being passed. Note that not all arguments may be supported depending on the context of the subroutine. =back =head2 dependencies =over 8 =item C After some code has been parsed using either the L|/"parse"> or L|/"parse_file"> methods, the L|/"dependencies"> method can be used to retrieve information about all files that the object depends on, i.e. all files that have been parsed. In scalar context, the method returns a hash reference. Each key is the name of a file. The values are again hash references, each of which holds the size, modification time (mtime), and change time (ctime) of the file at the moment it was parsed. use Convert::Binary::C; use Data::Dumper; #---------------------------------------------------------- # Create object, set include path, parse 'string.h' header #---------------------------------------------------------- my $c = Convert::Binary::C->new ->Include('/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include', '/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include-fixed', '/usr/include') ->parse_file('string.h'); #---------------------------------------------------------- # Get dependencies of the object, extract dependency files #---------------------------------------------------------- my $depend = $c->dependencies; my @files = keys %$depend; #----------------------------- # Dump dependencies and files #----------------------------- print Data::Dumper->Dump([$depend, \@files], [qw( depend *files )]); The above code would print something like this: $depend = { '/usr/include/sys/cdefs.h' => { 'size' => 20051, 'mtime' => 1604969938, 'ctime' => 1604969964 }, '/usr/include/gnu/stubs-32.h' => { 'size' => 449, 'mtime' => 1604969908, 'ctime' => 1604969964 }, '/usr/include/bits/wordsize.h' => { 'size' => 442, 'mtime' => 1604969934, 'ctime' => 1604969964 }, '/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h' => { 'size' => 12959, 'mtime' => 1604974286, 'ctime' => 1604975398 }, '/usr/include/stdc-predef.h' => { 'size' => 2290, 'mtime' => 1604969927, 'ctime' => 1604969964 }, '/usr/include/string.h' => { 'size' => 18766, 'mtime' => 1604969936, 'ctime' => 1604969964 }, '/usr/include/bits/types/locale_t.h' => { 'size' => 983, 'mtime' => 1604969927, 'ctime' => 1604969964 }, '/usr/include/bits/long-double.h' => { 'size' => 970, 'mtime' => 1604969933, 'ctime' => 1604969964 }, '/usr/include/bits/libc-header-start.h' => { 'size' => 3288, 'mtime' => 1604969927, 'ctime' => 1604969964 }, '/usr/include/strings.h' => { 'size' => 4753, 'mtime' => 1604969936, 'ctime' => 1604969964 }, '/usr/include/gnu/stubs.h' => { 'size' => 384, 'mtime' => 1604969927, 'ctime' => 1604969964 }, '/usr/include/bits/types/__locale_t.h' => { 'size' => 1722, 'mtime' => 1604969927, 'ctime' => 1604969964 }, '/usr/include/features.h' => { 'size' => 17235, 'mtime' => 1604969927, 'ctime' => 1604969964 } }; @files = ( '/usr/include/sys/cdefs.h', '/usr/include/gnu/stubs-32.h', '/usr/include/bits/wordsize.h', '/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/include/stddef.h', '/usr/include/stdc-predef.h', '/usr/include/string.h', '/usr/include/bits/types/locale_t.h', '/usr/include/bits/long-double.h', '/usr/include/bits/libc-header-start.h', '/usr/include/strings.h', '/usr/include/gnu/stubs.h', '/usr/include/bits/types/__locale_t.h', '/usr/include/features.h' ); In list context, the method returns the names of all files that have been parsed, i.e. the following lines are equivalent: @files = keys %{$c->dependencies}; @files = $c->dependencies; =back =head2 sourcify =over 8 =item C =item C CONFIG Returns a string that holds the C source code necessary to represent all parsed C data structures. use Convert::Binary::C; $c = Convert::Binary::C->new; $c->parse(<<'END'); #define ADD(a, b) ((a) + (b)) #define NUMBER 42 typedef struct _mytype mytype; struct _mytype { union { int iCount; enum count *pCount; } counter; #pragma pack( push, 1 ) struct { char string[NUMBER]; int array[NUMBER/sizeof(int)]; } storage; #pragma pack( pop ) mytype *next; }; enum count { ZERO, ONE, TWO, THREE }; END print $c->sourcify; The above code would print something like this: /* typedef predeclarations */ typedef struct _mytype mytype; /* defined enums */ enum count { ZERO, ONE, TWO, THREE }; /* defined structs and unions */ struct _mytype { union { int iCount; enum count *pCount; } counter; #pragma pack(push, 1) struct { char string[42]; int array[10]; } storage; #pragma pack(pop) mytype *next; }; The purpose of the L|/"sourcify"> method is to enable some kind of platform-independent caching. The C code generated by L|/"sourcify"> can be parsed by any standard C compiler, as well as of course by the Convert::Binary::C parser. However, the code may be significantly shorter than the code that has originally been parsed. When parsing a typical header file, it's easily possible that you need to open dozens of other files that are included from that file, and end up parsing several hundred kilobytes of C code. Since most of it is usually preprocessor directives, function prototypes and comments, the L|/"sourcify"> function strips this down to a few kilobytes. Saving the L|/"sourcify"> string and parsing it next time instead of the original code may be a lot faster. The L|/"sourcify"> method takes a hash reference as an optional argument. It can be used to tweak the method's output. The following options can be configured. =over 4 =item C =E 0 | 1 Turns preprocessor context information on or off. If this is turned on, L|/"sourcify"> will insert C<#line> preprocessor directives in its output. So in the above example print $c->sourcify({ Context => 1 }); would print: /* typedef predeclarations */ typedef struct _mytype mytype; /* defined enums */ #line 21 "[buffer]" enum count { ZERO, ONE, TWO, THREE }; /* defined structs and unions */ #line 7 "[buffer]" struct _mytype { #line 8 "[buffer]" union { int iCount; enum count *pCount; } counter; #pragma pack(push, 1) #line 13 "[buffer]" struct { char string[42]; int array[10]; } storage; #pragma pack(pop) mytype *next; }; Note that C<"[buffer]"> refers to the here-doc buffer when using L|/"parse">. =item C =E 0 | 1 Turn this on if you want all the defined macros to be part of the source code output. Given the example code above print $c->sourcify({ Defines => 1 }); would print: /* typedef predeclarations */ typedef struct _mytype mytype; /* defined enums */ enum count { ZERO, ONE, TWO, THREE }; /* defined structs and unions */ struct _mytype { union { int iCount; enum count *pCount; } counter; #pragma pack(push, 1) struct { char string[42]; int array[10]; } storage; #pragma pack(pop) mytype *next; }; /* preprocessor defines */ #define ADD(a, b) ((a) + (b)) #define NUMBER 42 The macro definitions always appear at the end of the source code. The order of the macro definitions is undefined. =back =back The following methods can be used to retrieve information about the definitions that have been parsed. The examples given in the description for L|/"enum">, L|/"compound"> and L|/"typedef"> all assume this piece of C code has been parsed: #define ABC_SIZE 2 #define MULTIPLY(x, y) ((x)*(y)) #ifdef ABC_SIZE # define DEFINED #else # define NOT_DEFINED #endif typedef unsigned long U32; typedef void *any; enum __socket_type { SOCK_STREAM = 1, SOCK_DGRAM = 2, SOCK_RAW = 3, SOCK_RDM = 4, SOCK_SEQPACKET = 5, SOCK_PACKET = 10 }; struct STRUCT_SV { void *sv_any; U32 sv_refcnt; U32 sv_flags; }; typedef union { int abc[ABC_SIZE]; struct xxx { int a; int b; } ab[3][4]; any ptr; } test; =head2 enum_names =over 8 =item C Returns a list of identifiers of all defined enumeration objects. Enumeration objects don't necessarily have an identifier, so something like enum { A, B, C }; will obviously not appear in the list returned by the L|/"enum_names"> method. Also, enumerations that are not defined within the source code - like in struct foo { enum weekday *pWeekday; unsigned long year; }; where only a pointer to the C enumeration object is used - will not be returned, even though they have an identifier. So for the above two enumerations, L|/"enum_names"> will return an empty list: @names = $c->enum_names; The only way to retrieve a list of all enumeration identifiers is to use the L|/"enum"> method without additional arguments. You can get a list of all enumeration objects that have an identifier by using @enums = map { $_->{identifier} || () } $c->enum; but these may not have a definition. Thus, the two arrays would look like this: @names = (); @enums = ('weekday'); The L|/"def"> method returns a true value for all identifiers returned by L|/"enum_names">. =back =head2 enum =over 8 =item enum =item C LIST Returns a list of references to hashes containing detailed information about all enumerations that have been parsed. If a list of enumeration identifiers is passed to the method, the returned list will only contain hash references for those enumerations. The enumeration identifiers may optionally be prefixed by C. If an enumeration identifier cannot be found, the returned list will contain an undefined value at that position. In scalar context, the number of enumerations will be returned as long as the number of arguments to the method call is not 1. In the latter case, a hash reference holding information for the enumeration will be returned. The list returned by the L|/"enum"> method looks similar to this: @enum = ( { 'enumerators' => { 'SOCK_STREAM' => 1, 'SOCK_DGRAM' => 2, 'SOCK_PACKET' => 10, 'SOCK_SEQPACKET' => 5, 'SOCK_RDM' => 4, 'SOCK_RAW' => 3 }, 'identifier' => '__socket_type', 'size' => 4, 'sign' => 0, 'context' => 'definitions.c(13)' } ); =over 4 =item C holds the enumeration identifier. This key is not present if the enumeration has no identifier. =item C is the context in which the enumeration is defined. This is the filename followed by the line number in parentheses. =item C is a reference to a hash table that holds all enumerators of the enumeration. =item C is a boolean indicating if the enumeration is signed (i.e. has negative values). =back One useful application may be to create a hash table that holds all enumerators of all defined enumerations: %enum = map %{ $_->{enumerators} || {} }, $c->enum; The C<%enum> hash table would then be: %enum = ( 'SOCK_RDM' => 4, 'SOCK_SEQPACKET' => 5, 'SOCK_PACKET' => 10, 'SOCK_STREAM' => 1, 'SOCK_DGRAM' => 2, 'SOCK_RAW' => 3 ); =back =head2 compound_names =over 8 =item C Returns a list of identifiers of all structs and unions (compound data structures) that are defined in the parsed source code. Like enumerations, compounds don't need to have an identifier, nor do they need to be defined. Again, the only way to retrieve information about all struct and union objects is to use the L|/"compound"> method and don't pass it any arguments. If you should need a list of all struct and union identifiers, you can use: @compound = map { $_->{identifier} || () } $c->compound; The L|/"def"> method returns a true value for all identifiers returned by L|"compound_names">. If you need the names of only the structs or only the unions, use the L|/"struct_names"> and L|/"union_names"> methods respectively. =back =head2 compound =over 8 =item C =item C LIST Returns a list of references to hashes containing detailed information about all compounds (structs and unions) that have been parsed. If a list of struct/union identifiers is passed to the method, the returned list will only contain hash references for those compounds. The identifiers may optionally be prefixed by C or C, which limits the search to the specified kind of compound. If an identifier cannot be found, the returned list will contain an undefined value at that position. In scalar context, the number of compounds will be returned as long as the number of arguments to the method call is not 1. In the latter case, a hash reference holding information for the compound will be returned. The list returned by the L|/"compound"> method looks similar to this: @compound = ( { 'identifier' => 'STRUCT_SV', 'align' => 1, 'declarations' => [ { 'type' => 'void', 'declarators' => [ { 'size' => 8, 'offset' => 0, 'declarator' => '*sv_any' } ] }, { 'type' => 'U32', 'declarators' => [ { 'size' => 8, 'offset' => 8, 'declarator' => 'sv_refcnt' } ] }, { 'type' => 'U32', 'declarators' => [ { 'size' => 8, 'offset' => 16, 'declarator' => 'sv_flags' } ] } ], 'type' => 'struct', 'size' => 24, 'context' => 'definitions.c(23)', 'pack' => 0 }, { 'identifier' => 'xxx', 'align' => 1, 'declarations' => [ { 'type' => 'int', 'declarators' => [ { 'size' => 4, 'offset' => 0, 'declarator' => 'a' } ] }, { 'type' => 'int', 'declarators' => [ { 'size' => 4, 'offset' => 4, 'declarator' => 'b' } ] } ], 'type' => 'struct', 'size' => 8, 'context' => 'definitions.c(31)', 'pack' => 0 }, { 'align' => 1, 'declarations' => [ { 'type' => 'int', 'declarators' => [ { 'size' => 8, 'offset' => 0, 'declarator' => 'abc[2]' } ] }, { 'type' => 'struct xxx', 'declarators' => [ { 'size' => 96, 'offset' => 0, 'declarator' => 'ab[3][4]' } ] }, { 'type' => 'any', 'declarators' => [ { 'size' => 8, 'offset' => 0, 'declarator' => 'ptr' } ] } ], 'type' => 'union', 'size' => 96, 'context' => 'definitions.c(29)', 'pack' => 0 } ); =over 4 =item C holds the struct or union identifier. This key is not present if the compound has no identifier. =item C is the context in which the struct or union is defined. This is the filename followed by the line number in parentheses. =item C is either 'struct' or 'union'. =item C is the size of the struct or union. =item C is the alignment of the struct or union. =item C is the struct member alignment if the compound is packed, or zero otherwise. =item C is an array of hash references describing each struct declaration: =over 4 =item C is the type of the struct declaration. This may be a string or a reference to a hash describing the type. =item C is an array of hashes describing each declarator: =over 4 =item C is a string representation of the declarator. =item C is the offset of the struct member represented by the current declarator relative to the beginning of the struct or union. =item C is the size occupied by the struct member represented by the current declarator. =back =back =back It may be useful to have separate lists for structs and unions. One way to retrieve such lists would be to use push @{$_->{type} eq 'union' ? \@unions : \@structs}, $_ for $c->compound; However, you should use the L|/"struct"> and L|/"union"> methods, which is a lot simpler: @structs = $c->struct; @unions = $c->union; =back =head2 struct_names =over 8 =item C Returns a list of all defined struct identifiers. This is equivalent to calling L|"compound_names">, just that it only returns the names of the struct identifiers and doesn't return the names of the union identifiers. =back =head2 struct =over 8 =item C =item C LIST Like the L|/"compound"> method, but only allows for structs. =back =head2 union_names =over 8 =item C Returns a list of all defined union identifiers. This is equivalent to calling L|"compound_names">, just that it only returns the names of the union identifiers and doesn't return the names of the struct identifiers. =back =head2 union =over 8 =item C =item C LIST Like the L|/"compound"> method, but only allows for unions. =back =head2 typedef_names =over 8 =item C Returns a list of all defined typedef identifiers. Typedefs that do not specify a type that you could actually work with will not be returned. The L|/"def"> method returns a true value for all identifiers returned by L|/"typedef_names">. =back =head2 typedef =over 8 =item C =item C LIST Returns a list of references to hashes containing detailed information about all typedefs that have been parsed. If a list of typedef identifiers is passed to the method, the returned list will only contain hash references for those typedefs. If an identifier cannot be found, the returned list will contain an undefined value at that position. In scalar context, the number of typedefs will be returned as long as the number of arguments to the method call is not 1. In the latter case, a hash reference holding information for the typedef will be returned. The list returned by the L|/"typedef"> method looks similar to this: @typedef = ( { 'type' => 'unsigned long', 'declarator' => 'U32' }, { 'type' => 'void', 'declarator' => '*any' }, { 'type' => { 'align' => 1, 'declarations' => [ { 'type' => 'int', 'declarators' => [ { 'size' => 8, 'offset' => 0, 'declarator' => 'abc[2]' } ] }, { 'type' => 'struct xxx', 'declarators' => [ { 'size' => 96, 'offset' => 0, 'declarator' => 'ab[3][4]' } ] }, { 'type' => 'any', 'declarators' => [ { 'size' => 8, 'offset' => 0, 'declarator' => 'ptr' } ] } ], 'type' => 'union', 'size' => 96, 'context' => 'definitions.c(29)', 'pack' => 0 }, 'declarator' => 'test' } ); =over 4 =item C is the type declarator. =item C is the type specification. This may be a string or a reference to a hash describing the type. See L|/"enum"> and L|/"compound"> for a description on how to interpret this hash. =back =back =head2 macro_names =over 8 =item C Returns a list of all defined macro names. The list returned by the L|/"macro_names"> method looks similar to this: @macro_names = ( '__STDC_VERSION__', '__STDC_HOSTED__', 'DEFINED', 'MULTIPLY', 'ABC_SIZE' ); This works only as long as the preprocessor is not reset. See L<"Preprocessor configuration"> for details. =back =head2 macro =over 8 =item C =item C LIST Returns the definitions for all defined macros. If a list of macro names is passed to the method, the returned list will only contain the definitions for those macros. For undefined macros, C will be returned. The list returned by the L|/"macro"> method looks similar to this: @macro = ( '__STDC_VERSION__ 199901L', '__STDC_HOSTED__ 1', 'DEFINED', 'MULTIPLY(x, y) ((x)*(y))', 'ABC_SIZE 2' ); This works only as long as the preprocessor is not reset. See L<"Preprocessor configuration"> for details. =back =head1 FUNCTIONS You can alternatively call the following functions as methods on Convert::Binary::C objects. =head2 feature =over 8 =item C STRING Checks if Convert::Binary::C was built with certain features. For example, print "debugging version" if Convert::Binary::C::feature('debug'); will check if Convert::Binary::C was built with debugging support enabled. The C function returns C<1> if the feature is enabled, C<0> if the feature is disabled, and C if the feature is unknown. Currently the only features that can be checked are C and C. You can enable or disable certain features at compile time of the module by using the perl Makefile.PL enable-feature disable-feature syntax. =back =head2 native =over 8 =item C =item C STRING Returns the value of a property of the native system that Convert::Binary::C was built on. For example, $size = Convert::Binary::C::native('IntSize'); will fetch the size of an C on the native system. The following properties can be queried: Alignment ByteOrder CharSize CompoundAlignment DoubleSize EnumSize FloatSize HostedC IntSize LongDoubleSize LongLongSize LongSize PointerSize ShortSize StdCVersion UnsignedBitfields UnsignedChars You can also call L|/"native"> without arguments, in which case it will return a reference to a hash with all properties, like: $native = { 'EnumSize' => 4, 'ShortSize' => 2, 'UnsignedChars' => 0, 'IntSize' => 4, 'LongDoubleSize' => 16, 'StdCVersion' => 201710, 'HostedC' => 1, 'CompoundAlignment' => 1, 'UnsignedBitfields' => 0, 'DoubleSize' => 8, 'Alignment' => 16, 'PointerSize' => 8, 'ByteOrder' => 'LittleEndian', 'LongLongSize' => 8, 'CharSize' => 1, 'LongSize' => 8, 'FloatSize' => 4 }; The contents of that hash are suitable for passing them to the L|/"configure"> method. =back =head1 DEBUGGING Like perl itself, Convert::Binary::C can be compiled with debugging support that can then be selectively enabled at runtime. You can specify whether you like to build Convert::Binary::C with debugging support or not by explicitly giving an argument to F. Use perl Makefile.PL enable-debug to enable debugging, or perl Makefile.PL disable-debug to disable debugging. The default will depend on how your perl binary was built. If it was built with C<-DDEBUGGING>, Convert::Binary::C will be built with debugging support, too. Once you have built Convert::Binary::C with debugging support, you can use the following syntax to enable debug output. Instead of use Convert::Binary::C; you simply say use Convert::Binary::C debug => 'all'; which will enable all debug output. However, I don't recommend to enable all debug output, because that can be a fairly large amount. =head2 Debugging options Instead of saying C, you can pass a string that consists of one or more of the following characters: m enable memory allocation tracing M enable memory allocation & assertion tracing h enable hash table debugging H enable hash table dumps d enable debug output from the XS module c enable debug output from the ctlib t enable debug output about type objects l enable debug output from the C lexer p enable debug output from the C parser P enable debug output from the C preprocessor r enable debug output from the #pragma parser y enable debug output from yacc (bison) So the following might give you a brief overview of what's going on inside Convert::Binary::C: use Convert::Binary::C debug => 'dct'; When you want to debug memory allocation using use Convert::Binary::C debug => 'm'; you can use the Perl script F that resides in the F directory to extract statistics about memory usage and information about memory leaks from the resulting debug output. =head2 Redirecting debug output By default, all debug output is written to C. You can, however, redirect the debug output to a file with the C option: use Convert::Binary::C debug => 'dcthHm', debugfile => './debug.out'; If the file cannot be opened, you'll receive a warning and the output will go the C way again. Alternatively, you can use the environment variables L|/"CBC_DEBUG_OPT"> and L|/"CBC_DEBUG_FILE"> to turn on debug output. If Convert::Binary::C is built without debugging support, passing the C or C options will cause a warning to be issued. The corresponding environment variables will simply be ignored. =head1 ENVIRONMENT =head2 C Setting this variable to a non-zero value will globally turn on hash key ordering for compound members. Have a look at the C option for details. Setting the variable to the name of a perl module will additionally use this module instead of the predefined modules for member ordering to tie the hashes to. =head2 C If Convert::Binary::C is built with debugging support, you can use this variable to specify the L. =head2 C If Convert::Binary::C is built with debugging support, you can use this variable to L the debug output to a file. =head2 C This variable is intended purely for development. Setting it to a non-zero value disables the Convert::Binary::C parser, which means that no information is collected from the file or code that is parsed. However, the preprocessor will run, which is useful for benchmarking the preprocessor. =head1 FLEXIBLE ARRAY MEMBERS AND INCOMPLETE TYPES Flexible array members are a feature introduced with ISO-C99. It's a common problem that you have a variable length data field at the end of a structure, for example an array of characters at the end of a message struct. ISO-C99 allows you to write this as: struct message { long header; char data[]; }; The advantage is that you clearly indicate that the size of the appended data is variable, and that the C member doesn't contribute to the size of the C structure. When packing or unpacking data, Convert::Binary::C deals with flexible array members as if their length was adjustable. For example, L|/"unpack"> will adapt the length of the array depending on the input string: $msg1 = $c->unpack('message', 'abcdefg'); $msg2 = $c->unpack('message', 'abcdefghijkl'); The following data is unpacked: $msg1 = { 'header' => 1633837924, 'data' => [ 101, 102, 103 ] }; $msg2 = { 'header' => 1633837924, 'data' => [ 101, 102, 103, 104, 105, 106, 107, 108 ] }; Similarly, pack will adjust the length of the output string according to the data you feed in: use Data::Hexdumper; $msg = { header => 4711, data => [0x10, 0x20, 0x30, 0x40, 0x77..0x88], }; $data = $c->pack('message', $msg); print hexdump(data => $data); This would print: 0x0000 : 00 00 12 67 10 20 30 40 77 78 79 7A 7B 7C 7D 7E : ...g..0@wxyz{|}~ 0x0010 : 7F 80 81 82 83 84 85 86 87 88 : .......... Incomplete types such as typedef unsigned long array[]; are handled in exactly the same way. Thus, you can easily $array = $c->unpack('array', '?'x20); which will unpack the following array: $array = [ 1061109567, 1061109567, 1061109567, 1061109567, 1061109567 ]; You can also alter the length of an array using the L|/"The Dimension Tag"> tag. =head1 FLOATING POINT VALUES When using Convert::Binary::C to handle floating point values, you have to be aware of some limitations. You're usually safe if all your platforms are using the IEEE floating point format. During the Convert::Binary::C build process, the C feature will automatically be enabled if the host is using IEEE floating point. You can check for this feature at runtime using the L|/"feature"> function: if (Convert::Binary::C::feature('ieeefp')) { # do something } When IEEE floating point support is enabled, the module can also handle floating point values of a different byteorder. If your host platform is not using IEEE floating point, the C feature will be disabled. Convert::Binary::C then will be more restrictive, refusing to handle any non-native floating point values. However, Convert::Binary::C cannot detect the floating point format used by your target platform. It can only try to prevent problems in obvious cases. If you know your target platform has a completely different floating point format, don't use floating point conversion at all. Whenever Convert::Binary::C detects that it cannot properly do floating point value conversion, it will issue a warning and will not attempt to convert the floating point value. =head1 BITFIELDS Bitfield support in Convert::Binary::C is currently in an B state. You are encouraged to test it, but you should not blindly rely on its results. You are also encouraged to supply layouting algorithms for compilers whose bitfield implementation is not handled correctly at the moment. Even better that the plain algorithm is of course a patch that adds a new bitfield layouting engine. While bitfields may not be handled correctly by the conversion routines yet, they are always parsed correctly. This means that you can reliably use the declarator fields as returned by the L|/"struct"> or L|/"typedef"> methods. Given the following source struct bitfield { int seven:7; int :1; int four:4, :0; int integer; }; a call to L|/"struct"> will return @struct = ( { 'identifier' => 'bitfield', 'align' => 1, 'declarations' => [ { 'type' => 'int', 'declarators' => [ { 'declarator' => 'seven:7' } ] }, { 'type' => 'int', 'declarators' => [ { 'declarator' => ':1' } ] }, { 'type' => 'int', 'declarators' => [ { 'declarator' => 'four:4' }, { 'declarator' => ':0' } ] }, { 'type' => 'int', 'declarators' => [ { 'size' => 4, 'offset' => 4, 'declarator' => 'integer' } ] } ], 'type' => 'struct', 'size' => 8, 'context' => 'bitfields.c(1)', 'pack' => 0 } ); No size/offset keys will currently be returned for bitfield entries. =head1 MULTITHREADING Convert::Binary::C was designed to be thread-safe. =head1 INHERITANCE If you wish to derive a new class from Convert::Binary::C, this is relatively easy. Despite their XS implementation, Convert::Binary::C objects are actually blessed hash references. The XS data is stored in a read-only hash value for the key that is the empty string. So it is safe to use any non-empty hash key when deriving your own class. In addition, Convert::Binary::C does quite a lot of checks to detect corruption in the object hash. If you store private data in the hash, you should override the C method and provide the necessary code to clone your private data. You'll have to call C, but this will only clone the Convert::Binary::C part of the object. For an example of a derived class, you can have a look at Convert::Binary::C::Cached. =head1 PORTABILITY Convert::Binary::C should build and run on most of the platforms that Perl runs on: =over 4 =item * Various Linux systems =item * Various BSD systems =item * HP-UX =item * Compaq/HP Tru64 Unix =item * Mac-OS X =item * Cygwin =item * Windows 98/NT/2000/XP =back Also, many architectures are supported: =over 4 =item * Various Intel Pentium and Itanium systems =item * Various Alpha systems =item * HP PA-RISC =item * Power-PC =item * StrongARM =back The module should build with any perl binary from 5.004 up to the latest development version. =head1 COMPARISON WITH SIMILAR MODULES Most of the time when you're really looking for Convert::Binary::C you'll actually end up finding one of the following modules. Some of them have different goals, so it's probably worth pointing out the differences. =head2 C::Include Like Convert::Binary::C, this module aims at doing conversion from and to binary data based on C types. However, its configurability is very limited compared to Convert::Binary::C. Also, it does not parse all C code correctly. It's slower than Convert::Binary::C, doesn't have a preprocessor. On the plus side, it's written in pure Perl. =head2 C::DynaLib::Struct This module doesn't allow you to reuse your C source code. One main goal of Convert::Binary::C was to avoid code duplication or, even worse, having to maintain different representations of your data structures. Like C::Include, C::DynaLib::Struct is rather limited in its configurability. =head2 Win32::API::Struct This module has a special purpose. It aims at building structs for interfacing Perl code with Windows API code. =head1 CREDITS =over 2 =item * Alain Barbet Ealian@cpan.orgE for testing and debugging support. =item * Mitchell N. Charity for giving me pointers into various interesting directions. =item * Alexis Denis for making me improve (externally) and simplify (internally) floating point support. He can also be blamed (indirectly) for the L|/"initializer"> method, as I need it in my effort to support bitfields some day. =item * Michael J. Hohmann Emjh@scientist.deE for endless discussions on our way to and back home from work, and for making me think about supporting L|/"pack"> and L|/"unpack"> for compound members. =item * Thorsten Jens Ethojens@gmx.deE for testing the package on various platforms. =item * Mark Overmeer Emark@overmeer.netE for suggesting the module name and giving invaluable feedback. =item * Thomas Pornin Epornin@bolet.orgE for his excellent C preprocessor library. =item * Marc Rosenthal for his suggestions and support. =item * James Roskind, as his C parser was a great starting point to fix all the problems I had with my original parser based only on the ANSI ruleset. =item * Gisbert W. Selke for spotting some interesting bugs and providing extensive reports. =item * Steffen Zimmermann for a prolific discussion on the cloning algorithm. =back =head1 BUGS I'm sure there are still lots of bugs in the code for this module. If you find any bugs, Convert::Binary::C doesn't seem to build on your system or any of its tests fail, please report the issue at L. =head1 EXPERIMENTAL FEATURES Some features in Convert::Binary::C are marked as experimental. This has most probably one of the following reasons: =over 2 =item * The feature does not behave in exactly the way that I wish it did, possibly due to some limitations in the current design of the module. =item * The feature hasn't been tested enough and may completely fail to produce the expected results. =back I hope to fix most issues with these experimental features someday, but this may mean that I have to change the way they currently work in a way that's not backwards compatible. So if any of these features is useful to you, you can use it, but you should be aware that the behaviour or the interface may change in future releases of this module. =head1 TODO If you're interested in what I currently plan to improve (or fix), have a look at the F file. =head1 COPYRIGHT Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The C library is (c) 1998-2002 Thomas Pornin. For license and redistribution details refer to F. Portions copyright (c) 1989, 1990 James A. Roskind. =head1 SEE ALSO See L, L, L, L, L, L and L. =cut Convert-Binary-C-0.85/util/0000755000175000001440000000000014677003524014170 5ustar mhxusersConvert-Binary-C-0.85/util/hash.c0000644000175000001440000010524214677003452015263 0ustar mhxusers/******************************************************************************* * * MODULE: hash * ******************************************************************************** * * DESCRIPTION: Generic hash table routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #include #include #include #include #include #include "ccattr.h" #include "memalloc.h" #include "hash.h" /*----------*/ /* Typedefs */ /*----------*/ struct _hashTable { int count; int size; #ifdef DEBUG_UTIL_HASH unsigned state; #endif unsigned long flags; unsigned long bmask; HashNode *root; }; #ifdef DEBUG_UTIL_HASH # ifdef UTIL_FORMAT_CHECK # define DEBUG( flag, out ) debug_check out static void debug_check(const char *str, ...) __attribute__(( __format__( __printf__, 1, 2 ), __noreturn__ )); # else # define DEBUG( flag, out ) \ do { \ if( gs_dbfunc && ((DB_HASH_ ## flag) & gs_dbflags) ) \ gs_dbfunc out ; \ } while(0) # endif static void (*gs_dbfunc)(const char *, ...) = NULL; static unsigned long gs_dbflags = 0; #define CHANGE_STATE(table) (table)->state++ #else /* !DEBUG_UTIL_HASH */ #define DEBUG( flag, out ) (void) 0 #define CHANGE_STATE(table) (void) 0 #endif /* DEBUG_UTIL_HASH */ /* size of fixed part of hash node */ #define HN_SIZE_FIX offsetof( struct _hashNode, key ) /* compare hash values / compute a minimum of two values */ #define CMPHASH( a, b ) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1)) #define MINIMUM( a, b ) ((a) <= (b) ? a : b) #define ENTRY_FOUND( h, k, l, n ) \ ( (cmp = CMPHASH(h, (n)->hash)) == 0 \ && (cmp = l - (n)->keylen) == 0 \ && (cmp = memcmp( (const void *) k, (n)->key, \ MINIMUM(l, (n)->keylen) )) == 0 ) #define ENTRY_FOUND_HKL( n ) \ ENTRY_FOUND( hash, key, keylen, n ) #define ENTRY_FOUND_NODE( n ) \ ENTRY_FOUND( (node)->hash, (node)->key, (node)->keylen, n ) #if defined DEBUG_UTIL_HASH && defined NO_TERMINATED_KEYS #undef NO_TERMINATED_KEYS #endif /* normally, one extra byte is allocated per hash key to terminate the key with a zero byte */ #ifdef NO_TERMINATED_KEYS #define TERMINATOR_LENGTH 0 #else #define TERMINATOR_LENGTH 1 #endif #define AUTOSIZE_DYADES 3 #define AUTOGROW_DYADES AUTOSIZE_DYADES #define AUTOSHRINK_DYADES AUTOSIZE_DYADES /* macro for automatically growing the hash table */ #define CHECK_AUTOGROW( table ) \ do { \ if( table->flags & HT_AUTOGROW ) \ if( table->size < MAX_HASH_TABLE_SIZE && \ table->count >> (table->size+AUTOGROW_DYADES) > 0 ) \ ht_grow( table, table->size+1 ); \ } while(0) #define CHECK_AUTOSHRINK( table ) \ do { \ if( table->flags & HT_AUTOSHRINK ) \ if( table->size > 1 && \ table->count >> (table->size-AUTOSHRINK_DYADES) == 0 ) \ ht_shrink( table, table->size-1 ); \ } while(0) /* static functions */ #if defined(DEBUG_UTIL_HASH) && defined(UTIL_FORMAT_CHECK) static void debug_check(const char *str __attribute__(( __unused__ )), ...) { fprintf( stderr, "compiled with UTIL_FORMAT_CHECK, please don't run\n" ); abort(); } #endif static inline void ht_grow( HashTable table, int size ) { HashNode *pNode, *pOld, *pNew; int old_size, buckets; unsigned long mask; old_size = table->size; buckets = 1<root, buckets * sizeof( HashNode ) ); table->size = size; table->bmask = (unsigned long) (buckets-1); /* initialize new buckets */ pNode = &table->root[1<root[0]; buckets = 1<hash & mask ) { DEBUG( MAIN, ("pOld=%p *pOld=%p (key=[%s] len=%d hash=0x%08lX)\n", pOld, *pOld, (*pOld)->key, (*pOld)->keylen, (*pOld)->hash) ); pNew = &table->root[(*pOld)->hash & table->bmask]; while( *pNew ) pNew = &(*pNew)->next; *pNew = *pOld; *pOld = (*pNew)->next; (*pNew)->next = NULL; } else pOld = &(*pOld)->next; } } DEBUG( MAIN, ("hash table @ %p grown to %d buckets\n", table, 1<size; buckets = 1<size = size; table->bmask = (unsigned long) (buckets-1); /* distribute hash elements */ pNode = &table->root[buckets]; buckets = (1<key, old->keylen, old->hash) ); node = old; old = old->next; pNew = &table->root[node->hash & table->bmask]; while( *pNew ) { DEBUG( MAIN, ("pNew=%p *pNew=%p (key=[%s] len=%d hash=0x%08lX)\n", pNew, *pNew, (*pNew)->key, (*pNew)->keylen, (*pNew)->hash) ); (void) ENTRY_FOUND_NODE( *pNew ); DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("postition to insert new element found\n") ); break; } DEBUG( MAIN, ("advancing to next hash element\n") ); pNew = &(*pNew)->next; } node->next = *pNew; *pNew = node; } } /* shrink hash table */ buckets = 1<root, buckets * sizeof( HashNode ) ); DEBUG( MAIN, ("hash table @ %p shrunk to %d buckets\n", table, buckets) ); } /************************************************************ * * G L O B A L F U N C T I O N S * ************************************************************/ /** * Extended Constructor * * Using the HT_new_ex() function you create an empty hash * table and set its flags. * * \param size Hash table base size. * * \param flags Hash table flags. Currently you can * use these flags only to specify the * hash tables autosize behaviour. Use * HT_AUTOGROW if you want the hash table * to grow automatically, HT_AUTOSHRINK * if you want the hash table to shrink * automatically. If you want both, just * do a binary OR combination of the * flags or use HT_AUTOSIZE. * * \return A handle to the newly created hash table. * * \see HT_new() */ HashTable HT_new_ex( int size, unsigned long flags ) { HashTable table; HashNode *pNode; int buckets; DEBUG( MAIN, ("HT_new( %d )\n", size) ); assert( size > 0 ); assert( size <= MAX_HASH_TABLE_SIZE ); if( size <= 0 || size > MAX_HASH_TABLE_SIZE ) return NULL; buckets = 1<root, buckets * sizeof( HashNode ) ); table->count = 0; table->size = size; table->bmask = (unsigned long) (buckets-1); table->flags = flags; #ifdef DEBUG_UTIL_HASH table->state = 0; #endif DEBUG( MAIN, ("created new hash table @ %p with %d buckets\n", table, buckets) ); pNode = &table->root[0]; while( buckets-- ) *pNode++ = NULL; return table; } /** * Destructor * * HT_delete() will free the resources occupied by a * hash table. The function will fail silently if the * associated hash table is not empty. * You can also delete a hash table that is not empty by * using the HT_destroy() function. * * \param table Handle to an existing hash table. * * \see HT_new() and HT_destroy() */ void HT_delete( HashTable table ) { DEBUG( MAIN, ("HT_delete( %p )\n", table) ); if( table == NULL ) return; AssertValidPtr( table ); AssertValidPtr( table->root ); CHANGE_STATE(table); assert( table->count == 0 ); Free( table->root ); Free( table ); DEBUG( MAIN, ("deleted hash table @ %p\n", table) ); } /** * Remove all entries from a hash table * * HT_flush() will remove all entries from a hash table, * optionally calling a destructor function for each object * stored in it. It will not free the resources occupied * by the hash table itself, so the hash table handle will * still be valid. * * \param table Handle to an existing hash table. * * \param destroy Pointer to the destructor function * of the objects contained in the hash * table. * You can pass NULL if you don't want * HT_destroy() to call object destructors. * * \see HT_destroy() */ void HT_flush( HashTable table, HTDestroyFunc destroy ) { int buckets; HashNode *pNode, node, old; DEBUG( MAIN, ("HT_flush( %p, %p )\n", table, destroy) ); if( table == NULL || table->count == 0 ) return; AssertValidPtr( table ); AssertValidPtr( table->root ); CHANGE_STATE(table); buckets = 1 << table->size; pNode = &table->root[0]; while( buckets-- ) { node = *pNode; *pNode++ = NULL; while( node ) { if( destroy ) destroy( node->pObj ); old = node; node = node->next; Free( old ); } } table->count = 0; DEBUG( MAIN, ("flushed hash table @ %p\n", table) ); } /** * Extended Destructor * * HT_destroy() will, like HT_delete(), free the resources * occupied by a hash table. In addition, it will call a * destructor function for each element, allowing to free * the resources of the objects stored in the hash table. * * \param table Handle to an existing hash table. * * \param destroy Pointer to the destructor function * of the objects contained in the hash * table. * You can pass NULL if you don't want * HT_destroy() to call object destructors. * * \see HT_new() and HT_delete() */ void HT_destroy( HashTable table, HTDestroyFunc destroy ) { DEBUG( MAIN, ("HT_destroy( %p )\n", table) ); if( table == NULL ) return; AssertValidPtr( table ); AssertValidPtr( table->root ); CHANGE_STATE(table); HT_flush( table, destroy ); Free( table->root ); Free( table ); DEBUG( MAIN, ("destroyed hash table @ %p\n", table) ); } /** * Cloning a hash table * * Using the HT_clone() function to create an exact copy * of a hash table. If the objects stored in the table * need to be cloned as well, you can pass a pointer to * a function that clones each element. * * \param table Handle to an existing hash table. * * \param func Pointer to the cloning function of * the objects contained in the table. * If you pass NULL, the original * object is stored in the cloned table * instead of a cloned object. * * \return A handle to the cloned hash table. * * \see HT_new() */ HashTable HT_clone( ConstHashTable table, HTCloneFunc func ) { HashTable clone; HashNode *pSrcNode, *pDstNode, node, *pNode, cnode; int buckets; if( table == NULL ) return NULL; clone = HT_new_ex( table->size, table->flags ); if( table->count > 0 ) { buckets = 1<size; pSrcNode = &table->root[0]; pDstNode = &clone->root[0]; while( buckets-- > 0 ) { node = *pSrcNode++; pNode = pDstNode++; while( node ) { AllocF( HashNode, cnode, HN_SIZE_FIX + node->keylen + TERMINATOR_LENGTH ); cnode->next = *pNode; cnode->pObj = func ? func( node->pObj ) : node->pObj; cnode->hash = node->hash; cnode->keylen = node->keylen; memcpy( cnode->key, (void *) node->key, node->keylen ); #ifndef NO_TERMINATED_KEYS cnode->key[cnode->keylen] = '\0'; #endif *pNode = cnode; pNode = &(*pNode)->next; node = node->next; } } clone->count = table->count; } return clone; } /** * Resize a hash table * * HT_resize() will allow to resize (shrink or grow) an * existing hash table. * * \param table Handle to an existing hash table. * * \param size New size for the hash table. * This argument is the same as the * argument passed to HT_new(). * * \return Nonzero on success, zero if an invalid handle * was passed or if the table wasn't resized. * * \see HT_new() and HT_size() */ int HT_resize( HashTable table, int size ) { DEBUG( MAIN, ("HT_resize( %p, %d )\n", table, size) ); assert( size > 0 ); assert( size <= MAX_HASH_TABLE_SIZE ); if( table == NULL || size <= 0 || size > MAX_HASH_TABLE_SIZE ) return 0; AssertValidPtr( table ); if( size == table->size ) return 0; CHANGE_STATE(table); if( size > table->size ) ht_grow( table, size ); else ht_shrink( table, size ); return 1; } #ifdef DEBUG_UTIL_HASH /** * Dump the contents of a hash table * * HT_dump() will verbosely list all information related * to a hash table. It will list the contents of all hash * buckets and print all keys, hash sums and value pointers. * * \param table Handle to an existing hash table. * * \note HT_dump() is only available if the code was compiled * with the \c DEBUG_UTIL_HASH preprocessor flag. */ void HT_dump( ConstHashTable table ) { int i, j, buckets; HashNode *pNode, node; DEBUG( MAIN, ("HT_dump( %p )\n", table) ); assert( table != NULL ); AssertValidPtr( table ); if( gs_dbfunc == NULL ) return; gs_dbfunc( "----------------------------------------------------\n" ); gs_dbfunc( "HashTable @ %p: %d elements in %d buckets (state=%u)\n", table, table->count, 1<size, table->state ); buckets = 1<size; pNode = &table->root[0]; for( i=0; inext ) gs_dbfunc( "\n Element %d @ %p:\n" " Hash : 0x%08lX\n" " Key : [%s] (len=%d)\n" " Value: %p\n", j, node, node->hash, node->key, node->keylen, node->pObj ); } gs_dbfunc( "----------------------------------------------------\n" ); } #endif /** * Size of a hash table * * HT_size() will return the size of the hash table. * * \param table Handle to an existing hash table. * * \return The size of the table or -1 if an invalid handle * was passed. The value is the same as the argument * given to the HT_new() constructor. * * \see HT_new() */ int HT_size( ConstHashTable table ) { if( table == NULL ) return -1; AssertValidPtr( table ); return table->size; } /** * Current element count of a hash table * * HT_count() will return the number of objects currently * stored in a hash table. * * \param table Handle to an existing hash table. * * \return The number of elements stored in the hash table * or -1 if an invalid handle was passed. */ int HT_count( ConstHashTable table ) { if( table == NULL ) return -1; AssertValidPtr( table ); return table->count; } /** * Pre-create a hash node * * A hash node is the data structure that is stored in a * hash table. You can pre-create a hash node using the * HN_new() function. A pre-created hash node holds * the hash key, but no value. The advantage of such a * pre-created hash node is that no additional resources * need to be allocated if you store the hash node in the * hash table. * * \param key Pointer to the hash key. * * \param keylen Length of the hash key in bytes. * May be zero if \p key is a zero * terminated string. * * \param hash Pre-computed hash sum. If this is * zero, the hash sum is computed. * * \return A handle to the new hash node. * * \see HN_delete(), HT_storenode() and HT_fetchnode() */ HashNode HN_new( const char *key, int keylen, HashSum hash ) { HashNode node; DEBUG( MAIN, ("HN_new( %p, %d, 0x%08lX )\n", key, keylen, hash) ); assert( key != NULL ); if( hash == 0 ) { if( keylen ) HASH_DATA( hash, keylen, key ); else HASH_STR_LEN( hash, key, keylen ); } AllocF( HashNode, node, HN_SIZE_FIX + keylen + TERMINATOR_LENGTH ); node->pObj = NULL; node->next = NULL; node->hash = hash; node->keylen = keylen; memcpy( node->key, (const void *) key, keylen ); #ifndef NO_TERMINATED_KEYS node->key[keylen] = '\0'; #endif DEBUG( MAIN, ("created new hash node @ %p with key \"%s\"\n", node, key) ); return node; } /** * Delete a hash node * * Free the resources occupied by a hash node that * was previously allocated using the HN_new() function. * You cannot free the resources of a hash node that * is still embedded in a hash table. * * \param node Handle to an existing hash node. * * \see HN_new() */ void HN_delete( HashNode node ) { DEBUG( MAIN, ("HN_delete( %p )\n", node) ); if( node == NULL ) return; AssertValidPtr( node ); assert( node->pObj == NULL ); Free( node ); DEBUG( MAIN, ("deleted hash node @ %p\n", node) ); } /** * Store a hash node in a hash table * * Use this function to store a previously created hash * node in an existing hash table. * * \param table Handle to an existing hash table. * * \param node Handle to an existing hash node. * * \param pObj Pointer to an object that will be * stored as a hash value. * * \return Nonzero if the node could be stored, zero * if it couldn't be stored. * * \see HN_new and HT_fetchnode() */ int HT_storenode( HashTable table, HashNode node, void *pObj ) { HashNode *pNode; int cmp; DEBUG( MAIN, ("HT_storenode( %p, %p, %p )\n", table, node, pObj) ); assert( table != NULL ); assert( node != NULL ); AssertValidPtr( table ); AssertValidPtr( node ); CHANGE_STATE(table); CHECK_AUTOGROW( table ); pNode = &table->root[node->hash & table->bmask]; DEBUG( MAIN, ("key=[%s] len=%d hash=0x%08lX bucket=%lu/%d\n", node->key, node->keylen, node->hash, (node->hash & table->bmask) + 1U, 1<size) ); while( *pNode ) { DEBUG( MAIN, ("pNode=%p *pNode=%p (key=[%s] len=%d hash=0x%08lX)\n", pNode, *pNode, (*pNode)->key, (*pNode)->keylen, (*pNode)->hash) ); if( ENTRY_FOUND_NODE( *pNode ) ) { DEBUG( MAIN, ("key [%s] already in hash, can't store\n", node->key) ); return 0; } DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("postition to insert new element found\n") ); break; } DEBUG( MAIN, ("advancing to next hash element\n") ); pNode = &(*pNode)->next; } node->pObj = pObj; node->next = *pNode; *pNode = node; DEBUG( MAIN, ("successfully stored node [%s] as element #%d into hash table\n", node->key, table->count+1) ); return ++table->count; } /** * Fetch a hash node from a hash table * * Use this function to fetch a hash node from an * existing hash table. The hash node will be removed * from the hash table. However, the resources for the * hash node will not be freed. The hash node can be * stored in another hash table. * * \param table Handle to an existing hash table. * * \param node Handle to an existing hash node. * * \return Pointer to the object that was stored as hash * value with the hash node. * * \see HN_delete() and HT_storenode() */ void *HT_fetchnode( HashTable table, HashNode node ) { HashNode *pNode; void *pObj; DEBUG( MAIN, ("HT_fetchnode( %p, %p )\n", table, node) ); assert( table != NULL ); assert( node != NULL ); AssertValidPtr( table ); AssertValidPtr( node ); CHANGE_STATE(table); pNode = &table->root[node->hash & table->bmask]; DEBUG( MAIN, ("key [%s] hash 0x%08lX bucket %lu/%d\n", node->key, node->hash, (node->hash & table->bmask) + 1U, 1<size) ); while( *pNode && *pNode != node ) pNode = &(*pNode)->next; if( *pNode == NULL ) { DEBUG( MAIN, ("hash element not found\n") ); return NULL; } pObj = node->pObj; *pNode = node->next; node->pObj = NULL; node->next = NULL; table->count--; DEBUG( MAIN, ("successfully fetched node @ %p (%d nodes still in hash table)\n", node, table->count) ); CHECK_AUTOSHRINK( table ); return pObj; } /** * Remove a hash node from a hash table * * Use this function to remove a hash node from an * existing hash table. The hash node will be removed * from the hash table and the resources for the * hash node will be freed. This is like calling * HT_fetchnode() and deleting the node with HN_delete(). * * \param table Handle to an existing hash table. * * \param node Handle to an existing hash node. * * \return Pointer to the object that was stored as hash * value with the hash node. * * \see HN_delete() and HT_fetchnode() */ void *HT_rmnode( HashTable table, HashNode node ) { HashNode *pNode; void *pObj; DEBUG( MAIN, ("HT_rmnode( %p, %p )\n", table, node) ); assert( table != NULL ); assert( node != NULL ); AssertValidPtr( table ); AssertValidPtr( node ); CHANGE_STATE(table); pNode = &table->root[node->hash & table->bmask]; DEBUG( MAIN, ("key [%s] hash 0x%08lX bucket %lu/%d\n", node->key, node->hash, (node->hash & table->bmask) + 1U, 1<size) ); while( *pNode && *pNode != node ) pNode = &(*pNode)->next; if( *pNode == NULL ) { DEBUG( MAIN, ("hash element not found\n") ); return NULL; } pObj = node->pObj; *pNode = node->next; Free( node ); table->count--; DEBUG( MAIN, ("successfully removed node @ %p (%d nodes still in hash table)\n", node, table->count) ); CHECK_AUTOSHRINK( table ); return pObj; } /** * Store a new key/value pair in a hash table * * Use this function to store a new key/value pair * in an existing hash table. * * \param table Handle to an existing hash table. * * \param key Pointer to the hash key. * * \param keylen Length of the hash key in bytes. * May be zero if \p key is a zero * terminated string. * * \param hash Pre-computed hash sum. If this is * zero, the hash sum is computed. * * \param pObj Pointer to an object that will be * stored as a hash value. * * \return Nonzero if the node could be stored, zero * if it couldn't be stored. * * \see HT_fetch() and HT_get() */ int HT_store( HashTable table, const char *key, int keylen, HashSum hash, void *pObj ) { HashNode *pNode, node; int cmp; DEBUG( MAIN, ("HT_store( %p, %p, %d, 0x%08lX, %p )\n", table, key, keylen, hash, pObj) ); assert( table != NULL ); assert( key != NULL ); AssertValidPtr( table ); CHANGE_STATE(table); if( hash == 0 ) { if( keylen ) HASH_DATA( hash, keylen, key ); else HASH_STR_LEN( hash, key, keylen ); } CHECK_AUTOGROW( table ); pNode = &table->root[hash & table->bmask]; DEBUG( MAIN, ("key=[%s] len=%d hash=0x%08lX bucket=%lu/%d\n", key, keylen, hash, (hash & table->bmask) + 1U, 1<size) ); while( *pNode ) { DEBUG( MAIN, ("pNode=%p *pNode=%p (key=[%s] len=%d hash=0x%08lX)\n", pNode, *pNode, (*pNode)->key, (*pNode)->keylen, (*pNode)->hash) ); if( ENTRY_FOUND_HKL( *pNode ) ) { DEBUG( MAIN, ("key [%s] already in hash, can't store\n", key) ); return 0; } DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("postition to insert new element found\n") ); break; } DEBUG( MAIN, ("advancing to next hash element\n") ); pNode = &(*pNode)->next; } AllocF( HashNode, node, HN_SIZE_FIX + keylen + TERMINATOR_LENGTH ); node->next = *pNode; node->pObj = pObj; node->hash = hash; node->keylen = keylen; memcpy( node->key, (const void *) key, keylen ); #ifndef NO_TERMINATED_KEYS node->key[keylen] = '\0'; #endif *pNode = node; DEBUG( MAIN, ("successfully stored [%s] as element #%d into hash table\n", key, table->count+1) ); return ++table->count; } /** * Fetch a value from a hash table * * Use this function to fetch a hash value from an * existing hash table. The key/value pair will be * removed from the hash table. The resources occupied * by the hash node used to store the key/value pair * will be freed. * * \param table Handle to an existing hash table. * * \param key Pointer to a hash key. * * \param keylen Length of the hash key in bytes. * May be zero if \p key is a zero * terminated string. * * \param hash Pre-computed hash sum. If this is * zero, the hash sum is computed. * * \return Pointer to the object that was stored as hash * value. NULL if the key doesn't exist. * * \see HT_get() and HT_store() */ void *HT_fetch( HashTable table, const char *key, int keylen, HashSum hash ) { HashNode *pNode, node; int cmp; void *pObj; DEBUG( MAIN, ("HT_fetch( %p, %p, %d, 0x%08lX )\n", table, key, keylen, hash) ); assert( table != NULL ); assert( key != NULL ); AssertValidPtr( table ); CHANGE_STATE(table); if( table->count == 0 ) return NULL; if( hash == 0 ) { if( keylen ) HASH_DATA( hash, keylen, key ); else HASH_STR_LEN( hash, key, keylen ); } pNode = &table->root[hash & table->bmask]; DEBUG( MAIN, ("key [%s] hash 0x%08lX bucket %lu/%d\n", key, hash, (hash & table->bmask) + 1U, 1<size) ); while( *pNode ) { DEBUG( MAIN, ("node=%p (key=[%s] len=%d hash=0x%08lX)\n", *pNode, (*pNode)->key, (*pNode)->keylen, (*pNode)->hash) ); if( ENTRY_FOUND_HKL( *pNode ) ) { DEBUG( MAIN, ("hash element found\n") ); break; } DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("cannot find hash element\n") ); return NULL; } DEBUG( MAIN, ("advancing to next hash element\n") ); pNode = &(*pNode)->next; } if( *pNode == NULL ) { DEBUG( MAIN, ("hash element not found\n") ); return NULL; } pObj = (*pNode)->pObj; node = *pNode; *pNode = node->next; Free( node ); table->count--; DEBUG( MAIN, ("successfully fetched [%s] (%d elements still in hash table)\n", key, table->count) ); CHECK_AUTOSHRINK( table ); return pObj; } /** * Get a value from a hash table * * Use this function to get a hash value from an * existing hash table. The key/value pair will not be * removed from the hash table. * * \param table Handle to an existing hash table. * * \param key Pointer to a hash key. * * \param keylen Length of the hash key in bytes. * May be zero if \p key is a zero * terminated string. * * \param hash Pre-computed hash sum. If this is * zero, the hash sum is computed. * * \return Pointer to the object that is stored as hash * value. NULL if the key doesn't exist. * * \see HT_fetch() and HT_store() */ void *HT_get( ConstHashTable table, const char *key, int keylen, HashSum hash ) { HashNode node; int cmp; DEBUG( MAIN, ("HT_get( %p, %p, %d, 0x%08lX )\n", table, key, keylen, hash) ); assert( table != NULL ); assert( key != NULL ); AssertValidPtr( table ); if( table->count == 0 ) return NULL; if( hash == 0 ) { if( keylen ) HASH_DATA( hash, keylen, key ); else HASH_STR_LEN( hash, key, keylen ); } node = table->root[hash & table->bmask]; DEBUG( MAIN, ("key [%s] hash 0x%08lX bucket %lu/%d\n", key, hash, (hash & table->bmask) + 1U, 1<size) ); while( node ) { DEBUG( MAIN, ("node=%p (key=[%s] len=%d hash=0x%08lX)\n", node, node->key, node->keylen, node->hash) ); if( ENTRY_FOUND_HKL( node ) ) { DEBUG( MAIN, ("hash element found\n") ); break; } DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("cannot find hash element\n") ); return NULL; } DEBUG( MAIN, ("advancing to next hash element\n") ); node = node->next; } #ifdef DEBUG_UTIL_HASH if( node == NULL ) DEBUG( MAIN, ("hash element not found\n") ); else DEBUG( MAIN, ("successfully found [%s] in hash table\n", node->key) ); #endif return node ? node->pObj : NULL; } /** * Check if a key exists in a hash table * * Use this function to check if a key is present in an * existing hash table. * * \param table Handle to an existing hash table. * * \param key Pointer to a hash key. * * \param keylen Length of the hash key in bytes. * May be zero if \p key is a zero * terminated string. * * \param hash Pre-computed hash sum. If this is * zero, the hash sum is computed. * * \return Nonzero if the key exists, zero if it doesn't. * * \see HT_get() and HT_fetch() */ int HT_exists( ConstHashTable table, const char *key, int keylen, HashSum hash ) { HashNode node; int cmp; DEBUG( MAIN, ("HT_exists( %p, %p, %d, 0x%08lX )\n", table, key, keylen, hash) ); assert( table != NULL ); assert( key != NULL ); AssertValidPtr( table ); if( table->count == 0 ) return 0; if( hash == 0 ) { if( keylen ) HASH_DATA( hash, keylen, key ); else HASH_STR_LEN( hash, key, keylen ); } node = table->root[hash & table->bmask]; DEBUG( MAIN, ("key [%s] hash 0x%08lX bucket %lu/%d\n", key, hash, (hash & table->bmask) + 1U, 1<size) ); while( node ) { DEBUG( MAIN, ("node=%p (key=[%s] len=%d hash=0x%08lX)\n", node, node->key, node->keylen, node->hash) ); if( ENTRY_FOUND_HKL( node ) ) { DEBUG( MAIN, ("hash element found\n") ); return 1; } DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("cannot find hash element\n") ); return 0; } DEBUG( MAIN, ("advancing to next hash element\n") ); node = node->next; } return 0; } /** * Initialize hash iterator object * * HI_init() will initialize a hash iterator object. * You must call this function prior to using HI_next(). * * \param it Pointer to a hash iterator object. * * \param table Handle to an existing hash table. * * \see HI_next() */ void HI_init(HashIterator *it, ConstHashTable table) { DEBUG( MAIN, ("HI_init( %p, %p )\n", it, table) ); #ifdef DEBUG_UTIL_HASH it->table = table; it->orig_state = table->state; #endif if (table) { AssertValidPtr(table); it->remain = 1 << table->size; it->pBucket = &table->root[1]; it->pNode = table->root[0]; DEBUG( MAIN, ("hash table iterator has been reset\n") ); } } /** * Get next hash element * * Get the next key/value pair while iterating through a * hash table. You must have called HI_init() before and * you mustn't modify the hash table between consecutive * calls to HI_next(). * * \param it Pointer to a hash iterator object. * * \param ppKey Pointer to a variable that will * receive a pointer to the hash key. * May be \c NULL if you don't need * it. You mustn't modify the memory * pointed to by that pointer. * * \param pKeylen Pointer to a variable that will * receive the length of the hash key. * May be \c NULL if you don't need * it. * * \param ppObj Pointer to a variable that will * receive a pointer to the object * that is stored as hash value. * May be \c NULL if you don't need * it. * * \return Nonzero if another key/value pair could be * retrieved, zero if all elements have been * processed. * * \see HI_init() */ int HI_next(HashIterator *it, const char **ppKey, int *pKeylen, void **ppObj) { ConstHashNode node; DEBUG( MAIN, ("HI_next( %p )\n", it) ); if (it == NULL) return 0; #ifdef DEBUG_UTIL_HASH AssertValidPtr(it->table); assert(it->orig_state == it->table->state); #endif DEBUG( MAIN, ("it->remain=%d it->pBucket=%p it->pNode=%p\n", it->remain, it->pBucket, it->pNode) ); while (it->remain > 0) { while ((node = it->pNode) != NULL) { it->pNode = it->pNode->next; if (ppKey ) *ppKey = node->key; if (pKeylen) *pKeylen = node->keylen; if (ppObj ) *ppObj = node->pObj; return 1; } DEBUG( MAIN, ("going to next bucket\n") ); if (--it->remain > 0) it->pNode = *it->pBucket++; else { it->pBucket = NULL; it->pNode = NULL; } DEBUG( MAIN, ("it->remain=%d it->pBucket=%p it->pNode=%p\n", it->remain, it->pBucket, it->pNode) ); } DEBUG( MAIN, ("iteration through all elements completed\n") ); return 0; } #ifdef DEBUG_UTIL_HASH int SetDebugHash( void (*dbfunc)(const char *, ...), unsigned long dbflags ) { gs_dbfunc = dbfunc; gs_dbflags = dbflags; return 1; } #endif /* DEBUG_UTIL_HASH */ Convert-Binary-C-0.85/util/doxyinc/0000755000175000001440000000000014677003524015645 5ustar mhxusersConvert-Binary-C-0.85/util/doxyinc/memdb_large.out0000644000175000001440000000036214676735310020641 0ustar mhxusers Summary Statistics: Total allocs : 32404 Total frees : 32404 Max. memory blocks : 13305 Max. memory usage : 183675 bytes Smallest block : 2 bytes Largest block : 29 bytes Memory leakage : 0 bytes Convert-Binary-C-0.85/util/doxyinc/mem_debug.dat0000644000175000001440000000013614676735310020267 0ustar mhxusersAlloc.c(9):A=16@400031C0 Alloc.c(10):V=400031C0 Alloc.c(11):F=400031C0 Alloc.c(12):V=400031C0 Convert-Binary-C-0.85/util/doxyinc/mem_debug.out0000644000175000001440000000043614676735310020331 0ustar mhxusersValid pointer assertion (0x400031C0) failed in Alloc.c(12) Summary Statistics: Total allocs : 1 Total frees : 1 Max. memory blocks : 1 Max. memory usage : 16 bytes Smallest block : 16 bytes Largest block : 16 bytes Memory leakage : 0 bytes Convert-Binary-C-0.85/util/doxyinc/Alloc.c0000644000175000001440000000056714676735310017057 0ustar mhxusers#include #include "memalloc.h" void main( void ) { void *p; SetDebugMemAlloc( printf, DB_MEMALLOC_TRACE | DB_MEMALLOC_ASSERT ); p = Alloc( 16 ); // allocate 16 bytes of memory AssertValidPtr( p ); // check the pointer Free( p ); // free the memory block AssertValidPtr( p ); // check the pointer (again) } Convert-Binary-C-0.85/util/doxyinc/footer.inc0000644000175000001440000000002014676735310017632 0ustar mhxusers Convert-Binary-C-0.85/util/doxyinc/doxygen.css0000644000175000001440000000261514676735310020044 0ustar mhxusersH1 { font-size: 18pt; text-align: center; } H2 { font-size: 14pt; } A { font-size: 10pt; text-decoration: none; color: #0000e0; } A:visited { color: #0000e0; } A:hover { text-decoration: underline overline; background-color: #e0e0ff } A.qindex {} A.qindexRef {} A.el { text-decoration: none; font-weight: bold } A.elRef { font-weight: bold } A.code { text-decoration: none; font-weight: normal; color: #4444ee } A.codeRef { font-weight: normal; color: #4444ee } DL.el { margin-left: -1cm } DIV.fragment { width: 100%; border: solid; border-width: 1px; background-color: #eeeeee; margin-top: 6px; padding-top: 10pt; padding-left: 10pt; } DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } TD { font-size: 10pt; } TD.md { background-color: #f2f2ff; font-weight: bold; } TD.mdname1 { background-color: #f2f2ff; font-weight: bold; } TD.mdname { background-color: #f2f2ff; font-weight: bold; width: 600px; } DIV { font-size: 10pt; } DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold } DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } FONT.keyword { color: #008000 } FONT.keywordtype { color: #604020 } FONT.keywordflow { color: #e08000 } FONT.comment { color: #800000 } FONT.preprocessor { color: #806020 } FONT.stringliteral { color: #002080 } FONT.charliteral { color: #008080 } Convert-Binary-C-0.85/util/doxyinc/LinkedList.c0000644000175000001440000000147514676735310020066 0ustar mhxusersMyObject *pObj; // pointer to an object LinkedList list; // linked list handle list = LL_new(); // create new linked list LL_push(list, NewObject("Foo", 3)); // push a new object onto the list LL_push(list, NewObject("Bar", 2)); // push a new object onto the list LL_push(list, NewObject("Cat", 7)); // push a new object onto the list LL_sort(list, CompareObjects); // sort the list printf("The list has %d elements\n", // print the list's size LL_size(list)); LL_foreach(pObj, list) // loop over all elements PrintObject(pObj); pObj = LL_shift(list); // shift off the first element DeleteObject(pObj); // ...and delete it LL_destroy(list, DeleteObject); // destroy the whole list Convert-Binary-C-0.85/util/doxyinc/header.inc0000644000175000001440000000050314676735310017572 0ustar mhxusers Utility Library Convert-Binary-C-0.85/util/list.h0000644000175000001440000000716014677003452015320 0ustar mhxusers/******************************************************************************* * * HEADER: list * ******************************************************************************** * * DESCRIPTION: Generic routines for a doubly linked ring list * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /** * \file list.h * \brief Generic implementation of Linked Lists * * The interface is laid out to make the linked lists look * as they were arrays that can be manipulated in multiple * ways. Internally, each array is represented by a doubly * linked ring list, which is quite efficient for most cases. * The following piece of code provides some examples of how * the linked list functions can be used. * * \include LinkedList.c * * If you're familiar with Perl, you may notice a certain * similarity between these routines and the functions * Perl uses for manipulating arrays. This is absolutely * intended. */ #ifndef _UTIL_LIST_H #define _UTIL_LIST_H /** * Linked List Handle */ typedef struct _linkedList * LinkedList; typedef const struct _linkedList * ConstLinkedList; /** * Linked List Iterator */ typedef struct _listIterator { ConstLinkedList list; const struct _link *cur; #ifdef DEBUG_UTIL_LIST unsigned orig_state; #endif } ListIterator; /** * Destructor Function Pointer */ typedef void (* LLDestroyFunc)(void *); /** * Cloning Function Pointer */ typedef void * (* LLCloneFunc)(const void *); /** * Comparison Function Pointer */ typedef int (* LLCompareFunc)(const void *, const void *); LinkedList LL_new( void ); void LL_delete( LinkedList list ); void LL_flush( LinkedList list, LLDestroyFunc destroy ); void LL_destroy( LinkedList list, LLDestroyFunc destroy ); LinkedList LL_clone( ConstLinkedList list, LLCloneFunc func ); int LL_count( ConstLinkedList list ); void LL_push( LinkedList list, void *pObj ); void * LL_pop( LinkedList list ); void LL_unshift( LinkedList list, void *pObj ); void * LL_shift( LinkedList list ); void LL_insert( LinkedList list, int item, void *pObj ); void * LL_extract( LinkedList list, int item ); void * LL_get( ConstLinkedList list, int item ); LinkedList LL_splice( LinkedList list, int offset, int length, LinkedList rlist ); void LL_sort( LinkedList list, LLCompareFunc cmp ); void LI_init(ListIterator *it, ConstLinkedList list); int LI_next(ListIterator *it); int LI_prev(ListIterator *it); void * LI_curr(const ListIterator *it); /** * Loop over all list elements. * * The LL_foreach() macro is actually only a shortcut for the * following loop: * * \code * for (LI_reset(&iter, list); LI_next(&iter) && ((pObj) = LL_curr(&iter)) != NULL;) { * // do something with pObj * } * \endcode * * It is safe to use LL_foreach() even if \a list is NULL. * In that case, the loop won't be executed. * * \param pObj Variable that will receive a pointer * to the current object. * * \param iter Iterator state object. * * \param list Handle to an existing linked list. * * \see LL_reset() and LL_next() * \hideinitializer */ #define LL_foreach(pObj, iter, list) \ for (LI_init(&iter, list); ((pObj) = LI_next(&iter) ? LI_curr(&iter) : NULL) != NULL;) #endif Convert-Binary-C-0.85/util/tool/0000755000175000001440000000000014677003524015145 5ustar mhxusersConvert-Binary-C-0.85/util/tool/check_alloc.pl0000644000175000001440000001110514677003452017727 0ustar mhxusers#!/usr/bin/perl -w ################################################################################ # # PROGRAM: check_alloc.pl # ################################################################################ # # DESCRIPTION: Check for memory leaks and print memory usage statistics # ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use strict; my(%alloc, %free); my %info = ( allocs => 0, frees => 0, max_blocks => 0, max_total => 0, ); my $count = 0; my $total = 0; LOOP: while( <> ) { next unless /^(.*?):(A|F|V|B)=(?:(\d+)\@)?([0-9a-fA-F]{8,})$/; if( $2 eq 'A' ) { if( exists $alloc{$4} ) { print "Previously allocated in $alloc{$4}[0]: 0x$4 in $1\n"; next; } my $addr = hex $4; $alloc{$4} = [$1,$3,$addr,$addr+$3-1]; $count++; $total += $3; $info{allocs}++; $info{min_size} = $info{max_size} = $3 unless exists $info{min_size}; $info{min_size} = $3 if $3 < $info{min_size}; $info{max_size} = $3 if $3 > $info{max_size}; } elsif( $2 eq 'F' ) { unless( exists $alloc{$4} ) { if( $4 eq '00000000' ) { print "Freeing NULL pointer in $1\n" if $4 eq '00000000'; } elsif( exists $free{$4} ) { print "Freeing block more than once: 0x$4 in $1\n"; } else { print "Freeing block not previously allocated: 0x$4 in $1\n"; } next; } $count--; $total -= $alloc{$4}[1]; $info{frees}++; $free{$4} = delete $alloc{$4}; } elsif( $2 eq 'V' ) { unless( exists $alloc{$4} ) { if( $4 eq '00000000' ) { print "Trying to validate NULL pointer in $1\n" } else { print "Valid pointer assertion (0x$4) failed in $1\n"; if( exists $free{$4} ) { print " - pointer references a block that has been freed\n"; } else { print " - pointer references memory not previously allocated\n"; } } } next; # nothing needs to be updated } else { # $2 eq 'B' if( $4 eq '00000000' ) { print "Trying to validate block starting at NULL\n"; next; } my($min, $max); my(@overlaps, @old_blocks, @old_overlaps); $min = hex $4; $max = $min + $3 - 1; # print "[$4,$3] [min] => $min, [max] => $max\n"; # check allocated blocks for my $key ( keys %alloc ) { my $info = $alloc{$key}; # print "alloc: [2] => $info->[2], [3] => $info->[3]\n"; my $min_in = $info->[2] <= $min && $min <= $info->[3]; my $max_in = $info->[2] <= $max && $max <= $info->[3]; my $over = $min < $info->[2] && $max > $info->[3]; next unless $min_in || $max_in || $over; next LOOP if $min_in && $max_in; push @overlaps, $key; } # check freed blocks for my $key ( keys %free ) { my $info = $free{$key}; # print "free: [2] => $info->[2], [3] => $info->[3]\n"; my $min_in = $info->[2] <= $min && $min <= $info->[3]; my $max_in = $info->[2] <= $max && $max <= $info->[3]; my $over = $min < $info->[2] && $max > $info->[3]; next unless $min_in || $max_in || $over; if( $min_in && $max_in ) { push @old_blocks, $key; last; } push @old_overlaps, $key; } print "Block assertion (0x$4, size $3) failed in $1\n"; if( @overlaps || @old_blocks || @old_overlaps ) { print " - overlaps with allocated block at 0x$_, size $alloc{$_}[1]\n" for @overlaps; print " - references memory in old block at 0x$_, size $free{$_}[1]\n" for @old_blocks; print " - overlaps with old block at 0x$_, size $free{$_}[1]\n" for @old_overlaps; } else { print " - references memory not previously allocated\n"; } next; # nothing needs to be updated } $info{max_blocks} = $count if $count > $info{max_blocks}; $info{max_total} = $total if $total > $info{max_total}; } foreach( sort keys %alloc ) { print "Not freed: block at 0x$_, size $alloc{$_}[1], allocated in $alloc{$_}[0]\n"; } print < #include #include #include "ccattr.h" #include "memalloc.h" #include "list.h" /*----------*/ /* Typedefs */ /*----------*/ typedef struct _link Link; struct _link { void *pObj; Link *prev; Link *next; }; struct _linkedList { Link link; int size; #ifdef DEBUG_UTIL_LIST unsigned state; #endif }; #ifdef DEBUG_UTIL_LIST # define CHANGE_STATE(list) (list)->state++ #else # define CHANGE_STATE(list) (void) 0 #endif /*------------------*/ /* Static Functions */ /*------------------*/ static inline Link *GetLink( LinkedList list, int item ); static inline void *Extract( LinkedList list, Link *pLink ); static inline Link *Insert( LinkedList list, Link *pLink, void *pObj ); static void QuickSort( Link *l, Link *r, int size, LLCompareFunc cmp ); /************************************************************ * * S T A T I C F U N C T I O N S * ************************************************************/ /* * GetLink * * Get a link by item number. * * 0 <= item < list->size * returns a pointer to the (item)th link * * -(list->size) <= item < 0 * returns a pointer to the (list->size+item)th link * * otherwise * return NULL */ static inline Link *GetLink( LinkedList list, int item ) { Link *pLink = &list->link; if( item < 0 ) { if( -item > list->size ) /* -1 is last item */ return NULL; while( item++ < 0 ) pLink = pLink->prev; } else { /* item > 0 */ if( item >= list->size ) /* 0 is first item */ return NULL; while( item-- >= 0 ) pLink = pLink->next; } return pLink; } /* * Extract * * Extracts a link from its list, frees its * resources and returns a pointer to the * associated object. */ static inline void *Extract( LinkedList list, Link *pLink ) { void *pObj = pLink->pObj; pLink->prev->next = pLink->next; pLink->next->prev = pLink->prev; list->size--; Free( pLink ); return pObj; } /* * Insert * * Inserts a new link associated with pObj _before_ * the link pointed to by pLink and returns a pointer * to the inserted link. */ static inline Link *Insert( LinkedList list, Link *pLink, void *pObj ) { Link *pLinkNew; AllocF( Link *, pLinkNew, sizeof( Link ) ); pLinkNew->pObj = pObj; pLinkNew->prev = pLink->prev; pLinkNew->next = pLink; pLink->prev->next = pLinkNew; pLink->prev = pLinkNew; list->size++; return pLinkNew; } /* * QuickSort * * Adapted quick sort algorithm. */ static void QuickSort( Link *l, Link *r, int size, LLCompareFunc cmp ) { Link *i, *j; void *p, *t; int lp, rp; /* determine pivot */ lp = size / 2; for( i=l; --lp > 0; i=i->next ); p = i->pObj; /* initialize vars */ i = l; j = r; lp = 0; rp = size-1; /* sort */ for(;;) { while( cmp( i->pObj, p ) < 0 ) i = i->next, lp++; if( lp > rp ) break; while( cmp( j->pObj, p ) > 0 ) j = j->prev, rp--; if( lp > rp ) break; /* swap elements */ t = i->pObj; i->pObj = j->pObj; j->pObj = t; i = i->next; lp++; j = j->prev; rp--; } if( rp+1 > 1 ) QuickSort( l, j, rp+1, cmp ); if( size-lp > 1 ) QuickSort( i, r, size-lp, cmp ); } /************************************************************ * * G L O B A L F U N C T I O N S * ************************************************************/ /** * Constructor * * Using the LL_new() function you create an empty linked * list. If the term linked list scares you, just think of * it as a flexible array, because the Linked List Library * won't let you deal with links at all. * * \return A handle to the newly created linked list. * * \see LL_delete() and LL_destroy() */ LinkedList LL_new( void ) { LinkedList list; AllocF( LinkedList, list, sizeof( struct _linkedList ) ); list->link.prev = list->link.next = &list->link; list->link.pObj = NULL; list->size = 0; #ifdef DEBUG_UTIL_LIST list->state = 0; #endif return list; } /** * Destructor * * LL_delete() will free the resources occupied by a * linked list. The function will fail silently if the * associated list is not empty. * You can also delete a list that is not empty by * using the LL_destroy() function. * * \param list Handle to an existing linked list. * * \see LL_new() and LL_destroy() */ void LL_delete( LinkedList list ) { if( list == NULL || list->size ) return; CHANGE_STATE(list); Free( list ); } /** * Remove all elements from a list * * LL_flush() will remove all elements from a linked list, * optionally calling a destructor function. It will not * free the resources occupied by the list itself. * * \param list Handle to an existing linked list. * * \param destroy Pointer to the destructor function * of the objects contained in the list. * You can pass NULL if you don't want * LL_flush() to call object destructors. * * \see LL_destroy() */ void LL_flush( LinkedList list, LLDestroyFunc destroy ) { void *pObj; if( list == NULL ) return; CHANGE_STATE(list); while( (pObj = LL_shift( list )) != NULL ) if( destroy ) destroy( pObj ); } /** * Extended Destructor * * LL_destroy() will, like LL_delete(), free the resources * occupied by a linked list. However, it will empty the * the list prior to deleting it, like LL_flush(). * * \param list Handle to an existing linked list. * * \param destroy Pointer to the destructor function * of the objects contained in the list. * You can pass NULL if you don't want * LL_destroy() to call object destructors. * * \see LL_new(), LL_delete() and LL_flush() */ void LL_destroy( LinkedList list, LLDestroyFunc destroy ) { if( list == NULL ) return; CHANGE_STATE(list); LL_flush( list, destroy ); LL_delete( list ); } /** * Cloning a linked list * * Using the LL_clone() function to create an exact copy * of a linked list. If the objects stored in the list * need to be cloned as well, you can pass a pointer to * a function that clones each element. * * \param list Handle to an existing linked list. * * \param func Pointer to the cloning function of * the objects contained in the list. * If you pass NULL, the original * object is stored in the cloned list * instead of a cloned object. * * \return A handle to the cloned linked list. * * \see LL_new() */ LinkedList LL_clone( ConstLinkedList list, LLCloneFunc func ) { ListIterator li; LinkedList clone; void *pObj; if( list == NULL ) return NULL; clone = LL_new(); LL_foreach(pObj, li, list) LL_push(clone, func ? func(pObj) : pObj); return clone; } /** * Current size of a list * * LL_count() will return the the number of objects that * a linked list contains. * * \param list Handle to an existing linked list. * * \return The size of the list or -1 if an invalid handle * was passed. */ int LL_count( ConstLinkedList list ) { if( list == NULL ) return -1; AssertValidPtr( list ); return list->size; } /** * Add element to the end of a list. * * LL_push() will add a new element to the end of a list. * If you think of the list as a stack, the function pushes * a new element on top of the stack. * * \param list Handle to an existing linked list. * * \param pObj Pointer to an object associated with * the new list element. The function * will not add a new element if this * is NULL. * * \see LL_pop() */ void LL_push( LinkedList list, void *pObj ) { if( list == NULL || pObj == NULL ) return; AssertValidPtr( list ); CHANGE_STATE(list); (void) Insert( list, &list->link, pObj ); } /** * Remove element from the end of a list. * * LL_pop() will remove the last element from a list. * If you think of the list as a stack, the function pops * an element of the stack. * * \param list Handle to an existing linked list. * * \return Pointer to the object that was associated with * the element removed from the list. If the list * is empty, NULL will be returned. * * \see LL_push() */ void *LL_pop( LinkedList list ) { if( list == NULL || list->size == 0 ) return NULL; AssertValidPtr( list ); CHANGE_STATE(list); return Extract( list, list->link.prev ); } /** * Add element to the start of a list. * * LL_unshift() will add a new element to the beginning of a * list, right before the first element. For an empty list * this is equivalent to calling LL_push(). * * \param list Handle to an existing linked list. * * \param pObj Pointer to an object associated with * the new list element. The function * will not add a new element if this * is NULL. * * \see LL_shift() */ void LL_unshift( LinkedList list, void *pObj ) { if( list == NULL || pObj == NULL ) return; AssertValidPtr( list ); CHANGE_STATE(list); (void) Insert( list, list->link.next, pObj ); } /** * Remove element from the start of a list. * * LL_shift() will remove the first element from a list. * If the list contains only a single element, this is * equivalent to calling LL_pop(). * * \param list Handle to an existing linked list. * * \return Pointer to the object that was associated with * the element removed from the list. If the list * is empty, NULL will be returned. * * \see LL_unshift() */ void *LL_shift( LinkedList list ) { if( list == NULL || list->size == 0 ) return NULL; AssertValidPtr( list ); CHANGE_STATE(list); return Extract( list, list->link.next ); } /** * Insert a new element into a list. * * Using LL_insert(), you can insert a new element at an * arbitrary position in the list. * If \a item is out of the valid range, the element will * not be added. * * \param list Handle to an existing linked list. * * \param item Position where the new element should * be inserted.\n * A value of 0 will insert * the new element at the start of the * list, like LL_unshift() would do. A * value of LL_count() would insert the * element at the end of the list, like * LL_push() would do. A negative value * will count backwards from the end of * the list. So a value of -1 would also * add the new element to the end of the * list. * * \param pObj Pointer to an object associated with * the new list element. The function * will not add a new element if this * is NULL. * * \see LL_extract() */ void LL_insert( LinkedList list, int item, void *pObj ) { Link *pLink; if( list == NULL || pObj == NULL ) return; AssertValidPtr( list ); CHANGE_STATE(list); /* * We have to do some faking here because adding to the end * of the list is a more natural result for item == -1 than * adding to the position _before_ the last element would be */ if( item < 0 ) pLink = item == -1 ? &list->link : GetLink( list, item+1 ); else pLink = item == list->size ? &list->link : GetLink( list, item ); if( pLink == NULL ) return; (void) Insert( list, pLink, pObj ); } /** * Extract an element from a list. * * LL_extract() will remove an arbitrary element from the * list and return a pointer to the associated object. * * \param list Handle to an existing linked list. * * \param item Position of the element that should * be extracted.\n * A value of 0 will extract the first * element, like LL_shift(). A negative * value will count backwards from the * end of the list. So a value of -1 * will extract the last element, which * will be equivalent to LL_pop(). * * \return Pointer to the object that was associated with * the element removed from the list. If the list * is empty or \a item is out of range, NULL will * be returned. * * \see LL_insert() */ void *LL_extract( LinkedList list, int item ) { Link *pLink; if( list == NULL || list->size == 0 ) return NULL; AssertValidPtr( list ); CHANGE_STATE(list); pLink = GetLink( list, item ); if( pLink == NULL ) return NULL; return Extract( list, pLink ); } /** * Get the element of a list. * * LL_get() will simply return a pointer to the object * associated with a certain list element. * * \param list Handle to an existing linked list. * * \param item Position of the element. Negative * positions count backwards from the * end of the list, so -1 would refer * to the last element. * * \return Pointer to the object that is associated with * the element. If the list is empty or \a item * is out of range, NULL will be returned. */ void *LL_get( ConstLinkedList list, int item ) { Link *pLink; if( list == NULL || list->size == 0 ) return NULL; AssertValidPtr( list ); pLink = GetLink( (LinkedList) list, item ); return pLink ? pLink->pObj : NULL; } /** * Perform different list transformations. * * LL_splice() can be used for a variety of list transformations * and is similar to Perl's splice builtin. In brief, * LL_splice() will extract \a length elements starting at * \a offset from \a list, replace them by the elements in * \a rlist and return a new list holding the extracted elements. * * \param list Handle to an existing linked list. * * \param offset Offset of the first element to extract. * If negative, counts backwards from the * end. * * \param length Length of the list to extract. If negative, * all remaining elements will be extracted. * If \a length is larger than the number of * remaining elements, only the remaining * elements will be extracted. If this is 0, * no elements will be extracted. However, * an empty list will still be returned. * * \param rlist List that will replace the extracted * elements. If no elements were extracted, * the elements of \a rlist will just be * inserted at \a offset. If \a rlist is * NULL, no replacement elements will be * inserted. The list will be automatically * destroyed after the elements have been * inserted into \a list. * * \return Handle to a new list holding the extracted elements, * if any. NULL if LL_splice() fails for some reason. */ LinkedList LL_splice( LinkedList list, int offset, int length, LinkedList rlist ) { LinkedList nlist; Link *pLink, *pLast; if( list == NULL ) return NULL; AssertValidPtr( list ); CHANGE_STATE(list); pLink = offset == list->size ? &list->link : GetLink( list, offset ); if( pLink == NULL ) return NULL; nlist = LL_new(); if( nlist == NULL ) return NULL; if( length < 0 ) length = offset < 0 ? -offset : list->size - offset; if( length > 0 ) { pLast = pLink; while( ++nlist->size < length && pLast->next->pObj ) pLast = pLast->next; pLink->prev->next = pLast->next; pLast->next->prev = pLink->prev; nlist->link.next = pLink; nlist->link.prev = pLast; pLink->prev = &nlist->link; pLink = pLast->next; pLast->next = &nlist->link; list->size -= nlist->size; } if( rlist ) { pLast = pLink; pLink = pLink->prev; rlist->link.next->prev = pLink; rlist->link.prev->next = pLast; pLink->next = rlist->link.next; pLast->prev = rlist->link.prev; list->size += rlist->size; Free( rlist ); } return nlist; } /** * Initialize list iterator. * * LI_init() will initialize a list iterator object. * Keep in mind that modifying the list invalidates all * list iterators. * * \param it Pointer to a list iterator object. * * \param list Handle to an existing linked list. * * \see LI_next(), LI_prev() and LI_curr() */ void LI_init(ListIterator *it, ConstLinkedList list) { it->list = list; if (list) { AssertValidPtr(list); it->cur = &list->link; #ifdef DEBUG_UTIL_LIST it->orig_state = list->state; #endif } } /** * Move iterator to next list element. * * LI_next() will advance to the next element in the list. * * \param it Pointer to a list iterator object. * * \return Nonzero as long as the next element is valid, * zero at the end of the list. * * \see LI_init(), LI_prev() and LI_curr() */ int LI_next(ListIterator *it) { if (it == NULL || it->list == NULL) return 0; AssertValidPtr(it->list); #ifdef DEBUG_UTIL_LIST assert(it->orig_state == it->list->state); #endif it->cur = it->cur->next; return it->cur != &it->list->link; } /** * Move iterator to previous list element. * * LI_prev() will advance to the previous element in the list. * * \param it Pointer to a list iterator object. * * \return Nonzero as long as the previous element is valid, * zero at the beginning of the list. * * \see LI_init(), LI_next() and LI_curr() */ int LI_prev(ListIterator *it) { if (it == NULL || it->list == NULL) return 0; AssertValidPtr(it->list); it->cur = it->cur->prev; return it->cur != &it->list->link; } /** * Return the object associated with the current list element. * * LI_curr() will return a pointer to the current object. * * \param it Pointer to a list iterator object. * * \return Pointer to the current object in the list. * * \see LI_init(), LI_next() and LI_prev() */ void *LI_curr(const ListIterator *it) { if (it == NULL || it->list == NULL) return NULL; AssertValidPtr(it->list); return it->cur->pObj; } /** * Sort list elements. * * LL_sort() will sort a list using a quicksort algorithm. * The sorted list will be in ascending order. * * \param list Handle to an existing linked list. * * \param cmp Pointer to a comparison function. * This function is called with a pair * of pointers to objects in the list * and must return * - a negative value if the first * argument is less than the second * - a positive value if the first * argument is greater than the second * - zero if the first both arguments * are considered to be equal */ void LL_sort( LinkedList list, LLCompareFunc cmp ) { if( list == NULL || list->size <= 1 ) return; AssertValidPtr( list ); QuickSort( list->link.next, list->link.prev, list->size, cmp ); } Convert-Binary-C-0.85/util/hash.h0000644000175000001440000002356614677003452015300 0ustar mhxusers/******************************************************************************* * * HEADER: hash * ******************************************************************************** * * DESCRIPTION: Generic hash table routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /** * \file hash.h * \brief Generic implementation of Hash Tables */ #ifndef _UTIL_HASH_H #define _UTIL_HASH_H /** * Maximum allowed hash size * * This controls the maximum number of hash buckets, * currently 2^16 = 65536. */ #define MAX_HASH_TABLE_SIZE 16 /** * Compute hash sum and string length * * The HASH_STR_LEN() macro computes the hash sum and * string length of a zero terminated string. * * \param hash Variable that will receive the * hash sum. * * \param str Pointer to the zero terminated * string. * * \param len Variable that will receive the * string length. * * \see HASH_STRING() and HASH_DATA() * \hideinitializer */ #define HASH_STR_LEN( hash, str, len ) \ do { \ register int _len = 0; \ register const char *_str = str; \ register HashSum _hash = 0; \ \ while( *_str ) { \ _len++; \ _hash += *_str++; \ _hash += (_hash << 10); \ _hash ^= (_hash >> 6); \ } \ \ _hash += (_hash << 3); \ _hash ^= (_hash >> 11); \ (hash) = (_hash + (_hash << 15)); \ (len) = _len; \ } while(0) /** * Compute hash sum * * The HASH_STRING() macro computes the hash sum * of a zero terminated string. * * \param hash Variable that will receive the * hash sum. * * \param str Pointer to the zero terminated * string. * * \see HASH_STR_LEN() and HASH_DATA() * \hideinitializer */ #define HASH_STRING( hash, str ) \ do { \ register const char *_str = str; \ register HashSum _hash = 0; \ \ while( *_str ) { \ _hash += *_str++; \ _hash += (_hash << 10); \ _hash ^= (_hash >> 6); \ } \ \ _hash += (_hash << 3); \ _hash ^= (_hash >> 11); \ (hash) = (_hash + (_hash << 15)); \ } while(0) /** * Compute hash sum of arbitrary data * * The HASH_DATA() macro computes the hash sum * of a an arbitrary data memory block. * * \param hash Variable that will receive the * hash sum. * * \param len Length of the data block. * * \param data Pointer to the data block. * * \see HASH_STR_LEN() and HASH_STRING() * \hideinitializer */ #define HASH_DATA( hash, len, data ) \ do { \ register const char *_data = data; \ register int _len = len; \ register HashSum _hash = 0; \ \ while( _len-- ) { \ _hash += *_data++; \ _hash += (_hash << 10); \ _hash ^= (_hash >> 6); \ } \ \ _hash += (_hash << 3); \ _hash ^= (_hash >> 11); \ (hash) = (_hash + (_hash << 15)); \ } while(0) /** * Hash Table Handle */ typedef struct _hashTable * HashTable; typedef const struct _hashTable * ConstHashTable; /** * Hash Sum */ typedef unsigned long HashSum; /** * Hash Node */ typedef struct _hashNode *HashNode; typedef const struct _hashNode *ConstHashNode; struct _hashNode { HashNode next; void *pObj; HashSum hash; int keylen; char key[1]; }; /** * Hash Table Iterator */ typedef struct _hashIterator { ConstHashNode pNode; HashNode *pBucket; int remain; #ifdef DEBUG_UTIL_HASH ConstHashTable table; unsigned orig_state; #endif } HashIterator; /** * Destructor Function Pointer */ typedef void (* HTDestroyFunc)(void *); /** * Cloning Function Pointer */ typedef void * (* HTCloneFunc)(const void *); HashTable HT_new_ex( int size, unsigned long flags ); void HT_delete( HashTable table ); void HT_flush( HashTable table, HTDestroyFunc destroy ); void HT_destroy( HashTable table, HTDestroyFunc destroy ); HashTable HT_clone( ConstHashTable table, HTCloneFunc func ); int HT_resize( HashTable table, int size ); int HT_size( ConstHashTable table ); int HT_count( ConstHashTable table ); HashNode HN_new( const char *key, int keylen, HashSum hash ); void HN_delete( HashNode node ); int HT_storenode( HashTable table, HashNode node, void *pObj ); void * HT_fetchnode( HashTable table, HashNode node ); void * HT_rmnode( HashTable table, HashNode node ); int HT_store( HashTable table, const char *key, int keylen, HashSum hash, void *pObj ); void * HT_fetch( HashTable table, const char *key, int keylen, HashSum hash ); void * HT_get( ConstHashTable table, const char *key, int keylen, HashSum hash ); int HT_exists( ConstHashTable table, const char *key, int keylen, HashSum hash ); void HI_init(HashIterator *it, ConstHashTable table); int HI_next(HashIterator *it, const char **ppKey, int *pKeylen, void **ppObj); /* hash table flags */ #define HT_AUTOGROW 0x00000001 #define HT_AUTOSHRINK 0x00000002 #define HT_AUTOSIZE (HT_AUTOGROW|HT_AUTOSHRINK) /* debug flags */ #define DB_HASH_MAIN 0x00000001 #ifdef DEBUG_UTIL_HASH void HT_dump( ConstHashTable table ); int SetDebugHash( void (*dbfunc)(const char *, ...), unsigned long dbflags ); #else #define SetDebugHash( func, flags ) 0 #endif /** * Constructor * * Using the HT_new() function you create an empty hash table. * * \param size Hash table base size. You can specify * any value between 1 and 16. Depending * on how many elements you plan to store * in the hash table, values from 6 to 12 * can be considered useful. The number * of buckets created is 2^size, so if * you specify a size of 10, 1024 buckets * will be created and the empty hash * table will consume about 4kB of memory. * However, 1024 buckets will be enough * to very efficiently manage 100000 hash * elements. * * \return A handle to the newly created hash table. * * \see HT_new_ex(), HT_delete() and HT_destroy() */ #define HT_new( size ) HT_new_ex( size, 0 ) /** * Loop over all hash elements. * * The HT_foreach() macro is actually only a shortcut for the * following loop: * * \code * for( HT_reset(table); HT_next(table, (char **)&(pKey), NULL, (void **)&(pObj)); ) { * // do something with pKey and pObj * } * \endcode * * It is safe to use HT_foreach() even if \a hash table handle is NULL. * In that case, the loop won't be executed. * * \param pKey Variable that will receive a pointer * to the current hash key string. * * \param pObj Variable that will receive a pointer * to the current object. * * \param iter Pointer to hash iterator object. * * \param table Handle to an existing hash table. * * \see HT_reset() and HT_next() * \hideinitializer */ #define HT_foreach(pKey, pObj, iter, table) \ for (HI_init(&iter, table); HI_next(&iter, &(pKey), NULL, (void **)&(pObj)); ) /** * Loop over all hash keys. * * Like HT_foreach(), just that the value parameter isn't used. * * It is safe to use HT_foreach_keys() even if \a hash table handle is NULL. * In that case, the loop won't be executed. * * \param pKey Variable that will receive a pointer * to the current hash key string. * * \param iter Pointer to hash iterator object. * * \param table Handle to an existing hash table. * * \see HT_foreach() and HT_foreach_values() * \hideinitializer */ #define HT_foreach_keys(pKey, iter, table) \ for (HI_init(&iter, table); HI_next(&iter, &(pKey), NULL, NULL); ) /** * Loop over all hash values. * * Like HT_foreach(), just that the key parameter isn't used. * * It is safe to use HT_foreach_values() even if \a hash table handle is NULL. * In that case, the loop won't be executed. * * \param pObj Variable that will receive a pointer * to the current object. * * \param iter Pointer to hash iterator object. * * \param table Handle to an existing hash table. * * \see HT_foreach() and HT_foreach_keys() * \hideinitializer */ #define HT_foreach_values(pObj, iter, table) \ for (HI_init(&iter, table); HI_next(&iter, NULL, NULL, (void **)&(pObj)); ) #endif Convert-Binary-C-0.85/util/Makefile0000644000175000001440000000024414676735310015634 0ustar mhxusersPERL=/usr/bin/perl all: test test: test_files $(PERL) -MTest::Harness -e'runtests(@ARGV)' t/*.t clean: @rm -f t/*.t test_files: clean $(PERL) t/maketests.pl Convert-Binary-C-0.85/util/config.h0000644000175000001440000000075614676735310015622 0ustar mhxusers#ifndef _UTIL_CONFIG_H #define _UTIL_CONFIG_H #include extern void *CBC_malloc(size_t size); extern void *CBC_calloc(size_t count, size_t size); extern void *CBC_realloc(void *ptr, size_t size); extern void CBC_free(void *ptr); #define UTIL_MALLOC(size) CBC_malloc(size) #define UTIL_CALLOC(count, size) CBC_calloc(count, size) #define UTIL_REALLOC(ptr, size) CBC_realloc(ptr, size) #define UTIL_FREE(ptr) CBC_free(ptr) #define ABORT_IF_NO_MEM #endif Convert-Binary-C-0.85/util/ccattr.h0000644000175000001440000000263414677003452015626 0ustar mhxusers/******************************************************************************* * * HEADER: ccattr * ******************************************************************************** * * DESCRIPTION: Define special features of C compilers. * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _UTIL_CCATTR_H #define _UTIL_CCATTR_H /*--------*/ /* inline */ /*--------*/ #if defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 compiler, inline is a valid keyword */ #elif defined(__GNUC__) /* GNU compiler, inline is __inline__ */ # ifdef inline # undef inline # endif # if __GNUC__ >= 3 # define inline __inline__ __attribute__((always_inline)) # else # define inline __inline__ # endif #else /* Other compiler, forget about inline */ # ifdef inline # undef inline # endif # define inline #endif /*---------------*/ /* __attribute__ */ /*---------------*/ #if defined(__GNUC__) && ( __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) ) /* we can use attributes */ #else # ifdef __attribute__ # undef __attribute__ # endif # define __attribute__( x ) #endif #endif Convert-Binary-C-0.85/util/t/0000755000175000001440000000000014677003524014433 5ustar mhxusersConvert-Binary-C-0.85/util/t/maketests.pl0000644000175000001440000001015414676735310016775 0ustar mhxusersuse IO::File; while () { /\S/ or next; my $file = sprintf "t/%03d.t", ++$i; my $f = IO::File->new(">$file") or die "$file: $!\n"; print $f < 114, CFLAGS => [qw( -DMEMALLOC_TEST )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DAUTOPURGE_MEMALLOC )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DAUTOPURGE_MEMALLOC )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_HASH_BITS=14 -DMEMALLOC_HASH_OFFSET=2 -DMEMALLOC_TEST )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_HASH_BITS=14 -DMEMALLOC_HASH_OFFSET=2 -DMEMALLOC_TEST -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_HASH_BITS=14 -DMEMALLOC_HASH_OFFSET=2 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=1 -DMEMALLOC_TEST )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=1 -DMEMALLOC_TEST -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=1 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=100 -DMEMALLOC_TEST )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=100 -DMEMALLOC_TEST -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=100 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 522, CFLAGS => [qw( -DMEMALLOC_MAX_DIAG_DIST=1 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_MAX_DIAG_DIST=2 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_MAX_DIAG_DIST=3 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_MAX_DIAG_DIST=10000 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); Convert-Binary-C-0.85/util/t/test_memalloc.pl0000644000175000001440000001044514676735310017630 0ustar mhxusersuse strict; use IO::File; use IPC::Open3; use Data::Dumper; use Test; my $CC = 'cc'; my @CFLAGS = qw( -Wall -g ); my $TEST = './ma_test'; END { $ENV{MEMALLOC_TEST_NO_CLEANUP} or cleanup(); } sub test { my %opt = ( PLAN => 0, CFLAGS => [], TESTS => [ { ENV => {}, }, { ENV => { MEMALLOC_TEST_DEBUG => 1, }, }, { ENV => { MEMALLOC_TEST_ASSERT => 1, }, }, { ENV => { MEMALLOC_TEST_ASSERT => 1, MEMALLOC_TEST_DEBUG => 1, }, }, { ENV => { MEMALLOC_CHECK_FREED => 1, }, }, { ENV => { MEMALLOC_CHECK_FREED => 1, MEMALLOC_TEST_DEBUG => 1, }, }, { ENV => { MEMALLOC_CHECK_FREED => 1, MEMALLOC_TEST_ASSERT => 1, }, }, { ENV => { MEMALLOC_CHECK_FREED => 1, MEMALLOC_TEST_ASSERT => 1, MEMALLOC_TEST_DEBUG => 1, }, }, ], @_ ); plan( tests => $opt{PLAN} ); my @tests = @{$opt{TESTS}}; push @tests, map { { %$_, FILE => 'test.out' } } @tests; cleanup(); ok(1); build( %opt, SOURCE => 'memalloc.c', OUTPUT => $TEST ) or die "couldn't build test\n"; ok(1); for my $t ( @tests ) { my %env = %{$t->{ENV}}; if (exists $t->{FILE}) { $env{MEMALLOC_TEST_DEBUG_FILE} = $t->{FILE}; } $env{MEMALLOC_SOFT_ASSERT} = 1; comment(Dumper(\%env)); my $rv = run( \%env, $TEST ); comment(Dumper($rv)); $rv->{didnotrun} and die "couldn't run test\n"; ok($rv->{status}, 0); ok(not exists $rv->{core}); ok(not exists $rv->{signal}); ok(scalar @{$rv->{stdout}}, 0, "output on stdout"); -f 'test.ref' or die "no reference file\n"; ok(1); my @ref = slurp('test.ref'); my @out; if (exists $t->{FILE}) { ok(scalar @{$rv->{stderr}}, 0, "output on stderr"); ok(-f $t->{FILE}); @out = slurp($t->{FILE}); } else { @out = @{$rv->{stderr}}; } ok(scalar @out, scalar @ref, "differing number of lines in output/reference"); comment( "[Output]\n", @out, "[/Output]\n" ); comment( "[Reference]\n", @ref, "[/Reference]\n" ); chomp @ref; chomp @out; for my $i ( 0 .. $#ref ) { print qq(# "$out[$i]" - "$ref[$i]"\n); ok($out[$i], $ref[$i]); } rm( qw( test.out test.ref ) ); } } sub slurp { my $file = IO::File->new($_[0]) or die "$_[0]: $!\n"; <$file>; } sub cleanup { rm( qw( test.out test.ref ), $TEST ) } sub rm { -f and unlink || warn "$_: $!" for @_ } sub build { my %opt = ( CC => $CC, CFLAGS => [], @_ ); my @cflags = (@CFLAGS, @{$opt{CFLAGS}}); my $target; if (exists $opt{OBJECT}) { push @cflags, '-c'; $target = $opt{OBJECT}; } elsif (exists $opt{OUTPUT}) { $target = $opt{OUTPUT}; } else { return 0; } unless (exists $opt{SOURCE}) { return 0; } my $source = ref $opt{SOURCE} ? $opt{SOURCE} : [$opt{SOURCE}]; for my $s (@$source) { unless (-f $s) { return 0; } } my $rv = run( $opt{CC}, @cflags, '-o', $target, @$source ); comment(Dumper($rv)); @{$rv->{stderr}} and print STDERR "compiler output on stderr\n"; @{$rv->{stdout}} and print STDERR "compiler output on stdout\n"; if ($rv->{didnotrun} || $rv->{status}) { return 0; } return $target; } sub comment { my @d = @_; s/^/# /gm for @d; print @d; } sub run { my $env = ref $_[0] ? shift : {}; my $prog = shift; my @args = @_; local(*W, *S, *E); for my $e ( keys %$env ) { $ENV{$e} = $env->{$e}; } my $pid = open3(\*W, \*S, \*E, $prog, @args); my @sout = ; my @serr = ; waitpid($pid, 0); for my $e ( keys %$env ) { delete $ENV{$e}; } my %rval = ( status => $? >> 8, stdout => \@sout, stderr => \@serr, ); $rval{didnotrun} = 0; if( @serr && $serr[0] =~ /^Can't exec "\Q$prog\E":/ ) { $rval{didnotrun} = 1; } if( $^O eq 'MSWin32' && $rval{status} == 1 ) { $rval{didnotrun} = 1; } $? & 128 and $rval{core} = 1; $? & 127 and $rval{signal} = $? & 127; \%rval; } Convert-Binary-C-0.85/util/memalloc.h0000644000175000001440000003204414677003452016135 0ustar mhxusers/******************************************************************************* * * HEADER: memalloc * ******************************************************************************** * * DESCRIPTION: Memory allocation and tracing routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /** * \file memalloc.h * \brief Memory allocation and tracing routines * * The functions in this file provide an interface to * the standard malloc / free functions, but in addition * you can selectively enable tracing of your memory * allocation. This may be useful to detect memory leaks * or usage of already freed memory blocks. * * A Perl script is supplied to analyze the output of * the memory tracing routines. * * To enable the tracing capability, the library must be * compiled with the #DEBUG_MEMALLOC preprocessor flag. Then, * you can selectively enable the tracing for each file or * project by using the SetDebugMemAlloc() routine. * * The following code shows an example: * * \include Alloc.c * * Then, a file like this will be written to stdout: * * \verbinclude mem_debug.dat * * This output is easy to understand. It tells you that * * -# in file \c Alloc.c, line 9, there were 16 bytes allocated at address 0x400031C0, * -# in file \c Alloc.c, line 10, address 0x400031C0 was verified, * -# in file \c Alloc.c, line 11, the memory block at address 0x400031C0 was freed, * -# in file \c Alloc.c, line 12, address 0x400031C0 was verified again. * * These files usually become very large if you work a lot with * dynamic memory allocation. So it would be rather hard to step * through that file on your own. For that reason, there's a Perl * script called \c check_alloc.pl that will take \c mem_debug.dat * as input and print all errors discovered and summary statistics: * * \verbinclude mem_debug.out * * As you can see, the last call to AssertValidPtr() caused an error * because the block that was checked has already been freed. The * other output is only useful if you have lots of dynamic memory * allocation, for example: * * \verbinclude memdb_large.out * * This will tell you that a total of 32404 memory blocks have been * successfully allocated and freed, a maximum of 13305 memory blocks * were in use simultanously, the peak memory usage was 183675 bytes, * the smallest and largest block that were allocated were 2 and 29 * bytes in size, respectively, and there were no memory leaks detected. * */ #ifndef _UTIL_MEMALLOC_H #define _UTIL_MEMALLOC_H #include #ifdef UTIL_HAVE_CONFIG_H # include "config.h" #endif #if !(defined(UTIL_MALLOC) && defined(UTIL_CALLOC) && defined(UTIL_REALLOC) && defined(UTIL_FREE)) # include # define UTIL_MALLOC(size) malloc(size) # define UTIL_CALLOC(count, size) calloc(count, size) # define UTIL_REALLOC(ptr, size) realloc(ptr, size) # define UTIL_FREE(ptr) free(ptr) #endif #define DB_MEMALLOC_TRACE 0x00000001 #define DB_MEMALLOC_ASSERT 0x00000002 #ifdef DEBUG_MEMALLOC void *_memAlloc( size_t size, const char *file, int line ); void *_memCAlloc( size_t nobj, size_t size, const char *file, int line ); void *_memReAlloc( void *p, size_t size, const char *file, int line ); void _memFree( void *p, const char *file, int line ); void _assertValidPtr( const void *p, const char *file, int line ); void _assertValidBlock( const void *p, size_t size, const char *file, int line ); int SetDebugMemAlloc( void (*dbfunc)(const char *, ...), unsigned long dbflags ); #else void *_memAlloc( size_t size ); void *_memCAlloc( size_t nobj, size_t size ); void *_memReAlloc( void *p, size_t size ); void _memFree( void *p ); #endif /***************************************************************/ /* DOCUMENTATION */ /***************************************************************/ #ifdef DOXYGEN /** * Make memory allocation routines abort when out of memory * * Set this preprocessor flag if you want the Alloc(), CAlloc() * and ReAlloc() functions as well as the fast macros AllocF(), * CAllocF() and ReAllocF() to abort if the system runs out of * memory. */ #define ABORT_IF_NO_MEM /** * Compile with debugging support */ #define DEBUG_MEMALLOC /** * Compile with tracing / leak detection support * * This may slow down memory allocation if lots of blocks * are simultaneously allocted. It will also increase the * memory requirements of your application. * * On the plus side, you get run-time memory allocation tracing, * assertion checking, leak detection and memory statistics. * You can control the amount of statistics by setting the * MEMALLOC_STAT_LEVEL environment variable to a value between * 0 and 3, with increasing amount of output. * * If an assertion fails, the program will usually abort. * You can choose not to abort the program by setting * MEMALLOC_SOFT_ASSERT to a non-zero value in your * environment. * * If you want the memory allocator to keep information about * freed blocks, set MEMALLOC_CHECK_FREED to a non-zero value. * This can give more detailed trace output at the cost of * slower execution. * * If you like to see hex dumps of non-freed memory blocks, * you can set MEMALLOC_SHOW_DUMPS to a non-zero value. * * Only works if DEBUG_MEMALLOC is also defined. */ #define TRACE_MEMALLOC /** * Build with memory allocator that automatically purges * allocated / freed memory blocks. * * Only works if DEBUG_MEMALLOC is also defined. */ #define AUTOPURGE_MEMALLOC /** * Build without support for the Alloc(), CAlloc() and * ReAlloc() functions. Memory management is completely * carried out through the use of the fast allocation * macros AllocF(), CAllocF() and ReAllocF(). */ #define NO_SLOW_MEMALLOC_CALLS /** * Allocate a memory block * * Allocates a memory block of \a size bytes. If the files * were compiled with the #ABORT_IF_NO_MEM preprocessor flag, * the function aborts if no memory can be allocated. * * \param size Size of the memory block in bytes. * * \return A pointer to the allocated memory block, or NULL * if memory couldn't be allocated. */ void *Alloc( size_t size ); /** * Allocate a memory block and initialize to zero * * Allocates a memory block to hold \a nobj times * \a size bytes. If the files were compiled with the * #ABORT_IF_NO_MEM preprocessor flag, the function * aborts if no memory can be allocated. * * \param nobj Number of objects. * * \param size Size of one object in bytes. * * \return A pointer to the allocated memory block, or NULL * if memory couldn't be allocated. */ void *CAlloc( size_t nobj, size_t size ); /** * Reallocate a memory block * * Reallocates a memory block of \a size bytes. If the files * were compiled with the #ABORT_IF_NO_MEM preprocessor flag, * the function aborts if no memory can be allocated. * * \param ptr Pointer to an allocated memory block. * * \param size Size of new memory block in bytes. * * \return A pointer to the reallocated memory block, or NULL * if memory couldn't be reallocated. */ void *ReAlloc( void *ptr, size_t size ); /** * Fast Alloc Macro * * Allocates a memory block of \a size bytes. If the files * were compiled with the #ABORT_IF_NO_MEM preprocessor flag, * the function aborts if no memory can be allocated. * * \param cast Pointer cast. * * \param ptr Pointer to memory block. * * \param size Size of the memory block in bytes. */ #define AllocF( cast, ptr, size ) /** * Fast CAlloc Macro * * Allocates a memory block to hold \a nobj times * \a size bytes. If the files were compiled with the * #ABORT_IF_NO_MEM preprocessor flag, the function * aborts if no memory can be allocated. * * \param cast Pointer cast. * * \param ptr Pointer to memory block. * * \param nobj Number of objects. * * \param size Size of one object in bytes. */ #define CAllocF( cast, ptr, nobj, size ) /** * Fast ReAlloc Macro * * Reallocates a memory block of \a size bytes. If the files * were compiled with the #ABORT_IF_NO_MEM preprocessor flag, * the function aborts if no memory can be allocated. * * \param cast Pointer cast. * * \param ptr Pointer to memory block. * * \param size Size of new memory block in bytes. */ #define ReAllocF( cast, ptr, size ) /** * Free a memory block * * Frees a memory block that has been previously allocated * using the Alloc() function. * * \param ptr Pointer to a previously allocated * memory block. */ void Free( void *ptr ); /** * Trace pointer access. * * This may prove useful for checking if \a ptr points to * an existing, previously allocated, not yet freed memory * block. * * \param ptr Pointer to be traced. */ void AssertValidPtr( void *ptr ); /** * Trace memory block access. * * Allows checking if a certain memory block lies within * a previously allocated memory block. * * \param ptr Pointer to memory block. * * \param size Size of memory block. */ void AssertValidBlock( void *ptr, size_t size ); /** * Configure debugging support. * * \param dbfunc Pointer to a printf() like function * for writing the debug output. * * \param dbflags Binary ORed debugging flags. Currently, * you can request memory allocation tracing * with \c DB_MEMALLOC_TRACE and pointer * assertions with \c DB_MEMALLOC_ASSERT. */ int SetDebugMemAlloc( void (*dbfunc)(char *, ...), unsigned long dbflags ); #else /* !DOXYGEN */ /***************************************************************/ /* END OF DOCUMENTATION */ /***************************************************************/ #ifdef ABORT_IF_NO_MEM # define abortMEMALLOC( call, size, expr ) \ do { \ size_t tmp_size__ = (size); \ if( (expr) == NULL && tmp_size__ > 0 ) { \ fprintf(stderr, "%s(%u): out of memory!\n", \ call, (unsigned) tmp_size__); \ abort(); \ } \ } while(0) #else # define abortMEMALLOC( call, size, expr ) do { (void) (expr); } while(0) #endif #ifdef DEBUG_MEMALLOC # ifndef NO_SLOW_MEMALLOC_CALLS # define ReAlloc( ptr, size ) _memReAlloc( ptr, size, __FILE__, __LINE__ ) # define CAlloc( nobj, size ) _memCAlloc( nobj, size, __FILE__, __LINE__ ) # define Alloc( size ) _memAlloc( size, __FILE__, __LINE__ ) # endif # define Free( ptr ) _memFree( ptr, __FILE__, __LINE__ ) # define AssertValidPtr( ptr ) _assertValidPtr( ptr, __FILE__, __LINE__ ) # define AssertValidBlock( ptr, size ) _assertValidBlock( ptr, size, __FILE__, __LINE__ ) # define ReAllocF( cast, ptr, size ) \ do { ptr = (cast) _memReAlloc( ptr, size, __FILE__, __LINE__ ); } while(0) # define CAllocF( cast, ptr, nobj, size ) \ do { ptr = (cast) _memCAlloc( nobj, size, __FILE__, __LINE__ ); } while(0) # define AllocF( cast, ptr, size ) \ do { ptr = (cast) _memAlloc( size, __FILE__, __LINE__ ); } while(0) #else /* !DEBUG_MEMALLOC */ # ifndef NO_SLOW_MEMALLOC_CALLS # ifdef ABORT_IF_NO_MEM # define ReAlloc( ptr, size ) _memReAlloc( ptr, size ) # define CAlloc( nobj, size ) _memCAlloc( nobj, size ) # define Alloc( size ) _memAlloc( size ) # else # define ReAlloc( ptr, size ) UTIL_REALLOC( ptr, size ) # define CAlloc( nobj, size ) UTIL_CALLOC( nobj, size ) # define Alloc( size ) UTIL_MALLOC( size ) # endif # endif # define Free( ptr ) do { if( ptr ) UTIL_FREE( ptr ); } while(0) # define AssertValidPtr( ptr ) (void) 0 # define AssertValidBlock( ptr, size ) (void) 0 # define SetDebugMemAlloc( func, flags ) 0 # define ReAllocF( cast, ptr, size ) \ abortMEMALLOC( "ReAllocF", size, ptr = (cast) UTIL_REALLOC( ptr, size ) ) # define CAllocF( cast, ptr, nobj, size ) \ abortMEMALLOC( "CAllocF", nobj*size, ptr = (cast) UTIL_CALLOC( nobj, size ) ) # define AllocF( cast, ptr, size ) \ abortMEMALLOC( "AllocF", size, ptr = (cast) UTIL_MALLOC( size ) ) #endif /* DEBUG_MEMALLOC */ #endif /* DOXYGEN */ #endif Convert-Binary-C-0.85/util/doxyfile0000644000175000001440000001445614676735310015754 0ustar mhxusers# Doxyfile 0.1 #--------------------------------------------------------------------------- # General configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "Common Data Structures Library" PROJECT_NUMBER = OUTPUT_DIRECTORY = doc OUTPUT_LANGUAGE = English EXTRACT_ALL = NO EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO HIDE_UNDOC_MEMBERS = YES HIDE_UNDOC_CLASSES = YES BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ALWAYS_DETAILED_SEC = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = INTERNAL_DOCS = NO CLASS_DIAGRAMS = YES SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES CASE_SENSE_NAMES = YES SHORT_NAMES = NO HIDE_SCOPE_NAMES = NO VERBATIM_HEADERS = YES SHOW_INCLUDE_FILES = YES JAVADOC_AUTOBRIEF = YES INHERIT_DOCS = YES INLINE_INFO = YES SORT_MEMBER_DOCS = NO DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES ALIASES = ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 OPTIMIZE_OUTPUT_FOR_C = YES SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = hash.h \ hash.c \ list.h \ list.c \ memalloc.h \ memalloc.c FILE_PATTERNS = RECURSIVE = NO EXCLUDE = EXCLUDE_PATTERNS = EXAMPLE_PATH = doxyinc EXAMPLE_PATTERNS = IMAGE_PATH = INPUT_FILTER = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_HEADER = doxyinc/header.inc HTML_FOOTER = doxyinc/footer.inc HTML_STYLESHEET = doxyinc/doxygen.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = YES GENERATE_CHI = YES BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = YES LATEX_OUTPUT = latex COMPACT_LATEX = NO PAPER_TYPE = a4 EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = YES USE_PDFLATEX = YES LATEX_BATCHMODE = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = DOXYGEN EXPAND_AS_DEFINED = #--------------------------------------------------------------------------- # Configuration::addtions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- HAVE_DOT = NO CLASS_GRAPH = YES COLLABORATION_GRAPH = YES TEMPLATE_RELATIONS = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES GRAPHICAL_HIERARCHY = YES DOT_PATH = DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO CGI_NAME = search.cgi CGI_URL = DOC_URL = DOC_ABSPATH = BIN_ABSPATH = /usr/local/bin/ EXT_DOC_PATHS = Convert-Binary-C-0.85/util/memalloc.c0000644000175000001440000010366514677003452016140 0ustar mhxusers/******************************************************************************* * * MODULE: memalloc * ******************************************************************************** * * DESCRIPTION: Memory allocation and tracing routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #include "ccattr.h" #if defined(DEBUG_MEMALLOC) #include "memalloc.h" #ifdef DEBUG_MEMALLOC # ifdef AUTOPURGE_MEMALLOC # include # endif # ifdef UTIL_FORMAT_CHECK # define DEBUG( flag, out ) debug_check out static void debug_check( const char *str, ... ) __attribute__(( __format__( __printf__, 1, 2 ), __noreturn__ )); # else # define DEBUG( flag, out ) \ do { \ if( gs_dbfunc && ((DB_MEMALLOC_ ## flag) & gs_dbflags) ) \ gs_dbfunc out ; \ } while(0) # endif static void (*gs_dbfunc)(const char *, ...) = NULL; static unsigned long gs_dbflags = 0; #else /* !DEBUG_MEMALLOC */ # define DEBUG( flag, out ) #endif #ifndef MEMALLOC_MAX_DIAG_DIST # define MEMALLOC_MAX_DIAG_DIST 256 #endif #ifndef MEMALLOC_BUCKET_SIZE_INCR # define MEMALLOC_BUCKET_SIZE_INCR 4 #endif #ifndef MEMALLOC_HASH_OFFSET # define MEMALLOC_HASH_OFFSET 4 #endif #ifndef MEMALLOC_HASH_BITS # define MEMALLOC_HASH_BITS 8 #endif #ifndef HEX_BYTES_PER_LINE # define HEX_BYTES_PER_LINE 16 #endif #if defined(DEBUG_MEMALLOC) && defined(TRACE_MEMALLOC) #ifndef MEM_TRACE_REALLOC # define MEM_TRACE_REALLOC realloc #endif #ifndef MEM_TRACE_FREE # define MEM_TRACE_FREE free #endif #include #include #include #include #include #ifndef ULONG_MAX # define ULONG_MAX ((1<<(8*sizeof(unsigned long)))-1) #endif #define HASH_BUCKET( ptr ) ((((unsigned long)(ptr)) >> MEMALLOC_HASH_OFFSET) \ & ((1 << MEMALLOC_HASH_BITS) - 1)) #define TRACE_MSG( msg ) (void) (gs_dbfunc ? gs_dbfunc : trace_msg) msg #define free_slot( p ) \ do { \ gs_memstat.free++; \ gs_memstat.total_blocks--; \ gs_memstat.total_bytes -= p->size; \ if( MEMALLOC_FLAG(env.check_freed) ) \ (p)->freed = 1; \ else { \ (p)->ptr = NULL; \ (p)->size = 0; \ } \ } while(0) typedef struct { const void *ptr; const char *file; int line; unsigned freed:1; size_t size; unsigned long serial; } MemTrace; typedef struct { int size; MemTrace *block; } MemTraceBucket; static struct { unsigned long alloc; unsigned long free; unsigned long total_blocks; unsigned long total_bytes; unsigned long max_total_blocks; unsigned long max_total_bytes; size_t min_alloc; size_t max_alloc; double avg_alloc; } gs_memstat; static struct { int initialized; struct { int soft_assert; int check_freed; int show_dumps; } env; } gs_flags; static int gs_stat_level = -1; static unsigned long gs_serial = 0; static MemTraceBucket gs_trace[1<= 1 ) { if( gs_serial == ULONG_MAX ) TRACE_MSG(("*** serial number overflow, results may be inaccurate ***\n")); TRACE_MSG(("--------------------------------\n")); if( level >= 2 ) TRACE_MSG((" serials used : %lu\n", gs_serial)); TRACE_MSG((" total allocs : %lu\n", gs_memstat.alloc)); TRACE_MSG((" total frees : %lu\n", gs_memstat.free)); TRACE_MSG((" max mem blocks : %lu\n", gs_memstat.max_total_blocks)); TRACE_MSG((" max mem usage : %lu byte%s\n", gs_memstat.max_total_bytes, gs_memstat.max_total_bytes == 1 ? "" : "s")); if( gs_memstat.max_total_blocks > 0 ) { TRACE_MSG((" smallest block : %d byte%s\n", gs_memstat.min_alloc, gs_memstat.min_alloc == 1 ? "" : "s")); TRACE_MSG((" largest block : %d byte%s\n", gs_memstat.max_alloc, gs_memstat.max_alloc == 1 ? "" : "s")); TRACE_MSG((" average block : %.1f bytes\n", gs_memstat.avg_alloc/(double)gs_memstat.alloc)); } if( gs_memstat.total_blocks > 0 ) { TRACE_MSG((" memory leakage : %d byte%s in %d block%s\n", gs_memstat.total_bytes, gs_memstat.total_bytes == 1 ? "" : "s", gs_memstat.total_blocks, gs_memstat.total_blocks == 1 ? "" : "s" )); } TRACE_MSG(("--------------------------------\n")); } min_buck = max_buck = gs_trace[0].size; for( b = 0, buck = &gs_trace[0]; (unsigned)b < sizeof(gs_trace)/sizeof(gs_trace[0]); ++b, ++buck ) { if( level >= 3 ) { TRACE_MSG(("bucket %d used %d bytes in %d blocks\n", b, buck->size*sizeof(MemTrace), buck->size)); } if( buck->size < min_buck ) min_buck = buck->size; if( buck->size > max_buck ) max_buck = buck->size; if( buck->block != NULL ) { assert( buck->size > 0 ); bytes_used += buck->size*sizeof(MemTrace); for( i = 0; i < buck->size; ++i ) { MemTrace *p = &buck->block[i]; if( p->ptr != NULL && !p->freed ) { TRACE_MSG(("(%d) leaked %d bytes at %p allocated in %s:%d\n", p->serial, p->size, p->ptr, p->file, p->line)); gs_memstat.total_blocks--; gs_memstat.total_bytes -= p->size; #ifdef MEMALLOC_FREE_BLOCKS_AT_EXIT UTIL_FREE( (void *) p->ptr ); #endif } } #ifdef MEMALLOC_FREE_BLOCKS_AT_EXIT MEM_TRACE_FREE( buck->block ); #endif } else { assert( buck->size == 0 ); empty_buckets++; } } if( level >= 2 ) { TRACE_MSG(("memalloc tracing used %d bytes in %d buckets (%d empty)\n", bytes_used, b, empty_buckets)); TRACE_MSG(("min/max bucket size was %d/%d blocks\n", min_buck, max_buck)); } assert( gs_memstat.total_blocks == 0 ); assert( gs_memstat.total_bytes == 0 ); } static inline MemTrace *get_empty_slot( const void *ptr ) { MemTraceBucket *buck; MemTrace *p; int i, pos = -1; assert( ptr != NULL ); buck = &gs_trace[ HASH_BUCKET(ptr) ]; for( i = 0; i < buck->size; ++i ) { p = &buck->block[i]; if( p->ptr == ptr ) { if( p->freed ) { p->ptr = NULL; p->size = 0; p->freed = 0; return p; } return NULL; } if( pos < 0 && p->ptr == NULL ) pos = i; } if( pos < 0 ) pos = buck->size; if( pos >= buck->size ) { buck->size = pos + MEMALLOC_BUCKET_SIZE_INCR; buck->block = MEM_TRACE_REALLOC( buck->block, buck->size * sizeof(MemTrace) ); if( buck->block == NULL ) { fprintf(stderr, "panic: out of memory in get_empty_slot()\n"); abort(); } for( p = &buck->block[i = pos]; i < buck->size; ++i, ++p ) { p->ptr = NULL; p->size = 0; p->freed = 0; } } return &buck->block[pos]; } static inline MemTrace *find_slot( const void *ptr ) { MemTraceBucket *buck; MemTrace *p; int pos; buck = &gs_trace[ HASH_BUCKET(ptr) ]; for( pos = 0; pos < buck->size; ++pos ) { p = &buck->block[pos]; if( p->ptr == ptr ) return p; } return NULL; } static void hex_dump( const void *ptr, size_t len ) { const unsigned char *px = ptr; unsigned long pos = 0; for( pos = 0; pos < len; pos += HEX_BYTES_PER_LINE ) { int i; TRACE_MSG(("%08lX ", pos)); for( i = 0; pos+i < len && i < HEX_BYTES_PER_LINE; i++ ) TRACE_MSG(("%s%02X", i%4 ? " " : " ", px[pos+i])); for( ; i < HEX_BYTES_PER_LINE; i++ ) TRACE_MSG(("%s ", i%4 ? " " : " ")); TRACE_MSG((" ")); for( i = 0; pos+i < len && i < HEX_BYTES_PER_LINE; i++ ) TRACE_MSG(("%s%c", i%4 ? "" : " ", px[pos+i] < 32 || px[pos+i] > 127 ? '.' : px[pos+i])); TRACE_MSG(("\n")); } } static void diag_ptr( const void *ptr ) { const char *px = ptr; int b, i, delta = -1; MemTraceBucket *buck; MemTrace *best = NULL; enum Match { None, BeforeF, AfterF, BeforeA, AfterA, InsideF, InsideA, Freed } match = None; assert( ptr != NULL ); for( b = 0, buck = &gs_trace[0]; (unsigned)b < sizeof(gs_trace)/sizeof(gs_trace[0]); ++b, ++buck ) for( i = 0; i < buck->size; ++i ) { MemTrace *p = &buck->block[i]; if( p->ptr != NULL ) { const char *ps = p->ptr; const char *pe = ps + p->size; enum Match m = None; int d = 0; if( ps == px && p->freed ) { m = Freed; } else if( ps <= px && px < pe ) { m = p->freed ? InsideF : InsideA; } else if( px >= pe ) { m = p->freed ? AfterF : AfterA; d = (px - pe) + 1; } else { assert( px < ps ); m = p->freed ? BeforeF : BeforeA; d = ps - px; } assert( m != None ); if( (m > match && d < MEMALLOC_MAX_DIAG_DIST) || (m == match && d < delta) ) { match = m; delta = d; best = p; } } } if( match != None ) { const char *type, *s1, *s2; assert( delta >= 0 && delta < MEMALLOC_MAX_DIAG_DIST ); assert( best != NULL ); type = best->freed ? "a freed" : "an allocated"; s1 = delta == 1 ? "" : "s"; s2 = best->size == 1 ? "" : "s"; switch( match ) { case BeforeF: case BeforeA: TRACE_MSG((" %p is %d byte%s before %s block of %d byte%s at %p (%s:%d)\n", ptr, delta, s1, type, best->size, s2, best->ptr, best->file, best->line)); break; case AfterF: case AfterA: TRACE_MSG((" %p is %d byte%s behind %s block of %d byte%s at %p (%s:%d)\n", ptr, delta, s1, type, best->size, s2, best->ptr, best->file, best->line)); break; case InsideF: case InsideA: assert( delta == 0 ); TRACE_MSG((" %p is inside %s block of %d byte%s at %p (%s:%d)\n", ptr, type, best->size, s2, best->ptr, best->file, best->line)); break; case Freed: assert( delta == 0 ); TRACE_MSG((" %p points to a block of %d byte%s already freed (%s:%d)\n", ptr, best->size, s2, best->file, best->line)); break; default: fprintf(stderr, "panic: unknown match type (%d)\n", (int) match); abort(); break; } if( !best->freed && MEMALLOC_FLAG(env.show_dumps) ) hex_dump( best->ptr, best->size ); } } static void diag_range( const void *ptr, size_t size ) { const char *pS, *pE; int b, i, delta = -1, overlap = -1; MemTraceBucket *buck; MemTrace *best = NULL; enum Match { None, BeforeF, AfterF, BeforeA, AfterA, OverlapF, OverlapA, InsideF, Freed } match = None; assert( ptr != NULL ); assert( size > 0 ); pS = ptr; pE = pS + size; for( b = 0, buck = &gs_trace[0]; (unsigned)b < sizeof(gs_trace)/sizeof(gs_trace[0]); ++b, ++buck ) for( i = 0; i < buck->size; ++i ) { MemTrace *p = &buck->block[i]; if( p->ptr != NULL ) { const char *ps = p->ptr; const char *pe = ps + p->size; enum Match m = None; int d = 0, o = 0; /* pS pE * |===================| * : : * ps |--:-------------------:-----| pe -> inside * ps |---------|:pe : -> after * ps |--:------| pe : -> overlap * : ps |---------| pe : -> overlap * : ps |----:----| pe -> overlap * : : ps |---------| pe -> before * : | * |===================| */ if( ps == pS && pe == pE && p->freed ) { m = Freed; } else if( ps <= pS && pe >= pE && p->freed ) { m = InsideF; } else if( pS <= ps && ps <= pE ) { m = p->freed ? OverlapF : OverlapA; o = pE - ps; } else if( pS <= pe && pe <= pE ) { m = p->freed ? OverlapF : OverlapA; o = pe - pS; } else if( pS > pe ) { m = p->freed ? AfterF : AfterA; d = pS - pe; } else { assert( pE < ps ); m = p->freed ? BeforeF : BeforeA; d = ps - pE; } assert( m != None ); if( (m > match && d < MEMALLOC_MAX_DIAG_DIST) || (m == match && (d < delta || o > overlap)) ) { match = m; delta = d; overlap = o; best = p; } } } if( match != None ) { const char *type, *s1, *s2, *s3; assert( delta >= 0 && delta < MEMALLOC_MAX_DIAG_DIST ); assert( best != NULL ); type = best->freed ? "a freed" : "an allocated"; s1 = delta == 1 ? "" : "s"; s2 = best->size == 1 ? "" : "s"; s3 = overlap == 1 ? "" : "s"; switch( match ) { case BeforeF: case BeforeA: assert( overlap == 0 ); TRACE_MSG((" %p(%d) is %d byte%s before %s block of %d byte%s at %p (%s:%d)\n", ptr, size, delta, s1, type, best->size, s2, best->ptr, best->file, best->line)); break; case AfterF: case AfterA: assert( overlap == 0 ); TRACE_MSG((" %p(%d) is %d byte%s behind %s block of %d byte%s at %p (%s:%d)\n", ptr, size, delta, s1, type, best->size, s2, best->ptr, best->file, best->line)); break; case OverlapF: case OverlapA: assert( delta == 0 ); assert( overlap > 0 ); TRACE_MSG((" %p(%d) overlaps %d byte%s with %s block of %d byte%s at %p (%s:%d)\n", ptr, size, overlap, s3, type, best->size, s2, best->ptr, best->file, best->line)); break; case InsideF: assert( delta == 0 ); TRACE_MSG((" %p(%d) is inside %s block of %d byte%s at %p (%s:%d)\n", ptr, size, type, best->size, s2, best->ptr, best->file, best->line)); break; case Freed: assert( delta == 0 ); TRACE_MSG((" %p(%d) matches a block already freed (%s:%d)\n", ptr, size, best->file, best->line)); break; default: fprintf(stderr, "panic: unknown match type (%d)\n", (int) match); abort(); break; } if( !best->freed && MEMALLOC_FLAG(env.show_dumps) ) hex_dump( best->ptr, best->size ); } } static inline void init_trace(size_t first_alloc_size) { const char *str; assert(gs_serial == 0); if( (str = getenv("MEMALLOC_STAT_LEVEL")) != NULL ) gs_stat_level = atoi(str); gs_memstat.min_alloc = gs_memstat.max_alloc = first_alloc_size; atexit( trace_leaks ); } static inline int trace_add( const void *ptr, size_t size, const char *file, int line ) { MemTrace *p; assert( file != NULL ); if( ptr == NULL ) { if( size == 0 ) return 1; TRACE_MSG(("request for %d bytes failed in %s:%d\n", size, file, line)); return 0; } if( (p = get_empty_slot(ptr)) == NULL ) { TRACE_MSG(("pointer %p has already been allocated in %s:%d\n", ptr, file, line)); return 0; } if( gs_serial == 0 ) init_trace(size); gs_memstat.alloc++; gs_memstat.total_blocks++; gs_memstat.total_bytes += size; if( gs_memstat.total_blocks > gs_memstat.max_total_blocks ) gs_memstat.max_total_blocks = gs_memstat.total_blocks; if( gs_memstat.total_bytes > gs_memstat.max_total_bytes ) gs_memstat.max_total_bytes = gs_memstat.total_bytes; if( size < gs_memstat.min_alloc ) gs_memstat.min_alloc = size; if( size > gs_memstat.max_alloc ) gs_memstat.max_alloc = size; gs_memstat.avg_alloc += (double) size; p->ptr = ptr; p->file = file; p->line = line; p->size = size; p->serial = gs_serial; if( gs_serial < ULONG_MAX ) gs_serial++; return 1; } static inline int trace_del( const void *ptr, const char *file, int line ) { MemTrace *p; assert( file != NULL ); if( ptr == NULL ) { TRACE_MSG(("trying to free NULL pointer in %s:%d\n", ptr, file, line)); return 0; } if( (p = find_slot(ptr)) == NULL ) { TRACE_MSG(("pointer %p has not yet been allocated in %s:%d\n", ptr, file, line)); diag_ptr(ptr); return 0; } if( p->freed ) { TRACE_MSG(("pointer %p has already been freed in %s:%d\n", ptr, file, line)); return 0; } free_slot( p ); return 1; } static inline int trace_upd( const void *old, const void *ptr, size_t size, const char *file, int line ) { MemTrace *p; assert( file != NULL ); if( old != ptr && old != NULL ) { if( (p = find_slot(old)) == NULL ) { TRACE_MSG(("pointer %p has not yet been allocated in %s:%d\n", old, file, line)); diag_ptr(old); } else if( p->freed ) TRACE_MSG(("pointer %p has already been freed in %s:%d\n", ptr, file, line)); else free_slot( p ); } if( ptr == NULL ) { if( size == 0 ) return 1; TRACE_MSG(("request for %d bytes failed in %s:%d\n", size, file, line)); return 0; } p = NULL; if( old == ptr ) { if( (p = find_slot(ptr)) == NULL ) { TRACE_MSG(("pointer %p has not yet been allocated in %s:%d\n", ptr, file, line)); diag_ptr(ptr); } else if( p->freed ) { TRACE_MSG(("pointer %p has already been freed in %s:%d\n", ptr, file, line)); p->size = 0; p->freed = 0; } else { gs_memstat.alloc++; gs_memstat.free++; } } if( p == NULL ) { if( (p = get_empty_slot(ptr)) == NULL ) { TRACE_MSG(("pointer %p has already been allocated in %s:%d\n", ptr, file, line)); return 0; } gs_memstat.alloc++; gs_memstat.total_blocks++; if( gs_memstat.total_blocks > gs_memstat.max_total_blocks ) gs_memstat.max_total_blocks = gs_memstat.total_blocks; } if( gs_serial == 0 ) init_trace(size); gs_memstat.total_bytes += size - p->size; if( gs_memstat.total_bytes > gs_memstat.max_total_bytes ) gs_memstat.max_total_bytes = gs_memstat.total_bytes; if( size < gs_memstat.min_alloc ) gs_memstat.min_alloc = size; if( size > gs_memstat.max_alloc ) gs_memstat.max_alloc = size; gs_memstat.avg_alloc += (double) size; p->ptr = ptr; p->file = file; p->line = line; p->size = size; p->serial = gs_serial; if( gs_serial < ULONG_MAX ) gs_serial++; return 1; } static inline int trace_check_ptr( const void *ptr, const char *file, int line ) { MemTrace *p; if( ptr != NULL && (p =find_slot(ptr)) != NULL && !p->freed ) return 1; TRACE_MSG(("Assertion failed: %p is not a valid pointer in %s:%d\n", ptr, file, line)); if( ptr != NULL ) diag_ptr(ptr); if( MEMALLOC_FLAG(env.soft_assert) == 0 ) abort(); return 0; } static inline int trace_check_range( const void *ptr, size_t size, const char *file, int line ) { int b, i; MemTraceBucket *buck; if( ptr != NULL && size > 0 ) { for( b = 0, buck = &gs_trace[0]; (unsigned)b < sizeof(gs_trace)/sizeof(gs_trace[0]); ++b, ++buck ) for( i = 0; i < buck->size; ++i ) { MemTrace *pmt = &buck->block[i]; if( pmt->ptr != NULL && !pmt->freed ) { const char *bs = pmt->ptr; const char *be = bs + pmt->size; const char *cs = ptr; const char *ce = cs + size; int s_in_b = bs <= cs && cs <= be; int e_in_b = bs <= ce && ce <= be; if( s_in_b && e_in_b ) return 1; } } } TRACE_MSG(("Assertion failed: %p(%d) is not a valid block in %s:%d\n", ptr, size, file, line)); if( ptr != NULL && size > 0 ) diag_range(ptr, size); if( MEMALLOC_FLAG(env.soft_assert) == 0 ) abort(); return 0; } #else #define trace_add( ptr, size, file, line ) 1 #define trace_upd( old, ptr, size, file, line ) 1 #define trace_del( ptr, file, line ) 1 #define trace_check_ptr( ptr, file, line ) 1 #define trace_check_range( ptr, size, file, line ) 1 #endif /* defined(DEBUG_MEMALLOC) && defined(TRACE_MEMALLOC) */ #ifdef DEBUG_MEMALLOC void *_memAlloc( size_t size, const char *file, int line ) #else void *_memAlloc( size_t size ) #endif { void *p; #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) p = UTIL_MALLOC( size + sizeof( size_t ) ); #else p = UTIL_MALLOC( size ); #endif abortMEMALLOC( "_memAlloc", size, p ); #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) if( p != NULL ) { *((size_t *)p) = size; p = (void *)(((size_t *)p)+1); } #endif (void) trace_add( p, size, file, line ); DEBUG( TRACE, ("%s(%d):A=%d@%08lX\n", file, line, size, (unsigned long)p) ); return p; } #ifdef DEBUG_MEMALLOC void *_memCAlloc( size_t nobj, size_t size, const char *file, int line ) #else void *_memCAlloc( size_t nobj, size_t size ) #endif { void *p; #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) p = UTIL_MALLOC( nobj*size + sizeof( size_t ) ); #else p = UTIL_CALLOC( nobj, size ); #endif abortMEMALLOC( "_memCAlloc", nobj*size, p ); #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) if( p != NULL ) { *((size_t *)p) = size; p = (void *)(((size_t *)p)+1); memset( p, 0, nobj*size ); } #endif (void) trace_add( p, nobj*size, file, line ); DEBUG( TRACE, ("%s(%d):A=%d@%08lX\n", file, line, nobj*size, (unsigned long)p) ); return p; } #ifdef DEBUG_MEMALLOC void *_memReAlloc( void *p, size_t size, const char *file, int line ) #else void *_memReAlloc( void *p, size_t size ) #endif { #if defined(DEBUG_MEMALLOC) && defined(TRACE_MEMALLOC) void *oldp = p; #endif #ifdef DEBUG_MEMALLOC if( p != NULL ) DEBUG( TRACE, ("%s(%d):F=%08lX\n", file, line, (unsigned long)p) ); #endif #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) if( p != NULL ) { size_t old_size; p = (void *)(((size_t *)p)-1); old_size = *((size_t *)p); if( old_size > size ) memset( ((char *)p) + sizeof(size_t) + size, 0xA5, old_size - size ); } if( size != 0 ) p = UTIL_REALLOC( p, size + sizeof( size_t ) ); #else p = UTIL_REALLOC( p, size ); #endif abortMEMALLOC( "_memReAlloc", size, p ); #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) if( p != NULL ) { *((size_t *)p) = size; p = (void *)(((size_t *)p)+1); } #endif #ifdef DEBUG_MEMALLOC if( size != 0 ) DEBUG( TRACE, ("%s(%d):A=%d@%08lX\n", file, line, size, (unsigned long)p) ); (void) trace_upd( oldp, p, size, file, line ); #endif return p; } #ifdef DEBUG_MEMALLOC void _memFree( void *p, const char *file, int line ) { DEBUG( TRACE, ("%s(%d):F=%08lX\n", file, line, (unsigned long)p) ); if( trace_del( p, file, line ) && p ) { #ifdef AUTOPURGE_MEMALLOC size_t size; p = (void *)(((size_t *)p)-1); size = *((size_t *)p); memset( p, 0xA5, size + sizeof( size_t ) ); #endif UTIL_FREE( p ); } } void _assertValidPtr( const void *p, const char *file, int line ) { DEBUG( ASSERT, ("%s(%d):V=%08lX\n", file, line, (unsigned long)p) ); (void) trace_check_ptr( p, file, line ); } void _assertValidBlock( const void *p, size_t size, const char *file, int line ) { DEBUG( ASSERT, ("%s(%d):B=%d@%08lX\n", file, line, size, (unsigned long)p) ); (void) trace_check_range( p, size, file, line ); } #ifdef UTIL_FORMAT_CHECK static void debug_check( const char *str __attribute__(( __unused__ )), ... ) { fprintf( stderr, "compiled with UTIL_FORMAT_CHECK, please don't run\n" ); abort(); } #endif int SetDebugMemAlloc( void (*dbfunc)(const char *, ...), unsigned long dbflags ) { gs_dbfunc = dbfunc; gs_dbflags = dbflags; return 1; } #endif /* DEBUG_MEMALLOC */ #else /* avoid empty source file warning */ extern int _memalloc___notused __attribute__((unused)); #endif /* defined(DEBUG_MEMALLOC) */ /* ============================================================= */ /* ==================== TEST CODE FOLLOWING ==================== */ /* ============================================================= */ #ifdef MEMALLOC_TEST #include #include #include "memalloc.h" static FILE *ftest; static FILE *fdebug; static struct { int debug; int assert; int check_freed; int stat_level; } flags; static void t_trace( const char *fmt, ... ) { va_list l; va_start(l, fmt); #if defined(DEBUG_MEMALLOC) && defined(TRACE_MEMALLOC) vfprintf(ftest, fmt, l); #endif va_end(l); } #if defined(DEBUG_MEMALLOC) static void t_debug( const char *fmt, ... ) { va_list l; va_start(l, fmt); if( flags.debug ) vfprintf(ftest, fmt, l); va_end(l); } #endif static void t_assert( const char *fmt, ... ) { va_list l; va_start(l, fmt); #if defined(DEBUG_MEMALLOC) if( flags.assert ) vfprintf(ftest, fmt, l); #endif va_end(l); } #define trc_not_alloc t_trace("pointer %p has not yet been allocated in %s:%d\n", p, __FILE__, __LINE__) #define trc_assP_fail t_trace("Assertion failed: %p is not a valid pointer in %s:%d\n", p, __FILE__, __LINE__) #define trc_assB_fail(s) t_trace("Assertion failed: %p(%d) is not a valid block in %s:%d\n", p, s, __FILE__, __LINE__) #define trc t_trace #define trc_f if( flags.check_freed ) t_trace #define assP t_assert("%s(%d):V=%08lX\n", __FILE__, __LINE__, (unsigned long)p) #define assB(s) t_assert("%s(%d):B=%d@%08lX\n", __FILE__, __LINE__, s, (unsigned long)p) #if defined(DEBUG_MEMALLOC) # define dbg(what) t_debug("%s(%d):" #what "=%08lX\n", __FILE__, __LINE__, (unsigned long)p) # define dbgA(p,s) t_debug("%s(%d):A=%d@%08lX\n", __FILE__, __LINE__, s, (unsigned long)p) #else # define dbg(what) (void)1 # define dbgA(p,s) (void)1 #endif static void runtests( void ) { unsigned char *p, *p1; int lp1; int i; #define S_P1 10 AllocF( char *, p1, S_P1 ); dbgA(p1,S_P1); lp1 = __LINE__; for( i = 0; i < S_P1; i++ ) p1[i] = (unsigned char) i; #ifdef TRACE_MEMALLOC p = p1 + 1; Free( p ); dbg(F); trc_not_alloc; trc(" %p is inside an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 + (S_P1-1); Free( p ); dbg(F); trc_not_alloc; trc(" %p is inside an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); #if MEMALLOC_MAX_DIAG_DIST > 1 p = p1 - 1; Free( p ); dbg(F); trc_not_alloc; trc(" %p is 1 byte before an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 + S_P1; Free( p ); dbg(F); trc_not_alloc; trc(" %p is 1 byte behind an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 - (MEMALLOC_MAX_DIAG_DIST-1); Free( p ); dbg(F); trc_not_alloc; trc(" %p is %d byte%s before an allocated block of %d bytes at %p (%s:%d)\n", p, MEMALLOC_MAX_DIAG_DIST-1, MEMALLOC_MAX_DIAG_DIST-1 == 1 ? "" : "s", S_P1, p1, __FILE__, lp1); p = p1 + (MEMALLOC_MAX_DIAG_DIST+S_P1-2); Free( p ); dbg(F); trc_not_alloc; trc(" %p is %d byte%s behind an allocated block of %d bytes at %p (%s:%d)\n", p, MEMALLOC_MAX_DIAG_DIST-1, MEMALLOC_MAX_DIAG_DIST-1 == 1 ? "" : "s", S_P1, p1, __FILE__, lp1); #endif p = p1 - (MEMALLOC_MAX_DIAG_DIST); Free( p ); dbg(F); trc_not_alloc; p = p1 + (MEMALLOC_MAX_DIAG_DIST+S_P1-1); Free( p ); dbg(F); trc_not_alloc; #endif p = p1; AssertValidPtr(p); assP; p = p1+1; AssertValidPtr(p); assP; trc_assP_fail; trc(" %p is inside an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1; AssertValidBlock(p,5); assB(5); p = p1-1; AssertValidBlock(p,5); assB(5); trc_assB_fail(5); trc(" %p(5) overlaps 4 bytes with an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1; Free( p ); dbg(F); AssertValidPtr(p); assP; trc_assP_fail; trc_f(" %p points to a block of %d bytes already freed (%s:%d)\n", p, S_P1, __FILE__, lp1); #ifdef TRACE_MEMALLOC p = p1 + 1; Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is inside a freed block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 + (S_P1-1); Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is inside a freed block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); #if MEMALLOC_MAX_DIAG_DIST > 1 p = p1 - 1; Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is 1 byte before a freed block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 + S_P1; Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is 1 byte behind a freed block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 - (MEMALLOC_MAX_DIAG_DIST-1); Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is %d byte%s before a freed block of %d bytes at %p (%s:%d)\n", p, MEMALLOC_MAX_DIAG_DIST-1, MEMALLOC_MAX_DIAG_DIST-1 == 1 ? "" : "s", S_P1, p1, __FILE__, lp1); p = p1 + (MEMALLOC_MAX_DIAG_DIST+S_P1-2); Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is %d byte%s behind a freed block of %d bytes at %p (%s:%d)\n", p, MEMALLOC_MAX_DIAG_DIST-1, MEMALLOC_MAX_DIAG_DIST-1 == 1 ? "" : "s", S_P1, p1, __FILE__, lp1); #endif p = p1 - (MEMALLOC_MAX_DIAG_DIST); Free( p ); dbg(F); trc_not_alloc; p = p1 + (MEMALLOC_MAX_DIAG_DIST+S_P1-1); Free( p ); dbg(F); trc_not_alloc; p = p1; Free( p ); dbg(F); trc("pointer %p has %s in %s:%d\n", p, flags.check_freed ? "already been freed" : "not yet been allocated", __FILE__, __LINE__); #endif } #ifdef DEBUG_MEMALLOC static void test_dbfunc( const char *fmt, ... ) { va_list l; va_start(l, fmt); vfprintf(fdebug ? fdebug : stderr, fmt, l); va_end(l); } #endif int main( void ) { const char *str; const char *file; if( (file = getenv("MEMALLOC_TEST_FILE")) == NULL ) file = "test.ref"; flags.debug = (str=getenv("MEMALLOC_TEST_DEBUG")) && atoi(str); flags.assert = (str=getenv("MEMALLOC_TEST_ASSERT")) && atoi(str); flags.check_freed = (str=getenv("MEMALLOC_CHECK_FREED")) && atoi(str); flags.stat_level = (str=getenv("MEMALLOC_STAT_LEVEL")) ? atoi(str) : -1; if( (str=getenv("MEMALLOC_TEST_DEBUG_FILE")) != NULL ) if( (fdebug = fopen(str, "w")) == NULL ) return -1; #ifdef DEBUG_MEMALLOC SetDebugMemAlloc( test_dbfunc, (flags.debug ? DB_MEMALLOC_TRACE : 0) | (flags.assert ? DB_MEMALLOC_ASSERT : 0) ); #endif if( (ftest = fopen(file, "w")) == NULL ) return -1; runtests(); fclose(ftest); #ifdef DEBUG_MEMALLOC SetDebugMemAlloc( NULL, 0 ); #endif if( fdebug ) fclose(fdebug); return 0; } #endif Convert-Binary-C-0.85/token/0000755000175000001440000000000014677003524014333 5ustar mhxusersConvert-Binary-C-0.85/token/t_hookid.c0000644000175000001440000000523014677003505016276 0ustar mhxusersstatic const char *gs_HookIdStr[] = { "pack", "unpack", "pack_ptr", "unpack_ptr" }; static enum HookId get_hook_id(const char *hook) { switch (hook[0]) { case 'p': switch (hook[1]) { case 'a': switch (hook[2]) { case 'c': switch (hook[3]) { case 'k': switch (hook[4]) { case '\0': { /* pack */ return HOOKID_pack; } case '_': if (hook[5] == 'p' && hook[6] == 't' && hook[7] == 'r' && hook[8] == '\0') { /* pack_ptr */ return HOOKID_pack_ptr; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } case 'u': switch (hook[1]) { case 'n': switch (hook[2]) { case 'p': switch (hook[3]) { case 'a': switch (hook[4]) { case 'c': switch (hook[5]) { case 'k': switch (hook[6]) { case '\0': { /* unpack */ return HOOKID_unpack; } case '_': if (hook[7] == 'p' && hook[8] == 't' && hook[9] == 'r' && hook[10] == '\0') { /* unpack_ptr */ return HOOKID_unpack_ptr; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } unknown: return HOOKID_INVALID; } Convert-Binary-C-0.85/token/t_parser.c0000644000175000001440000003055014677003505016320 0ustar mhxusersswitch (tokstr[0]) { case 'a': switch (tokstr[1]) { case 's': if (tokstr[2] == 'm' && tokstr[3] == '\0') { /* asm */ if( pState->pCPC->keywords & HAS_KEYWORD_ASM ) return ASM_TOK; } goto unknown; case 'u': if (tokstr[2] == 't' && tokstr[3] == 'o' && tokstr[4] == '\0') { /* auto */ if( pState->pCPC->keywords & HAS_KEYWORD_AUTO ) return AUTO_TOK; } goto unknown; default: goto unknown; } case 'b': if (tokstr[1] == 'r' && tokstr[2] == 'e' && tokstr[3] == 'a' && tokstr[4] == 'k' && tokstr[5] == '\0') { /* break */ return BREAK_TOK; } goto unknown; case 'c': switch (tokstr[1]) { case 'a': if (tokstr[2] == 's' && tokstr[3] == 'e' && tokstr[4] == '\0') { /* case */ return CASE_TOK; } goto unknown; case 'h': if (tokstr[2] == 'a' && tokstr[3] == 'r' && tokstr[4] == '\0') { /* char */ return CHAR_TOK; } goto unknown; case 'o': switch (tokstr[2]) { case 'n': switch (tokstr[3]) { case 's': if (tokstr[4] == 't' && tokstr[5] == '\0') { /* const */ if( pState->pCPC->keywords & HAS_KEYWORD_CONST ) return CONST_TOK; } goto unknown; case 't': if (tokstr[4] == 'i' && tokstr[5] == 'n' && tokstr[6] == 'u' && tokstr[7] == 'e' && tokstr[8] == '\0') { /* continue */ return CONTINUE_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } case 'd': switch (tokstr[1]) { case 'e': if (tokstr[2] == 'f' && tokstr[3] == 'a' && tokstr[4] == 'u' && tokstr[5] == 'l' && tokstr[6] == 't' && tokstr[7] == '\0') { /* default */ return DEFAULT_TOK; } goto unknown; case 'o': switch (tokstr[2]) { case '\0': { /* do */ return DO_TOK; } case 'u': if (tokstr[3] == 'b' && tokstr[4] == 'l' && tokstr[5] == 'e' && tokstr[6] == '\0') { /* double */ if( pState->pCPC->keywords & HAS_KEYWORD_DOUBLE ) return DOUBLE_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } case 'e': switch (tokstr[1]) { case 'l': if (tokstr[2] == 's' && tokstr[3] == 'e' && tokstr[4] == '\0') { /* else */ return ELSE_TOK; } goto unknown; case 'n': if (tokstr[2] == 'u' && tokstr[3] == 'm' && tokstr[4] == '\0') { /* enum */ if( pState->pCPC->keywords & HAS_KEYWORD_ENUM ) return ENUM_TOK; } goto unknown; case 'x': if (tokstr[2] == 't' && tokstr[3] == 'e' && tokstr[4] == 'r' && tokstr[5] == 'n' && tokstr[6] == '\0') { /* extern */ if( pState->pCPC->keywords & HAS_KEYWORD_EXTERN ) return EXTERN_TOK; } goto unknown; default: goto unknown; } case 'f': switch (tokstr[1]) { case 'l': if (tokstr[2] == 'o' && tokstr[3] == 'a' && tokstr[4] == 't' && tokstr[5] == '\0') { /* float */ if( pState->pCPC->keywords & HAS_KEYWORD_FLOAT ) return FLOAT_TOK; } goto unknown; case 'o': if (tokstr[2] == 'r' && tokstr[3] == '\0') { /* for */ return FOR_TOK; } goto unknown; default: goto unknown; } case 'g': if (tokstr[1] == 'o' && tokstr[2] == 't' && tokstr[3] == 'o' && tokstr[4] == '\0') { /* goto */ return GOTO_TOK; } goto unknown; case 'i': switch (tokstr[1]) { case 'f': if (tokstr[2] == '\0') { /* if */ return IF_TOK; } goto unknown; case 'n': switch (tokstr[2]) { case 'l': if (tokstr[3] == 'i' && tokstr[4] == 'n' && tokstr[5] == 'e' && tokstr[6] == '\0') { /* inline */ if( pState->pCPC->keywords & HAS_KEYWORD_INLINE ) return INLINE_TOK; } goto unknown; case 't': if (tokstr[3] == '\0') { /* int */ return INT_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } case 'l': if (tokstr[1] == 'o' && tokstr[2] == 'n' && tokstr[3] == 'g' && tokstr[4] == '\0') { /* long */ if( pState->pCPC->keywords & HAS_KEYWORD_LONG ) return LONG_TOK; } goto unknown; case 'r': switch (tokstr[1]) { case 'e': switch (tokstr[2]) { case 'g': if (tokstr[3] == 'i' && tokstr[4] == 's' && tokstr[5] == 't' && tokstr[6] == 'e' && tokstr[7] == 'r' && tokstr[8] == '\0') { /* register */ if( pState->pCPC->keywords & HAS_KEYWORD_REGISTER ) return REGISTER_TOK; } goto unknown; case 's': if (tokstr[3] == 't' && tokstr[4] == 'r' && tokstr[5] == 'i' && tokstr[6] == 'c' && tokstr[7] == 't' && tokstr[8] == '\0') { /* restrict */ if( pState->pCPC->keywords & HAS_KEYWORD_RESTRICT ) return RESTRICT_TOK; } goto unknown; case 't': if (tokstr[3] == 'u' && tokstr[4] == 'r' && tokstr[5] == 'n' && tokstr[6] == '\0') { /* return */ return RETURN_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } case 's': switch (tokstr[1]) { case 'h': if (tokstr[2] == 'o' && tokstr[3] == 'r' && tokstr[4] == 't' && tokstr[5] == '\0') { /* short */ if( pState->pCPC->keywords & HAS_KEYWORD_SHORT ) return SHORT_TOK; } goto unknown; case 'i': switch (tokstr[2]) { case 'g': if (tokstr[3] == 'n' && tokstr[4] == 'e' && tokstr[5] == 'd' && tokstr[6] == '\0') { /* signed */ if( pState->pCPC->keywords & HAS_KEYWORD_SIGNED ) return SIGNED_TOK; } goto unknown; case 'z': if (tokstr[3] == 'e' && tokstr[4] == 'o' && tokstr[5] == 'f' && tokstr[6] == '\0') { /* sizeof */ return SIZEOF_TOK; } goto unknown; default: goto unknown; } case 't': switch (tokstr[2]) { case 'a': if (tokstr[3] == 't' && tokstr[4] == 'i' && tokstr[5] == 'c' && tokstr[6] == '\0') { /* static */ if( pState->pCPC->keywords & HAS_KEYWORD_STATIC ) return STATIC_TOK; } goto unknown; case 'r': if (tokstr[3] == 'u' && tokstr[4] == 'c' && tokstr[5] == 't' && tokstr[6] == '\0') { /* struct */ return STRUCT_TOK; } goto unknown; default: goto unknown; } case 'w': if (tokstr[2] == 'i' && tokstr[3] == 't' && tokstr[4] == 'c' && tokstr[5] == 'h' && tokstr[6] == '\0') { /* switch */ return SWITCH_TOK; } goto unknown; default: goto unknown; } case 't': if (tokstr[1] == 'y' && tokstr[2] == 'p' && tokstr[3] == 'e' && tokstr[4] == 'd' && tokstr[5] == 'e' && tokstr[6] == 'f' && tokstr[7] == '\0') { /* typedef */ return TYPEDEF_TOK; } goto unknown; case 'u': switch (tokstr[1]) { case 'n': switch (tokstr[2]) { case 'i': if (tokstr[3] == 'o' && tokstr[4] == 'n' && tokstr[5] == '\0') { /* union */ return UNION_TOK; } goto unknown; case 's': if (tokstr[3] == 'i' && tokstr[4] == 'g' && tokstr[5] == 'n' && tokstr[6] == 'e' && tokstr[7] == 'd' && tokstr[8] == '\0') { /* unsigned */ if( pState->pCPC->keywords & HAS_KEYWORD_UNSIGNED ) return UNSIGNED_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } case 'v': switch (tokstr[1]) { case 'o': switch (tokstr[2]) { case 'i': if (tokstr[3] == 'd' && tokstr[4] == '\0') { /* void */ if( pState->pCPC->keywords & HAS_KEYWORD_VOID ) return VOID_TOK; } goto unknown; case 'l': if (tokstr[3] == 'a' && tokstr[4] == 't' && tokstr[5] == 'i' && tokstr[6] == 'l' && tokstr[7] == 'e' && tokstr[8] == '\0') { /* volatile */ if( pState->pCPC->keywords & HAS_KEYWORD_VOLATILE ) return VOLATILE_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } case 'w': if (tokstr[1] == 'h' && tokstr[2] == 'i' && tokstr[3] == 'l' && tokstr[4] == 'e' && tokstr[5] == '\0') { /* while */ return WHILE_TOK; } goto unknown; default: goto unknown; } Convert-Binary-C-0.85/token/config.pl0000644000175000001440000000340014677003452016132 0ustar mhxusers################################################################################ # # PROGRAM: config.pl # ################################################################################ # # DESCRIPTION: Generate tokenizer code for config options # ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Devel::Tokenizer::C; @options = qw( UnsignedBitfields UnsignedChars Warnings PointerSize EnumSize IntSize CharSize ShortSize LongSize LongLongSize FloatSize DoubleSize LongDoubleSize Alignment CompoundAlignment Include Define Assert DisabledKeywords KeywordMap ByteOrder EnumType HasCPPComments HasMacroVAARGS OrderMembers Bitfields StdCVersion HostedC ); @sourcify = qw( Context Defines ); $file = shift; if( $file =~ /config/ ) { @OPT = @options; $PRE = 'OPTION'; $NAME = 'ConfigOption'; } elsif( $file =~ /sourcify/ ) { @OPT = @sourcify; $PRE = 'SOURCIFY_OPTION'; $NAME = 'SourcifyConfigOption'; } $ROUT = "get$NAME"; $ROUT =~ s/([a-z])([A-Z])/$1_\l$2/g; $enums = join "\n", map " ${PRE}_$_,", @OPT; $switch = Devel::Tokenizer::C->new( TokenFunc => sub { "return ${PRE}_$_[0];\n" }, TokenString => 'option' ) ->add_tokens( @OPT )->generate; open OUT, ">$file" or die $!; print OUT <new( TokenFunc => \&t_parser ) ->add_tokens( @disable, @no_disable ); } elsif( $file =~ /basic/ ) { $t = Devel::Tokenizer::C->new( TokenFunc => \&t_basic, TokenString => 'c', TokenEnd => '*name', ) ->add_tokens( @basic ); } elsif( $file =~ /keywords/ ) { $t = Devel::Tokenizer::C->new( TokenFunc => \&t_keywords, TokenString => 'str' ) ->add_tokens( @disable ); } elsif( $file =~ /ckeytok/ ) { $t = Devel::Tokenizer::C->new( TokenFunc => \&t_ckeytok, TokenString => 'name' ) ->add_tokens( @disable, @no_disable ); } else { die "invalid file: $file\n" } open OUT, ">$file" or die "$file: $!"; print OUT $t->generate; close OUT; sub t_parser { my $token = shift; if( exists $NDIS{$token} ) { return "return \U$token\E_TOK;\n"; } else { return "if( pState->pCPC->keywords & HAS_KEYWORD_\U$token\E )\n" . " return \U$token\E_TOK;\n"; } }; sub t_basic { my $token = shift; if( $token eq 'long' ) { return <$file" or die "$file: $!"; my $hooks = join ",\n", map { " HOOKID_$_" } @hooks; print OUT <new(TokenFunc => sub { "return HOOKID_$_[0];\n" }, TokenString => 'hook') ->add_tokens(@hooks)->generate; open OUT, ">$file" or die "$file: $!"; my $s_hookids = join ",\n", map { qq( "$_") } @hooks; print OUT <new(TokenFunc => \&tok_code, TokenEnd => 'PRAGMA_TOKEN_END'); $t->add_tokens( qw( pack push pop )); open OUT, ">$ARGV[0]" or die $!; print OUT $t->generate; close OUT; sub tok_code { my $token = shift; my $toklen = length $token; return <type = BLPVT_INT; value->v.v_int = self->align; break; case BLP_BYTE_ORDER: value->type = BLPVT_STR; value->v.v_str = self->byte_order; break; case BLP_MAX_ALIGN: value->type = BLPVT_INT; value->v.v_int = self->max_align; break; case BLP_OFFSET: value->type = BLPVT_INT; value->v.v_int = self->offset; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static enum BLError Generic_set(aSELF, BLProperty prop, const BLPropValue *value) { BL_SELF(Generic); switch (prop) { case BLP_ALIGN: assert(value->type == BLPVT_INT); self->align = value->v.v_int; break; case BLP_BYTE_ORDER: assert(value->type == BLPVT_STR); self->byte_order = value->v.v_str; break; case BLP_MAX_ALIGN: assert(value->type == BLPVT_INT); self->max_align = value->v.v_int; break; case BLP_OFFSET: assert(value->type == BLPVT_INT); self->offset = value->v.v_int; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static const BLOption *Generic_options(aSELF, int *count) { assert(count != NULL); *count = 0; return NULL; } static enum BLError Microsoft_get(aSELF, BLProperty prop, BLPropValue *value) { BL_SELF(Microsoft); switch (prop) { case BLP_ALIGN: value->type = BLPVT_INT; value->v.v_int = self->align; break; case BLP_BYTE_ORDER: value->type = BLPVT_STR; value->v.v_str = self->byte_order; break; case BLP_MAX_ALIGN: value->type = BLPVT_INT; value->v.v_int = self->max_align; break; case BLP_OFFSET: value->type = BLPVT_INT; value->v.v_int = self->offset; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static enum BLError Microsoft_set(aSELF, BLProperty prop, const BLPropValue *value) { BL_SELF(Microsoft); switch (prop) { case BLP_ALIGN: assert(value->type == BLPVT_INT); self->align = value->v.v_int; break; case BLP_BYTE_ORDER: assert(value->type == BLPVT_STR); self->byte_order = value->v.v_str; break; case BLP_MAX_ALIGN: assert(value->type == BLPVT_INT); self->max_align = value->v.v_int; break; case BLP_OFFSET: assert(value->type == BLPVT_INT); self->offset = value->v.v_int; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static const BLOption *Microsoft_options(aSELF, int *count) { assert(count != NULL); *count = 0; return NULL; } static enum BLError Simple_get(aSELF, BLProperty prop, BLPropValue *value) { BL_SELF(Simple); switch (prop) { case BLP_ALIGN: value->type = BLPVT_INT; value->v.v_int = self->align; break; case BLP_BLOCK_SIZE: value->type = BLPVT_INT; value->v.v_int = self->block_size; break; case BLP_BYTE_ORDER: value->type = BLPVT_STR; value->v.v_str = self->byte_order; break; case BLP_MAX_ALIGN: value->type = BLPVT_INT; value->v.v_int = self->max_align; break; case BLP_OFFSET: value->type = BLPVT_INT; value->v.v_int = self->offset; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static enum BLError Simple_set(aSELF, BLProperty prop, const BLPropValue *value) { BL_SELF(Simple); switch (prop) { case BLP_ALIGN: assert(value->type == BLPVT_INT); self->align = value->v.v_int; break; case BLP_BLOCK_SIZE: assert(value->type == BLPVT_INT); self->block_size = value->v.v_int; break; case BLP_BYTE_ORDER: assert(value->type == BLPVT_STR); self->byte_order = value->v.v_str; break; case BLP_MAX_ALIGN: assert(value->type == BLPVT_INT); self->max_align = value->v.v_int; break; case BLP_OFFSET: assert(value->type == BLPVT_INT); self->offset = value->v.v_int; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static const BLOption *Simple_options(aSELF, int *count) { static const BLOption options[] = { { BLP_BLOCK_SIZE, BLPVT_INT, 0, 0 } }; assert(count != NULL); *count = sizeof options / sizeof options[0]; return &options[0]; } BLProperty bl_property(const char *property) { switch (property[0]) { case 'A': if (property[1] == 'l' && property[2] == 'i' && property[3] == 'g' && property[4] == 'n' && property[5] == '\0') { /* Align */ return BLP_ALIGN; } goto unknown; case 'B': switch (property[1]) { case 'l': if (property[2] == 'o' && property[3] == 'c' && property[4] == 'k' && property[5] == 'S' && property[6] == 'i' && property[7] == 'z' && property[8] == 'e' && property[9] == '\0') { /* BlockSize */ return BLP_BLOCK_SIZE; } goto unknown; case 'y': if (property[2] == 't' && property[3] == 'e' && property[4] == 'O' && property[5] == 'r' && property[6] == 'd' && property[7] == 'e' && property[8] == 'r' && property[9] == '\0') { /* ByteOrder */ return BLP_BYTE_ORDER; } goto unknown; default: goto unknown; } case 'M': if (property[1] == 'a' && property[2] == 'x' && property[3] == 'A' && property[4] == 'l' && property[5] == 'i' && property[6] == 'g' && property[7] == 'n' && property[8] == '\0') { /* MaxAlign */ return BLP_MAX_ALIGN; } goto unknown; case 'O': if (property[1] == 'f' && property[2] == 'f' && property[3] == 's' && property[4] == 'e' && property[5] == 't' && property[6] == '\0') { /* Offset */ return BLP_OFFSET; } goto unknown; default: goto unknown; } unknown: return INVALID_BLPROPERTY; } BLPropValStr bl_propval(const char *propval) { switch (propval[0]) { case 'B': if (propval[1] == 'i' && propval[2] == 'g' && propval[3] == 'E' && propval[4] == 'n' && propval[5] == 'd' && propval[6] == 'i' && propval[7] == 'a' && propval[8] == 'n' && propval[9] == '\0') { /* BigEndian */ return BLPV_BIG_ENDIAN; } goto unknown; case 'L': if (propval[1] == 'i' && propval[2] == 't' && propval[3] == 't' && propval[4] == 'l' && propval[5] == 'e' && propval[6] == 'E' && propval[7] == 'n' && propval[8] == 'd' && propval[9] == 'i' && propval[10] == 'a' && propval[11] == 'n' && propval[12] == '\0') { /* LittleEndian */ return BLPV_LITTLE_ENDIAN; } goto unknown; default: goto unknown; } unknown: return INVALID_BLPROPVAL; } const char *bl_property_string(BLProperty property) { static const char *properties[] = { "Align", "BlockSize", "ByteOrder", "MaxAlign", "Offset" }; if (property < sizeof properties / sizeof properties[0]) return properties[property]; return NULL; } const char *bl_propval_string(BLPropValStr propval) { static const char *propvalues[] = { "BigEndian", "LittleEndian" }; if (propval < sizeof propvalues / sizeof propvalues[0]) return propvalues[propval]; return NULL; } Convert-Binary-C-0.85/token/t_sourcify.c0000644000175000001440000000170714677003505016671 0ustar mhxuserstypedef enum { SOURCIFY_OPTION_Context, SOURCIFY_OPTION_Defines, INVALID_SOURCIFY_OPTION } SourcifyConfigOption; static SourcifyConfigOption get_sourcify_config_option( const char *option ) { switch (option[0]) { case 'C': if (option[1] == 'o' && option[2] == 'n' && option[3] == 't' && option[4] == 'e' && option[5] == 'x' && option[6] == 't' && option[7] == '\0') { /* Context */ return SOURCIFY_OPTION_Context; } goto unknown; case 'D': if (option[1] == 'e' && option[2] == 'f' && option[3] == 'i' && option[4] == 'n' && option[5] == 'e' && option[6] == 's' && option[7] == '\0') { /* Defines */ return SOURCIFY_OPTION_Defines; } goto unknown; default: goto unknown; } unknown: return INVALID_SOURCIFY_OPTION; } Convert-Binary-C-0.85/token/t_tag.h0000644000175000001440000000051314677003505015600 0ustar mhxusersenum CbcTagId { CBC_TAG_BYTE_ORDER, CBC_TAG_DIMENSION, CBC_TAG_FORMAT, CBC_TAG_HOOKS, CBC_INVALID_TAG }; enum CbcTagByteOrder { CBC_TAG_BYTE_ORDER_BIG_ENDIAN, CBC_TAG_BYTE_ORDER_LITTLE_ENDIAN, CBC_INVALID_BYTE_ORDER }; enum CbcTagFormat { CBC_TAG_FORMAT_STRING, CBC_TAG_FORMAT_BINARY, CBC_INVALID_FORMAT }; Convert-Binary-C-0.85/token/t_tag.c0000644000175000001440000001714614677003505015605 0ustar mhxusers/********************************************************************** * * Prototypes * **********************************************************************/ static enum CbcTagId get_tag_id(const char *tag); static TAG_SET(ByteOrder); static TAG_GET(ByteOrder); static TAG_VERIFY(ByteOrder); static enum CbcTagByteOrder GetTagByteOrder(const char *t); static TAG_INIT(Dimension); static TAG_CLONE(Dimension); static TAG_FREE(Dimension); static TAG_SET(Dimension); static TAG_GET(Dimension); static TAG_VERIFY(Dimension); static TAG_SET(Format); static TAG_GET(Format); static TAG_VERIFY(Format); static enum CbcTagFormat GetTagFormat(const char *t); static TAG_INIT(Hooks); static TAG_CLONE(Hooks); static TAG_FREE(Hooks); static TAG_SET(Hooks); static TAG_GET(Hooks); /********************************************************************** * * Tag IDs * **********************************************************************/ static const char *gs_TagIdStr[] = { "ByteOrder", "Dimension", "Format", "Hooks", "<>" }; /********************************************************************** * * Dimension Vtable * **********************************************************************/ static CtTagVtable gs_Dimension_vtable = { Dimension_Init, Dimension_Clone, Dimension_Free }; /********************************************************************** * * Hooks Vtable * **********************************************************************/ static CtTagVtable gs_Hooks_vtable = { Hooks_Init, Hooks_Clone, Hooks_Free }; /********************************************************************** * * Tag Method Table * **********************************************************************/ static const struct tag_tbl_ent { TagSetMethod set; TagGetMethod get; TagVerifyMethod verify; CtTagVtable *vtbl; } gs_TagTbl[] = { { ByteOrder_Set, ByteOrder_Get, ByteOrder_Verify, NULL }, { Dimension_Set, Dimension_Get, Dimension_Verify, &gs_Dimension_vtable }, { Format_Set, Format_Get, Format_Verify, NULL }, { Hooks_Set, Hooks_Get, NULL, &gs_Hooks_vtable }, {NULL, NULL, NULL, NULL} }; /********************************************************************** * * Main Tag Tokenizer * **********************************************************************/ static enum CbcTagId get_tag_id(const char *tag) { switch (tag[0]) { case 'B': if (tag[1] == 'y' && tag[2] == 't' && tag[3] == 'e' && tag[4] == 'O' && tag[5] == 'r' && tag[6] == 'd' && tag[7] == 'e' && tag[8] == 'r' && tag[9] == '\0') { /* ByteOrder */ return CBC_TAG_BYTE_ORDER; } goto unknown; case 'D': if (tag[1] == 'i' && tag[2] == 'm' && tag[3] == 'e' && tag[4] == 'n' && tag[5] == 's' && tag[6] == 'i' && tag[7] == 'o' && tag[8] == 'n' && tag[9] == '\0') { /* Dimension */ return CBC_TAG_DIMENSION; } goto unknown; case 'F': if (tag[1] == 'o' && tag[2] == 'r' && tag[3] == 'm' && tag[4] == 'a' && tag[5] == 't' && tag[6] == '\0') { /* Format */ return CBC_TAG_FORMAT; } goto unknown; case 'H': if (tag[1] == 'o' && tag[2] == 'o' && tag[3] == 'k' && tag[4] == 's' && tag[5] == '\0') { /* Hooks */ return CBC_TAG_HOOKS; } goto unknown; default: goto unknown; } unknown: return CBC_INVALID_TAG; } /********************************************************************** * * ByteOrder Tokenizer * **********************************************************************/ static enum CbcTagByteOrder GetTagByteOrder(const char *t) { switch (t[0]) { case 'B': if (t[1] == 'i' && t[2] == 'g' && t[3] == 'E' && t[4] == 'n' && t[5] == 'd' && t[6] == 'i' && t[7] == 'a' && t[8] == 'n' && t[9] == '\0') { /* BigEndian */ return CBC_TAG_BYTE_ORDER_BIG_ENDIAN; } goto unknown; case 'L': if (t[1] == 'i' && t[2] == 't' && t[3] == 't' && t[4] == 'l' && t[5] == 'e' && t[6] == 'E' && t[7] == 'n' && t[8] == 'd' && t[9] == 'i' && t[10] == 'a' && t[11] == 'n' && t[12] == '\0') { /* LittleEndian */ return CBC_TAG_BYTE_ORDER_LITTLE_ENDIAN; } goto unknown; default: goto unknown; } unknown: return CBC_INVALID_BYTE_ORDER; } /********************************************************************** * * Format Tokenizer * **********************************************************************/ static enum CbcTagFormat GetTagFormat(const char *t) { switch (t[0]) { case 'B': if (t[1] == 'i' && t[2] == 'n' && t[3] == 'a' && t[4] == 'r' && t[5] == 'y' && t[6] == '\0') { /* Binary */ return CBC_TAG_FORMAT_BINARY; } goto unknown; case 'S': if (t[1] == 't' && t[2] == 'r' && t[3] == 'i' && t[4] == 'n' && t[5] == 'g' && t[6] == '\0') { /* String */ return CBC_TAG_FORMAT_STRING; } goto unknown; default: goto unknown; } unknown: return CBC_INVALID_FORMAT; } /********************************************************************** * * ByteOrder Set/Get Methods * **********************************************************************/ static TAG_SET(ByteOrder) { if (SvOK(val)) { if (SvROK(val)) Perl_croak(aTHX_ "Value for ByteOrder tag must not be a reference"); else { const char *valstr = SvPV_nolen(val); enum CbcTagByteOrder ByteOrder = GetTagByteOrder(valstr); if (ByteOrder == CBC_INVALID_BYTE_ORDER) Perl_croak(aTHX_ "Invalid value '%s' for ByteOrder tag", valstr); tag->flags = ByteOrder; return TSRV_UPDATE; } } return TSRV_DELETE; } static TAG_GET(ByteOrder) { static const char *val[] = { "BigEndian", "LittleEndian" }; if (tag->flags >= sizeof(val) / sizeof(val[0])) fatal("Invalid value (%d) for ByteOrder tag", tag->flags); return newSVpv(val[tag->flags], 0); } /********************************************************************** * * Format Set/Get Methods * **********************************************************************/ static TAG_SET(Format) { if (SvOK(val)) { if (SvROK(val)) Perl_croak(aTHX_ "Value for Format tag must not be a reference"); else { const char *valstr = SvPV_nolen(val); enum CbcTagFormat Format = GetTagFormat(valstr); if (Format == CBC_INVALID_FORMAT) Perl_croak(aTHX_ "Invalid value '%s' for Format tag", valstr); tag->flags = Format; return TSRV_UPDATE; } } return TSRV_DELETE; } static TAG_GET(Format) { static const char *val[] = { "String", "Binary" }; if (tag->flags >= sizeof(val) / sizeof(val[0])) fatal("Invalid value (%d) for Format tag", tag->flags); return newSVpv(val[tag->flags], 0); } Convert-Binary-C-0.85/token/blproperty.pl0000644000175000001440000001277214677003452017103 0ustar mhxusers################################################################################ # # PROGRAM: blproperty.pl # ################################################################################ # # DESCRIPTION: Generate tokenizer code for bitfield layout properties # ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Devel::Tokenizer::C; use IO::File; use strict; my @mandatory = ( Offset => { option => 0 }, MaxAlign => { option => 0 }, Align => { option => 0 }, ByteOrder => { option => 0, choice => [qw( BigEndian LittleEndian )] }, ); my %engines = ( Generic => { @mandatory, # FillDirection => { option => 1, member => 'direction', choice => [qw( Left Right )] }, # TypeMatters => { option => 1 }, ??? }, Microsoft => { @mandatory, }, Simple => { @mandatory, # FillDirection => { option => 1, member => 'direction', choice => [qw( Left Right )] }, BlockSize => { option => 1 }, }, ); my @properties = do { my %seen; sort grep !$seen{$_}++, map keys %$_, values %engines }; my @values = do { my %seen; sort grep !$seen{$_}++, map { map { exists $_->{choice} ? @{$_->{choice}} : () } values %$_ } values %engines }; my $file = shift; my $fh = IO::File->new(">$file") or die "$file: $!\n"; sub to_name { my($pre, $s) = @_; $s =~ s/([A-Z])(?=[a-z])/_$1/g; $s = "_$s" unless $s =~ /^_/; return $pre . uc $s; } sub to_member { my $s = shift; $s =~ s/([A-Z])/_$1/g; $s =~ s/^_//; return lc $s; } if ($file =~ /\.h$/) { my $blp = join "\n", map " $_,", map { to_name('BLP', $_) } @properties; my $blpv = join "\n", map " $_,", map { to_name('BLPV', $_) } @values; my $guard = uc $file; $guard =~ s/\W+/_/g; $fh->print(<{$opt}; my $name = to_name('BLP', $opt); my $type = exists $os->{choice} ? 'str' : 'int'; my $uctype = uc $type; my $member = exists $os->{member} ? $os->{member} : to_member($opt); if ($os->{option}) { if (exists $os->{choice}) { $m_option .= " static const BLPropValStr $opt\[] = {\n " . join(", ", map { to_name('BLPV', $_) } @{$os->{choice}}) . "\n };\n\n"; push @optspec, "{ $name, BLPVT_$uctype, sizeof $opt / sizeof $opt\[0], &$opt\[0] }"; } else { push @optspec, "{ $name, BLPVT_$uctype, 0, 0 }"; } } $m_get .= <type = BLPVT_$uctype; value->v.v_$type = self->$member; break; END $m_set .= <{readonly}; case $name: assert(value->type == BLPVT_$uctype); self->$member = value->v.v_$type; break; END } if (@optspec) { my $options = join ",\n", map " $_", @optspec; $m_option .= <print($m_get . $m_set . $m_option); } my $blp_switch = Devel::Tokenizer::C->new(TokenFunc => sub { "return ".to_name('BLP', $_[0]).";\n" }, TokenString => 'property') ->add_tokens(@properties)->generate(Indent => ' '); my $blpv_switch = Devel::Tokenizer::C->new(TokenFunc => sub { "return ".to_name('BLPV', $_[0]).";\n" }, TokenString => 'propval') ->add_tokens(@values)->generate(Indent => ' '); my $blp_strings = join ",\n", map { qq[ "$_"] } @properties; my $blpv_strings = join ",\n", map { qq[ "$_"] } @values; $fh->print(< { vtable => 1, }, Format => { strval => [qw( String Binary )], verify => 1, }, ByteOrder => { strval => [qw( BigEndian LittleEndian )], verify => 1, }, Dimension => { vtable => 1, verify => 1, }, ); my @tags = sort keys %tags; sub tag2def { my $tag = shift; $tag =~ s/([A-Z])/_$1/g; return "\U$tag\E"; } my $file = shift; if ($file =~ /\.h$/i) { open OUT, ">$file" or die "$file: $!"; my $s_tags = join ",\n", map { " $TAG_PRE" . tag2def($_) } @tags; print OUT <new(TokenFunc => sub { "return $TAG_PRE" . tag2def($t.$_[0]) . ";\n" }, TokenString => 't') ->add_tokens(@{$tags{$t}{strval}}) ->generate; $switch =~ s/^/ /gm; push @tokenizer, <flags = $t; return TSRV_UPDATE; } } return TSRV_DELETE; } static TAG_GET($t) { static const char *val[] = { $valstr }; if (tag->flags >= sizeof(val) / sizeof(val[0])) fatal("Invalid value (%d) for $t tag", tag->flags); return newSVpv(val[tag->flags], 0); } ENDC push @proto, "static enum CbcTag$t GetTag$t(const char *t);"; } } my $s_tags = join ",\n", map { qq( "$_") } @tags; my $s_tagmethods = join ",\n", @tagmeth; my $s_vtables = join "\n", @vtable; my $s_protos = join "\n", @proto; my $s_tokenizers = join "\n", @tokenizer; my $s_methods = join "\n", @method; my $tag_switch = Devel::Tokenizer::C->new(TokenFunc => sub { "return $TAG_PRE" . tag2def($_[0]) . ";\n" }, TokenString => 'tag') ->add_tokens(@tags)->generate; $tag_switch =~ s/^/ /gm; open OUT, ">$file" or die "$file: $!"; print OUT <>" }; $s_vtables /********************************************************************** * * Tag Method Table * **********************************************************************/ static const struct tag_tbl_ent { TagSetMethod set; TagGetMethod get; TagVerifyMethod verify; CtTagVtable *vtbl; } gs_TagTbl[] = { $s_tagmethods, {NULL, NULL, NULL, NULL} }; /********************************************************************** * * Main Tag Tokenizer * **********************************************************************/ static enum CbcTagId get_tag_id(const char *tag) { $tag_switch unknown: return CBC_INVALID_TAG; } $s_tokenizers $s_methods END close OUT; } Convert-Binary-C-0.85/token/t_ckeytok.c0000644000175000001440000003225614677003505016502 0ustar mhxusersswitch (name[0]) { case 'a': switch (name[1]) { case 's': if (name[2] == 'm' && name[3] == '\0') { /* asm */ static const CKeywordToken ckt = { ASM_TOK, "asm" }; return &ckt; } goto unknown; case 'u': if (name[2] == 't' && name[3] == 'o' && name[4] == '\0') { /* auto */ static const CKeywordToken ckt = { AUTO_TOK, "auto" }; return &ckt; } goto unknown; default: goto unknown; } case 'b': if (name[1] == 'r' && name[2] == 'e' && name[3] == 'a' && name[4] == 'k' && name[5] == '\0') { /* break */ static const CKeywordToken ckt = { BREAK_TOK, "break" }; return &ckt; } goto unknown; case 'c': switch (name[1]) { case 'a': if (name[2] == 's' && name[3] == 'e' && name[4] == '\0') { /* case */ static const CKeywordToken ckt = { CASE_TOK, "case" }; return &ckt; } goto unknown; case 'h': if (name[2] == 'a' && name[3] == 'r' && name[4] == '\0') { /* char */ static const CKeywordToken ckt = { CHAR_TOK, "char" }; return &ckt; } goto unknown; case 'o': switch (name[2]) { case 'n': switch (name[3]) { case 's': if (name[4] == 't' && name[5] == '\0') { /* const */ static const CKeywordToken ckt = { CONST_TOK, "const" }; return &ckt; } goto unknown; case 't': if (name[4] == 'i' && name[5] == 'n' && name[6] == 'u' && name[7] == 'e' && name[8] == '\0') { /* continue */ static const CKeywordToken ckt = { CONTINUE_TOK, "continue" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } case 'd': switch (name[1]) { case 'e': if (name[2] == 'f' && name[3] == 'a' && name[4] == 'u' && name[5] == 'l' && name[6] == 't' && name[7] == '\0') { /* default */ static const CKeywordToken ckt = { DEFAULT_TOK, "default" }; return &ckt; } goto unknown; case 'o': switch (name[2]) { case '\0': { /* do */ static const CKeywordToken ckt = { DO_TOK, "do" }; return &ckt; } case 'u': if (name[3] == 'b' && name[4] == 'l' && name[5] == 'e' && name[6] == '\0') { /* double */ static const CKeywordToken ckt = { DOUBLE_TOK, "double" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } case 'e': switch (name[1]) { case 'l': if (name[2] == 's' && name[3] == 'e' && name[4] == '\0') { /* else */ static const CKeywordToken ckt = { ELSE_TOK, "else" }; return &ckt; } goto unknown; case 'n': if (name[2] == 'u' && name[3] == 'm' && name[4] == '\0') { /* enum */ static const CKeywordToken ckt = { ENUM_TOK, "enum" }; return &ckt; } goto unknown; case 'x': if (name[2] == 't' && name[3] == 'e' && name[4] == 'r' && name[5] == 'n' && name[6] == '\0') { /* extern */ static const CKeywordToken ckt = { EXTERN_TOK, "extern" }; return &ckt; } goto unknown; default: goto unknown; } case 'f': switch (name[1]) { case 'l': if (name[2] == 'o' && name[3] == 'a' && name[4] == 't' && name[5] == '\0') { /* float */ static const CKeywordToken ckt = { FLOAT_TOK, "float" }; return &ckt; } goto unknown; case 'o': if (name[2] == 'r' && name[3] == '\0') { /* for */ static const CKeywordToken ckt = { FOR_TOK, "for" }; return &ckt; } goto unknown; default: goto unknown; } case 'g': if (name[1] == 'o' && name[2] == 't' && name[3] == 'o' && name[4] == '\0') { /* goto */ static const CKeywordToken ckt = { GOTO_TOK, "goto" }; return &ckt; } goto unknown; case 'i': switch (name[1]) { case 'f': if (name[2] == '\0') { /* if */ static const CKeywordToken ckt = { IF_TOK, "if" }; return &ckt; } goto unknown; case 'n': switch (name[2]) { case 'l': if (name[3] == 'i' && name[4] == 'n' && name[5] == 'e' && name[6] == '\0') { /* inline */ static const CKeywordToken ckt = { INLINE_TOK, "inline" }; return &ckt; } goto unknown; case 't': if (name[3] == '\0') { /* int */ static const CKeywordToken ckt = { INT_TOK, "int" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } case 'l': if (name[1] == 'o' && name[2] == 'n' && name[3] == 'g' && name[4] == '\0') { /* long */ static const CKeywordToken ckt = { LONG_TOK, "long" }; return &ckt; } goto unknown; case 'r': switch (name[1]) { case 'e': switch (name[2]) { case 'g': if (name[3] == 'i' && name[4] == 's' && name[5] == 't' && name[6] == 'e' && name[7] == 'r' && name[8] == '\0') { /* register */ static const CKeywordToken ckt = { REGISTER_TOK, "register" }; return &ckt; } goto unknown; case 's': if (name[3] == 't' && name[4] == 'r' && name[5] == 'i' && name[6] == 'c' && name[7] == 't' && name[8] == '\0') { /* restrict */ static const CKeywordToken ckt = { RESTRICT_TOK, "restrict" }; return &ckt; } goto unknown; case 't': if (name[3] == 'u' && name[4] == 'r' && name[5] == 'n' && name[6] == '\0') { /* return */ static const CKeywordToken ckt = { RETURN_TOK, "return" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } case 's': switch (name[1]) { case 'h': if (name[2] == 'o' && name[3] == 'r' && name[4] == 't' && name[5] == '\0') { /* short */ static const CKeywordToken ckt = { SHORT_TOK, "short" }; return &ckt; } goto unknown; case 'i': switch (name[2]) { case 'g': if (name[3] == 'n' && name[4] == 'e' && name[5] == 'd' && name[6] == '\0') { /* signed */ static const CKeywordToken ckt = { SIGNED_TOK, "signed" }; return &ckt; } goto unknown; case 'z': if (name[3] == 'e' && name[4] == 'o' && name[5] == 'f' && name[6] == '\0') { /* sizeof */ static const CKeywordToken ckt = { SIZEOF_TOK, "sizeof" }; return &ckt; } goto unknown; default: goto unknown; } case 't': switch (name[2]) { case 'a': if (name[3] == 't' && name[4] == 'i' && name[5] == 'c' && name[6] == '\0') { /* static */ static const CKeywordToken ckt = { STATIC_TOK, "static" }; return &ckt; } goto unknown; case 'r': if (name[3] == 'u' && name[4] == 'c' && name[5] == 't' && name[6] == '\0') { /* struct */ static const CKeywordToken ckt = { STRUCT_TOK, "struct" }; return &ckt; } goto unknown; default: goto unknown; } case 'w': if (name[2] == 'i' && name[3] == 't' && name[4] == 'c' && name[5] == 'h' && name[6] == '\0') { /* switch */ static const CKeywordToken ckt = { SWITCH_TOK, "switch" }; return &ckt; } goto unknown; default: goto unknown; } case 't': if (name[1] == 'y' && name[2] == 'p' && name[3] == 'e' && name[4] == 'd' && name[5] == 'e' && name[6] == 'f' && name[7] == '\0') { /* typedef */ static const CKeywordToken ckt = { TYPEDEF_TOK, "typedef" }; return &ckt; } goto unknown; case 'u': switch (name[1]) { case 'n': switch (name[2]) { case 'i': if (name[3] == 'o' && name[4] == 'n' && name[5] == '\0') { /* union */ static const CKeywordToken ckt = { UNION_TOK, "union" }; return &ckt; } goto unknown; case 's': if (name[3] == 'i' && name[4] == 'g' && name[5] == 'n' && name[6] == 'e' && name[7] == 'd' && name[8] == '\0') { /* unsigned */ static const CKeywordToken ckt = { UNSIGNED_TOK, "unsigned" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } case 'v': switch (name[1]) { case 'o': switch (name[2]) { case 'i': if (name[3] == 'd' && name[4] == '\0') { /* void */ static const CKeywordToken ckt = { VOID_TOK, "void" }; return &ckt; } goto unknown; case 'l': if (name[3] == 'a' && name[4] == 't' && name[5] == 'i' && name[6] == 'l' && name[7] == 'e' && name[8] == '\0') { /* volatile */ static const CKeywordToken ckt = { VOLATILE_TOK, "volatile" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } case 'w': if (name[1] == 'h' && name[2] == 'i' && name[3] == 'l' && name[4] == 'e' && name[5] == '\0') { /* while */ static const CKeywordToken ckt = { WHILE_TOK, "while" }; return &ckt; } goto unknown; default: goto unknown; } Convert-Binary-C-0.85/ucpp/0000755000175000001440000000000014677003524014162 5ustar mhxusersConvert-Binary-C-0.85/ucpp/ucppi.h0000644000175000001440000001652614676735310015471 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__UCPPI__ #define UCPP__UCPPI__ #include "tune.h" #include "cpp.h" #include "nhash.h" #include "reent.h" /* * A macro represented in a compact form; simple tokens are represented * by one byte, containing their number. Tokens with a string value are * followed by the value (string finished by a 0). Macro arguments are * followed by the argument number (in one byte -- thus implying a hard * limit of 254 arguments (number 255 is for __VA_ARGS__). */ struct comp_token_fifo { size_t length; size_t rp; unsigned char *t; }; /* These declarations are used only internally by ucpp */ /* * S_TOKEN(x) checks whether x is a token type with an embedded string * ttMWS(x) checks whether x is macro whitespace (space, comment...) * ttWHI(x) checks whether x is whitespace (MWS or newline) */ #define S_TOKEN(x) STRING_TOKEN(x) #define ttMWS(x) ((x) == NONE || (x) == COMMENT || (x) == OPT_NONE) #define ttWHI(x) (ttMWS(x) || (x) == NEWLINE) /* * Function prototypes */ /* * from lexer.c */ #define init_cppm UCPP_PRIVATE(init_cppm) #define put_char UCPP_PRIVATE(put_char) #define discard_char UCPP_PRIVATE(discard_char) #define next_token UCPP_PRIVATE(next_token) #define grap_char UCPP_PRIVATE(grap_char) #define space_char UCPP_PRIVATE(space_char) void init_cppm(pCPP); void put_char(pCPP_ struct lexer_state *, unsigned char); void discard_char(pCPP_ struct lexer_state *); int next_token(pCPP_ struct lexer_state *); int grap_char(pCPP_ struct lexer_state *); int space_char(int); #ifdef UCPP_REENTRANT #define new_cppm UCPP_PRIVATE(new_cppm) #define del_cppm UCPP_PRIVATE(del_cppm) CPPM new_cppm(void); void del_cppm(CPPM); #endif #ifdef UCPP_CLONE #define clone_cppm UCPP_PRIVATE(clone_cppm) CPPM clone_cppm(const CPPM); #endif /* * from assert.c */ struct assert { hash_item_header head; /* first field */ size_t nbval; struct token_fifo *val; }; #define cmp_token_list UCPP_PRIVATE(cmp_token_list) #define handle_assert UCPP_PRIVATE(handle_assert) #define handle_unassert UCPP_PRIVATE(handle_unassert) #define get_assertion UCPP_PRIVATE(get_assertion) #define wipe_assertions UCPP_PRIVATE(wipe_assertions) int cmp_token_list(struct token_fifo *, struct token_fifo *); int handle_assert(pCPP_ struct lexer_state *); int handle_unassert(pCPP_ struct lexer_state *); struct assert *get_assertion(pCPP_ char *); void wipe_assertions(pCPP); /* * from macro.c */ struct macro { hash_item_header head; /* first field */ int narg; char **arg; int nest; int vaarg; #ifdef LOW_MEM struct comp_token_fifo cval; #else struct token_fifo val; #endif }; #define print_token UCPP_PRIVATE(print_token) #define handle_define UCPP_PRIVATE(handle_define) #define handle_undef UCPP_PRIVATE(handle_undef) #define handle_ifdef UCPP_PRIVATE(handle_ifdef) #define handle_ifndef UCPP_PRIVATE(handle_ifndef) #define substitute_macro UCPP_PRIVATE(substitute_macro) #define get_macro UCPP_PRIVATE(get_macro) #define wipe_macros UCPP_PRIVATE(wipe_macros) void print_token(pCPP_ struct lexer_state *, struct token *, long); int handle_define(pCPP_ struct lexer_state *); int handle_undef(pCPP_ struct lexer_state *); int handle_ifdef(pCPP_ struct lexer_state *); int handle_ifndef(pCPP_ struct lexer_state *); int substitute_macro(pCPP_ struct lexer_state *, struct macro *, struct token_fifo *, int, int, long); struct macro *get_macro(pCPP_ char *); void wipe_macros(pCPP); #ifdef UCPP_REENTRANT #define dsharp_lexer (REENTR->_global.dsharp_lexer) #define compile_time (REENTR->_global.compile_time) #define compile_date (REENTR->_global.compile_date) #ifdef PRAGMA_TOKENIZE #define tokenize_lexer (REENTR->_global.tokenize_lexer) #endif #else #define dsharp_lexer UCPP_PRIVATE(dsharp_lexer) #define compile_time UCPP_PRIVATE(compile_time) #define compile_date UCPP_PRIVATE(compile_date) extern struct lexer_state dsharp_lexer; extern char compile_time[], compile_date[]; #ifdef PRAGMA_TOKENIZE #define tokenize_lexer UCPP_PRIVATE(tokenize_lexer) extern struct lexer_state tokenize_lexer; #endif #endif /* UCPP_REENTRANT */ /* * from eval.c */ #define strtoconst UCPP_PRIVATE(strtoconst) #define eval_expr UCPP_PRIVATE(eval_expr) unsigned long strtoconst(pCPP_ char *); unsigned long eval_expr(pCPP_ struct token_fifo *, int *, int); #ifdef UCPP_REENTRANT #define eval_line (REENTR->_global.eval_line) #else #define eval_line UCPP_PRIVATE(eval_line) extern long eval_line; #endif #ifdef UCPP_REENTRANT #define eval_exception (REENTR->_global.eval_exception) #else #define eval_exception UCPP_PRIVATE(eval_exception) extern JMP_BUF eval_exception; #endif /* * from cpp.c */ #define token_name UCPP_PRIVATE(token_name) #define throw_away UCPP_PRIVATE(throw_away) #define garbage_collect UCPP_PRIVATE(garbage_collect) #define init_buf_lexer_state UCPP_PRIVATE(init_buf_lexer_state) #ifdef PRAGMA_TOKENIZE #define compress_token_list UCPP_PRIVATE(compress_token_list) #endif char *token_name(struct token *); void throw_away(struct garbage_fifo *, char *); void garbage_collect(struct garbage_fifo *); void init_buf_lexer_state(struct lexer_state *, int); #ifdef PRAGMA_TOKENIZE struct comp_token_fifo compress_token_list(struct token_fifo *); #endif #ifdef UCPP_REENTRANT #define no_special_macros (REENTR->no_special_macros) #define emit_dependencies (REENTR->emit_dependencies) #define emit_defines (REENTR->emit_defines) #define emit_assertions (REENTR->emit_assertions) #define c99_compliant (REENTR->c99_compliant) #define c99_hosted (REENTR->c99_hosted) #define emit_output (REENTR->emit_output) #define current_filename (REENTR->current_filename) #define current_long_filename (REENTR->current_long_filename) #define ouch (REENTR->ucpp_ouch) #define error (REENTR->ucpp_error) #define warning (REENTR->ucpp_warning) #define transient_characters (REENTR->transient_characters) #define protect_detect (REENTR->protect_detect) #else #define ouch ucpp_ouch #define error ucpp_error #define warning ucpp_warning #endif #endif Convert-Binary-C-0.85/ucpp/mem.c0000644000175000001440000001611514676735310015114 0ustar mhxusers/* * Memory manipulation routines * (c) Thomas Pornin 1998 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "mem.h" #include #include #include /* * Shifting a pointer of that some bytes is supposed to satisfy * alignment requirements. This is *not* guaranteed by the standard * but should work everywhere anyway. */ #define ALIGNSHIFT (sizeof(long) > sizeof(long double) \ ? sizeof(long) : sizeof(long double)) #ifdef AUDIT void die(void) { abort(); } static void suicide(unsigned long e) { fprintf(stderr, "ouch: Schrodinger's beef is not dead ! %lx\n", e); die(); } #else void die(void) { exit(EXIT_FAILURE); } #endif #if defined AUDIT || defined MEM_CHECK || defined MEM_DEBUG /* * This function is equivalent to a malloc(), but will display an error * message and exit if the wanted memory is not available */ #ifdef MEM_DEBUG static void *getmem_raw(size_t x) #else void *(getmem)(size_t x) #endif { void *m; #ifdef AUDIT m = UCPP_MALLOC(x + ALIGNSHIFT); #else m = UCPP_MALLOC(x); #endif if (m == 0) { fprintf(stderr, "ouch: malloc() failed\n"); die(); } #ifdef AUDIT *((unsigned long *)m) = 0xdeadbeefUL; return (void *)(((char *)m) + ALIGNSHIFT); #else return m; #endif } #endif #ifndef MEM_DEBUG /* * This function is equivalent to a realloc(); if the realloc() call * fails, it will try a malloc() and a memcpy(). If not enough memory is * available, the program exits with an error message */ void *(incmem)(void *m, size_t x, size_t nx) { void *nm; #ifdef AUDIT m = (void *)(((char *)m) - ALIGNSHIFT); if (*((unsigned long *)m) != 0xdeadbeefUL) suicide(*((unsigned long *)m)); x += ALIGNSHIFT; nx += ALIGNSHIFT; #endif if (!(nm = UCPP_REALLOC(m, nx))) { if (x > nx) x = nx; nm = (getmem)(nx); memcpy(nm, m, x); /* free() and not freemem(), because of the Schrodinger beef */ UCPP_FREE(m); } #ifdef AUDIT return (void *)(((char *)nm) + ALIGNSHIFT); #else return nm; #endif } #endif #if defined AUDIT || defined MEM_DEBUG /* * This function frees the given block */ #ifdef MEM_DEBUG static void freemem_raw(void *x) #else void (freemem)(void *x) #endif { #ifdef AUDIT void *y = (void *)(((char *)x) - ALIGNSHIFT); if ((*((unsigned long *)y)) != 0xdeadbeefUL) suicide(*((unsigned long *)y)); *((unsigned long *)y) = 0xfeedbabeUL; UCPP_FREE(y); #else UCPP_FREE(x); #endif } #endif #ifdef AUDIT /* * This function copies n bytes from src to dest */ void *mmv(void *dest, const void *src, size_t n) { return memcpy(dest, src, n); } /* * This function copies n bytes from src to dest */ void *mmvwo(void *dest, const void *src, size_t n) { return memmove(dest, src, n); } #endif #ifndef MEM_DEBUG /* * This function creates a new char * and fills it with a copy of src */ char *(sdup)(const char *src) { size_t n = 1 + strlen(src); char *x = getmem(n); mmv(x, src, n); return x; } #endif #ifdef MEM_DEBUG /* * We include here special versions of getmem(), freemem() and incmem() * that track allocations and are used to detect memory leaks. * * Each allocation is referenced in a list, with a serial number. */ /* * Define "true" functions for applications that need pointers * to such functions. */ #ifndef MEM_DEBUG_NO_TRUE_FUNC void *(getmem)(size_t n) { return getmem(n); } void (freemem)(void *x) { freemem(x); } void *(incmem)(void *x, size_t s, size_t ns) { return incmem(x, s, ns); } char *(sdup)(const char *s) { return sdup(s); } #endif static long current_serial = 0L; /* must be a power of two */ #define MEMDEBUG_MEMG 128U static struct mem_track { void *block; long serial; const char *file; int line; } *mem = 0; static size_t meml = 0; static unsigned int current_ptr = 0; static void *true_incmem(void *x, size_t old_size, size_t new_size) { void * y = UCPP_REALLOC(x, new_size); if (y == 0) { y = UCPP_MALLOC(new_size); if (y == 0) { fprintf(stderr, "ouch: malloc() failed\n"); die(); } mmv(y, x, old_size < new_size ? old_size : new_size); UCPP_FREE(x); } return y; } static long find_free_block(void) { unsigned int n; size_t i; for (i = 0, n = current_ptr; i < meml; i ++) { if (mem[n].block == 0) { current_ptr = n; return n; } n = (n + 1) & (meml - 1U); } if (meml == 0) { size_t j; meml = MEMDEBUG_MEMG; mem = UCPP_MALLOC(meml * sizeof(struct mem_track)); current_ptr = 0; for (j = 0; j < meml ; j ++) mem[j].block = 0; } else { size_t j; mem = true_incmem(mem, meml * sizeof(struct mem_track), 2 * meml * sizeof(struct mem_track)); current_ptr = meml; for (j = meml; j < 2 * meml ; j ++) mem[j].block = 0; meml *= 2; } return current_ptr; } void *getmem_debug(size_t n, const char *file, int line) { void *x = getmem_raw(n + ALIGNSHIFT); long i = find_free_block(); *(long *)x = i; mem[i].block = x; mem[i].serial = current_serial ++; mem[i].file = file; mem[i].line = line; return (void *)((unsigned char *)x + ALIGNSHIFT); } void freemem_debug(void *x, const char *file, int line) { void *y = (unsigned char *)x - ALIGNSHIFT; long i = *(long *)y; if (i < 0 || (size_t)i >= meml || mem[i].block != y) { fprintf(stderr, "ouch: freeing free people (from %s:%d)\n", file, line); die(); } mem[i].block = 0; freemem_raw(y); } void *incmem_debug(void *x, size_t ol, size_t nl, const char *file, int line) { void *y = getmem_debug(nl, file, line); mmv(y, x, ol < nl ? ol : nl); freemem_debug(x, file, line); return y; } char *sdup_debug(const char *src, const char *file, int line) { size_t n = 1 + strlen(src); char *x = getmem_debug(n, file, line); mmv(x, src, n); return x; } void report_leaks(void) { size_t i; for (i = 0; i < meml; i ++) { if (mem[i].block) fprintf(stderr, "leak: serial %ld, %s:%d\n", mem[i].serial, mem[i].file, mem[i].line); } } #endif Convert-Binary-C-0.85/ucpp/atest.c0000644000175000001440000001346414676735310015462 0ustar mhxusers#include #include #include #include #if defined TEST_NATIVE #define NATIVE_SIGNED int #define NATIVE_UNSIGNED unsigned #define NATIVE_UNSIGNED_BITS 32 #define NATIVE_SIGNED_MIN LONG_MIN #define NATIVE_SIGNED_MAX LONG_MAX #elif defined TEST_SIMUL #define SIMUL_ARITH_SUBTYPE unsigned short #define SIMUL_SUBTYPE_BITS 16 #define SIMUL_NUMBITS 31 #else #error ====== Either TEST_NATIVE or TEST_SIMUL must be defined. #endif #define ARITH_TYPENAME zoinx #define ARITH_FUNCTION_HEADER static inline #define ARITH_WARNING(type) z_warn(type) #define ARITH_ERROR(type) z_error(type) void z_warn(int type); void z_error(int type); #include "arith.c" #if defined TEST_NATIVE static inline u_zoinx unsigned_to_uz(unsigned x) { return (u_zoinx)x; } static inline s_zoinx int_to_sz(int x) { return (s_zoinx)x; } static inline void print_uz(u_zoinx x) { printf("%u", x); } static inline void print_sz(s_zoinx x) { printf("%d", x); } #else static inline u_zoinx unsigned_to_uz(unsigned x) { u_zoinx v; v.msw = (x >> 16) & 0x7FFFU; v.lsw = x & 0xFFFFU; return v; } static inline s_zoinx int_to_sz(int x) { return unsigned_to_uz((unsigned)x); } static inline void print_uz(u_zoinx x) { printf("%u", ((unsigned)(x.msw) << 16) + (unsigned)(x.lsw)); } static inline void print_sz(s_zoinx x) { if (x.msw & 0x4000U) { putchar('-'); x = zoinx_u_neg(x); } print_uz(x); } #endif static inline void print_int(int x) { printf("%d", x); } static jmp_buf jbuf; void z_warn(int type) { switch (type) { case ARITH_EXCEP_CONV_O: fputs("[overflow on conversion] ", stdout); break; case ARITH_EXCEP_NEG_O: fputs("[overflow on unary minus] ", stdout); break; case ARITH_EXCEP_NOT_T: fputs("[trap representation on bitwise inversion] ", stdout); break; case ARITH_EXCEP_PLUS_O: fputs("[overflow on addition] ", stdout); break; case ARITH_EXCEP_PLUS_U: fputs("[underflow on addition] ", stdout); break; case ARITH_EXCEP_MINUS_O: fputs("[overflow on subtraction] ", stdout); break; case ARITH_EXCEP_MINUS_U: fputs("[underflow on subtraction] ", stdout); break; case ARITH_EXCEP_AND_T: fputs("[trap representation on bitwise and] ", stdout); break; case ARITH_EXCEP_XOR_T: fputs("[trap representation on bitwise xor] ", stdout); break; case ARITH_EXCEP_OR_T: fputs("[trap representation on bitwise or] ", stdout); break; case ARITH_EXCEP_LSH_W: fputs("[left shift by type width or more] ", stdout); break; case ARITH_EXCEP_LSH_C: fputs("[left shift by negative count] ", stdout); break; case ARITH_EXCEP_LSH_O: fputs("[overflow on left shift] ", stdout); break; case ARITH_EXCEP_LSH_U: fputs("[underflow on left shift] ", stdout); break; case ARITH_EXCEP_RSH_W: fputs("[right shift by type width or more] ", stdout); break; case ARITH_EXCEP_RSH_C: fputs("[right shift by negative count] ", stdout); break; case ARITH_EXCEP_RSH_N: fputs("[right shift of negative value] ", stdout); break; case ARITH_EXCEP_STAR_O: fputs("[overflow on multiplication] ", stdout); break; case ARITH_EXCEP_STAR_U: fputs("[underflow on multiplication] ", stdout); break; default: fprintf(stdout, "UNKNOWN WARNING TYPE: %d\n", type); exit(EXIT_FAILURE); } } void z_error(int type) { switch (type) { case ARITH_EXCEP_SLASH_D: fputs("division by 0\n", stdout); break; case ARITH_EXCEP_SLASH_O: fputs("overflow on division\n", stdout); break; case ARITH_EXCEP_PCT_D: fputs("division by 0 on modulus operator\n", stdout); break; default: fprintf(stdout, "UNKNOWN ERROR TYPE: %d\n", type); exit(EXIT_FAILURE); } longjmp(jbuf, 1); } int main(void) { #define OPTRY_GEN(op, x, y, convx, convy, printz) do { \ printf("%s %s %s -> ", #x, #op, #y); \ if (!setjmp(jbuf)) { \ printz(zoinx_ ## op (convx(x), convy(y))); \ putchar('\n'); \ } \ } while (0) #define IDENT(x) x #define OPTRY_UU_U(op, x, y) \ OPTRY_GEN(op, x, y, unsigned_to_uz, unsigned_to_uz, print_uz) #define OPTRY_UI_U(op, x, y) \ OPTRY_GEN(op, x, y, unsigned_to_uz, IDENT, print_uz) #define OPTRY_UU_I(op, x, y) \ OPTRY_GEN(op, x, y, unsigned_to_uz, unsigned_to_uz, print_int) #define OPTRY_SS_S(op, x, y) \ OPTRY_GEN(op, x, y, int_to_sz, int_to_sz, print_sz) #define OPTRY_SI_S(op, x, y) \ OPTRY_GEN(op, x, y, int_to_sz, IDENT, print_sz) #define OPTRY_SS_I(op, x, y) \ OPTRY_GEN(op, x, y, int_to_sz, int_to_sz, print_int) OPTRY_UU_U(u_plus, 3, 4); OPTRY_UU_U(u_plus, 1549587182, 1790478233); OPTRY_UU_U(u_minus, 1549587182, 1790478233); OPTRY_UU_U(u_minus, 1790478233, 1549587182); OPTRY_UU_U(u_star, 432429875, 347785487); OPTRY_UU_U(u_slash, 432429875, 34487); OPTRY_UU_U(u_pct, 432429875, 34487); OPTRY_UI_U(u_lsh, 1783, 19); OPTRY_UI_U(u_lsh, 1783, 20); OPTRY_UI_U(u_lsh, 1783, 21); OPTRY_UI_U(u_rsh, 475902857, 7); OPTRY_UI_U(u_rsh, 475902857, 17); OPTRY_UI_U(u_rsh, 475902857, 38); OPTRY_SS_S(s_plus, 3, 4); OPTRY_SS_S(s_plus, 1549587182, 1790478233); OPTRY_SS_S(s_plus, -1549587182, -1790478233); OPTRY_SS_S(s_minus, 1549587182, 1790478233); OPTRY_SS_S(s_minus, 1790478233, 1549587182); OPTRY_SS_S(s_minus, -1790478233, -1549587182); OPTRY_SS_S(s_minus, -1790478233, 1549587182); OPTRY_SS_S(s_star, 432429875, 347785487); OPTRY_SS_S(s_star, 432429875, -347785487); OPTRY_SS_S(s_slash, 432429875, 34487); OPTRY_SS_S(s_slash, -432429875, 34487); OPTRY_SS_S(s_slash, 432429875, -34487); OPTRY_SS_S(s_slash, -432429875, -34487); OPTRY_SS_S(s_slash, 432429875, 0); OPTRY_SS_S(s_slash, -2147483647 - 1, -1); OPTRY_SS_S(s_pct, 432429875, 34487); OPTRY_SS_S(s_pct, 432429875, 0); OPTRY_SI_S(s_lsh, -1, 10); OPTRY_SI_S(s_lsh, 1783, 19); OPTRY_SI_S(s_lsh, 1783, 20); OPTRY_SI_S(s_lsh, 1783, 21); OPTRY_SI_S(s_rsh, -1024, 8); OPTRY_SI_S(s_rsh, 475902857, 7); OPTRY_SI_S(s_rsh, 475902857, 17); return 0; } Convert-Binary-C-0.85/ucpp/lexer.c0000644000175000001440000006352714676735310015466 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "tune.h" #include #include #include #include #include "ucppi.h" #include "mem.h" #ifdef UCPP_MMAP #include #include #include #endif /* * Character classes for description of the automaton. * The characters used for representing classes should not appear * explicitely in an automaton rule. */ #define SPC ' ' /* whitespace characters */ #define ALP 'Z' /* A-Z, a-z, _ */ #define NUM '9' /* 0-9 */ #define ANY 'Y' /* any character */ #define VCH 'F' /* void character (for end of input) */ /* * flags and macros to test those flags * STO: the currently read string is a complete token * PUT: the currently read character must be added to the string * FRZ: the currently read character must be kept and read again */ #define MOD_MK 255 #define noMOD(x) ((x) & 255) #define STO(x) ((x) | 256) #define ttSTO(x) ((x) & 256) #define FRZ(x) ((x) | 512) #define ttFRZ(x) ((x) & 512) #define PUT(x) ((x) | 1024) #define ttPUT(x) ((x) & 1024) /* order is important */ enum { S_START, S_SPACE, S_BANG, S_STRING, S_STRING2, S_COLON, S_SHARP, S_PCT, S_PCT2, S_PCT3, S_AMPER, S_CHAR, S_CHAR2, S_STAR, S_PLUS, S_MINUS, S_DOT, S_DOT2, S_SLASH, S_NUMBER, S_NUMBER2, S_LT, S_LT2, S_EQ, S_GT, S_GT2, S_CIRC, S_PIPE, S_BACKSLASH, S_COMMENT, S_COMMENT2, S_COMMENT3, S_COMMENT4, S_COMMENT5, S_NAME, S_NAME_BS, S_LCHAR, MSTATE, S_ILL, S_DDOT, S_DDSHARP, S_BS, S_ROGUE_BS, S_BEHEAD, S_DECAY, S_TRUNC, S_TRUNCC, S_OUCH }; #define CMT(x) ((x) >= S_COMMENT && (x) <= S_COMMENT5) #define CMCR 2 /* * This is the description of the automaton. It is not used "as is" * but copied at execution time into a table. * * To my utmost displeasure, there are a few hacks in read_token() * (which uses the transformed automaton) about the special handling * of slashes, sharps, and the letter L. */ static struct machine_state { int state; unsigned char input[CMCR]; int new_state; } cppms[] = { /* S_START is the generic beginning state */ { S_START, { ANY }, S_ILL }, #ifdef SEMPER_FIDELIS { S_START, { SPC }, PUT(S_SPACE) }, #else { S_START, { SPC }, S_SPACE }, #endif { S_START, { '\n' }, STO(NEWLINE) }, { S_START, { '!' }, S_BANG }, { S_START, { '"' }, PUT(S_STRING) }, { S_START, { '#' }, S_SHARP }, { S_START, { '%' }, S_PCT }, { S_START, { '&' }, S_AMPER }, { S_START, { '\'' }, PUT(S_CHAR) }, { S_START, { '(' }, STO(LPAR) }, { S_START, { ')' }, STO(RPAR) }, { S_START, { '*' }, S_STAR }, { S_START, { '+' }, S_PLUS }, { S_START, { ',' }, STO(COMMA) }, { S_START, { '-' }, S_MINUS }, { S_START, { '.' }, PUT(S_DOT) }, #ifdef SEMPER_FIDELIS { S_START, { '/' }, PUT(S_SLASH) }, #else { S_START, { '/' }, S_SLASH }, #endif { S_START, { NUM }, PUT(S_NUMBER) }, { S_START, { ':' }, S_COLON }, { S_START, { ';' }, STO(SEMIC) }, { S_START, { '<' }, S_LT }, { S_START, { '=' }, S_EQ }, { S_START, { '>' }, S_GT }, { S_START, { '?' }, STO(QUEST) }, { S_START, { ALP }, PUT(S_NAME) }, { S_START, { 'L' }, PUT(S_LCHAR) }, { S_START, { '[' }, STO(LBRK) }, { S_START, { ']' }, STO(RBRK) }, { S_START, { '^' }, S_CIRC }, { S_START, { '{' }, STO(LBRA) }, { S_START, { '|' }, S_PIPE }, { S_START, { '}' }, STO(RBRA) }, { S_START, { '~' }, STO(NOT) }, { S_START, { '\\' }, S_BACKSLASH }, /* after a space */ { S_SPACE, { ANY }, FRZ(STO(NONE)) }, #ifdef SEMPER_FIDELIS { S_SPACE, { SPC }, PUT(S_SPACE) }, #else { S_SPACE, { SPC }, S_SPACE }, #endif /* after a ! */ { S_BANG, { ANY }, FRZ(STO(LNOT)) }, { S_BANG, { '=' }, STO(NEQ) }, /* after a " */ { S_STRING, { ANY }, PUT(S_STRING) }, { S_STRING, { VCH }, FRZ(S_TRUNC) }, { S_STRING, { '\n' }, FRZ(S_BEHEAD) }, { S_STRING, { '\\' }, PUT(S_STRING2) }, { S_STRING, { '"' }, PUT(STO(STRING)) }, { S_STRING2, { ANY }, PUT(S_STRING) }, { S_STRING2, { VCH }, FRZ(S_TRUNC) }, /* after a # */ { S_SHARP, { ANY }, FRZ(STO(SHARP)) }, { S_SHARP, { '#' }, STO(DSHARP) }, /* after a : */ { S_COLON, { ANY }, FRZ(STO(COLON)) }, { S_COLON, { '>' }, STO(DIG_RBRK) }, /* after a % */ { S_PCT, { ANY }, FRZ(STO(PCT)) }, { S_PCT, { '=' }, STO(ASPCT) }, { S_PCT, { '>' }, STO(DIG_RBRA) }, { S_PCT, { ':' }, S_PCT2 }, /* after a %: */ { S_PCT2, { ANY }, FRZ(STO(DIG_SHARP)) }, { S_PCT2, { '%' }, S_PCT3 }, /* after a %:% */ { S_PCT3, { ANY }, FRZ(S_DDSHARP) }, { S_PCT3, { ':' }, STO(DIG_DSHARP) }, /* after a & */ { S_AMPER, { ANY }, FRZ(STO(AND)) }, { S_AMPER, { '=' }, STO(ASAND) }, { S_AMPER, { '&' }, STO(LAND) }, /* after a ' */ { S_CHAR, { ANY }, PUT(S_CHAR) }, { S_CHAR, { VCH }, FRZ(S_TRUNC) }, { S_CHAR, { '\'' }, PUT(STO(CHAR)) }, { S_CHAR, { '\\' }, PUT(S_CHAR2) }, /* after a \ in a character constant useful only for '\'' */ { S_CHAR2, { ANY }, PUT(S_CHAR) }, { S_CHAR2, { VCH }, FRZ(S_TRUNC) }, /* after a * */ { S_STAR, { ANY }, FRZ(STO(STAR)) }, { S_STAR, { '=' }, STO(ASSTAR) }, /* after a + */ { S_PLUS, { ANY }, FRZ(STO(PLUS)) }, { S_PLUS, { '+' }, STO(PPLUS) }, { S_PLUS, { '=' }, STO(ASPLUS) }, /* after a - */ { S_MINUS, { ANY }, FRZ(STO(MINUS)) }, { S_MINUS, { '-' }, STO(MMINUS) }, { S_MINUS, { '=' }, STO(ASMINUS) }, { S_MINUS, { '>' }, STO(ARROW) }, /* after a . */ { S_DOT, { ANY }, FRZ(STO(DOT)) }, { S_DOT, { NUM }, PUT(S_NUMBER) }, { S_DOT, { '.' }, S_DOT2 }, /* after .. */ { S_DOT2, { ANY }, FRZ(S_DDOT) }, { S_DOT2, { '.' }, STO(MDOTS) }, /* after a / */ { S_SLASH, { ANY }, FRZ(STO(SLASH)) }, { S_SLASH, { '=' }, STO(ASSLASH) }, #ifdef SEMPER_FIDELIS { S_SLASH, { '*' }, PUT(S_COMMENT) }, { S_SLASH, { '/' }, PUT(S_COMMENT5) }, #else { S_SLASH, { '*' }, S_COMMENT }, { S_SLASH, { '/' }, S_COMMENT5 }, #endif /* * There is a little hack in read_token() to disable * this last rule, if C++ (C99) comments are not enabled. */ /* after a number */ { S_NUMBER, { ANY }, FRZ(STO(NUMBER)) }, { S_NUMBER, { ALP, NUM }, PUT(S_NUMBER) }, { S_NUMBER, { '.' }, PUT(S_NUMBER) }, { S_NUMBER, { 'E', 'e' }, PUT(S_NUMBER2) }, { S_NUMBER, { 'P', 'p' }, PUT(S_NUMBER2) }, { S_NUMBER2, { ANY }, FRZ(STO(NUMBER)) }, { S_NUMBER2, { ALP, NUM }, PUT(S_NUMBER) }, { S_NUMBER2, { '+', '-' }, PUT(S_NUMBER) }, /* after a < */ { S_LT, { ANY }, FRZ(STO(LT)) }, { S_LT, { '=' }, STO(LEQ) }, { S_LT, { '<' }, S_LT2 }, { S_LT, { ':' }, STO(DIG_LBRK) }, { S_LT, { '%' }, STO(DIG_LBRA) }, { S_LT2, { ANY }, FRZ(STO(LSH)) }, { S_LT2, { '=' }, STO(ASLSH) }, /* after a > */ { S_GT, { ANY }, FRZ(STO(GT)) }, { S_GT, { '=' }, STO(GEQ) }, { S_GT, { '>' }, S_GT2 }, { S_GT2, { ANY }, FRZ(STO(RSH)) }, { S_GT2, { '=' }, STO(ASRSH) }, /* after a = */ { S_EQ, { ANY }, FRZ(STO(ASGN)) }, { S_EQ, { '=' }, STO(SAME) }, #ifdef CAST_OP { S_EQ, { '>' }, STO(CAST) }, #endif /* after a \ */ { S_BACKSLASH, { ANY }, FRZ(S_BS) }, { S_BACKSLASH, { 'U', 'u' }, FRZ(S_NAME_BS) }, /* after a letter */ { S_NAME, { ANY }, FRZ(STO(NAME)) }, { S_NAME, { ALP, NUM }, PUT(S_NAME) }, { S_NAME, { '\\' }, S_NAME_BS }, /* after a \ in an identifier */ { S_NAME_BS, { ANY }, FRZ(S_ROGUE_BS) }, { S_NAME_BS, { 'u', 'U' }, PUT(S_NAME) }, /* after a L */ { S_LCHAR, { ANY }, FRZ(S_NAME) }, { S_LCHAR, { '"' }, PUT(S_STRING) }, { S_LCHAR, { '\'' }, PUT(S_CHAR) }, /* after a ^ */ { S_CIRC, { ANY }, FRZ(STO(CIRC)) }, { S_CIRC, { '=' }, STO(ASCIRC) }, /* after a | */ { S_PIPE, { ANY }, FRZ(STO(OR)) }, { S_PIPE, { '=' }, STO(ASOR) }, { S_PIPE, { '|' }, STO(LOR) }, /* after a / and * */ #ifdef SEMPER_FIDELIS { S_COMMENT, { ANY }, PUT(S_COMMENT) }, { S_COMMENT, { VCH }, FRZ(S_TRUNCC) }, { S_COMMENT, { '*' }, PUT(S_COMMENT2) }, { S_COMMENT2, { ANY }, FRZ(S_COMMENT) }, { S_COMMENT2, { VCH }, FRZ(S_TRUNCC) }, { S_COMMENT2, { '*' }, PUT(S_COMMENT2) }, { S_COMMENT2, { '/' }, STO(PUT(COMMENT)) }, { S_COMMENT5, { ANY }, PUT(S_COMMENT5) }, { S_COMMENT5, { VCH }, FRZ(S_DECAY) }, { S_COMMENT5, { '\n' }, FRZ(STO(COMMENT)) }, #else { S_COMMENT, { ANY }, S_COMMENT }, { S_COMMENT, { VCH }, FRZ(S_TRUNCC) }, { S_COMMENT, { '*' }, S_COMMENT2 }, { S_COMMENT2, { ANY }, FRZ(S_COMMENT) }, { S_COMMENT2, { VCH }, FRZ(S_TRUNCC) }, { S_COMMENT2, { '*' }, S_COMMENT2 }, { S_COMMENT2, { '/' }, STO(COMMENT) }, { S_COMMENT5, { ANY }, S_COMMENT5 }, { S_COMMENT5, { VCH }, FRZ(S_DECAY) }, { S_COMMENT5, { '\n' }, FRZ(STO(COMMENT)) }, #endif /* dummy end of machine description */ { 0, { 0 }, 0 } }; /* * cppm is the table used to store the automaton: if we are in state s * and we read character c, we apply the action cppm[s][c] (jumping to * another state, or emitting a token). * cppm_vch is the table for the special virtual character "end of input" */ #ifdef UCPP_REENTRANT struct _cppm { int cppm[MSTATE][MAX_CHAR_VAL]; int cppm_vch[MSTATE]; }; #define dCPPM int (*cppm)[MAX_CHAR_VAL] = REENTR->_lexer.sm->cppm #define dCPPM_VCH int *cppm_vch = REENTR->_lexer.sm->cppm_vch #else static int cppm[MSTATE][MAX_CHAR_VAL]; static int cppm_vch[MSTATE]; #define dCPPM #define dCPPM_VCH #endif /* UCPP_REENTRANT */ #ifdef UCPP_REENTRANT CPPM new_cppm(void) { CPPM c = getmem(sizeof(struct _cppm)); return c; } void del_cppm(CPPM c) { if (c) freemem(c); } #endif /* UCPP_REENTRANT */ #ifdef UCPP_CLONE CPPM clone_cppm(const CPPM s) { CPPM d = getmem(sizeof(struct _cppm)); mmv(d, s, sizeof(struct _cppm)); return d; } #endif /* UCPP_CLONE */ /* * init_cppm() fills cppm[][] with the information stored in cppms[]. * It must be called before beginning the lexing process. */ void init_cppm(pCPP) { int i, j, k, c; static unsigned char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; static unsigned char lower[] = "abcdefghijklmnopqrstuvwxyz"; unsigned char *cp; dCPPM; dCPPM_VCH; for (i = 0; i < MSTATE; i ++) { for (j = 0; j < MAX_CHAR_VAL; j ++) cppm[i][j] = S_OUCH; cppm_vch[i] = S_OUCH; } for (i = 0; cppms[i].input[0]; i ++) for (k = 0; k < CMCR; k ++) { int s = cppms[i].state; int ns = cppms[i].new_state; switch (c = cppms[i].input[k]) { case 0: break; case SPC: /* see space_char() also */ cppm[s][' '] = ns; cppm[s]['\t'] = ns; cppm[s]['\v'] = ns; cppm[s]['\f'] = ns; #ifdef UNBREAKABLE_SPACE if (MAX_CHAR_VAL > UNBREAKABLE_SPACE) cppm[s][UNBREAKABLE_SPACE] = ns; #endif break; case ALP: for (cp = upper; *cp; cp ++) cppm[s][(int)*cp] = ns; for (cp = lower; *cp; cp ++) cppm[s][(int)*cp] = ns; cppm[s]['_'] = ns; break; case NUM: for (j = '0'; j <= '9'; j ++) cppm[s][j] = ns; break; case ANY: for (j = 0; j < MAX_CHAR_VAL; j ++) cppm[s][j] = ns; cppm_vch[s] = ns; break; case VCH: cppm_vch[s] = ns; break; default: cppm[s][c] = ns; break; } } } /* * Make some character as equivalent to a letter for identifiers. */ void set_identifier_char(pCPP_ int c) { dCPPM; cppm[S_START][c] = PUT(S_NAME); cppm[S_NAME][c] = PUT(S_NAME); } /* * Remove the "identifier" status from a character. */ void unset_identifier_char(pCPP_ int c) { dCPPM; cppm[S_START][c] = S_ILL; cppm[S_NAME][c] = FRZ(STO(NAME)); } int space_char(int c) { if (c == ' ' || c == '\t' || c == '\v' || c == '\f' #ifdef UNBREAKABLE_SPACE || c == UNBREAKABLE_SPACE #endif ) return 1; return 0; } #ifndef NO_UCPP_BUF /* * our output buffer is full, flush it */ void flush_output(pCPP_ struct lexer_state *ls) { size_t x = ls->sbuf, y = 0, z; if (ls->sbuf == 0) return; do { z = fwrite(ls->output_buf + y, 1, x, ls->output); x -= z; y += z; } while (z && x > 0); if (!y) { error(aCPP_ ls->line, "could not flush output (disk full ?)"); die(); } ls->sbuf = 0; } #endif /* * Output one character; flush the buffer if needed. * This function should not be called, except by put_char(). */ static inline void write_char(pCPP_ struct lexer_state *ls, unsigned char c) { #ifndef NO_UCPP_BUF ls->output_buf[ls->sbuf ++] = c; if (ls->sbuf == OUTPUT_BUF_MEMG) flush_output(aCPP_ ls); #else if (putc((int)c, ls->output) == EOF) { error(aCPP_ ls->line, "output write error (disk full ?)"); die(); } #endif if (c == '\n') { ls->oline ++; } } /* * schedule a character for output */ void put_char(pCPP_ struct lexer_state *ls, unsigned char c) { if (ls->flags & KEEP_OUTPUT) write_char(aCPP_ ls, c); } /* * get next raw input character */ static inline int read_char(struct lexer_state *ls) { unsigned char c; if (!ls->input) { return ((ls->pbuf ++) < ls->ebuf) ? ls->input_string[ls->pbuf - 1] : -1; } while (1) { #ifndef NO_UCPP_BUF if (ls->pbuf == ls->ebuf) { #ifdef UCPP_MMAP if (ls->from_mmap) { munmap((void *)ls->input_buf, ls->ebuf); ls->from_mmap = 0; ls->input_buf = ls->input_buf_sav; } #endif ls->ebuf = fread(ls->input_buf, 1, INPUT_BUF_MEMG, ls->input); ls->pbuf = 0; } if (ls->ebuf == 0) return -1; c = ls->input_buf[ls->pbuf ++]; #else int x = getc(ls->input); if (x == EOF) return -1; c = x; #endif #ifndef NO_UCPP_COPY_LINE if (ls->flags & COPY_LINE) { if (c == '\n') { ls->copy_line[ls->cli] = 0; ls->cli = 0; } else if (ls->cli < (COPY_LINE_LENGTH - 1)) { ls->copy_line[ls->cli ++] = c; } } #endif if (c == '\n' && ls->macfile) { ls->macfile = 0; continue; } ls->macfile = 0; if (c == '\r') { /* * We found a '\r'; we handle it as a newline * and ignore the next newline. This should work * with all combinations of Msdos, MacIntosh and * Unix files on these three platforms. On other * platforms, native file formats are always * supported. */ ls->macfile = 1; c = '\n'; } break; } return c; } /* * next_fifo_char(), char_lka1() and char_lka2() give a two character * look-ahead on the input stream; this is needed for trigraphs */ static inline int next_fifo_char(struct lexer_state *ls) { int c; if (ls->nlka != 0) { c = ls->lka[0]; ls->lka[0] = ls->lka[1]; ls->nlka --; } else c = read_char(ls); return c; } static inline int char_lka1(struct lexer_state *ls) { if (ls->nlka == 0) { ls->lka[0] = read_char(ls); ls->nlka ++; } return ls->lka[0]; } static inline int char_lka2(pCPP_ struct lexer_state *ls) { #ifdef AUDIT if (ls->nlka == 0) ouch(aCPP_ "always in motion future is"); #else useCPP; #endif if (ls->nlka == 1) { ls->lka[1] = read_char(ls); ls->nlka ++; } return ls->lka[1]; } static struct trigraph { int old, new; } trig[9] = { { '=', '#' }, { '/', '\\' }, { '\'', '^' }, { '(', '[' }, { ')', ']' }, { '!', '|' }, { '<', '{' }, { '>', '}' }, { '-', '~' } }; /* * Returns the next character, after treatment of trigraphs and terminating * backslashes. Return value is -1 if there is no more input. */ static inline int next_char(pCPP_ struct lexer_state *ls) { int c; if (!ls->discard) return ls->last; ls->discard = 0; do { c = next_fifo_char(ls); /* check trigraphs */ if (c == '?' && char_lka1(ls) == '?' && (ls->flags & HANDLE_TRIGRAPHS)) { int i, d; d = char_lka2(aCPP_ ls); for (i = 0; i < 9; i ++) if (d == trig[i].old) { if (ls->flags & WARN_TRIGRAPHS) { ls->count_trigraphs ++; } if (ls->flags & WARN_TRIGRAPHS_MORE) { warning(aCPP_ ls->line, "trigraph ?""?%c " "encountered", d); } next_fifo_char(ls); next_fifo_char(ls); c = trig[i].new; break; } } if (c == '\\' && char_lka1(ls) == '\n') { ls->line ++; next_fifo_char(ls); } else { ls->last = c; return c; } } while (1); } /* * wrapper for next_char(), to be called from outside * (used by #error, #include directives) */ int grap_char(pCPP_ struct lexer_state *ls) { return next_char(aCPP_ ls); } /* * Discard the current character, so that the next call to next_char() * will step into the input stream. */ void discard_char(pCPP_ struct lexer_state *ls) { #ifdef AUDIT if (ls->discard) ouch(aCPP_ "overcollecting garbage"); #else useCPP; #endif ls->discard = 1; ls->utf8 = 0; if (ls->last == '\n') ls->line ++; } /* * Convert an UTF-8 encoded character to a Universal Character Name * using \u (or \U when appropriate). */ static int utf8_to_string(unsigned char buf[], unsigned long utf8) { unsigned long val = 0; static char hex[16] = "0123456789abcdef"; if (utf8 & 0x80UL) { unsigned long x1, x2, x3, x4; x1 = (utf8 >> 24) & 0x7fUL; x2 = (utf8 >> 16) & 0x7fUL; x3 = (utf8 >> 8) & 0x7fUL; x4 = (utf8) & 0x3fUL; x1 &= 0x07UL; if (x2 & 0x40UL) x2 &= 0x0fUL; if (x3 & 0x40UL) x3 &= 0x1fUL; val = x4 | (x3 << 6) | (x2 << 12) | (x1 << 16); } else val = utf8; if (val < 128) { buf[0] = val; buf[1] = 0; return 1; } else if (val < 0xffffUL) { buf[0] = '\\'; buf[1] = 'u'; buf[2] = hex[(size_t)(val >> 12)]; buf[3] = hex[(size_t)((val >> 8) & 0xfU)]; buf[4] = hex[(size_t)((val >> 4) & 0xfU)]; buf[5] = hex[(size_t)(val & 0xfU)]; buf[6] = 0; return 6; } buf[0] = '\\'; buf[1] = 'U'; buf[2] = '0'; buf[3] = '0'; buf[4] = hex[(size_t)(val >> 20)]; buf[5] = hex[(size_t)((val >> 16) & 0xfU)]; buf[6] = hex[(size_t)((val >> 12) & 0xfU)]; buf[7] = hex[(size_t)((val >> 8) & 0xfU)]; buf[8] = hex[(size_t)((val >> 4) & 0xfU)]; buf[9] = hex[(size_t)(val & 0xfU)]; buf[10] = 0; return 10; } /* * Scan the identifier and put it in canonical form: * -- tranform \U0000xxxx into \uxxxx * -- inside \u and \U, make letters low case * -- report (some) incorrect use of UCN */ static void canonize_id(pCPP_ struct lexer_state *ls, char *id) { char *c, *d; for (c = d = id; *c;) { if (*c == '\\') { int i; if (!*(c + 1)) goto canon_error; if (*(c + 1) == 'U') { for (i = 0; i < 8 && *(c + i + 2); i ++); if (i != 8) goto canon_error; *(d ++) = '\\'; c += 2; for (i = 0; i < 4 && *(c + i) == '0'; i ++); if (i == 4) { *(d ++) = 'u'; c += 4; } else { *(d ++) = 'U'; i = 8; } for (; i > 0; i --) { switch (*c) { case 'A': *(d ++) = 'a'; break; case 'B': *(d ++) = 'b'; break; case 'C': *(d ++) = 'c'; break; case 'D': *(d ++) = 'd'; break; case 'E': *(d ++) = 'e'; break; case 'F': *(d ++) = 'f'; break; default: *(d ++) = *c; break; } c ++; } } else if (*(c + 1) == 'u') { for (i = 0; i < 4 && *(c + i + 2); i ++); if (i != 4) goto canon_error; *(d ++) = '\\'; *(d ++) = 'u'; c += 2; for (; i > 0; i --) { switch (*c) { case 'A': *(d ++) = 'a'; break; case 'B': *(d ++) = 'b'; break; case 'C': *(d ++) = 'c'; break; case 'D': *(d ++) = 'd'; break; case 'E': *(d ++) = 'e'; break; case 'F': *(d ++) = 'f'; break; default: *(d ++) = *c; break; } c ++; } } else goto canon_error; continue; } *(d ++) = *(c ++); } *d = 0; return; canon_error: for (; *c; *(d ++) = *(c ++)); if (ls->flags & WARN_STANDARD) { warning(aCPP_ ls->line, "malformed identifier with UCN: '%s'", id); } *d = 0; } /* * Run the automaton, in order to get the next token. * This function should not be called, except by next_token() * * return value: 1 on error, 2 on end-of-file, 0 otherwise. */ static inline int read_token(pCPP_ struct lexer_state *ls) { int cstat = S_START, nstat; size_t ltok = 0; int c, outc = 0, ucn_in_id = 0; int shift_state = 0; unsigned long utf8 = 0; long l = ls->line; dCPPM; /* * Make sure token type is initialized. * Valgrind was complaining about ctok->type not being initialized * in llex() when parsing an empty source file. */ ls->ctok->type = NONE; ls->ctok->line = l; if (ls->pending_token) { if ((ls->ctok->type = ls->pending_token) == BUNCH) { ls->ctok->name[0] = '\\'; ls->ctok->name[1] = 0; } ls->pending_token = 0; return 0; } if (ls->flags & UTF8_SOURCE) { utf8 = ls->utf8; shift_state = 0; } if (!(ls->flags & LEXER) && (ls->flags & KEEP_OUTPUT)) for (; ls->line > ls->oline;) put_char(aCPP_ ls, '\n'); do { c = next_char(aCPP_ ls); if (c < 0) { dCPPM_VCH; if (shift_state && (ls->flags & UTF8_SOURCE)) { if (ls->flags & WARN_STANDARD) warning(aCPP_ ls->line, "truncated UTF-8 " "character"); shift_state = 0; utf8 = 0; } if (cstat == S_START) return 2; nstat = cppm_vch[cstat]; } else { if (ls->flags & UTF8_SOURCE) { if (shift_state) { if ((c & 0xc0) != 0x80) { if (ls->flags & WARN_STANDARD) warning(aCPP_ ls->line, "truncated " "UTF-8 " "character"); shift_state = 0; utf8 = 0; c = '_'; } else { utf8 = (utf8 << 8) | c; if (-- shift_state) { ls->discard = 1; continue; } c = '_'; } } else if ((c & 0xc0) == 0xc0) { if ((c & 0x30) == 0x30) { shift_state = 3; } else if (c & 0x20) { shift_state = 2; } else { shift_state = 1; } utf8 = c; ls->discard = 1; continue; } else utf8 = 0; } nstat = cppm[cstat][c < MAX_CHAR_VAL ? c : 0]; } #ifdef AUDIT if (nstat == S_OUCH) { ouch(aCPP_ "bad move..."); } #endif /* * disable C++-like comments */ if (noMOD(nstat) == S_COMMENT5 && !(ls->flags & CPLUSPLUS_COMMENTS)) nstat = FRZ(STO(SLASH)); if (noMOD(nstat) >= MSTATE && !ttSTO(nstat)) switch (noMOD(nstat)) { case S_ILL: if (ls->flags & CCHARSET) { error(aCPP_ ls->line, "illegal character '%c'", c); return 1; } nstat = PUT(STO(BUNCH)); break; case S_BS: ls->ctok->name[0] = '\\'; ltok ++; nstat = FRZ(STO(BUNCH)); if (!(ls->flags & LEXER)) put_char(aCPP_ ls, '\\'); break; case S_ROGUE_BS: ls->pending_token = BUNCH; nstat = FRZ(STO(NAME)); break; case S_DDOT: ls->pending_token = DOT; nstat = FRZ(STO(DOT)); break; case S_DDSHARP: ls->pending_token = PCT; nstat = FRZ(STO(DIG_SHARP)); break; case S_BEHEAD: error(aCPP_ l, "unfinished string at end of line"); return 1; case S_DECAY: warning(aCPP_ l, "unterminated // comment"); nstat = FRZ(STO(COMMENT)); break; case S_TRUNC: error(aCPP_ l, "truncated token"); return 1; case S_TRUNCC: error(aCPP_ l, "truncated comment"); return 1; #ifdef AUDIT case S_OUCH: ouch(aCPP_ "machine went out of control"); break; #endif } if (!ttFRZ(nstat)) { discard_char(aCPP_ ls); if (!(ls->flags & LEXER) && ls->condcomp) { int z = ttSTO(nstat) ? S_ILL : noMOD(nstat); if (cstat == S_NAME || z == S_NAME || ((CMT(cstat) || CMT(z)) && (ls->flags & DISCARD_COMMENTS))) { outc = 0; } else if (z == S_LCHAR || z == S_SLASH || (z == S_SHARP && ls->ltwnl) || (z == S_PCT && ls->ltwnl) || (z == S_BACKSLASH)) { outc = c; } else if (z == S_PCT2 && ls->ltwnl) { outc = -1; } else if (z == S_PCT3 && ls->ltwnl) { /* we have %:% but this still might not be a %:%: */ outc = -2; } else { if (outc < 0) { put_char(aCPP_ ls, '%'); put_char(aCPP_ ls, ':'); if (outc == -2) put_char(aCPP_ ls, '%'); outc = 0; } else if (outc) { put_char(aCPP_ ls, outc); outc = 0; } put_char(aCPP_ ls, c); } } } else if (outc == '/' && !(ls->flags & LEXER) && ls->condcomp) { /* this is a hack: we need to dump a pending slash */ put_char(aCPP_ ls, outc); outc = 0; } if (ttPUT(nstat)) { if (cstat == S_NAME_BS) { ucn_in_id = 1; wan(ls->ctok->name, ltok, '\\', ls->tknl); } if (utf8 && (ls->flags & UTF8_SOURCE)) { unsigned char buf[11]; int i, j; for (i = 0, j = utf8_to_string(buf, utf8); i < j; i ++) wan(ls->ctok->name, ltok, buf[i], ls->tknl); /* if (j > 1) ucn_in_id = 1; */ } else wan(ls->ctok->name, ltok, (unsigned char)c, ls->tknl); } if (ttSTO(nstat)) { if (S_TOKEN(noMOD(nstat))) { wan(ls->ctok->name, ltok, (unsigned char)0, ls->tknl); } ls->ctok->type = noMOD(nstat); break; } cstat = noMOD(nstat); } while (1); if (!(ls->flags & LEXER) && (ls->flags & DISCARD_COMMENTS) && ls->ctok->type == COMMENT) put_char(aCPP_ ls, ' '); if (ucn_in_id && ls->ctok->type == NAME) canonize_id(aCPP_ ls, ls->ctok->name); return 0; } /* * fills ls->ctok with the next token */ int next_token(pCPP_ struct lexer_state *ls) { if (ls->flags & READ_AGAIN) { ls->flags &= ~READ_AGAIN; if (!(ls->flags & LEXER)) { char *c = S_TOKEN(ls->ctok->type) ? ls->ctok->name : token_name(ls->ctok); if (ls->ctok->type == OPT_NONE) { ls->ctok->type = NONE; #ifdef SEMPER_FIDELIS ls->ctok->name[0] = ' '; ls->ctok->name[1] = 0; #endif put_char(aCPP_ ls, ' '); } else if (ls->ctok->type != NAME && !(ls->ltwnl && (ls->ctok->type == SHARP || ls->ctok->type == DIG_SHARP))) for (; *c; c ++) put_char(aCPP_ ls, *c); } return 0; } return read_token(aCPP_ ls); } Convert-Binary-C-0.85/ucpp/ppdir.pl0000644000175000001440000000236614677003452015644 0ustar mhxusers################################################################################ # # PROGRAM: ppdir.pl # ################################################################################ # # DESCRIPTION: Generate tokenizer code for C preprocessor directives # ################################################################################ # # Copyright (c) 2004-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Devel::Tokenizer::C; use strict; my @PP = qw( define undef if ifdef ifndef else elif endif include include_next pragma error line assert unassert ident ); my $file = shift; my $enums = join "\n", map " PPDIR_\U$_\E,", @PP; my $switch = Devel::Tokenizer::C->new(TokenFunc => sub { "return PPDIR_\U$_[0]\E;\n" }, TokenString => 'ppdir') ->add_tokens(@PP)->generate; open OUT, ">$file" or die $!; print OUT <> operators is reduced modulo the * emulatd type width; right shifting of a signed negative value performs * sign extension (the result is left-padded with bits set to 1). */ /* * For native type evaluation with a 64-bit "long long" type. */ #define NATIVE_SIGNED long long #define NATIVE_UNSIGNED unsigned long long #define NATIVE_UNSIGNED_BITS 64 #define NATIVE_UNSIGNED_ONE 1ULL #define NATIVE_SIGNED_MIN (-9223372036854775807LL - 1) #define NATIVE_SIGNED_MAX 9223372036854775807LL /* * For emulation of a 64-bit type using a native 32-bit "unsigned long" * type. #undef NATIVE_SIGNED #define SIMUL_ARITH_SUBTYPE unsigned long #define SIMUL_SUBTYPE_BITS 32 #define SIMUL_NUMBITS 64 */ /* * Comment out the following line if you want to deactivate arithmetic * checks (warnings upon undefined and implementation-defined * behaviour). Arithmetic checks slow down a bit arithmetic operations, * especially multiplications, but this should not be an issue with * typical C source code. */ #define ARITHMETIC_CHECKS /* ====================================================================== */ /* * To force signedness of wide character constants, define WCHAR_SIGNEDNESS * to 0 for unsigned, 1 for signed. By default, wide character constants * are signed if the native `char' type is signed, and unsigned otherwise. #define WCHAR_SIGNEDNESS 0 */ /* * Standard assertions. They should include one cpu() assertion, one machine() * assertion (identical to cpu()), and one or more system() assertions. * * for Linux/PC: cpu(i386), machine(i386), system(unix), system(linux) * for Linux/Alpha: cpu(alpha), machine(alpha), system(unix), system(linux) * for Sparc/Solaris: cpu(sparc), machine(sparc), system(unix), system(solaris) * * These are only suggestions. On Solaris, machine() should be defined * for i386 or sparc (standard system header use such an assertion). For * cross-compilation, define assertions related to the target architecture. * * If you want no standard assertion, define STD_ASSERT to 0. */ #define STD_ASSERT "cpu(i386)", "machine(i386)", "system(unix)", \ "system(freebsd)" /* ====================================================================== */ /* * System predefined macros. Nothing really mandatory, but some programs * might rely on those. * Each string must be either "name" or "name=token-list". If you want * no predefined macro, define STD_MACROS to 0. */ #define STD_MACROS "__FreeBSD=4", "__unix", "__i386", \ "__FreeBSD__=4", "__unix__", "__i386__" /* ====================================================================== */ /* * Default flags; HANDLE_ASSERTIONS is required for Solaris system headers. * See cpp.h for the definition of these flags. */ #define DEFAULT_CPP_FLAGS (DISCARD_COMMENTS | WARN_STANDARD \ | WARN_PRAGMA | FAIL_SHARP | MACRO_VAARG \ | CPLUSPLUS_COMMENTS | LINE_NUM | TEXT_OUTPUT \ | KEEP_OUTPUT | HANDLE_TRIGRAPHS \ | HANDLE_ASSERTIONS) #define DEFAULT_LEXER_FLAGS (DISCARD_COMMENTS | WARN_STANDARD | FAIL_SHARP \ | MACRO_VAARG | CPLUSPLUS_COMMENTS | LEXER \ | HANDLE_TRIGRAPHS | HANDLE_ASSERTIONS) /* ====================================================================== */ /* * Define this to use sigsetjmp()/siglongjmp() instead of setjmp()/longjmp(). * This is non-ANSI, but it improves performance on some POSIX system. * On typical C source code, such improvement is completely negligeable. */ /* #define POSIX_JMP */ /* ====================================================================== */ /* * Maximum value (plus one) of a character handled by the lexer; 128 is * alright for ASCII native source code, but 256 is needed for EBCDIC. * 256 is safe in both cases; you will have big problems if you set * this value to INT_MAX or above. On Minix-i86 or Msdos (small memory * model), define MAX_CHAR_VAL to 128. * * Set MAX_CHAR_VAL to a power of two to increase lexing speed. Beware * that lexer.c defines a static array of size MSTATE * MAX_CHAR_VAL * values of type int (MSTATE is defined in lexer.c and is about 40). */ #define MAX_CHAR_VAL 128 /* * If you want some extra character to be considered as whitespace, * define this macro to that space. On ISO-8859-1 machines, 160 is * the code for the unbreakable space. */ /* #define UNBREAKABLE_SPACE 160 */ /* * If you want whitespace tokens contents to be recorded (making them * tokens with a string content), define this. The macro STRING_TOKEN * will be adjusted accordingly. * Without this option, whitespace tokens are not even returned by the * lex() function. This is irrelevant for the non-lexer mode (almost -- * it might slow down a bit ucpp, and with this option, comments will be * kept inside #pragma directives). */ /* #define SEMPER_FIDELIS */ /* * If you're using ucpp as a library you can modify the global symbol * names using the following macros. */ #define UCPP_PUBLIC_PREFIX ucpp_public_ #define UCPP_PUBLIC_SUFFIX #define UCPP_PRIVATE_PREFIX ucpp_private_ #define UCPP_PRIVATE_SUFFIX /* * If you don't want to export "true" functions for memory management * macros, use this define. */ #define MEM_DEBUG_NO_TRUE_FUNC #endif /* End of options overridable by UCPP_CONFIG and config.h */ #define _func_strc_(x, y) x ## y #define _func_strc(x, y) _func_strc_(x, y) #if defined UCPP_PUBLIC_PREFIX && defined UCPP_PUBLIC_SUFFIX #define UCPP_PUBLIC(func) _func_strc(UCPP_PUBLIC_PREFIX, \ _func_strc(func, UCPP_PUBLIC_SUFFIX)) #elif defined UCPP_PUBLIC_PREFIX #define UCPP_PUBLIC(func) _func_strc(UCPP_PUBLIC_PREFIX, func) #elif defined UCPP_PUBLIC_SUFFIX #define UCPP_PUBLIC(func) _func_strc(func, UCPP_PUBLIC_SUFFIX) #else #define UCPP_PUBLIC(func) func #endif #if defined UCPP_PRIVATE_PREFIX && defined UCPP_PRIVATE_SUFFIX #define UCPP_PRIVATE(func) _func_strc(UCPP_PRIVATE_PREFIX, \ _func_strc(func, UCPP_PRIVATE_SUFFIX)) #elif defined UCPP_PRIVATE_PREFIX #define UCPP_PRIVATE(func) _func_strc(UCPP_PRIVATE_PREFIX, func) #elif defined UCPP_PRIVATE_SUFFIX #define UCPP_PRIVATE(func) _func_strc(func, UCPP_PRIVATE_SUFFIX) #else #define UCPP_PRIVATE(func) func #endif /* ====================================================================== */ /* * Some constants used for memory increment granularity. Increasing these * values reduces the number of calls to malloc() but increases memory * consumption. * * Values should be powers of 2. */ /* for cpp.c */ #define COPY_LINE_LENGTH 80 #define INPUT_BUF_MEMG 8192 #define OUTPUT_BUF_MEMG 8192 #define TOKEN_NAME_MEMG 64 /* must be at least 4 */ #define TOKEN_LIST_MEMG 32 #define MACRO_ARG_MEMG 8 #define INCPATH_MEMG 16 #define GARBAGE_LIST_MEMG 32 #define LS_STACK_MEMG 4 #define FNAME_MEMG 32 /* ====================================================================== */ /* To protect the innocent. */ #if defined(NO_UCPP_BUF) && defined(UCPP_MMAP) #undef UCPP_MMAP #endif #if defined(UCPP_CLONE) && !defined(UCPP_REENTRANT) #error Cannot clone with non-reentrant code #endif #if defined(UCPP_MMAP) || defined(POSIX_JMP) #ifndef _POSIX_SOURCE #define _POSIX_SOURCE 1 #endif #endif /* * C90 does not know about the "inline" keyword, but C99 does know, * and some C90 compilers know it as an extension. This part detects * these occurrences. */ #ifndef INLINE #if defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* this is a C99 compiler, keep inline unchanged */ #elif defined(__GNUC__) /* this is GNU gcc; modify inline. The semantics is not identical to C99 but the differences are irrelevant as long as inline functions are static */ #undef inline #define inline __inline__ #elif defined(__DECC) && defined(__linux__) /* this is Compaq C under Linux, use __inline__ */ #undef inline #define inline __inline__ #else /* unknown compiler -> deactivate inline */ #undef inline #define inline #endif #else /* INLINE has been set, use its value */ #undef inline #define inline INLINE #endif #ifdef POSIX_JMP #define JMP_BUF sigjmp_buf #define catch(x) sigsetjmp((x), 0) #define throw(x) siglongjmp((x), 1) #else #define JMP_BUF jmp_buf #define catch(x) setjmp((x)) #define throw(x) longjmp((x), 1) #endif #endif Convert-Binary-C-0.85/ucpp/cpp.h0000644000175000001440000002704214676735310015126 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__CPP__ #define UCPP__CPP__ /* * Uncomment the following if you want ucpp to use externally provided * error-reporting functions (ucpp_warning(), ucpp_error() and ucpp_ouch()) */ /* #define NO_UCPP_ERROR_FUNCTIONS */ /* * Tokens (do not change the order unless checking operators_name[] in cpp.c) * * It is important that the token NONE is 0 * Check the STRING_TOKEN macro */ #define CPPERR 512 enum { NONE, /* whitespace */ NEWLINE, /* newline */ COMMENT, /* comment */ NUMBER, /* number constant */ NAME, /* identifier */ BUNCH, /* non-C characters */ PRAGMA, /* a #pragma directive */ CONTEXT, /* new file or #line */ STRING, /* constant "xxx" */ CHAR, /* constant 'xxx' */ SLASH, /* / */ ASSLASH, /* /= */ MINUS, /* - */ MMINUS, /* -- */ ASMINUS, /* -= */ ARROW, /* -> */ PLUS, /* + */ PPLUS, /* ++ */ ASPLUS, /* += */ LT, /* < */ LEQ, /* <= */ LSH, /* << */ ASLSH, /* <<= */ GT, /* > */ GEQ, /* >= */ RSH, /* >> */ ASRSH, /* >>= */ ASGN, /* = */ SAME, /* == */ #ifdef CAST_OP CAST, /* => */ #endif NOT, /* ~ */ NEQ, /* != */ AND, /* & */ LAND, /* && */ ASAND, /* &= */ OR, /* | */ LOR, /* || */ ASOR, /* |= */ PCT, /* % */ ASPCT, /* %= */ STAR, /* * */ ASSTAR, /* *= */ CIRC, /* ^ */ ASCIRC, /* ^= */ LNOT, /* ! */ LBRA, /* { */ RBRA, /* } */ LBRK, /* [ */ RBRK, /* ] */ LPAR, /* ( */ RPAR, /* ) */ COMMA, /* , */ QUEST, /* ? */ SEMIC, /* ; */ COLON, /* : */ DOT, /* . */ MDOTS, /* ... */ SHARP, /* # */ DSHARP, /* ## */ OPT_NONE, /* optional space to separate tokens in text output */ DIGRAPH_TOKENS, /* there begin digraph tokens */ /* for DIG_*, do not change order, unless checking undig() in cpp.c */ DIG_LBRK, /* <: */ DIG_RBRK, /* :> */ DIG_LBRA, /* <% */ DIG_RBRA, /* %> */ DIG_SHARP, /* %: */ DIG_DSHARP, /* %:%: */ DIGRAPH_TOKENS_END, /* digraph tokens end here */ LAST_MEANINGFUL_TOKEN, /* reserved words will go there */ MACROARG, /* special token for representing macro arguments */ UPLUS = CPPERR, /* unary + */ UMINUS /* unary - */ }; #include "tune.h" #include #include struct token { int type; long line; char *name; }; struct token_fifo { struct token *t; size_t nt, art; }; struct lexer_state { /* input control */ FILE *input; #ifndef NO_UCPP_BUF unsigned char *input_buf; #ifdef UCPP_MMAP int from_mmap; unsigned char *input_buf_sav; #endif #endif unsigned char *input_string; size_t ebuf; size_t pbuf; int lka[2]; int nlka; int macfile; int last; int discard; unsigned long utf8; #ifndef NO_UCPP_COPY_LINE unsigned char copy_line[COPY_LINE_LENGTH]; int cli; #endif /* output control */ FILE *output; struct token_fifo *output_fifo, *toplevel_of; #ifndef NO_UCPP_BUF unsigned char *output_buf; #endif size_t sbuf; /* token control */ struct token *ctok; struct token *save_ctok; size_t tknl; int ltwnl; int pending_token; #ifdef INMACRO_FLAG int inmacro; long macro_count; #endif /* lexer options */ long line; long oline; unsigned long flags; long count_trigraphs; struct garbage_fifo *gf; int ifnest; int condnest; int condcomp; int condmet; unsigned long condf[2]; }; /* * Callback argument for iterate_macros() */ struct macro_info { void *arg; const char *name; const char *definition; size_t definition_len; }; /* * Flags for iterate_macros() */ #define MI_WITH_DEFINITION 0x00000001UL /* * Flags for struct lexer_state */ /* warning flags */ #define WARN_STANDARD 0x000001UL /* emit standard warnings */ #define WARN_ANNOYING 0x000002UL /* emit annoying warnings */ #define WARN_TRIGRAPHS 0x000004UL /* warn when trigraphs are used */ #define WARN_TRIGRAPHS_MORE 0x000008UL /* extra-warn for trigraphs */ #define WARN_PRAGMA 0x000010UL /* warn for pragmas in non-lexer mode */ /* error flags */ #define FAIL_SHARP 0x000020UL /* emit errors on rogue '#' */ #define CCHARSET 0x000040UL /* emit errors on non-C characters */ /* emission flags */ #define DISCARD_COMMENTS 0x000080UL /* discard comments from text output */ #define CPLUSPLUS_COMMENTS 0x000100UL /* understand C++-like comments */ #define LINE_NUM 0x000200UL /* emit #line directives in output */ #define GCC_LINE_NUM 0x000400UL /* same as #line, with gcc-syntax */ /* language flags */ #define HANDLE_ASSERTIONS 0x000800UL /* understand assertions */ #define HANDLE_PRAGMA 0x001000UL /* emit PRAGMA tokens in lexer mode */ #define MACRO_VAARG 0x002000UL /* understand macros with '...' */ #define UTF8_SOURCE 0x004000UL /* identifiers are in UTF8 encoding */ #define HANDLE_TRIGRAPHS 0x008000UL /* handle trigraphs */ /* global ucpp behaviour */ #define LEXER 0x010000UL /* behave as a lexer */ #define KEEP_OUTPUT 0x020000UL /* emit the result of preprocessing */ #define COPY_LINE 0x040000UL /* make a copy of the parsed line */ /* internal flags */ #define READ_AGAIN 0x080000UL /* emit again the last token */ #define TEXT_OUTPUT 0x100000UL /* output text */ /* * Public function prototypes */ #include "reent.h" #ifdef UCPP_REENTRANT #define new_cpp UCPP_PUBLIC(new_cpp) #define del_cpp UCPP_PUBLIC(del_cpp) struct CPP *new_cpp(void); void del_cpp(struct CPP *); #endif /* UCPP_REENTRANT */ #ifdef UCPP_CLONE #define clone_cpp UCPP_PUBLIC(clone_cpp) struct CPP *clone_cpp(const struct CPP *); #endif /* UCPP_CLONE */ #ifndef NO_UCPP_BUF #define flush_output UCPP_PUBLIC(flush_output) void flush_output(pCPP_ struct lexer_state *); #endif #define init_assertions UCPP_PUBLIC(init_assertions) #define make_assertion UCPP_PUBLIC(make_assertion) #define destroy_assertion UCPP_PUBLIC(destroy_assertion) #define print_assertions UCPP_PUBLIC(print_assertions) void init_assertions(pCPP); int make_assertion(pCPP_ char *); int destroy_assertion(pCPP_ char *); void print_assertions(pCPP); #define init_macros UCPP_PUBLIC(init_macros) #define define_macro UCPP_PUBLIC(define_macro) #define undef_macro UCPP_PUBLIC(undef_macro) #define print_defines UCPP_PUBLIC(print_defines) #define is_macro_defined UCPP_PUBLIC(is_macro_defined) #define get_macro_definition UCPP_PUBLIC(get_macro_definition) #define free_macro_definition UCPP_PUBLIC(free_macro_definition) #define iterate_macros UCPP_PUBLIC(iterate_macros) void init_macros(pCPP); int define_macro(pCPP_ struct lexer_state *, char *); int undef_macro(pCPP_ struct lexer_state *, char *); void print_defines(pCPP); int is_macro_defined(pCPP_ const char *); char *get_macro_definition(pCPP_ const char *, size_t *); void free_macro_definition(char *); void iterate_macros(pCPP_ void (*)(const struct macro_info *), void *, unsigned long); #define set_init_filename UCPP_PUBLIC(set_init_filename) #define init_cpp UCPP_PUBLIC(init_cpp) #define init_include_path UCPP_PUBLIC(init_include_path) #define init_lexer_state UCPP_PUBLIC(init_lexer_state) #define init_lexer_mode UCPP_PUBLIC(init_lexer_mode) #define free_lexer_state UCPP_PUBLIC(free_lexer_state) #define wipeout UCPP_PUBLIC(wipeout) #define lex UCPP_PUBLIC(lex) #define check_cpp_errors UCPP_PUBLIC(check_cpp_errors) #define add_incpath UCPP_PUBLIC(add_incpath) #define init_tables UCPP_PUBLIC(init_tables) #define enter_file UCPP_PUBLIC(enter_file) #define cpp UCPP_PUBLIC(cpp) #define set_identifier_char UCPP_PUBLIC(set_identifier_char) #define unset_identifier_char UCPP_PUBLIC(unset_identifier_char) void set_init_filename(pCPP_ char *, int); void init_cpp(pCPP); void init_include_path(pCPP_ char *[]); void init_lexer_state(struct lexer_state *); void init_lexer_mode(struct lexer_state *); void free_lexer_state(struct lexer_state *); void wipeout(pCPP); int lex(pCPP_ struct lexer_state *); int check_cpp_errors(pCPP_ struct lexer_state *); void add_incpath(pCPP_ char *); void init_tables(pCPP_ int); int enter_file(pCPP_ struct lexer_state *, unsigned long); int cpp(pCPP_ struct lexer_state *); void set_identifier_char(pCPP_ int c); void unset_identifier_char(pCPP_ int c); #ifdef UCPP_MMAP #define fopen_mmap_file UCPP_PUBLIC(fopen_mmap_file) #define set_input_file UCPP_PUBLIC(set_input_file) FILE *fopen_mmap_file(pCPP_ char *); void set_input_file(pCPP_ struct lexer_state *, FILE *); #endif struct stack_context { char *long_name, *name; long line; }; #define report_context UCPP_PUBLIC(report_context) struct stack_context *report_context(pCPP); #ifndef UCPP_REENTRANT #define no_special_macros UCPP_PUBLIC(no_special_macros) #define emit_dependencies UCPP_PUBLIC(emit_dependencies) #define emit_defines UCPP_PUBLIC(emit_defines) #define emit_assertions UCPP_PUBLIC(emit_assertions) #define c99_compliant UCPP_PUBLIC(c99_compliant) #define c99_hosted UCPP_PUBLIC(c99_hosted) #define emit_output UCPP_PUBLIC(emit_output) #define current_filename UCPP_PUBLIC(current_filename) #define current_long_filename UCPP_PUBLIC(current_long_filename) extern int no_special_macros, emit_dependencies, emit_defines, emit_assertions; extern int c99_compliant, c99_hosted; extern FILE *emit_output; extern char *current_filename, *current_long_filename; #endif #define operators_name UCPP_PUBLIC(operators_name) extern char *operators_name[]; #ifndef UCPP_REENTRANT #define protect_detect UCPP_PUBLIC(protect_detect) extern struct protect { char *macro; int state; struct found_file *ff; } protect_detect; #endif #ifndef UCPP_REENTRANT #define ucpp_ouch UCPP_PUBLIC(ucpp_ouch) #define ucpp_error UCPP_PUBLIC(ucpp_error) #define ucpp_warning UCPP_PUBLIC(ucpp_warning) void ucpp_ouch(char *, ...); void ucpp_error(long, char *, ...); void ucpp_warning(long, char *, ...); #endif #ifndef UCPP_REENTRANT #define transient_characters UCPP_PUBLIC(transient_characters) extern int *transient_characters; #endif /* * Errors from CPPERR_EOF and above are not real erros, only show-stoppers. * Errors below CPPERR_EOF are real ones. */ #define CPPERR_NEST 900 #define CPPERR_EOF 1000 /* * This macro tells whether the name field of a given token type is * relevant, or not. Irrelevant name field means that it might point * to outerspace. */ #ifdef SEMPER_FIDELIS #define STRING_TOKEN(x) ((x) == NONE || ((x) >= COMMENT && (x) <= CHAR)) #else #define STRING_TOKEN(x) ((x) >= NUMBER && (x) <= CHAR) #endif #endif Convert-Binary-C-0.85/ucpp/reent.h0000644000175000001440000000623514676735310015462 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__REENT__ #define UCPP__REENT__ #include "tune.h" #ifdef UCPP_REENTRANT #include "nhash.h" #define pCPP struct CPP *REENTR #define pCPP_ pCPP, #define aCPP REENTR #define aCPP_ aCPP, #define useCPP (void) aCPP typedef struct _cppm *CPPM; struct CPP { int no_special_macros, emit_dependencies, emit_defines, emit_assertions; int c99_compliant, c99_hosted; FILE *emit_output; char *current_filename, *current_long_filename; /* * Can be used to store an arbitrary pointer value * that can be retrieved by the callback functions * ucpp_(ouch|error|warning). */ void *callback_arg; void (*ucpp_ouch)(pCPP_ char *, ...); void (*ucpp_error)(pCPP_ long, char *, ...); void (*ucpp_warning)(pCPP_ long, char *, ...); int *transient_characters; struct protect { char *macro; int state; struct found_file *ff; } protect_detect; struct { /* from macro.c */ struct lexer_state dsharp_lexer; char compile_time[12], compile_date[24]; #ifdef PRAGMA_TOKENIZE struct lexer_state tokenize_lexer; #endif /* from eval.c */ long eval_line; JMP_BUF eval_exception; } _global; struct { HTT assertions; int assertions_init_done; } _assert; struct { HTT macros; int macros_init_done; } _macro; struct { char **include_path; size_t include_path_nb; int current_incdir; struct file_context *ls_stack; size_t ls_depth; int find_file_error; struct protect *protect_detect_stack; HTT found_files; HTT found_files_sys; int found_files_init_done; int found_files_sys_init_done; } _cpp; struct { int emit_eval_warnings; } _eval; struct { CPPM sm; } _lexer; }; #else #define pCPP void #define pCPP_ #define aCPP #define aCPP_ #define useCPP (void) 0 #endif #endif Convert-Binary-C-0.85/ucpp/config.h0000644000175000001440000000603714677003452015606 0ustar mhxusers/******************************************************************************* * * HEADER: config.h * ******************************************************************************** * * DESCRIPTION: Configuration for ucpp * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _UCPP_CONFIG_H #define _UCPP_CONFIG_H #include "ctlib/arch.h" /*-------------------------*/ /* configure ucpp features */ /*-------------------------*/ #define UCPP_REENTRANT #define UCPP_CLONE #define NO_UCPP_COPY_LINE /*------------------------*/ /* configure ucpp pragmas */ /*------------------------*/ #define PRAGMA_TOKENIZE #define PRAGMA_TOKEN_END ((unsigned char)'\n') /*-------------*/ /* no defaults */ /*-------------*/ #define STD_INCLUDE_PATH 0 #define STD_ASSERT 0 #define STD_MACROS 0 /*-------------------------*/ /* 64-bit integer handling */ /*-------------------------*/ #if ARCH_NATIVE_64_BIT_INTEGER #define NATIVE_UINTMAX u_64 #define NATIVE_INTMAX i_64 #define NATIVE_SIGNED i_64 #define NATIVE_UNSIGNED u_64 #define NATIVE_UNSIGNED_BITS 64 #define NATIVE_UNSIGNED_ONE 1ULL #define NATIVE_SIGNED_MIN (-9223372036854775807LL - 1) #define NATIVE_SIGNED_MAX 9223372036854775807LL #else #define SIMUL_UINTMAX #undef NATIVE_SIGNED #define SIMUL_ARITH_SUBTYPE u_32 #define SIMUL_SUBTYPE_BITS 32 #define SIMUL_NUMBITS 64 #endif /*----------------------------------*/ /* configure preprocessor and lexer */ /*----------------------------------*/ #define DEFAULT_CPP_FLAGS (DISCARD_COMMENTS | WARN_STANDARD \ | WARN_PRAGMA | FAIL_SHARP | MACRO_VAARG \ | CPLUSPLUS_COMMENTS | LINE_NUM | TEXT_OUTPUT \ | KEEP_OUTPUT | HANDLE_TRIGRAPHS \ | HANDLE_ASSERTIONS) #define DEFAULT_LEXER_FLAGS (DISCARD_COMMENTS | FAIL_SHARP | LEXER \ | HANDLE_TRIGRAPHS | HANDLE_ASSERTIONS) /*-------------------*/ /* memory management */ /*-------------------*/ #include /* * Under some circumstances, setjmp() on Win64 does deadlock when the * memory containing the jmpbuf was allocated through the Perl API. * * Apparently, using standard malloc/free fixes the deadlock, yet I * don't have any explanation for what's really going on. * * I'll appreciate any enlightenment. :-) */ #ifndef _WIN64 extern void *CBC_malloc(size_t size); extern void *CBC_realloc(void *ptr, size_t size); extern void CBC_free(void *ptr); #define UCPP_MALLOC CBC_malloc #define UCPP_REALLOC CBC_realloc #define UCPP_FREE CBC_free #endif /*-------------*/ /* other stuff */ /*-------------*/ #define ARITHMETIC_CHECKS #define LOW_MEM #define NO_UCPP_ERROR_FUNCTIONS #define MAX_CHAR_VAL 256 #define UCPP_PUBLIC_PREFIX ucpp_public_ #define UCPP_PRIVATE_PREFIX ucpp_private_ #endif /* _UCPP_CONFIG_H */ Convert-Binary-C-0.85/ucpp/Makefile0000644000175000001440000000634114676735310015632 0ustar mhxusers# Makefile for ucpp # # (c) Thomas Pornin 1999 - 2002 # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 4. The name of the authors may not be used to endorse or promote # products derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .POSIX: # ----- user configurable part ----- # Edit the variables to suit your system. # # use -DAUDIT to enable some internal sanity checks # use -DMEM_CHECK to check the return value of malloc() # (superseded by AUDIT) # use -DMEM_DEBUG to enable memory leak research (warning: this # slows down ucpp a bit, and greatly increases memory consumption) # use -DINLINE=foobar to enable use of the 'foobar' # non standard qualifier, as an equivalent to the C99 'inline' # qualifier. See tune.h for details. # # Two FLAGS lines are given for each system type; chose the first one for # debug, the second one for a fast binary. # for a generic compiler called cc #CC = cc #FLAGS = -DAUDIT #FLAGS = -O -DMEM_CHECK # for Minix-86 #CC = cc #LDFLAGS = -i #FLAGS = -m -DAUDIT #FLAGS = -O -m -DMEM_CHECK # for gcc CC = gcc FLAGS = -g -W -Wall -ansi -DAUDIT -DMEM_DEBUG -DUCPP_REENTRANT #FLAGS = -O3 -mcpu=pentiumpro -fomit-frame-pointer -W -Wall -ansi -DMEM_CHECK #FLAGS = -O -pg -W -Wall -ansi -DMEM_CHECK #LDFLAGS = -pg # for the Compaq C compiler on Alpha/Linux #CC = ccc #FLAGS = -w0 -g -DAUDIT #FLAGS = -w0 -fast -DMEM_CHECK # for the Sun Workshop C Compiler #CC = cc #FLAGS = -g -Xa -DAUDIT #FLAGS = -Xa -fast -DMEM_CHECK # flags for the link step LIBS = #LIBS = libefence.a #LIBS = -lgc_dbg # ----- nothing should be changed below this line ----- COBJ = mem.o nhash.o cpp.o lexer.o assert.o macro.o eval.o CFLAGS = $(FLAGS) -DSTAND_ALONE all: ucpp clean: rm -f *.o ucpp core ucpp: $(COBJ) $(CC) $(LDFLAGS) -o ucpp $(COBJ) $(LIBS) assert.o: tune.h ucppi.h cpp.h nhash.h mem.h cpp.o: tune.h ucppi.h cpp.h nhash.h mem.h eval.o: tune.h ucppi.h cpp.h nhash.h mem.h arith.c arith.h lexer.o: tune.h ucppi.h cpp.h nhash.h mem.h macro.o: tune.h ucppi.h cpp.h nhash.h mem.h mem.o: mem.h nhash.o: nhash.h mem.h Convert-Binary-C-0.85/ucpp/arith.c0000644000175000001440000011563614676735310015455 0ustar mhxusers/* * Integer arithmetic evaluation. * * (c) Thomas Pornin 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include #include "arith.h" #define ARITH_OCTAL(x) ((x) >= '0' && (x) <= '7') #define ARITH_OVAL(x) ((x) - '0') #define ARITH_DECIM(x) ((x) >= '0' && (x) <= '9') #define ARITH_DVAL(x) ((x) - '0') #define ARITH_HEXAD(x) (ARITH_DECIM(x) \ || (x) == 'a' || (x) == 'A' \ || (x) == 'b' || (x) == 'B' \ || (x) == 'c' || (x) == 'C' \ || (x) == 'd' || (x) == 'D' \ || (x) == 'e' || (x) == 'E' \ || (x) == 'f' || (x) == 'F') #define ARITH_HVAL(x) (ARITH_DECIM(x) ? ARITH_DVAL(x) \ : (x) == 'a' || (x) == 'A' ? 10 \ : (x) == 'b' || (x) == 'B' ? 11 \ : (x) == 'c' || (x) == 'C' ? 12 \ : (x) == 'd' || (x) == 'D' ? 13 \ : (x) == 'e' || (x) == 'E' ? 14 : 15) #ifdef NATIVE_SIGNED /* ====================================================================== */ /* Arithmetics with native types */ /* ====================================================================== */ /* * The following properties are imposed by the C standard: * * -- Arithmetics on the unsigned type should never overflow; every * result is reduced modulo some power of 2. The macro NATIVE_UNSIGNED_BITS * should have been defined to that specific exponent. * * -- The signed type should use either two's complement, one's complement * or a sign bit and a magnitude. There should be an integer N such that * the maximum signed value is (2^N)-1 and the minimum signed value is * either -(2^N) or -((2^N)-1). -(2^N) is possible only for two's complement. * * -- The maximum signed value is at most equal to the maximum unsigned * value. * * -- Trap representations can only be: * ** In two's complement, 1 as sign bit and 0 for all value bits. * This can happen only if the minimum signed value is -((2^N)-1). * ** In one's complement, all bits set to 1. * ** In mantissa + sign, sign bit to 1 and 0 for all value bits. * Unsigned values have no trap representation achievable with numerical * operators. Only signed values can have such representations, with * operators &, |, ^, ~, << and >>. If trap representations are possible, * such occurrences are reported as warnings. * * -- The operators +, -, * and << may overflow or underflow on signed * quantities, which is potentially an error. A warning is emitted. * * -- The operator >> yields an implementation-defined result on * signed negative quantities. Usually, the sign is extended, but this * is not guaranteed. A warning is emitted. * * -- The operators / and % used with a second operand of 0 cannot work. * An error is emitted when such a call is performed. Furthermore, in * two's complemement representation, with NATIVE_SIGNED_MIN == -(2^N) * for some N, the expression `NATIVE_SIGNED_MIN / (-1)' yields an * unrepresentable result, which is also an error. * * * For the value checks, we need to consider those different cases. So * we calculate the following macros: * -- TWOS_COMPLEMENT: is 1 if representation is two's complement, 0 * otherwise. * -- ONES_COMPLEMENT: is 1 if representation is one's complement, 0 * otherwise. * -- SIGNED_IS_BIGGER: 1 if the maximum signed value is equal to the * maximum unsigned value, 0 otherwise. NATIVE_SIGNED_MAX cannot * exceed the maximum unsigned value. If SIGNED_IS_BIGGER is 0, then * the maximum unsigned value is strictly superior to twice the * value of NATIVE_SIGNED_MAX (e.g. 65535 to 32767). * -- TRAP_REPRESENTATION: 1 if a trap representation is possible, 0 * otherwise. The only way trap representations are guaranteed * impossible is when TWOS_COMPLEMENT is set, and NATIVE_SIGNED_MIN * is equal to -NATIVE_SIGNED_MAX - 1. * * Those macros are calculated by some preprocessor directives. This * supposes that the implementation conforms to C99. Rules on preprocessing * were quite looser in C90, and it could be that an old compiler, used * for a cross-compiling task, does not get those right. Therefore, if * ARCH_DEFINED is defined prior to the inclusion of this file, those * four macros are supposed to be already defined. Otherwise they are * (re)defined. The macro ARCH_TRAP_DEFINED has the same meaning, but * is limited to the TRAP_REPRESENTATION macro (if ARCH_TRAP_DEFINED is * defined, the macro TRAP_REPRESENTATION is supposed to be already * defined; the three other macros are recalculated). * * * To sum up: * -- Whenever a division operator (/ or %) is invoked and would yield * an unrepresentable result, ARITH_ERROR() is invoked. * -- With ARITHMETIC_CHECKS undefined, ARITH_WARNING() is never invoked. * -- With ARITHMETIC_CHECKS defined: * ** If ARCH_DEFINED is defined, the including context must provide * the macros TWOS_COMPLEMENT, ONES_COMPLEMENT, SIGNED_IS_BIGGER * and TRAP_REPRESENTATION. * ** Otherwise, if ARCH_TRAP_DEFINED is defined, the including context * must provide the macro TRAP_REPRESENTATION. * The code then detects all operator invokations that would yield an * overflow, underflow, trap representation, or any implementation * defined result or undefined behaviour. The macro ARITH_WARNING() is * invoked for each detection. * -- Trap representation detection code supposes that the operands are * _not_ trap representation. */ #ifndef ARCH_DEFINED #undef TWOS_COMPLEMENT #undef ONES_COMPLEMENT #undef SIGNED_IS_BIGGER #ifndef ARCH_TRAP_DEFINED #undef TRAP_REPRESENTATION #endif #if (-1) & 3 == 3 /* * Two's complement. */ #define TWOS_COMPLEMENT 1 #define ONES_COMPLEMENT 0 #ifndef ARCH_TRAP_DEFINED #if NATIVE_SIGNED_MIN < -NATIVE_SIGNED_MAX #define TRAP_REPRESENTATION 0 #else #define TRAP_REPRESENTATION 1 #endif #endif #elif (-1) & 3 == 2 /* * One's complement. */ #define TWOS_COMPLEMENT 0 #define ONES_COMPLEMENT 1 #ifndef ARCH_TRAP_DEFINED #define TRAP_REPRESENTATION 1 #endif #else /* * Mantissa + sign. */ #define TWOS_COMPLEMENT 0 #define ONES_COMPLEMENT 0 #ifndef ARCH_TRAP_DEFINED #define TRAP_REPRESENTATION 1 #endif #endif /* * Maximum native unsigned value. The first macro is for #if directives, * the second macro is for use as constant expression in C code. */ #define NATIVE_UNSIGNED_MAX ((((NATIVE_UNSIGNED_ONE << (NATIVE_UNSIGNED_BITS - 1)) \ - NATIVE_UNSIGNED_ONE) << 1) + NATIVE_UNSIGNED_ONE) #define NATIVE_UNSIGNED_MAX_A (((((arith_u)1 << (NATIVE_UNSIGNED_BITS - 1)) \ - (arith_u)1) << 1) + (arith_u)1) #if NATIVE_SIGNED_MAX == NATIVE_UNSIGNED_MAX #define SIGNED_IS_BIGGER 1 #else #define SIGNED_IS_BIGGER 0 #endif #endif #undef NEGATIVE_IS_BIGGER #if NATIVE_SIGNED_MIN < -NATIVE_SIGNED_MAX #define NEGATIVE_IS_BIGGER 1 #else #define NEGATIVE_IS_BIGGER 0 #endif /* sanity check: we cannot have a trap representation if we have two's complement with NATIVE_SIGNED_MIN < -NATIVE_SIGNED_MAX */ #if TRAP_REPRESENTATION && NEGATIVE_IS_BIGGER #error Impossible to get trap representations. #endif /* operations on the unsigned type */ ARITH_DECL_MONO_S_U(to_u) { useARI; return (arith_u)x; } ARITH_DECL_MONO_I_U(fromint) { useARI; return (arith_u)x; } ARITH_DECL_MONO_L_U(fromulong) { useARI; return (arith_u)x; } ARITH_DECL_MONO_U_I(toint) { useARI; #if NATIVE_UNSIGNED_MAX > INT_MAX if (x > (arith_u)INT_MAX) return INT_MAX; #endif return (int)x; } ARITH_DECL_MONO_U_L(toulong) { useARI; #if NATIVE_UNSIGNED_MAX > LONG_MAX if (x > (arith_u)LONG_MAX) return LONG_MAX; #endif return (long)x; } ARITH_DECL_MONO_U_U(neg) { useARI; return -x; } ARITH_DECL_MONO_U_U(not) { useARI; return ~x; } ARITH_DECL_MONO_U_I(lnot) { useARI; return !x; } ARITH_DECL_MONO_U_I(lval) { useARI; return x != 0; } ARITH_DECL_BI_UU_U(plus) { useARI; return x + y; } ARITH_DECL_BI_UU_U(minus) { useARI; return x - y; } ARITH_DECL_BI_UU_I(lt) { useARI; return x < y; } ARITH_DECL_BI_UU_I(leq) { useARI; return x <= y; } ARITH_DECL_BI_UU_I(gt) { useARI; return x > y; } ARITH_DECL_BI_UU_I(geq) { useARI; return x >= y; } ARITH_DECL_BI_UU_I(same) { useARI; return x == y; } ARITH_DECL_BI_UU_I(neq) { useARI; return x != y; } ARITH_DECL_BI_UU_U(and) { useARI; return x & y; } ARITH_DECL_BI_UU_U(xor) { useARI; return x ^ y; } ARITH_DECL_BI_UU_U(or) { useARI; return x | y; } ARITH_DECL_BI_UU_U(star) { useARI; return x * y; } ARITH_DECL_BI_UI_U(lsh) { useARI; #ifdef ARITHMETIC_CHECKS if (y >= NATIVE_UNSIGNED_BITS) ARITH_WARNING(ARITH_EXCEP_LSH_W); else if (y < 0) ARITH_WARNING(ARITH_EXCEP_LSH_C); #endif return x << y; } ARITH_DECL_BI_UI_U(rsh) { useARI; #ifdef ARITHMETIC_CHECKS if (y >= NATIVE_UNSIGNED_BITS) ARITH_WARNING(ARITH_EXCEP_RSH_W); else if (y < 0) ARITH_WARNING(ARITH_EXCEP_RSH_C); #endif return x >> y; } ARITH_DECL_BI_UU_U(slash) { useARI; if (y == 0) ARITH_ERROR(ARITH_EXCEP_SLASH_D); return x / y; } ARITH_DECL_BI_UU_U(pct) { useARI; if (y == 0) ARITH_ERROR(ARITH_EXCEP_PCT_D); return x % y; } /* operations on the signed type */ ARITH_DECL_MONO_U_S(to_s) { useARI; #ifdef ARITHMETIC_CHECKS #if !SIGNED_IS_BIGGER if (x > (arith_u)NATIVE_SIGNED_MAX) ARITH_WARNING(ARITH_EXCEP_CONV_O); #endif #endif return (arith_s)x; } ARITH_DECL_MONO_I_S(fromint) { useARI; return (arith_s)x; } ARITH_DECL_MONO_L_S(fromlong) { useARI; return (arith_s)x; } ARITH_DECL_MONO_S_I(toint) { useARI; #if NATIVE_SIGNED_MIN < INT_MIN if (x < (arith_s)INT_MIN) return INT_MIN; #endif #if NATIVE_SIGNED_MAX > INT_MAX if (x > (arith_s)INT_MAX) return INT_MAX; #endif return (int)x; } ARITH_DECL_MONO_S_L(tolong) { useARI; #if NATIVE_SIGNED_MIN < LONG_MIN if (x < (arith_s)LONG_MIN) return LONG_MIN; #endif #if NATIVE_SIGNED_MAX > LONG_MAX if (x > (arith_s)LONG_MAX) return LONG_MAX; #endif return (long)x; } ARITH_DECL_MONO_S_S(neg) { useARI; #ifdef ARITHMETIC_CHECKS #if NEGATIVE_IS_BIGGER if (x == NATIVE_SIGNED_MIN) ARITH_WARNING(ARITH_EXCEP_NEG_O); #endif #endif return -x; } ARITH_DECL_MONO_S_S(not) { useARI; #ifdef ARITHMETIC_CHECKS #if TRAP_REPRESENTATION if ( #if TWOS_COMPLEMENT (x == NATIVE_SIGNED_MAX) #elif ONES_COMPLEMENT (x == 0) #else (x == NATIVE_SIGNED_MAX) #endif ) ARITH_WARNING(ARITH_EXCEP_NOT_T); #endif #endif return ~x; } ARITH_DECL_MONO_S_I(lnot) { useARI; return !x; } ARITH_DECL_MONO_S_I(lval) { useARI; return x != 0; } /* * Addition of signed values: * -- overflows occur only when both operands are strictly positive * -- underflows occur only when both operands are strictly negative * -- overflow check (both operands > 0): * ** if SIGNED_IS_BIGGER == 1, overflows are kept as such in the * unsigned world (if the signed addition overflows, so does the * unsigned, and vice versa) * ** if SIGNED_IS_BIGGER == 0, no overflow can happen in the unsigned * world * -- underflow check (both operands < 0): * ** if NEGATIVE_IS_BIGGER == 1 (must be two's complement) * ++ we have a guaranteed underflow if one of the operand is equal * to NATIVE_SIGNED_MIN; otherwise, -x and -y are valid integers, * and we cast them into the unsigned world * ++ if SIGNED_IS_BIGGER == 1, underflows become unsigned overflows * with a non-zero result * ++ if SIGNED_IS_BIGGER == 0, no overflow happens in the unsigned * world; we use the fact that -NATIVE_SIGNED_MIN is then * exaxctly 1 more than NATIVE_SIGNED_MAX * ** if NEGATIVE_IS_BIGGER == 0, underflow check is identical to * overflow check on (signed) -x and -y. */ ARITH_DECL_BI_SS_S(plus) { useARI; #ifdef ARITHMETIC_CHECKS if (x > 0 && y > 0 && ( #if SIGNED_IS_BIGGER ((arith_u)((arith_u)x + (arith_u)y) < (arith_u)x) #else (((arith_u)x + (arith_u)y) > (arith_u)NATIVE_SIGNED_MAX) #endif )) ARITH_WARNING(ARITH_EXCEP_PLUS_O); else if (x < 0 && y < 0 && ( #if NEGATIVE_IS_BIGGER (x == NATIVE_SIGNED_MIN || y == NATIVE_SIGNED_MIN) || #if SIGNED_IS_BIGGER (((arith_u)(-x) + (arith_u)(-y) != 0) && (arith_u)((arith_u)(-x) + (arith_u)(-y)) < (arith_u)(-x)) #else (((arith_u)(-x) + (arith_u)(-y)) > ((arith_u)1 + (arith_u)NATIVE_SIGNED_MAX)) #endif #else #if SIGNED_IS_BIGGER ((arith_u)((arith_u)(-x) + (arith_u)(-y)) < (arith_u)(-x)) #else (((arith_u)(-x) + (arith_u)(-y)) > (arith_u)NATIVE_SIGNED_MAX) #endif #endif )) ARITH_WARNING(ARITH_EXCEP_PLUS_U); #endif return x + y; } /* * Subtraction of signed values: * -- overflow: only if x > 0 and y < 0 * ** if NEGATIVE_IS_BIGGER == 1 (must be two's complement) and * y == NATIVE_SIGNED_MIN then overflow * ** otherwise, cast x and -y to unsigned, then add and check * for overflows * -- underflow: only if x < 0 and y > 0 * ** if NEGATIVE_IS_BIGGER == 1 (must be two's complement): * ++ if x == NATIVE_SIGNED_MIN then underflow * ++ cast -x and y to unsigned, then add. If SIGNED_IS_BIGGER == 0, * just check. Otherwise, check for overflow with non-zero result. * ** if NEGATIVE_IS_BIGGER == 0: cast -x and y to unsigned, then * add. Overflow check as in addition. */ ARITH_DECL_BI_SS_S(minus) { useARI; #ifdef ARITHMETIC_CHECKS if (x > 0 && y < 0 && ( #if NEGATIVE_IS_BIGGER (y == NATIVE_SIGNED_MIN) || #endif #if SIGNED_IS_BIGGER ((arith_u)((arith_u)x + (arith_u)(-y)) < (arith_u)x) #else (((arith_u)x + (arith_u)(-y)) > (arith_u)NATIVE_SIGNED_MAX) #endif )) ARITH_WARNING(ARITH_EXCEP_MINUS_O); else if (x < 0 && y > 0 && ( #if NEGATIVE_IS_BIGGER (x == NATIVE_SIGNED_MIN) || #if SIGNED_IS_BIGGER ((((arith_u)(-x) + (arith_u)y) != 0) && ((arith_u)((arith_u)(-x) + (arith_u)y) < (arith_u)(-x))) #else (((arith_u)(-x) + (arith_u)y) > ((arith_u)1 + (arith_u)NATIVE_SIGNED_MAX)) #endif #else #if SIGNED_IS_BIGGER ((arith_u)((arith_u)(-x) + (arith_u)y) < (arith_u)(-x)) #else (((arith_u)(-x) + (arith_u)y) > (arith_u)NATIVE_SIGNED_MAX) #endif #endif )) ARITH_WARNING(ARITH_EXCEP_MINUS_U); #endif return x - y; } ARITH_DECL_BI_SS_I(lt) { useARI; return x < y; } ARITH_DECL_BI_SS_I(leq) { useARI; return x <= y; } ARITH_DECL_BI_SS_I(gt) { useARI; return x > y; } ARITH_DECL_BI_SS_I(geq) { useARI; return x >= y; } ARITH_DECL_BI_SS_I(same) { useARI; return x == y; } ARITH_DECL_BI_SS_I(neq) { useARI; return x != y; } /* * Provided neither x nor y is a trap representation: * -- one's complement: impossible to get a trap representation * -- two's complement and sign + mantissa: trap representation if and * only if x and y are strictly negative and (-x) & (-y) == 0 * (in two's complement, -x is safe because overflow would occur only * if x was already a trap representation). */ ARITH_DECL_BI_SS_S(and) { useARI; #ifdef ARITHMETIC_CHECKS #if TRAP_REPRESENTATION && !ONES_COMPLEMENT if (x < 0 && y < 0 && ((-x) & (-y)) == 0) ARITH_WARNING(ARITH_EXCEP_AND_T); #endif #endif return x & y; } /* * Provided neither x nor y is a trap representation: * -- two's complement: trap if and only if x != NATIVE_SIGNED_MAX && ~x == y * -- one's complement: trap if and only if x != 0 && ~x == y * -- mantissa + sign: trap if and only if x != 0 && -x == y */ ARITH_DECL_BI_SS_S(xor) { useARI; #ifdef ARITHMETIC_CHECKS #if TRAP_REPRESENTATION if ( #if TWOS_COMPLEMENT (x != NATIVE_SIGNED_MAX && ~x == y) #elif ONES_COMPLEMENT (x != 0 && ~x == y) #else (x != 0 && -x == y) #endif ) ARITH_WARNING(ARITH_EXCEP_XOR_T); #endif #endif return x ^ y; } /* * Provided neither x nor y is a trap representation: * -- two's complement: impossible to trap * -- one's complement: trap if and only if x != 0 && y != 0 && (~x & ~y) == 0 * -- mantissa + sign: impossible to trap */ ARITH_DECL_BI_SS_S(or) { useARI; #ifdef ARITHMETIC_CHECKS #if TRAP_REPRESENTATION #if ONES_COMPLEMENT if (x != 0 && y != 0 && (~x & ~y) == 0) ARITH_WARNING(ARITH_EXCEP_OR_T); #endif #endif #endif return x | y; } /* * Left-shifting by a negative or greater than type width count is * forbidden. Left-shifting a negative value is forbidden (underflow). * Left-shifting a positive value can trigger an overflow. We check it * by casting into the unsigned world and simulating a truncation. * * If SIGNED_IS_BIGGER is set, then the signed type width is 1 more * than the unsigned type width (the sign bit is included in the width); * otherwise, if W is the signed type width, 1U << (W-1) is equal to * NATIVE_SIGNED_MAX + 1. */ ARITH_DECL_BI_SI_S(lsh) { useARI; #ifdef ARITHMETIC_CHECKS if (y < 0) ARITH_WARNING(ARITH_EXCEP_LSH_C); else if ( #if SIGNED_IS_BIGGER y > NATIVE_UNSIGNED_BITS #else y >= NATIVE_UNSIGNED_BITS || (y > 0 && (((arith_u)1 << (y - 1)) > (arith_u)NATIVE_SIGNED_MAX)) #endif ) ARITH_WARNING(ARITH_EXCEP_LSH_W); else if (x < 0) ARITH_WARNING(ARITH_EXCEP_LSH_U); else if (x > 0 && ((((arith_u)x << y) & NATIVE_SIGNED_MAX) >> y) != (arith_u)x) ARITH_WARNING(ARITH_EXCEP_LSH_O); #endif return x << y; } /* * Right-shifting is handled as left-shifting, except that the problem * is somehow simpler: there is no possible overflow or underflow. Only * right-shifting a negative value yields an implementation defined * result (_not_ an undefined behaviour). */ ARITH_DECL_BI_SI_S(rsh) { useARI; #ifdef ARITHMETIC_CHECKS if (y < 0) ARITH_WARNING(ARITH_EXCEP_RSH_C); else if ( #if SIGNED_IS_BIGGER y > NATIVE_UNSIGNED_BITS #else y >= NATIVE_UNSIGNED_BITS || (y > 0 && (((arith_u)1 << (y - 1)) > (arith_u)NATIVE_SIGNED_MAX)) #endif ) ARITH_WARNING(ARITH_EXCEP_RSH_W); else if (x < 0) ARITH_WARNING(ARITH_EXCEP_RSH_N); #endif return x >> y; } /* * Overflow can happen only if both operands have the same sign. * Underflow can happen only if both operands have opposite signs. * * Overflow checking: this is done quite inefficiently by performing * a division on the result and check if it matches the initial operand. */ ARITH_DECL_BI_SS_S(star) { useARI; #ifdef ARITHMETIC_CHECKS if (x == 0 || y == 0) return 0; if (x > 0 && y > 0) { if ((((arith_u)x * (arith_u)y) & (arith_u)NATIVE_SIGNED_MAX) / (arith_u)y != (arith_u)x) ARITH_WARNING(ARITH_EXCEP_STAR_O); } else if (x < 0 && y < 0) { if ( #if NEGATIVE_IS_BIGGER (x == NATIVE_SIGNED_MIN || y == NATIVE_SIGNED_MIN) || #endif (((arith_u)(-x) * (arith_u)(-y)) & (arith_u)NATIVE_SIGNED_MAX) / (arith_u)(-y) != (arith_u)(-x)) ARITH_WARNING(ARITH_EXCEP_STAR_O); } else if (x > 0 && y < 0) { if ((arith_u)x > (arith_u)1 && ( #if NEGATIVE_IS_BIGGER y == NATIVE_SIGNED_MIN || #endif (((arith_u)x * (arith_u)(-y)) & (arith_u)NATIVE_SIGNED_MAX) / (arith_u)(-y) != (arith_u)x)) ARITH_WARNING(ARITH_EXCEP_STAR_U); } else { if ((arith_u)y > (arith_u)1 && ( #if NEGATIVE_IS_BIGGER x == NATIVE_SIGNED_MIN || #endif (((arith_u)y * (arith_u)(-x)) & (arith_u)NATIVE_SIGNED_MAX) / (arith_u)(-x) != (arith_u)y)) ARITH_WARNING(ARITH_EXCEP_STAR_U); } #endif return x * y; } /* * Division by 0 is an error. The only other possible problem is an * overflow of the result. Such an overflow can only happen in two's * complement representation, when NEGATIVE_IS_BIGGER is set, and * one attempts to divide NATIVE_SIGNED_MIN by -1: the result is then * -NATIVE_SIGNED_MIN, which is not representable by the type. This is * considered as an error, not a warning, because it actually triggers * an exception on modern Pentium-based PC. */ ARITH_DECL_BI_SS_S(slash) { if (y == 0) ARITH_ERROR(ARITH_EXCEP_SLASH_D); #if NEGATIVE_IS_BIGGER else if (x == NATIVE_SIGNED_MIN && y == (arith_s)(-1)) ARITH_ERROR(ARITH_EXCEP_SLASH_O); #endif return x / y; } /* * Only division by 0 needs to be checked. */ ARITH_DECL_BI_SS_S(pct) { if (y == 0) ARITH_ERROR(ARITH_EXCEP_PCT_D); return x % y; } ARITH_DECL_MONO_ST_US(octconst) { arith_u z = 0; for (; ARITH_OCTAL(*c); c ++) { arith_u w = ARITH_OVAL(*c); if (z > (NATIVE_UNSIGNED_MAX_A / 8)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z *= 8; #if 0 /* obsolete */ /* NATIVE_UNSIGNED_MAX_A is 2^N - 1, 0 <= w <= 7 and 8 divides z */ if (z > (NATIVE_UNSIGNED_MAX_A - w)) ARITH_ERROR(ARITH_EXCEP_CONST_O); #endif z += w; } *ru = z; #if SIGNED_IS_BIGGER *rs = z; *sp = 1; #else if (z > NATIVE_SIGNED_MAX) { *sp = 0; } else { *rs = z; *sp = 1; } #endif return c; } ARITH_DECL_MONO_ST_US(decconst) { arith_u z = 0; for (; ARITH_DECIM(*c); c ++) { arith_u w = ARITH_DVAL(*c); if (z > (NATIVE_UNSIGNED_MAX_A / 10)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z *= 10; if (z > (NATIVE_UNSIGNED_MAX_A - w)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z += w; } *ru = z; #if SIGNED_IS_BIGGER *rs = z; *sp = 1; #else if (z > NATIVE_SIGNED_MAX) { *sp = 0; } else { *rs = z; *sp = 1; } #endif return c; } ARITH_DECL_MONO_ST_US(hexconst) { arith_u z = 0; for (; ARITH_HEXAD(*c); c ++) { arith_u w = ARITH_HVAL(*c); if (z > (NATIVE_UNSIGNED_MAX_A / 16)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z *= 16; #if 0 /* obsolete */ /* NATIVE_UNSIGNED_MAX_A is 2^N - 1, 0 <= w <= 15 and 16 divides z */ if (z > (NATIVE_UNSIGNED_MAX_A - w)) ARITH_ERROR(ARITH_EXCEP_CONST_O); #endif z += w; } *ru = z; #if SIGNED_IS_BIGGER *rs = z; *sp = 1; #else if (z > NATIVE_SIGNED_MAX) { *sp = 0; } else { *rs = z; *sp = 1; } #endif return c; } #else /* ====================================================================== */ /* Arithmetics with a simple simulated type */ /* ====================================================================== */ /* * We simulate a type with the following characteristics: * -- the signed type width is equal to the unsigned type width (which * means that there is one less value bit in the signed type); * -- the signed type uses two's complement representation; * -- there is no trap representation; * -- overflows and underflows are truncated (but a warning is emitted * if ARITHMETIC_CHECKS is defined); * -- overflow on integer division is still an error; * -- right-shifting of a negative value extends the sign; * -- the shift count value is first cast to unsigned, then reduced modulo * the type size. * * These characteristics follow what is usually found on modern * architectures. * * The maximum emulated type size is twice the size of the unsigned native * type which is used to emulate the type. */ #undef SIMUL_ONE_TMP #undef SIMUL_MSW_TMP1 #undef SIMUL_MSW_MASK #undef SIMUL_LSW_TMP1 #undef SIMUL_LSW_MASK #define SIMUL_ONE_TMP ((SIMUL_ARITH_SUBTYPE)1) #define SIMUL_MSW_TMP1 (SIMUL_ONE_TMP << (SIMUL_MSW_WIDTH - 1)) #define SIMUL_MSW_MASK (SIMUL_MSW_TMP1 | (SIMUL_MSW_TMP1 - SIMUL_ONE_TMP)) #define SIMUL_LSW_TMP1 (SIMUL_ONE_TMP << (SIMUL_LSW_WIDTH - 1)) #define SIMUL_LSW_MASK (SIMUL_LSW_TMP1 | (SIMUL_LSW_TMP1 - SIMUL_ONE_TMP)) #undef TMSW #undef TLSW #define TMSW(x) ((x) & SIMUL_MSW_MASK) #define TLSW(x) ((x) & SIMUL_LSW_MASK) #undef SIMUL_ZERO #undef SIMUL_ONE #define SIMUL_ZERO arith_strc(ARITH_TYPENAME, _zero) #define SIMUL_ONE arith_strc(ARITH_TYPENAME, _one) static arith_u SIMUL_ZERO = { 0, 0 }; static arith_u SIMUL_ONE = { 0, 1 }; /* * We use the fact that both the signed and unsigned type are the same * structure. The difference between the signed and the unsigned type * is a type information, and, as such, is considered compile-time and * not maintained in the value structure itself. This is a job for * the programmer / compiler. */ ARITH_DECL_MONO_S_U(to_u) { useARI; return x; } ARITH_DECL_MONO_I_U(fromint) { arith_u z; if (x < 0) return arith_op_u(neg)(aARI_ arith_op_u(fromint)(aARI_ -x)); /* * This code works because types smaller than int are promoted * by the C compiler before evaluating the >> operator. */ z.msw = TMSW(((SIMUL_ARITH_SUBTYPE)x >> (SIMUL_LSW_WIDTH - 1)) >> 1); z.lsw = TLSW((SIMUL_ARITH_SUBTYPE)x); return z; } ARITH_DECL_MONO_L_U(fromulong) { arith_u z; useARI; #if (ULONG_MAX >> (SIMUL_LSW_WIDTH - 1)) >> 1 == 0 z.msw = 0; z.lsw = x; #else z.msw = TMSW(x >> SIMUL_LSW_WIDTH); z.lsw = TLSW((SIMUL_ARITH_SUBTYPE)x); #endif return z; } ARITH_DECL_MONO_U_I(toint) { useARI; #if ((INT_MAX >> (SIMUL_LSW_WIDTH - 1)) >> 1) == 0 if (x.msw != 0 || x.lsw > (SIMUL_ARITH_SUBTYPE)INT_MAX) return INT_MAX; return (int)x.lsw; #else #if (INT_MAX >> (SIMUL_SUBTYPE_BITS - 1)) == 0 if (x.msw > (SIMUL_ARITH_SUBTYPE)(INT_MAX >> SIMUL_LSW_WIDTH)) return INT_MAX; #endif return ((int)x.msw << SIMUL_LSW_WIDTH) | (int)x.lsw; #endif } ARITH_DECL_MONO_U_L(toulong) { useARI; #if ((ULONG_MAX >> (SIMUL_LSW_WIDTH - 1)) >> 1) == 0 if (x.msw != 0 || x.lsw > (SIMUL_ARITH_SUBTYPE)ULONG_MAX) return ULONG_MAX; return (unsigned long)x.lsw; #else #if (ULONG_MAX >> (SIMUL_SUBTYPE_BITS - 1)) == 0 if (x.msw > (SIMUL_ARITH_SUBTYPE)(ULONG_MAX >> SIMUL_LSW_WIDTH)) return ULONG_MAX; #endif return ((unsigned long)x.msw << SIMUL_LSW_WIDTH) | (unsigned long)x.lsw; #endif } ARITH_DECL_MONO_U_U(neg) { x = arith_op_u(not)(aARI_ x); return arith_op_u(plus)(aARI_ x, SIMUL_ONE); } ARITH_DECL_MONO_U_U(not) { useARI; x.msw = TMSW(~x.msw); x.lsw = TLSW(~x.lsw); return x; } ARITH_DECL_MONO_U_I(lnot) { useARI; return x.msw == 0 && x.lsw == 0; } ARITH_DECL_MONO_U_I(lval) { useARI; return x.msw != 0 || x.lsw != 0; } ARITH_DECL_BI_UU_U(plus) { useARI; x.lsw = TLSW(x.lsw + y.lsw); x.msw = TMSW(x.msw + y.msw); if (x.lsw < y.lsw) x.msw = TMSW(x.msw + 1); return x; } ARITH_DECL_BI_UU_U(minus) { return arith_op_u(plus)(aARI_ x, arith_op_u(neg)(aARI_ y)); } ARITH_DECL_BI_UI_U(lsh) { useARI; if (y == 0) return x; #ifdef ARITHMETIC_CHECKS if (y < 0) ARITH_WARNING(ARITH_EXCEP_LSH_C); else if (y >= SIMUL_NUMBITS) ARITH_WARNING(ARITH_EXCEP_LSH_W); #endif y = (unsigned)y % SIMUL_NUMBITS; if (y >= SIMUL_LSW_WIDTH) { /* * We use here the fact that the LSW size is always * equal to or greater than the MSW size. */ x.msw = TMSW(x.lsw << (y - SIMUL_LSW_WIDTH)); x.lsw = 0; return x; } x.msw = TMSW((x.msw << y) | (x.lsw >> (SIMUL_LSW_WIDTH - y))); x.lsw = TLSW(x.lsw << y); return x; } ARITH_DECL_BI_UI_U(rsh) { useARI; #ifdef ARITHMETIC_CHECKS if (y < 0) ARITH_WARNING(ARITH_EXCEP_RSH_C); else if (y >= SIMUL_NUMBITS) ARITH_WARNING(ARITH_EXCEP_RSH_W); #endif y = (unsigned)y % SIMUL_NUMBITS; if (y >= SIMUL_LSW_WIDTH) { x.lsw = x.msw >> (y - SIMUL_LSW_WIDTH); x.msw = 0; return x; } x.lsw = TLSW((x.lsw >> y) | (x.msw << (SIMUL_LSW_WIDTH - y))); x.msw >>= y; return x; } ARITH_DECL_BI_UU_I(lt) { useARI; return x.msw < y.msw || (x.msw == y.msw && x.lsw < y.lsw); } ARITH_DECL_BI_UU_I(leq) { useARI; return x.msw < y.msw || (x.msw == y.msw && x.lsw <= y.lsw); } ARITH_DECL_BI_UU_I(gt) { return arith_op_u(lt)(aARI_ y, x); } ARITH_DECL_BI_UU_I(geq) { return arith_op_u(leq)(aARI_ y, x); } ARITH_DECL_BI_UU_I(same) { useARI; return x.msw == y.msw && x.lsw == y.lsw; } ARITH_DECL_BI_UU_I(neq) { return !arith_op_u(same)(aARI_ x, y); } ARITH_DECL_BI_UU_U(and) { useARI; x.msw &= y.msw; x.lsw &= y.lsw; return x; } ARITH_DECL_BI_UU_U(xor) { useARI; x.msw ^= y.msw; x.lsw ^= y.lsw; return x; } ARITH_DECL_BI_UU_U(or) { useARI; x.msw |= y.msw; x.lsw |= y.lsw; return x; } #undef SIMUL_LSW_ODDLEN #undef SIMUL_LSW_HALFLEN #undef SIMUL_LSW_HALFMASK #define SIMUL_LSW_ODDLEN (SIMUL_LSW_WIDTH & 1) #define SIMUL_LSW_HALFLEN (SIMUL_LSW_WIDTH / 2) #define SIMUL_LSW_HALFMASK (~(~(SIMUL_ARITH_SUBTYPE)0 << SIMUL_LSW_HALFLEN)) ARITH_DECL_BI_UU_U(star) { arith_u z; SIMUL_ARITH_SUBTYPE a = x.lsw, b = y.lsw, t00, t01, t10, t11, c = 0, t; #if SIMUL_LSW_ODDLEN SIMUL_ARITH_SUBTYPE bms = b & (SIMUL_ONE_TMP << (SIMUL_LSW_WIDTH - 1)); b &= ~(SIMUL_ONE_TMP << (SIMUL_LSW_WIDTH - 1)); #endif useARI; t00 = (a & SIMUL_LSW_HALFMASK) * (b & SIMUL_LSW_HALFMASK); t01 = (a & SIMUL_LSW_HALFMASK) * (b >> SIMUL_LSW_HALFLEN); t10 = (a >> SIMUL_LSW_HALFLEN) * (b & SIMUL_LSW_HALFMASK); t11 = (a >> SIMUL_LSW_HALFLEN) * (b >> SIMUL_LSW_HALFLEN); t = z.lsw = t00; z.lsw = TLSW(z.lsw + (t01 << SIMUL_LSW_HALFLEN)); if (t > z.lsw) c ++; t = z.lsw; z.lsw = TLSW(z.lsw + (t10 << SIMUL_LSW_HALFLEN)); if (t > z.lsw) c ++; #if SIMUL_LSW_ODDLEN t = z.lsw; z.lsw = TLSW(z.lsw + (t11 << (2 * SIMUL_LSW_HALFLEN))); if (t > z.lsw) c ++; if (bms && (a & SIMUL_ONE_TMP)) { t = z.lsw; z.lsw = TLSW(z.lsw + b); if (t > z.lsw) c ++; } #endif z.msw = TMSW(x.lsw * y.msw + x.msw * y.lsw + c + (t01 >> (SIMUL_LSW_WIDTH - SIMUL_LSW_HALFLEN)) + (t10 >> (SIMUL_LSW_WIDTH - SIMUL_LSW_HALFLEN)) + (t11 >> (SIMUL_LSW_WIDTH - (2 * SIMUL_LSW_HALFLEN)))); return z; } /* * This function calculates the unsigned integer division, yielding * both quotient and remainder. The divider (y) MUST be non-zero. */ static void arith_op_u(udiv)(pARI_ arith_u x, arith_u y, arith_u *q, arith_u *r) { int i, j; arith_u a; *q = SIMUL_ZERO; for (i = SIMUL_NUMBITS - 1; i >= 0; i --) { if (i >= (int)SIMUL_LSW_WIDTH && (y.msw & (SIMUL_ONE_TMP << (i - SIMUL_LSW_WIDTH)))) break; if (i < (int)SIMUL_LSW_WIDTH && (y.lsw & (SIMUL_ONE_TMP << i))) break; } a = arith_op_u(lsh)(aARI_ y, SIMUL_NUMBITS - 1 - i); for (j = SIMUL_NUMBITS - 1 - i; j >= SIMUL_LSW_WIDTH; j --) { if (arith_op_u(leq)(aARI_ a, x)) { x = arith_op_u(minus)(aARI_ x, a); q->msw |= SIMUL_ONE_TMP << (j - SIMUL_LSW_WIDTH); } a = arith_op_u(rsh)(aARI_ a, 1); } for (; j >= 0; j --) { if (arith_op_u(leq)(aARI_ a, x)) { x = arith_op_u(minus)(aARI_ x, a); q->lsw |= SIMUL_ONE_TMP << j; } a = arith_op_u(rsh)(aARI_ a, 1); } *r = x; } ARITH_DECL_BI_UU_U(slash) { arith_u q, r; if (arith_op_u(same)(aARI_ y, SIMUL_ZERO)) ARITH_ERROR(ARITH_EXCEP_SLASH_D); arith_op_u(udiv)(aARI_ x, y, &q, &r); return q; } ARITH_DECL_BI_UU_U(pct) { arith_u q, r; if (arith_op_u(same)(aARI_ y, SIMUL_ZERO)) ARITH_ERROR(ARITH_EXCEP_PCT_D); arith_op_u(udiv)(aARI_ x, y, &q, &r); return r; } #undef SIMUL_TRAP #undef SIMUL_TRAPL #define SIMUL_TRAP (SIMUL_ONE_TMP << (SIMUL_MSW_WIDTH - 1)) #define SIMUL_TRAPL (SIMUL_ONE_TMP << (SIMUL_LSW_WIDTH - 1)) ARITH_DECL_MONO_U_S(to_s) { useARI; #ifdef ARITHMETIC_CHECKS if (x.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_CONV_O); #endif return x; } ARITH_DECL_MONO_I_S(fromint) { return arith_op_u(fromint)(aARI_ x); } ARITH_DECL_MONO_L_S(fromlong) { if (x < 0) return arith_op_u(neg)(aARI_ arith_op_u(fromulong)(aARI_ (unsigned long)(-x))); return arith_op_u(fromulong)(aARI_ (unsigned long)x); } ARITH_DECL_MONO_S_I(toint) { if (x.msw & SIMUL_TRAP) return -arith_op_u(toint)(aARI_ arith_op_u(neg)(aARI_ x)); return arith_op_u(toint)(aARI_ x); } ARITH_DECL_MONO_S_L(tolong) { if (x.msw & SIMUL_TRAP) return -(long)arith_op_u(toulong)(aARI_ arith_op_u(neg)(aARI_ x)); return (long)arith_op_u(toulong)(aARI_ x); } ARITH_DECL_MONO_S_S(neg) { #ifdef ARITHMETIC_CHECKS if (x.lsw == 0 && x.msw == SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_NEG_O); #endif return arith_op_u(neg)(aARI_ x); } ARITH_DECL_MONO_S_S(not) { return arith_op_u(not)(aARI_ x); } ARITH_DECL_MONO_S_I(lnot) { return arith_op_u(lnot)(aARI_ x); } ARITH_DECL_MONO_S_I(lval) { return arith_op_u(lval)(aARI_ x); } ARITH_DECL_BI_SS_S(plus) { arith_u z = arith_op_u(plus)(aARI_ x, y); #ifdef ARITHMETIC_CHECKS if (x.msw & y.msw & ~z.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_PLUS_U); else if (~x.msw & ~y.msw & z.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_PLUS_O); #endif return z; } ARITH_DECL_BI_SS_S(minus) { arith_s z = arith_op_u(minus)(aARI_ x, y); #ifdef ARITHMETIC_CHECKS if (x.msw & ~y.msw & ~z.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_MINUS_U); else if (~x.msw & y.msw & z.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_MINUS_O); #endif return z; } /* * Since signed and unsigned widths are equal for the simulated type, * we can use the unsigned left shift function, which performs the * the checks on the type width. */ ARITH_DECL_BI_SI_S(lsh) { arith_s z = arith_op_u(lsh)(aARI_ x, y); #ifdef ARITHMETIC_CHECKS if (x.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_LSH_U); else { /* * To check for possible overflow, we right shift the * result. We need to make the shift count proper so that * we do not emit a double-warning. Besides, the left shift * could have been untruncated but yet affet the sign bit, * so we must test this explicitly. */ arith_s w = arith_op_u(rsh)(aARI_ z, (unsigned)y % SIMUL_NUMBITS); if ((z.msw & SIMUL_TRAP) || w.msw != x.msw || w.lsw != x.lsw) ARITH_WARNING(ARITH_EXCEP_LSH_O); } #endif return z; } /* * We define that right shifting a negative value, besides being worth a * warning, duplicates the sign bit. This is the most useful and most * usually encountered behaviour, and the standard allows it. */ ARITH_DECL_BI_SI_S(rsh) { int xn = (x.msw & SIMUL_TRAP) != 0; arith_s z = arith_op_u(rsh)(aARI_ x, y); int gy = (unsigned)y % SIMUL_NUMBITS; #ifdef ARITHMETIC_CHECKS if (xn) ARITH_WARNING(ARITH_EXCEP_RSH_N); #endif if (xn && gy > 0) { if (gy <= SIMUL_MSW_WIDTH) { z.msw |= TMSW(~(SIMUL_MSW_MASK >> gy)); } else { z.msw = SIMUL_MSW_MASK; z.lsw |= TLSW(~(SIMUL_LSW_MASK >> (gy - SIMUL_MSW_WIDTH))); } } return z; } ARITH_DECL_BI_SS_I(lt) { int xn = (x.msw & SIMUL_TRAP) != 0; int yn = (y.msw & SIMUL_TRAP) != 0; useARI; if (xn == yn) { return x.msw < y.msw || (x.msw == y.msw && x.lsw < y.lsw); } else { return xn; } } ARITH_DECL_BI_SS_I(leq) { int xn = (x.msw & SIMUL_TRAP) != 0; int yn = (y.msw & SIMUL_TRAP) != 0; useARI; if (xn == yn) { return x.msw < y.msw || (x.msw == y.msw && x.lsw <= y.lsw); } else { return xn; } } ARITH_DECL_BI_SS_I(gt) { return arith_op_s(lt)(aARI_ y, x); } ARITH_DECL_BI_SS_I(geq) { return arith_op_s(leq)(aARI_ y, x); } ARITH_DECL_BI_SS_I(same) { useARI; return x.msw == y.msw && x.lsw == y.lsw; } ARITH_DECL_BI_SS_I(neq) { return !arith_op_s(same)(aARI_ x, y); } ARITH_DECL_BI_SS_S(and) { return arith_op_u(and)(aARI_ x, y); } ARITH_DECL_BI_SS_S(xor) { return arith_op_u(xor)(aARI_ x, y); } ARITH_DECL_BI_SS_S(or) { return arith_op_u(or)(aARI_ x, y); } /* * This function calculates the signed integer division, yielding * both quotient and remainder. The divider (y) MUST be non-zero. */ static void arith_op_s(sdiv)(pARI_ arith_s x, arith_s y, arith_s *q, arith_s *r) { arith_u a = x, b = y, c, d; int xn = 0, yn = 0; if (x.msw & SIMUL_TRAP) { a = arith_op_u(neg)(aARI_ x); xn = 1; } if (y.msw & SIMUL_TRAP) { b = arith_op_u(neg)(aARI_ y); yn = 1; } arith_op_u(udiv)(aARI_ a, b, &c, &d); if (xn != yn) *q = arith_op_u(neg)(aARI_ c); else *q = c; if (xn != yn) *r = arith_op_u(neg)(aARI_ d); else *r = d; } /* * Overflow/underflow check is done the following way: obvious cases * are checked (both upper words non-null, both upper words null...) * and border-line occurrences are verified with an unsigned division * (which is quite computationaly expensive). */ ARITH_DECL_BI_SS_S(star) { #ifdef ARITHMETIC_CHECKS arith_s z = arith_op_u(star)(aARI_ x, y); int warn = 0; if (x.msw > 0) { if (y.msw > 0 #if SIMUL_LSW_ODDLEN || (y.lsw & SIMUL_TRAPL) #endif ) warn = 1; } #if SIMUL_LSW_ODDLEN else if (y.msw > 0 && (x.lsw & SIMUL_TRAPL)) warn = 1; #endif if (!warn && (x.msw > 0 || y.msw > 0 #if SIMUL_LSW_ODDLEN || ((x.lsw | y.lsw) & SIMUL_TRAPL) #endif )) { if (x.msw == SIMUL_MSW_MASK && x.lsw == SIMUL_LSW_MASK) { if (y.msw == SIMUL_TRAP && y.lsw == 0) warn = 1; } else if (!(x.msw == 0 && x.lsw == 0) && !arith_op_s(same)(aARI_ arith_op_s(slash)(aARI_ z, x), y)) { } warn = 1; } if (warn) ARITH_WARNING(((x.msw ^ y.msw) & SIMUL_TRAP) ? ARITH_EXCEP_STAR_U : ARITH_EXCEP_STAR_O); return z; #else return arith_op_u(star)(aARI_ x, y); #endif } ARITH_DECL_BI_SS_S(slash) { arith_s q, r; if (arith_op_s(same)(aARI_ y, SIMUL_ZERO)) ARITH_ERROR(ARITH_EXCEP_SLASH_D); else if (x.msw == SIMUL_TRAP && x.lsw == 0 && y.msw == SIMUL_MSW_MASK && y.lsw == SIMUL_LSW_MASK) ARITH_ERROR(ARITH_EXCEP_SLASH_O); arith_op_s(sdiv)(aARI_ x, y, &q, &r); return q; } ARITH_DECL_BI_SS_S(pct) { arith_s q, r; if (arith_op_s(same)(aARI_ y, SIMUL_ZERO)) ARITH_ERROR(ARITH_EXCEP_PCT_D); arith_op_s(sdiv)(aARI_ x, y, &q, &r); return r; } ARITH_DECL_MONO_ST_US(octconst) { arith_u z = { 0, 0 }; for (; ARITH_OCTAL(*c); c ++) { unsigned w = ARITH_OVAL(*c); if (z.msw > (SIMUL_MSW_MASK / 8)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z = arith_op_u(lsh)(aARI_ z, 3); z.lsw |= w; } *ru = z; if (z.msw & SIMUL_TRAP) { *sp = 0; } else { *rs = z; *sp = 1; } return c; } ARITH_DECL_MONO_ST_US(decconst) { #define ARITH_ALPHA_TRAP (1U << (SIMUL_MSW_WIDTH - 1)) #define ARITH_ALPHA_MASK (ARITH_ALPHA_TRAP | (ARITH_ALPHA_TRAP - 1)) #define ARITH_ALPHA ((ARITH_ALPHA_MASK - 10 * (ARITH_ALPHA_TRAP / 5)) + 1) #define ARITH_ALPHA_A ((SIMUL_MSW_MASK - 10 * (SIMUL_TRAP / 5)) + 1) arith_u z = { 0, 0 }; for (; ARITH_DECIM(*c); c ++) { unsigned w = ARITH_DVAL(*c); SIMUL_ARITH_SUBTYPE t; if (z.msw > (SIMUL_MSW_MASK / 10) || (z.msw == (SIMUL_MSW_MASK / 10) && /* ARITH_ALPHA is between 1 and 9, inclusive. */ #if ARITH_ALPHA == 5 z.lsw >= SIMUL_TRAPL #else z.lsw > ((SIMUL_TRAPL / 5) * ARITH_ALPHA_A + ((SIMUL_TRAPL % 5) * ARITH_ALPHA_A) / 5) #endif )) ARITH_ERROR(ARITH_EXCEP_CONST_O); z = arith_op_u(plus)(aARI_ arith_op_u(lsh)(aARI_ z, 3), arith_op_u(lsh)(aARI_ z, 1)); t = TLSW(z.lsw + w); if (t < z.lsw) { if (TMSW(z.msw + 1) == 0) ARITH_ERROR(ARITH_EXCEP_CONST_O); z.msw ++; } z.lsw = t; } *ru = z; if (z.msw & SIMUL_TRAP) { *sp = 0; } else { *rs = z; *sp = 1; } return c; #undef ARITH_ALPHA_A #undef ARITH_ALPHA #undef ARITH_ALPHA_TRAP #undef ARITH_ALPHA_MASK } ARITH_DECL_MONO_ST_US(hexconst) { arith_u z = { 0, 0 }; for (; ARITH_HEXAD(*c); c ++) { unsigned w = ARITH_HVAL(*c); if (z.msw > (SIMUL_MSW_MASK / 16)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z = arith_op_u(lsh)(aARI_ z, 4); z.lsw |= w; } *ru = z; if (z.msw & SIMUL_TRAP) { *sp = 0; } else { *rs = z; *sp = 1; } return c; } #endif #undef ARITH_HVAL #undef ARITH_HEXAD #undef ARITH_DVAL #undef ARITH_DECIM #undef ARITH_OVAL #undef ARITH_OCTAL Convert-Binary-C-0.85/ucpp/scanppd.c0000644000175000001440000001537714676735310015777 0ustar mhxusersstatic enum { PPDIR_DEFINE, PPDIR_UNDEF, PPDIR_IF, PPDIR_IFDEF, PPDIR_IFNDEF, PPDIR_ELSE, PPDIR_ELIF, PPDIR_ENDIF, PPDIR_INCLUDE, PPDIR_INCLUDE_NEXT, PPDIR_PRAGMA, PPDIR_ERROR, PPDIR_LINE, PPDIR_ASSERT, PPDIR_UNASSERT, PPDIR_IDENT, PPDIR_WARNING, PPDIR_UNKNOWN } scan_pp_directive(const char *ppdir) { switch( ppdir[0] ) { case 'a': if( ppdir[1] == 's' && ppdir[2] == 's' && ppdir[3] == 'e' && ppdir[4] == 'r' && ppdir[5] == 't' && ppdir[6] == '\0' ) { /* assert */ return PPDIR_ASSERT; } goto unknown; case 'd': if( ppdir[1] == 'e' && ppdir[2] == 'f' && ppdir[3] == 'i' && ppdir[4] == 'n' && ppdir[5] == 'e' && ppdir[6] == '\0' ) { /* define */ return PPDIR_DEFINE; } goto unknown; case 'e': switch( ppdir[1] ) { case 'l': switch( ppdir[2] ) { case 'i': if( ppdir[3] == 'f' && ppdir[4] == '\0' ) { /* elif */ return PPDIR_ELIF; } goto unknown; case 's': if( ppdir[3] == 'e' && ppdir[4] == '\0' ) { /* else */ return PPDIR_ELSE; } goto unknown; default: goto unknown; } case 'n': if( ppdir[2] == 'd' && ppdir[3] == 'i' && ppdir[4] == 'f' && ppdir[5] == '\0' ) { /* endif */ return PPDIR_ENDIF; } goto unknown; case 'r': if( ppdir[2] == 'r' && ppdir[3] == 'o' && ppdir[4] == 'r' && ppdir[5] == '\0' ) { /* error */ return PPDIR_ERROR; } goto unknown; default: goto unknown; } case 'i': switch( ppdir[1] ) { case 'd': if( ppdir[2] == 'e' && ppdir[3] == 'n' && ppdir[4] == 't' && ppdir[5] == '\0' ) { /* ident */ return PPDIR_IDENT; } goto unknown; case 'f': switch( ppdir[2] ) { case '\0': { /* if */ return PPDIR_IF; } goto unknown; case 'd': if( ppdir[3] == 'e' && ppdir[4] == 'f' && ppdir[5] == '\0' ) { /* ifdef */ return PPDIR_IFDEF; } goto unknown; case 'n': if( ppdir[3] == 'd' && ppdir[4] == 'e' && ppdir[5] == 'f' && ppdir[6] == '\0' ) { /* ifndef */ return PPDIR_IFNDEF; } goto unknown; default: goto unknown; } case 'n': switch( ppdir[2] ) { case 'c': switch( ppdir[3] ) { case 'l': switch( ppdir[4] ) { case 'u': switch( ppdir[5] ) { case 'd': switch( ppdir[6] ) { case 'e': switch( ppdir[7] ) { case '\0': { /* include */ return PPDIR_INCLUDE; } goto unknown; case '_': if( ppdir[8] == 'n' && ppdir[9] == 'e' && ppdir[10] == 'x' && ppdir[11] == 't' && ppdir[12] == '\0' ) { /* include_next */ return PPDIR_INCLUDE_NEXT; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } case 'l': if( ppdir[1] == 'i' && ppdir[2] == 'n' && ppdir[3] == 'e' && ppdir[4] == '\0' ) { /* line */ return PPDIR_LINE; } goto unknown; case 'p': if( ppdir[1] == 'r' && ppdir[2] == 'a' && ppdir[3] == 'g' && ppdir[4] == 'm' && ppdir[5] == 'a' && ppdir[6] == '\0' ) { /* pragma */ return PPDIR_PRAGMA; } goto unknown; case 'u': switch( ppdir[1] ) { case 'n': switch( ppdir[2] ) { case 'a': if( ppdir[3] == 's' && ppdir[4] == 's' && ppdir[5] == 'e' && ppdir[6] == 'r' && ppdir[7] == 't' && ppdir[8] == '\0' ) { /* unassert */ return PPDIR_UNASSERT; } goto unknown; case 'd': if( ppdir[3] == 'e' && ppdir[4] == 'f' && ppdir[5] == '\0' ) { /* undef */ return PPDIR_UNDEF; } goto unknown; default: goto unknown; } default: goto unknown; } case 'w': if( ppdir[1] == 'a' && ppdir[2] == 'r' && ppdir[3] == 'n' && (ppdir[4] == '\0' || (ppdir[4] == 'i' && ppdir[5] == 'n' && ppdir[6] == 'g' && ppdir[7] == '\0' ))) /* warning */ { return PPDIR_WARNING; } goto unknown; default: goto unknown; } unknown: return PPDIR_UNKNOWN; } Convert-Binary-C-0.85/ucpp/macro.c0000644000175000001440000014614714676735310015450 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "tune.h" #include #include #include #include #include "ucppi.h" #include "mem.h" #include "nhash.h" /* * we store macros in a hash table, and retrieve them using their name * as identifier. */ #ifdef UCPP_REENTRANT #define macros (REENTR->_macro.macros) #define macros_init_done (REENTR->_macro.macros_init_done) #else static HTT macros; static int macros_init_done = 0; #endif static void del_macro(void *m) { struct macro *n = m; size_t i; for (i = 0; (int)i < n->narg; i ++) freemem(n->arg[i]); if (n->narg > 0) freemem(n->arg); #ifdef LOW_MEM if (n->cval.length) freemem(n->cval.t); #else if (n->val.nt) { for (i = 0; i < n->val.nt; i ++) if (S_TOKEN(n->val.t[i].type)) freemem(n->val.t[i].name); freemem(n->val.t); } #endif freemem(n); } static inline struct macro *new_macro(void) { struct macro *m = getmem(sizeof(struct macro)); m->narg = -1; m->nest = 0; #ifdef LOW_MEM m->cval.length = 0; #else m->val.nt = m->val.art = 0; #endif m->vaarg = 0; return m; } #ifdef UCPP_CLONE static void *clone_macro(const void *m) { const struct macro *src = m; struct macro *dst = getmem(sizeof(struct macro)); size_t i; if (src->narg > 0) { dst->narg = 0; for (i = 0; (int)i < src->narg; i ++) aol(dst->arg, dst->narg, sdup(src->arg[i]), MACRO_ARG_MEMG); } else dst->narg = src->narg; #ifdef LOW_MEM dst->cval.length = src->cval.length; if (src->cval.length) { dst->cval.length = src->cval.length; dst->cval.t = getmem(src->cval.length); mmv(dst->cval.t, src->cval.t, src->cval.length); } #else dst->val.art = src->val.art; if (src->val.nt) { dst->val.nt = 0; for (i = 0; i < src->val.nt; i ++) { aol(dst->val.t, dst->val.nt, src->val.t[i], TOKEN_LIST_MEMG); if (S_TOKEN(src->val.t[i].type)) dst->val.t[i].name = sdup(src->val.t[i].name); } } else dst->val.nt = src->val.nt; #endif dst->nest = src->nest; dst->vaarg = src->vaarg; return dst; } #endif /* UCPP_CLONE */ /* * for special macros, and the "defined" operator */ enum { MAC_NONE, MAC_DEFINED, MAC_LINE, MAC_FILE, MAC_DATE, MAC_TIME, MAC_STDC, MAC_PRAGMA }; #define MAC_SPECIAL MAC_LINE /* * returns 1 for "defined" * returns x > 1 for a special macro such as __FILE__ * returns 0 otherwise */ static inline int check_special_macro(pCPP_ char *name) { if (!strcmp(name, "defined")) return MAC_DEFINED; if (*name != '_') return MAC_NONE; if (*(name + 1) == 'P') { if (!strcmp(name, "_Pragma")) return MAC_PRAGMA; return MAC_NONE; } else if (*(name + 1) != '_') return MAC_NONE; if (no_special_macros) return MAC_NONE; if (!strcmp(name, "__LINE__")) return MAC_LINE; else if (!strcmp(name, "__FILE__")) return MAC_FILE; else if (!strcmp(name, "__DATE__")) return MAC_DATE; else if (!strcmp(name, "__TIME__")) return MAC_TIME; else if (!strcmp(name, "__STDC__")) return MAC_STDC; return MAC_NONE; } #ifndef UCPP_REENTRANT int c99_compliant = 1; int c99_hosted = 1; #endif /* * add the special macros to the macro table */ static void add_special_macros(pCPP) { struct macro *m; HTT_put(¯os, new_macro(), "__LINE__"); HTT_put(¯os, new_macro(), "__FILE__"); HTT_put(¯os, new_macro(), "__DATE__"); HTT_put(¯os, new_macro(), "__TIME__"); HTT_put(¯os, new_macro(), "__STDC__"); m = new_macro(); m->narg = 1; m->arg = getmem(sizeof(char *)); m->arg[0] = sdup("foo"); HTT_put(¯os, m, "_Pragma"); if (c99_compliant) { #ifndef LOW_MEM struct token t; #endif m = new_macro(); #ifdef LOW_MEM m->cval.t = getmem(9); m->cval.t[0] = NUMBER; mmv(m->cval.t + 1, "199901L", 8); m->cval.length = 9; #else t.type = NUMBER; t.line = 0; t.name = sdup("199901L"); aol(m->val.t, m->val.nt, t, TOKEN_LIST_MEMG); #endif HTT_put(¯os, m, "__STDC_VERSION__"); } if (c99_hosted) { #ifndef LOW_MEM struct token t; #endif m = new_macro(); #ifdef LOW_MEM m->cval.t = getmem(3); m->cval.t[0] = NUMBER; mmv(m->cval.t + 1, "1", 2); m->cval.length = 3; #else t.type = NUMBER; t.line = 0; t.name = sdup("1"); aol(m->val.t, m->val.nt, t, TOKEN_LIST_MEMG); #endif HTT_put(¯os, m, "__STDC_HOSTED__"); } } #ifdef LOW_MEM /* * We store macro arguments as a single-byte token MACROARG, followed * by the argument number as a one or two-byte value. If the argument * number is between 0 and 127 (inclusive), it is stored as such in * a single byte. Otherwise, it is supposed to be a 14-bit number, with * the 7 upper bits stored in the first byte (with the high bit set to 1) * and the 7 lower bits in the second byte. */ #endif static inline size_t stradd(char **buf, const char *str) { if (*buf) { char *end = *buf; size_t len; while (*str) *end++ = *str++; len = end - *buf; *buf = end; return len; } return strlen(str); } /* * assemble macro definition string */ static size_t get_macro_def(const struct macro *m, char *buffer) { size_t len = 0U, i; char **b = &buffer; char *mname = HASH_ITEM_NAME(m); len += stradd(b, mname); if (m->narg >= 0) { len += stradd(b, "("); for (i = 0; i < (size_t)(m->narg); i ++) { if (i) len += stradd(b, ", "); len += stradd(b, m->arg[i]); } if (m->vaarg) { len += stradd(b, m->narg ? ", ..." : "..."); } len += stradd(b, ")"); } #ifdef LOW_MEM if (m->cval.length) len += stradd(b, " "); for (i = 0; i < m->cval.length;) { int tt = m->cval.t[i ++]; if (tt == MACROARG) { unsigned anum = m->cval.t[i]; if (anum >= 128) anum = ((anum & 127U) << 8) | m->cval.t[++ i]; if (anum == (unsigned)m->narg) len += stradd(b, "__VA_ARGS__"); else len += stradd(b, m->arg[anum]); i ++; } else if (S_TOKEN(tt)) { size_t l = stradd(b, (char *)(m->cval.t + i)); len += l; i += 1 + l; } else len += stradd(b, operators_name[tt]); } #else if (m->val.nt) len += stradd(b, " "); for (i = 0; i < m->val.nt; i ++) { if (m->val.t[i].type == MACROARG) { if (m->val.t[i].line == m->narg) len += stradd(b, "__VA_ARGS__"); else len += stradd(b, m->arg[(size_t)(m->val.t[i].line)]); } else len += stradd(b, token_name(m->val.t + i)); } #endif if (buffer) *buffer = '\0'; return len; } /* * print the content of a macro, in #define form */ #ifdef UCPP_REENTRANT static void print_macro(void *re, void *vm) #else static void print_macro(void *vm) #endif { struct macro *m = vm; #ifdef UCPP_REENTRANT struct CPP *REENTR = re; #endif char *mname = HASH_ITEM_NAME(m); char *def; size_t len; int x = check_special_macro(aCPP_ mname); if (x != MAC_NONE) { fprintf(emit_output, "/* #define %s */ /* special */\n", mname); return; } len = get_macro_def(m, 0); def = getmem(len + 1); if (get_macro_def(m, def) != len) ouch(aCPP_ "length mismatch in print_macro()"); fprintf(emit_output, "#define %s\n", def); freemem(def); } struct macro_iter_arg { #ifdef UCPP_REENTRANT struct CPP *re; #endif unsigned long flags; void (*func)(const struct macro_info *); struct macro_info info; }; static void macro_iter(void *arg, void *mac) { struct macro_iter_arg *a = arg; #ifdef UCPP_REENTRANT struct CPP *REENTR = a->re; #endif struct macro *m = mac; char *mname = HASH_ITEM_NAME(m); int x = check_special_macro(aCPP_ mname); struct macro_info *i = &a->info; if (x != MAC_NONE) return; i->name = mname; if (a->flags & MI_WITH_DEFINITION) { size_t len = get_macro_def(m, 0); i->definition_len = len; if (len < 128) { char def[128]; (void) get_macro_def(m, def); i->definition = def; a->func(i); } else { char *def = getmem(len + 1); (void) get_macro_def(m, def); i->definition = def; a->func(i); freemem(def); } } else a->func(i); } /* * Send a token to the output (a token_fifo in lexer mode, the output * buffer in stand alone mode). */ void print_token(pCPP_ struct lexer_state *ls, struct token *t, long uz_line) { char *x = t->name; if (uz_line && t->line < 0) t->line = uz_line; if (ls->flags & LEXER) { struct token at; at = *t; if (S_TOKEN(t->type)) { at.name = sdup(at.name); throw_away(ls->gf, at.name); } aol(ls->output_fifo->t, ls->output_fifo->nt, at, TOKEN_LIST_MEMG); return; } if (ls->flags & KEEP_OUTPUT) { for (; ls->oline < ls->line;) put_char(aCPP_ ls, '\n'); } if (!S_TOKEN(t->type)) x = operators_name[t->type]; for (; *x; x ++) put_char(aCPP_ ls, *x); } /* * Send a token to the output at a given line (this is for text output * and unreplaced macros due to lack of arguments). */ static void print_token_nailed(pCPP_ struct lexer_state *ls, struct token *t, long nail_line) { char *x = t->name; if (ls->flags & LEXER) { print_token(aCPP_ ls, t, 0); return; } if (ls->flags & KEEP_OUTPUT) { for (; ls->oline < nail_line;) put_char(aCPP_ ls, '\n'); } if (!S_TOKEN(t->type)) x = operators_name[t->type]; for (; *x; x ++) put_char(aCPP_ ls, *x); } /* * send a reduced whitespace token to the output */ #define print_space(ls) do { \ struct token lt; \ lt.type = OPT_NONE; \ lt.line = (ls)->line; \ print_token(aCPP_ (ls), <, 0); \ } while (0) /* * We found a #define directive; parse the end of the line, perform * sanity checks, store the new macro into the "macros" hash table. * * In case of a redefinition of a macro: we enforce the rule that a * macro should be redefined identically, including the spelling of * parameters. We emit an error on offending code; dura lex, sed lex. * After all, it is easy to avoid such problems, with a #undef directive. */ int handle_define(pCPP_ struct lexer_state *ls) { struct macro *m = 0, *n; #ifdef LOW_MEM struct token_fifo mv; #endif int ltwws = 1, redef = 0; char *mname = 0; int narg; size_t nt; long l = ls->line; #ifdef LOW_MEM mv.art = mv.nt = 0; #endif /* find the next non-white token on the line, this should be the macro name */ while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) mname = sdup(ls->ctok->name); break; } if (mname == 0) { error(aCPP_ l, "missing macro name"); return 1; } if (check_special_macro(aCPP_ mname)) { error(aCPP_ l, "trying to redefine the special macro %s", mname); goto warp_error; } /* * If a macro with this name was already defined: the K&R * states that the new macro should be identical to the old one * (with some arcane rule of equivalence of whitespace); otherwise, * redefining the macro is an error. Most preprocessors would * only emit a warning (or nothing at all) on an unidentical * redefinition. * * Since it is easy to avoid this error (with a #undef directive), * we choose to enforce the rule and emit an error. */ if ((n = HTT_get(¯os, mname)) != 0) { /* redefinition of a macro: we must check that we define it identical */ redef = 1; #ifdef LOW_MEM n->cval.rp = 0; #endif freemem(mname); mname = 0; } if (!redef) { m = new_macro(); m->narg = -1; #ifdef LOW_MEM #define mval mv #else #define mval (m->val) #endif } if (next_token(aCPP_ ls)) goto define_end; /* * Check if the token immediately following the macro name is * a left parenthesis; if so, then this is a macro with arguments. * Collect their names and try to match the next parenthesis. */ if (ls->ctok->type == LPAR) { int i, j; int need_comma = 0, saw_mdots = 0; narg = 0; while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) { error(aCPP_ l, "truncated macro definition"); goto define_error; } if (ls->ctok->type == COMMA) { if (saw_mdots) { error(aCPP_ l, "'...' must end the macro " "argument list"); goto warp_error; } if (!need_comma) { error(aCPP_ l, "void macro argument"); goto warp_error; } need_comma = 0; continue; } else if (ls->ctok->type == NAME) { if (saw_mdots) { error(aCPP_ l, "'...' must end the macro " "argument list"); goto warp_error; } if (need_comma) { error(aCPP_ l, "missing comma in " "macro argument list"); goto warp_error; } if (!redef) { aol(m->arg, narg, sdup(ls->ctok->name), MACRO_ARG_MEMG); /* we must keep track of m->narg so that cleanup in case of error works. */ m->narg = narg; if (narg == 128 && (ls->flags & WARN_STANDARD)) warning(aCPP_ l, "more arguments to " "macro than the ISO " "limit (127)"); #ifdef LOW_MEM if (narg == 32767) { error(aCPP_ l, "too many arguments " "in macro definition " "(max 32766)"); goto warp_error; } #endif } else { /* this is a redefinition of the macro; check equality between old and new definitions */ if (narg >= n->narg) goto redef_error; if (strcmp(ls->ctok->name, n->arg[narg ++])) goto redef_error; } need_comma = 1; continue; } else if ((ls->flags & MACRO_VAARG) && ls->ctok->type == MDOTS) { if (need_comma) { error(aCPP_ l, "missing comma before '...'"); goto warp_error; } if (redef && !n->vaarg) goto redef_error; if (!redef) m->vaarg = 1; saw_mdots = 1; need_comma = 1; continue; } else if (ls->ctok->type == RPAR) { if (narg > 0 && !need_comma) { error(aCPP_ l, "void macro argument"); goto warp_error; } if (redef && n->vaarg && !saw_mdots) goto redef_error; break; } else if (ttMWS(ls->ctok->type)) { continue; } error(aCPP_ l, "invalid macro argument"); goto warp_error; } if (!redef) { for (i = 1; i < narg; i ++) for (j = 0; j < i; j ++) if (!strcmp(m->arg[i], m->arg[j])) { error(aCPP_ l, "duplicate macro " "argument"); goto warp_error; } } if (!redef) m->narg = narg; } else { if (!ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) warning(aCPP_ ls->line, "identifier not followed by " "whitespace in #define"); ls->flags |= READ_AGAIN; narg = 0; } if (redef) nt = 0; /* now, we have the arguments. Let's get the macro contents. */ while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { struct token t; t.type = ls->ctok->type; if (ltwws && ttMWS(t.type)) continue; t.line = 0; if (t.type == NAME) { int i; if ((ls->flags & MACRO_VAARG) && !strcmp(ls->ctok->name, "__VA_ARGS__")) { if (redef) { if (!n->vaarg) goto redef_error; } else if (!m->vaarg) { error(aCPP_ l, "'__VA_ARGS__' is forbidden " "in macros with a fixed " "number of arguments"); goto warp_error; } t.type = MACROARG; t.line = redef ? n->narg : m->narg; } for (i = 0; i < narg; i ++) if (!strcmp(redef ? n->arg[i] : m->arg[i], ls->ctok->name)) { t.type = MACROARG; /* this is a hack: we store the argument number in the line field */ t.line = i; break; } } if (!redef && S_TOKEN(t.type)) t.name = sdup(ls->ctok->name); if (ttMWS(t.type)) { if (ltwws) continue; #ifdef SEMPER_FIDELIS t.type = OPT_NONE; #else t.type = NONE; #endif ltwws = 1; } else ltwws = 0; if (!redef) { /* we ensure that each macro token has a correct line number */ if (t.type != MACROARG) t.line = 1; aol(mval.t, mval.nt, t, TOKEN_LIST_MEMG); } else { #ifdef LOW_MEM int tt; if (n->cval.rp >= n->cval.length) { #ifdef SEMPER_FIDELIS if (t.type != OPT_NONE) goto redef_error; #else if (t.type != NONE) goto redef_error; #endif } else { if (t.type != n->cval.t[n->cval.rp]) { goto redef_error; } else if (t.type == MACROARG) { unsigned anum = n->cval.t[n->cval.rp + 1]; if (anum >= 128U) anum = ((anum & 127U) << 8) | m->cval.t[n->cval.rp + 2]; if (anum != (unsigned)t.line) goto redef_error; } else if (S_TOKEN(t.type) && strcmp(ls->ctok->name, (char *)(n->cval.t + n->cval.rp + 1))) { goto redef_error; } tt = n->cval.t[n->cval.rp ++]; if (S_TOKEN(tt)) n->cval.rp += 1 + strlen((char *)(n->cval.t + n->cval.rp)); else if (tt == MACROARG) { if (n->cval.t[++ n->cval.rp] >= 128) n->cval.rp ++; } } #else if (nt >= n->val.nt) { #ifdef SEMPER_FIDELIS if (t.type != OPT_NONE) goto redef_error; #else if (t.type != NONE) goto redef_error; #endif } else if (t.type != n->val.t[nt].type || (t.type == MACROARG && t.line != n->val.t[nt].line) || (S_TOKEN(t.type) && strcmp(ls->ctok->name, n->val.t[nt].name))) { goto redef_error; } #endif nt ++; } } if (redef) { #ifdef LOW_MEM if (n->cval.rp < n->cval.length) goto redef_error_2; #else if (nt < n->val.nt) goto redef_error_2; #endif return 0; } /* now we have the complete macro; perform some checks about the operators # and ##, and, if everything is ok, store the macro into the hash table */ define_end: #ifdef SEMPER_FIDELIS if (mval.nt && mval.t[mval.nt - 1].type == OPT_NONE) { #else if (mval.nt && mval.t[mval.nt - 1].type == NONE) { #endif mval.nt --; if (mval.nt == 0) freemem(mval.t); } if (mval.nt != 0) { size_t i; /* some checks about the macro */ if (mval.t[0].type == DSHARP || mval.t[0].type == DIG_DSHARP || mval.t[mval.nt - 1].type == DSHARP || mval.t[mval.nt - 1].type == DIG_DSHARP) { error(aCPP_ l, "operator '##' may neither begin " "nor end a macro"); goto define_error; } if (m->narg >= 0) for (i = 0; i < mval.nt; i ++) if ((mval.t[i].type == SHARP || mval.t[i].type == DIG_SHARP) && (i == (mval.nt - 1) || (ttMWS(mval.t[i + 1].type) && (i == mval.nt - 2 || mval.t[i + 2].type != MACROARG)) || (!ttMWS(mval.t[i + 1].type) && mval.t[i + 1].type != MACROARG))) { error(aCPP_ l, "operator '#' not followed " "by a macro argument"); goto define_error; } } #ifdef LOW_MEM { size_t i, l; for (i = 0, l = 0; i < mval.nt; i ++) { l ++; if (S_TOKEN(mval.t[i].type)) l += 1 + strlen(mval.t[i].name); else if (mval.t[i].type == MACROARG) { l ++; if (mval.t[i].line >= 128) l ++; } } m->cval.length = l; if (l) m->cval.t = getmem(l); for (i = 0, l = 0; i < mval.nt; i ++) { m->cval.t[l ++] = mval.t[i].type; if (S_TOKEN(mval.t[i].type)) { size_t x = 1 + strlen(mval.t[i].name); mmv(m->cval.t + l, mval.t[i].name, x); l += x; freemem(mval.t[i].name); } else if (mval.t[i].type == MACROARG) { unsigned anum = mval.t[i].line; if (anum >= 128) { m->cval.t[l ++] = 128 | (anum >> 8); m->cval.t[l ++] = anum & 0xFF; } else { m->cval.t[l ++] = anum; } } } if (mval.nt) freemem(mval.t); } #endif HTT_put(¯os, m, mname); freemem(mname); if (emit_defines) print_macro(aCPP_ m); return 0; redef_error: while (ls->ctok->type != NEWLINE && !next_token(aCPP_ ls)); redef_error_2: error(aCPP_ l, "macro '%s' redefined unidentically", HASH_ITEM_NAME(n)); return 1; warp_error: while (ls->ctok->type != NEWLINE && !next_token(aCPP_ ls)); define_error: if (m) del_macro(m); if (mname) freemem(mname); #ifdef LOW_MEM if (mv.nt) { size_t i; for (i = 0; i < mv.nt; i ++) if (S_TOKEN(mv.t[i].type)) freemem(mv.t[i].name); freemem(mv.t); } #endif return 1; #undef mval } /* * Get the arguments for a macro. This code is tricky because there can * be multiple sources for these arguments, if we are in the middle of * a macro replacement; arguments are macro-replaced before inclusion * into the macro replacement. * * return value: * 1 no argument (last token read from next_token()) * 2 no argument (last token read from tfi) * 3 no argument (nothing read) * 4 error * * Void arguments are allowed in C99. */ static int collect_arguments(pCPP_ struct lexer_state *ls, struct token_fifo *tfi, int penury, struct token_fifo *atl, int narg, int vaarg, int *wr) { int ltwws = 1, npar = 0, i; struct token *ct = 0; int read_from_fifo = 0; long begin_line = ls->line; #define unravel(ls) (read_from_fifo = 0, !((tfi && tfi->art < tfi->nt \ && (read_from_fifo = 1) != 0 && (ct = tfi->t + (tfi->art ++))) \ || ((!tfi || penury) && !next_token(aCPP_ ls) && (ct = (ls)->ctok)))) /* * collect_arguments() is assumed to setup correctly atl * (this is not elegant, but it works) */ for (i = 0; i < narg; i ++) atl[i].art = atl[i].nt = 0; if (vaarg) atl[narg].art = atl[narg].nt = 0; *wr = 0; while (!unravel(ls)) { if (!read_from_fifo && ct->type == NEWLINE) ls->ltwnl = 1; if (ttWHI(ct->type)) { *wr = 1; continue; } if (ct->type == LPAR) { npar = 1; } break; } if (!npar) { if (ct == ls->ctok) return 1; if (read_from_fifo) return 2; return 3; } if (!read_from_fifo && ct == ls->ctok) ls->ltwnl = 0; i = 0; if ((narg + vaarg) == 0) { while(!unravel(ls)) { if (ttWHI(ct->type)) continue; if (ct->type == RPAR) goto harvested; npar = 1; goto too_many_args; } } while (!unravel(ls)) { struct token t; if (ct->type == LPAR) npar ++; else if (ct->type == RPAR && (-- npar) == 0) { if (atl[i].nt != 0 && ttMWS(atl[i].t[atl[i].nt - 1].type)) atl[i].nt --; i ++; /* * C99 standard states that at least one argument * should be present for the ... part; to relax * this behaviour, change 'narg + vaarg' to 'narg'. */ if (i < (narg + vaarg)) { error(aCPP_ begin_line, "not enough arguments " "to macro"); return 4; } if (i > narg) { if (!(ls->flags & MACRO_VAARG) || !vaarg) goto too_many_args; } goto harvested; } else if (ct->type == COMMA && npar <= 1 && i < narg) { if (atl[i].nt != 0 && ttMWS(atl[i].t[atl[i].nt - 1].type)) atl[i].nt --; if (++ i == narg) { if (!(ls->flags & MACRO_VAARG) || !vaarg) goto too_many_args; } if (i > 30000) goto too_many_args; ltwws = 1; continue; } else if (ltwws && ttWHI(ct->type)) continue; t.type = ct->type; if (!read_from_fifo) t.line = ls->line; else t.line = ct->line; /* * Stringification applies only to macro arguments; * so we handle here OPT_NONE. * OPT_NONE is kept, but does not count as whitespace, * and merges with other whitespace to give a fully * qualified NONE token. Two OPT_NONE tokens merge. * Initial and final OPT_NONE are discarded (initial * is already done, as OPT_NONE is matched by ttWHI). */ if (ttWHI(t.type)) { if (t.type != OPT_NONE) { t.type = NONE; #ifdef SEMPER_FIDELIS t.name = sdup(" "); throw_away(ls->gf, t.name); #endif ltwws = 1; } if (atl[i].nt > 0 && atl[i].t[atl[i].nt - 1].type == OPT_NONE) atl[i].nt --; } else { ltwws = 0; if (S_TOKEN(t.type)) { t.name = ct->name; if (ct == (ls)->ctok) { t.name = sdup(t.name); throw_away(ls->gf, t.name); } } } aol(atl[i].t, atl[i].nt, t, TOKEN_LIST_MEMG); } error(aCPP_ begin_line, "unfinished macro call"); return 4; too_many_args: error(aCPP_ begin_line, "too many arguments to macro"); while (npar && !unravel(ls)) { if (ct->type == LPAR) npar ++; else if (ct->type == RPAR) npar --; } return 4; harvested: if (i > 127 && (ls->flags & WARN_STANDARD)) warning(aCPP_ begin_line, "macro call with %d arguments (ISO " "specifies 127 max)", i); return 0; #undef unravel } /* * concat_token() is called when the ## operator is used. It uses * the struct lexer_state dsharp_lexer to parse the result of the * concatenation. * * Law enforcement: if the whole string does not produce a valid * single token, an error (non-zero result) is returned. */ #ifndef UCPP_REENTRANT struct lexer_state dsharp_lexer; #endif static inline int concat_token(pCPP_ struct token *t1, struct token *t2) { char *n1 = token_name(t1), *n2 = token_name(t2); size_t l1 = strlen(n1), l2 = strlen(n2); unsigned char *x = getmem(l1 + l2 + 1); int r; mmv(x, n1, l1); mmv(x + l1, n2, l2); x[l1 + l2] = 0; dsharp_lexer.input = 0; dsharp_lexer.input_string = x; dsharp_lexer.pbuf = 0; dsharp_lexer.ebuf = l1 + l2; dsharp_lexer.discard = 1; dsharp_lexer.flags = DEFAULT_LEXER_FLAGS; dsharp_lexer.pending_token = 0; r = next_token(aCPP_ &dsharp_lexer); freemem(x); return (r == 1 || dsharp_lexer.pbuf < (l1 + l2) || dsharp_lexer.pending_token || (dsharp_lexer.pbuf == (l1 + l2) && !dsharp_lexer.discard)); } #ifdef PRAGMA_TOKENIZE /* * tokenize_string() takes a string as input, and split it into tokens, * reassembling the tokens into a single compressed string generated by * compress_token_list(); this function is used for _Pragma processing. */ #ifndef UCPP_REENTRANT struct lexer_state tokenize_lexer; #endif static char *tokenize_string(pCPP_ struct lexer_state *ls, char *buf) { struct token_fifo tf; size_t bl = strlen(buf); tokenize_lexer.input = 0; tokenize_lexer.input_string = (unsigned char *)buf; tokenize_lexer.pbuf = 0; tokenize_lexer.ebuf = bl; tokenize_lexer.discard = 1; tokenize_lexer.flags = ls->flags | LEXER; tokenize_lexer.pending_token = 0; tf.art = tf.nt = 0; while (!next_token(aCPP_ &tokenize_lexer)) { struct token t, *ct = tokenize_lexer.ctok; if (ttWHI(ct->type)) continue; t = *ct; if (S_TOKEN(t.type)) t.name = sdup(t.name); aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } if (tokenize_lexer.pbuf < bl) goto tokenize_error; return (char *)((compress_token_list(&tf)).t); tokenize_error: if (tf.nt) { for (tf.art = 0; tf.art < tf.nt; tf.art ++) if (S_TOKEN(tf.t[tf.art].type)) freemem(tf.t[tf.art].name); freemem(tf.t); } return 0; } #endif /* * stringify_string() has a self-explanatory name. It is called when * the # operator is used in a macro and a string constant must be * stringified. */ static inline char *stringify_string(char *x) { size_t l; int i, inside_str = 0, inside_cc = 0, must_quote, has_quoted = 0; char *y, *d; for (i = 0; i < 2; i ++) { if (i) d[0] = '"'; for (l = 1, y = x; *y; y ++, l ++) { must_quote = 0; if (inside_cc) { if (*y == '\\') { must_quote = 1; has_quoted = 1; } else if (!has_quoted && *y == '\'') inside_cc = 0; } else if (inside_str) { if (*y == '"' || *y == '\\') must_quote = 1; if (*y == '\\') has_quoted = 1; else if (!has_quoted && *y == '"') inside_str = 0; } else if (*y == '"') { inside_str = 1; must_quote = 1; } else if (*y == '\'') { inside_cc = 1; } if (must_quote) { if (i) d[l] = '\\'; l ++; } if (i) d[l] = *y; } if (!i) d = getmem(l + 2); if (i) { d[l] = '"'; d[l + 1] = 0; } } return d; } /* * stringify() produces a constant string, result of the # operator * on a list of tokens. */ static char *stringify(struct token_fifo *tf) { size_t tlen; size_t i; char *x, *y; for (tlen = 0, i = 0; i < tf->nt; i ++) if (tf->t[i].type < CPPERR && tf->t[i].type != OPT_NONE) tlen += strlen(token_name(tf->t + i)); if (tlen == 0) return sdup("\"\""); x = getmem(tlen + 1); for (tlen = 0, i = 0; i < tf->nt; i ++) { if (tf->t[i].type >= CPPERR || tf->t[i].type == OPT_NONE) continue; strcpy(x + tlen, token_name(tf->t + i)); tlen += strlen(token_name(tf->t + i)); } /* no need to add a trailing 0: strcpy() did that (and the string is not empty) */ y = stringify_string(x); freemem(x); return y; } /* * Two strings evaluated at initialization time, to handle the __TIME__ * and __DATE__ special macros. * * C99 specifies that these macros should remain constant throughout * the whole preprocessing. */ #ifndef UCPP_REENTRANT char compile_time[12], compile_date[24]; #endif /* * substitute_macro() performs the macro substitution. It is called when * an identifier recognized as a macro name has been found; this function * tries to collect the arguments (if needed), applies # and ## operators * and perform recursive and nested macro expansions. * * In the substitution of a macro, we remove all newlines that were in the * arguments. This might confuse error reporting (which could report * erroneous line numbers) or have worse effect is the preprocessor is * used for another language pickier than C. Since the interface between * the preprocessor and the compiler is not fully specified, I believe * that this is no violation of the standard. Comments welcome. * * We take tokens from tfi. If tfi has no more tokens to give: we may * take some tokens from ls to complete a call (fetch arguments) if * and only if penury is non zero. */ int substitute_macro(pCPP_ struct lexer_state *ls, struct macro *m, struct token_fifo *tfi, int penury, int reject_nested, long l) { char *mname = HASH_ITEM_NAME(m); struct token_fifo *atl, etl; struct token t, *ct; int i, save_nest = m->nest; size_t save_art, save_tfi, etl_limit; int ltwds, ntwds, ltwws; int pragma_op = 0; /* * Reject the replacement, if we are already inside the macro. */ if (m->nest > reject_nested) { t.type = NAME; t.line = ls->line; t.name = mname; print_token(aCPP_ ls, &t, 0); return 0; } /* * put a separation from preceeding tokens */ print_space(ls); /* * Check if the macro is a special one. */ if ((i = check_special_macro(aCPP_ mname)) >= MAC_SPECIAL) { /* we have a special macro */ switch (i) { char buf[30], *bbuf, *cfn; case MAC_LINE: t.type = NUMBER; t.line = l; sprintf(buf, "%ld", l); t.name = buf; print_space(ls); print_token(aCPP_ ls, &t, 0); break; case MAC_FILE: t.type = STRING; t.line = l; cfn = current_long_filename ? current_long_filename : current_filename; bbuf = getmem(2 * strlen(cfn) + 3); { char *c, *d; int lcwb = 0; bbuf[0] = '"'; for (c = cfn, d = bbuf + 1; *c; c ++) { if (*c == '\\') { if (lcwb) continue; *(d ++) = '\\'; lcwb = 1; } else lcwb = 0; *(d ++) = *c; } *(d ++) = '"'; *(d ++) = 0; } t.name = bbuf; print_space(ls); print_token(aCPP_ ls, &t, 0); freemem(bbuf); break; case MAC_DATE: t.type = STRING; t.line = l; t.name = compile_date; print_space(ls); print_token(aCPP_ ls, &t, 0); break; case MAC_TIME: t.type = STRING; t.line = l; t.name = compile_time; print_space(ls); print_token(aCPP_ ls, &t, 0); break; case MAC_STDC: t.type = NUMBER; t.line = l; t.name = "1"; print_space(ls); print_token(aCPP_ ls, &t, 0); break; case MAC_PRAGMA: if (reject_nested > 0) { /* do not replace _Pragma() unless toplevel */ t.type = NAME; t.line = ls->line; t.name = mname; print_token(aCPP_ ls, &t, 0); return 0; } pragma_op = 1; goto collect_args; #ifdef AUDIT default: ouch(aCPP_ "unbekanntes fliegendes macro"); #endif } return 0; } /* * If the macro has arguments, collect them. */ collect_args: if (m->narg >= 0) { unsigned long save_flags = ls->flags; int wr = 0; ls->flags |= LEXER; if (m->narg > 0 || m->vaarg) atl = getmem((m->narg + m->vaarg) * sizeof(struct token_fifo)); switch (collect_arguments(aCPP_ ls, tfi, penury, atl, m->narg, m->vaarg, &wr)) { case 1: /* the macro expected arguments, but we did not find any; the last read token should be read again. */ ls->flags = save_flags | READ_AGAIN; goto no_argument_next; case 2: tfi->art --; /* fall through */ case 3: ls->flags = save_flags; no_argument_next: t.type = NAME; t.line = l; t.name = mname; print_token_nailed(aCPP_ ls, &t, l); if (wr) { t.type = NONE; t.line = l; #ifdef SEMPER_FIDELIS t.name = " "; #endif print_token(aCPP_ ls, &t, 0); goto exit_macro_2; } goto exit_macro_1; case 4: ls->flags = save_flags; goto exit_error_1; } ls->flags = save_flags; } /* * If the macro is _Pragma, and we got here, then we have * exactly one argument. We check it, unstringize it, and * emit a PRAGMA token. */ if (pragma_op) { char *pn; if (atl[0].nt != 1 || atl[0].t[0].type != STRING) { error(aCPP_ ls->line, "invalid argument to _Pragma"); if (atl[0].nt) freemem(atl[0].t); freemem(atl); goto exit_error; } pn = atl[0].t[0].name; if ((pn[0] == '"' && pn[1] == '"') || (pn[0] == 'L' && pn[1] == '"' && pn[2] == '"')) { /* void pragma -- just ignore it */ freemem(atl[0].t); freemem(atl); return 0; } if (ls->flags & TEXT_OUTPUT) { #ifdef PRAGMA_DUMP /* * This code works because we actually evaluate arguments in a * lazy way: we scan a macro argument only if it appears in the * output, and exactly as many times as it appears. Therefore, * _Pragma() will get evaluated just like they should. */ char *c = atl[0].t[0].name, *d; for (d = "\n#pragma "; *d; d ++) put_char(aCPP_ ls, *d); d = (*c == 'L') ? c + 2 : c + 1; for (; *d != '"'; d ++) { if (*d == '\\' && (*(d + 1) == '\\' || *(d + 1) == '"')) { d ++; } put_char(aCPP_ ls, *d); } put_char(aCPP_ ls, '\n'); ls->oline = ls->line; enter_file(aCPP_ ls, ls->flags); #else if (ls->flags & WARN_PRAGMA) warning(aCPP_ ls->line, "_Pragma() ignored and not dumped"); #endif } else if (ls->flags & HANDLE_PRAGMA) { char *c = atl[0].t[0].name, *d, *buf; struct token t; /* a wide string is a string */ if (*c == 'L') c ++; c ++; for (buf = d = getmem(strlen(c)); *c != '"'; c ++) { if (*c == '\\' && (*(c + 1) == '\\' || *(c + 1) == '"')) { *(d ++) = *(++ c); } else *(d ++) = *c; } *d = 0; t.type = PRAGMA; t.line = ls->line; #ifdef PRAGMA_TOKENIZE t.name = tokenize_string(aCPP_ ls, buf); freemem(buf); buf = t.name; if (!buf) { freemem(atl[0].t); freemem(atl); goto exit_error; } #else t.name = buf; #endif aol(ls->toplevel_of->t, ls->toplevel_of->nt, t, TOKEN_LIST_MEMG); throw_away(ls->gf, buf); } freemem(atl[0].t); freemem(atl); return 0; } /* * Now we expand and replace the arguments in the macro; we * also handle '#' and '##'. If we find an argument, that has * to be replaced, we expand it in its own token list, then paste * it. Tricky point: when we paste an argument, we must scan * again the resulting list for further replacements. This * implies problems with regards to nesting self-referencing * macros. * * We do then YAUH (yet another ugly hack): if a macro is replaced, * and nested replacement exhibit the same macro, we mark it with * a negative line number. All produced negative line numbers * must be cleaned in the end. */ #define ZAP_LINE(t) do { \ if ((t).type == NAME) { \ struct macro *zlm = HTT_get(¯os, (t).name); \ if (zlm && zlm->nest > reject_nested) \ (t).line = -1 - (t).line; \ } \ } while (0) #ifdef LOW_MEM save_art = m->cval.rp; m->cval.rp = 0; #else save_art = m->val.art; m->val.art = 0; #endif etl.art = etl.nt = 0; m->nest = reject_nested + 1; ltwds = ntwds = 0; #ifdef LOW_MEM while (m->cval.rp < m->cval.length) { #else while (m->val.art < m->val.nt) { #endif size_t next, z; #ifdef LOW_MEM struct token uu; ct = &uu; ct->line = 1; t.type = ct->type = m->cval.t[m->cval.rp ++]; if (ct->type == MACROARG) { unsigned anum = m->cval.t[m->cval.rp ++]; if (anum >= 128U) anum = ((anum & 127U) << 8) | (unsigned)m->cval.t[m->cval.rp ++]; ct->line = anum; } else if (S_TOKEN(ct->type)) { t.name = ct->name = (char *)(m->cval.t + m->cval.rp); m->cval.rp += 1 + strlen(ct->name); } #ifdef SEMPER_FIDELIS else if (ct->type == OPT_NONE) { t.type = ct->type = NONE; t.name = ct->name = " "; } #endif t.line = ls->line; next = m->cval.rp; if ((next < m->cval.length && (m->cval.t[z = next] == DSHARP || m->cval.t[z = next] == DIG_DSHARP)) || ((next + 1) < m->cval.length && ttWHI(m->cval.t[next]) && (m->cval.t[z = next + 1] == DSHARP || m->cval.t[z = next + 1] == DIG_DSHARP))) { ntwds = 1; m->cval.rp = z; } else ntwds = 0; #else ct = m->val.t + (m->val.art ++); next = m->val.art; t.type = ct->type; t.line = ls->line; #ifdef SEMPER_FIDELIS if (t.type == OPT_NONE) { t.type = NONE; t.name = " "; } else #endif t.name = ct->name; if ((next < m->val.nt && (m->val.t[z = next].type == DSHARP || m->val.t[z = next].type == DIG_DSHARP)) || ((next + 1) < m->val.nt && ttWHI(m->val.t[next].type) && (m->val.t[z = next + 1].type == DSHARP || m->val.t[z = next + 1].type == DIG_DSHARP))) { ntwds = 1; m->val.art = z; } else ntwds = 0; #endif if (ct->type == MACROARG) { #ifdef DSHARP_TOKEN_MERGE int need_opt_space = 1; #endif z = ct->line; /* the argument number is there */ if (ltwds && atl[z].nt != 0 && etl.nt) { if (concat_token(aCPP_ etl.t + (-- etl.nt), atl[z].t)) { warning(aCPP_ ls->line, "operator '##' " "produced the invalid token " "'%s%s'", token_name(etl.t + etl.nt), token_name(atl[z].t)); #if 0 /* obsolete */ #ifdef LOW_MEM m->cval.rp = save_art; #else m->val.art = save_art; #endif etl.nt ++; goto exit_error_2; #endif etl.nt ++; atl[z].art = 0; #ifdef DSHARP_TOKEN_MERGE need_opt_space = 0; #endif } else { if (etl.nt == 0) freemem(etl.t); else if (!ttWHI(etl.t[etl.nt - 1] .type)) { t.type = OPT_NONE; t.line = ls->line; aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } t.type = dsharp_lexer.ctok->type; t.line = ls->line; if (S_TOKEN(t.type)) { t.name = sdup(dsharp_lexer .ctok->name); throw_away(ls->gf, t.name); } ZAP_LINE(t); aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); atl[z].art = 1; } } else atl[z].art = 0; if ( #ifdef DSHARP_TOKEN_MERGE need_opt_space && #endif atl[z].art < atl[z].nt && (!etl.nt || !ttWHI(etl.t[etl.nt - 1].type))) { t.type = OPT_NONE; t.line = ls->line; aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } if (ltwds || ntwds) { while (atl[z].art < atl[z].nt) { t = atl[z].t[atl[z].art ++]; t.line = ls->line; ZAP_LINE(t); aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } } else { struct token_fifo *save_tf; unsigned long save_flags; int ret = 0; atl[z].art = 0; save_tf = ls->output_fifo; ls->output_fifo = &etl; save_flags = ls->flags; ls->flags |= LEXER; while (atl[z].art < atl[z].nt) { struct macro *nm; struct token *cct; cct = atl[z].t + (atl[z].art ++); if (cct->type == NAME && cct->line >= 0 && (nm = HTT_get(¯os, cct->name)) && nm->nest <= (reject_nested + 1)) { ret |= substitute_macro(aCPP_ ls, nm, atl + z, 0, reject_nested + 1, l); continue; } t = *cct; ZAP_LINE(t); aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } ls->output_fifo = save_tf; ls->flags = save_flags; if (ret) { #ifdef LOW_MEM m->cval.rp = save_art; #else m->val.art = save_art; #endif goto exit_error_2; } } if (!ntwds && (!etl.nt || !ttWHI(etl.t[etl.nt - 1].type))) { t.type = OPT_NONE; t.line = ls->line; aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } ltwds = 0; continue; } /* * This code is definitely cursed. * * For the extremely brave reader who tries to understand * what is happening: ltwds is a flag meaning "last token * was double-sharp" and ntwds means "next token will be * double-sharp". The tokens are from the macro definition, * and scanned from left to right. Arguments that are * not implied into a #/## construction are macro-expanded * seperately, then included into the token stream. */ if (ct->type == DSHARP || ct->type == DIG_DSHARP) { if (ltwds) { error(aCPP_ ls->line, "quad sharp"); #ifdef LOW_MEM m->cval.rp = save_art; #else m->val.art = save_art; #endif goto exit_error_2; } #ifdef LOW_MEM if (m->cval.rp < m->cval.length && ttMWS(m->cval.t[m->cval.rp])) m->cval.rp ++; #else if (m->val.art < m->val.nt && ttMWS(m->val.t[m->val.art].type)) m->val.art ++; #endif ltwds = 1; continue; } else if (ltwds && etl.nt != 0) { if (concat_token(aCPP_ etl.t + (-- etl.nt), ct)) { warning(aCPP_ ls->line, "operator '##' produced " "the invalid token '%s%s'", token_name(etl.t + etl.nt), token_name(ct)); #if 0 /* obsolete */ #ifdef LOW_MEM m->cval.rp = save_art; #else m->val.art = save_art; #endif etl.nt ++; goto exit_error_2; #endif etl.nt ++; } else { if (etl.nt == 0) freemem(etl.t); t.type = dsharp_lexer.ctok->type; t.line = ls->line; if (S_TOKEN(t.type)) { t.name = sdup(dsharp_lexer.ctok->name); throw_away(ls->gf, t.name); } ct = &t; } } ltwds = 0; #ifdef LOW_MEM if ((ct->type == SHARP || ct->type == DIG_SHARP) && next < m->cval.length && (m->cval.t[next] == MACROARG || (ttMWS(m->cval.t[next]) && (next + 1) < m->cval.length && m->cval.t[next + 1] == MACROARG))) { unsigned anum; #else if ((ct->type == SHARP || ct->type == DIG_SHARP) && next < m->val.nt && (m->val.t[next].type == MACROARG || (ttMWS(m->val.t[next].type) && (next + 1) < m->val.nt && m->val.t[next + 1].type == MACROARG))) { #endif /* * We have a # operator followed by (an optional * whitespace and) a macro argument; this means * stringification. So be it. */ #ifdef LOW_MEM if (ttMWS(m->cval.t[next])) m->cval.rp ++; #else if (ttMWS(m->val.t[next].type)) m->val.art ++; #endif t.type = STRING; #ifdef LOW_MEM anum = m->cval.t[++ m->cval.rp]; if (anum >= 128U) anum = ((anum & 127U) << 8) | (unsigned)m->cval.t[++ m->cval.rp]; t.name = stringify(atl + anum); m->cval.rp ++; #else t.name = stringify(atl + (size_t)(m->val.t[m->val.art ++].line)); #endif throw_away(ls->gf, t.name); ct = &t; /* * There is no need for extra spaces here. */ } t = *ct; ZAP_LINE(t); aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } #ifdef LOW_MEM m->cval.rp = save_art; #else m->val.art = save_art; #endif /* * Now etl contains the expanded macro, to be parsed again for * further expansions -- much easier, since '#' and '##' have * already been handled. * However, we might need some input from tfi. So, we paste * the contents of tfi after etl, and we put back what was * not used. * * Some adjacent spaces are merged; only unique NONE, or sequences * OPT_NONE NONE are emitted. */ etl_limit = etl.nt; if (tfi) { save_tfi = tfi->art; while (tfi->art < tfi->nt) aol(etl.t, etl.nt, tfi->t[tfi->art ++], TOKEN_LIST_MEMG); } ltwws = 0; while (etl.art < etl_limit) { struct macro *nm; ct = etl.t + (etl.art ++); if (ct->type == NAME && ct->line >= 0 && (nm = HTT_get(¯os, ct->name))) { if (substitute_macro(aCPP_ ls, nm, &etl, penury, reject_nested, l)) { m->nest = save_nest; goto exit_error_2; } ltwws = 0; continue; } if (ttMWS(ct->type)) { if (ltwws == 1) { if (ct->type == OPT_NONE) continue; ltwws = 2; } else if (ltwws == 2) continue; else if (ct->type == OPT_NONE) ltwws = 1; else ltwws = 2; } else ltwws = 0; if (ct->line >= 0) ct->line = l; print_token(aCPP_ ls, ct, reject_nested ? 0 : l); } if (etl.nt) freemem(etl.t); if (tfi) { tfi->art = save_tfi + (etl.art - etl_limit); } exit_macro_1: print_space(ls); exit_macro_2: for (i = 0; i < (m->narg + m->vaarg); i ++) if (atl[i].nt) freemem(atl[i].t); if (m->narg > 0 || m->vaarg) freemem(atl); m->nest = save_nest; return 0; exit_error_2: if (etl.nt) freemem(etl.t); exit_error_1: for (i = 0; i < (m->narg + m->vaarg); i ++) if (atl[i].nt) freemem(atl[i].t); if (m->narg > 0 || m->vaarg) freemem(atl); m->nest = save_nest; exit_error: return 1; } /* * print already defined macros */ void print_defines(pCPP) { #ifdef UCPP_REENTRANT HTT_scan_arg(¯os, print_macro, aCPP); #else HTT_scan(¯os, print_macro); #endif } /* * find out if a macro is defined */ int is_macro_defined(pCPP_ const char *name) { return HTT_get(¯os, name) != NULL; } /* * get definition for a macro */ char *get_macro_definition(pCPP_ const char *name, size_t *plen) { struct macro *m = HTT_get(¯os, name); if (m) { size_t len = get_macro_def(m, 0); char *def = getmem(len + 1); (void) get_macro_def(m, def); if (plen) *plen = len; return def; } return NULL; } /* * free macro definition returned by get_macro_definition() */ void free_macro_definition(char *def) { if (def) freemem(def); } /* * iterate through all macros */ void iterate_macros(pCPP_ void (*func)(const struct macro_info *), void *arg, unsigned long flags) { struct macro_iter_arg a; #ifdef UCPP_REENTRANT a.re = aCPP; #endif a.flags = flags; a.func = func; a.info.arg = arg; HTT_scan_arg(¯os, macro_iter, &a); } /* * define_macro() defines a new macro, whom definition is given in * the command-line syntax: macro=def * The '=def' part is optional. * * It returns non-zero on error. */ int define_macro(pCPP_ struct lexer_state *ls, char *def) { char *c = sdup(def), *d; int with_def = 0; int ret = 0; for (d = c; *d && *d != '='; d ++); if (*d) { *d = ' '; with_def = 1; } if (with_def) { struct lexer_state lls; size_t n = strlen(c) + 1; if (c == d) { error(aCPP_ -1, "void macro name"); ret = 1; } else { *(c + n - 1) = '\n'; init_buf_lexer_state(&lls, 0); lls.flags = ls->flags | LEXER; lls.input = 0; lls.input_string = (unsigned char *)c; lls.pbuf = 0; lls.ebuf = n; lls.line = -1; ret = handle_define(aCPP_ &lls); free_lexer_state(&lls); } } else { struct macro *m; if (!*c) { error(aCPP_ -1, "void macro name"); ret = 1; } else if ((m = HTT_get(¯os, c)) #ifdef LOW_MEM && (m->cval.length != 3 || m->cval.t[0] != NUMBER || strcmp((char *)(m->cval.t + 1), "1"))) { #else && (m->val.nt != 1 || m->val.t[0].type != NUMBER || strcmp(m->val.t[0].name, "1"))) { #endif error(aCPP_ -1, "macro %s already defined", c); ret = 1; } else { #ifndef LOW_MEM struct token t; #endif m = new_macro(); #ifdef LOW_MEM m->cval.length = 3; m->cval.t = getmem(3); m->cval.t[0] = NUMBER; m->cval.t[1] = '1'; m->cval.t[2] = 0; #else t.type = NUMBER; t.name = sdup("1"); aol(m->val.t, m->val.nt, t, TOKEN_LIST_MEMG); #endif HTT_put(¯os, m, c); } } freemem(c); return ret; } /* * undef_macro() undefines the macro whom name is given as "def"; * it is not an error to try to undef a macro that does not exist. * * It returns non-zero on error (undefinition of a special macro, * void macro name). */ int undef_macro(pCPP_ struct lexer_state *ls, char *def) { char *c = def; (void) ls; /* stop compiler from complaining about unused parameter */ if (!*c) { error(aCPP_ -1, "void macro name"); return 1; } if (HTT_get(¯os, c)) { if (check_special_macro(aCPP_ c)) { error(aCPP_ -1, "trying to undef special macro %s", c); return 1; } else HTT_del(¯os, c); } return 0; } /* * We saw a #ifdef directive. Parse the line. * return value: 1 if the macro is defined, 0 if it is not, -1 on error */ int handle_ifdef(pCPP_ struct lexer_state *ls) { while (!next_token(aCPP_ ls)) { int tgd = 1; if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) { int x = (HTT_get(¯os, ls->ctok->name) != 0); while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ ls->line, "trailing garbage " "in #ifdef"); tgd = 0; } return x; } error(aCPP_ ls->line, "illegal macro name for #ifdef"); while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ ls->line, "trailing garbage in " "#ifdef"); tgd = 0; } return -1; } error(aCPP_ ls->line, "unfinished #ifdef"); return -1; } /* * for #undef * return value: 1 on error, 0 on success. Undefining a macro that was * already not defined is not an error. */ int handle_undef(pCPP_ struct lexer_state *ls) { while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) { struct macro *m = HTT_get(¯os, ls->ctok->name); int tgd = 1; if (m != 0) { if (check_special_macro(aCPP_ ls->ctok->name)) { error(aCPP_ ls->line, "trying to undef " "special macro %s", ls->ctok->name); goto undef_error; } if (emit_defines) fprintf(emit_output, "#undef %s\n", ls->ctok->name); HTT_del(¯os, ls->ctok->name); } while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ ls->line, "trailing garbage " "in #undef"); tgd = 0; } return 0; } error(aCPP_ ls->line, "illegal macro name for #undef"); undef_error: while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE); return 1; } error(aCPP_ ls->line, "unfinished #undef"); return 1; } /* * for #ifndef * return value: 0 if the macro is defined, 1 if it is not, -1 on error. */ int handle_ifndef(pCPP_ struct lexer_state *ls) { while (!next_token(aCPP_ ls)) { int tgd = 1; if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) { int x = (HTT_get(¯os, ls->ctok->name) == 0); while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ ls->line, "trailing garbage " "in #ifndef"); tgd = 0; } if (protect_detect.state == 1) { protect_detect.state = 2; protect_detect.macro = sdup(ls->ctok->name); } return x; } error(aCPP_ ls->line, "illegal macro name for #ifndef"); while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ ls->line, "trailing garbage in " "#ifndef"); tgd = 0; } return -1; } error(aCPP_ ls->line, "unfinished #ifndef"); return -1; } /* * erase the macro table. */ void wipe_macros(pCPP) { if (macros_init_done) HTT_kill(¯os); macros_init_done = 0; } /* * initialize the macro table */ void init_macros(pCPP) { wipe_macros(aCPP); HTT_init(¯os, del_macro _aCLONE(clone_macro)); macros_init_done = 1; if (!no_special_macros) add_special_macros(aCPP); } /* * find a macro from its name */ struct macro *get_macro(pCPP_ char *name) { return HTT_get(¯os, name); } Convert-Binary-C-0.85/ucpp/sample_r.c0000644000175000001440000000624714676735310016145 0ustar mhxusers/* * Sample code showing how to use the reentrant ucpp API. * This file is public domain. */ /* * This is an example of how to use ucpp as a preprocessor and lexer * into another project. The steps are those described in ucpp README * file. To use this code, compile the ucpp source files with * STAND_ALONE not defined, and link them with this code. The resulting * binary will take a C source file as standard input, preprocess it, * and output each non-whitespace token on stdout, with its numerical * value (defined as an enum in cpp.h) and its contents. This code * defines no system include path. * * This code supposes that the ucpp files are compiled with PRAGMA_TOKENIZE * enabled (see the tune.h file). */ #include #include #include #include "mem.h" #include "cpp.h" int main(int argc, char *argv[]) { int i, r; struct CPP *cpp; struct lexer_state ls; cpp = new_cpp(); /* step 1 */ init_cpp(cpp); /* step 2 */ cpp->no_special_macros = 0; cpp->emit_defines = cpp->emit_assertions = 0; /* step 3 -- with assertions */ init_tables(cpp, 1); /* step 4 -- no default include path */ init_include_path(cpp, 0); /* step 5 -- no need to reset the two emit_* variables set in 2 */ cpp->emit_dependencies = 0; /* step 6 -- we work with stdin, this is not a real filename */ set_init_filename(cpp, "[stdin]", 0); /* step 7 -- we make sure that assertions are on, and pragma are handled */ init_lexer_state(&ls); init_lexer_mode(&ls); ls.flags |= HANDLE_ASSERTIONS | HANDLE_PRAGMA | LINE_NUM; /* step 8 -- input is from stdin */ ls.input = stdin; /* step 9 -- we do not have any macro to define, but we add any argument as an include path */ for (i = 1; i < argc; i ++) add_incpath(cpp, argv[i]); /* step 10 -- we are a lexer and we want CONTEXT tokens */ enter_file(cpp, &ls, ls.flags); /* read tokens until end-of-input is reached -- errors (non-zero return values different from CPPERR_EOF) are ignored */ while ((r = lex(cpp, &ls)) < CPPERR_EOF) { if (r) { /* error condition -- no token was retrieved */ continue; } /* we print each token: its numerical value, and its string content; if this is a PRAGMA token, the string content is in fact a compressed token list, that we uncompress and print. */ if (ls.ctok->type == PRAGMA) { unsigned char *c = (unsigned char *)(ls.ctok->name); printf("line %ld: <#pragma>\n", ls.line); for (; *c; c ++) { int t = *c; if (STRING_TOKEN(t)) { printf(" <%2d> ", t); for (c ++; *c != PRAGMA_TOKEN_END; c ++) putchar(*c); putchar('\n'); } else { printf(" <%2d> `%s'\n", t, operators_name[t]); } } } else if (ls.ctok->type == CONTEXT) { printf("new context: file '%s', line %ld\n", ls.ctok->name, ls.ctok->line); } else if (ls.ctok->type == NEWLINE) { printf("[newline]\n"); } else { printf("line %ld: <%2d> `%s'\n", ls.ctok->line, ls.ctok->type, STRING_TOKEN(ls.ctok->type) ? ls.ctok->name : operators_name[ls.ctok->type]); } } /* give back memory and exit */ wipeout(cpp); free_lexer_state(&ls); del_cpp(cpp); #ifdef MEM_DEBUG report_leaks(); #endif return 0; } Convert-Binary-C-0.85/ucpp/eval.c0000644000175000001440000004401114676735310015261 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "tune.h" #include #include #include #include #include "ucppi.h" #include "mem.h" #ifdef UCPP_REENTRANT #define emit_eval_warnings (REENTR->_eval.emit_eval_warnings) #else JMP_BUF eval_exception; long eval_line; static int emit_eval_warnings; #endif /* * If you want to hardcode a conversion table, define a static array * of 256 int, and make transient_characters point to it. */ #ifndef UCPP_REENTRANT int *transient_characters = 0; #endif #define OCTAL(x) ((x) >= '0' && (x) <= '7') #define DECIM(x) ((x) >= '0' && (x) <= '9') #define HEXAD(x) (DECIM(x) \ || (x) == 'a' || (x) == 'b' || (x) == 'c' \ || (x) == 'd' || (x) == 'e' || (x) == 'f' \ || (x) == 'A' || (x) == 'B' || (x) == 'C' \ || (x) == 'D' || (x) == 'E' || (x) == 'F') #define OVAL(x) ((int)((x) - '0')) #define DVAL(x) ((int)((x) - '0')) #define HVAL(x) (DECIM(x) ? DVAL(x) \ : (x) == 'a' || (x) == 'A' ? 10 \ : (x) == 'b' || (x) == 'B' ? 11 \ : (x) == 'c' || (x) == 'C' ? 12 \ : (x) == 'd' || (x) == 'D' ? 13 \ : (x) == 'e' || (x) == 'E' ? 14 : 15) #define ARITH_TYPENAME big #define ARITH_FUNCTION_HEADER static inline #ifdef UCPP_REENTRANT #define pARI pCPP #define aARI aCPP #endif #define ARITH_ERROR(type) z_error(aCPP_ type) static void z_error(pCPP_ int type); #ifdef ARITHMETIC_CHECKS #define ARITH_WARNING(type) z_warn(aCPP_ type) static void z_warn(pCPP_ int type); #endif #include "arith.c" static void z_error(pCPP_ int type) { switch (type) { case ARITH_EXCEP_SLASH_D: error(aCPP_ eval_line, "division by 0"); break; case ARITH_EXCEP_SLASH_O: error(aCPP_ eval_line, "overflow on division"); break; case ARITH_EXCEP_PCT_D: error(aCPP_ eval_line, "division by 0 on modulus operator"); break; case ARITH_EXCEP_CONST_O: error(aCPP_ eval_line, "constant too large for destination type"); break; #ifdef AUDIT default: ouch(aCPP_ "erroneous integer error: %d", type); #endif } throw(eval_exception); } #ifdef ARITHMETIC_CHECKS static void z_warn(pCPP_ int type) { switch (type) { case ARITH_EXCEP_CONV_O: warning(aCPP_ eval_line, "overflow on integer conversion"); break; case ARITH_EXCEP_NEG_O: warning(aCPP_ eval_line, "overflow on unary minus"); break; case ARITH_EXCEP_NOT_T: warning(aCPP_ eval_line, "bitwise inversion yields trap representation"); break; case ARITH_EXCEP_PLUS_O: warning(aCPP_ eval_line, "overflow on addition"); break; case ARITH_EXCEP_PLUS_U: warning(aCPP_ eval_line, "underflow on addition"); break; case ARITH_EXCEP_MINUS_O: warning(aCPP_ eval_line, "overflow on subtraction"); break; case ARITH_EXCEP_MINUS_U: warning(aCPP_ eval_line, "underflow on subtraction"); break; case ARITH_EXCEP_AND_T: warning(aCPP_ eval_line, "bitwise AND yields trap representation"); break; case ARITH_EXCEP_XOR_T: warning(aCPP_ eval_line, "bitwise XOR yields trap representation"); break; case ARITH_EXCEP_OR_T: warning(aCPP_ eval_line, "bitwise OR yields trap representation"); break; case ARITH_EXCEP_LSH_W: warning(aCPP_ eval_line, "left shift count greater than " "or equal to type width"); break; case ARITH_EXCEP_LSH_C: warning(aCPP_ eval_line, "left shift count negative"); break; case ARITH_EXCEP_LSH_O: warning(aCPP_ eval_line, "overflow on left shift"); break; case ARITH_EXCEP_RSH_W: warning(aCPP_ eval_line, "right shift count greater than " "or equal to type width"); break; case ARITH_EXCEP_RSH_C: warning(aCPP_ eval_line, "right shift count negative"); break; case ARITH_EXCEP_RSH_N: warning(aCPP_ eval_line, "right shift of negative value"); break; case ARITH_EXCEP_STAR_O: warning(aCPP_ eval_line, "overflow on multiplication"); break; case ARITH_EXCEP_STAR_U: warning(aCPP_ eval_line, "underflow on multiplication"); break; #ifdef AUDIT default: ouch(aCPP_ "erroneous integer warning: %d", type); #endif } } #endif typedef struct { int sign; union { u_big uv; s_big sv; } u; } ppval; static int boolval(pCPP_ ppval x) { return x.sign ? big_s_lval(aCPP_ x.u.sv) : big_u_lval(aCPP_ x.u.uv); } #if !defined(WCHAR_SIGNEDNESS) # if CHAR_MIN == 0 # define WCHAR_SIGNEDNESS 0 # else # define WCHAR_SIGNEDNESS 1 # endif #endif /* * Check the suffix, return 1 if it is signed, 0 otherwise. 1 is * returned for a void suffix. Legal suffixes are: * unsigned: u U ul uL Ul UL lu Lu lU LU ull uLL Ull ULL llu LLu llU LLU * signed: l L ll LL */ static int pp_suffix(pCPP_ char *d, char *refc) { if (!*d) return 1; if (*d == 'u' || *d == 'U') { if (!*(++ d)) return 0; if (*d == 'l' || *d == 'L') { char *e = d + 1; if (*e && *e != *d) goto suffix_error; if (!*e || !*(e + 1)) return 0; goto suffix_error; } goto suffix_error; } if (*d == 'l' || *d == 'L') { if (!*(++ d)) return 1; if (*d == *(d - 1)) { d ++; if (!*d) return 1; } if (*d == 'u' || *d == 'U') { d ++; if (!*d) return 0; } goto suffix_error; } suffix_error: error(aCPP_ eval_line, "invalid integer constant '%s'", refc); throw(eval_exception); return 666; } static unsigned long pp_char(pCPP_ char *c, char *refc) { unsigned long r = 0; c ++; if (*c == '\\') { int i; c ++; switch (*c) { case 'n': r = '\n'; c ++; break; case 't': r = '\t'; c ++; break; case 'v': r = '\v'; c ++; break; case 'b': r = '\b'; c ++; break; case 'r': r = '\r'; c ++; break; case 'f': r = '\f'; c ++; break; case 'a': r = '\a'; c ++; break; case '\\': r = '\\'; c ++; break; case '\?': r = '\?'; c ++; break; case '\'': r = '\''; c ++; break; case '\"': r = '\"'; c ++; break; case 'u': for (i = 0, c ++; i < 4 && HEXAD(*c); i ++, c ++) { r = (r * 16) + HVAL(*c); } if (i != 4) { error(aCPP_ eval_line, "malformed UCN in %s", refc); throw(eval_exception); } break; case 'U': for (i = 0, c ++; i < 8 && HEXAD(*c); i ++, c ++) { r = (r * 16) + HVAL(*c); } if (i != 8) { error(aCPP_ eval_line, "malformed UCN in %s", refc); throw(eval_exception); } break; case 'x': for (c ++; HEXAD(*c); c ++) r = (r * 16) + HVAL(*c); break; default: if (OCTAL(*c)) { r = OVAL(*(c ++)); if (OCTAL(*c)) r = (r * 8) + OVAL(*(c ++)); if (OCTAL(*c)) r = (r * 8) + OVAL(*(c ++)); } else { error(aCPP_ eval_line, "invalid escape sequence " "'\\%c'", *c); throw(eval_exception); } } } else if (*c == '\'') { error(aCPP_ eval_line, "empty character constant"); throw(eval_exception); } else { r = *((unsigned char *)(c ++)); } if (transient_characters && r < 256) { r = transient_characters[(size_t)r]; } if (*c != '\'' && emit_eval_warnings) { warning(aCPP_ eval_line, "multicharacter constant"); } return r; } static ppval pp_strtoconst(pCPP_ char *refc) { ppval q; char *c = refc, *d; u_big ru; s_big rs; int sp, dec; if (*c == '\'' || *c == 'L') { q.sign = (*c == 'L') ? WCHAR_SIGNEDNESS : 1; if (*c == 'L' && *(++ c) != '\'') { error(aCPP_ eval_line, "invalid wide character constant: %s", refc); throw(eval_exception); } if (q.sign) { q.u.sv = big_s_fromlong(aCPP_ pp_char(aCPP_ c, refc)); } else { q.u.uv = big_u_fromulong(aCPP_ pp_char(aCPP_ c, refc)); } return q; } if (*c == '0') { /* octal or hexadecimal */ dec = 0; c ++; if (*c == 'x' || *c == 'X') { c ++; d = big_u_hexconst(aCPP_ c, &ru, &rs, &sp); } else { d = big_u_octconst(aCPP_ c, &ru, &rs, &sp); } } else { dec = 1; d = big_u_decconst(aCPP_ c, &ru, &rs, &sp); } q.sign = pp_suffix(aCPP_ d, refc); if (q.sign) { if (!sp) { if (dec) { error(aCPP_ eval_line, "constant too large " "for destination type"); throw(eval_exception); } else { warning(aCPP_ eval_line, "constant is so large " "that it is unsigned"); } q.u.uv = ru; q.sign = 0; } else { q.u.sv = rs; } } else { q.u.uv = ru; } return q; } /* * Used by #line directives -- anything beyond what can be put in an * unsigned long, is considered absurd. */ unsigned long strtoconst(pCPP_ char *c) { ppval q = pp_strtoconst(aCPP_ c); if (q.sign) q.u.uv = big_s_to_u(aCPP_ q.u.sv); return big_u_toulong(aCPP_ q.u.uv); } /* * Promote integer operands and return signedness of result. */ static int promote(pCPP_ ppval *pv1, ppval *pv2, int do_eval) { if (pv1->sign && pv2->sign) return 1; if (pv1->sign) { if (do_eval) pv1->u.uv = big_s_to_u(aCPP_ pv1->u.sv); pv1->sign = 0; } else if (pv2->sign) { if (do_eval) pv2->u.uv = big_s_to_u(aCPP_ pv2->u.sv); pv2->sign = 0; } return 0; } #define OP_UN(x) ((x) == LNOT || (x) == NOT || (x) == UPLUS \ || (x) == UMINUS) static ppval eval_opun(pCPP_ int op, ppval v) { if (op == LNOT) { v.sign = 1; v.u.sv = big_s_fromint(aCPP_ big_s_lnot(aCPP_ v.u.sv)); return v; } if (v.sign) { switch (op) { case NOT: v.u.sv = big_s_not(aCPP_ v.u.sv); break; case UPLUS: break; case UMINUS: v.u.sv = big_s_neg(aCPP_ v.u.sv); break; } } else { switch (op) { case NOT: v.u.uv = big_u_not(aCPP_ v.u.uv); break; case UPLUS: break; case UMINUS: v.u.uv = big_u_neg(aCPP_ v.u.uv); break; } } return v; } #define OP_BIN(x) ((x) == STAR || (x) == SLASH || (x) == PCT \ || (x) == PLUS || (x) == MINUS || (x) == LSH \ || (x) == RSH || (x) == LT || (x) == LEQ \ || (x) == GT || (x) == GEQ || (x) == SAME \ || (x) == NEQ || (x) == AND || (x) == CIRC \ || (x) == OR || (x) == LAND || (x) == LOR \ || (x) == COMMA) static ppval eval_opbin(pCPP_ int op, ppval v1, ppval v2, int do_eval) { ppval r; int iv2 = 0; switch (op) { case STAR: case SLASH: case PCT: case PLUS: case MINUS: case AND: case CIRC: case OR: /* promote operands, adjust signedness of result */ r.sign = promote(aCPP_ &v1, &v2, do_eval); break; case LT: case LEQ: case GT: case GEQ: case SAME: case NEQ: /* promote operands */ (void) promote(aCPP_ &v1, &v2, do_eval); /* fall through */ case LAND: case LOR: /* result is signed anyway */ r.sign = 1; break; case LSH: case RSH: /* result is as signed as left operand; convert right operand to int */ r.sign = v1.sign; if (do_eval) { if (v2.sign) { iv2 = big_s_toint(aCPP_ v2.u.sv); } else { iv2 = big_u_toint(aCPP_ v2.u.uv); } } break; case COMMA: if (emit_eval_warnings) { warning(aCPP_ eval_line, "ISO C forbids evaluated comma " "operators in #if expressions"); } r.sign = v2.sign; break; #ifdef AUDIT default: ouch(aCPP_ "a good operator is a dead operator"); #endif } #define SBINOP(x) if (r.sign) r.u.sv = big_s_ ## x (aCPP_ v1.u.sv, v2.u.sv); \ else r.u.uv = big_u_ ## x (aCPP_ v1.u.uv, v2.u.uv); #define NSSBINOP(x) if (v1.sign) r.u.sv = big_s_fromint(aCPP_ big_s_ ## x \ (aCPP_ v1.u.sv, v2.u.sv)); else r.u.sv = big_s_fromint( \ aCPP_ big_u_ ## x (aCPP_ v1.u.uv, v2.u.uv)); #define LBINOP(x) r.u.sv = big_s_fromint(aCPP_ (v1.sign ? big_s_lval(aCPP_ \ v1.u.sv) : big_u_lval(aCPP_ v1.u.uv)) x (v2.sign ? \ big_s_lval(aCPP_ v2.u.sv) : big_u_lval(aCPP_ v2.u.uv))); #define ABINOP(x) if (r.sign) r.u.sv = big_s_ ## x (aCPP_ v1.u.sv, iv2); \ else r.u.uv = big_u_ ## x (aCPP_ v1.u.uv, iv2); if (do_eval) { switch (op) { case STAR: SBINOP(star); break; case SLASH: SBINOP(slash); break; case PCT: SBINOP(pct); break; case PLUS: SBINOP(plus); break; case MINUS: SBINOP(minus); break; case LSH: ABINOP(lsh); break; case RSH: ABINOP(rsh); break; case LT: NSSBINOP(lt); break; case LEQ: NSSBINOP(leq); break; case GT: NSSBINOP(gt); break; case GEQ: NSSBINOP(geq); break; case SAME: NSSBINOP(same); break; case NEQ: NSSBINOP(neq); break; case AND: SBINOP(and); break; case CIRC: SBINOP(xor); break; case OR: SBINOP(or); break; case LAND: LBINOP(&&); break; case LOR: LBINOP(||); break; case COMMA: r = v2; break; } } return r; } #define ttOP(x) (OP_UN(x) || OP_BIN(x) || (x) == QUEST || (x) == COLON) static int op_prec(pCPP_ int op) { switch (op) { case LNOT: case NOT: case UPLUS: case UMINUS: return 13; case STAR: case SLASH: case PCT: return 12; case PLUS: case MINUS: return 11; case LSH: case RSH: return 10; case LT: case LEQ: case GT: case GEQ: return 9; case SAME: case NEQ: return 8; case AND: return 7; case CIRC: return 6; case OR: return 5; case LAND: return 4; case LOR: return 3; case QUEST: return 2; case COMMA: return 1; } #ifdef AUDIT ouch(aCPP_ "an unknown species should have a higher precedence"); #else useCPP; #endif return 666; } /* * Perform the hard work of evaluation. * * This function works because: * -- all unary operators are right to left associative, and with * identical precedence * -- all binary operators are left to right associative * -- there is only one non-unary and non-binary operator: the quest-colon * * If do_eval is 0, the evaluation of operators is not done. This is * for sequence point operators (&&, || and ?:). */ static ppval eval_shrd(pCPP_ struct token_fifo *tf, int minprec, int do_eval) { ppval top; struct token *ct; top.sign = 1; if (tf->art == tf->nt) goto trunc_err; ct = tf->t + (tf->art ++); if (ct->type == LPAR) { top = eval_shrd(aCPP_ tf, 0, do_eval); if (tf->art == tf->nt) goto trunc_err; ct = tf->t + (tf->art ++); if (ct->type != RPAR) { error(aCPP_ eval_line, "a right parenthesis was expected"); throw(eval_exception); } } else if (ct->type == NUMBER || ct->type == CHAR) { top = pp_strtoconst(aCPP_ ct->name); } else if (OP_UN(ct->type)) { top = eval_opun(aCPP_ ct->type, eval_shrd(aCPP_ tf, op_prec(aCPP_ ct->type), do_eval)); goto eval_loop; } else if (ttOP(ct->type)) goto rogue_op_err; else { goto invalid_token_err; } eval_loop: if (tf->art == tf->nt) { return top; } ct = tf->t + (tf->art ++); if (OP_BIN(ct->type)) { int bp = op_prec(aCPP_ ct->type); if (bp > minprec) { ppval tr; if ((ct->type == LOR && boolval(aCPP_ top)) || (ct->type == LAND && !boolval(aCPP_ top))) { tr = eval_shrd(aCPP_ tf, bp, 0); top.sign = 1; if (do_eval) { if (ct->type == LOR) top.u.sv = big_s_fromint(aCPP_ 1); if (ct->type == LAND) top.u.sv = big_s_fromint(aCPP_ 0); } } else { tr = eval_shrd(aCPP_ tf, bp, do_eval); top = eval_opbin(aCPP_ ct->type, top, tr, do_eval); } goto eval_loop; } } else if (ct->type == QUEST) { int bp = op_prec(aCPP_ QUEST); ppval r1, r2; if (bp >= minprec) { int qv = boolval(aCPP_ top); r1 = eval_shrd(aCPP_ tf, bp, qv ? do_eval : 0); if (tf->art == tf->nt) goto trunc_err; ct = tf->t + (tf->art ++); if (ct->type != COLON) { error(aCPP_ eval_line, "a colon was expected"); throw(eval_exception); } r2 = eval_shrd(aCPP_ tf, bp, qv ? 0 : do_eval); (void) promote(aCPP_ &r1, &r2, do_eval); if (qv) top = r1; else top = r2; goto eval_loop; } } tf->art --; return top; trunc_err: error(aCPP_ eval_line, "truncated constant integral expression"); throw(eval_exception); rogue_op_err: error(aCPP_ eval_line, "rogue operator '%s' in constant integral " "expression", operators_name[ct->type]); throw(eval_exception); invalid_token_err: error(aCPP_ eval_line, "invalid token in constant integral expression"); throw(eval_exception); } #define UNARY(x) ((x) != NUMBER && (x) != NAME && (x) != CHAR \ && (x) != RPAR) /* * Evaluate the integer expression contained in the given token_fifo. * Evaluation is made by precedence of operators, as described in the * Dragon Book. The unary + and - are distinguished from their binary * counterparts using the Fortran way: a + or a - is considered unary * if it does not follow a constant, an identifier or a right parenthesis. */ unsigned long eval_expr(pCPP_ struct token_fifo *tf, int *ret, int ew) { size_t sart; ppval r; emit_eval_warnings = ew; if (catch(eval_exception)) goto eval_err; /* first, distinguish unary + and - from binary + and - */ for (sart = tf->art; tf->art < tf->nt; tf->art ++) { if (tf->t[tf->art].type == PLUS) { if (sart == tf->art || UNARY(tf->t[tf->art - 1].type)) tf->t[tf->art].type = UPLUS; } else if (tf->t[tf->art].type == MINUS) { if (sart == tf->art || UNARY(tf->t[tf->art - 1].type)) tf->t[tf->art].type = UMINUS; } } tf->art = sart; r = eval_shrd(aCPP_ tf, 0, 1); if (tf->art < tf->nt) { error(aCPP_ eval_line, "trailing garbage in constant integral " "expression"); goto eval_err; } *ret = 0; return boolval(aCPP_ r); eval_err: *ret = 1; return 0; } Convert-Binary-C-0.85/ucpp/nhash.h0000644000175000001440000001413614676735310015445 0ustar mhxusers/* * (c) Thomas Pornin 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__NHASH__ #define UCPP__NHASH__ #include "tune.h" /* * Each item stored in the hash table should be a structure beginning * with the following header. */ typedef struct hash_item_header_ { char *ident; struct hash_item_header_ *left, *right; } hash_item_header; /* * This macro takes as argument a pointer to a hash table item (a * structure beginning with `hash_item_header') and returns a pointer to * the item name. This name should be considered as read-only. The * retrieved pointer can become invalid whenever a new item is inserted * in or removed from the table. */ #define HASH_ITEM_NAME(s) (((hash_item_header *)(s))->ident + sizeof(unsigned)) /* * Number of lists for the primary hash step. Can be reduced to save more * memory, or increased to speed things up. It should be a power of 2 * greater or equal than 2 and smaller than UINT_MAX. */ #define HTT_NUM_TREES 128 /* * Type for a hash table. */ typedef struct { void (*deldata)(void *); #ifdef UCPP_CLONE void *(*clonedata)(const void *); #endif hash_item_header *tree[HTT_NUM_TREES]; } HTT; /* * Type for a reduced version of HTT with only two binary trees. That * version has a lower initialization time and is suitable for situation * where only a limited number of elements will be stored, but new tables * need frequent initializations. */ typedef struct { void (*deldata)(void *); #ifdef UCPP_CLONE void *(*clonedata)(const void *); #endif hash_item_header *tree[2]; } HTT2; #ifdef UCPP_CLONE #define _pCLONEDATA , void *(*clonedata)(const void *) #define _aCLONEDATA , clonedata #define _aCLONE(fun) , fun #else #define _pCLONEDATA #define _aCLONEDATA #define _aCLONE(fun) #endif /* * Initialize a hash table. The `deldata' parameter should point to a * function which will be invoked on any item removed from the table; * that function should take care of the release of memory allocated for * that item (except the hash_item_header contents, which are handled * internally). * The (optional) `clonedata' parameter should point to a function * which will be invoked on any item that is cloned to another table. */ #define HTT_init UCPP_PRIVATE(HTT_init) void HTT_init(HTT *htt, void (*deldata)(void *) _pCLONEDATA); /* * Link an item into the hash table under the given name. If another * item of identical name is already present in the table, a pointer to * that item is returned; otherwise, the new item is linked into the * table and NULL is returned. The object pointed to by `item' is * linked from the table, but not the string pointed to by `name'. */ #define HTT_put UCPP_PRIVATE(HTT_put) void *HTT_put(HTT *htt, void *item, const char *name); /* * Retrieve an item by name from the hash table. NULL is returned if * the object is not found. */ #define HTT_get UCPP_PRIVATE(HTT_get) void *HTT_get(HTT *htt, const char *name); /* * Remove an item from the hash table. 1 is returned if the item was * removed, 0 if it was not found. */ #define HTT_del UCPP_PRIVATE(HTT_del) int HTT_del(HTT *htt, const char *name); /* * For all items stored within the hash table, invoke the provided * function with the item as parameter. The function may abort the * scan by performing a longjmp() to a context encapsulating the * call to that function. */ #define HTT_scan UCPP_PRIVATE(HTT_scan) #define HTT_scan_arg UCPP_PRIVATE(HTT_scan_arg) void HTT_scan(HTT *htt, void (*action)(void *)); void HTT_scan_arg(HTT *htt, void (*action)(void *, void *), void *arg); /* * Release the whole table contents. After a call to this function, * the table is ready to accept new items. */ #define HTT_kill UCPP_PRIVATE(HTT_kill) void HTT_kill(HTT *htt); #ifdef UCPP_CLONE /* * Clone the whole table contents. */ #define HTT_clone UCPP_PRIVATE(HTT_clone) void HTT_clone(HTT *ctt, const HTT *htt); #endif /* UCPP_CLONE */ /* * The following functions are identical to the HTT_*() functions, except * that they operate on the reduced HTT2 tables. */ #define HTT2_init UCPP_PRIVATE(HTT2_init) #define HTT2_put UCPP_PRIVATE(HTT2_put) #define HTT2_get UCPP_PRIVATE(HTT2_get) #define HTT2_del UCPP_PRIVATE(HTT2_del) #define HTT2_scan UCPP_PRIVATE(HTT2_scan) #define HTT2_scan_arg UCPP_PRIVATE(HTT2_scan_arg) #define HTT2_kill UCPP_PRIVATE(HTT2_kill) void HTT2_init(HTT2 *htt, void (*deldata)(void *) _pCLONEDATA); void *HTT2_put(HTT2 *htt, void *item, const char *name); void *HTT2_get(HTT2 *htt, const char *name); int HTT2_del(HTT2 *htt, const char *name); void HTT2_scan(HTT2 *htt, void (*action)(void *)); void HTT2_scan_arg(HTT2 *htt, void (*action)(void *, void *), void *); void HTT2_kill(HTT2 *htt); #ifdef UCPP_CLONE #define HTT2_clone UCPP_PRIVATE(HTT_clone) void HTT2_clone(HTT2 *ctt, const HTT2 *htt); #endif #endif Convert-Binary-C-0.85/ucpp/assert.c0000644000175000001440000002665414676735310015650 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "tune.h" #include #include #include #include #include #include "ucppi.h" #include "mem.h" #include "nhash.h" /* * Assertion support. Each assertion is indexed by its predicate, and * the list of 'questions' which yield a true answer. */ #ifdef UCPP_REENTRANT #define assertions (REENTR->_assert.assertions) #define assertions_init_done (REENTR->_assert.assertions_init_done) #else static HTT assertions; static int assertions_init_done = 0; #endif /* UCPP_REENTRANT */ static struct assert *new_assertion(void) { struct assert *a = getmem(sizeof(struct assert)); a->nbval = 0; return a; } static void del_token_fifo(struct token_fifo *tf) { size_t i; for (i = 0; i < tf->nt; i ++) if (S_TOKEN(tf->t[i].type)) freemem(tf->t[i].name); if (tf->nt) freemem(tf->t); } static void del_assertion(void *va) { struct assert *a = va; size_t i; for (i = 0; i < a->nbval; i ++) del_token_fifo(a->val + i); if (a->nbval) freemem(a->val); freemem(a); } #ifdef UCPP_CLONE static void clone_token_fifo(struct token_fifo *dst, const struct token_fifo *src) { size_t i; dst->art = src->art; if (src->nt) { dst->nt = 0; for (i = 0; i < src->nt; i ++) { aol(dst->t, dst->nt, src->t[i], TOKEN_LIST_MEMG); if (S_TOKEN(src->t[i].type)) dst->t[i].name = sdup(src->t[i].name); } } else dst->nt = src->nt; } static void *clone_assertion(const void *va) { const struct assert *src = va; struct assert *dst = getmem(sizeof(struct assert)); size_t i; if (src->nbval > 0) { dst->nbval = 0; for (i = 0; i < src->nbval; i ++) { struct token_fifo tf; clone_token_fifo(&tf, &src->val[i]); aol(dst->val, dst->nbval, tf, TOKEN_LIST_MEMG); } } else dst->nbval = src->nbval; return dst; } #endif /* UCPP_CLONE */ /* * print the contents of a token list */ static void print_token_fifo(pCPP_ struct token_fifo *tf) { size_t i; for (i = 0; i < tf->nt; i ++) if (ttMWS(tf->t[i].type)) fputc(' ', emit_output); else fputs(token_name(tf->t + i), emit_output); } /* * print all assertions related to a given name */ #ifdef UCPP_REENTRANT static void print_assert(void *re, void *va) #else static void print_assert(void *va) #endif { struct assert *a = va; #ifdef UCPP_REENTRANT struct CPP *REENTR = re; #endif size_t i; for (i = 0; i < a->nbval; i ++) { fprintf(emit_output, "#assert %s(", HASH_ITEM_NAME(a)); print_token_fifo(aCPP_ a->val + i); fprintf(emit_output, ")\n"); } } /* * compare two token_fifo, return 0 if they are identical, 1 otherwise. * All whitespace tokens are considered identical, but sequences of * whitespace are not shrinked. */ int cmp_token_list(struct token_fifo *f1, struct token_fifo *f2) { size_t i; if (f1->nt != f2->nt) return 1; for (i = 0; i < f1->nt; i ++) { if (ttMWS(f1->t[i].type) && ttMWS(f2->t[i].type)) continue; if (f1->t[i].type != f2->t[i].type) return 1; if (f1->t[i].type == MACROARG && f1->t[i].line != f2->t[i].line) return 1; if (S_TOKEN(f1->t[i].type) && strcmp(f1->t[i].name, f2->t[i].name)) return 1; } return 0; } /* * for #assert * Assertions are not part of the ISO-C89 standard, but they are sometimes * encountered, for instance in Solaris standard include files. */ int handle_assert(pCPP_ struct lexer_state *ls) { int ina = 0, ltww; struct token t; struct token_fifo *atl = 0; struct assert *a; char *aname; int ret = -1; long l = ls->line; int nnp; size_t i; while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) { if (!(a = HTT_get(&assertions, ls->ctok->name))) { a = new_assertion(); aname = sdup(ls->ctok->name); ina = 1; } goto handle_assert_next; } error(aCPP_ l, "illegal assertion name for #assert"); goto handle_assert_warp_ign; } goto handle_assert_trunc; handle_assert_next: while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type != LPAR) { error(aCPP_ l, "syntax error in #assert"); goto handle_assert_warp_ign; } goto handle_assert_next2; } goto handle_assert_trunc; handle_assert_next2: atl = getmem(sizeof(struct token_fifo)); atl->art = atl->nt = 0; for (nnp = 1, ltww = 1; nnp && !next_token(aCPP_ ls);) { if (ls->ctok->type == NEWLINE) break; if (ltww && ttMWS(ls->ctok->type)) continue; ltww = ttMWS(ls->ctok->type); if (ls->ctok->type == LPAR) nnp ++; else if (ls->ctok->type == RPAR) { if (!(-- nnp)) goto handle_assert_next3; } t.type = ls->ctok->type; if (S_TOKEN(t.type)) t.name = sdup(ls->ctok->name); aol(atl->t, atl->nt, t, TOKEN_LIST_MEMG); } goto handle_assert_trunc; handle_assert_next3: while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { if (!ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "trailing garbage in #assert"); } } if (atl->nt && ttMWS(atl->t[atl->nt - 1].type) && (-- atl->nt) == 0) freemem(atl->t); if (atl->nt == 0) { error(aCPP_ l, "void assertion in #assert"); goto handle_assert_error; } for (i = 0; i < a->nbval && cmp_token_list(atl, a->val + i); i ++); if (i != a->nbval) { /* we already have it */ ret = 0; goto handle_assert_error; } /* This is a new assertion. Let's keep it. */ aol(a->val, a->nbval, *atl, TOKEN_LIST_MEMG); if (ina) { HTT_put(&assertions, a, aname); freemem(aname); } if (emit_assertions) { fprintf(emit_output, "#assert %s(", HASH_ITEM_NAME(a)); print_token_fifo(aCPP_ atl); fputs(")\n", emit_output); } freemem(atl); return 0; handle_assert_trunc: error(aCPP_ l, "unfinished #assert"); handle_assert_error: if (atl) { del_token_fifo(atl); freemem(atl); } if (ina) { freemem(aname); freemem(a); } return ret; handle_assert_warp_ign: while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE); if (ina) { freemem(aname); freemem(a); } return ret; } /* * for #unassert */ int handle_unassert(pCPP_ struct lexer_state *ls) { int ltww; struct token t; struct token_fifo atl; struct assert *a; int ret = -1; long l = ls->line; int nnp; size_t i; atl.art = atl.nt = 0; while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) { if (!(a = HTT_get(&assertions, ls->ctok->name))) { ret = 0; goto handle_unassert_warp; } goto handle_unassert_next; } error(aCPP_ l, "illegal assertion name for #unassert"); goto handle_unassert_warp; } goto handle_unassert_trunc; handle_unassert_next: while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type != LPAR) { error(aCPP_ l, "syntax error in #unassert"); goto handle_unassert_warp; } goto handle_unassert_next2; } if (emit_assertions) fprintf(emit_output, "#unassert %s\n", HASH_ITEM_NAME(a)); HTT_del(&assertions, HASH_ITEM_NAME(a)); return 0; handle_unassert_next2: for (nnp = 1, ltww = 1; nnp && !next_token(aCPP_ ls);) { if (ls->ctok->type == NEWLINE) break; if (ltww && ttMWS(ls->ctok->type)) continue; ltww = ttMWS(ls->ctok->type); if (ls->ctok->type == LPAR) nnp ++; else if (ls->ctok->type == RPAR) { if (!(-- nnp)) goto handle_unassert_next3; } t.type = ls->ctok->type; if (S_TOKEN(t.type)) t.name = sdup(ls->ctok->name); aol(atl.t, atl.nt, t, TOKEN_LIST_MEMG); } goto handle_unassert_trunc; handle_unassert_next3: while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { if (!ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "trailing garbage in #unassert"); } } if (atl.nt && ttMWS(atl.t[atl.nt - 1].type) && (-- atl.nt) == 0) freemem(atl.t); if (atl.nt == 0) { error(aCPP_ l, "void assertion in #unassert"); return ret; } for (i = 0; i < a->nbval && cmp_token_list(&atl, a->val + i); i ++); if (i != a->nbval) { /* we have it, undefine it */ del_token_fifo(a->val + i); if (i < (a->nbval - 1)) mmvwo(a->val + i, a->val + i + 1, (a->nbval - i - 1) * sizeof(struct token_fifo)); if ((-- a->nbval) == 0) freemem(a->val); if (emit_assertions) { fprintf(emit_output, "#unassert %s(", HASH_ITEM_NAME(a)); print_token_fifo(aCPP_ &atl); fputs(")\n", emit_output); } } ret = 0; goto handle_unassert_finish; handle_unassert_trunc: error(aCPP_ l, "unfinished #unassert"); handle_unassert_finish: if (atl.nt) del_token_fifo(&atl); return ret; handle_unassert_warp: while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE); return ret; } /* * Add the given assertion (as string). */ int make_assertion(pCPP_ char *aval) { struct lexer_state lls; size_t n = strlen(aval) + 1; char *c = sdup(aval); int ret; *(c + n - 1) = '\n'; init_buf_lexer_state(&lls, 0); lls.flags = DEFAULT_LEXER_FLAGS; lls.input = 0; lls.input_string = (unsigned char *)c; lls.pbuf = 0; lls.ebuf = n; lls.line = -1; ret = handle_assert(aCPP_ &lls); freemem(c); free_lexer_state(&lls); return ret; } /* * Remove the given assertion (as string). */ int destroy_assertion(pCPP_ char *aval) { struct lexer_state lls; size_t n = strlen(aval) + 1; char *c = sdup(aval); int ret; *(c + n - 1) = '\n'; init_buf_lexer_state(&lls, 0); lls.flags = DEFAULT_LEXER_FLAGS; lls.input = 0; lls.input_string = (unsigned char *)c; lls.pbuf = 0; lls.ebuf = n; lls.line = -1; ret = handle_unassert(aCPP_ &lls); freemem(c); free_lexer_state(&lls); return ret; } /* * erase the assertion table */ void wipe_assertions(pCPP) { if (assertions_init_done) HTT_kill(&assertions); assertions_init_done = 0; } /* * initialize the assertion table */ void init_assertions(pCPP) { wipe_assertions(aCPP); HTT_init(&assertions, del_assertion _aCLONE(clone_assertion)); assertions_init_done = 1; } /* * retrieve an assertion from the hash table */ struct assert *get_assertion(pCPP_ char *name) { return HTT_get(&assertions, name); } /* * print already defined assertions */ void print_assertions(pCPP) { #ifdef UCPP_REENTRANT HTT_scan_arg(&assertions, print_assert, aCPP); #else HTT_scan(&assertions, print_assert); #endif } Convert-Binary-C-0.85/ucpp/hash.c0000644000175000001440000001736514676735310015271 0ustar mhxusers/* * Generic hash table routines. * (c) Thomas Pornin 1998, 1999, 2000 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include #include "hash.h" #include "mem.h" #include "tune.h" /* * hash_string() is a sample hash function for strings */ int hash_string(char *s) { #ifdef FAST_HASH unsigned h = 0, g; while (*s) { h = (h << 4) + *(unsigned char *)(s ++); if ((g = h & 0xF000U) != 0) h ^= (g >> 12); h &= ~g; } return (h ^ (h >> 9)) & 127U; #else unsigned char h = 0; for (; *s; s ++) h ^= (unsigned char)(*s); return ((int)h); #endif } /* * struct hash_item is the basic data type to internally handle hash tables */ struct hash_item { void *data; struct hash_item *next; }; /* * This function adds an entry to the struct hash_item list */ static struct hash_item *add_entry(struct hash_item *blist, void *data) { struct hash_item *t = getmem(sizeof(struct hash_item)); t->data = data; t->next = blist; return t; } /* * This function finds a struct hash_item in a list, using the * comparison function provided as cmpdata (*cmpdata() returns * non-zero if the two parameters are to be considered identical). * * It returns 0 if the item is not found. */ static struct hash_item *get_entry(struct hash_item *blist, void *data, int (*cmpdata)(void *, void *)) { while (blist) { if ((*cmpdata)(data, blist->data)) return blist; blist = blist->next; } return 0; } /* * This function acts like get_entry but deletes the found item, using * the provided function deldata(); it returns 0 if the given data was * not found. */ static struct hash_item *del_entry(struct hash_item *blist, void *data, int (*cmpdata)(void *, void *), void (*deldata)(void *)) { struct hash_item *prev = 0, *save = blist; while (blist) { if ((*cmpdata)(data, blist->data)) { if (deldata) (*deldata)(blist->data); if (prev) prev->next = blist->next; if (save == blist) save = blist->next; freemem(blist); return save; } prev = blist; blist = blist->next; } return 0; } /* * This function creates a new hashtable, with the hashing and comparison * functions given as parameters */ struct HT *newHT(int n, int (*cmpdata)(void *, void *), int (*hash)(void *), void (*deldata)(void *)) { struct HT *t = getmem(sizeof(struct HT)); int i; t->lists = getmem(n * sizeof(struct hash_item *)); for (i = 0; i < n; i ++) t->lists[i] = 0; t->nb_lists = n; t->cmpdata = cmpdata; t->hash = hash; t->deldata = deldata; return t; } /* * This function adds a new entry in the hashtable ht; it returns 0 * on success, or a pointer to the already present item otherwise. */ void *putHT(struct HT *ht, void *data) { int h; struct hash_item *d; h = ((*(ht->hash))(data)); #ifndef FAST_HASH h %= ht->nb_lists; #endif if ((d = get_entry(ht->lists[h], data, ht->cmpdata))) return d->data; ht->lists[h] = add_entry(ht->lists[h], data); return 0; } /* * This function adds a new entry in the hashtable ht, even if an equal * entry is already there. Exercise caution ! * The new entry will "hide" the old one, which means that the new will be * found upon lookup/delete, not the old one. */ void *forceputHT(struct HT *ht, void *data) { int h; h = ((*(ht->hash))(data)); #ifndef FAST_HASH h %= ht->nb_lists; #endif ht->lists[h] = add_entry(ht->lists[h], data); return 0; } /* * This function finds the entry corresponding to *data in the * hashtable ht (using the comparison function given as argument * to newHT) */ void *getHT(struct HT *ht, void *data) { int h; struct hash_item *t; h = ((*(ht->hash))(data)); #ifndef FAST_HASH h %= ht->nb_lists; #endif if ((t = get_entry(ht->lists[h], data, ht->cmpdata)) == 0) return 0; return (t->data); } /* * This function finds and delete the entry corresponding to *data * in the hashtable ht (using the comparison function given as * argument to newHT). */ int delHT(struct HT *ht, void *data) { int h; h = ((*(ht->hash))(data)); #ifndef FAST_HASH h %= ht->nb_lists; #endif ht->lists[h] = del_entry(ht->lists[h], data, ht->cmpdata, ht->deldata); return 1; } /* * This function completely eradicates from memory a given hash table, * releasing all objects */ void killHT(struct HT *ht) { int i; struct hash_item *t, *n; void (*dd)(void *) = ht->deldata; for (i = 0; i < ht->nb_lists; i ++) for (t = ht->lists[i]; t;) { n = t->next; if (dd) (*dd)(t->data); freemem(t); t = n; } freemem(ht->lists); freemem(ht); } /* * This function stores a backup of the hash table, for context stacking. */ void saveHT(struct HT *ht, void **buffer) { struct hash_item **b = (struct hash_item **)buffer; mmv(b, ht->lists, ht->nb_lists * sizeof(struct hash_item *)); } /* * This function restores the saved state of the hash table. * Do NOT use if some of the entries that were present before the backup * have been removed (even temporarily). */ void restoreHT(struct HT *ht, void **buffer) { struct hash_item **b = (struct hash_item **)buffer; int i; for (i = 0; i < ht->nb_lists; i ++) { struct hash_item *t = ht->lists[i], *n; while (t != b[i]) { n = t->next; (*(ht->deldata))(t->data); freemem(t); t = n; } ht->lists[i] = b[i]; } } /* * This function is evil. It inserts a new item in a saved hash table, * tweaking the save buffer and the hash table in order to keep things * stable. There are no checks. */ void tweakHT(struct HT *ht, void **buffer, void *data) { int h; struct hash_item *d, *e; h = ((*(ht->hash))(data)); #ifndef FAST_HASH h %= ht->nb_lists; #endif for (d = ht->lists[h]; d != buffer[h]; d = d->next); d = add_entry(buffer[h], data); if (buffer[h] == ht->lists[h]) { buffer[h] = ht->lists[h] = d; return; } for (e = ht->lists[h]; e->next != buffer[h]; e = e->next); e->next = d; buffer[h] = d; } /* * This function scans the whole table and calls the given function on * each entry. */ void scanHT(struct HT *ht, void (*action)(void *)) { int i; for (i = 0; i < ht->nb_lists; i ++) { struct hash_item *t = ht->lists[i]; while (t) { (*action)(t->data); t = t->next; } } } /* * The two following fonctions are generic for storing structures * uniquely identified by their name, which must be the first * field of the structure. */ int hash_struct(void *m) { char *n = *(char **)m; #ifdef FAST_HASH return hash_string(n); #else return hash_string(n) & 127; #endif } int cmp_struct(void *m1, void *m2) { char *n1 = *(char **)m1, *n2 = *(char **)m2; return !strcmp(n1, n2); } Convert-Binary-C-0.85/ucpp/arith.h0000644000175000001440000002472714676735310015462 0ustar mhxusers/* * Integer arithmetic evaluation, header file. * * (c) Thomas Pornin 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ /* * This arithmetic evaluator uses two files: this header file (arith.h) * and the source file (arith.c). To use this code, the source file should * be included from another .c file which defines some macros (see below). * Then the functions defined in the arith.c file become available to the * including source file. If those functions are defined with external * linkage (that is, `ARITH_FUNCTION_HEADER' does not contain `static'), * it is possible for other source files to use the arithmetic functions * by including the arith.h header only. The source file which includes * arith.c should *not* include arith.h. * * If the #include is for arith.h, the following macros should be * defined: * * -- If the evaluator is supposed to use a native type: * NATIVE_SIGNED the native signed integer type * NATIVE_UNSIGNED the native unsigned integer type * * -- If the evaluator is supposed to use an emulated type: * SIMUL_ARITH_SUBTYPE the native unsigned type used for the simulation * SIMUL_SUBTYPE_BITS the native unsigned type size * SIMUL_NUMBITS the emulated type size * * -- For both cases: * ARITH_TYPENAME the central arithmetic type name * ARITH_FUNCTION_HEADER the qualifiers to add to function definitions * * The presence (respectively absence) of the NATIVE_SIGNED macro triggers * the use of the native type evaluator (respectively simulated type * evaluator). * * If the #include is for arith.c, the macros for arith.h should be defined, * and the following should be defined as well: * * -- If the evaluator is supposed to use a native type: * NATIVE_UNSIGNED_BITS the native unsigned type size * NATIVE_SIGNED_MIN the native signed minimum value * NATIVE_SIGNED_MAX the native signed maximum value * (the last two macros must evaluate to signed constant expressions) * * -- For both cases: * ARITH_WARNING(type) code to perform on warning * ARITH_ERROR(type) code to perform on error * * The macro ARITH_WARNING() and ARITH_ERROR() are invoked with a * numerical argument which is one of the enumeration constants * defined below (ARITH_EXCEP_*) that identifies the specific problem. * * If the #include is for arith.c, the macro ARITHMETIC_CHECKS may be * defined. When this macro is defined, checks are performed so that all * operation which would lead to undefined or implementation-defined * behaviour are first reported through ARITH_WARNING(). Code is smaller * and faster without these checks, of course. Regardless of the status * of that macro, divisions by 0 and overflows on signed division are * reported as errors through ARITH_ERROR(). * */ #ifndef ARITH_H__ #define ARITH_H__ enum { /* Warnings */ ARITH_EXCEP_CONV_O, /* overflow on conversion */ ARITH_EXCEP_NEG_O, /* overflow on unary minus */ ARITH_EXCEP_NOT_T, /* trap representation on bitwise inversion */ ARITH_EXCEP_PLUS_O, /* overflow on addition */ ARITH_EXCEP_PLUS_U, /* underflow on addition */ ARITH_EXCEP_MINUS_O, /* overflow on subtraction */ ARITH_EXCEP_MINUS_U, /* underflow on subtraction */ ARITH_EXCEP_AND_T, /* trap representation on bitwise and */ ARITH_EXCEP_XOR_T, /* trap representation on bitwise xor */ ARITH_EXCEP_OR_T, /* trap representation on bitwise or */ ARITH_EXCEP_LSH_W, /* left shift by type width or more */ ARITH_EXCEP_LSH_C, /* left shift by negative count */ ARITH_EXCEP_LSH_O, /* overflow on left shift */ ARITH_EXCEP_LSH_U, /* underflow on left shift */ ARITH_EXCEP_RSH_W, /* right shift by type width or more */ ARITH_EXCEP_RSH_C, /* right shift by negative count */ ARITH_EXCEP_RSH_N, /* right shift of negative value */ ARITH_EXCEP_STAR_O, /* overflow on multiplication */ ARITH_EXCEP_STAR_U, /* underflow on multiplication */ /* Errors */ ARITH_EXCEP_SLASH_D, /* division by 0 */ ARITH_EXCEP_SLASH_O, /* overflow on division */ ARITH_EXCEP_PCT_D, /* division by 0 on modulus operator */ ARITH_EXCEP_CONST_O /* constant too large */ }; #if !(defined pARI && defined aARI) #define pARI void #define pARI_ #define aARI #define aARI_ #define useARI ((void) 0) #else #define pARI_ pARI, #define aARI_ aARI, #define useARI ((void) aARI) #endif #define arith_strc_(x, y) x ## y #define arith_strc(x, y) arith_strc_(x, y) #define arith_u arith_strc(u_, ARITH_TYPENAME) #define arith_s arith_strc(s_, ARITH_TYPENAME) #define arith_op_u(op) arith_strc(ARITH_TYPENAME, arith_strc(_u_, op)) #define arith_op_s(op) arith_strc(ARITH_TYPENAME, arith_strc(_s_, op)) #define ARITH_DECL_MONO_U_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_u(op)(pARI_ arith_u x) #define ARITH_DECL_MONO_U_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_u(op)(pARI_ arith_u x) #define ARITH_DECL_MONO_U_I(op) ARITH_FUNCTION_HEADER int \ arith_op_u(op)(pARI_ arith_u x) #define ARITH_DECL_MONO_U_L(op) ARITH_FUNCTION_HEADER unsigned long \ arith_op_u(op)(pARI_ arith_u x) #define ARITH_DECL_MONO_S_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_s(op)(pARI_ arith_s x) #define ARITH_DECL_MONO_S_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_s(op)(pARI_ arith_s x) #define ARITH_DECL_MONO_S_I(op) ARITH_FUNCTION_HEADER int \ arith_op_s(op)(pARI_ arith_s x) #define ARITH_DECL_MONO_S_L(op) ARITH_FUNCTION_HEADER long \ arith_op_s(op)(pARI_ arith_s x) #define ARITH_DECL_MONO_I_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_u(op)(pARI_ int x) #define ARITH_DECL_MONO_L_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_u(op)(pARI_ unsigned long x) #define ARITH_DECL_MONO_I_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_s(op)(pARI_ int x) #define ARITH_DECL_MONO_L_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_s(op)(pARI_ long x) #define ARITH_DECL_MONO_ST_US(op) ARITH_FUNCTION_HEADER char *arith_op_u(op) \ (pARI_ char *c, arith_u *ru, arith_s *rs, int *sp) #define ARITH_DECL_BI_UU_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_u(op)(pARI_ arith_u x, arith_u y) #define ARITH_DECL_BI_UI_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_u(op)(pARI_ arith_u x, int y) #define ARITH_DECL_BI_UU_I(op) ARITH_FUNCTION_HEADER int \ arith_op_u(op)(pARI_ arith_u x, arith_u y) #define ARITH_DECL_BI_SS_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_s(op)(pARI_ arith_s x, arith_s y) #define ARITH_DECL_BI_SI_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_s(op)(pARI_ arith_s x, int y) #define ARITH_DECL_BI_SS_I(op) ARITH_FUNCTION_HEADER int \ arith_op_s(op)(pARI_ arith_s x, arith_s y) #endif #ifdef NATIVE_SIGNED typedef NATIVE_SIGNED arith_s; typedef NATIVE_UNSIGNED arith_u; #else #if SIMUL_NUMBITS > (2 * SIMUL_SUBTYPE_BITS) #error Native subtype too small for arithmetic simulation. #endif #define SIMUL_MSW_WIDTH (SIMUL_NUMBITS / 2) #define SIMUL_LSW_WIDTH ((SIMUL_NUMBITS + 1) / 2) typedef struct { SIMUL_ARITH_SUBTYPE msw, lsw; } arith_u, arith_s; #endif /* functions with the unsigned type */ ARITH_DECL_MONO_S_U(to_u); ARITH_DECL_MONO_I_U(fromint); ARITH_DECL_MONO_L_U(fromulong); ARITH_DECL_MONO_U_I(toint); ARITH_DECL_MONO_U_L(toulong); ARITH_DECL_MONO_U_U(neg); ARITH_DECL_MONO_U_U(not); ARITH_DECL_MONO_U_I(lnot); ARITH_DECL_MONO_U_I(lval); ARITH_DECL_BI_UU_U(plus); ARITH_DECL_BI_UU_U(minus); ARITH_DECL_BI_UI_U(lsh); ARITH_DECL_BI_UI_U(rsh); ARITH_DECL_BI_UU_I(lt); ARITH_DECL_BI_UU_I(leq); ARITH_DECL_BI_UU_I(gt); ARITH_DECL_BI_UU_I(geq); ARITH_DECL_BI_UU_I(same); ARITH_DECL_BI_UU_I(neq); ARITH_DECL_BI_UU_U(and); ARITH_DECL_BI_UU_U(xor); ARITH_DECL_BI_UU_U(or); ARITH_DECL_BI_UU_U(star); ARITH_DECL_BI_UU_U(slash); ARITH_DECL_BI_UU_U(pct); /* functions with the signed type */ ARITH_DECL_MONO_U_S(to_s); ARITH_DECL_MONO_I_S(fromint); ARITH_DECL_MONO_L_S(fromlong); ARITH_DECL_MONO_S_I(toint); ARITH_DECL_MONO_S_L(tolong); ARITH_DECL_MONO_S_S(neg); ARITH_DECL_MONO_S_S(not); ARITH_DECL_MONO_S_I(lnot); ARITH_DECL_MONO_S_I(lval); ARITH_DECL_BI_SS_S(plus); ARITH_DECL_BI_SS_S(minus); ARITH_DECL_BI_SI_S(lsh); ARITH_DECL_BI_SI_S(rsh); ARITH_DECL_BI_SS_I(lt); ARITH_DECL_BI_SS_I(leq); ARITH_DECL_BI_SS_I(gt); ARITH_DECL_BI_SS_I(geq); ARITH_DECL_BI_SS_I(same); ARITH_DECL_BI_SS_I(neq); ARITH_DECL_BI_SS_S(and); ARITH_DECL_BI_SS_S(xor); ARITH_DECL_BI_SS_S(or); ARITH_DECL_BI_SS_S(star); ARITH_DECL_BI_SS_S(slash); ARITH_DECL_BI_SS_S(pct); /* conversions from string */ ARITH_DECL_MONO_ST_US(octconst); ARITH_DECL_MONO_ST_US(hexconst); ARITH_DECL_MONO_ST_US(decconst); Convert-Binary-C-0.85/ucpp/ucpp.10000644000175000001440000001025314676735310015220 0ustar mhxusers.TH UCPP 1 "Oct 21 2000" .SH NAME ucpp \- C preprocessor .SH SYNOPSIS .B ucpp [ .I options ] [ .I file ] .SH DESCRIPTION .LP .B ucpp is a C preprocessor mostly compatible with ISO-C99. It is rather strict and uses only a small amount of memory. It uses standard input as primary input if no file argument is given. .SH OPTIONS There are several classes of options. .TP .B Language Options .TP .BI \-C keep comments in the output. .TP .BI \-s if a rogue '#' is encountered, do not emit an error and keep it in the output. .TP .BI \-l supress the emission of '#line' directives in the output. .TP .BI \-lg convert the '#line' to the gcc-style equivalent. .TP .BI \-CC disable C++-like comments (a '//' begins a comment, up to the end of the line). Use this option to get closer to C90 behaviour. .TP .B \-a, \-na handle assertions (defined with #assert); .B \-a also defines the standard assertions .I #machine , .I #cpu and .I #system (see .B \-e to get the local definition of such assertions). .TP .BI \-a0 disable assertion support. .TP .BI \-V disable support for macros with a variable number of arguments: in C99, a macro may be declared with .I ... as the last argument; inside the replacement list, .I __VA_ARGS__ is replaced with the optional extra arguments given in the call to the macro. Use this option to get closer to C90 behaviour. .TP .BI \-u enable UTF-8 support: with this option, the source is considered as an ISO/10646 source, encoded in UTF-8. Characters represented as two bytes or more are considered as alphabetic characters, like letters, and therefore usable in identifiers. These characters hold the same syntactic value than the corresponding Universal Character Names. .TP .BI \-X enable .B \-a, \-u and .B \-Y. This should make .B ucpp behave closer to what is requested from a "modern" C preprocessor. .TP .BI \-c90 enable .B \-V and .B \-CC, and do not define .B __STDC_VERSION__. This should make .B ucpp mimic older C90 behaviour. .TP .BI \-t disable trigraph support; this seems to be required for some legacy code. .TP .B Warning Options .TP .BI \-wt emit a final warning when trigraphs are encountered. .TP .BI \-wtt emit warnings for each trigraph encountered. .TP .BI \-wa emit annoying warnings (these are usually useless). .TP .BI \-w0 supress standard warnings. .TP .B Directory Options .TP .BI \-I directory .TP .BI "\-I " directory add .I directory to the include path, before the standard include path. .TP .BI \-J directory .TP .BI "\-J " directory add .I directory to the include path, after the standard include path. .TP .BI \-zI do not use the standard (compile-time) include path. .TP .BI \-M emit only the names of encountered files, separated by spaces; this is intended for automatic generation of Makefile dependencies. .TP .BI \-Ma do the same as .B \-M but also for system files. .TP .BI "\-o " file direct the ouput to .I file instead of standard output. .TP .B Macro Options .TP .BI \-D macro predefine .I macro with content .B 1. .TP .BI \-D macro=def predefine .I macro with the content .I def. .TP .BI \-U macro undefine .I macro. .TP .BI \-Y predefine system-dependant macros. .TP .BI \-Z do not predefine special macros such as .B __TIME__. .TP .BI \-A foo(bar) add .I foo(bar) to the list of assertions. .TP .BI \-B foo(bar) remove .I foo(bar) of the list of assertions; you may also use .BI \-B foo to remove all .BI \-B foo(xxx) from the list of assertions. .TP .BI \-d instead of normal output, emit '#define' directives representing all macros defined during processing. .TP .BI \-e instead of normal output, emit '#assert' directives representing all assertions defined during processing. .TP .B Miscellaneous Options .TP .BI \-v print version number, include path and (optionaly) defined assertions. .TP .BI \-h print some help. .SH ENVIRONMENT .PP .B ucpp is not itself affected by environment variables. However, it uses library functions that might be affected, depending on the system. .SH AUTHOR Thomas Pornin .SH BUGS .PP .B ucpp is considered stable software. However improbable it is, please report bugs to the author (possibly with a file that exhibits the problem) if the latest version, available from this site: .TP http://pornin.nerim.net/ucpp/ .PP has the bug. Convert-Binary-C-0.85/ucpp/cpp.c0000644000175000001440000020773614676735310015133 0ustar mhxusers/* * C and T preprocessor, and integrated lexer * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #define VERS_MAJ 1 #define VERS_MIN 3 /* uncomment the following if you cannot set it with a compiler flag */ /* #define STAND_ALONE */ #include "tune.h" #include #include #include #include #include #include #include #include "ucppi.h" #include "mem.h" #include "nhash.h" #ifdef UCPP_MMAP #include #include #include #include #endif /* * The standard path where includes are looked for. */ #ifdef STAND_ALONE static char *include_path_std[] = { STD_INCLUDE_PATH, 0 }; #endif #ifndef UCPP_REENTRANT static char **include_path; static size_t include_path_nb = 0; #endif #ifndef UCPP_REENTRANT int no_special_macros = 0; int emit_dependencies = 0, emit_defines = 0, emit_assertions = 0; FILE *emit_output; #endif #ifdef STAND_ALONE static char *system_macros_def[] = { STD_MACROS, 0 }; static char *system_assertions_def[] = { STD_ASSERT, 0 }; #endif #ifndef UCPP_REENTRANT char *current_filename = 0, *current_long_filename = 0; static int current_incdir = -1; #endif #ifdef UCPP_REENTRANT #define include_path (REENTR->_cpp.include_path) #define include_path_nb (REENTR->_cpp.include_path_nb) #define current_incdir (REENTR->_cpp.current_incdir) #define ls_depth (REENTR->_cpp.ls_depth) #define ls_stack (REENTR->_cpp.ls_stack) #define find_file_error (REENTR->_cpp.find_file_error) #define protect_detect_stack (REENTR->_cpp.protect_detect_stack) #define found_files (REENTR->_cpp.found_files) #define found_files_sys (REENTR->_cpp.found_files_sys) #define found_files_init_done (REENTR->_cpp.found_files_init_done) #define found_files_sys_init_done (REENTR->_cpp.found_files_sys_init_done) #endif /* UCPP_REENTRANT */ #ifndef NO_UCPP_ERROR_FUNCTIONS /* * "ouch" is the name for an internal ucpp error. If AUDIT is not defined, * no code calling this function will be generated; a "ouch" may still be * emitted by getmem() (in mem.c) if MEM_CHECK is defined, but this "ouch" * does not use this function. */ #ifdef UCPP_REENTRANT static #endif void ucpp_ouch(pCPP_ char *fmt, ...) { va_list ap; va_start(ap, fmt); fprintf(stderr, "%s: ouch, ", current_filename); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); va_end(ap); die(); } /* * report an error, with current_filename, line, and printf-like syntax */ #ifdef UCPP_REENTRANT static #endif void ucpp_error(pCPP_ long line, char *fmt, ...) { va_list ap; va_start(ap, fmt); if (line > 0) fprintf(stderr, "%s: line %ld: ", current_filename, line); else if (line == 0) fprintf(stderr, "%s: ", current_filename); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); if (line >= 0) { struct stack_context *sc = report_context(aCPP); size_t i; for (i = 0; sc[i].line >= 0; i ++) fprintf(stderr, "\tincluded from %s:%ld\n", sc[i].long_name ? sc[i].long_name : sc[i].name, sc[i].line); freemem(sc); } va_end(ap); } /* * like error(), with the mention "warning" */ #ifdef UCPP_REENTRANT static #endif void ucpp_warning(pCPP_ long line, char *fmt, ...) { va_list ap; va_start(ap, fmt); if (line > 0) fprintf(stderr, "%s: warning: line %ld: ", current_filename, line); else if (line == 0) fprintf(stderr, "%s: warning: ", current_filename); else fprintf(stderr, "warning: "); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); if (line >= 0) { struct stack_context *sc = report_context(aCPP); size_t i; for (i = 0; sc[i].line >= 0; i ++) fprintf(stderr, "\tincluded from %s:%ld\n", sc[i].long_name ? sc[i].long_name : sc[i].name, sc[i].line); freemem(sc); } va_end(ap); } #endif /* NO_UCPP_ERROR_FUNCTIONS */ #ifdef UCPP_REENTRANT struct CPP *new_cpp(void) { struct CPP *REENTR = getmem(sizeof(struct CPP)); memset(REENTR, 0, sizeof(struct CPP)); #ifndef NO_UCPP_ERROR_FUNCTIONS REENTR->ucpp_ouch = ucpp_ouch; REENTR->ucpp_error = ucpp_error; REENTR->ucpp_warning = ucpp_warning; #endif REENTR->_lexer.sm = new_cppm(); /* from macro.c */ c99_compliant = 1; c99_hosted = 1; /* from cpp.c */ current_incdir = -1; return REENTR; } void del_cpp(struct CPP *c) { if (c) { del_cppm(c->_lexer.sm); freemem(c); } } #endif /* * Some memory allocations are manually garbage-collected; essentially, * strings duplicated in the process of macro replacement. Each such * string is referenced in the garbage_fifo, which is cleared when all * nested macros have been resolved. */ struct garbage_fifo { char **garbage; size_t ngarb, memgarb; }; /* * throw_away() marks a string to be collected later */ void throw_away(struct garbage_fifo *gf, char *n) { wan(gf->garbage, gf->ngarb, n, gf->memgarb); } /* * free marked strings */ void garbage_collect(struct garbage_fifo *gf) { size_t i; for (i = 0; i < gf->ngarb; i ++) freemem(gf->garbage[i]); gf->ngarb = 0; } static void init_garbage_fifo(struct garbage_fifo *gf) { gf->garbage = getmem((gf->memgarb = GARBAGE_LIST_MEMG) * sizeof(char *)); gf->ngarb = 0; } static void free_garbage_fifo(struct garbage_fifo *gf) { garbage_collect(gf); freemem(gf->garbage); freemem(gf); } /* * order is important: it must match the token-constants declared as an * enum in the header file. */ char *operators_name[] = { " ", "\n", " ", "0000", "name", "bunch", "pragma", "context", "\"dummy string\"", "'dummy char'", "/", "/=", "-", "--", "-=", "->", "+", "++", "+=", "<", "<=", "<<", "<<=", ">", ">=", ">>", ">>=", "=", "==", #ifdef CAST_OP "=>", #endif "~", "!=", "&", "&&", "&=", "|", "||", "|=", "%", "%=", "*", "*=", "^", "^=", "!", "{", "}", "[", "]", "(", ")", ",", "?", ";", ":", ".", "...", "#", "##", " ", "ouch", "<:", ":>", "<%", "%>", "%:", "%:%:" }; /* the ascii representation of a token */ #ifdef SEMPER_FIDELIS #define tname(x) (ttWHI((x).type) ? " " : S_TOKEN((x).type) \ ? (x).name : operators_name[(x).type]) #else #define tname(x) (S_TOKEN((x).type) ? (x).name \ : operators_name[(x).type]) #endif char *token_name(struct token *t) { return tname(*t); } /* * To speed up deeply nested and repeated inclusions, we: * -- use a hash table to remember where we found each file * -- remember when the file is protected by a #ifndef/#define/#endif * construction; we can then avoid including several times a file * when this is not necessary. * -- remember in which directory, in the include path, the file was found. */ struct found_file { hash_item_header head; /* first field */ char *name; char *protect; }; /* * For files from system include path. */ struct found_file_sys { hash_item_header head; /* first field */ struct found_file *rff; int incdir; }; #ifndef UCPP_REENTRANT static HTT found_files, found_files_sys; static int found_files_init_done = 0, found_files_sys_init_done = 0; #endif static struct found_file *new_found_file(void) { struct found_file *ff = getmem(sizeof(struct found_file)); ff->name = 0; ff->protect = 0; return ff; } static void del_found_file(void *m) { struct found_file *ff = (struct found_file *)m; if (ff->name) freemem(ff->name); if (ff->protect) freemem(ff->protect); freemem(ff); } static struct found_file_sys *new_found_file_sys(void) { struct found_file_sys *ffs = getmem(sizeof(struct found_file_sys)); ffs->rff = 0; ffs->incdir = -1; return ffs; } static void del_found_file_sys(void *m) { struct found_file_sys *ffs = (struct found_file_sys *)m; freemem(ffs); } #ifdef UCPP_CLONE static void *clone_found_file(const void *m) { const struct found_file *src = m; struct found_file *dst = getmem(sizeof(struct found_file)); dst->name = src->name ? sdup(src->name) : src->name; dst->protect = src->protect ? sdup(src->protect) : src->protect; return dst; } static void *clone_found_file_sys(const void *m) { const struct found_file_sys *src = m; struct found_file_sys *dst = getmem(sizeof(struct found_file_sys)); dst->rff = src->rff; dst->incdir = src->incdir; return dst; } #endif /* UCPP_CLONE */ /* * To keep up with the #ifndef/#define/#endif protection mechanism * detection. */ #ifndef UCPP_REENTRANT struct protect protect_detect; static struct protect *protect_detect_stack = 0; #endif void set_init_filename(pCPP_ char *x, int real_file) { if (current_filename) freemem(current_filename); current_filename = sdup(x); current_long_filename = 0; current_incdir = -1; if (real_file) { protect_detect.macro = 0; protect_detect.state = 1; protect_detect.ff = new_found_file(); protect_detect.ff->name = sdup(x); HTT_put(&found_files, protect_detect.ff, x); } else { protect_detect.state = 0; } } static void init_found_files(pCPP) { if (found_files_init_done) HTT_kill(&found_files); HTT_init(&found_files, del_found_file _aCLONE(clone_found_file)); found_files_init_done = 1; if (found_files_sys_init_done) HTT_kill(&found_files_sys); HTT_init(&found_files_sys, del_found_file_sys _aCLONE(clone_found_file_sys)); found_files_sys_init_done = 1; } /* * Set the lexer state at the beginning of a file. */ static void reinit_lexer_state(struct lexer_state *ls, int wb) { #ifndef NO_UCPP_BUF ls->input_buf = wb ? getmem(INPUT_BUF_MEMG) : 0; #ifdef UCPP_MMAP ls->from_mmap = 0; #endif #endif ls->input = 0; ls->ebuf = ls->pbuf = 0; ls->nlka = 0; ls->macfile = 0; ls->discard = 1; ls->last = 0; /* we suppose '\n' is not 0 */ ls->line = 1; ls->ltwnl = 1; ls->oline = 1; ls->pending_token = 0; #ifndef NO_UCPP_COPY_LINE ls->cli = 0; ls->copy_line[COPY_LINE_LENGTH - 1] = 0; #endif ls->ifnest = 0; ls->condf[0] = ls->condf[1] = 0; } /* * Initialize the struct lexer_state, with optional input and output buffers. */ void init_buf_lexer_state(struct lexer_state *ls, int wb) { reinit_lexer_state(ls, wb); #ifndef NO_UCPP_BUF ls->output_buf = wb ? getmem(OUTPUT_BUF_MEMG) : 0; #endif ls->sbuf = 0; ls->output_fifo = 0; ls->ctok = getmem(sizeof(struct token)); ls->ctok->name = getmem(ls->tknl = TOKEN_NAME_MEMG); ls->pending_token = 0; ls->flags = 0; ls->count_trigraphs = 0; ls->gf = getmem(sizeof(struct garbage_fifo)); init_garbage_fifo(ls->gf); ls->condcomp = 1; ls->condnest = 0; #ifdef INMACRO_FLAG ls->inmacro = 0; ls->macro_count = 0; #endif } /* * Initialize the (complex) struct lexer_state. */ void init_lexer_state(struct lexer_state *ls) { init_buf_lexer_state(ls, 1); ls->input = 0; } /* * Restore what is needed from a lexer_state. This is used for #include. */ static void restore_lexer_state(struct lexer_state *ls, struct lexer_state *lsbak) { #ifndef NO_UCPP_BUF freemem(ls->input_buf); ls->input_buf = lsbak->input_buf; #ifdef UCPP_MMAP ls->from_mmap = lsbak->from_mmap; ls->input_buf_sav = lsbak->input_buf_sav; #endif #endif ls->input = lsbak->input; ls->ebuf = lsbak->ebuf; ls->pbuf = lsbak->pbuf; ls->nlka = lsbak->nlka; ls->discard = lsbak->discard; ls->line = lsbak->line; ls->oline = lsbak->oline; ls->ifnest = lsbak->ifnest; ls->condf[0] = lsbak->condf[0]; ls->condf[1] = lsbak->condf[1]; } /* * close input file operations on a struct lexer_state */ static void close_input(struct lexer_state *ls) { #ifdef UCPP_MMAP if (ls->from_mmap) { munmap((void *)ls->input_buf, ls->ebuf); ls->from_mmap = 0; ls->input_buf = ls->input_buf_sav; } #endif if (ls->input) { fclose(ls->input); ls->input = 0; } } /* * file_context (and the two functions push_ and pop_) are used to save * all that is needed when including a file. */ struct file_context { struct lexer_state ls; char *name, *long_name; int incdir; }; #ifndef UCPP_REENTRANT static struct file_context *ls_stack; static size_t ls_depth = 0; #endif static void push_file_context(pCPP_ struct lexer_state *ls) { struct file_context fc; fc.name = current_filename; fc.long_name = current_long_filename; fc.incdir = current_incdir; mmv(&(fc.ls), ls, sizeof(struct lexer_state)); aol(ls_stack, ls_depth, fc, LS_STACK_MEMG); ls_depth --; aol(protect_detect_stack, ls_depth, protect_detect, LS_STACK_MEMG); protect_detect.macro = 0; } static void pop_file_context(pCPP_ struct lexer_state *ls) { #ifdef AUDIT if (ls_depth <= 0) ouch(aCPP_ "prepare to meet thy creator"); #endif close_input(ls); restore_lexer_state(ls, &(ls_stack[-- ls_depth].ls)); if (protect_detect.macro) freemem(protect_detect.macro); protect_detect = protect_detect_stack[ls_depth]; if (current_filename) freemem(current_filename); current_filename = ls_stack[ls_depth].name; current_long_filename = ls_stack[ls_depth].long_name; current_incdir = ls_stack[ls_depth].incdir; if (ls_depth == 0) { freemem(ls_stack); freemem(protect_detect_stack); } } /* * report_context() returns the list of successive includers of the * current file, ending with a dummy entry with a negative line number. * The caller is responsible for freeing the returned pointer. */ struct stack_context *report_context(pCPP) { struct stack_context *sc; size_t i; sc = getmem((ls_depth + 1) * sizeof(struct stack_context)); for (i = 0; i < ls_depth; i ++) { sc[i].name = ls_stack[ls_depth - i - 1].name; sc[i].long_name = ls_stack[ls_depth - i - 1].long_name; sc[i].line = ls_stack[ls_depth - i - 1].ls.line - 1; } sc[ls_depth].line = -1; return sc; } /* * init_lexer_mode() is used to end initialization of a struct lexer_state * if it must be used for a lexer */ void init_lexer_mode(struct lexer_state *ls) { ls->flags = DEFAULT_LEXER_FLAGS; ls->output_fifo = getmem(sizeof(struct token_fifo)); ls->output_fifo->art = ls->output_fifo->nt = 0; ls->toplevel_of = ls->output_fifo; ls->save_ctok = ls->ctok; } /* * release memory used by a struct lexer_state; this implies closing * any input stream held by this structure. */ void free_lexer_state(struct lexer_state *ls) { close_input(ls); #ifndef NO_UCPP_BUF if (ls->input_buf) { freemem(ls->input_buf); ls->input_buf = 0; } if (ls->output_buf) { freemem(ls->output_buf); ls->output_buf = 0; } #endif if (ls->ctok && (!ls->output_fifo || ls->output_fifo->nt == 0)) { freemem(ls->ctok->name); freemem(ls->ctok); ls->ctok = 0; } if (ls->gf) { free_garbage_fifo(ls->gf); ls->gf = 0; } if (ls->output_fifo) { freemem(ls->output_fifo); ls->output_fifo = 0; } } /* * Print line information. */ static void print_line_info(pCPP_ struct lexer_state *ls, unsigned long flags) { char *fn = current_long_filename ? current_long_filename : current_filename; char *b, *d; b = getmem(50 + strlen(fn)); if (flags & GCC_LINE_NUM) { sprintf(b, "# %ld \"%s\"\n", ls->line, fn); } else { sprintf(b, "#line %ld \"%s\"\n", ls->line, fn); } for (d = b; *d; d ++) put_char(aCPP_ ls, (unsigned char)(*d)); freemem(b); } /* * Enter a file; this implies the possible emission of a #line directive. * The flags used are passed as second parameter instead of being * extracted from the struct lexer_state. * * As a command-line option, gcc-like directives (with only a '#', * without 'line') may be produced. * * enter_file() returns 1 if a (CONTEXT) token was produced, 0 otherwise. */ int enter_file(pCPP_ struct lexer_state *ls, unsigned long flags) { char *fn = current_long_filename ? current_long_filename : current_filename; if (!(flags & LINE_NUM)) return 0; if ((flags & LEXER) && !(flags & TEXT_OUTPUT)) { struct token t; t.type = CONTEXT; t.line = ls->line; t.name = fn; print_token(aCPP_ ls, &t, 0); return 1; } print_line_info(aCPP_ ls, flags); ls->oline --; /* emitted #line troubled oline */ return 0; } #ifdef UCPP_MMAP /* * We open() the file, then fdopen() it and fseek() to its end. If the * fseek() worked, we try to mmap() the file, up to the point where we * arrived. * On an architecture where end-of-lines are multibytes and translated * into single '\n', bad things could happen. We strongly hope that, if * we could fseek() to the end but could not mmap(), then we can get back. */ static void *find_file_map; static size_t map_length; FILE *fopen_mmap_file(char *name) { FILE *f; int fd; long l; find_file_map = 0; fd = open(name, O_RDONLY, 0); if (fd < 0) return 0; l = lseek(fd, 0, SEEK_END); f = fdopen(fd, "r"); if (!f) { close(fd); return 0; } if (l < 0) return f; /* not seekable */ map_length = l; if ((find_file_map = mmap(0, map_length, PROT_READ, MAP_PRIVATE, fd, 0)) == MAP_FAILED) { /* we could not mmap() the file; get back */ find_file_map = 0; if (fseek(f, 0, SEEK_SET)) { /* bwaah... can't get back. This file is cursed. */ fclose(f); return 0; } } return f; } void set_input_file(struct lexer_state *ls, FILE *f) { ls->input = f; if (find_file_map) { ls->from_mmap = 1; ls->input_buf_sav = ls->input_buf; ls->input_buf = find_file_map; ls->pbuf = 0; ls->ebuf = map_length; } else { ls->from_mmap = 0; } } #endif /* * Find a file by looking through the include path. * return value: a FILE * on the file, opened in "r" mode, or 0. * * find_file_error will contain: * FF_ERROR on error (file not found or impossible to read) * FF_PROTECT file is protected and therefore useless to read * FF_KNOWN file is already known * FF_UNKNOWN file was not already known */ #ifndef UCPP_REENTRANT static int find_file_error; #endif enum { FF_ERROR, FF_PROTECT, FF_KNOWN, FF_UNKNOWN }; static FILE *find_file(pCPP_ char *name, int localdir) { FILE *f; int i, incdir = -1; size_t nl = strlen(name); char *s = 0; struct found_file *ff = 0, *nff; int lf = 0; int nffa = 0; find_file_error = FF_ERROR; protect_detect.state = -1; protect_detect.macro = 0; if (localdir) { int i; char *rfn = current_long_filename ? current_long_filename : current_filename; for (i = strlen(rfn) - 1; i >= 0; i --) #ifdef MSDOS if (rfn[i] == '\\') break; #else if (rfn[i] == '/') break; #endif #if defined MSDOS if (i >= 0 && *name != '\\' && (nl < 2 || name[1] != ':')) #elif defined AMIGA if (i >= 0 && *name != '/' && (nl < 2 || name[1] != ':')) #else if (i >= 0 && *name != '/') #endif { /* * current file is somewhere else, and the provided * file name is not absolute, so we must adjust the * base for looking for the file; besides, * found_files and found_files_loc are irrelevant * for this search. */ s = getmem(i + 2 + nl); mmv(s, rfn, i); #ifdef MSDOS s[i] = '\\'; #else s[i] = '/'; #endif mmv(s + i + 1, name, nl); s[i + 1 + nl] = 0; ff = HTT_get(&found_files, s); } else ff = HTT_get(&found_files, name); } if (!ff) { struct found_file_sys *ffs = HTT_get(&found_files_sys, name); if (ffs) { ff = ffs->rff; incdir = ffs->incdir; } } /* * At that point: if the file was found in the cache, ff points to * the cached descriptive structure; its name is s if s is not 0, * name otherwise. */ if (ff) goto found_file_cache; /* * This is the first time we find the file, or it was not protected. */ protect_detect.ff = new_found_file(); nffa = 1; if (localdir && #ifdef UCPP_MMAP (f = fopen_mmap_file(s ? s : name)) #else (f = fopen(s ? s : name, "r")) #endif ) { lf = 1; goto found_file; } /* * If s contains a name, that name is now irrelevant: it was a * filename for a search in the current directory, and the file * was not found. */ if (s) { freemem(s); s = 0; } for (i = 0; (size_t)i < include_path_nb; i ++) { size_t ni = strlen(include_path[i]); s = getmem(ni + nl + 2); mmv(s, include_path[i], ni); #ifdef AMIGA /* contributed by Volker Barthelmann */ if (ni == 1 && *s == '.') { *s = 0; ni = 0; } if (ni > 0 && s[ni - 1] != ':' && s[ni - 1] != '/') { s[ni] = '/'; mmv(s + ni + 1, name, nl + 1); } else { mmv(s + ni, name, nl + 1); } #else s[ni] = '/'; mmv(s + ni + 1, name, nl + 1); #endif #ifdef MSDOS /* on msdos systems, replace all / by \ */ { char *c; for (c = s; *c; c ++) if (*c == '/') *c = '\\'; } #endif incdir = i; if ((ff = HTT_get(&found_files, s)) != 0) { /* * The file is known, but not as a system include * file under the name provided. */ struct found_file_sys *ffs = new_found_file_sys(); ffs->rff = ff; ffs->incdir = incdir; HTT_put(&found_files_sys, ffs, name); freemem(s); s = 0; if (nffa) { del_found_file(protect_detect.ff); protect_detect.ff = 0; nffa = 0; } goto found_file_cache; } #ifdef UCPP_MMAP f = fopen_mmap_file(s); #else f = fopen(s, "r"); #endif if (f) goto found_file; freemem(s); s = 0; } zero_out: if (s) freemem(s); if (nffa) { del_found_file(protect_detect.ff); protect_detect.ff = 0; nffa = 0; } return 0; /* * This part is invoked when the file was found in the * cache. */ found_file_cache: if (ff->protect) { if (get_macro(aCPP_ ff->protect)) { /* file is protected, do not include it */ find_file_error = FF_PROTECT; goto zero_out; } /* file is protected but the guardian macro is not available; disable guardian detection. */ protect_detect.state = 0; } protect_detect.ff = ff; #ifdef UCPP_MMAP f = fopen_mmap_file(HASH_ITEM_NAME(ff)); #else f = fopen(HASH_ITEM_NAME(ff), "r"); #endif if (!f) goto zero_out; find_file_error = FF_KNOWN; goto found_file_2; /* * This part is invoked when we found a new file, which was not * yet referenced. If lf == 1, then the file was found directly, * otherwise it was found in some system include directory. * A new found_file structure has been allocated and is in * protect_detect.ff */ found_file: if (f && ((emit_dependencies == 1 && lf && current_incdir == -1) || emit_dependencies == 2)) { fprintf(emit_output, " %s", s ? s : name); } nff = protect_detect.ff; nff->name = sdup(name); #ifdef AUDIT if ( #endif HTT_put(&found_files, nff, s ? s : name) #ifdef AUDIT ) ouch(aCPP_ "filename collided with a wraith") #endif ; if (!lf) { struct found_file_sys *ffs = new_found_file_sys(); ffs->rff = nff; ffs->incdir = incdir; HTT_put(&found_files_sys, ffs, name); } if (s) freemem(s); s = 0; find_file_error = FF_UNKNOWN; ff = nff; found_file_2: if (s) freemem(s); current_long_filename = HASH_ITEM_NAME(ff); #ifdef NO_LIBC_BUF setbuf(f, 0); #endif current_incdir = incdir; return f; } /* * Find the named file by looking through the end of the include path. * This is for #include_next directives. * #include_next and #include_next "foo" are considered identical, * for all practical purposes. */ static FILE *find_file_next(pCPP_ char *name) { int i; size_t nl = strlen(name); FILE *f; struct found_file *ff; find_file_error = FF_ERROR; protect_detect.state = -1; protect_detect.macro = 0; for (i = current_incdir + 1; (size_t)i < include_path_nb; i ++) { char *s; size_t ni = strlen(include_path[i]); s = getmem(ni + nl + 2); mmv(s, include_path[i], ni); s[ni] = '/'; mmv(s + ni + 1, name, nl + 1); #ifdef MSDOS /* on msdos systems, replace all / by \ */ { char *c; for (c = s; *c; c ++) if (*c == '/') *c = '\\'; } #endif ff = HTT_get(&found_files, s); if (ff) { /* file was found in the cache */ if (ff->protect) { if (get_macro(aCPP_ ff->protect)) { find_file_error = FF_PROTECT; freemem(s); return 0; } /* file is protected but the guardian macro is not available; disable guardian detection. */ protect_detect.state = 0; } protect_detect.ff = ff; #ifdef UCPP_MMAP f = fopen_mmap_file(HASH_ITEM_NAME(ff)); #else f = fopen(HASH_ITEM_NAME(ff), "r"); #endif if (!f) { /* file is referenced but yet unavailable. */ freemem(s); return 0; } find_file_error = FF_KNOWN; freemem(s); s = HASH_ITEM_NAME(ff); } else { #ifdef UCPP_MMAP f = fopen_mmap_file(s); #else f = fopen(s, "r"); #endif if (f) { if (emit_dependencies == 2) { fprintf(emit_output, " %s", s); } ff = protect_detect.ff = new_found_file(); ff->name = sdup(s); #ifdef AUDIT if ( #endif HTT_put(&found_files, ff, s) #ifdef AUDIT ) ouch(aCPP_ "filename collided with a wraith") #endif ; find_file_error = FF_UNKNOWN; freemem(s); s = HASH_ITEM_NAME(ff); } } if (f) { current_long_filename = s; current_incdir = i; return f; } freemem(s); } return 0; } /* * The #if directive. This function parse the expression, performs macro * expansion (and handles the "defined" operator), and call eval_expr. * return value: 1 if the expression is true, 0 if it is false, -1 on error. */ static int handle_if(pCPP_ struct lexer_state *ls) { struct token_fifo tf, tf1, tf2, tf3, *save_tf; long l = ls->line; unsigned long z; int ret = 0, ltww = 1; /* first, get the whole line */ tf.art = tf.nt = 0; while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { struct token t; if (ltww && ttMWS(ls->ctok->type)) continue; ltww = ttMWS(ls->ctok->type); t.type = ls->ctok->type; t.line = l; if (S_TOKEN(ls->ctok->type)) { t.name = sdup(ls->ctok->name); throw_away(ls->gf, t.name); } aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } if (ltww && tf.nt) if ((-- tf.nt) == 0) freemem(tf.t); if (tf.nt == 0) { error(aCPP_ l, "void condition for a #if/#elif"); return -1; } /* handle the "defined" operator */ tf1.art = tf1.nt = 0; while (tf.art < tf.nt) { struct token *ct, rt; struct macro *m; size_t nidx, eidx; ct = tf.t + (tf.art ++); if (ct->type == NAME && !strcmp(ct->name, "defined")) { if (tf.art >= tf.nt) goto store_token; nidx = tf.art; if (ttMWS(tf.t[nidx].type)) if (++ nidx >= tf.nt) goto store_token; if (tf.t[nidx].type == NAME) { eidx = nidx; goto check_macro; } if (tf.t[nidx].type != LPAR) goto store_token; if (++ nidx >= tf.nt) goto store_token; if (ttMWS(tf.t[nidx].type)) if (++ nidx >= tf.nt) goto store_token; if (tf.t[nidx].type != NAME) goto store_token; eidx = nidx + 1; if (eidx >= tf.nt) goto store_token; if (ttMWS(tf.t[eidx].type)) if (++ eidx >= tf.nt) goto store_token; if (tf.t[eidx].type != RPAR) goto store_token; goto check_macro; } store_token: aol(tf1.t, tf1.nt, *ct, TOKEN_LIST_MEMG); continue; check_macro: m = get_macro(aCPP_ tf.t[nidx].name); rt.type = NUMBER; rt.name = m ? "1L" : "0L"; aol(tf1.t, tf1.nt, rt, TOKEN_LIST_MEMG); tf.art = eidx + 1; } freemem(tf.t); if (tf1.nt == 0) { error(aCPP_ l, "void condition (after expansion) for a #if/#elif"); return -1; } /* perform all macro substitutions */ tf2.art = tf2.nt = 0; save_tf = ls->output_fifo; ls->output_fifo = &tf2; while (tf1.art < tf1.nt) { struct token *ct; ct = tf1.t + (tf1.art ++); if (ct->type == NAME) { struct macro *m = get_macro(aCPP_ ct->name); if (m) { if (substitute_macro(aCPP_ ls, m, &tf1, 0, #ifdef NO_PRAGMA_IN_DIRECTIVE 1, #else 0, #endif ct->line)) { ls->output_fifo = save_tf; goto error1; } continue; } } else if ((ct->type == SHARP || ct->type == DIG_SHARP) && (ls->flags & HANDLE_ASSERTIONS)) { /* we have an assertion; parse it */ int nnp, ltww = 1; size_t i = tf1.art; struct token_fifo atl; char *aname; struct assert *a; int av = 0; struct token rt; atl.art = atl.nt = 0; while (i < tf1.nt && ttMWS(tf1.t[i].type)) i ++; if (i >= tf1.nt) goto assert_error; if (tf1.t[i].type != NAME) goto assert_error; aname = tf1.t[i ++].name; while (i < tf1.nt && ttMWS(tf1.t[i].type)) i ++; if (i >= tf1.nt) goto assert_generic; if (tf1.t[i].type != LPAR) goto assert_generic; i ++; for (nnp = 1; nnp && i < tf1.nt; i ++) { if (ltww && ttMWS(tf1.t[i].type)) continue; if (tf1.t[i].type == LPAR) nnp ++; else if (tf1.t[i].type == RPAR && (-- nnp) == 0) { tf1.art = i + 1; break; } ltww = ttMWS(tf1.t[i].type); aol(atl.t, atl.nt, tf1.t[i], TOKEN_LIST_MEMG); } if (nnp) goto assert_error; if (ltww && atl.nt && (-- atl.nt) == 0) freemem(atl.t); if (atl.nt == 0) goto assert_error; /* the assertion is in aname and atl; check it */ a = get_assertion(aCPP_ aname); if (a) for (i = 0; i < a->nbval; i ++) if (!cmp_token_list(&atl, a->val + i)) { av = 1; break; } rt.type = NUMBER; rt.name = av ? "1" : "0"; aol(tf2.t, tf2.nt, rt, TOKEN_LIST_MEMG); if (atl.nt) freemem(atl.t); continue; assert_generic: tf1.art = i; rt.type = NUMBER; rt.name = get_assertion(aCPP_ aname) ? "1" : "0"; aol(tf2.t, tf2.nt, rt, TOKEN_LIST_MEMG); continue; assert_error: error(aCPP_ l, "syntax error for assertion in #if"); ls->output_fifo = save_tf; goto error1; } aol(tf2.t, tf2.nt, *ct, TOKEN_LIST_MEMG); } ls->output_fifo = save_tf; freemem(tf1.t); if (tf2.nt == 0) { error(aCPP_ l, "void condition (after expansion) for a #if/#elif"); return -1; } /* * suppress whitespace and replace rogue identifiers by 0 */ tf3.art = tf3.nt = 0; while (tf2.art < tf2.nt) { struct token *ct = tf2.t + (tf2.art ++); if (ttMWS(ct->type)) continue; if (ct->type == NAME) { /* * a rogue identifier; we replace it with "0". */ struct token rt; rt.type = NUMBER; rt.name = "0"; aol(tf3.t, tf3.nt, rt, TOKEN_LIST_MEMG); continue; } aol(tf3.t, tf3.nt, *ct, TOKEN_LIST_MEMG); } freemem(tf2.t); if (tf3.nt == 0) { error(aCPP_ l, "void condition (after expansion) for a #if/#elif"); return -1; } eval_line = l; z = eval_expr(aCPP_ &tf3, &ret, (ls->flags & WARN_STANDARD) != 0); freemem(tf3.t); if (ret) return -1; return (z != 0); error1: if (tf1.nt) freemem(tf1.t); if (tf2.nt) freemem(tf2.t); return -1; } /* * A #include was found; parse the end of line, replace macros if * necessary. * * If nex is set to non-zero, the directive is considered as a #include_next * (extension to C99, mimicked from GNU) */ static int handle_include(pCPP_ struct lexer_state *ls, unsigned long flags, int nex) { int c, string_fname = 0; char *fname; unsigned char *fname2; size_t fname_ptr = 0; long l = ls->line; int x, y; FILE *f; struct token_fifo tf, tf2, *save_tf; size_t nl; int tgd; struct lexer_state alt_ls; #define left_angle(t) ((t) == LT || (t) == LEQ || (t) == LSH \ || (t) == ASLSH || (t) == DIG_LBRK || (t) == LBRA) #define right_angle(t) ((t) == GT || (t) == RSH || (t) == ARROW \ || (t) == DIG_RBRK || (t) == DIG_RBRA) while ((c = grap_char(aCPP_ ls)) >= 0 && c != '\n') { if (space_char(c)) { discard_char(aCPP_ ls); continue; } if (c == '<') { discard_char(aCPP_ ls); while ((c = grap_char(aCPP_ ls)) >= 0) { discard_char(aCPP_ ls); if (c == '\n') goto include_last_chance; if (c == '>') break; aol(fname, fname_ptr, (char)c, FNAME_MEMG); } aol(fname, fname_ptr, (char)0, FNAME_MEMG); string_fname = 0; goto do_include; } else if (c == '"') { discard_char(aCPP_ ls); while ((c = grap_char(aCPP_ ls)) >= 0) { discard_char(aCPP_ ls); if (c == '\n') { /* macro replacements won't save that one */ if (fname_ptr) freemem(fname); goto include_error; } if (c == '"') break; aol(fname, fname_ptr, (char)c, FNAME_MEMG); } aol(fname, fname_ptr, (char)0, FNAME_MEMG); string_fname = 1; goto do_include; } goto include_macro; } include_last_chance: /* * We found a '<' but not the trailing '>'; so we tokenize the * line, and try to act upon it. The standard lets us free in that * matter, and no sane programmer would use such a construct, but * it is no reason not to support it. */ if (fname_ptr == 0) goto include_error; fname2 = getmem(fname_ptr + 1); mmv(fname2 + 1, fname, fname_ptr); fname2[0] = '<'; /* * We merely copy the lexer_state structure; this should be ok, * since we do want to share the memory structure (garbage_fifo), * and do not touch any other context-full thing. */ alt_ls = *ls; alt_ls.input = 0; alt_ls.input_string = fname2; alt_ls.pbuf = 0; alt_ls.ebuf = fname_ptr + 1; tf.art = tf.nt = 0; while (!next_token(aCPP_ &alt_ls)) { if (!ttMWS(alt_ls.ctok->type)) { struct token t; t.type = alt_ls.ctok->type; t.line = l; if (S_TOKEN(alt_ls.ctok->type)) { t.name = sdup(alt_ls.ctok->name); throw_away(alt_ls.gf, t.name); } aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } } freemem(fname2); if (alt_ls.pbuf < alt_ls.ebuf) goto include_error; /* tokenizing failed */ goto include_macro2; include_error: error(aCPP_ l, "invalid '#include'"); return 1; include_macro: tf.art = tf.nt = 0; while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { if (!ttMWS(ls->ctok->type)) { struct token t; t.type = ls->ctok->type; t.line = l; if (S_TOKEN(ls->ctok->type)) { t.name = sdup(ls->ctok->name); throw_away(ls->gf, t.name); } aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } } include_macro2: tf2.art = tf2.nt = 0; save_tf = ls->output_fifo; ls->output_fifo = &tf2; while (tf.art < tf.nt) { struct token *ct; ct = tf.t + (tf.art ++); if (ct->type == NAME) { struct macro *m = get_macro(aCPP_ ct->name); if (m) { if (substitute_macro(aCPP_ ls, m, &tf, 0, #ifdef NO_PRAGMA_IN_DIRECTIVE 1, #else 0, #endif ct->line)) { ls->output_fifo = save_tf; return -1; } continue; } } aol(tf2.t, tf2.nt, *ct, TOKEN_LIST_MEMG); } freemem(tf.t); ls->output_fifo = save_tf; for (x = 0; (size_t)x < tf2.nt && ttWHI(tf2.t[x].type); x ++); for (y = tf2.nt - 1; y >= 0 && ttWHI(tf2.t[y].type); y --); if ((size_t)x >= tf2.nt) goto include_macro_err; if (tf2.t[x].type == STRING) { if (y != x) goto include_macro_err; if (tf2.t[x].name[0] == 'L') { if (ls->flags & WARN_STANDARD) warning(aCPP_ l, "wide string for #include"); fname = sdup(tf2.t[x].name); nl = strlen(fname); *(fname + nl - 1) = 0; mmvwo(fname, fname + 2, nl - 2); } else { fname = sdup(tf2.t[x].name); nl = strlen(fname); *(fname + nl - 1) = 0; mmvwo(fname, fname + 1, nl - 1); } string_fname = 1; } else if (left_angle(tf2.t[x].type) && right_angle(tf2.t[y].type)) { int i, j; if (ls->flags & WARN_ANNOYING) warning(aCPP_ l, "reconstruction " "of in #include"); for (j = 0, i = x; i <= y; i ++) if (!ttWHI(tf2.t[i].type)) j += strlen(tname(tf2.t[i])); fname = getmem(j + 1); for (j = 0, i = x; i <= y; i ++) { if (ttWHI(tf2.t[i].type)) continue; strcpy(fname + j, tname(tf2.t[i])); j += strlen(tname(tf2.t[i])); } *(fname + j - 1) = 0; mmvwo(fname, fname + 1, j); string_fname = 0; } else goto include_macro_err; freemem(tf2.t); goto do_include_next; include_macro_err: error(aCPP_ l, "macro expansion did not produce a valid filename " "for #include"); if (tf2.nt) freemem(tf2.t); return 1; do_include: tgd = 1; while (!next_token(aCPP_ ls)) { if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "trailing garbage in #include"); tgd = 0; } if (ls->ctok->type == NEWLINE) break; } /* the increment of ls->line is intended so that the line numbering is reported correctly in report_context() even if the #include is at the end of the file with no trailing newline */ if (ls->ctok->type != NEWLINE) ls->line ++; do_include_next: if (!(ls->flags & LEXER) && (ls->flags & KEEP_OUTPUT)) put_char(aCPP_ ls, '\n'); push_file_context(aCPP_ ls); reinit_lexer_state(ls, 1); #ifdef MSDOS /* on msdos systems, replace all / by \ */ { char *d; for (d = fname; *d; d ++) if (*d == '/') *d = '\\'; } #endif f = nex ? find_file_next(aCPP_ fname) : find_file(aCPP_ fname, string_fname); if (!f) { current_filename = 0; pop_file_context(aCPP_ ls); if (find_file_error == FF_ERROR) { error(aCPP_ l, "file '%s' not found", fname); freemem(fname); return 1; } /* file was found, but it is useless to include it again */ freemem(fname); return 0; } #ifdef UCPP_MMAP set_input_file(ls, f); #else ls->input = f; #endif current_filename = fname; enter_file(aCPP_ ls, flags); return 0; #undef left_angle #undef right_angle } /* * for #line directives */ static int handle_line(pCPP_ struct lexer_state *ls, unsigned long flags) { char *fname; long l = ls->line; struct token_fifo tf, tf2, *save_tf; size_t nl, j; unsigned long z; tf.art = tf.nt = 0; while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { if (!ttMWS(ls->ctok->type)) { struct token t; t.type = ls->ctok->type; t.line = l; if (S_TOKEN(ls->ctok->type)) { t.name = sdup(ls->ctok->name); throw_away(ls->gf, t.name); } aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } } tf2.art = tf2.nt = 0; save_tf = ls->output_fifo; ls->output_fifo = &tf2; while (tf.art < tf.nt) { struct token *ct; ct = tf.t + (tf.art ++); if (ct->type == NAME) { struct macro *m = get_macro(aCPP_ ct->name); if (m) { if (substitute_macro(aCPP_ ls, m, &tf, 0, #ifdef NO_PRAGMA_IN_DIRECTIVE 1, #else 0, #endif ct->line)) { ls->output_fifo = save_tf; return -1; } continue; } } aol(tf2.t, tf2.nt, *ct, TOKEN_LIST_MEMG); } freemem(tf.t); for (tf2.art = 0; tf2.art < tf2.nt && ttWHI(tf2.t[tf2.art].type); tf2.art ++); ls->output_fifo = save_tf; if (tf2.art == tf2.nt || (tf2.t[tf2.art].type != NUMBER && tf2.t[tf2.art].type != CHAR)) { error(aCPP_ l, "not a valid number for #line"); goto line_macro_err; } for (j = 0; tf2.t[tf2.art].name[j]; j ++) if (tf2.t[tf2.art].name[j] < '0' || tf2.t[tf2.art].name[j] > '9') if (ls->flags & WARN_STANDARD) warning(aCPP_ l, "non-standard line number in #line"); if (catch(eval_exception)) goto line_macro_err; z = strtoconst(aCPP_ tf2.t[tf2.art].name); if (j > 10 || z > 2147483647U) { error(aCPP_ l, "out-of-bound line number for #line"); goto line_macro_err; } ls->oline = ls->line = z; if ((++ tf2.art) < tf2.nt) { size_t i; for (i = tf2.art; i < tf2.nt && ttMWS(tf2.t[i].type); i ++); if (i < tf2.nt) { if (tf2.t[i].type != STRING) { error(aCPP_ l, "not a valid filename for #line"); goto line_macro_err; } if (tf2.t[i].name[0] == 'L') { if (ls->flags & WARN_STANDARD) { warning(aCPP_ l, "wide string for #line"); } fname = sdup(tf2.t[i].name); nl = strlen(fname); *(fname + nl - 1) = 0; mmvwo(fname, fname + 2, nl - 2); } else { fname = sdup(tf2.t[i].name); nl = strlen(fname); *(fname + nl - 1) = 0; mmvwo(fname, fname + 1, nl - 1); } if (current_filename) freemem(current_filename); current_filename = fname; } for (i ++; i < tf2.nt && ttMWS(tf2.t[i].type); i ++); if (i < tf2.nt && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "trailing garbage in #line"); } } freemem(tf2.t); enter_file(aCPP_ ls, flags); return 0; line_macro_err: if (tf2.nt) freemem(tf2.t); return 1; } /* * An #error or #warning directive: we emit the message without any * modification (except the usual backslash+newline and trigraphs) */ static void handle_error(pCPP_ struct lexer_state *ls, int iserror) { int c; size_t p = 0, lp = 128; long l = ls->line; unsigned char *buf = getmem(lp); while ((c = grap_char(aCPP_ ls)) >= 0 && c != '\n') { discard_char(aCPP_ ls); wan(buf, p, (unsigned char)c, lp); } wan(buf, p, 0, lp); if (iserror) error(aCPP_ l, "#error%s", buf); else warning(aCPP_ l, "#warning%s", buf); freemem(buf); } /* * convert digraph tokens to their standard equivalent. */ static int undig(int type) { static int ud[6] = { LBRK, RBRK, LBRA, RBRA, SHARP, DSHARP }; return ud[type - DIG_LBRK]; } #ifdef PRAGMA_TOKENIZE /* * Make a compressed representation of a token list; the contents of * the token_fifo are freed. Values equal to 0 are replaced by * PRAGMA_TOKEN_END (by default, (unsigned char)'\n') and the compressed * string is padded by a 0 (so that it may be * handled like a string). * Digraph tokens are replaced by their non-digraph equivalents. */ struct comp_token_fifo compress_token_list(struct token_fifo *tf) { struct comp_token_fifo ct; size_t l; for (l = 0, tf->art = 0; tf->art < tf->nt; tf->art ++) { l ++; if (S_TOKEN(tf->t[tf->art].type)) l += strlen(tf->t[tf->art].name) + 1; } ct.t = getmem((ct.length = l) + 1); for (l = 0, tf->art = 0; tf->art < tf->nt; tf->art ++) { int tt = tf->t[tf->art].type; if (tt == 0) tt = PRAGMA_TOKEN_END; if (tt > DIGRAPH_TOKENS && tt < DIGRAPH_TOKENS_END) tt = undig(tt); ct.t[l ++] = tt; if (S_TOKEN(tt)) { char *tn = tf->t[tf->art].name; size_t sl = strlen(tn); mmv(ct.t + l, tn, sl); l += sl; ct.t[l ++] = PRAGMA_TOKEN_END; freemem(tn); } } ct.t[l] = 0; if (tf->nt) freemem(tf->t); ct.rp = 0; return ct; } #endif /* * A #pragma directive: we make a PRAGMA token containing the rest of * the line. * * We strongly hope that we are called only in LEXER mode. */ static void handle_pragma(pCPP_ struct lexer_state *ls) { unsigned char *buf; struct token t; long l = ls->line; #ifdef PRAGMA_TOKENIZE struct token_fifo tf; tf.art = tf.nt = 0; while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (!ttMWS(ls->ctok->type)) break; if (ls->ctok->type != NEWLINE) { do { struct token t; t.type = ls->ctok->type; if (ttMWS(t.type)) continue; if (S_TOKEN(t.type)) t.name = sdup(ls->ctok->name); aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE); } if (tf.nt == 0) { /* void pragma are silently ignored */ return; } buf = (compress_token_list(&tf)).t; #else int c, x = 1, y = 32; while ((c = grap_char(ls)) >= 0 && c != '\n') { discard_char(aCPP_ ls); if (!space_char(c)) break; } /* void #pragma are ignored */ if (c == '\n') return; buf = getmem(y); buf[0] = c; while ((c = grap_char(ls)) >= 0 && c != '\n') { discard_char(aCPP_ ls); wan(buf, x, c, y); } for (x --; x >= 0 && space_char(buf[x]); x --); x ++; wan(buf, x, 0, y); #endif t.type = PRAGMA; t.line = l; t.name = (char *)buf; aol(ls->output_fifo->t, ls->output_fifo->nt, t, TOKEN_LIST_MEMG); throw_away(ls->gf, (char *)buf); } #include "scanppd.c" /* * We saw a # at the beginning of a line (or preceeded only by whitespace). * We check the directive name and act accordingly. */ static int handle_cpp(pCPP_ struct lexer_state *ls, int sharp_type) { #define condfset(x) do { \ ls->condf[(x) / 32] |= 1UL << ((x) % 32); \ } while (0) #define condfclr(x) do { \ ls->condf[(x) / 32] &= ~(1UL << ((x) % 32)); \ } while (0) #define condfval(x) ((ls->condf[(x) / 32] & (1UL << ((x) % 32))) != 0) long l = ls->line; unsigned long save_flags = ls->flags; int ret = 0; save_flags = ls->flags; ls->flags |= LEXER; while (!next_token(aCPP_ ls)) { int t = ls->ctok->type; switch (t) { case COMMENT: if (ls->flags & WARN_ANNOYING) { warning(aCPP_ l, "comment in the middle of " "a cpp directive"); } /* fall through */ case NONE: continue; case NEWLINE: /* null directive */ if (ls->flags & WARN_ANNOYING) { /* truly an annoying warning; null directives are rare but may increase readability of some source files, and they are legal */ warning(aCPP_ l, "null cpp directive"); } if (!(ls->flags & LEXER)) put_char(aCPP_ ls, '\n'); goto handle_exit2; case NAME: break; default: if (ls->flags & FAIL_SHARP) { if (ls->condcomp) { error(aCPP_ l, "rogue '#'"); ret = 1; } else { if (ls->flags & WARN_STANDARD) { warning(aCPP_ l, "rogue '#' in code " "compiled out"); ret = 0; } } ls->flags = save_flags; goto handle_warp_ign; } else { struct token u; u.type = sharp_type; u.line = l; ls->flags = save_flags; print_token(aCPP_ ls, &u, 0); print_token(aCPP_ ls, ls->ctok, 0); if (ls->flags & WARN_ANNOYING) { warning(aCPP_ l, "rogue '#' dumped"); } goto handle_exit3; } } if (ls->condcomp) { switch (scan_pp_directive(ls->ctok->name)) { case PPDIR_DEFINE: ret = handle_define(aCPP_ ls); goto handle_exit; case PPDIR_UNDEF: ret = handle_undef(aCPP_ ls); goto handle_exit; case PPDIR_IF: if ((++ ls->ifnest) > 63) goto too_many_if; condfclr(ls->ifnest - 1); ret = handle_if(aCPP_ ls); if (ret > 0) ret = 0; else if (ret == 0) { ls->condcomp = 0; ls->condmet = 0; ls->condnest = ls->ifnest - 1; } else ret = 1; goto handle_exit; case PPDIR_IFDEF: if ((++ ls->ifnest) > 63) goto too_many_if; condfclr(ls->ifnest - 1); ret = handle_ifdef(aCPP_ ls); if (ret > 0) ret = 0; else if (ret == 0) { ls->condcomp = 0; ls->condmet = 0; ls->condnest = ls->ifnest - 1; } else ret = 1; goto handle_exit; case PPDIR_IFNDEF: if ((++ ls->ifnest) > 63) goto too_many_if; condfclr(ls->ifnest - 1); ret = handle_ifndef(aCPP_ ls); if (ret > 0) ret = 0; else if (ret == 0) { ls->condcomp = 0; ls->condmet = 0; ls->condnest = ls->ifnest - 1; } else ret = 1; goto handle_exit; case PPDIR_ELSE: if (ls->ifnest == 0 || condfval(ls->ifnest - 1)) { error(aCPP_ l, "rogue #else"); ret = 1; goto handle_warp; } condfset(ls->ifnest - 1); if (ls->ifnest == 1) protect_detect.state = 0; ls->condcomp = 0; ls->condmet = 1; ls->condnest = ls->ifnest - 1; goto handle_warp; case PPDIR_ELIF: if (ls->ifnest == 0 || condfval(ls->ifnest - 1)) { error(aCPP_ l, "rogue #elif"); ret = 1; goto handle_warp_ign; } if (ls->ifnest == 1) protect_detect.state = 0; ls->condcomp = 0; ls->condmet = 1; ls->condnest = ls->ifnest - 1; goto handle_warp_ign; case PPDIR_ENDIF: if (ls->ifnest == 0) { error(aCPP_ l, "unmatched #endif"); ret = 1; goto handle_warp; } if ((-- ls->ifnest) == 0 && protect_detect.state == 2) { protect_detect.state = 3; } goto handle_warp; case PPDIR_INCLUDE: ret = handle_include(aCPP_ ls, save_flags, 0); goto handle_exit3; case PPDIR_INCLUDE_NEXT: ret = handle_include(aCPP_ ls, save_flags, 1); goto handle_exit3; case PPDIR_PRAGMA: if (!(save_flags & LEXER)) { #ifdef PRAGMA_DUMP /* dump #pragma in output */ struct token u; u.type = sharp_type; u.line = l; ls->flags = save_flags; print_token(aCPP_ ls, &u, 0); print_token(aCPP_ ls, ls->ctok, 0); while (ls->flags |= LEXER, !next_token(aCPP_ ls)) { long save_line; ls->flags &= ~LEXER; save_line = ls->line; ls->line = l; print_token(aCPP_ ls, ls->ctok, 0); ls->line = save_line; if (ls->ctok->type == NEWLINE) break; } goto handle_exit3; #else if (ls->flags & WARN_PRAGMA) warning(aCPP_ l, "#pragma ignored " "and not dumped"); goto handle_warp_ign; #endif } if (!(ls->flags & HANDLE_PRAGMA)) goto handle_warp_ign; handle_pragma(aCPP_ ls); goto handle_exit; case PPDIR_WARNING: handle_error(aCPP_ ls, 0); goto handle_exit; case PPDIR_ERROR: ret = 1; handle_error(aCPP_ ls, 1); goto handle_exit; case PPDIR_LINE: ret = handle_line(aCPP_ ls, save_flags); goto handle_exit; case PPDIR_ASSERT: if (ls->flags & HANDLE_ASSERTIONS) { ret = handle_assert(aCPP_ ls); goto handle_exit; } break; case PPDIR_UNASSERT: if (ls->flags & HANDLE_ASSERTIONS) { ret = handle_unassert(aCPP_ ls); goto handle_exit; } break; case PPDIR_IDENT: goto handle_warp_ign; default: break; } } else { switch (scan_pp_directive(ls->ctok->name)) { case PPDIR_ELSE: if (condfval(ls->ifnest - 1) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "rogue #else in code " "compiled out"); } if (ls->condnest == ls->ifnest - 1) { if (!ls->condmet) ls->condcomp = 1; } condfset(ls->ifnest - 1); if (ls->ifnest == 1) protect_detect.state = 0; goto handle_warp; case PPDIR_ELIF: if (condfval(ls->ifnest - 1) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "rogue #elif in code " "compiled out"); } if (ls->condnest != ls->ifnest - 1 || ls->condmet) goto handle_warp_ign; if (ls->ifnest == 1) protect_detect.state = 0; ret = handle_if(aCPP_ ls); if (ret > 0) { ls->condcomp = 1; ls->condmet = 1; ret = 0; } else if (ret < 0) ret = 1; goto handle_exit; case PPDIR_ENDIF: if ((-- ls->ifnest) == ls->condnest) { if (ls->ifnest == 0 && protect_detect.state == 2) protect_detect.state = 3; ls->condcomp = 1; } goto handle_warp; case PPDIR_IF: case PPDIR_IFDEF: case PPDIR_IFNDEF: if ((++ ls->ifnest) > 63) goto too_many_if; condfclr(ls->ifnest - 1); default: break; } goto handle_warp_ign; } /* * Unrecognized directive. We emit either an error or * an annoying warning, depending on a command-line switch. */ if (ls->flags & FAIL_SHARP) { error(aCPP_ l, "unknown cpp directive '#%s'", ls->ctok->name); goto handle_warp_ign; } else { struct token u; u.type = sharp_type; u.line = l; ls->flags = save_flags; print_token(aCPP_ ls, &u, 0); print_token(aCPP_ ls, ls->ctok, 0); if (ls->flags & WARN_ANNOYING) { warning(aCPP_ l, "rogue '#' dumped"); } } } return 1; handle_warp_ign: while (!next_token(aCPP_ ls)) if (ls->ctok->type == NEWLINE) break; goto handle_exit; handle_warp: while (!next_token(aCPP_ ls)) { if (!ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "trailing garbage in " "preprocessing directive"); } if (ls->ctok->type == NEWLINE) break; } handle_exit: if (!(ls->flags & LEXER)) put_char(aCPP_ ls, '\n'); handle_exit3: if (protect_detect.state == 1) { protect_detect.state = 0; } else if (protect_detect.state == -1) { /* just after the #include */ protect_detect.state = 1; } handle_exit2: ls->flags = save_flags; return ret; too_many_if: error(aCPP_ l, "too many levels of conditional inclusion (max 63)"); ret = 1; goto handle_warp; #undef condfset #undef condfclr #undef condfval } /* * This is the main entry function. It maintains count of #, and call the * appropriate functions when it encounters a cpp directive or a macro * name. * return value: positive on error; CPPERR_EOF means "end of input reached" */ int cpp(pCPP_ struct lexer_state *ls) { int r = 0; while (next_token(aCPP_ ls)) { if (protect_detect.state == 3) { /* * At that point, protect_detect.ff->protect might * be non-zero, if the file has been recursively * included, and a guardian detected. */ if (!protect_detect.ff->protect) { /* Cool ! A new guardian has been detected. */ protect_detect.ff->protect = protect_detect.macro; } else if (protect_detect.macro) { /* We found a guardian but an old one. */ freemem(protect_detect.macro); } protect_detect.macro = 0; } if (ls->ifnest) { error(aCPP_ ls->line, "unterminated #if construction " "(depth %ld)", ls->ifnest); r = CPPERR_NEST; } if (ls_depth == 0) return CPPERR_EOF; close_input(ls); if (!(ls->flags & LEXER) && !ls->ltwnl) put_char(aCPP_ ls, '\n'); pop_file_context(aCPP_ ls); ls->oline ++; if (enter_file(aCPP_ ls, ls->flags)) break; } if (!(ls->ltwnl && (ls->ctok->type == SHARP || ls->ctok->type == DIG_SHARP)) && protect_detect.state == 1 && !ttWHI(ls->ctok->type)) { /* the first non-whitespace token encountered is not a sharp introducing a cpp directive */ protect_detect.state = 0; } if (protect_detect.state == 3 && !ttWHI(ls->ctok->type)) { /* a non-whitespace token encountered after the #endif */ protect_detect.state = 0; } if (ls->condcomp) { if (ls->ltwnl && (ls->ctok->type == SHARP || ls->ctok->type == DIG_SHARP)) { int x = handle_cpp(aCPP_ ls, ls->ctok->type); ls->ltwnl = 1; return r ? r : x; } if (ls->ctok->type == NAME) { struct macro *m; if ((m = get_macro(aCPP_ ls->ctok->name)) != 0) { int x; x = substitute_macro(aCPP_ ls, m, 0, 1, 0, ls->ctok->line); if (!(ls->flags & LEXER)) garbage_collect(ls->gf); return r ? r : x; } if (!(ls->flags & LEXER)) print_token(aCPP_ ls, ls->ctok, 0); } } else { if (ls->ltwnl && (ls->ctok->type == SHARP || ls->ctok->type == DIG_SHARP)) { int x = handle_cpp(aCPP_ ls, ls->ctok->type); ls->ltwnl = 1; return r ? r : x; } } if (ls->ctok->type == NEWLINE) ls->ltwnl = 1; else if (!ttWHI(ls->ctok->type)) ls->ltwnl = 0; return r ? r : -1; } #ifndef STAND_ALONE /* * llex() and lex() are the lexing functions, when the preprocessor is * linked to another code. llex() should be called only by lex(). */ static int llex(pCPP_ struct lexer_state *ls) { int r; do { struct token_fifo *tf = ls->output_fifo; if (tf->nt != 0) { if (tf->art < tf->nt) { #ifdef INMACRO_FLAG if (!ls->inmacro) { ls->inmacro = 1; ls->macro_count ++; } #endif ls->ctok = tf->t + (tf->art ++); if (ls->ctok->type > DIGRAPH_TOKENS && ls->ctok->type < DIGRAPH_TOKENS_END) { ls->ctok->type = undig(ls->ctok->type); } return 0; } else { #ifdef INMACRO_FLAG ls->inmacro = 0; #endif freemem(tf->t); tf->art = tf->nt = 0; garbage_collect(ls->gf); ls->ctok = ls->save_ctok; } } r = cpp(aCPP_ ls); if (ls->ctok->type > DIGRAPH_TOKENS && ls->ctok->type < LAST_MEANINGFUL_TOKEN) { ls->ctok->type = undig(ls->ctok->type); } } while (r == 0); return r > 0 ? r : 0; } /* * lex() reads the next token from the processed stream and stores it * into ls->ctok. * return value: non zero on error (including CPPERR_EOF, which is not * quite an error) */ int lex(pCPP_ struct lexer_state *ls) { int r; do { r = llex(aCPP_ ls); #ifdef SEMPER_FIDELIS } while (!r && !ls->condcomp); #else } while (!r && (!ls->condcomp || (ttWHI(ls->ctok->type) && (!(ls->flags & LINE_NUM) || ls->ctok->type != NEWLINE)))); #endif return r; } #endif /* * check_cpp_errors() must be called when the end of input is reached; * it checks pending errors due to truncated constructs (actually none, * this is reserved for future evolutions). */ int check_cpp_errors(pCPP_ struct lexer_state *ls) { if (ls->flags & KEEP_OUTPUT) { put_char(aCPP_ ls, '\n'); } if (emit_dependencies) fputc('\n', emit_output); #ifndef NO_UCPP_BUF if (!(ls->flags & LEXER)) { flush_output(aCPP_ ls); } #endif if ((ls->flags & WARN_TRIGRAPHS) && ls->count_trigraphs) warning(aCPP_ 0, "%ld trigraph(s) encountered", ls->count_trigraphs); return 0; } /* * init_cpp() initializes static tables inside ucpp. It needs not be * called more than once. */ void init_cpp(pCPP) { init_cppm(aCPP); } /* * (re)init the global tables. * If standard_assertions is non 0, init the assertions table. */ void init_tables(pCPP_ int with_assertions) { time_t t; struct tm *ct; init_buf_lexer_state(&dsharp_lexer, 0); #ifdef PRAGMA_TOKENIZE init_buf_lexer_state(&tokenize_lexer, 0); #endif time(&t); ct = localtime(&t); #ifdef NOSTRFTIME /* we have a quite old compiler, that does not know the (standard since 1990) strftime() function. */ { char *c = asctime(ct); compile_time[0] = '"'; mmv(compile_time + 1, c + 11, 8); compile_time[9] = '"'; compile_time[10] = 0; compile_date[0] = '"'; mmv(compile_date + 1, c + 4, 7); mmv(compile_date + 8, c + 20, 4); compile_date[12] = '"'; compile_date[13] = 0; } #else strftime(compile_time, 12, "\"%H:%M:%S\"", ct); strftime(compile_date, 24, "\"%b %d %Y\"", ct); #endif init_macros(aCPP); if (with_assertions) init_assertions(aCPP); init_found_files(aCPP); } /* * Resets the include path. */ void init_include_path(pCPP_ char *incpath[]) { if (include_path_nb) { size_t i; for (i = 0; i < include_path_nb; i ++) freemem(include_path[i]); freemem(include_path); include_path_nb = 0; } if (incpath) { int i; for (i = 0; incpath[i]; i ++) aol(include_path, include_path_nb, sdup(incpath[i]), INCPATH_MEMG); } } /* * add_incpath() adds "path" to the standard include path. */ void add_incpath(pCPP_ char *path) { aol(include_path, include_path_nb, sdup(path), INCPATH_MEMG); } /* * This function cleans the memory. It should release all allocated * memory structures and may be called even if the current pre-processing * is not finished or reported an error. */ void wipeout(pCPP) { struct lexer_state ls; if (include_path_nb > 0) { size_t i; for (i = 0; i < include_path_nb; i ++) freemem(include_path[i]); freemem(include_path); include_path = 0; include_path_nb = 0; } if (current_filename) freemem(current_filename); current_filename = 0; current_long_filename = 0; current_incdir = -1; protect_detect.state = 0; if (protect_detect.macro) freemem(protect_detect.macro); protect_detect.macro = 0; protect_detect.ff = 0; init_lexer_state(&ls); while (ls_depth > 0) pop_file_context(aCPP_ &ls); free_lexer_state(&ls); free_lexer_state(&dsharp_lexer); #ifdef PRAGMA_TOKENIZE free_lexer_state(&tokenize_lexer); #endif if (found_files_init_done) HTT_kill(&found_files); found_files_init_done = 0; if (found_files_sys_init_done) HTT_kill(&found_files_sys); found_files_sys_init_done = 0; wipe_macros(aCPP); wipe_assertions(aCPP); } #ifdef STAND_ALONE /* * print some help */ static void usage(char *command_name) { fprintf(stderr, "Usage: %s [options] [file]\n" "language options:\n" " -C keep comments in output\n" " -s keep '#' when no cpp directive is recognized\n" " -l do not emit line numbers\n" " -lg emit gcc-like line numbers\n" " -CC disable C++-like comments\n" " -a, -na, -a0 handle (or not) assertions\n" " -V disable macros with extra arguments\n" " -u understand UTF-8 in source\n" " -X enable -a, -u and -Y\n" " -c90 mimic C90 behaviour\n" " -t disable trigraph support\n" "warning options:\n" " -wt emit a final warning when trigaphs are encountered\n" " -wtt emit warnings for each trigaph encountered\n" " -wa emit warnings that are usually useless\n" " -w0 disable standard warnings\n" "directory options:\n" " -I directory add 'directory' before the standard include path\n" " -J directory add 'directory' after the standard include path\n" " -zI do not use the standard include path\n" " -M emit Makefile-like dependencies instead of normal " "output\n" " -Ma emit also dependancies for system files\n" " -o file store output in file\n" "macro and assertion options:\n" " -Dmacro predefine 'macro'\n" " -Dmacro=def predefine 'macro' with 'def' content\n" " -Umacro undefine 'macro'\n" " -Afoo(bar) assert foo(bar)\n" " -Bfoo(bar) unassert foo(bar)\n" " -Y predefine system-dependant macros\n" " -Z do not predefine special macros\n" " -d emit defined macros\n" " -e emit assertions\n" "misc options:\n" " -v print version number and settings\n" " -h show this help\n", command_name); } /* * print version and compile-time settings */ static void version(pCPP) { size_t i; fprintf(stderr, "ucpp version %d.%d\n", VERS_MAJ, VERS_MIN); fprintf(stderr, "search path:\n"); for (i = 0; i < include_path_nb; i ++) fprintf(stderr, " %s\n", include_path[i]); } /* * parse_opt() initializes many things according to the command-line * options. * Return values: * 0 on success * 1 on semantic error (redefinition of a special macro, for instance) * 2 on syntaxic error (unknown options for instance) */ static int parse_opt(pCPP_ int argc, char *argv[], struct lexer_state *ls) { int i, ret = 0; char *filename = 0; int with_std_incpath = 1; int print_version = 0, print_defs = 0, print_asserts = 0; int system_macros = 0, standard_assertions = 1; init_lexer_state(ls); ls->flags = DEFAULT_CPP_FLAGS; emit_output = ls->output = stdout; for (i = 1; i < argc; i ++) if (argv[i][0] == '-') { if (!strcmp(argv[i], "-h")) { return 2; } else if (!strcmp(argv[i], "-C")) { ls->flags &= ~DISCARD_COMMENTS; } else if (!strcmp(argv[i], "-CC")) { ls->flags &= ~CPLUSPLUS_COMMENTS; } else if (!strcmp(argv[i], "-a")) { ls->flags |= HANDLE_ASSERTIONS; } else if (!strcmp(argv[i], "-na")) { ls->flags |= HANDLE_ASSERTIONS; standard_assertions = 0; } else if (!strcmp(argv[i], "-a0")) { ls->flags &= ~HANDLE_ASSERTIONS; } else if (!strcmp(argv[i], "-V")) { ls->flags &= ~MACRO_VAARG; } else if (!strcmp(argv[i], "-u")) { ls->flags |= UTF8_SOURCE; } else if (!strcmp(argv[i], "-X")) { ls->flags |= HANDLE_ASSERTIONS; ls->flags |= UTF8_SOURCE; system_macros = 1; } else if (!strcmp(argv[i], "-c90")) { ls->flags &= ~MACRO_VAARG; ls->flags &= ~CPLUSPLUS_COMMENTS; c99_compliant = 0; c99_hosted = -1; } else if (!strcmp(argv[i], "-t")) { ls->flags &= ~HANDLE_TRIGRAPHS; } else if (!strcmp(argv[i], "-wt")) { ls->flags |= WARN_TRIGRAPHS; } else if (!strcmp(argv[i], "-wtt")) { ls->flags |= WARN_TRIGRAPHS_MORE; } else if (!strcmp(argv[i], "-wa")) { ls->flags |= WARN_ANNOYING; } else if (!strcmp(argv[i], "-w0")) { ls->flags &= ~WARN_STANDARD; ls->flags &= ~WARN_PRAGMA; } else if (!strcmp(argv[i], "-s")) { ls->flags &= ~FAIL_SHARP; } else if (!strcmp(argv[i], "-l")) { ls->flags &= ~LINE_NUM; } else if (!strcmp(argv[i], "-lg")) { ls->flags |= GCC_LINE_NUM; } else if (!strcmp(argv[i], "-M")) { ls->flags &= ~KEEP_OUTPUT; emit_dependencies = 1; } else if (!strcmp(argv[i], "-Ma")) { ls->flags &= ~KEEP_OUTPUT; emit_dependencies = 2; } else if (!strcmp(argv[i], "-Y")) { system_macros = 1; } else if (!strcmp(argv[i], "-Z")) { no_special_macros = 1; } else if (!strcmp(argv[i], "-d")) { ls->flags &= ~KEEP_OUTPUT; print_defs = 1; } else if (!strcmp(argv[i], "-e")) { ls->flags &= ~KEEP_OUTPUT; print_asserts = 1; } else if (!strcmp(argv[i], "-zI")) { with_std_incpath = 0; } else if (!strcmp(argv[i], "-I") || !strcmp(argv[i], "-J")) { i ++; } else if (!strcmp(argv[i], "-o")) { if ((++ i) >= argc) { error(aCPP_ -1, "missing filename after -o"); return 2; } if (argv[i][0] == '-' && argv[i][1] == 0) { emit_output = ls->output = stdout; } else { ls->output = fopen(argv[i], "w"); if (!ls->output) { error(aCPP_ -1, "failed to open for " "writing: %s", argv[i]); return 2; } emit_output = ls->output; } } else if (!strcmp(argv[i], "-v")) { print_version = 1; } else if (argv[i][1] != 'I' && argv[i][1] != 'J' && argv[i][1] != 'D' && argv[i][1] != 'U' && argv[i][1] != 'A' && argv[i][1] != 'B') warning(aCPP_ -1, "unknown option '%s'", argv[i]); } else { if (filename != 0) { error(aCPP_ -1, "spurious filename '%s'", argv[i]); return 2; } filename = argv[i]; } init_tables(aCPP_ ls->flags & HANDLE_ASSERTIONS); init_include_path(aCPP_ 0); if (filename) { #ifdef UCPP_MMAP FILE *f = fopen_mmap_file(filename); ls->input = 0; if (f) set_input_file(ls, f); #else ls->input = fopen(filename, "r"); #endif if (!ls->input) { error(aCPP_ -1, "file '%s' not found", filename); return 1; } #ifdef NO_LIBC_BUF setbuf(ls->input, 0); #endif set_init_filename(aCPP_ filename, 1); } else { ls->input = stdin; set_init_filename(aCPP_ "", 0); } for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'I') add_incpath(aCPP_ argv[i][2] ? argv[i] + 2 : argv[i + 1]); if (system_macros) for (i = 0; system_macros_def[i]; i ++) ret = ret || define_macro(aCPP_ ls, system_macros_def[i]); for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'D') ret = ret || define_macro(aCPP_ ls, argv[i] + 2); for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'U') ret = ret || undef_macro(aCPP_ ls, argv[i] + 2); if (ls->flags & HANDLE_ASSERTIONS) { if (standard_assertions) for (i = 0; system_assertions_def[i]; i ++) make_assertion(aCPP_ system_assertions_def[i]); for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'A') ret = ret || make_assertion(aCPP_ argv[i] + 2); for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'B') ret = ret || destroy_assertion(aCPP_ argv[i] + 2); } else { for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && (argv[i][1] == 'A' || argv[i][1] == 'B')) warning(aCPP_ -1, "assertions disabled"); } if (with_std_incpath) { for (i = 0; include_path_std[i]; i ++) add_incpath(aCPP_ include_path_std[i]); } for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'J') add_incpath(aCPP_ argv[i][2] ? argv[i] + 2 : argv[i + 1]); if (print_version) { version(aCPP); return 1; } if (print_defs) { print_defines(aCPP); emit_defines = 1; } if (print_asserts && (ls->flags & HANDLE_ASSERTIONS)) { print_assertions(aCPP); emit_assertions = 1; } return ret; } int main(int argc, char *argv[]) { struct lexer_state ls; int r, fr = 0; #ifdef UCPP_REENTRANT struct CPP *REENTR = new_cpp(); #endif init_cpp(aCPP); if ((r = parse_opt(aCPP_ argc, argv, &ls)) != 0) { if (r == 2) usage(argv[0]); return EXIT_FAILURE; } enter_file(aCPP_ &ls, ls.flags); while ((r = cpp(aCPP_ &ls)) < CPPERR_EOF) fr = fr || (r > 0); fr = fr || check_cpp_errors(aCPP_ &ls); free_lexer_state(&ls); wipeout(aCPP); #ifdef UCPP_REENTRANT del_cpp(REENTR); #endif #ifdef MEM_DEBUG report_leaks(); #endif return fr ? EXIT_FAILURE : EXIT_SUCCESS; } #endif #ifdef UCPP_CLONE /* undefine all REENTR macros */ #undef dsharp_lexer #ifdef PRAGMA_TOKENIZE #undef tokenize_lexer #endif #undef current_filename #undef current_long_filename #undef protect_detect #undef include_path #undef include_path_nb #undef ls_depth #undef ls_stack #undef protect_detect_stack #undef found_files #undef found_files_sys #undef found_files_init_done #undef found_files_sys_init_done static void update_ffs_pointer(void *ht, void *m) { struct found_file_sys *ffs = m; ffs->rff = HTT_get(ht, HASH_ITEM_NAME(ffs->rff)); } struct CPP *clone_cpp(const struct CPP *src) { struct CPP *dst; size_t i; if (src->_cpp.ls_depth > 0) /* cannot clone running preprocessor? */ return NULL; dst = getmem(sizeof(struct CPP)); mmv(dst, src, sizeof(struct CPP)); if (src->current_filename) dst->current_filename = sdup(src->current_filename); if (src->protect_detect.macro) dst->protect_detect.macro = sdup(src->protect_detect.macro); HTT_clone(&dst->_assert.assertions, &src->_assert.assertions); HTT_clone(&dst->_macro.macros, &src->_macro.macros); HTT_clone(&dst->_cpp.found_files, &src->_cpp.found_files); HTT_clone(&dst->_cpp.found_files_sys, &src->_cpp.found_files_sys); HTT_scan_arg(&dst->_cpp.found_files_sys, update_ffs_pointer, &dst->_cpp.found_files); if (src->current_long_filename) dst->current_long_filename = HASH_ITEM_NAME(HTT_get(&dst->_cpp.found_files, src->current_long_filename)); if (src->protect_detect.ff) dst->protect_detect.ff = HTT_get(&dst->_cpp.found_files, HASH_ITEM_NAME(src->protect_detect.ff)); dst->_cpp.include_path_nb = 0; for (i = 0; i < src->_cpp.include_path_nb; i ++) aol(dst->_cpp.include_path, dst->_cpp.include_path_nb, sdup(src->_cpp.include_path[i]), INCPATH_MEMG); dst->_lexer.sm = clone_cppm(src->_lexer.sm); init_buf_lexer_state(&dst->_global.dsharp_lexer, 0); #ifdef PRAGMA_TOKENIZE init_buf_lexer_state(&dst->_global.tokenize_lexer, 0); #endif return dst; } #endif /* UCPP_CLONE */ Convert-Binary-C-0.85/ucpp/README0000644000175000001440000011653014676735310015054 0ustar mhxusersucpp-1.3 is a C preprocessor compliant to ISO-C99. Author: Thomas Pornin Main site: http://pornin.nerim.net/ucpp/ INTRODUCTION ------------ A C preprocessor is a part of a C compiler responsible for macro replacement, conditional compilation and inclusion of header files. It is often found as a stand-alone program on Unix systems. ucpp is such a preprocessor; it is designed to be quick and light, but anyway fully compliant to the ISO standard 9899:1999, also known as C99. ucpp can be compiled as a stand-alone program, or linked to some other code; in the latter case, ucpp will output tokens, one at a time, on demand, as an integrated lexer. ucpp operates in two modes: -- lexer mode: ucpp is linked to some other code and outputs a stream of tokens (each call to the lex() function will yield one token) -- non-lexer mode: ucpp preprocesses text and outputs the resulting text to a file descriptor; if linked to some other code, the cpp() function must be called repeatedly, otherwise ucpp is a stand-alone binary. INSTALLATION ------------ 1. Uncompress the archive file and extract the source files. 2. Edit tune.h. Here is a short explanation of compile-time options: LOW_MEM Enable memory-saving functions; this is for low-end and old systems, but seems to be good for larger systems too. Keep it. NO_LIBC_BUF NO_UCPP_BUF Two options used to disable the two bufferings inside ucpp. Define both options for maximum memory savings but you will probably want to keep libc buffering for decent performance. Define none on large systems (modern 32 or 64-bit systems). UCPP_MMAP With this option, if ucpp internal buffering is active, ucpp will try to mmap() the input files. This might yield a slight performance improvement, but will work only on a limited set of architectures. PRAGMA_TOKENIZE Make ucpp generate tokenized PRAGMA tokens on #pragma and _Pragma(); tokenization is made this way: tokens are assembled as a null terminated array of unsigned chars; if a token has a string value (as defined by the STRING_TOKEN macro), the value follows the token, terminated by PRAGMA_TOKEN_END (by default, a newline character cast to unsigned char). Whitespace tokens are skipped. The "name" value of the PRAGMA token is a pointer to that array. This setting is irrelevant in non-lexer mode. PRAGMA_DUMP In non-lexer mode, keep #pragma in output; non-void _Pragma() are translated to the equivalent #pragma. Irrelevant in lexer mode. NO_PRAGMA_IN_DIRECTIVE Do not evaluate _Pragma() inside #if, #include, #include_next and #line directives; instead, emit an error (since the remaining _Pragma will surely imply a syntax error). DSHARP_TOKEN_MERGE When two tokens are to be merged with the `##' operator, but fail because they do not merge into a single valid token, ucpp keeps those two tokens separate by adding an extra space between them in text output. With this option on, that extra space is not added, which means that some tokens may merge partially if the text output is preprocessed again. See tune.h for details. INMACRO_FLAG In lexer mode, set the inmacro flag to 1 if the current token comes from a macro replacement, 0 otherwise. macro_count maintains an increasing counter of such replacements. CONTEXT tokens count as one macro replacement each. #pragma, and _Pragma() that do not come from a macro replacement, also count as one macro replacement each. This setting is irrelevant in non-lexer mode. STD_INCLUDE_PATH Default include path in stand-alone ucpp. STD_MACROS Default predefined macros in stand-alone ucpp. STD_ASSERT Default assertions in stand-alone ucpp. NATIVE_SIGNED NATIVE_UNSIGNED NATIVE_UNSIGNED_BITS NATIVE_SIGNED_MIN NATIVE_SIGNED_MAX SIMUL_ARITH_SUBTYPE SIMUL_SUBTYPE_BITS SIMUL_NUMBITS WCHAR_SIGNEDNESS Those options define how #if expressions are evaluated; see the cross-compilation section of this file for more info, and the comments in tune.h. Extra info is found in arith.h and arith.c, at the possible expense of your mental health. DEFAULT_LEXER_FLAGS DEFAULT_CPP_FLAGS Default flags in respectively lexer and non-lexer modes. POSIX_JMP Define this if your architecture defines sigsetjmp() and siglongjmp(); it is known to (very slightly) improve performance on AIX systems. MAX_CHAR_VAL ucpp will consider characters whose value is equal or above MAX_CHAR_VAL as outside the C source charset (so they will be treated just like '@', for instance). For ASCII systems, 128 is fine. 256 is a safer value, but uses more (static) memory. For performance reasons, use a power of two. If MAX_CHAR_VAL is correctly adjusted, ucpp should be compatible with any character set. UNBREAKABLE_SPACE If you want an extra-whitespace character, define this macro to that character. For instance, define this to 160 on an ISO-8859-1 system if you want the 'unbreakable space' to be considered as whitespace. SEMPER_FIDELIS With this option set, ucpp, when used as a lexer, will pass whitespace tokens to its caller, and those tokens will have their true content; this is intended for reconstruction of the source line. Beware that some comments may have embedded newlines. COPY_LINE_LENGTH ucpp can maintain a copy of the current source line, up to that length. Irrelevant to stand-alone version. *_MEMG Those settings modify ucpp behaviour, wrt memory allocations. With higher values, ucpp will perform less malloc() calls and will run faster, but it will use more memory. Reduce INPUT_BUF_MEMG and OUTPUT_BUF_MEMG on low-memory systems, if you kept ucpp buffering (see NO_UCPP_BUF option). 3. Edit the Makefile. You should define the variables CC and FLAGS; there are the following options: -DAUDIT Enable internal sanity checks; this slows down a bit ucpp. Do not define unless you plan to debug ucpp. -DMEM_CHECK With this setting, ucpp will check for the return value of malloc() and exit with a diagnostic when out of memory. MEM_CHECK is implied by AUDIT. -DMEM_DEBUG Enable memory debug code. This will track memory leaks and several occurrences of memory management errors; it will also slow down things and increase memory consumption, so you probably do not want to use this option. -DINLINE=foobar The ucpp code uses "inline" qualifier for some functions; by default, that qualifier is macro-replaced with nothing. Define INLINE to the correct replacement for your compiler, if supported. Note that all "inline" functions in ucpp are also "static". For any C99-compliant compiler, the GNU compiler (gcc), and the Compaq C compiler under Linux/Alpha, no -DINLINE is needed (see tune.h for details). 4. Compile by typing "make". This should produce the ucpp executable file. You might see some warning messages, especially with gcc: gcc believes some variables might be used prior to their initialization; ignore those messages. 5. Install wherever you want the binary and the man page ucpp.1. I have not provided an install sequence because I didn't bother. 6. If you do not have the make utility, compile each file separately and link them together. The exact details depend on your compiler. You must define the macro STAND_ALONE when compiling cpp.c (there is such a definition, commented out, in cpp.c, line 34). There is no "configure" script because: -- I do not like the very idea of a "configure" script. -- ucpp is written in ANSI-C and should be fairly portable. -- There is no such thing as "standard" settings for a C preprocessor. The predefined system macros, standard assertions,... must be tuned by the sysadmin. -- The primary goal of ucpp is to be included in compilers. The stand-alone version is mainly a debugging tool. Please note that you need an ISO-C90 (formerly ANSI) C compiler suite (including the standard library) to compile ucpp. If your compiler is not C99 (or later), read the cross-compilation section in this README file. The C90 and C99 standards state that external linkage names might be considered equal or different based upon only their first 6 characters; this rule might make ucpp not compile on a conformant C implementation. I have yet to see such an implementation, however. If you want to use ucpp as an integrated preprocessor and lexer, see the section REUSE. Compiling ucpp as a library is an exercise left to the reader. With the LOW_MEM code enabled, ucpp can run on a Minix-i86 or Msdos 16-bit small-memory-model machine. It will not be fully compliant on such an architecture to C99, since C99 states that at least one source code with 4095 simultaneously defined macros must be processed; ucpp will be limited to about 1500 macros (at most) due to memory restrictions. At least ucpp can preprocess its own code in these conditions. LOW_MEM is on by default because it seems to improve performance on large systems. LICENSE ------- The copyright notice and license is at the beginning of the Makefile and each source file. It is basically a BSD license, without the advertising subclause (which BSD dropped recently anyway) and with no reference to Berkeley (since the code is all mine, written from scratch). Informally, this means that you can reuse and redistribute the code as you want, provided that you state in the documentation (or any substantial part of the software) of redistributed code that I am the original author. (If you press a cdrom with 200 software packages, I do not insist on having my name on the cover of the cdrom -- just keep a Readme file somewhere on the cdrom, with the copyright notice included.) As a courteous gesture, if you reuse my code, please drop me a mail. It raises my self-esteem. REUSE ----- The code has been thought as part of a bigger project; it might be used as an integrated lexer, that will read files, process them as a C preprocessor, and output a stream of C tokens. To include this code into a project, compile with STAND_ALONE undefined. To use the preprocessor and lexer, several steps should be performed. See the file 'sample.c' for an example. 1. call init_cpp(). This function initializes the lexer automaton. 2. set the following global variables: no_special_macros non-zero if the special macros (__FILE__ and others) should not be defined. This is a global flag since it affects the redefinition of such macros (which are allowed if the special macros are not defined) c99_compliant if non-zero, define __STDC_VERSION__ to 199901L; this is the default; otherwise, do not define __STDC_VERSION__. Note that ucpp will accept to undefine __STDC_VERSION__ with a #undef directive. c99_hosted if strictly positive, define __STDC_HOSTED__ to 1. If zero, define __STDC_HOSTED__ to 0. If negative, do not define __STDC_HOSTED__. The default is 1. emit_defines and emit_assertions should be set to 0 for the step 3. 3. call init_tables(). This function initializes the macro table and other things; it will intialize assertions if it has a non-zero argument. 4. call init_include_path(). This function will reset the include path to the list of paths given as argument. 5. set the following global variables emit_dependencies set to 1 if dependencies should be emitted during preprocessing set to 2 if dependencies should also be emitted for system include files emit_defines set to non-zero if #define macro definitions should be emitted when macros are defined emit_assertions set to non-zero if #define macro definitions should be emitted when macros are defined emit_output the FILE * where the above items are sent if one of the three emit_ variables is set to non zero transient_characters this is for some cross-compilation; see the relevant part in this README file for details 6. call set_init_filename() with the initial filename as argument; the second argument indicates whether the filename is real or conventional ("real" means "an fopen() on it will work"). 7. initialize your struct lexer_state: call init_lexer_state() call init_lexer_mode() if the preprocessor is supposed to output a list of tokens, otherwise set the flags field to DEFAULT_CPP_FLAGS and set the output field to the FILE * where output should be sent (init_lexer_mode(), if called at all, must be called after init_lexer_state()) adjust the flags field; here is the meaning of flags: WARN_STANDARD emit the standard warnings WARN_ANNOYING emit the useless and annoying warnings WARN_TRIGRAPHS count trigraphs encountered; it is up to the caller to emit a warning if some trigraphs were indeed encountered; the count is stored in the count_trigraphs field of the struct lexer_state WARN_TRIGRAPHS_MORE emit a warning for each trigraph encountered WARN_PRAGMA emit a warning for each non-void _Pragma encountered in non-lexer mode (because these are dumped as #pragma in the output) and for each #pragma too, if ucpp was compiled without PRAGMA_DUMP FAIL_SHARP emit errors on '#' tokens beginning a line and not followed by a valid cpp directive CCHARSET emit errors when non-C characters are encountered; if this flag is not set, each non-C character will be considered as a BUNCH token (since C99 states that non-C characters are allowed as long as they "disappear" during preprocessing [through macro replacement and stringification for instance], this flag must not be set, for maximum C99 compliance) DISCARD_COMMENTS do not keep comments in output (irrelevant in lexer mode) CPLUSPLUS_COMMENTS understand new style comments (//) (mandatory for C99) LINE_NUM emit #line directives when entering a file, if not in lexer mode; emit CONTEXT token in lexer mode for #line and new files GCC_LINE_NUM if LINE_NUM is set, emit gcc-like directives instead of #line HANDLE_ASSERTIONS understand assertions in #if expressions (and #assert, #unassert) HANDLE_PRAGMA make PRAGMA tokens for #pragma; irrelevant in non-lexer mode (handling of some pragmas is required in C99 but is not of the competence of the preprocessor; without this flag, ucpp will ignore the contents of #pragma and _Pragma directives) MACRO_VAARG understand macros with a variable number of arguments (mandatory for C99) UTF8_SOURCE understand UTF-8 encoding: multibyte characters are considered equivalent to letters as far as syntax is concerned (they can be used in identifiers) LEXER act as a lexer, outputting tokens TEXT_OUTPUT this flag should be set to 0 if ucpp works as a lexer, 1 otherwise. It is somehow redundant with the LEXER flag, but the presence of those two different flags is needed in ucpp. KEEP_OUTPUT in non-lexer mode, emit the result of preprocessing COPY_LINE maintain a copy of the last read line in the copy_line field of the struct lexer_state ; see below for how to use this buffer HANDLE_TRIGRAPHS understand trigraphs, such as ??/ for \. This option should be set by default, except for some legacy code. There are other flags, but they are for private usage of ucpp. 8. adjust the input field in the lexer_state to the FILE * from where source file is read. If you use the UCPP_MMAP compile-time option, and your input file is eligible to mmap(), then you can call fopen_mmap_file() to open it, then set_input_file() to set ls->input and some other internal options. Do not call set_input_file() unless you just called fopen_mmap_file() just before on the same file. 9. call add_incpath() to add an include path, define_macro() and undef_macro() to add or remove macros, make_assertion() and destroy_assertion() to add or remove assertions. 10. call enter_file() (this is needed only in non-lexer mode, or if LINE_NUM is set). Afterwards: -- if you are in lexer mode, call lex(); each call will make the ctok field point to the next token. A non-zero return value is an error. lex() skips whitespace tokens. The memory used by the string value of some tokens (identifiers, numbers...) is automatically freed, so copy the contents of each such token if you want to keep it (tokens with a string content are identified by the STRING_TOKEN macro applied to their type). When lex() returned a non-zero value: if it is CPPERR_EOF, then end-of-input was reached. Otherwise, it is a genuine error and ls->ctok is an undefined token; skip it and call lex() again to ignore the error. -- otherwise, call cpp(); each call will analyze one or more tokens (one token if it did find neither a cpp directive nor a macro name). A positive return value is an error. For both functions, if the return value is CPPERR_EOF (which is a strictly positive value), then it means that the end of file was reached. Call check_cpp_errors() after end of file for pending errors (unfinished #if constructions for instance). In non-lexer mode, call flush_output(). In the struct lexer_state, the following fields might be read: line the current input line number oline the current output line number (in non-lexer mode) flags the flags described above count_trigraphs the number of trigraphs encountered inmacro the current token comes from a macro macro_count the current macro counter "flags" is an unsigned long and might be modified; the three others are of long type. To perform another preprocessing: use free_lexer_state() to release memory used by the buffers referenced in lexer_state, and go back to step 2. The different tables (macros, assertions...) should be reset to their respective initial contents. There is also the wipeout() function: when called, it should release (almost) all memory blocks allocated dynamically. After a wipeout(), ucpp should be back to its state at step 2 (init_cpp() initializes only static tables, that are never freed nor modified afterwards). The COPY_LINE buffer: the struct lexer_state contains two interesting fields, copy_line[] and cli. If the COPY_LINE flag is on, each read line is stored in this buffer, up to (at most) COPY_LINE_LENGTH - 1 characters (COPY_LINE_LENGTH is defined in tune.h). The last character of the buffer is always a zero, and if the line was read entirely, it is zero terminated; the trailing newline is not included. The purpose of this buffer is error-reporting. When an error occurs (cpp() returns a strictly positive value, or lex() returns a non-zero value), if your struct lexer_state is called ls, use this code: if (ls.cli != 0) ls.copy_line[ls.cli] = 0; This will add a trailing 0 if the line was not read entirely. You can disable the COPY_LINE buffer by defining NO_UCPP_COPY_LINE (in tune.h, for example). This will make the code slightly faster. ucpp may be configured at runtime to accept alternate characters as possible parts of identifiers. Typical intended usage is for the '$' and '@' characters. The two relevant functions are set_identifier_char() and unset_identifier_char(). When this call is issued: set_identifier_char('$'); then for all the remaining input, the '$' character will be considered as just another letter, as far as identifier tokenizing is concerned. This is for identifiers only; numeric constants are not modified by that setting. This call resets things back: unset_identifier_char('$'); Those two functions modify the static table which is initialized by init_cpp(). You may call init_cpp() at any time to restore the table to its standard state. When using this feature, take care of the following points: -- Do NOT use a character whose numeric value (as an `unsigned char' cast into an `int') is greater than or equal to MAX_CHAR_VAL (in tune.h). This would lead to unpredictable results, including an abrupt crash of ucpp. ucpp makes absolutely no check whatsoever on that matter: this is the programmer's responsibility. -- If you use a standard character such as '+' or '{', tokens which begin with those characters cease to exist. This can be troublesome. If you use set_identifier_char() on the '<' character, the handling of #include directives will be greatly disturbed. Therefore the use of any standard C character in set_identifier_char() of unset_identifier_char() is declared unsupported, forbidden and altogether unwise. -- Stricto sensu, when an extra character is declared as part of an identifier, ucpp behaviour cease to conform to C99, which mandates that characters such as '$' or '@' must be treated as independant tokens of their own. Therefore, if your purpose is to use ucpp in a conformant C implementation, the use of set_identifier_char() should be made at least a runtime option. -- When enabling a new character in the middle of a macro replacement, the effect of that replacement may be delayed up to the end of that macro (but this is a "may" !). If you wish to trigger this feature with a custom #pragma or _Pragma(), you should remember it (for instance, usine _Pragma() in a macro replacement, and then the extra character in the same macro replacement, is not reliable). REENTRANT API ------------- You can build ucpp with UCPP_REENTRANT defined if you plan to use the ucpp lexer in a multithreaded application. See the file 'sample_r.c' for an example. When using the reentrant API, you can create multiple preprocessor objects. A new object is created using new_cpp(). It should finally be destroyed using del_cpp(). Furthermore, most API functions expect a pointer to valid preprocessor object as their first argument. These functions are: add_incpath() check_cpp_errors() cpp() destroy_assertion() enter_file() flush_output() fopen_mmap_file() init_assertions() init_cpp() init_include_path() init_tables() define_macro() undef_macro() lex() make_assertion() print_assertions() report_context() set_identifier_char() set_init_filename() set_input_file() unset_identifier_char() init_macros() print_defines() is_macro_defined() get_macro_definition() iterate_macros() wipeout() Additionally, ucpp_ouch(), ucpp_error() and ucpp_warning() are no longer global functions. They can also be defined separately for each preprocessor object: struct CPP cpp; cpp = new_cpp(); cpp->ucpp_ouch = my_ouch_func; /* ... */ del_cpp(cpp); Each of these functions receives a pointer to the corresponding preprocessor object as its first parameter. There is also a callback_arg member defined in the preprocessor object structure which can be used to pass an additional pointer to the callback function. If you additionally define UCPP_CLONE, you can also clone an existing preprocessor object: clone = clone_cpp(original); The cloned object will be identical to the original object, except for its internal lexer states, which means you cannot clone a preprocessor object while it is preprocessing source code. COMPATIBILITY NOTES ------------------- The C language has a lengthening history. Nowadays, C comes in three flavours: -- Traditional C, aka "K&R". This is the language first described by Brian Kernighan and Dennis Ritchie, and implemented in the first C compiler that was ever coded. There are actually several dialects of K&R, and all of them are considered deprecated. -- ISO 9899:1990, aka C90, aka C89, aka ANSI-C. Formalized by ANSI in 1989 and adopted by ISO the next year, it is the C flavour many C compilers understand. It is mostly backward compatible with K&R C, but with enhancements, clarifications and several new features. -- ISO 9899:1999, aka C99. This is an evolution on C90, almost fully backward compatible with C90. C99 introduces many new and useful features, however, including in the preprocessor. There was also a normative addendum in 1995, that added a few features to C90 (for instance, digraphs) that are also present in C99. It is sometimes refered to as "C95" or "AMD 1". ucpp implements the C99 standard, but can be used in a stricter mode, to enforce C90 compatibility (it will, however, still recognize some constructions that are not in plain C90). ucpp also knows about several extensions to C99: -- Assertions: this is an extension to the defined() operator, with its own namespace. Assertions seem to be used in several places, therefore ucpp knows about them. It is recommended to enable assertions by default on Solaris systems. -- Unicode: the C99 norm specifies that extended characters, from the ISO-10646 charset (aka "unicode") can be used in identifiers with the notations \u and \U. ucpp also accepts (with the proper flag) the UTF-8 encoding in the source file for such characters. -- #include_next directive: it works as a #include, but will look for files only in the directories specified in the include path after the one the current file was found. This is a GNU-ism that is useful for writing transparent wrappers around header files. Assertions and unicode are activated by specific flags; the #include_next support is always active. The ucpp code itself should be compatible with any ISO-C90 compiler. The cpp.c file is rather big (~ 64kB), it might confuse old 16-bit C compilers; the macro.c file is somewhat large also (~ 47kB). The evaluation of #if expressions is subject to some subtleties, see the section "cross-compilation". The lexer code makes no assumption about the source character set, but the following: source characters (those which have a syntactic value in C; comment and string literal contents are not concerned) must have a strictly positive value that is strictly lower than MAX_CHAR_VAL. The strict positivity is already assured by the C standard, so you just need to adjust MAX_CHAR_VAL. ucpp has been tested succesfully on ASCII/ISO-8859-1 and EBCDIC systems. Beware that UTF-8 is NOT compatible with EBCDIC. Pragma handling: when used in non-lexer mode, ucpp tries to output a source text that, when read again, will yield the exact same stream of tokens. This is not completely true with regards to line numbering in some tricky macro replacements, but it should work correctly otherwise, especially with pragma directives if the compile-time option PRAGMA_DUMP was set: #pragma are dumped, non-void _Pragma() are converted to the corresponding #pragma and dumped also. ucpp does not macro-replace the contents of #pragma and _Pragma(); If you want a macro-replaced pragma, use this: #define pragma_(x) _Pragma(#x) #define pragma(x) pragma_(x) Anyway, pragmas do not nest (an _Pragma() cannot be evaluated if it is inside a #pragma or another _Pragma). I wrote ucpp according to what is found in "The C Programming Language" from Brian Kernighan and Dennis Ritchie (2nd edition) and the C99 standard; but I could have misinterpreted some points. On some tricky points I got help from the helpful people from the comp.std.c newsgroup. For assertions and #include_next, I mimicked the behaviour of GNU cpp, as is stated in the GNU cpp info documentation. An open question is related to the following code: #define undefined ! #define makeun(x) un ## x #if makeun(defined foo) qux #else bar #endif ucpp will replace 'defined foo' with 0 first (since foo is not defined), then it will replace the macro makeun, and the expression will become 'un0', which is replaced by 0 since this is a remaining identifier. The expression evaluates to false, and 'bar' is emitted. However, some other preprocessors will replace makeun first, considering that it is not part of a 'defined' operator application; this will produce the macro 'undefined', which is replaced, and the expression becomes '!foo'. 'foo' is replaced by 0, the expression evaluates to true, and 'qux' is emitted. My opinion is that the behaviour is undefined, because use of the 'defined' operator does not match an allowed form prior to macro replacement (I mean, its syntax matches, but its use is reconverted to inexistant and therefore is not anymore matching). Other people think that the behaviour is well-specified, and contrary to what ucpp does. The only thing clear to me is that the wording of the standard (paragraph 6.10.1.3) is unclear. Since the ucpp behaviour makes ucpp code simpler and cleaner, and that it is unlikely that any real-life code would ever be disturbed by that interpretation of the standard, ucpp will keep its current behaviour until convincing evidence of my misinterpretation of the standard is given to me. The problem can only occur if one uses ## to make a 'defined' operator disappear from a #if expression (everybody agrees that the generation of a 'defined' operator triggers undefined behaviour). Another point about macro replacement has been discussed at length in several occasions. It is about the following code: #define CAT(a, b) CAT_(a, b) #define CAT_(a, b) a ## b #define AB(x, y) CAT(x, y) CAT(A, B)(X, Y) ucpp will produce `CAT(X,Y)' as replacement for the last line, whereas some other preprocessors output `XY'. The answer to the question "which behaviour is correct" seems to be "this is not defined by the C standard". It is the answer that has been actually given by the C standardization committee in 1992, to the defect report #017, question 23, which asked that very same question. Since the wording of the standard has not changed in these parts from the 1990 to the 1999 version, the preprocessor behaviour on the above-stated code should still be considered as undefined. It seems, however, that there used to be a time (around 1988) when the committee members agreed upon a precise macro-replacement algorithm, which specified quite clearly the preprocessor behaviour in such situation. ucpp behaviour is occasionnaly claimed as "incorrect" with regards to that algorithm. Since that macro replacement algorithm has never been published, and the committee itself backed out from it in 1992, I decided to disregard those feeble claims. It is possible, however, that at some point in the future I rewrite the ucpp macro replacement code, since that code is a bit messy and might be made to use less memory in some occasions. It is then possible that, in the aftermath of such a rewrite, the ucpp behaviour for the above stated code become tunable. Don't hold your breath, though. About _Pragma: the standard is not clear about when this operator is evaluated, and if it is allowed inside #if directives and such. For ucpp, I coded _Pragma as a special macro with lazy replacement: it will be evaluated wherever a macro could be replaced, and only at the end of the macro replacement (for practical purposes, _Pragma can be considered as a macro taking one argument, and being replaced by nothing, except for some tricky uses of the # and ## operators). This means that, by default, ucpp will evaluate _Pragma inside some directives (mainly, #if, #include, #include_next and #line), but it can be taught not to do so by defining NO_PRAGMA_IN_DIRECTIVE in tune.h. CROSS-COMPILATION ----------------- If compiled with a C99 development suite, ucpp should be fully C99-compliant on the host platform (up to my own understanding of the standard -- remember that this software is distributed as-is, without any guarantee). However, if a pre-C99 compiler is used, or if the target machine is not the host machine (for instance when you build a cross-compiler), the evaluation of #if expressions is subject to some cross-compiling issues: -- character constants: when evaluating expressions, character constants are interpreted in the source character set context; this is allowed by the standard but this can lead to problems with code that expects this interpretation to match the one made in the C code. To ease cross-compilation, you can define a conversion array, and make the global variable transient_characters point to it. The array should contain 256 int; transient_characters[x] is the value of the character whose value is x in the source character set. This facility is provided for inclusion of ucpp inside another code; if you want a stand-alone ucpp with that conversion, hard-code the conversion table into eval.c and make transient_characters[] statically point to it. Alternatively, you could provide an option syntax to provide such a table on command-line, if you feel like it. -- wide character constants signedness: by default, ucpp makes wide characters as signed as what plain chars are on the build host. To force wide character constant signedness, define WCHAR_SIGNEDNESS to 0 (for unsigned) or 1 (for signed). Beware, however, that "native" wide character constants, even signed, are considered positive. Non-wide character constants are, according to the C99 standard, of type int, and therefore always signed. -- evaluation type: C90 states that all constants in #if expressions are considered as either long or unsigned long, and that the evaluation is performed with operands of that size. In C99, the situation is equivalent, except that the types used are intmax_t and uintmax_t, as defined in . ucpp can use two expression evaluators: one uses native integer types (one signed and one unsigned), the other evaluator emulates big integer numbers by representing them with two values of some unsigned type. The emulated type handles signed values in two's complement representation, and can be any width ranging from 2 bits to twice the size of the underlying native unsigned type used. An odd width is allowed. When right shifting an emulated signed negative value, it is left-padded with bits set to 1 (this is sign extension). When the ARITHMETIC_CHECKS macro is defined in tune.h, all occurrences of implementation-defined or undefined behaviour during arithmetic evaluation are reported as errors or warned upon. This includes all overflows and underflows on signed quantities, constants too large, and so on. Errors (which terminate immediately evaluation) are emitted for division by 0 (on / and % operators) and overflow (on / operator); otherwise, warnings are emitted and the faulty evaluation takes place. This prevents ucpp from crashing on typical x86 machines, while still allowing to use some extensions. FUTURE EVOLUTIONS ----------------- ucpp is quite complete now. There was a longstanding project of "traditional" preprocessing, but I dropped it because it would not map cleanly on the token-based ucpp structure. Maybe I will code a string-based preprocessor one day; it would certainly use some of the code from lexer.c, eval.c, mem.c and nhash.c. However, making such a tool is almost irrelevant nowadays. If one wants to handle such project, using ucpp as code base, I would happily provide some help, if needed. CHANGES ------- From 1.2 to 1.3: * brand new integer evaluation code, with precise evaluation and checks * new hash table implementation, with binary trees * relaxed attitude on failed `##' operators * bugfix on macro definition on command-line wrt nesting macros * support for up to 32766 macro arguments in LOW_MEM code * support for optional additional "identifier" characters such as '$' or '@' From 1.1 to 1.2: * bugfix: numerous memory leaks * new function: wipeout(); this should release all malloc() blocks * bugfix: missing "newline" and trailing "context" tokens * improved included files name caching * included memory leak detection code From 1.0 to 1.1: * bugfix: missing newline when exiting from a non-newline-terminated file * bugfix: crash when resetting due to definition of the _Pragma pseudo-macro * bugfix: handling of additional "optional" whitespace with SEMPER_FIDELIS * improved handling of unreplaced arg macros wrt output line * tricky handling of utterly tricky #include * bugfix: spurious token `~=' eliminated From 0.9 to 1.0: * bugfix: crash after erroneous #assert * changed ERR_SHARP to FAIL_SHARP, EMUL_UINTMAX to SIMUL_UINTMAX * made "inline" default on gcc and DEC ccc (Linux/Alpha) * semantic of -I is now Unix-like (added directories are looked first) * added -J flag (to add include directories after the system ones) * cleaned up non-ascii issues * bugfix: missing brace in no-LOW_MEM code * bugfix: argument number check in variadic macros * bugfix: crash in non-lexer mode after some cases of unreplaced macro * bugfix: _Pragma() handling wrt # and ## * made evaluation of _Pragma() optional in #if, #include and #line * bugfix: re-dump of multiline #pragma * added the inmacro and macro_count flags * added mmap() support * added option to retain whitespace content in lexer mode From 0.8 to 0.9: * added check for division by 0 in #if evaluation * added check for non-standard line numbers * added check for trailing garbage in most directives * corrected signedness of char constants (always int, therefore always signed) * made LOW_MEM code, so that ucpp runs smoothly on low memory architectures * multiple bugfixes (using the GNU cpp testsuite) * added handling of _Pragma (as a macro) * added tokenization of pragma directives * added conservation of pragma directives in text output * produced Msdos 16-bit small memory model executable * produced Minix-86 executable From 0.7 to 0.8: * added some support for Amiga systems * fixed extra spacing in stringified tokens * fixed bug related to %:% and tolerated rogue sharps * namespace cleanup * bugfix for macro redefinition * added warning for evaluated comma operators in #if (ISO requirement) * -Dfoo now defines foo with content 1 (and not void content) * trigraphs can be disabled (for incorrect but legacy code) * fixed semantics for #include "file" (local directory) * fixed detection of protected files * produced a Msdos 16-bit executable From 0.6 to 0.7: * officially changed the goal to full C99 compliance * added the CONTEXT token and let NEWLINE tokens go * added report_context() for error reporting * enforced matching of #if/#endif (file-global nesting level = 0) * added support of C99 digraphs * added UTF-8 encoding support * added universal character names * rewrote #if expressions (sizes fixed, bignum, signed/unsigned fixed) * fixed incomplete evaluation of #if expressions * added transient_characters[] From 0.5 to 0.6: * disappearance of error_nonl() * added extra optional warnings for trigraphs * some bugfixes, especially in lexer mode * handled MacIntosh files correctly From 0.4 to 0.5: * nicer #pragma handling (a token can be emitted) * bugfix in lexer mode after #line and #error * sample.c an example of code linked with ucpp * made #if expressions conforming to standard signed/unsigned handling * added the copy_line[] buffer feature From 0.3 to 0.4: * relaxed interpretation of '#include foo' when foo ends up, after macro substitution, with a '' content * corrected the 'double-dot' bug * corrected two bugs related to the treatment of macro aborted calls (due to lack of arguments) * some namespaces cleanup, to ease integration into other code * documented the way to include ucpp into another program * made newlines embedded into strings illegal (and reported as such) From 0.2 to 0.3: * added support for system predefined macros * made several bugfixes * checked C99 compliance for most of the features * ucpp now accepts non-C characters on standard when used stand-alone * removed many useless spaces in the output From 0.1 to 0.2: * added support for assertions * added support for macros with variable arguments * split the pharaonic cpp.c file into many * made several bugfixes * relaxed the behaviour with regards to the void arguments * made C++-like comments an option THANKS TO --------- Volker Barthelmann, Neil Booth, Stephen Davies, Stéphane Ecolivet, Marc Espie, Marcus Holland-Moritz, Antoine Leca, Cyrille Lefevre, Dave Rivers, Loic Tortay and Laurent Wacrenier, for suggestions and beta-testing. Paul Eggert, Douglas A. Gwyn, Clive D.W. Feather, and the other guys from comp.std.c, for explanations about the standard. Dave Brolley, Jamie Lokier and Neil Booth, for discussion about tricky points on nesting macros. Brian Kernighan and Dennis Ritchie, for bringing C to mortal Men. Convert-Binary-C-0.85/ucpp/hash.h0000644000175000001440000000420014676735310015256 0ustar mhxusers/* * (c) Thomas Pornin 1998, 1999, 2000 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__HASH__ #define UCPP__HASH__ struct hash_item; struct HT { struct hash_item **lists; int nb_lists; int (*cmpdata)(void *, void *); int (*hash)(void *); void (*deldata)(void *); }; int hash_string(char *); struct HT *newHT(int, int (*)(void *, void *), int (*)(void *), void (*)(void *)); void *putHT(struct HT *, void *); void *forceputHT(struct HT *, void *); void *getHT(struct HT *, void *); int delHT(struct HT *, void *); void killHT(struct HT *); void saveHT(struct HT *, void **); void restoreHT(struct HT *, void **); void tweakHT(struct HT *, void **, void *); void scanHT(struct HT *, void (*)(void *)); int hash_struct(void *); int cmp_struct(void *, void *); #endif Convert-Binary-C-0.85/ucpp/sample.c0000644000175000001440000000610014676735310015610 0ustar mhxusers/* * Sample code showing how to use ucpp as an integrated lexer. * This file is public domain. */ /* * This is an example of how to use ucpp as a preprocessor and lexer * into another project. The steps are those described in ucpp README * file. To use this code, compile the ucpp source files with * STAND_ALONE not defined, and link them with this code. The resulting * binary will take a C source file as standard input, preprocess it, * and output each non-whitespace token on stdout, with its numerical * value (defined as an enum in cpp.h) and its contents. This code * defines no system include path. * * This code supposes that the ucpp files are compiled with PRAGMA_TOKENIZE * enabled (see the tune.h file). */ #include #include #include #include "mem.h" #include "cpp.h" int main(int argc, char *argv[]) { int i, r; struct lexer_state ls; /* step 1 */ init_cpp(); /* step 2 */ no_special_macros = 0; emit_defines = emit_assertions = 0; /* step 3 -- with assertions */ init_tables(1); /* step 4 -- no default include path */ init_include_path(0); /* step 5 -- no need to reset the two emit_* variables set in 2 */ emit_dependencies = 0; /* step 6 -- we work with stdin, this is not a real filename */ set_init_filename("[stdin]", 0); /* step 7 -- we make sure that assertions are on, and pragma are handled */ init_lexer_state(&ls); init_lexer_mode(&ls); ls.flags |= HANDLE_ASSERTIONS | HANDLE_PRAGMA | LINE_NUM; /* step 8 -- input is from stdin */ ls.input = stdin; /* step 9 -- we do not have any macro to define, but we add any argument as an include path */ for (i = 1; i < argc; i ++) add_incpath(argv[i]); /* step 10 -- we are a lexer and we want CONTEXT tokens */ enter_file(&ls, ls.flags); /* read tokens until end-of-input is reached -- errors (non-zero return values different from CPPERR_EOF) are ignored */ while ((r = lex(&ls)) < CPPERR_EOF) { if (r) { /* error condition -- no token was retrieved */ continue; } /* we print each token: its numerical value, and its string content; if this is a PRAGMA token, the string content is in fact a compressed token list, that we uncompress and print. */ if (ls.ctok->type == PRAGMA) { unsigned char *c = (unsigned char *)(ls.ctok->name); printf("line %ld: <#pragma>\n", ls.line); for (; *c; c ++) { int t = *c; if (STRING_TOKEN(t)) { printf(" <%2d> ", t); for (c ++; *c != PRAGMA_TOKEN_END; c ++) putchar(*c); putchar('\n'); } else { printf(" <%2d> `%s'\n", t, operators_name[t]); } } } else if (ls.ctok->type == CONTEXT) { printf("new context: file '%s', line %ld\n", ls.ctok->name, ls.ctok->line); } else if (ls.ctok->type == NEWLINE) { printf("[newline]\n"); } else { printf("line %ld: <%2d> `%s'\n", ls.ctok->line, ls.ctok->type, STRING_TOKEN(ls.ctok->type) ? ls.ctok->name : operators_name[ls.ctok->type]); } } /* give back memory and exit */ wipeout(); free_lexer_state(&ls); #ifdef MEM_DEBUG report_leaks(); #endif return 0; } Convert-Binary-C-0.85/ucpp/mem.h0000644000175000001440000001242014676735310015114 0ustar mhxusers/* * (c) Thomas Pornin 1998 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__MEM__ #define UCPP__MEM__ #include #include "tune.h" #if !(defined(UCPP_MALLOC) && defined(UCPP_REALLOC) && defined(UCPP_FREE)) #define UCPP_MALLOC malloc #define UCPP_REALLOC realloc #define UCPP_FREE free #endif #define die UCPP_PRIVATE(die) void die(void); #if defined AUDIT || defined MEM_CHECK || defined MEM_DEBUG #define getmem UCPP_PRIVATE(getmem) void *getmem(size_t); #else #define getmem UCPP_MALLOC #endif #if defined MEM_DEBUG #define getmem_debug UCPP_PRIVATE(getmem_debug) void *getmem_debug(size_t, const char *, int); #undef getmem #define getmem(x) getmem_debug(x, __FILE__, __LINE__) #endif #if defined AUDIT || defined MEM_DEBUG #define freemem UCPP_PRIVATE(freemem) void freemem(void *); #else #define freemem UCPP_FREE #endif #if defined MEM_DEBUG #define freemem_debug UCPP_PRIVATE(freemem_debug) void freemem_debug(void *, const char *, int); #undef freemem #define freemem(x) freemem_debug(x, __FILE__, __LINE__) #endif #define incmem UCPP_PRIVATE(incmem) #define sdup UCPP_PRIVATE(sdup) void *incmem(void *, size_t, size_t); char *sdup(const char *); #if defined MEM_DEBUG #define incmem_debug UCPP_PRIVATE(incmem_debug) #define report_leaks UCPP_PRIVATE(report_leaks) #define sdup_debug UCPP_PRIVATE(sdup_debug) void *incmem_debug(void *, size_t, size_t, const char *, int); #undef incmem #define incmem(x, y, z) incmem_debug(x, y, z, __FILE__, __LINE__) void report_leaks(void); char *sdup_debug(const char *, const char *, int); #undef sdup #define sdup(x) sdup_debug(x, __FILE__, __LINE__) #endif #ifdef AUDIT #define mmv UCPP_PRIVATE(mmv) #define mmvwo UCPP_PRIVATE(mmvwo) void *mmv(void *, const void *, size_t); void *mmvwo(void *, const void *, size_t); #else #define mmv memcpy #define mmvwo memmove #endif /* * this macro adds the object obj at the end of the array list, handling * memory allocation when needed; ptr contains the number of elements in * the array, and memg is the granularity of memory allocations (a power * of 2 is recommanded, for optimization reasons). * * list and ptr may be updated, and thus need to be lvalues. */ #define aol(list, ptr, obj, memg) do { \ if (((ptr) % (memg)) == 0) { \ if ((ptr) != 0) { \ (list) = incmem((list), (ptr) * sizeof(obj), \ ((ptr) + (memg)) * sizeof(obj)); \ } else { \ (list) = getmem((memg) * sizeof(obj)); \ } \ } \ (list)[(ptr) ++] = (obj); \ } while (0) /* * bol() does the same as aol(), but adds the new item at the beginning * of the list; beware, the computational cost is greater. */ #define bol(list, ptr, obj, memg) do { \ if (((ptr) % (memg)) == 0) { \ if ((ptr) != 0) { \ (list) = incmem((list), (ptr) * sizeof(obj), \ ((ptr) + (memg)) * sizeof(obj)); \ } else { \ (list) = getmem((memg) * sizeof(obj)); \ } \ } \ if ((ptr) != 0) \ mmvwo((list) + 1, (list), (ptr) * sizeof(obj)); \ (ptr) ++; \ (list)[0] = (obj); \ } while (0) /* * mbol() does the same as bol(), but adds the new item at the given * emplacement; bol() is equivalent to mbol with 0 as last argument. */ #define mbol(list, ptr, obj, memg, n) do { \ if (((ptr) % (memg)) == 0) { \ if ((ptr) != 0) { \ (list) = incmem((list), (ptr) * sizeof(obj), \ ((ptr) + (memg)) * sizeof(obj)); \ } else { \ (list) = getmem((memg) * sizeof(obj)); \ } \ } \ if ((ptr) > n) \ mmvwo((list) + n + 1, (list) + n, \ ((ptr) - n) * sizeof(obj)); \ (ptr) ++; \ (list)[n] = (obj); \ } while (0) /* * this macro adds the object obj at the end of the array list, doubling * the size of list when needed; as for aol(), ptr and list must be * lvalues, and so must be llng */ #define wan(list, ptr, obj, llng) do { \ if ((ptr) == (llng)) { \ (llng) += (llng); \ (list) = incmem((list), (ptr) * sizeof(obj), \ (llng) * sizeof(obj)); \ } \ (list)[(ptr) ++] = (obj); \ } while (0) #endif Convert-Binary-C-0.85/ucpp/nhash.c0000644000175000001440000003643214676735310015443 0ustar mhxusers/* * Mixed hash table / binary tree code. * (c) Thomas Pornin 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include #include #include #include "nhash.h" #include "mem.h" /* * Hash a string into an `unsigned' value. This function is derived * from the hash function used in the ELF binary object file format * hash tables. The result size is a 32-bit number if the `unsigned' * type is big enough to hold 32-bit arbitrary numbers, a 16-bit number * otherwise. */ static unsigned hash_string(const char *name) { unsigned h = 0; for (h = 0; *name; name ++) { unsigned g; h = (h << 4) + *(unsigned char *)name; #if UINT_MAX >= 0xffffffffU g = h & 0xF0000000U; h ^= (g >> 24); #else g = h & 0xF000U; h ^= (g >> 12); #endif h &= ~g; } return h; } /* * Each item in the table is a structure beginning with a `hash_item_header' * structure. Those headers define binary trees such that all left-descendants * (respectively right-descendants) of a given tree node have an associated * hash value strictly smaller (respectively greater) than the hash value * associated with this node. * * The `ident' field points to an array of char. The `sizeof(unsigned)' * first `char' contain a copy of an `unsigned' value which is the hashed * string, except the least significant bit. When this bit is set to 0, * the node contains the unique item using that hash value. If the bit * is set to 1, then there are several items with that hash value. * * When several items share the same hash value, they are linked together * in a linked list by their `left' field. The node contains no data; * it is a "fake item". * * The `char' following the hash value encode the item name for true items. * For fake items, they contain the pointer to the first true item of the * corresponding link list (suitably aligned). * * There are HTT_NUM_TREES trees; the items are sorted among trees by the * lest significant bits of their hash value. */ static void internal_init(HTT *htt, void (*deldata)(void *) _pCLONEDATA, int reduced) { htt->deldata = deldata; #ifdef UCPP_CLONE htt->clonedata = clonedata; #endif if (reduced) { HTT2 *htt2 = (HTT2 *)htt; htt2->tree[0] = htt2->tree[1] = NULL; } else { unsigned u; for (u = 0; u < HTT_NUM_TREES; u ++) htt->tree[u] = NULL; } } /* see nhash.h */ void HTT_init(HTT *htt, void (*deldata)(void *) _pCLONEDATA) { internal_init(htt, deldata _aCLONEDATA, 0); } /* see nhash.h */ void HTT2_init(HTT2 *htt, void (*deldata)(void *) _pCLONEDATA) { internal_init((HTT *)htt, deldata _aCLONEDATA, 1); } #define PTR_SHIFT (sizeof(hash_item_header *) * \ ((sizeof(unsigned) + sizeof(hash_item_header *) - 1) / \ sizeof(hash_item_header *))) #define TREE(u) (*(reduced ? ((HTT2 *)htt)->tree + ((u) & 1) \ : htt->tree + ((u) & (HTT_NUM_TREES - 1)))) /* * Find a node for the given hash value. If `father' is not NULL, fill * `*father' with a pointer to the node's father. * If the return value is NULL, then no existing node was found; if `*father' * is also NULL, the tree is empty. If the return value is not NULL but * `*father' is NULL, then the found node is the tree root. * * If `father' is not NULL, then `*leftson' is filled with 1 if the node * was looked for as the father left son, 0 otherwise. */ static hash_item_header *find_node(HTT *htt, unsigned u, hash_item_header **father, int *leftson, int reduced) { hash_item_header *node = TREE(u); hash_item_header *nodef = NULL; int ls; u &= ~1U; while (node != NULL) { unsigned v = *(unsigned *)(node->ident); unsigned w = v & ~1U; if (u == w) break; nodef = node; if (u < w) { node = node->left; ls = 1; } else { node = node->right; ls = 0; } } if (father != NULL) { *father = nodef; *leftson = ls; } return node; } static void *internal_get(HTT *htt, const char *name, int reduced) { unsigned u = hash_string(name), v; hash_item_header *node = find_node(htt, u, NULL, NULL, reduced); if (node == NULL) return NULL; v = *(unsigned *)(node->ident); if ((v & 1U) == 0) { return (strcmp(HASH_ITEM_NAME(node), name) == 0) ? node : NULL; } node = *(hash_item_header **)(node->ident + PTR_SHIFT); while (node != NULL) { if (strcmp(HASH_ITEM_NAME(node), name) == 0) return node; node = node->left; } return NULL; } /* see nhash.h */ void *HTT_get(HTT *htt, const char *name) { return internal_get(htt, name, 0); } /* see nhash.h */ void *HTT2_get(HTT2 *htt, const char *name) { return internal_get((HTT *)htt, name, 1); } /* * Make an item identifier from its name and its hash value. */ static char *make_ident(const char *name, unsigned u) { size_t n = strlen(name) + 1; char *ident = getmem(n + sizeof(unsigned)); *(unsigned *)ident = u & ~1U; memcpy(ident + sizeof(unsigned), name, n); return ident; } /* * Make an identifier for a fake item, pointing to a true item. */ static char *make_fake_ident(unsigned u, hash_item_header *next) { char *ident = getmem(PTR_SHIFT + sizeof(hash_item_header *)); *(unsigned *)ident = u | 1U; *(hash_item_header **)(ident + PTR_SHIFT) = next; return ident; } #ifdef UCPP_CLONE static char *clone_ident(const char *ident) { char *cident; unsigned v; v = *(unsigned *)(ident); if ((v & 1U) != 0) { cident = getmem(PTR_SHIFT + sizeof(hash_item_header *)); } else { size_t n = strlen(ident + sizeof(unsigned)) + 1; cident = getmem(n + sizeof(unsigned)); memcpy(cident + sizeof(unsigned), ident + sizeof(unsigned), n); } *(unsigned *)(cident) = v; return cident; } #endif /* UCPP_CLONE */ /* * Adding an item is straightforward: * 1. look for its emplacement * 2. if no node is found, use the item as a new node and link it to the tree * 3. if a node is found: * 3.1. if the node is real, check for name inequality, then create a * fake node and assemble the two-element linked list * 3.2. if the node is fake, look for the name in the list; if not found, * add the node at the list end */ static void *internal_put(HTT *htt, void *item, const char *name, int reduced) { unsigned u = hash_string(name), v; int ls; hash_item_header *father; hash_item_header *node = find_node(htt, u, &father, &ls, reduced); hash_item_header *itemg = item, *pnode; if (node == NULL) { itemg->left = itemg->right = NULL; itemg->ident = make_ident(name, u); if (father == NULL) { TREE(u) = itemg; } else if (ls) { father->left = itemg; } else { father->right = itemg; } return NULL; } v = *(unsigned *)(node->ident); if ((v & 1U) == 0) { if (strcmp(HASH_ITEM_NAME(node), name) == 0) return node; pnode = getmem(sizeof *pnode); pnode->left = node->left; pnode->right = node->right; pnode->ident = make_fake_ident(u, node); node->left = itemg; node->right = NULL; itemg->left = itemg->right = NULL; itemg->ident = make_ident(name, u); if (father == NULL) { TREE(u) = pnode; } else if (ls) { father->left = pnode; } else { father->right = pnode; } return NULL; } node = *(hash_item_header **)(node->ident + PTR_SHIFT); while (node != NULL) { if (strcmp(HASH_ITEM_NAME(node), name) == 0) return node; pnode = node; node = node->left; } itemg->left = itemg->right = NULL; itemg->ident = make_ident(name, u); pnode->left = itemg; return NULL; } /* see nhash.h */ void *HTT_put(HTT *htt, void *item, const char *name) { return internal_put(htt, item, name, 0); } /* see nhash.h */ void *HTT2_put(HTT2 *htt, void *item, const char *name) { return internal_put((HTT *)htt, item, name, 1); } /* * A fake node subnode list has shrunk to one item only; make the * node real again. * fnode the fake node * node the last remaining node * father the fake node father (NULL if the fake node is root) * leftson 1 if the fake node is a left son, 0 otehrwise * u the hash value for this node */ static void shrink_node(HTT *htt, hash_item_header *fnode, hash_item_header *node, hash_item_header *father, int leftson, unsigned u, int reduced) { node->left = fnode->left; node->right = fnode->right; if (father == NULL) { TREE(u) = node; } else if (leftson) { father->left = node; } else { father->right = node; } freemem(fnode->ident); freemem(fnode); } /* * Deletion algorithm: * 1. look for the node; if not found, exit * 2. if the node is real: * 2.1. check for equality; exit otherwise * 2.2. delete the node * 2.3. promote the leftest of right descendants or rightest of left * descendants * 3. if the node is fake: * 3.1. check the list items for equality; exit otherwise * 3.2. delete the correct item * 3.3. if there remains only one item, supress the fake node */ static int internal_del(HTT *htt, const char *name, int reduced) { unsigned u = hash_string(name), v; int ls; hash_item_header *father; hash_item_header *node = find_node(htt, u, &father, &ls, reduced); hash_item_header *pnode, *fnode, *znode; char *tmp; if (node == NULL) return 0; v = *(unsigned *)(node->ident); if ((v & 1U) != 0) { fnode = node; node = znode = *(hash_item_header **)(node->ident + PTR_SHIFT); pnode = NULL; while (node != NULL) { if (strcmp(HASH_ITEM_NAME(node), name) == 0) break; pnode = node; node = node->left; } if (node == NULL) return 0; if (pnode == NULL) { /* * We supress the first item in the list. */ *(hash_item_header **)(fnode->ident + PTR_SHIFT) = node->left; if (node->left->left == NULL) { shrink_node(htt, fnode, node->left, father, ls, u, reduced); } } else { pnode->left = node->left; if (pnode->left == NULL && znode == pnode) { shrink_node(htt, fnode, pnode, father, ls, u, reduced); } } } else { if (strcmp(HASH_ITEM_NAME(node), name) != 0) return 0; if (node->left != NULL) { for (znode = node, pnode = node->left; pnode->right; znode = pnode, pnode = pnode->right); if (znode != node) { znode->right = pnode->left; pnode->left = node->left; } pnode->right = node->right; } else if (node->right != NULL) { for (znode = node, pnode = node->right; pnode->left; znode = pnode, pnode = pnode->left); if (znode != node) { znode->left = pnode->right; pnode->right = node->right; } pnode->left = node->left; } else pnode = NULL; if (father == NULL) { TREE(u) = pnode; } else if (ls) { father->left = pnode; } else { father->right = pnode; } } tmp = node->ident; htt->deldata(node); freemem(tmp); return 1; } /* see nhash.h */ int HTT_del(HTT *htt, const char *name) { return internal_del(htt, name, 0); } /* see nhash.h */ int HTT2_del(HTT2 *htt, const char *name) { return internal_del((HTT *)htt, name, 1); } /* * Apply `action()' on all nodes of the tree whose root is given as * parameter `node'. If `wipe' is non-zero, the nodes are removed * from memory. */ #define SCAN_FLAG_WIPE 0x1 #define SCAN_FLAG_ARG 0x2 static void scan_node(hash_item_header *node, void (*action)(), void *arg, unsigned flags) { unsigned v; if (node == NULL) return; scan_node(node->left, action, arg, flags); scan_node(node->right, action, arg, flags); v = *(unsigned *)(node->ident); if ((v & 1U) != 0) { hash_item_header *pnode, *nnode; for (pnode = *(hash_item_header **)(node->ident + PTR_SHIFT); pnode != NULL; pnode = nnode) { char *tmp = pnode->ident; nnode = pnode->left; if (flags & SCAN_FLAG_ARG) action(arg, pnode); else action(pnode); if (flags & SCAN_FLAG_WIPE) freemem(tmp); } if (flags & SCAN_FLAG_WIPE) { freemem(node->ident); freemem(node); } } else { char *tmp = node->ident; if (flags & SCAN_FLAG_ARG) action(arg, node); else action(node); if (flags & SCAN_FLAG_WIPE) freemem(tmp); } } /* see nhash.h */ void HTT_scan(HTT *htt, void (*action)(void *)) { unsigned u; for (u = 0; u < HTT_NUM_TREES; u ++) { scan_node(htt->tree[u], action, NULL, 0); } } void HTT_scan_arg(HTT *htt, void (*action)(void *, void *), void *arg) { unsigned u; for (u = 0; u < HTT_NUM_TREES; u ++) { scan_node(htt->tree[u], action, arg, SCAN_FLAG_ARG); } } #ifdef UCPP_CLONE static hash_item_header *clone_node(const hash_item_header *node, void *(*clone)(const void *)) { hash_item_header *cleft, *cright, *cnode; unsigned v; if (node == NULL) return NULL; cleft = clone_node(node->left, clone); cright = clone_node(node->right, clone); v = *(unsigned *)(node->ident); if ((v & 1U) != 0) { hash_item_header *pnode, **pcpnode; cnode = getmem(sizeof *node); cnode->ident = clone_ident(node->ident); pcpnode = (hash_item_header **)(cnode->ident + PTR_SHIFT); for (pnode = *(hash_item_header **)(node->ident + PTR_SHIFT); pnode != NULL; pnode = pnode->left) { *pcpnode = clone(pnode); (*pcpnode)->ident = clone_ident(pnode->ident); pcpnode = &((*pcpnode)->left); } *pcpnode = NULL; } else { cnode = clone(node); cnode->ident = clone_ident(node->ident); } cnode->left = cleft; cnode->right = cright; return cnode; } /* see nhash.h */ void HTT_clone(HTT *ctt, const HTT *htt) { unsigned u; for (u = 0; u < HTT_NUM_TREES; u ++) { ctt->tree[u] = clone_node(htt->tree[u], htt->clonedata); } } void HTT2_clone(HTT2 *ctt, const HTT2 *htt) { ctt->tree[0] = clone_node(htt->tree[0], htt->clonedata); ctt->tree[1] = clone_node(htt->tree[1], htt->clonedata); } #endif /* UCPP_CLONE */ /* see nhash.h */ void HTT2_scan(HTT2 *htt, void (*action)(void *)) { scan_node(htt->tree[0], action, NULL, 0); scan_node(htt->tree[1], action, NULL, 0); } void HTT2_scan_arg(HTT2 *htt, void (*action)(void *, void *), void *arg) { scan_node(htt->tree[0], action, arg, SCAN_FLAG_ARG); scan_node(htt->tree[1], action, arg, SCAN_FLAG_ARG); } /* see nhash.h */ void HTT_kill(HTT *htt) { unsigned u; for (u = 0; u < HTT_NUM_TREES; u ++) { scan_node(htt->tree[u], htt->deldata, NULL, SCAN_FLAG_WIPE); } } /* see nhash.h */ void HTT2_kill(HTT2 *htt) { scan_node(htt->tree[0], htt->deldata, NULL, SCAN_FLAG_WIPE); scan_node(htt->tree[1], htt->deldata, NULL, SCAN_FLAG_WIPE); } Convert-Binary-C-0.85/ctlib/0000755000175000001440000000000014677003524014310 5ustar mhxusersConvert-Binary-C-0.85/ctlib/cppreent.h0000644000175000001440000000375214677003452016310 0ustar mhxusers/******************************************************************************* * * HEADER: cppreent.h * ******************************************************************************** * * DESCRIPTION: Some macros to help with ucpp reentrancy * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CPPREENT_H #define _CTLIB_CPPREENT_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "util/ccattr.h" /*===== DEFINES ==============================================================*/ #ifdef pUCPP # undef pUCPP #endif #ifdef pUCPP_ # undef pUCPP_ #endif #ifdef aUCPP # undef aUCPP #endif #ifdef aUCPP_ # undef aUCPP_ #endif #ifdef dUCPP # undef dUCPP #endif # define pUCPP struct CPP *pp __attribute__((unused)) # define pUCPP_ pUCPP, # define aUCPP pp # define aUCPP_ aUCPP, # define dUCPP(a) pUCPP = (struct CPP *)a /* ucpp global variables */ # define r_no_special_macros ((struct CPP *) pp)->no_special_macros # define r_emit_defines ((struct CPP *) pp)->emit_defines # define r_emit_assertions ((struct CPP *) pp)->emit_assertions # define r_emit_dependencies ((struct CPP *) pp)->emit_dependencies # define r_current_filename ((struct CPP *) pp)->current_filename # define r_callback_arg ((struct CPP *) pp)->callback_arg # define r_c99_compliant ((struct CPP *) pp)->c99_compliant # define r_c99_hosted ((struct CPP *) pp)->c99_hosted /*===== TYPEDEFS =============================================================*/ struct CPP; /*===== FUNCTION PROTOTYPES ==================================================*/ #endif Convert-Binary-C-0.85/ctlib/cttags.h0000644000175000001440000000407014677003452015747 0ustar mhxusers/******************************************************************************* * * HEADER: cttags.h * ******************************************************************************** * * DESCRIPTION: Tag properties to C types * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CTTAGS_H #define _CTLIB_CTTAGS_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "arch.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef u_16 CtTagType; typedef u_16 CtTagFlags; typedef struct CtTag_ CtTag, *CtTagList; typedef struct CtTagVtable_ { void (*init )(CtTag *); void (*clone)(CtTag *, const CtTag *); void (*free )(CtTag *); } CtTagVtable; struct CtTag_ { CtTag *next; const CtTagVtable *vtable; CtTagType type; CtTagFlags flags; void *any; }; /*===== FUNCTION PROTOTYPES ==================================================*/ #define tag_new CTlib_tag_new CtTag *tag_new(CtTagType type, const CtTagVtable *vtable); #define tag_clone CTlib_tag_clone CtTag *tag_clone(const CtTag *stag); #define tag_delete CTlib_tag_delete void tag_delete(CtTag *tag); #define find_tag CTlib_find_tag CtTag *find_tag(CtTagList list, CtTagType type); #define insert_tag CTlib_insert_tag void insert_tag(CtTagList *list, CtTag *tag); #define remove_tag CTlib_remove_tag CtTag *remove_tag(CtTagList *list, CtTagType type); #define delete_taglist CTlib_delete_taglist void delete_taglist(CtTagList *list); #define clone_taglist CTlib_clone_taglist CtTagList clone_taglist(CtTagList tag); #endif Convert-Binary-C-0.85/ctlib/cttype.h0000644000175000001440000002042714677003452015776 0ustar mhxusers/******************************************************************************* * * HEADER: cttype.h * ******************************************************************************** * * DESCRIPTION: ANSI C data type objects * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CTTYPE_H #define _CTLIB_CTTYPE_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "arch.h" #include "cttags.h" #include "fileinfo.h" #include "util/list.h" /*===== DEFINES ==============================================================*/ /* value flags */ #define V_IS_UNDEF 0x00000001 #define V_IS_UNSAFE 0x08000000 #define V_IS_UNSAFE_UNDEF 0x10000000 #define V_IS_UNSAFE_CAST 0x20000000 #define V_IS_UNSAFE_PTROP 0x40000000 #define IS_UNSAFE_VAL( val ) ( (val).flags & ( V_IS_UNSAFE \ | V_IS_UNSAFE_UNDEF \ | V_IS_UNSAFE_CAST \ | V_IS_UNSAFE_PTROP ) ) /* type flags */ #define T_VOID 0x00000001 #define T_CHAR 0x00000002 #define T_SHORT 0x00000004 #define T_INT 0x00000008 #define T_LONG 0x00000010 #define T_FLOAT 0x00000020 #define T_DOUBLE 0x00000040 #define T_SIGNED 0x00000080 #define T_UNSIGNED 0x00000100 #define T_ENUM 0x00000200 #define T_STRUCT 0x00000400 #define T_UNION 0x00000800 #define T_COMPOUND (T_STRUCT | T_UNION) #define T_TYPE 0x00001000 #define T_TYPEDEF 0x00002000 #define T_LONGLONG 0x00004000 /* these flags are reserved for user defined purposes */ #define T_USER_FLAG_1 0x00100000 #define T_USER_FLAG_2 0x00200000 #define T_USER_FLAG_3 0x00400000 #define T_USER_FLAG_4 0x00800000 /* this flag indicates the usage of bitfields in structures as they're unsupported */ #define T_HASBITFIELD 0x40000000 /* this flag indicates the use of unsafe values (e.g. sizes of bitfields) */ #define T_UNSAFE_VAL 0x80000000 #define ANY_TYPE_NAME ( T_VOID | T_CHAR | T_SHORT | T_INT | T_LONG | T_FLOAT | T_DOUBLE \ | T_SIGNED | T_UNSIGNED | T_ENUM | T_STRUCT | T_UNION | T_TYPE ) /* get the type out of a pointer to EnumSpecifier / Struct / Typedef */ #define GET_CTYPE( ptr ) (*((CTType *) ptr)) #define IS_TYP_ENUM( ptr ) ( GET_CTYPE( ptr ) == TYP_ENUM ) #define IS_TYP_STRUCT( ptr ) ( GET_CTYPE( ptr ) == TYP_STRUCT ) #define IS_TYP_TYPEDEF( ptr ) ( GET_CTYPE( ptr ) == TYP_TYPEDEF ) #define IS_TYP_TYPEDEF_LIST( ptr ) ( GET_CTYPE( ptr ) == TYP_TYPEDEF_LIST ) #define CTT_IDLEN(ptr) ((ptr)->id_len < 255 ? (ptr)->id_len \ : 255 + strlen((ptr)->identifier + 255)) /*===== TYPEDEFS =============================================================*/ typedef enum { TYP_ENUM, TYP_STRUCT, TYP_TYPEDEF, TYP_TYPEDEF_LIST } CTType; enum { ES_UNSIGNED_SIZE, ES_SIGNED_SIZE, ES_NUM_ENUM_SIZES }; typedef struct { signed long iv; u_32 flags; } Value; typedef struct { FileInfo *pFI; unsigned long line; } ContextInfo; typedef struct { void *ptr; u_32 tflags; } TypeSpec; typedef struct { Value value; unsigned char id_len; char identifier[1]; } Enumerator; typedef struct { CTType ctype; u_32 tflags; unsigned refcount; unsigned sizes[ES_NUM_ENUM_SIZES]; ContextInfo context; LinkedList enumerators; CtTagList tags; unsigned char id_len; char identifier[1]; } EnumSpecifier; typedef struct { unsigned char size; /* size (in bytes), usually same as Declarator.size */ unsigned char bits; /* size (in bits) of the bitfield */ unsigned char pos; /* pos (in bits) of the bitfield (relative to LSB) */ } BitfieldInfo; typedef struct { signed offset : 29; unsigned pointer_flag : 1; unsigned array_flag : 1; unsigned bitfield_flag : 1; signed size, item_size; CtTagList tags; union { LinkedList array; BitfieldInfo bitfield; } ext; unsigned char id_len; char identifier[1]; } Declarator; typedef struct { int pointer_flag; int multiplicator; } AbstractDeclarator; typedef struct { TypeSpec type; LinkedList declarators; int offset, size; } StructDeclaration; typedef struct { CTType ctype; u_32 tflags; unsigned refcount; unsigned align : 16; unsigned pack : 16; unsigned size; ContextInfo context; LinkedList declarations; CtTagList tags; unsigned char id_len; char identifier[1]; } Struct; typedef struct { CTType ctype; TypeSpec *pType; Declarator *pDecl; } Typedef; typedef struct { CTType ctype; TypeSpec type; LinkedList typedefs; } TypedefList; /*===== FUNCTION PROTOTYPES ==================================================*/ #define value_new CTlib_value_new Value *value_new(signed long iv, u_32 flags); #define value_delete CTlib_value_delete void value_delete(Value *pValue); #define value_clone CTlib_value_clone Value *value_clone(const Value *pSrc); #define enum_new CTlib_enum_new Enumerator *enum_new(const char *identifier, int id_len, Value *pValue); #define enum_delete CTlib_enum_delete void enum_delete(Enumerator *pEnum); #define enum_clone CTlib_enum_clone Enumerator *enum_clone(const Enumerator *pSrc); #define enumspec_new CTlib_enumspec_new EnumSpecifier *enumspec_new(const char *identifier, int id_len, LinkedList enumerators); #define enumspec_update CTlib_enumspec_update void enumspec_update(EnumSpecifier *pEnumSpec, LinkedList enumerators); #define enumspec_delete CTlib_enumspec_delete void enumspec_delete(EnumSpecifier *pEnumSpec); #define enumspec_clone CTlib_enumspec_clone EnumSpecifier *enumspec_clone(const EnumSpecifier *pSrc); #define decl_new CTlib_decl_new Declarator *decl_new(const char *identifier, int id_len); #define decl_delete CTlib_decl_delete void decl_delete(Declarator *pDecl); #define decl_clone CTlib_decl_clone Declarator *decl_clone(const Declarator *pSrc); #define structdecl_new CTlib_structdecl_new StructDeclaration *structdecl_new(TypeSpec type, LinkedList declarators); #define structdecl_delete CTlib_structdecl_delete void structdecl_delete(StructDeclaration *pStructDecl); #define structdecl_clone CTlib_structdecl_clone StructDeclaration *structdecl_clone(const StructDeclaration *pSrc); #define struct_new CTlib_struct_new Struct *struct_new(const char *identifier, int id_len, u_32 tflags, unsigned pack, LinkedList declarations); #define struct_delete CTlib_struct_delete void struct_delete(Struct *pStruct); #define struct_clone CTlib_struct_clone Struct *struct_clone(const Struct *pSrc); #define typedef_new CTlib_typedef_new Typedef *typedef_new(TypeSpec *pType, Declarator *pDecl); #define typedef_delete CTlib_typedef_delete void typedef_delete(Typedef *pTypedef); #define typedef_clone CTlib_typedef_clone Typedef *typedef_clone(const Typedef *pSrc); #define typedef_list_new CTlib_typedef_list_new TypedefList *typedef_list_new(TypeSpec type, LinkedList typedefs); #define typedef_list_delete CTlib_typedef_list_delete void typedef_list_delete(TypedefList *pTypedefList); #define typedef_list_clone CTlib_typedef_list_clone TypedefList *typedef_list_clone(const TypedefList *pSrc); #define get_typedef_list CTlib_get_typedef_list TypedefList *get_typedef_list(Typedef *pTypedef); #define ctt_refcount_inc CTlib_ctt_refcount_inc void ctt_refcount_inc(void *ptr); #endif Convert-Binary-C-0.85/ctlib/y_pragma.c0000644000175000001440000017447014677003505016267 0ustar mhxusers/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, especially those whose name start with YY_ or yy_. They are private implementation details that can be changed or removed. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ #define YYBISON 30802 /* Bison version string. */ #define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Substitute the variable and function names. */ #define yyparse pragma_parse #define yylex pragma_lex #define yyerror pragma_error #define yydebug pragma_debug #define yynerrs pragma_nerrs /* First part of user prologue. */ #line 1 "ctlib/pragma.y" /******************************************************************************* * * MODULE: pragma.y * ******************************************************************************** * * DESCRIPTION: Pragma parser * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctdebug.h" #include "cterror.h" #include "pragma.h" #include "util/ccattr.h" #include "util/memalloc.h" #include "util/list.h" #include "ucpp/cpp.h" /*===== DEFINES ==============================================================*/ /* ADDITIONAL BISON CONFIGURATION */ /* * Bison version >= 1.31 is needed for YYFPRINTF */ #if YYDEBUG && defined CTLIB_DEBUGGING #define YYFPRINTF BisonDebugFunc #endif #define pragma_error( state, msg ) \ CT_DEBUG( PRAGMA, ("pragma_error(): %s", msg) ) #define pragma_parse CTlib_pragma_parse /* MACROS */ #define PSTATE ((PragmaState *) pState) #define VALID_PACK( value ) \ ( (value) == 0 \ || (value) == 1 \ || (value) == 2 \ || (value) == 4 \ || (value) == 8 \ ) /*===== TYPEDEFS =============================================================*/ struct _pragmaState { CParseInfo *pCPI; const char *file; long int line; const char *code; struct { LinkedList stack; unsigned current; } pack; }; typedef struct { unsigned size; } PackElement; /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /* TOKEN MAPPING TABLE */ static const int tokentab[] = { 0, /* NONE, */ /* whitespace */ 0, /* NEWLINE, */ /* newline */ 0, /* COMMENT, */ /* comment */ 0, /* NUMBER, */ /* number constant */ 0, /* NAME, */ /* identifier */ 0, /* BUNCH, */ /* non-C characters */ 0, /* PRAGMA, */ /* a #pragma directive */ 0, /* CONTEXT, */ /* new file or #line */ 0, /* STRING, */ /* constant "xxx" */ 0, /* CHAR, */ /* constant 'xxx' */ '/', /* SLASH, */ /* / */ 0, /* ASSLASH, */ /* /= */ '-', /* MINUS, */ /* - */ 0, /* MMINUS, */ /* -- */ 0, /* ASMINUS, */ /* -= */ 0, /* ARROW, */ /* -> */ '+', /* PLUS, */ /* + */ 0, /* PPLUS, */ /* ++ */ 0, /* ASPLUS, */ /* += */ '<', /* LT, */ /* < */ 0, /* LEQ, */ /* <= */ 0, /* LSH, */ /* << */ 0, /* ASLSH, */ /* <<= */ '>', /* GT, */ /* > */ 0, /* GEQ, */ /* >= */ 0, /* RSH, */ /* >> */ 0, /* ASRSH, */ /* >>= */ '=', /* ASGN, */ /* = */ 0, /* SAME, */ /* == */ #ifdef CAST_OP 0, /* CAST, */ /* => */ #endif '~', /* NOT, */ /* ~ */ 0, /* NEQ, */ /* != */ '&', /* AND, */ /* & */ 0, /* LAND, */ /* && */ 0, /* ASAND, */ /* &= */ '|', /* OR, */ /* | */ 0, /* LOR, */ /* || */ 0, /* ASOR, */ /* |= */ '%', /* PCT, */ /* % */ 0, /* ASPCT, */ /* %= */ '*', /* STAR, */ /* * */ 0, /* ASSTAR, */ /* *= */ '^', /* CIRC, */ /* ^ */ 0, /* ASCIRC, */ /* ^= */ '!', /* LNOT, */ /* ! */ '{', /* LBRA, */ /* { */ '}', /* RBRA, */ /* } */ '[', /* LBRK, */ /* [ */ ']', /* RBRK, */ /* ] */ '(', /* LPAR, */ /* ( */ ')', /* RPAR, */ /* ) */ ',', /* COMMA, */ /* , */ '?', /* QUEST, */ /* ? */ ';', /* SEMIC, */ /* ; */ ':', /* COLON, */ /* : */ '.', /* DOT, */ /* . */ 0, /* MDOTS, */ /* ... */ 0, /* SHARP, */ /* # */ 0, /* DSHARP, */ /* ## */ 0, /* OPT_NONE, */ /* optional space to separate tokens in text output */ 0, /* DIGRAPH_TOKENS, */ /* there begin digraph tokens */ /* for DIG_*, do not change order, unless checking undig() in cpp.c */ '[', /* DIG_LBRK, */ /* <: */ ']', /* DIG_RBRK, */ /* :> */ '{', /* DIG_LBRA, */ /* <% */ '}', /* DIG_RBRA, */ /* %> */ 0, /* DIG_SHARP, */ /* %: */ 0, /* DIG_DSHARP, */ /* %:%: */ 0, /* DIGRAPH_TOKENS_END, */ /* digraph tokens end here */ 0, /* LAST_MEANINGFUL_TOKEN, */ /* reserved words will go there */ 0, /* MACROARG, */ /* special token for representing macro arguments */ 0, /* UPLUS = CPPERR, */ /* unary + */ 0, /* UMINUS */ /* unary - */ }; #line 258 "ctlib/y_pragma.c" # ifndef YY_CAST # ifdef __cplusplus # define YY_CAST(Type, Val) static_cast (Val) # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) # else # define YY_CAST(Type, Val) ((Type) (Val)) # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) # endif # endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # else # define YY_NULLPTR ((void*)0) # endif # endif /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int pragma_debug; #endif /* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { YYEMPTY = -2, YYEOF = 0, /* "end of file" */ YYerror = 256, /* error */ YYUNDEF = 257, /* "invalid token" */ CONSTANT = 258, /* CONSTANT */ PACK_TOK = 259, /* PACK_TOK */ PUSH_TOK = 260, /* PUSH_TOK */ POP_TOK = 261 /* POP_TOK */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { #line 185 "ctlib/pragma.y" int ival; #line 315 "ctlib/y_pragma.c" }; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif int pragma_parse (PragmaState *pState); /* Symbol kind. */ enum yysymbol_kind_t { YYSYMBOL_YYEMPTY = -2, YYSYMBOL_YYEOF = 0, /* "end of file" */ YYSYMBOL_YYerror = 1, /* error */ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ YYSYMBOL_CONSTANT = 3, /* CONSTANT */ YYSYMBOL_PACK_TOK = 4, /* PACK_TOK */ YYSYMBOL_PUSH_TOK = 5, /* PUSH_TOK */ YYSYMBOL_POP_TOK = 6, /* POP_TOK */ YYSYMBOL_7_ = 7, /* '(' */ YYSYMBOL_8_ = 8, /* ')' */ YYSYMBOL_9_ = 9, /* ',' */ YYSYMBOL_YYACCEPT = 10, /* $accept */ YYSYMBOL_pragma = 11, /* pragma */ YYSYMBOL_pragma_pack = 12, /* pragma_pack */ YYSYMBOL_pragma_pack_args = 13 /* pragma_pack_args */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; /* Second part of user prologue. */ #line 189 "ctlib/pragma.y" /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static int is_valid_pack_arg(PragmaState *pState, int arg); static inline int pragma_lex(YYSTYPE *plval, PragmaState *pState); static PackElement *packelem_new(unsigned size); static void packelem_delete(PackElement *pPack); #line 366 "ctlib/y_pragma.c" #ifdef short # undef short #endif /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure and (if available) are included so that the code can choose integer types of a good width. */ #ifndef __PTRDIFF_MAX__ # include /* INFRINGES ON USER NAME SPACE */ # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YY_STDINT_H # endif #endif /* Narrow types that promote to a signed type and that can represent a signed or unsigned integer of at least N bits. In tables they can save space and decrease cache pressure. Promoting to a signed type helps avoid bugs in integer arithmetic. */ #ifdef __INT_LEAST8_MAX__ typedef __INT_LEAST8_TYPE__ yytype_int8; #elif defined YY_STDINT_H typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif #ifdef __INT_LEAST16_MAX__ typedef __INT_LEAST16_TYPE__ yytype_int16; #elif defined YY_STDINT_H typedef int_least16_t yytype_int16; #else typedef short yytype_int16; #endif /* Work around bug in HP-UX 11.23, which defines these macros incorrectly for preprocessor constants. This workaround can likely be removed in 2023, as HPE has promised support for HP-UX 11.23 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of . */ #ifdef __hpux # undef UINT_LEAST8_MAX # undef UINT_LEAST16_MAX # define UINT_LEAST8_MAX 255 # define UINT_LEAST16_MAX 65535 #endif #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ && UINT_LEAST8_MAX <= INT_MAX) typedef uint_least8_t yytype_uint8; #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX typedef unsigned char yytype_uint8; #else typedef short yytype_uint8; #endif #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ typedef __UINT_LEAST16_TYPE__ yytype_uint16; #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ && UINT_LEAST16_MAX <= INT_MAX) typedef uint_least16_t yytype_uint16; #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX typedef unsigned short yytype_uint16; #else typedef int yytype_uint16; #endif #ifndef YYPTRDIFF_T # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ # define YYPTRDIFF_T __PTRDIFF_TYPE__ # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ # elif defined PTRDIFF_MAX # ifndef ptrdiff_t # include /* INFRINGES ON USER NAME SPACE */ # endif # define YYPTRDIFF_T ptrdiff_t # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX # else # define YYPTRDIFF_T long # define YYPTRDIFF_MAXIMUM LONG_MAX # endif #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned # endif #endif #define YYSIZE_MAXIMUM \ YY_CAST (YYPTRDIFF_T, \ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ ? YYPTRDIFF_MAXIMUM \ : YY_CAST (YYSIZE_T, -1))) #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) /* Stored state numbers (used for stacks). */ typedef yytype_int8 yy_state_t; /* State numbers in computations. */ typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef YY_ATTRIBUTE_PURE # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define YY_ATTRIBUTE_PURE # endif #endif #ifndef YY_ATTRIBUTE_UNUSED # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) # else # define YY_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YY_USE(E) ((void) (E)) #else # define YY_USE(E) /* empty */ #endif /* Suppress an incorrect diagnostic about yylval being uninitialized. */ #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ # if __GNUC__ * 100 + __GNUC_MINOR__ < 407 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") # else # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ # define YY_IGNORE_USELESS_CAST_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") # define YY_IGNORE_USELESS_CAST_END \ _Pragma ("GCC diagnostic pop") #endif #ifndef YY_IGNORE_USELESS_CAST_BEGIN # define YY_IGNORE_USELESS_CAST_BEGIN # define YY_IGNORE_USELESS_CAST_END #endif #define YY_ASSERT(E) ((void) (0 && (E))) #if 1 /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* 1 */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 9 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 10 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 4 /* YYNRULES -- Number of rules. */ #define YYNRULES 8 /* YYNSTATES -- Number of states. */ #define YYNSTATES 14 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 261 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ (0 <= (YYX) && (YYX) <= YYMAXUTOK \ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ static const yytype_int8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 8, 2, 2, 9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { 0, 218, 218, 222, 224, 226, 230, 237, 245 }; #endif /** Accessing symbol of state STATE. */ #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) #if 1 /* The user-facing name of the symbol whose (internal) number is YYSYMBOL. No bounds checking. */ static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "\"end of file\"", "error", "\"invalid token\"", "CONSTANT", "PACK_TOK", "PUSH_TOK", "POP_TOK", "'('", "')'", "','", "$accept", "pragma", "pragma_pack", "pragma_pack_args", YY_NULLPTR }; static const char * yysymbol_name (yysymbol_kind_t yysymbol) { return yytname[yysymbol]; } #endif #define YYPACT_NINF (-7) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) #define YYTABLE_NINF (-1) #define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int8 yypact[] = { 0, -6, 6, -7, -3, -7, -7, -2, -7, -7, 1, 5, -7, -7 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_int8 yydefact[] = { 0, 3, 0, 2, 0, 1, 6, 0, 8, 4, 0, 0, 5, 7 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -7, -7, -7, -7 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { 0, 2, 3, 10 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int8 yytable[] = { 6, 4, 7, 8, 1, 9, 5, 11, 13, 12 }; static const yytype_int8 yycheck[] = { 3, 7, 5, 6, 4, 8, 0, 9, 3, 8 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_int8 yystos[] = { 0, 4, 11, 12, 7, 0, 3, 5, 6, 8, 13, 9, 8, 3 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int8 yyr1[] = { 0, 10, 11, 12, 12, 12, 13, 13, 13 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 1, 1, 3, 4, 1, 3, 1 }; enum { YYENOMEM = -2 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab #define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (pState, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Backward compatibility with an undocumented macro. Use YYerror or YYUNDEF. */ #define YYERRCODE YYUNDEF /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (0) # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Kind, Value, pState); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*-----------------------------------. | Print this symbol's value on YYO. | `-----------------------------------*/ static void yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, PragmaState *pState) { FILE *yyoutput = yyo; YY_USE (yyoutput); YY_USE (pState); if (!yyvaluep) return; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } /*---------------------------. | Print this symbol on YYO. | `---------------------------*/ static void yy_symbol_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, PragmaState *pState) { YYFPRINTF (yyo, "%s %s (", yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); yy_symbol_value_print (yyo, yykind, yyvaluep, pState); YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule, PragmaState *pState) { int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), &yyvsp[(yyi + 1) - (yynrhs)], pState); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, Rule, pState); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) ((void) 0) # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif /* Context of a parse error. */ typedef struct { yy_state_t *yyssp; yysymbol_kind_t yytoken; } yypcontext_t; /* Put in YYARG at most YYARGN of the expected tokens given the current YYCTX, and return the number of tokens stored in YYARG. If YYARG is null, return the number of expected tokens (guaranteed to be less than YYNTOKENS). Return YYENOMEM on memory exhaustion. Return 0 if there are more than YYARGN expected tokens, yet fill YYARG up to YYARGN. */ static int yypcontext_expected_tokens (const yypcontext_t *yyctx, yysymbol_kind_t yyarg[], int yyargn) { /* Actual size of YYARG. */ int yycount = 0; int yyn = yypact[+*yyctx->yyssp]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror && !yytable_value_is_error (yytable[yyx + yyn])) { if (!yyarg) ++yycount; else if (yycount == yyargn) return 0; else yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx); } } if (yyarg && yycount == 0 && 0 < yyargn) yyarg[0] = YYSYMBOL_YYEMPTY; return yycount; } #ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) # else /* Return the length of YYSTR. */ static YYPTRDIFF_T yystrlen (const char *yystr) { YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif #endif #ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ static char * yystpcpy (char *yydest, const char *yysrc) { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif #endif #ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYPTRDIFF_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; else goto append; append: default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (yyres) return yystpcpy (yyres, yystr) - yyres; else return yystrlen (yystr); } #endif static int yy_syntax_error_arguments (const yypcontext_t *yyctx, yysymbol_kind_t yyarg[], int yyargn) { /* Actual size of YYARG. */ int yycount = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yyctx->yytoken != YYSYMBOL_YYEMPTY) { int yyn; if (yyarg) yyarg[yycount] = yyctx->yytoken; ++yycount; yyn = yypcontext_expected_tokens (yyctx, yyarg ? yyarg + 1 : yyarg, yyargn - 1); if (yyn == YYENOMEM) return YYENOMEM; else yycount += yyn; } return yycount; } /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the required number of bytes is too large to store. */ static int yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, const yypcontext_t *yyctx) { enum { YYARGS_MAX = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; /* Arguments of yyformat: reported tokens (one for the "unexpected", one per "expected"). */ yysymbol_kind_t yyarg[YYARGS_MAX]; /* Cumulated lengths of YYARG. */ YYPTRDIFF_T yysize = 0; /* Actual size of YYARG. */ int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX); if (yycount == YYENOMEM) return YYENOMEM; switch (yycount) { #define YYCASE_(N, S) \ case N: \ yyformat = S; \ break default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); #undef YYCASE_ } /* Compute error message size. Don't count the "%s"s, but reserve room for the terminator. */ yysize = yystrlen (yyformat) - 2 * yycount + 1; { int yyi; for (yyi = 0; yyi < yycount; ++yyi) { YYPTRDIFF_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else return YYENOMEM; } } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return -1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]); yyformat += 2; } else { ++yyp; ++yyformat; } } return 0; } /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep, PragmaState *pState) { YY_USE (yyvaluep); YY_USE (pState); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } /*----------. | yyparse. | `----------*/ int yyparse (PragmaState *pState) { /* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ YY_INITIAL_VALUE (static YYSTYPE yyval_default;) YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Number of syntax errors so far. */ int yynerrs = 0; yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus = 0; /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ YYPTRDIFF_T yystacksize = YYINITDEPTH; /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; yy_state_t *yyss = yyssa; yy_state_t *yyssp = yyss; /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; /*--------------------------------------------------------------------. | yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); YY_IGNORE_USELESS_CAST_BEGIN *yyssp = YY_CAST (yy_state_t, yystate); YY_IGNORE_USELESS_CAST_END YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * YYSIZEOF (*yyssp), &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yy_state_t *yyss1 = yyss; union yyalloc *yyptr = YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YY_IGNORE_USELESS_CAST_BEGIN YYDPRINTF ((stderr, "Stack size increased to %ld\n", YY_CAST (long, yystacksize))); YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (&yylval, pState); } if (yychar <= YYEOF) { yychar = YYEOF; yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else if (yychar == YYerror) { /* The scanner already issued an error message, process directly to error recovery. But do not keep the error token as lookahead, it is too special and may lead us to an endless loop in error recovery. */ yychar = YYUNDEF; yytoken = YYSYMBOL_YYerror; goto yyerrlab1; } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Discard the shifted token. */ yychar = YYEMPTY; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 3: /* pragma_pack: PACK_TOK */ #line 223 "ctlib/pragma.y" { PSTATE->pack.current = 0; } #line 1590 "ctlib/y_pragma.c" break; case 4: /* pragma_pack: PACK_TOK '(' ')' */ #line 225 "ctlib/pragma.y" { PSTATE->pack.current = 0; } #line 1596 "ctlib/y_pragma.c" break; case 6: /* pragma_pack_args: CONSTANT */ #line 231 "ctlib/pragma.y" { if (is_valid_pack_arg(PSTATE, (yyvsp[0].ival))) { PSTATE->pack.current = (yyvsp[0].ival); } } #line 1607 "ctlib/y_pragma.c" break; case 7: /* pragma_pack_args: PUSH_TOK ',' CONSTANT */ #line 238 "ctlib/pragma.y" { if (is_valid_pack_arg(PSTATE, (yyvsp[0].ival))) { LL_push(PSTATE->pack.stack, packelem_new(PSTATE->pack.current)); PSTATE->pack.current = (yyvsp[0].ival); } } #line 1619 "ctlib/y_pragma.c" break; case 8: /* pragma_pack_args: POP_TOK */ #line 246 "ctlib/pragma.y" { PackElement *pPack = LL_pop(PSTATE->pack.stack); if (pPack) { PSTATE->pack.current = pPack->size; packelem_delete(pPack); } else PSTATE->pack.current = 0; } #line 1635 "ctlib/y_pragma.c" break; #line 1639 "ctlib/y_pragma.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; *++yyvsp = yyval; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ { const int yylhs = yyr1[yyn] - YYNTOKENS; const int yyi = yypgoto[yylhs] + *yyssp; yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp ? yytable[yyi] : yydefgoto[yylhs]); } goto yynewstate; /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; { yypcontext_t yyctx = {yyssp, yytoken}; char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == -1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); if (yymsg) { yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); yymsgp = yymsg; } else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = YYENOMEM; } } yyerror (pState, yymsgp); if (yysyntax_error_status == YYENOMEM) YYNOMEM; } } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, pState); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYSYMBOL_YYerror; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", YY_ACCESSING_SYMBOL (yystate), yyvsp, pState); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturnlab; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturnlab; /*-----------------------------------------------------------. | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | `-----------------------------------------------------------*/ yyexhaustedlab: yyerror (pState, YY_("memory exhausted")); yyresult = 2; goto yyreturnlab; /*----------------------------------------------------------. | yyreturnlab -- parsing is finished, clean up and return. | `----------------------------------------------------------*/ yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, pState); } /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, pState); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); return yyresult; } #line 259 "ctlib/pragma.y" /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: is_valid_pack_arg * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int is_valid_pack_arg(PragmaState *pState, int arg) { if (VALID_PACK(arg)) return 1; push_error(pState->pCPI, "%s, line %ld: invalid argument %d to #pragma pack", pState->file, pState->line, arg); return 0; } /******************************************************************************* * * ROUTINE: packelem_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static PackElement *packelem_new(unsigned size) { PackElement *pPack; AllocF(PackElement *, pPack, sizeof(PackElement)); pPack->size = size; return pPack; } /******************************************************************************* * * ROUTINE: packelem_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void packelem_delete(PackElement *pPack) { if (pPack) Free(pPack); } /******************************************************************************* * * ROUTINE: pragma_lex * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pragma lexer. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int pragma_lex(YYSTYPE *plval, PragmaState *pState) { int token, rval; CT_DEBUG( PRAGMA, ("pragma_lex()")); while ((token = (int) *pState->code++) != 0) { switch (token) { case NUMBER: { const char *num = pState->code; pState->code = strchr(num, PRAGMA_TOKEN_END) + 1; plval->ival = strtol(num, NULL, 0); CT_DEBUG(PRAGMA, ("pragma - constant: %d", plval->ival)); return CONSTANT; } case NAME: { const char *tokstr = pState->code; int toklen, tokval; #include "token/t_pragma.c" success: pState->code += toklen + 1; return tokval; unknown: break; } default: if ((rval = tokentab[token]) != 0) return rval; break; } } return 0; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: pragma_parser_parse * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int pragma_parser_parse(PragmaState *pPragma) { return pragma_parse(pPragma); } /******************************************************************************* * * ROUTINE: pragma_parser_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ PragmaState *pragma_parser_new(CParseInfo *pCPI) { PragmaState *pState; CT_DEBUG(PRAGMA, ("pragma_parser_new")); AllocF(PragmaState *, pState, sizeof(PragmaState)); pState->pCPI = pCPI; pState->file = 0; pState->line = 0; pState->code = 0; pState->pack.stack = LL_new(); pState->pack.current = 0; return pState; } /******************************************************************************* * * ROUTINE: pragma_parser_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pragma_parser_delete(PragmaState *pPragma) { if (pPragma) { CT_DEBUG(PRAGMA, ("pragma_parser_delete")); LL_destroy(pPragma->pack.stack, (LLDestroyFunc) packelem_delete); Free(pPragma); } } /******************************************************************************* * * ROUTINE: pragma_parser_set_context * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pragma_parser_set_context(PragmaState *pPragma, const char *file, long int line, const char *code) { pPragma->file = file; pPragma->line = line; pPragma->code = code; } /******************************************************************************* * * ROUTINE: pragma_parser_get_pack * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ unsigned pragma_parser_get_pack(PragmaState *pPragma) { return pPragma->pack.current; } Convert-Binary-C-0.85/ctlib/layout.c0000644000175000001440000005332114677003452015775 0ustar mhxusers/******************************************************************************* * * MODULE: layout.c * ******************************************************************************** * * DESCRIPTION: Type layouting routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctdebug.h" #include "ctlib/cterror.h" #include "ctlib/layout.h" /*===== DEFINES ==============================================================*/ #define LAYOUT_ALIGNMENT(pLP) ((pLP)->alignment ? (pLP)->alignment \ : CTLIB_ALIGNMENT) #define LAYOUT_COMPOUND_ALIGNMENT(pLP) ((pLP)->compound_alignment \ ? (pLP)->compound_alignment \ : CTLIB_COMPOUND_ALIGNMENT) /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ unsigned native_alignment = 0; unsigned native_compound_alignment = 0; /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_type_info_generic * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ ErrorGTI get_type_info_generic(const LayoutParam *pLP, const TypeSpec *pTS, const Declarator *pDecl, const char *format, ...) { u_32 flags = pTS->tflags; void *tptr = pTS->ptr; unsigned *pSize = NULL, *pItemSize = NULL, *pAlign = NULL; u_32 *pFlags = NULL; ErrorGTI err = GTI_NO_ERROR; unsigned size; va_list ap; CT_DEBUG(CTLIB, ("get_type_info_generic( pLP=%p, pTS=%p " "[flags=0x%08lX, ptr=%p], pDecl=%p, format=\"%s\" )", pLP, pTS, (unsigned long) flags, tptr, pDecl, format)); va_start(ap, format); for (; *format; format++) { switch (*format) { case 'a': pAlign = va_arg(ap, unsigned *); break; case 'f': pFlags = va_arg(ap, u_32 *); break; case 'i': pItemSize = va_arg(ap, unsigned *); break; case 's': pSize = va_arg(ap, unsigned *); break; default: fatal_error("invalid format character (%c) in get_type_info_generic()", *format); break; } } va_end(ap); if (pFlags) *pFlags = 0; if (pDecl && pDecl->pointer_flag) { CT_DEBUG(CTLIB, ("pointer flag set")); size = pLP->ptr_size ? pLP->ptr_size : CTLIB_POINTER_SIZE; if (pAlign) *pAlign = size; } else if (flags & T_TYPE) { Typedef *pTypedef = (Typedef *) tptr; CT_DEBUG(CTLIB, ("T_TYPE flag set")); assert(pTypedef != NULL); if (pFlags) { u_32 flags; err = get_type_info_generic(pLP, pTypedef->pType, pTypedef->pDecl, "saf", &size, pAlign, &flags); *pFlags |= flags; } else err = get_type_info_generic(pLP, pTypedef->pType, pTypedef->pDecl, "sa", &size, pAlign); } else if (flags & T_ENUM) { CT_DEBUG(CTLIB, ("T_ENUM flag set")); assert(pLP->enum_size > 0 || tptr != NULL); size = pLP->enum_size > 0 ? (unsigned) pLP->enum_size : ((EnumSpecifier *) tptr)->sizes[-pLP->enum_size]; if (pAlign) *pAlign = size; } else if (flags & T_COMPOUND) { Struct *pStruct = (Struct *) tptr; CT_DEBUG(CTLIB, ("T_STRUCT or T_UNION flag set")); assert(pStruct != NULL); if (pStruct->declarations == NULL) { CT_DEBUG(CTLIB, ("no struct declarations in get_type_info_generic")); size = pLP->int_size ? pLP->int_size : sizeof(int); if( pAlign ) *pAlign = size; err = GTI_NO_STRUCT_DECL; } else { if (pStruct->align == 0) layout_compound_generic(pLP, pStruct); size = pStruct->size; if (pAlign) *pAlign = pStruct->align; } if (pFlags) *pFlags |= pStruct->tflags & (T_HASBITFIELD | T_UNSAFE_VAL); } else { CT_DEBUG( CTLIB, ("only basic type flags set") ); #define LOAD_SIZE( type ) \ size = pLP->type ## _size ? pLP->type ## _size : CTLIB_ ## type ## _SIZE if (flags & T_VOID) /* XXX: do we want void ? */ size = 1; else if ((flags & (T_LONG|T_DOUBLE)) == (T_LONG|T_DOUBLE)) LOAD_SIZE(long_double); else if(flags & T_LONGLONG) LOAD_SIZE(long_long); else if(flags & T_FLOAT) LOAD_SIZE(float); else if(flags & T_DOUBLE) LOAD_SIZE(double); else if(flags & T_CHAR) LOAD_SIZE(char); else if(flags & T_SHORT) LOAD_SIZE(short); else if(flags & T_LONG) LOAD_SIZE(long); else LOAD_SIZE(int); #undef LOAD_SIZE if (pAlign) *pAlign = size; } if (pItemSize) *pItemSize = size; if (pSize) { if (pDecl && pDecl->array_flag) { if (pDecl->array_flag) { ListIterator ai; Value *pValue; CT_DEBUG(CTLIB, ("processing array [%p]", pDecl->ext.array)); LL_foreach(pValue, ai, pDecl->ext.array) { CT_DEBUG(CTLIB, ("[%ld]", pValue->iv)); size *= pValue->iv; if (pFlags && IS_UNSAFE_VAL(*pValue)) *pFlags |= T_UNSAFE_VAL; } } else if (pDecl->bitfield_flag) { size = 0; } } *pSize = size; } CT_DEBUG(CTLIB, ("get_type_info_generic( size(%p)=%d, align(%p)=%d, " "item(%p)=%d, flags(%p)=0x%08lX ) finished", pSize, pSize ? *pSize : 0, pAlign, pAlign ? *pAlign : 0, pItemSize, pItemSize ? *pItemSize : 0, pFlags, (unsigned long) (pFlags ? *pFlags : 0))); return err; } /******************************************************************************* * * ROUTINE: layout_compound_generic * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define BL_SET_BYTE_ORDER(byte_order) \ do { \ BLPropValue pv; \ enum BLError error; \ switch (byte_order) \ { \ case CBO_BIG_ENDIAN: pv.v.v_str = BLPV_BIG_ENDIAN; break; \ case CBO_LITTLE_ENDIAN: pv.v.v_str = BLPV_LITTLE_ENDIAN; break; \ default: \ fatal_error("invalid byte-order in BL_SET_BYTEORDER()"); \ break; \ } \ pv.type = BLPVT_STR; \ error = bl->m->set(bl, BLP_BYTE_ORDER, &pv); \ if (error != BLE_NO_ERROR) \ fatal_error(blproperror, 's', BLP_BYTE_ORDER, error); \ } while (0) #define BL_SET(prop, val) \ do { \ BLPropValue pv; \ enum BLError error; \ pv.type = BLPVT_INT; \ pv.v.v_int = val; \ error = bl->m->set(bl, BLP_ ## prop, &pv); \ if (error != BLE_NO_ERROR) \ fatal_error(blproperror, 's', BLP_ ## prop, error); \ } while (0) #define BL_GET(prop, val) \ do { \ BLPropValue pv; \ enum BLError error; \ error = bl->m->get(bl, BLP_ ## prop, &pv); \ if (error != BLE_NO_ERROR) \ fatal_error(blproperror, 'g', BLP_ ## prop, error); \ assert(pv.type == BLPVT_INT); \ val = pv.v.v_int; \ } while (0) #define FINISH_BITFIELD \ do { \ bl->m->finalize(bl); \ BL_GET(OFFSET, pStruct->size ); \ BL_GET(ALIGN, pStruct->align); \ } while (0) void layout_compound_generic(const LayoutParam *pLP, Struct *pStruct) { ListIterator sdi; static const char *blproperror = "couldn't %cet bitfield layouter property (%d) => error %d"; StructDeclaration *pStructDecl; Declarator *pDecl; unsigned size, item_size, align, alignment; u_32 flags; int in_bitfield = 0; BitfieldLayouter bl = pLP->bflayouter; CT_DEBUG(CTLIB, ("layout_compound_generic( %s ), got %d struct declaration(s)", pStruct->identifier[0] ? pStruct->identifier : "", LL_count(pStruct->declarations))); if (pStruct->declarations == NULL) { CT_DEBUG(CTLIB, ("no struct declarations in layout_compound_generic")); return; } alignment = pStruct->pack ? pStruct->pack : LAYOUT_ALIGNMENT(pLP); pStruct->align = alignment < LAYOUT_COMPOUND_ALIGNMENT(pLP) ? alignment : LAYOUT_COMPOUND_ALIGNMENT(pLP); BL_SET(MAX_ALIGN, alignment); BL_SET_BYTE_ORDER(pLP->byte_order); LL_foreach(pStructDecl, sdi, pStruct->declarations) { CT_DEBUG(CTLIB, ("%d declarators in struct declaration, tflags=0x%08lX ptr=%p", LL_count(pStructDecl->declarators), (unsigned long) pStructDecl->type.tflags, pStructDecl->type.ptr)); pStructDecl->offset = pStruct->tflags & T_STRUCT ? -1 : 0; pStructDecl->size = 0; if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { CT_DEBUG(CTLIB, ("current declarator [%s]", pDecl->identifier[0] ? pDecl->identifier : "")); get_type_info_generic(pLP, &pStructDecl->type, pDecl, "saif", &size, &align, &item_size, &flags); CT_DEBUG(CTLIB, ("declarator size=%u, item=%u, align=%u, flags=0x%08lX", size, item_size, align, (unsigned long) flags)); if ((flags & T_HASBITFIELD) || pDecl->bitfield_flag) { CT_DEBUG(CTLIB, ("found bitfield '%s' in '%s %s'", pDecl->identifier[0] ? pDecl->identifier : "", pStruct->tflags & T_STRUCT ? "struct" : "union", pStruct->identifier[0] ? pStruct->identifier : "")); pStruct->tflags |= T_HASBITFIELD; } if (flags & T_UNSAFE_VAL) { CT_DEBUG(CTLIB, ("unsafe values in '%s %s'", pStruct->tflags & T_STRUCT ? "struct" : "union", pStruct->identifier[0] ? pStruct->identifier : "")); pStruct->tflags |= T_UNSAFE_VAL; } if (pDecl->bitfield_flag) { BLPushParam pp; enum BLError error; if (!in_bitfield) { bl->m->reset(bl); BL_SET(ALIGN, pStruct->align); if (pStruct->tflags & T_STRUCT) { BL_SET(OFFSET, pStruct->size); in_bitfield = 1; } else /* T_UNION */ { BL_SET(OFFSET, 0); /* don't set in_bitfield = 1 */ } } pp.pStruct = pStruct; pp.pDecl = pDecl; pp.type_size = item_size; pp.type_align = align; error = bl->m->push(bl, &pp); if (error != BLE_NO_ERROR) fatal_error("couldn't push bitfield => error %d", error); if (pStruct->tflags & T_UNION) FINISH_BITFIELD; } else { if (in_bitfield) { FINISH_BITFIELD; in_bitfield = 0; } pDecl->size = size; pDecl->item_size = item_size; if (align > alignment) align = alignment; if (align > pStruct->align) pStruct->align = align; if (pStruct->tflags & T_STRUCT) { unsigned mod = pStruct->size % align; if (mod) pStruct->size += align - mod; if (pStructDecl->offset < 0) pStructDecl->offset = pStruct->size; pDecl->offset = pStruct->size; pStruct->size += size; } else /* T_UNION */ { pDecl->offset = 0; if (size > pStruct->size) pStruct->size = size; } } } } else /* unnamed struct/union */ { if (in_bitfield) { FINISH_BITFIELD; in_bitfield = 0; } CT_DEBUG(CTLIB, ("current declaration is an unnamed struct/union")); get_type_info_generic(pLP, &pStructDecl->type, NULL, "saf", &size, &align, &flags); CT_DEBUG(CTLIB, ("unnamed struct/union: size=%d, align=%d, flags=0x%08lX", size, align, (unsigned long) flags)); if (flags & T_HASBITFIELD) { CT_DEBUG(CTLIB, ("found bitfield in unnamed struct/union")); pStruct->tflags |= T_HASBITFIELD; } if (flags & T_UNSAFE_VAL) { CT_DEBUG(CTLIB, ("unsafe values in unnamed struct/union")); pStruct->tflags |= T_UNSAFE_VAL; } if (align > alignment) align = alignment; if (align > pStruct->align) pStruct->align = align; if (pStruct->tflags & T_STRUCT) { unsigned mod = pStruct->size % align; if (mod) pStruct->size += align - mod; if (pStructDecl->offset < 0) pStructDecl->offset = pStruct->size; pStruct->size += size; } else /* T_UNION */ { if (size > pStruct->size) pStruct->size = size; } } if (pStructDecl->offset < 0) pStructDecl->offset = pStruct->size; pStructDecl->size = pStruct->size - pStructDecl->offset; } if (in_bitfield) FINISH_BITFIELD; if (pStruct->size % pStruct->align) pStruct->size += pStruct->align - pStruct->size % pStruct->align; CT_DEBUG(CTLIB, ("layout_compound_generic( %s ): size=%d, align=%d", pStruct->identifier[0] ? pStruct->identifier : "", pStruct->size, pStruct->align)); } /******************************************************************************* * * ROUTINE: get_native_alignment * * WRITTEN BY: Marcus Holland-Moritz ON: Aug 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Determine the native struct member alignment and store it to * the global native_alignment. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define CHECK_NATIVE_ALIGNMENT(type) \ do { \ struct _align { char a; type b; }; \ unsigned off = offsetof(struct _align, b); \ if (off > align) \ align = off; \ } while (0) unsigned get_native_alignment(void) { unsigned align = 0; CHECK_NATIVE_ALIGNMENT(int); CHECK_NATIVE_ALIGNMENT(int *); CHECK_NATIVE_ALIGNMENT(long); CHECK_NATIVE_ALIGNMENT(float); CHECK_NATIVE_ALIGNMENT(double); #if ARCH_HAVE_LONG_LONG CHECK_NATIVE_ALIGNMENT(long long); #endif #if ARCH_HAVE_LONG_DOUBLE CHECK_NATIVE_ALIGNMENT(long double); #endif native_alignment = align; return align; } #undef CHECK_NATIVE_ALIGNMENT /******************************************************************************* * * ROUTINE: get_native_compound_alignment * * WRITTEN BY: Marcus Holland-Moritz ON: Aug 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Determine the native compound alignment and store it to the * global native_compound_alignment. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ unsigned get_native_compound_alignment(void) { struct _align { char a; struct { char x; } b; }; unsigned align = offsetof(struct _align, b); native_compound_alignment = align; return align; } /******************************************************************************* * * ROUTINE: get_native_enum_size * * WRITTEN BY: Marcus Holland-Moritz ON: Aug 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Determine the native enum size. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_native_enum_size(void) { enum pbyte { PB1 = 0, PB2 = 255 }; enum nbyte { NB1 = -128, NB2 = 127 }; enum pword { PW1 = 0, PW2 = 65535 }; enum nword { NW1 = -32768, NW2 = 32767 }; enum plong { PL1 = 0, PL2 = 65536 }; enum nlong { NL1 = -32768, NL2 = 32768 }; if (sizeof(enum pbyte) == 2 && sizeof(enum nbyte) == 1 && sizeof(enum pword) == 4 && sizeof(enum nword) == 2 && sizeof(enum plong) == 4 && sizeof(enum nlong) == 4) return -1; if (sizeof(enum pbyte) == 1 && sizeof(enum nbyte) == 1 && sizeof(enum pword) == 2 && sizeof(enum nword) == 2 && sizeof(enum plong) == 4 && sizeof(enum nlong) == 4) return 0; if (sizeof(enum pbyte) == sizeof(enum nbyte) && sizeof(enum pbyte) == sizeof(enum pword) && sizeof(enum pbyte) == sizeof(enum nword) && sizeof(enum pbyte) == sizeof(enum plong) && sizeof(enum pbyte) == sizeof(enum nlong)) return sizeof(enum pbyte); fatal_error("Unsupported native enum size (%d:%d:%d:%d:%d:%d)", sizeof(enum pbyte), sizeof(enum nbyte), sizeof(enum pword), sizeof(enum nword), sizeof(enum plong), sizeof(enum nlong)); return -1000; } /******************************************************************************* * * ROUTINE: get_native_unsigned_chars * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Determine if native chars are unsigned. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_native_unsigned_chars(void) { char c = -1; int i = (int) c; if (i == -1) return 0; if (i > 0) return 1; fatal_error("Strange result of cast from char to int (%d)", i); return -1000; } /******************************************************************************* * * ROUTINE: get_native_unsigned_bitfields * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Determine if native bitfields are unsigned. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_native_unsigned_bitfields(void) { struct { int a:3; } x = { -1 }; int i = (int) x.a; if (i == -1) return 0; if (i > 0) return 1; fatal_error("Strange result of cast from bitfield to int (%d)", i); return -1000; } Convert-Binary-C-0.85/ctlib/fileinfo.h0000644000175000001440000000301214677003452016250 0ustar mhxusers/******************************************************************************* * * HEADER: fileinfo.h * ******************************************************************************** * * DESCRIPTION: Retrieving information about files * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_FILEINFO_H #define _CTLIB_FILEINFO_H /*===== GLOBAL INCLUDES ======================================================*/ #include #include /*===== LOCAL INCLUDES =======================================================*/ /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { int valid; size_t size; time_t access_time; time_t modify_time; time_t change_time; char name[1]; } FileInfo; /*===== FUNCTION PROTOTYPES ==================================================*/ #define fileinfo_new CTlib_fileinfo_new FileInfo *fileinfo_new( FILE *file, char *name, size_t name_len ); #define fileinfo_delete CTlib_fileinfo_delete void fileinfo_delete( FileInfo *pFileInfo ); #define fileinfo_clone CTlib_fileinfo_clone FileInfo *fileinfo_clone( const FileInfo *pSrc ); #endif Convert-Binary-C-0.85/ctlib/parser.h0000644000175000001440000000335414677003452015762 0ustar mhxusers/******************************************************************************* * * HEADER: parser.h * ******************************************************************************** * * DESCRIPTION: C parser * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_PARSER_H #define _CTLIB_PARSER_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctparse.h" #include "cppreent.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct _parserState ParserState; typedef struct { const int token; const char *name; } CKeywordToken; struct lexer_state; /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_c_keyword_token CTlib_get_c_keyword_token const CKeywordToken *get_c_keyword_token( const char *name ); #define get_skip_token CTlib_get_skip_token const CKeywordToken *get_skip_token( void ); #define c_parser_new CTlib_c_parser_new ParserState *c_parser_new( const CParseConfig *pCPC, CParseInfo *pCPI, pUCPP_ struct lexer_state *pLexer ); #define c_parser_run CTlib_c_parser_run int c_parser_run( ParserState *pState ); #define c_parser_delete CTlib_c_parser_delete void c_parser_delete( ParserState *pState ); #endif Convert-Binary-C-0.85/ctlib/pragma.y0000644000175000001440000003073014677003452015754 0ustar mhxusers%{ /******************************************************************************* * * MODULE: pragma.y * ******************************************************************************** * * DESCRIPTION: Pragma parser * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctdebug.h" #include "cterror.h" #include "pragma.h" #include "util/ccattr.h" #include "util/memalloc.h" #include "util/list.h" #include "ucpp/cpp.h" /*===== DEFINES ==============================================================*/ /* ADDITIONAL BISON CONFIGURATION */ /* * Bison version >= 1.31 is needed for YYFPRINTF */ #if YYDEBUG && defined CTLIB_DEBUGGING #define YYFPRINTF BisonDebugFunc #endif #define pragma_error( state, msg ) \ CT_DEBUG( PRAGMA, ("pragma_error(): %s", msg) ) #define pragma_parse CTlib_pragma_parse /* MACROS */ #define PSTATE ((PragmaState *) pState) #define VALID_PACK( value ) \ ( (value) == 0 \ || (value) == 1 \ || (value) == 2 \ || (value) == 4 \ || (value) == 8 \ ) /*===== TYPEDEFS =============================================================*/ struct _pragmaState { CParseInfo *pCPI; const char *file; long int line; const char *code; struct { LinkedList stack; unsigned current; } pack; }; typedef struct { unsigned size; } PackElement; /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /* TOKEN MAPPING TABLE */ static const int tokentab[] = { 0, /* NONE, */ /* whitespace */ 0, /* NEWLINE, */ /* newline */ 0, /* COMMENT, */ /* comment */ 0, /* NUMBER, */ /* number constant */ 0, /* NAME, */ /* identifier */ 0, /* BUNCH, */ /* non-C characters */ 0, /* PRAGMA, */ /* a #pragma directive */ 0, /* CONTEXT, */ /* new file or #line */ 0, /* STRING, */ /* constant "xxx" */ 0, /* CHAR, */ /* constant 'xxx' */ '/', /* SLASH, */ /* / */ 0, /* ASSLASH, */ /* /= */ '-', /* MINUS, */ /* - */ 0, /* MMINUS, */ /* -- */ 0, /* ASMINUS, */ /* -= */ 0, /* ARROW, */ /* -> */ '+', /* PLUS, */ /* + */ 0, /* PPLUS, */ /* ++ */ 0, /* ASPLUS, */ /* += */ '<', /* LT, */ /* < */ 0, /* LEQ, */ /* <= */ 0, /* LSH, */ /* << */ 0, /* ASLSH, */ /* <<= */ '>', /* GT, */ /* > */ 0, /* GEQ, */ /* >= */ 0, /* RSH, */ /* >> */ 0, /* ASRSH, */ /* >>= */ '=', /* ASGN, */ /* = */ 0, /* SAME, */ /* == */ #ifdef CAST_OP 0, /* CAST, */ /* => */ #endif '~', /* NOT, */ /* ~ */ 0, /* NEQ, */ /* != */ '&', /* AND, */ /* & */ 0, /* LAND, */ /* && */ 0, /* ASAND, */ /* &= */ '|', /* OR, */ /* | */ 0, /* LOR, */ /* || */ 0, /* ASOR, */ /* |= */ '%', /* PCT, */ /* % */ 0, /* ASPCT, */ /* %= */ '*', /* STAR, */ /* * */ 0, /* ASSTAR, */ /* *= */ '^', /* CIRC, */ /* ^ */ 0, /* ASCIRC, */ /* ^= */ '!', /* LNOT, */ /* ! */ '{', /* LBRA, */ /* { */ '}', /* RBRA, */ /* } */ '[', /* LBRK, */ /* [ */ ']', /* RBRK, */ /* ] */ '(', /* LPAR, */ /* ( */ ')', /* RPAR, */ /* ) */ ',', /* COMMA, */ /* , */ '?', /* QUEST, */ /* ? */ ';', /* SEMIC, */ /* ; */ ':', /* COLON, */ /* : */ '.', /* DOT, */ /* . */ 0, /* MDOTS, */ /* ... */ 0, /* SHARP, */ /* # */ 0, /* DSHARP, */ /* ## */ 0, /* OPT_NONE, */ /* optional space to separate tokens in text output */ 0, /* DIGRAPH_TOKENS, */ /* there begin digraph tokens */ /* for DIG_*, do not change order, unless checking undig() in cpp.c */ '[', /* DIG_LBRK, */ /* <: */ ']', /* DIG_RBRK, */ /* :> */ '{', /* DIG_LBRA, */ /* <% */ '}', /* DIG_RBRA, */ /* %> */ 0, /* DIG_SHARP, */ /* %: */ 0, /* DIG_DSHARP, */ /* %:%: */ 0, /* DIGRAPH_TOKENS_END, */ /* digraph tokens end here */ 0, /* LAST_MEANINGFUL_TOKEN, */ /* reserved words will go there */ 0, /* MACROARG, */ /* special token for representing macro arguments */ 0, /* UPLUS = CPPERR, */ /* unary + */ 0, /* UMINUS */ /* unary - */ }; %} /*===== YACC PARSER DEFINITION ================================================*/ %union { int ival; } %{ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static int is_valid_pack_arg(PragmaState *pState, int arg); static inline int pragma_lex(YYSTYPE *plval, PragmaState *pState); static PackElement *packelem_new(unsigned size); static void packelem_delete(PackElement *pPack); %} %token CONSTANT %token PACK_TOK %token PUSH_TOK POP_TOK %parse-param { PragmaState *pState } %lex-param { PragmaState *pState } %define api.pure %define parse.error verbose %start pragma %% pragma : pragma_pack ; pragma_pack : PACK_TOK { PSTATE->pack.current = 0; } | PACK_TOK '(' ')' { PSTATE->pack.current = 0; } | PACK_TOK '(' pragma_pack_args ')' ; pragma_pack_args : CONSTANT { if (is_valid_pack_arg(PSTATE, $1)) { PSTATE->pack.current = $1; } } | PUSH_TOK ',' CONSTANT { if (is_valid_pack_arg(PSTATE, $3)) { LL_push(PSTATE->pack.stack, packelem_new(PSTATE->pack.current)); PSTATE->pack.current = $3; } } | POP_TOK { PackElement *pPack = LL_pop(PSTATE->pack.stack); if (pPack) { PSTATE->pack.current = pPack->size; packelem_delete(pPack); } else PSTATE->pack.current = 0; } ; %% /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: is_valid_pack_arg * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int is_valid_pack_arg(PragmaState *pState, int arg) { if (VALID_PACK(arg)) return 1; push_error(pState->pCPI, "%s, line %ld: invalid argument %d to #pragma pack", pState->file, pState->line, arg); return 0; } /******************************************************************************* * * ROUTINE: packelem_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static PackElement *packelem_new(unsigned size) { PackElement *pPack; AllocF(PackElement *, pPack, sizeof(PackElement)); pPack->size = size; return pPack; } /******************************************************************************* * * ROUTINE: packelem_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void packelem_delete(PackElement *pPack) { if (pPack) Free(pPack); } /******************************************************************************* * * ROUTINE: pragma_lex * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pragma lexer. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int pragma_lex(YYSTYPE *plval, PragmaState *pState) { int token, rval; CT_DEBUG( PRAGMA, ("pragma_lex()")); while ((token = (int) *pState->code++) != 0) { switch (token) { case NUMBER: { const char *num = pState->code; pState->code = strchr(num, PRAGMA_TOKEN_END) + 1; plval->ival = strtol(num, NULL, 0); CT_DEBUG(PRAGMA, ("pragma - constant: %d", plval->ival)); return CONSTANT; } case NAME: { const char *tokstr = pState->code; int toklen, tokval; #include "token/t_pragma.c" success: pState->code += toklen + 1; return tokval; unknown: break; } default: if ((rval = tokentab[token]) != 0) return rval; break; } } return 0; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: pragma_parser_parse * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int pragma_parser_parse(PragmaState *pPragma) { return pragma_parse(pPragma); } /******************************************************************************* * * ROUTINE: pragma_parser_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ PragmaState *pragma_parser_new(CParseInfo *pCPI) { PragmaState *pState; CT_DEBUG(PRAGMA, ("pragma_parser_new")); AllocF(PragmaState *, pState, sizeof(PragmaState)); pState->pCPI = pCPI; pState->file = 0; pState->line = 0; pState->code = 0; pState->pack.stack = LL_new(); pState->pack.current = 0; return pState; } /******************************************************************************* * * ROUTINE: pragma_parser_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pragma_parser_delete(PragmaState *pPragma) { if (pPragma) { CT_DEBUG(PRAGMA, ("pragma_parser_delete")); LL_destroy(pPragma->pack.stack, (LLDestroyFunc) packelem_delete); Free(pPragma); } } /******************************************************************************* * * ROUTINE: pragma_parser_set_context * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pragma_parser_set_context(PragmaState *pPragma, const char *file, long int line, const char *code) { pPragma->file = file; pPragma->line = line; pPragma->code = code; } /******************************************************************************* * * ROUTINE: pragma_parser_get_pack * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ unsigned pragma_parser_get_pack(PragmaState *pPragma) { return pPragma->pack.current; } Convert-Binary-C-0.85/ctlib/fileinfo.c0000644000175000001440000001023714677003452016252 0ustar mhxusers/******************************************************************************* * * MODULE: fileinfo.c * ******************************************************************************** * * DESCRIPTION: Retrieving information about files * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "fileinfo.h" #include "util/memalloc.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: fileinfo_new * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: FileInfo object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ FileInfo *fileinfo_new( FILE *file, char *name, size_t name_len ) { FileInfo *pFileInfo; struct stat buf; if( name != NULL && name_len == 0 ) name_len = strlen( name ); AllocF( FileInfo *, pFileInfo, offsetof( FileInfo, name ) + name_len + 1 ); if( name != NULL ) { strncpy( pFileInfo->name, name, name_len ); pFileInfo->name[name_len] = '\0'; } else pFileInfo->name[0] = '\0'; if( file != NULL && fstat( fileno( file ), &buf ) == 0 ) { pFileInfo->valid = 1; pFileInfo->size = buf.st_size; pFileInfo->access_time = buf.st_atime; pFileInfo->modify_time = buf.st_mtime; pFileInfo->change_time = buf.st_ctime; } else { pFileInfo->valid = 0; pFileInfo->size = 0; pFileInfo->access_time = 0; pFileInfo->modify_time = 0; pFileInfo->change_time = 0; } return pFileInfo; } /******************************************************************************* * * ROUTINE: fileinfo_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: FileInfo object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void fileinfo_delete( FileInfo *pFileInfo ) { if( pFileInfo ) Free( pFileInfo ); } /******************************************************************************* * * ROUTINE: fileinfo_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone FileInfo object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ FileInfo *fileinfo_clone( const FileInfo *pSrc ) { FileInfo *pDest; size_t size; if( pSrc == NULL ) return NULL; size = offsetof( FileInfo, name ) + 1; if( pSrc->name[0] != '\0' ) size += strlen( pSrc->name ); AllocF( FileInfo *, pDest, size ); memcpy( pDest, pSrc, size ); return pDest; } Convert-Binary-C-0.85/ctlib/y_parser.c0000644000175000001440000071070014677003505016304 0ustar mhxusers/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, especially those whose name start with YY_ or yy_. They are private implementation details that can be changed or removed. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ #define YYBISON 30802 /* Bison version string. */ #define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Substitute the variable and function names. */ #define yyparse c_parse #define yylex c_lex #define yyerror c_error #define yydebug c_debug #define yynerrs c_nerrs /* First part of user prologue. */ #line 1 "ctlib/parser.y" /******************************************************************************* * * MODULE: parser.y * ******************************************************************************** * * DESCRIPTION: C parser * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * * Portions Copyright (c) 1989, 1990 James A. Roskind. * Also see the original copyright notice below. * *******************************************************************************/ /* Copyright (C) 1989,1990 James A. Roskind, All rights reserved. This grammar was developed and written by James A. Roskind. Copying of this grammar description, as a whole, is permitted providing this notice is intact and applicable in all complete copies. Translations as a whole to other parser generator input languages (or grammar description languages) is permitted provided that this notice is intact and applicable in all such copies, along with a disclaimer that the contents are a translation. The reproduction of derived text, such as modified versions of this grammar, or the output of parser generators, is permitted, provided the resulting work includes the copyright notice "Portions Copyright (c) 1989, 1990 James A. Roskind". Derived products, such as compilers, translators, browsers, etc., that use this grammar, must also provide the notice "Portions Copyright (c) 1989, 1990 James A. Roskind" in a manner appropriate to the utility, and in keeping with copyright law (e.g.: EITHER displayed when first invoked/executed; OR displayed continuously on display terminal; OR via placement in the object code in form readable in a printout, with or near the title of the work, or at the end of the file). No royalties, licenses or commissions of any kind are required to copy this grammar, its translations, or derivative products, when the copies are made in compliance with this notice. Persons or corporations that do make copies in compliance with this notice may charge whatever price is agreeable to a buyer, for such copies or derivative works. THIS GRAMMAR IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. James A. Roskind Independent Consultant 516 Latania Palm Drive Indialantic FL, 32903 (407)729-4348 jar@ileaf.com ACKNOWLEDGMENT: Without the effort expended by the ANSI C standardizing committee, I would have been lost. Although the ANSI C standard does not include a fully disambiguated syntax description, the committee has at least provided most of the disambiguating rules in narratives. Several reviewers have also recently critiqued this grammar, and/or assisted in discussions during it's preparation. These reviewers are certainly not responsible for the errors I have committed here, but they are responsible for allowing me to provide fewer errors. These colleagues include: Bruce Blodgett, and Mark Langley. */ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctdebug.h" #include "ctparse.h" #include "cterror.h" #include "fileinfo.h" #include "parser.h" #include "pragma.h" #include "util/ccattr.h" #include "util/list.h" #include "util/memalloc.h" #include "ucpp/cpp.h" #include "cppreent.h" /*===== DEFINES ==============================================================*/ /* ADDITIONAL BISON CONFIGURATION */ #define YYMAXDEPTH 10000 /* * Bison version >= 1.31 is needed for YYFPRINTF */ #if YYDEBUG && defined CTLIB_DEBUGGING #define YYFPRINTF BisonDebugFunc #endif #define c_error parser_error #define c_parse CTlib_c_parse /* MACROS */ #define PSTATE ((ParserState *) pState) #define DELETE_NODE(node) \ do { \ if (node != NULL) \ HN_delete(node); \ } while (0) #define POSTFIX_DECL(decl, postfix) \ do { \ if (postfix) \ { \ if (decl->pointer_flag) \ LL_destroy(postfix, (LLDestroyFunc) value_delete); \ else \ { \ if (decl->array_flag) \ LL_delete(LL_splice(decl->ext.array, 0, 0, postfix)); \ else \ { \ decl->array_flag = 1; \ decl->ext.array = postfix; \ } \ } \ } \ } while (0) #define MAKE_TYPEDEF(list, decl) \ do { \ Typedef *pTypedef = typedef_new(&(list->type), decl); \ CT_DEBUG(PARSER, ("making new typedef => %s (list @ %p)", \ decl->identifier, list)); \ LL_push(list->typedefs, pTypedef); \ HT_store(PSTATE->pCPI->htTypedefs, decl->identifier, 0, 0, pTypedef);\ } while (0) #define UNDEF_VAL(x) do { x.iv = 0; x.flags = V_IS_UNDEF; } while (0) #define UNARY_OP(result, op, val) \ do { result.iv = op val.iv; result.flags = val.flags; } while (0) #define BINARY_OP(result, val1, op, val2) \ do { \ result.iv = val1.iv op val2.iv; \ result.flags = val1.flags | val2.flags; \ } while (0) #define LLC_OR(t1, t2) \ ( \ ((t1) & T_LONG) && ((t2) & T_LONG) \ ? (t1) | (t2) | T_LONGLONG : (t1) | (t2) \ ) #define F_LOCAL 0x00000001U #define BEGIN_LOCAL (PSTATE->flags |= F_LOCAL) #define END_LOCAL (PSTATE->flags &= ~F_LOCAL) #define IS_LOCAL (PSTATE->flags & F_LOCAL) /*===== TYPEDEFS =============================================================*/ struct _parserState { const CParseConfig *pCPC; CParseInfo *pCPI; PragmaState *pragma; struct CPP *pp; struct lexer_state *pLexer; FileInfo *pFI; u_32 flags; }; #line 273 "ctlib/y_parser.c" # ifndef YY_CAST # ifdef __cplusplus # define YY_CAST(Type, Val) static_cast (Val) # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) # else # define YY_CAST(Type, Val) ((Type) (Val)) # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) # endif # endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # else # define YY_NULLPTR ((void*)0) # endif # endif /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int c_debug; #endif /* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { YYEMPTY = -2, YYEOF = 0, /* "end of file" */ YYerror = 256, /* error */ YYUNDEF = 257, /* "invalid token" */ AUTO_TOK = 258, /* AUTO_TOK */ DOUBLE_TOK = 259, /* DOUBLE_TOK */ INT_TOK = 260, /* INT_TOK */ STRUCT_TOK = 261, /* STRUCT_TOK */ BREAK_TOK = 262, /* BREAK_TOK */ ELSE_TOK = 263, /* ELSE_TOK */ LONG_TOK = 264, /* LONG_TOK */ SWITCH_TOK = 265, /* SWITCH_TOK */ CASE_TOK = 266, /* CASE_TOK */ ENUM_TOK = 267, /* ENUM_TOK */ REGISTER_TOK = 268, /* REGISTER_TOK */ TYPEDEF_TOK = 269, /* TYPEDEF_TOK */ CHAR_TOK = 270, /* CHAR_TOK */ EXTERN_TOK = 271, /* EXTERN_TOK */ RETURN_TOK = 272, /* RETURN_TOK */ UNION_TOK = 273, /* UNION_TOK */ CONST_TOK = 274, /* CONST_TOK */ FLOAT_TOK = 275, /* FLOAT_TOK */ SHORT_TOK = 276, /* SHORT_TOK */ UNSIGNED_TOK = 277, /* UNSIGNED_TOK */ CONTINUE_TOK = 278, /* CONTINUE_TOK */ FOR_TOK = 279, /* FOR_TOK */ SIGNED_TOK = 280, /* SIGNED_TOK */ VOID_TOK = 281, /* VOID_TOK */ DEFAULT_TOK = 282, /* DEFAULT_TOK */ GOTO_TOK = 283, /* GOTO_TOK */ SIZEOF_TOK = 284, /* SIZEOF_TOK */ VOLATILE_TOK = 285, /* VOLATILE_TOK */ DO_TOK = 286, /* DO_TOK */ IF_TOK = 287, /* IF_TOK */ STATIC_TOK = 288, /* STATIC_TOK */ WHILE_TOK = 289, /* WHILE_TOK */ INLINE_TOK = 290, /* INLINE_TOK */ RESTRICT_TOK = 291, /* RESTRICT_TOK */ ASM_TOK = 292, /* ASM_TOK */ SKIP_TOK = 293, /* SKIP_TOK */ PTR_OP = 294, /* PTR_OP */ INC_OP = 295, /* INC_OP */ DEC_OP = 296, /* DEC_OP */ LEFT_OP = 297, /* LEFT_OP */ RIGHT_OP = 298, /* RIGHT_OP */ LE_OP = 299, /* LE_OP */ GE_OP = 300, /* GE_OP */ EQ_OP = 301, /* EQ_OP */ NE_OP = 302, /* NE_OP */ AND_OP = 303, /* AND_OP */ OR_OP = 304, /* OR_OP */ ELLIPSIS = 305, /* ELLIPSIS */ MUL_ASSIGN = 306, /* MUL_ASSIGN */ DIV_ASSIGN = 307, /* DIV_ASSIGN */ MOD_ASSIGN = 308, /* MOD_ASSIGN */ ADD_ASSIGN = 309, /* ADD_ASSIGN */ SUB_ASSIGN = 310, /* SUB_ASSIGN */ LEFT_ASSIGN = 311, /* LEFT_ASSIGN */ RIGHT_ASSIGN = 312, /* RIGHT_ASSIGN */ AND_ASSIGN = 313, /* AND_ASSIGN */ XOR_ASSIGN = 314, /* XOR_ASSIGN */ OR_ASSIGN = 315, /* OR_ASSIGN */ STRING_LITERAL = 316, /* STRING_LITERAL */ CONSTANT = 317, /* CONSTANT */ TYPE_NAME = 318, /* TYPE_NAME */ IDENTIFIER = 319 /* IDENTIFIER */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { #line 242 "ctlib/parser.y" HashNode identifier; Declarator *pDecl; AbstractDeclarator absDecl; StructDeclaration *pStructDecl; TypedefList *pTypedefList; LinkedList list; Enumerator *pEnum; Typedef *pTypedef; TypeSpec tspec; Value value; struct { u_32 uval; ContextInfo ctx; } context; u_32 uval; char oper; #line 403 "ctlib/y_parser.c" }; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif int c_parse (ParserState *pState); /* Symbol kind. */ enum yysymbol_kind_t { YYSYMBOL_YYEMPTY = -2, YYSYMBOL_YYEOF = 0, /* "end of file" */ YYSYMBOL_YYerror = 1, /* error */ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ YYSYMBOL_AUTO_TOK = 3, /* AUTO_TOK */ YYSYMBOL_DOUBLE_TOK = 4, /* DOUBLE_TOK */ YYSYMBOL_INT_TOK = 5, /* INT_TOK */ YYSYMBOL_STRUCT_TOK = 6, /* STRUCT_TOK */ YYSYMBOL_BREAK_TOK = 7, /* BREAK_TOK */ YYSYMBOL_ELSE_TOK = 8, /* ELSE_TOK */ YYSYMBOL_LONG_TOK = 9, /* LONG_TOK */ YYSYMBOL_SWITCH_TOK = 10, /* SWITCH_TOK */ YYSYMBOL_CASE_TOK = 11, /* CASE_TOK */ YYSYMBOL_ENUM_TOK = 12, /* ENUM_TOK */ YYSYMBOL_REGISTER_TOK = 13, /* REGISTER_TOK */ YYSYMBOL_TYPEDEF_TOK = 14, /* TYPEDEF_TOK */ YYSYMBOL_CHAR_TOK = 15, /* CHAR_TOK */ YYSYMBOL_EXTERN_TOK = 16, /* EXTERN_TOK */ YYSYMBOL_RETURN_TOK = 17, /* RETURN_TOK */ YYSYMBOL_UNION_TOK = 18, /* UNION_TOK */ YYSYMBOL_CONST_TOK = 19, /* CONST_TOK */ YYSYMBOL_FLOAT_TOK = 20, /* FLOAT_TOK */ YYSYMBOL_SHORT_TOK = 21, /* SHORT_TOK */ YYSYMBOL_UNSIGNED_TOK = 22, /* UNSIGNED_TOK */ YYSYMBOL_CONTINUE_TOK = 23, /* CONTINUE_TOK */ YYSYMBOL_FOR_TOK = 24, /* FOR_TOK */ YYSYMBOL_SIGNED_TOK = 25, /* SIGNED_TOK */ YYSYMBOL_VOID_TOK = 26, /* VOID_TOK */ YYSYMBOL_DEFAULT_TOK = 27, /* DEFAULT_TOK */ YYSYMBOL_GOTO_TOK = 28, /* GOTO_TOK */ YYSYMBOL_SIZEOF_TOK = 29, /* SIZEOF_TOK */ YYSYMBOL_VOLATILE_TOK = 30, /* VOLATILE_TOK */ YYSYMBOL_DO_TOK = 31, /* DO_TOK */ YYSYMBOL_IF_TOK = 32, /* IF_TOK */ YYSYMBOL_STATIC_TOK = 33, /* STATIC_TOK */ YYSYMBOL_WHILE_TOK = 34, /* WHILE_TOK */ YYSYMBOL_INLINE_TOK = 35, /* INLINE_TOK */ YYSYMBOL_RESTRICT_TOK = 36, /* RESTRICT_TOK */ YYSYMBOL_ASM_TOK = 37, /* ASM_TOK */ YYSYMBOL_SKIP_TOK = 38, /* SKIP_TOK */ YYSYMBOL_PTR_OP = 39, /* PTR_OP */ YYSYMBOL_INC_OP = 40, /* INC_OP */ YYSYMBOL_DEC_OP = 41, /* DEC_OP */ YYSYMBOL_LEFT_OP = 42, /* LEFT_OP */ YYSYMBOL_RIGHT_OP = 43, /* RIGHT_OP */ YYSYMBOL_LE_OP = 44, /* LE_OP */ YYSYMBOL_GE_OP = 45, /* GE_OP */ YYSYMBOL_EQ_OP = 46, /* EQ_OP */ YYSYMBOL_NE_OP = 47, /* NE_OP */ YYSYMBOL_AND_OP = 48, /* AND_OP */ YYSYMBOL_OR_OP = 49, /* OR_OP */ YYSYMBOL_ELLIPSIS = 50, /* ELLIPSIS */ YYSYMBOL_MUL_ASSIGN = 51, /* MUL_ASSIGN */ YYSYMBOL_DIV_ASSIGN = 52, /* DIV_ASSIGN */ YYSYMBOL_MOD_ASSIGN = 53, /* MOD_ASSIGN */ YYSYMBOL_ADD_ASSIGN = 54, /* ADD_ASSIGN */ YYSYMBOL_SUB_ASSIGN = 55, /* SUB_ASSIGN */ YYSYMBOL_LEFT_ASSIGN = 56, /* LEFT_ASSIGN */ YYSYMBOL_RIGHT_ASSIGN = 57, /* RIGHT_ASSIGN */ YYSYMBOL_AND_ASSIGN = 58, /* AND_ASSIGN */ YYSYMBOL_XOR_ASSIGN = 59, /* XOR_ASSIGN */ YYSYMBOL_OR_ASSIGN = 60, /* OR_ASSIGN */ YYSYMBOL_STRING_LITERAL = 61, /* STRING_LITERAL */ YYSYMBOL_CONSTANT = 62, /* CONSTANT */ YYSYMBOL_TYPE_NAME = 63, /* TYPE_NAME */ YYSYMBOL_IDENTIFIER = 64, /* IDENTIFIER */ YYSYMBOL_65_ = 65, /* '(' */ YYSYMBOL_66_ = 66, /* ')' */ YYSYMBOL_67_ = 67, /* ';' */ YYSYMBOL_68_ = 68, /* ':' */ YYSYMBOL_69_ = 69, /* ',' */ YYSYMBOL_70_ = 70, /* '[' */ YYSYMBOL_71_ = 71, /* ']' */ YYSYMBOL_72_ = 72, /* '.' */ YYSYMBOL_73_ = 73, /* '{' */ YYSYMBOL_74_ = 74, /* '}' */ YYSYMBOL_75_ = 75, /* '&' */ YYSYMBOL_76_ = 76, /* '*' */ YYSYMBOL_77_ = 77, /* '+' */ YYSYMBOL_78_ = 78, /* '-' */ YYSYMBOL_79_ = 79, /* '~' */ YYSYMBOL_80_ = 80, /* '!' */ YYSYMBOL_81_ = 81, /* '/' */ YYSYMBOL_82_ = 82, /* '%' */ YYSYMBOL_83_ = 83, /* '<' */ YYSYMBOL_84_ = 84, /* '>' */ YYSYMBOL_85_ = 85, /* '^' */ YYSYMBOL_86_ = 86, /* '|' */ YYSYMBOL_87_ = 87, /* '?' */ YYSYMBOL_88_ = 88, /* '=' */ YYSYMBOL_YYACCEPT = 89, /* $accept */ YYSYMBOL_string_literal_list = 90, /* string_literal_list */ YYSYMBOL_asm_string = 91, /* asm_string */ YYSYMBOL_asm_string_opt = 92, /* asm_string_opt */ YYSYMBOL_asm_expr = 93, /* asm_expr */ YYSYMBOL_asm_statement = 94, /* asm_statement */ YYSYMBOL_asm_operands_opt = 95, /* asm_operands_opt */ YYSYMBOL_asm_operands = 96, /* asm_operands */ YYSYMBOL_asm_operand = 97, /* asm_operand */ YYSYMBOL_asm_clobbers = 98, /* asm_clobbers */ YYSYMBOL_primary_expression = 99, /* primary_expression */ YYSYMBOL_postfix_expression = 100, /* postfix_expression */ YYSYMBOL_101_1 = 101, /* $@1 */ YYSYMBOL_102_2 = 102, /* $@2 */ YYSYMBOL_member_name = 103, /* member_name */ YYSYMBOL_argument_expression_list = 104, /* argument_expression_list */ YYSYMBOL_unary_expression = 105, /* unary_expression */ YYSYMBOL_unary_operator = 106, /* unary_operator */ YYSYMBOL_cast_expression = 107, /* cast_expression */ YYSYMBOL_multiplicative_expression = 108, /* multiplicative_expression */ YYSYMBOL_additive_expression = 109, /* additive_expression */ YYSYMBOL_shift_expression = 110, /* shift_expression */ YYSYMBOL_relational_expression = 111, /* relational_expression */ YYSYMBOL_equality_expression = 112, /* equality_expression */ YYSYMBOL_AND_expression = 113, /* AND_expression */ YYSYMBOL_exclusive_OR_expression = 114, /* exclusive_OR_expression */ YYSYMBOL_inclusive_OR_expression = 115, /* inclusive_OR_expression */ YYSYMBOL_logical_AND_expression = 116, /* logical_AND_expression */ YYSYMBOL_logical_OR_expression = 117, /* logical_OR_expression */ YYSYMBOL_conditional_expression = 118, /* conditional_expression */ YYSYMBOL_assignment_expression = 119, /* assignment_expression */ YYSYMBOL_assignment_operator = 120, /* assignment_operator */ YYSYMBOL_assignment_expression_opt = 121, /* assignment_expression_opt */ YYSYMBOL_comma_expression = 122, /* comma_expression */ YYSYMBOL_constant_expression = 123, /* constant_expression */ YYSYMBOL_comma_expression_opt = 124, /* comma_expression_opt */ YYSYMBOL_declaration = 125, /* declaration */ YYSYMBOL_default_declaring_list = 126, /* default_declaring_list */ YYSYMBOL_declaring_list = 127, /* declaring_list */ YYSYMBOL_declaration_specifier = 128, /* declaration_specifier */ YYSYMBOL_type_specifier = 129, /* type_specifier */ YYSYMBOL_declaration_qualifier_list = 130, /* declaration_qualifier_list */ YYSYMBOL_type_qualifier_list = 131, /* type_qualifier_list */ YYSYMBOL_type_qualifier_list_opt = 132, /* type_qualifier_list_opt */ YYSYMBOL_declaration_qualifier = 133, /* declaration_qualifier */ YYSYMBOL_type_qualifier = 134, /* type_qualifier */ YYSYMBOL_basic_declaration_specifier = 135, /* basic_declaration_specifier */ YYSYMBOL_basic_type_specifier = 136, /* basic_type_specifier */ YYSYMBOL_sue_declaration_specifier = 137, /* sue_declaration_specifier */ YYSYMBOL_sue_type_specifier = 138, /* sue_type_specifier */ YYSYMBOL_enum_type_specifier = 139, /* enum_type_specifier */ YYSYMBOL_su_type_specifier = 140, /* su_type_specifier */ YYSYMBOL_sut_type_specifier = 141, /* sut_type_specifier */ YYSYMBOL_typedef_declaration_specifier = 142, /* typedef_declaration_specifier */ YYSYMBOL_typedef_type_specifier = 143, /* typedef_type_specifier */ YYSYMBOL_storage_class = 144, /* storage_class */ YYSYMBOL_basic_type_name = 145, /* basic_type_name */ YYSYMBOL_elaborated_type_name = 146, /* elaborated_type_name */ YYSYMBOL_aggregate_name = 147, /* aggregate_name */ YYSYMBOL_aggregate_key_context = 148, /* aggregate_key_context */ YYSYMBOL_aggregate_key = 149, /* aggregate_key */ YYSYMBOL_member_declaration_list_opt = 150, /* member_declaration_list_opt */ YYSYMBOL_member_declaration_list = 151, /* member_declaration_list */ YYSYMBOL_member_declaration = 152, /* member_declaration */ YYSYMBOL_unnamed_su_declaration = 153, /* unnamed_su_declaration */ YYSYMBOL_member_declaring_list = 154, /* member_declaring_list */ YYSYMBOL_member_declarator = 155, /* member_declarator */ YYSYMBOL_bit_field_size_opt = 156, /* bit_field_size_opt */ YYSYMBOL_bit_field_size = 157, /* bit_field_size */ YYSYMBOL_enum_name = 158, /* enum_name */ YYSYMBOL_enum_key_context = 159, /* enum_key_context */ YYSYMBOL_enumerator_list = 160, /* enumerator_list */ YYSYMBOL_enumerator = 161, /* enumerator */ YYSYMBOL_parameter_type_list = 162, /* parameter_type_list */ YYSYMBOL_parameter_list = 163, /* parameter_list */ YYSYMBOL_parameter_declaration = 164, /* parameter_declaration */ YYSYMBOL_identifier_list = 165, /* identifier_list */ YYSYMBOL_identifier_or_typedef_name = 166, /* identifier_or_typedef_name */ YYSYMBOL_type_name = 167, /* type_name */ YYSYMBOL_initializer_opt = 168, /* initializer_opt */ YYSYMBOL_initializer = 169, /* initializer */ YYSYMBOL_initializer_list = 170, /* initializer_list */ YYSYMBOL_designation_opt = 171, /* designation_opt */ YYSYMBOL_designator_list = 172, /* designator_list */ YYSYMBOL_designator = 173, /* designator */ YYSYMBOL_comma_opt = 174, /* comma_opt */ YYSYMBOL_statement = 175, /* statement */ YYSYMBOL_labeled_statement = 176, /* labeled_statement */ YYSYMBOL_compound_statement = 177, /* compound_statement */ YYSYMBOL_declaration_list = 178, /* declaration_list */ YYSYMBOL_statement_list = 179, /* statement_list */ YYSYMBOL_expression_statement = 180, /* expression_statement */ YYSYMBOL_selection_statement = 181, /* selection_statement */ YYSYMBOL_iteration_statement = 182, /* iteration_statement */ YYSYMBOL_jump_statement = 183, /* jump_statement */ YYSYMBOL_source_file = 184, /* source_file */ YYSYMBOL_translation_unit = 185, /* translation_unit */ YYSYMBOL_external_definition = 186, /* external_definition */ YYSYMBOL_function_definition = 187, /* function_definition */ YYSYMBOL_188_3 = 188, /* $@3 */ YYSYMBOL_189_4 = 189, /* $@4 */ YYSYMBOL_190_5 = 190, /* $@5 */ YYSYMBOL_191_6 = 191, /* $@6 */ YYSYMBOL_192_7 = 192, /* $@7 */ YYSYMBOL_193_8 = 193, /* $@8 */ YYSYMBOL_194_9 = 194, /* $@9 */ YYSYMBOL_195_10 = 195, /* $@10 */ YYSYMBOL_196_11 = 196, /* $@11 */ YYSYMBOL_197_12 = 197, /* $@12 */ YYSYMBOL_198_13 = 198, /* $@13 */ YYSYMBOL_199_14 = 199, /* $@14 */ YYSYMBOL_200_15 = 200, /* $@15 */ YYSYMBOL_201_16 = 201, /* $@16 */ YYSYMBOL_202_17 = 202, /* $@17 */ YYSYMBOL_declarator = 203, /* declarator */ YYSYMBOL_typedef_declarator = 204, /* typedef_declarator */ YYSYMBOL_parameter_typedef_declarator = 205, /* parameter_typedef_declarator */ YYSYMBOL_clean_typedef_declarator = 206, /* clean_typedef_declarator */ YYSYMBOL_clean_postfix_typedef_declarator = 207, /* clean_postfix_typedef_declarator */ YYSYMBOL_paren_typedef_declarator = 208, /* paren_typedef_declarator */ YYSYMBOL_paren_postfix_typedef_declarator = 209, /* paren_postfix_typedef_declarator */ YYSYMBOL_simple_paren_typedef_declarator = 210, /* simple_paren_typedef_declarator */ YYSYMBOL_identifier_declarator = 211, /* identifier_declarator */ YYSYMBOL_unary_identifier_declarator = 212, /* unary_identifier_declarator */ YYSYMBOL_postfix_identifier_declarator = 213, /* postfix_identifier_declarator */ YYSYMBOL_paren_identifier_declarator = 214, /* paren_identifier_declarator */ YYSYMBOL_old_function_declarator = 215, /* old_function_declarator */ YYSYMBOL_postfix_old_function_declarator = 216, /* postfix_old_function_declarator */ YYSYMBOL_abstract_declarator = 217, /* abstract_declarator */ YYSYMBOL_postfixing_abstract_declarator = 218, /* postfixing_abstract_declarator */ YYSYMBOL_array_abstract_declarator = 219, /* array_abstract_declarator */ YYSYMBOL_unary_abstract_declarator = 220, /* unary_abstract_declarator */ YYSYMBOL_postfix_abstract_declarator = 221 /* postfix_abstract_declarator */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; /* Second part of user prologue. */ #line 261 "ctlib/parser.y" /*===== STATIC VARIABLES =====================================================*/ /* TOKEN MAPPING TABLE */ static const int tokentab[] = { 0, /* NONE, */ /* whitespace */ 0, /* NEWLINE, */ /* newline */ 0, /* COMMENT, */ /* comment */ 0, /* NUMBER, */ /* number constant */ 0, /* NAME, */ /* identifier */ 0, /* BUNCH, */ /* non-C characters */ 0, /* PRAGMA, */ /* a #pragma directive */ 0, /* CONTEXT, */ /* new file or #line */ 0, /* STRING, */ /* constant "xxx" */ CONSTANT, /* CHAR, */ /* constant 'xxx' */ '/', /* SLASH, */ /* / */ DIV_ASSIGN, /* ASSLASH, */ /* /= */ '-', /* MINUS, */ /* - */ DEC_OP, /* MMINUS, */ /* -- */ SUB_ASSIGN, /* ASMINUS, */ /* -= */ PTR_OP, /* ARROW, */ /* -> */ '+', /* PLUS, */ /* + */ INC_OP, /* PPLUS, */ /* ++ */ ADD_ASSIGN, /* ASPLUS, */ /* += */ '<', /* LT, */ /* < */ LE_OP, /* LEQ, */ /* <= */ LEFT_OP, /* LSH, */ /* << */ LEFT_ASSIGN, /* ASLSH, */ /* <<= */ '>', /* GT, */ /* > */ GE_OP, /* GEQ, */ /* >= */ RIGHT_OP, /* RSH, */ /* >> */ RIGHT_ASSIGN, /* ASRSH, */ /* >>= */ '=', /* ASGN, */ /* = */ EQ_OP, /* SAME, */ /* == */ #ifdef CAST_OP 0, /* CAST, */ /* => */ #endif '~', /* NOT, */ /* ~ */ NE_OP, /* NEQ, */ /* != */ '&', /* AND, */ /* & */ AND_OP, /* LAND, */ /* && */ AND_ASSIGN, /* ASAND, */ /* &= */ '|', /* OR, */ /* | */ OR_OP, /* LOR, */ /* || */ OR_ASSIGN, /* ASOR, */ /* |= */ '%', /* PCT, */ /* % */ MOD_ASSIGN, /* ASPCT, */ /* %= */ '*', /* STAR, */ /* * */ MUL_ASSIGN, /* ASSTAR, */ /* *= */ '^', /* CIRC, */ /* ^ */ XOR_ASSIGN, /* ASCIRC, */ /* ^= */ '!', /* LNOT, */ /* ! */ '{', /* LBRA, */ /* { */ '}', /* RBRA, */ /* } */ '[', /* LBRK, */ /* [ */ ']', /* RBRK, */ /* ] */ '(', /* LPAR, */ /* ( */ ')', /* RPAR, */ /* ) */ ',', /* COMMA, */ /* , */ '?', /* QUEST, */ /* ? */ ';', /* SEMIC, */ /* ; */ ':', /* COLON, */ /* : */ '.', /* DOT, */ /* . */ ELLIPSIS, /* MDOTS, */ /* ... */ 0, /* SHARP, */ /* # */ 0, /* DSHARP, */ /* ## */ 0, /* OPT_NONE, */ /* optional space to separate tokens in text output */ 0, /* DIGRAPH_TOKENS, */ /* there begin digraph tokens */ /* for DIG_*, do not change order, unless checking undig() in cpp.c */ '[', /* DIG_LBRK, */ /* <: */ ']', /* DIG_RBRK, */ /* :> */ '{', /* DIG_LBRA, */ /* <% */ '}', /* DIG_RBRA, */ /* %> */ 0, /* DIG_SHARP, */ /* %: */ 0, /* DIG_DSHARP, */ /* %:%: */ 0, /* DIGRAPH_TOKENS_END, */ /* digraph tokens end here */ 0, /* LAST_MEANINGFUL_TOKEN, */ /* reserved words will go there */ 0, /* MACROARG, */ /* special token for representing macro arguments */ 0, /* UPLUS = CPPERR, */ /* unary + */ 0, /* UMINUS */ /* unary - */ }; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static inline int c_lex(YYSTYPE *plval, ParserState *pState); static inline int get_char_value(const char *s); static inline int string_size(const char *s); static inline int check_type(YYSTYPE *plval, ParserState *pState, const char *s); static void parser_error(ParserState *pState, const char *msg); #line 752 "ctlib/y_parser.c" #ifdef short # undef short #endif /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure and (if available) are included so that the code can choose integer types of a good width. */ #ifndef __PTRDIFF_MAX__ # include /* INFRINGES ON USER NAME SPACE */ # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YY_STDINT_H # endif #endif /* Narrow types that promote to a signed type and that can represent a signed or unsigned integer of at least N bits. In tables they can save space and decrease cache pressure. Promoting to a signed type helps avoid bugs in integer arithmetic. */ #ifdef __INT_LEAST8_MAX__ typedef __INT_LEAST8_TYPE__ yytype_int8; #elif defined YY_STDINT_H typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif #ifdef __INT_LEAST16_MAX__ typedef __INT_LEAST16_TYPE__ yytype_int16; #elif defined YY_STDINT_H typedef int_least16_t yytype_int16; #else typedef short yytype_int16; #endif /* Work around bug in HP-UX 11.23, which defines these macros incorrectly for preprocessor constants. This workaround can likely be removed in 2023, as HPE has promised support for HP-UX 11.23 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of . */ #ifdef __hpux # undef UINT_LEAST8_MAX # undef UINT_LEAST16_MAX # define UINT_LEAST8_MAX 255 # define UINT_LEAST16_MAX 65535 #endif #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ && UINT_LEAST8_MAX <= INT_MAX) typedef uint_least8_t yytype_uint8; #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX typedef unsigned char yytype_uint8; #else typedef short yytype_uint8; #endif #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ typedef __UINT_LEAST16_TYPE__ yytype_uint16; #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ && UINT_LEAST16_MAX <= INT_MAX) typedef uint_least16_t yytype_uint16; #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX typedef unsigned short yytype_uint16; #else typedef int yytype_uint16; #endif #ifndef YYPTRDIFF_T # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ # define YYPTRDIFF_T __PTRDIFF_TYPE__ # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ # elif defined PTRDIFF_MAX # ifndef ptrdiff_t # include /* INFRINGES ON USER NAME SPACE */ # endif # define YYPTRDIFF_T ptrdiff_t # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX # else # define YYPTRDIFF_T long # define YYPTRDIFF_MAXIMUM LONG_MAX # endif #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned # endif #endif #define YYSIZE_MAXIMUM \ YY_CAST (YYPTRDIFF_T, \ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ ? YYPTRDIFF_MAXIMUM \ : YY_CAST (YYSIZE_T, -1))) #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) /* Stored state numbers (used for stacks). */ typedef yytype_int16 yy_state_t; /* State numbers in computations. */ typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef YY_ATTRIBUTE_PURE # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define YY_ATTRIBUTE_PURE # endif #endif #ifndef YY_ATTRIBUTE_UNUSED # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) # else # define YY_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YY_USE(E) ((void) (E)) #else # define YY_USE(E) /* empty */ #endif /* Suppress an incorrect diagnostic about yylval being uninitialized. */ #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ # if __GNUC__ * 100 + __GNUC_MINOR__ < 407 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") # else # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ # define YY_IGNORE_USELESS_CAST_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") # define YY_IGNORE_USELESS_CAST_END \ _Pragma ("GCC diagnostic pop") #endif #ifndef YY_IGNORE_USELESS_CAST_BEGIN # define YY_IGNORE_USELESS_CAST_BEGIN # define YY_IGNORE_USELESS_CAST_END #endif #define YY_ASSERT(E) ((void) (0 && (E))) #if 1 /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* 1 */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 125 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 2186 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 89 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 133 /* YYNRULES -- Number of rules. */ #define YYNRULES 367 /* YYNSTATES -- Number of states. */ #define YYNSTATES 618 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 319 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ (0 <= (YYX) && (YYX) <= YYMAXUTOK \ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ static const yytype_int8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 80, 2, 2, 2, 82, 75, 2, 65, 66, 76, 77, 69, 78, 72, 81, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 68, 67, 83, 88, 84, 87, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 70, 2, 71, 85, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 73, 86, 74, 79, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { 0, 620, 620, 621, 629, 633, 634, 638, 642, 643, 645, 648, 655, 656, 660, 661, 665, 666, 674, 675, 680, 695, 696, 697, 707, 708, 709, 710, 711, 711, 712, 712, 713, 714, 715, 719, 720, 724, 725, 729, 730, 731, 732, 750, 751, 755, 756, 757, 758, 759, 760, 764, 765, 769, 770, 772, 779, 789, 790, 792, 797, 798, 800, 805, 806, 808, 810, 812, 817, 818, 820, 825, 826, 831, 832, 837, 838, 843, 844, 849, 850, 855, 856, 861, 862, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 880, 881, 884, 885, 889, 894, 895, 933, 934, 935, 936, 943, 967, 973, 984, 1006, 1012, 1024, 1029, 1030, 1035, 1040, 1041, 1047, 1048, 1049, 1053, 1054, 1058, 1059, 1063, 1064, 1068, 1069, 1070, 1074, 1075, 1076, 1077, 1081, 1082, 1083, 1084, 1088, 1093, 1098, 1106, 1107, 1111, 1112, 1113, 1117, 1118, 1119, 1123, 1124, 1127, 1132, 1137, 1145, 1146, 1147, 1151, 1152, 1153, 1154, 1155, 1156, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1172, 1173, 1177, 1194, 1230, 1259, 1268, 1269, 1273, 1274, 1278, 1289, 1303, 1304, 1308, 1312, 1325, 1339, 1366, 1386, 1387, 1391, 1395, 1412, 1448, 1479, 1487, 1502, 1521, 1534, 1550, 1551, 1555, 1556, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1581, 1582, 1586, 1587, 1594, 1607, 1628, 1636, 1648, 1649, 1653, 1654, 1655, 1659, 1660, 1664, 1665, 1669, 1670, 1674, 1675, 1679, 1680, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1695, 1696, 1697, 1701, 1702, 1703, 1704, 1708, 1709, 1713, 1714, 1718, 1722, 1723, 1724, 1728, 1729, 1730, 1734, 1735, 1736, 1737, 1744, 1745, 1749, 1750, 1754, 1755, 1756, 1760, 1760, 1762, 1762, 1764, 1764, 1766, 1766, 1768, 1768, 1771, 1771, 1772, 1772, 1773, 1773, 1774, 1774, 1775, 1775, 1777, 1777, 1778, 1778, 1779, 1779, 1780, 1780, 1781, 1781, 1785, 1786, 1790, 1791, 1795, 1799, 1813, 1820, 1821, 1827, 1836, 1837, 1848, 1849, 1855, 1861, 1867, 1876, 1877, 1882, 1890, 1894, 1898, 1899, 1903, 1904, 1910, 1919, 1924, 1925, 1933, 1945, 1949, 1950, 1951, 1955, 1960, 1961, 1969, 1970, 1971, 1989, 1990, 1991, 1995, 2006, 2017, 2028, 2029, 2040, 2054, 2059, 2064, 2069, 2077, 2078, 2079, 2094 }; #endif /** Accessing symbol of state STATE. */ #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) #if 1 /* The user-facing name of the symbol whose (internal) number is YYSYMBOL. No bounds checking. */ static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "\"end of file\"", "error", "\"invalid token\"", "AUTO_TOK", "DOUBLE_TOK", "INT_TOK", "STRUCT_TOK", "BREAK_TOK", "ELSE_TOK", "LONG_TOK", "SWITCH_TOK", "CASE_TOK", "ENUM_TOK", "REGISTER_TOK", "TYPEDEF_TOK", "CHAR_TOK", "EXTERN_TOK", "RETURN_TOK", "UNION_TOK", "CONST_TOK", "FLOAT_TOK", "SHORT_TOK", "UNSIGNED_TOK", "CONTINUE_TOK", "FOR_TOK", "SIGNED_TOK", "VOID_TOK", "DEFAULT_TOK", "GOTO_TOK", "SIZEOF_TOK", "VOLATILE_TOK", "DO_TOK", "IF_TOK", "STATIC_TOK", "WHILE_TOK", "INLINE_TOK", "RESTRICT_TOK", "ASM_TOK", "SKIP_TOK", "PTR_OP", "INC_OP", "DEC_OP", "LEFT_OP", "RIGHT_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "ELLIPSIS", "MUL_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", "ADD_ASSIGN", "SUB_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "STRING_LITERAL", "CONSTANT", "TYPE_NAME", "IDENTIFIER", "'('", "')'", "';'", "':'", "','", "'['", "']'", "'.'", "'{'", "'}'", "'&'", "'*'", "'+'", "'-'", "'~'", "'!'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'", "'='", "$accept", "string_literal_list", "asm_string", "asm_string_opt", "asm_expr", "asm_statement", "asm_operands_opt", "asm_operands", "asm_operand", "asm_clobbers", "primary_expression", "postfix_expression", "$@1", "$@2", "member_name", "argument_expression_list", "unary_expression", "unary_operator", "cast_expression", "multiplicative_expression", "additive_expression", "shift_expression", "relational_expression", "equality_expression", "AND_expression", "exclusive_OR_expression", "inclusive_OR_expression", "logical_AND_expression", "logical_OR_expression", "conditional_expression", "assignment_expression", "assignment_operator", "assignment_expression_opt", "comma_expression", "constant_expression", "comma_expression_opt", "declaration", "default_declaring_list", "declaring_list", "declaration_specifier", "type_specifier", "declaration_qualifier_list", "type_qualifier_list", "type_qualifier_list_opt", "declaration_qualifier", "type_qualifier", "basic_declaration_specifier", "basic_type_specifier", "sue_declaration_specifier", "sue_type_specifier", "enum_type_specifier", "su_type_specifier", "sut_type_specifier", "typedef_declaration_specifier", "typedef_type_specifier", "storage_class", "basic_type_name", "elaborated_type_name", "aggregate_name", "aggregate_key_context", "aggregate_key", "member_declaration_list_opt", "member_declaration_list", "member_declaration", "unnamed_su_declaration", "member_declaring_list", "member_declarator", "bit_field_size_opt", "bit_field_size", "enum_name", "enum_key_context", "enumerator_list", "enumerator", "parameter_type_list", "parameter_list", "parameter_declaration", "identifier_list", "identifier_or_typedef_name", "type_name", "initializer_opt", "initializer", "initializer_list", "designation_opt", "designator_list", "designator", "comma_opt", "statement", "labeled_statement", "compound_statement", "declaration_list", "statement_list", "expression_statement", "selection_statement", "iteration_statement", "jump_statement", "source_file", "translation_unit", "external_definition", "function_definition", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12", "$@13", "$@14", "$@15", "$@16", "$@17", "declarator", "typedef_declarator", "parameter_typedef_declarator", "clean_typedef_declarator", "clean_postfix_typedef_declarator", "paren_typedef_declarator", "paren_postfix_typedef_declarator", "simple_paren_typedef_declarator", "identifier_declarator", "unary_identifier_declarator", "postfix_identifier_declarator", "paren_identifier_declarator", "old_function_declarator", "postfix_old_function_declarator", "abstract_declarator", "postfixing_abstract_declarator", "array_abstract_declarator", "unary_abstract_declarator", "postfix_abstract_declarator", YY_NULLPTR }; static const char * yysymbol_name (yysymbol_kind_t yysymbol) { return yytname[yysymbol]; } #endif #define YYPACT_NINF (-507) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) #define YYTABLE_NINF (-289) #define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { 1279, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -56, -507, -507, 42, 331, -507, -507, 134, 144, 431, 431, 1487, 1523, -507, 2106, 2106, 970, 696, 67, 67, 798, 798, -507, -507, -507, 227, -507, -507, 262, 28, 1279, -507, -507, -507, -507, -507, -40, 1851, -507, 1969, -42, 307, -1, 331, -507, -507, -507, 113, -507, 620, 231, 656, 49, 94, -507, -507, -507, -507, -507, -507, 87, 1851, 94, 157, 1851, -507, -507, -507, -507, -507, -507, -507, -507, 22, 1851, -507, -507, -507, -507, -507, -507, 32, 1851, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, 1885, 167, 117, 203, -507, -507, 210, 1722, 198, -507, 82, -507, 620, 620, 1588, 1624, 1851, 210, 1976, 2021, 2021, -507, -507, -507, 917, -507, -507, -507, -507, -507, -507, 111, -507, 469, 911, 1969, -507, 191, 245, 385, 17, 477, 272, 271, 303, 335, 9, -507, -507, 21, 231, -507, 231, -507, -507, 113, 876, 94, 231, 670, 103, 94, -507, 1778, -507, -507, 656, 327, 332, 231, 656, 686, -507, -507, 351, -507, 347, 210, 1851, 210, 347, 210, 1851, 210, 347, 210, 1851, 210, 347, 210, 1851, 210, 407, 1913, 2150, -507, 24, -507, 62, 346, 1885, -507, 379, 297, 1885, 388, -507, 405, 117, 762, -507, -507, -507, 694, 694, 1315, 1383, 798, 599, 414, 404, -507, 173, 67, 224, 2028, 2073, 94, 94, -507, 210, -507, 917, -507, 917, -507, -507, 218, 34, 1686, 67, 434, -507, -507, -507, 1916, 1969, 441, 501, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, 1969, -507, -507, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 475, 1969, -507, -507, 314, 876, 347, 670, 670, 1044, 347, 356, 231, 231, 485, 378, 656, -507, -507, 497, 1110, -507, -507, 210, -507, -507, -507, 210, -507, -507, -507, 210, -507, -507, -507, 210, -507, 1969, -507, -507, 505, -507, -507, -507, -507, 407, 502, 117, 503, 1969, 388, 508, 514, 1969, 1969, 513, 517, 533, 117, 1065, 544, 545, 67, 549, 553, -507, -507, 554, 558, 561, -507, -507, -507, 840, 663, -507, -507, -507, -507, 1143, 1014, -507, -507, -507, -507, -507, -507, -507, -507, -507, 1211, 1175, -507, -507, -507, -507, -507, 1812, -507, 567, 67, 1969, 1969, 562, -507, 564, 565, 566, -507, 575, 578, -507, 1419, 641, -507, -507, 1924, -507, 239, -507, 7, 464, 464, -507, -507, -507, -507, 191, 191, 245, 245, 385, 385, 385, 385, 17, 17, 477, 272, 271, 303, 335, 480, -507, -507, -507, 670, -507, -507, -507, -507, -507, -507, 421, 267, 266, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, 576, -507, 1969, 581, 585, -507, 1969, 1065, 586, 633, 1969, 1969, 589, -507, 1065, -507, 991, -507, -507, 602, 606, 609, 1014, -507, 1175, -507, -507, -507, 607, 610, -507, -507, -507, -507, 616, 616, 641, 205, -507, -507, 1969, -507, -507, -507, -507, -507, 1969, -507, -507, 1969, 117, -507, 613, 1110, 99, -507, -507, 282, 1065, -507, 626, -507, -507, 636, 291, 316, 1969, -507, -507, -507, 231, -507, -507, -507, -507, 613, -507, -507, 627, -507, 340, 628, -507, -507, -507, 1065, -507, 1969, 1969, 1065, 1065, 416, -507, 634, -507, 1110, -507, -507, 640, 333, 705, -507, 647, 41, -507, -507, 1969, 648, 1065, -507, 658, 666, 410, 676, -507, 681, -507, -507, 1969, 682, 687, 41, 41, 1065, 381, 699, -507, 454, -507, -507, -507, 690, 733, 497, 1969, -507, 111, 392, 445, 737, 497, -507, -507, 111 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_int16 yydefact[] = { 273, 161, 169, 164, 179, 167, 198, 162, 158, 165, 159, 180, 128, 168, 166, 171, 170, 172, 130, 160, 163, 129, 0, 155, 340, 0, 0, 279, 278, 0, 0, 0, 0, 0, 0, 122, 113, 116, 114, 117, 143, 142, 115, 118, 119, 135, 147, 0, 178, 144, 0, 0, 274, 275, 277, 280, 332, 334, 333, 290, 342, 0, 0, 0, 0, 0, 335, 343, 106, 0, 105, 0, 314, 0, 0, 5, 311, 313, 316, 317, 312, 322, 310, 292, 5, 310, 294, 153, 121, 127, 126, 131, 139, 173, 174, 5, 296, 156, 123, 120, 136, 148, 145, 5, 298, 133, 134, 137, 132, 138, 103, 141, 104, 140, 146, 149, 154, 157, 152, 224, 223, 181, 177, 0, 197, 1, 276, 0, 0, 124, 337, 351, 258, 0, 0, 0, 0, 300, 0, 0, 0, 0, 2, 21, 20, 0, 45, 46, 47, 48, 49, 50, 22, 24, 39, 51, 0, 53, 57, 60, 63, 68, 71, 73, 75, 77, 79, 81, 83, 98, 0, 338, 341, 346, 336, 344, 0, 0, 5, 333, 0, 0, 5, 310, 0, 315, 330, 0, 0, 0, 0, 0, 0, 318, 325, 0, 6, 229, 0, 302, 0, 229, 0, 304, 0, 229, 0, 306, 0, 229, 0, 308, 0, 0, 0, 116, 117, 142, 187, 118, 0, 182, 183, 0, 0, 181, 242, 199, 201, 0, 101, 281, 221, 352, 207, 214, 211, 218, 114, 117, 0, 203, 205, 0, 124, 125, 96, 0, 5, 5, 259, 0, 291, 0, 43, 0, 40, 41, 0, 225, 227, 118, 0, 3, 32, 33, 0, 0, 0, 0, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 85, 0, 51, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, 347, 0, 0, 229, 0, 0, 0, 229, 0, 320, 327, 0, 0, 0, 319, 326, 0, 0, 110, 283, 0, 293, 111, 285, 0, 295, 107, 287, 0, 297, 108, 289, 0, 299, 0, 188, 191, 192, 175, 184, 186, 185, 0, 0, 243, 0, 0, 242, 0, 0, 0, 101, 0, 0, 0, 0, 101, 0, 0, 124, 155, 20, 254, 250, 102, 0, 0, 260, 244, 245, 101, 101, 246, 247, 248, 249, 0, 360, 210, 209, 208, 350, 348, 349, 217, 216, 215, 0, 360, 213, 212, 220, 219, 353, 0, 345, 0, 125, 0, 0, 46, 97, 0, 46, 0, 301, 0, 0, 23, 0, 360, 226, 228, 0, 26, 0, 37, 0, 0, 0, 84, 54, 55, 56, 58, 59, 61, 62, 66, 67, 64, 65, 69, 70, 72, 74, 76, 78, 80, 0, 7, 99, 109, 0, 112, 331, 321, 329, 328, 323, 0, 0, 236, 233, 230, 303, 305, 307, 309, 100, 194, 190, 193, 189, 176, 200, 195, 202, 0, 271, 0, 0, 0, 270, 101, 101, 0, 0, 0, 0, 0, 262, 101, 255, 101, 256, 261, 0, 0, 0, 361, 362, 361, 204, 206, 222, 0, 0, 357, 354, 359, 358, 44, 0, 361, 236, 52, 27, 0, 25, 36, 35, 29, 31, 0, 324, 4, 0, 0, 231, 242, 0, 0, 238, 196, 0, 101, 272, 0, 253, 269, 0, 0, 0, 0, 251, 257, 366, 364, 365, 363, 355, 356, 242, 38, 82, 0, 241, 236, 0, 234, 237, 239, 101, 252, 101, 0, 101, 101, 0, 367, 0, 240, 0, 232, 265, 0, 0, 263, 266, 0, 12, 34, 235, 101, 0, 101, 8, 0, 0, 0, 13, 14, 0, 267, 264, 0, 0, 0, 12, 0, 101, 0, 0, 9, 0, 15, 268, 16, 0, 0, 0, 0, 10, 18, 0, 0, 0, 0, 17, 11, 19 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -507, -310, -507, -20, -507, -507, 166, -507, 209, -507, -507, -507, -507, -507, 382, -507, 299, -507, -139, 276, 265, 365, 275, 511, 512, 510, 515, 519, -507, -338, -172, -507, -507, -61, -325, -354, 5, -507, -507, 36, 153, 37, 150, -204, -23, 8, -507, 304, -76, 137, -507, -105, -507, -507, 353, 426, 252, -507, 217, -507, -507, 588, -507, 595, -507, -507, 470, -507, 478, 367, -507, 600, 482, -507, -507, 430, -507, -43, 283, 208, -506, 337, 324, -507, 354, -331, 79, -507, 418, -57, 507, -507, -507, -507, -507, -507, -507, 827, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, 6, -507, -51, -63, -507, 178, -507, -120, 1, -17, -507, 123, 614, -507, 109, -52, -507, -300, -123 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { 0, 152, 196, 205, 27, 369, 586, 587, 588, 611, 153, 154, 268, 269, 518, 421, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 281, 408, 370, 466, 371, 132, 29, 30, 133, 134, 135, 136, 246, 88, 35, 36, 37, 38, 39, 40, 41, 218, 42, 43, 44, 45, 92, 46, 47, 48, 220, 221, 222, 223, 224, 341, 467, 342, 49, 50, 226, 227, 240, 241, 242, 243, 372, 262, 324, 460, 526, 527, 528, 529, 351, 373, 374, 375, 137, 377, 378, 379, 380, 381, 51, 52, 53, 54, 127, 198, 202, 206, 210, 138, 200, 204, 208, 212, 251, 326, 330, 334, 338, 75, 76, 77, 78, 79, 189, 81, 190, 66, 56, 57, 179, 64, 60, 497, 387, 131, 388, 389 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { 170, 55, 465, 478, 122, 28, 130, 124, 62, 61, 188, 130, 457, 105, 465, 111, 217, 283, 465, 116, 185, 556, 474, 193, 171, 128, 199, 473, 125, 203, 129, 477, 82, 85, 95, 103, 31, 33, 84, 207, 404, 89, 98, 12, 89, 107, 89, 211, 114, 115, 89, 117, 238, 55, 18, 197, 62, 28, 301, 195, 21, 291, 292, 579, 201, 173, 174, 314, 12, 195, 178, 318, 183, 98, 407, 410, 304, 182, 515, 18, 228, 12, 494, 209, 258, 21, 12, 303, 31, 33, 304, -150, 18, 494, 422, -286, 302, 18, 21, 415, 293, 294, 584, 21, 129, -288, 24, 25, 238, 426, 416, 585, 72, 24, 191, 494, 217, 188, 26, 305, 217, 306, 12, 58, 188, 74, 534, 130, 188, -151, 193, 195, 447, 18, 183, 183, 248, 249, 317, 21, 84, 320, 250, 89, 98, 427, 428, 429, 63, 58, 34, 459, 247, 32, 58, 58, 58, 58, 309, 62, -282, 486, 313, 62, 234, 236, 72, 24, 311, 523, 62, 524, 263, 376, 62, 58, 65, 24, 176, 181, 119, 120, 551, 384, 390, 465, 228, 557, 58, 177, 314, 318, 258, 174, 258, 555, 63, 58, 552, 456, 98, 68, 34, 69, 250, 32, 423, 572, 250, 80, 80, 70, 250, 71, 183, 111, 250, 12, 567, 343, 234, 236, 98, 107, 192, 115, 589, 117, 18, 209, -284, 244, 502, 503, 21, 385, 391, 395, 397, 401, 225, 445, 402, 12, 89, 98, 89, 188, 188, 80, 93, 101, 194, 98, 18, 130, 188, 405, 216, 495, 21, 320, 317, 452, 453, 239, 317, 284, 98, 117, 495, 214, 285, 286, 213, 523, 229, 524, 237, 245, 512, 235, 216, 230, 414, 91, 100, 304, 106, 109, 119, 120, 495, 62, 62, 260, 184, 610, 259, 307, 121, 129, 62, 307, 617, 513, 238, 228, 514, 174, 63, 80, 80, 174, 63, 58, 98, 238, 482, 188, 98, 239, 287, 288, 238, 119, 120, 308, 263, 456, 493, 312, 193, 522, 237, 123, 523, 235, 524, 238, 525, 493, 550, 386, 392, 396, 398, 297, 559, 183, 12, 304, 93, 101, 343, 459, 298, 563, 216, 194, 304, 18, 216, 493, 347, 62, 348, 21, 417, 418, 321, 214, 128, 172, 213, 214, 62, 129, 213, 184, 172, 250, 564, 300, 129, 304, 188, 91, 100, 299, 216, 80, 216, 315, 403, 24, 25, 459, 316, 581, 94, 102, 304, 260, 317, 260, 259, 26, 259, 328, 523, 98, 524, 332, -243, 531, 322, 336, 234, 236, 344, 184, 451, 538, 539, 215, 129, 289, 290, 234, 236, 101, 62, 307, 307, 323, 234, 236, 254, 256, 257, 483, 63, 184, 455, 320, 346, 604, 129, 215, 304, 234, 236, 93, 101, 282, 492, 350, 613, 90, 99, 614, 90, 108, 90, 113, 100, 109, 90, 118, 72, 24, 180, 400, 219, 340, 594, 101, 595, 565, 399, 553, 576, 181, 577, 304, 184, 521, 91, 100, 321, 129, 566, 352, 72, 24, 73, 174, 261, 174, 419, 573, 94, 102, 98, 307, 98, 74, -30, 264, 265, 615, 100, 424, 304, 403, 307, 448, 98, 239, 606, 450, 607, 295, 296, 215, 80, 516, 517, 215, 239, 598, 237, 496, 266, 235, 412, 239, 413, 267, 425, -28, 446, 237, 498, 231, 235, 612, 520, 304, 237, 454, 239, 235, 432, 433, 252, 215, 142, 215, 535, 90, 99, 430, 431, 237, 510, 541, 235, 492, 438, 439, 307, 340, 219, 475, 470, 472, 219, 476, 479, 102, 480, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 481, 1, 94, 102, 546, 261, 546, 261, 484, 485, 560, 7, 8, 59, 10, 325, -224, 327, 546, 329, -223, 331, 304, 333, 487, 335, 102, 337, 488, 339, 501, 19, 504, 20, 505, 506, 507, 571, 282, 67, 508, 574, 575, 509, 83, 86, 96, 104, 532, 530, 282, 533, 536, 540, 282, 434, 435, 436, 437, 12, 591, 90, 99, 90, 113, 59, 537, 543, 411, 354, 18, 544, 355, 356, 545, 603, 21, 547, 175, 357, 548, 554, 72, 24, 180, 358, 359, 67, 511, 360, 361, 139, 561, 362, 363, 181, 364, 568, 1, 365, 562, 570, 140, 141, 12, 415, 580, 578, 7, 8, 129, 10, 582, 583, 590, 18, 416, 282, 186, 24, 187, 21, 592, 142, 143, 119, 367, 145, 19, 593, 20, 74, 186, 24, 310, 230, 491, 146, 147, 148, 149, 150, 151, 461, 596, 181, 597, 462, 72, 24, 319, 463, 599, 600, 608, 464, 72, 24, 382, 605, 601, 74, 112, 129, 1, 2, 3, 4, 354, 383, 5, 355, 356, 6, 7, 8, 9, 10, 357, 11, 12, 13, 14, 15, 358, 359, 16, 17, 360, 361, 139, 18, 362, 363, 19, 364, 20, 21, 365, 609, 1, 140, 141, 616, 602, 175, 519, 440, 442, 441, 7, 8, 349, 10, 443, 345, 12, 469, 282, 444, 468, 282, 142, 143, 366, 367, 145, 18, 353, 500, 19, 471, 20, 21, 230, 368, 146, 147, 148, 149, 150, 151, 1, 2, 3, 4, 354, 549, 5, 355, 356, 6, 7, 8, 9, 10, 357, 11, 12, 13, 14, 15, 358, 359, 16, 17, 360, 361, 139, 18, 362, 363, 19, 364, 20, 21, 365, 569, 126, 140, 141, 558, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 142, 143, 366, 367, 145, 18, 0, 0, 0, 0, 0, 21, 230, 489, 146, 147, 148, 149, 150, 151, 2, 3, 4, 0, 0, 5, 0, 0, 6, 0, 0, 9, 0, 0, 11, 12, 13, 14, 15, 24, 176, 16, 17, 0, 0, 139, 18, 0, 0, 0, 0, 177, 21, 0, 0, 0, 140, 141, 0, 0, 0, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 1, 0, 0, 0, 0, 142, 143, 23, 144, 145, 7, 8, 0, 10, 0, 0, 12, 0, 0, 146, 147, 148, 149, 150, 151, 354, 280, 18, 355, 356, 19, 0, 20, 21, 0, 357, 0, 0, 0, 0, 0, 358, 359, 0, 0, 360, 361, 139, 0, 362, 363, 0, 364, 0, 0, 365, 0, 0, 140, 141, 12, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 21, 0, 142, 143, 119, 367, 145, 0, 0, 0, 0, 0, 0, 12, 230, 542, 146, 147, 148, 149, 150, 151, 354, 0, 18, 355, 356, 72, 24, 382, 21, 0, 357, 0, 129, 0, 0, 0, 358, 359, 383, 0, 360, 361, 139, 0, 362, 363, 0, 364, 0, 0, 365, 0, 0, 140, 141, 72, 24, 449, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 142, 143, 119, 367, 145, 0, 0, 0, 0, 0, 0, 0, 230, 139, 146, 147, 148, 149, 150, 151, 1, 2, 3, 4, 140, 141, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 142, 143, 18, 144, 145, 19, 0, 20, 21, 0, 0, 0, 458, 0, 146, 147, 148, 149, 150, 151, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 23, 24, 382, 233, 0, 21, 0, 129, 1, 2, 3, 4, 0, 383, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 24, 393, 18, 0, 0, 19, 129, 20, 21, 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 393, 233, 0, 0, 0, 129, 1, 2, 3, 4, 0, 394, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 22, 0, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 23, 24, 25, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 24, 393, 0, 0, 0, 0, 129, 1, 2, 3, 4, 0, 394, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 97, 24, 393, 18, 0, 0, 19, 129, 20, 21, 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 415, 233, 0, 0, 0, 129, 1, 2, 3, 4, 0, 416, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 87, 24, 25, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 24, 25, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 26, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 87, 24, 176, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 24, 176, 2, 3, 4, 0, 0, 5, 0, 0, 6, 0, 177, 9, 0, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 0, 0, 0, 21, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 97, 0, 415, 18, 0, 0, 19, 129, 20, 21, 0, 0, 0, 416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 23, 232, 5, 233, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 23, 18, 0, 233, 19, 0, 20, 21, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 499, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 23, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 0, 2, 3, 4, 0, 0, 5, 0, 0, 6, 0, 0, 9, 0, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 23, 18, 0, 2, 3, 4, 0, 21, 5, 0, 0, 6, 0, 0, 9, 0, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 139, 0, 0, 23, 21, 0, 0, 0, 139, 0, 0, 140, 141, 0, 0, 0, 0, 0, 0, 140, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 142, 143, 0, 144, 145, 420, 0, 0, 142, 143, 0, 144, 145, 0, 146, 147, 148, 149, 150, 151, 511, 139, 146, 147, 148, 149, 150, 151, 139, 0, 0, 0, 140, 141, 0, 0, 0, 0, 0, 140, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 143, 0, 144, 145, 0, 0, 142, 143, 0, 144, 253, 0, 0, 146, 147, 148, 149, 150, 151, 139, 146, 147, 148, 149, 150, 151, 139, 0, 0, 0, 140, 141, 0, 0, 0, 0, 0, 140, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 143, 0, 144, 255, 0, 0, 142, 143, 0, 144, 145, 0, 0, 146, 147, 148, 149, 150, 151, 139, 146, 406, 148, 149, 150, 151, 1, 2, 3, 0, 140, 141, 5, 0, 0, 0, 7, 8, 9, 10, 0, 0, 12, 13, 14, 15, 0, 0, 16, 17, 0, 142, 143, 18, 144, 145, 19, 0, 20, 21, 0, 0, 0, 0, 0, 146, 409, 148, 149, 150, 151, 2, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 0, 0, 0, 21 }; static const yytype_int16 yycheck[] = { 61, 0, 340, 357, 47, 0, 58, 50, 25, 65, 73, 63, 322, 36, 352, 38, 121, 156, 356, 42, 72, 527, 353, 74, 66, 65, 83, 352, 0, 86, 70, 356, 31, 32, 33, 34, 0, 0, 32, 96, 244, 33, 34, 19, 36, 37, 38, 104, 40, 41, 42, 43, 128, 52, 30, 75, 73, 52, 49, 37, 36, 44, 45, 569, 84, 66, 65, 187, 19, 37, 69, 191, 71, 65, 246, 247, 69, 71, 71, 30, 123, 19, 382, 103, 145, 36, 19, 66, 52, 52, 69, 67, 30, 393, 266, 73, 87, 30, 36, 65, 83, 84, 61, 36, 70, 73, 64, 65, 184, 281, 76, 70, 63, 64, 65, 415, 221, 180, 76, 171, 225, 173, 19, 0, 187, 76, 480, 179, 191, 67, 181, 37, 304, 30, 133, 134, 135, 136, 190, 36, 134, 192, 137, 135, 136, 284, 285, 286, 25, 26, 0, 323, 70, 0, 31, 32, 33, 34, 178, 176, 73, 365, 182, 180, 128, 128, 63, 64, 65, 70, 187, 72, 61, 230, 191, 52, 26, 64, 65, 76, 63, 64, 520, 234, 235, 523, 229, 88, 65, 76, 310, 311, 253, 192, 255, 526, 73, 74, 523, 319, 192, 67, 52, 69, 199, 52, 267, 561, 203, 31, 32, 67, 207, 69, 213, 238, 211, 19, 549, 213, 184, 184, 214, 215, 74, 217, 580, 219, 30, 249, 73, 33, 404, 405, 36, 234, 235, 236, 237, 66, 73, 302, 69, 19, 236, 237, 238, 310, 311, 71, 33, 34, 74, 245, 30, 307, 319, 33, 121, 382, 36, 312, 314, 315, 316, 128, 318, 76, 260, 261, 393, 121, 81, 82, 121, 70, 73, 72, 128, 129, 419, 128, 145, 73, 66, 33, 34, 69, 36, 37, 63, 64, 415, 310, 311, 145, 65, 607, 145, 176, 73, 70, 319, 180, 614, 66, 382, 350, 69, 308, 187, 133, 134, 312, 191, 192, 308, 393, 361, 382, 312, 184, 77, 78, 400, 63, 64, 177, 61, 449, 382, 181, 383, 66, 184, 73, 70, 184, 72, 415, 74, 393, 514, 234, 235, 236, 237, 75, 66, 348, 19, 69, 135, 136, 348, 527, 85, 66, 221, 181, 69, 30, 225, 415, 67, 382, 69, 36, 259, 260, 192, 221, 65, 66, 221, 225, 393, 70, 225, 65, 66, 376, 66, 48, 70, 69, 449, 135, 136, 86, 253, 213, 255, 66, 244, 64, 65, 569, 66, 66, 33, 34, 69, 253, 456, 255, 253, 76, 255, 201, 70, 403, 72, 205, 74, 476, 65, 209, 382, 382, 74, 65, 66, 484, 485, 121, 70, 42, 43, 393, 393, 214, 449, 310, 311, 88, 400, 400, 139, 140, 141, 362, 319, 65, 66, 496, 67, 66, 70, 145, 69, 415, 415, 236, 237, 156, 377, 69, 66, 33, 34, 69, 36, 37, 38, 39, 214, 215, 42, 43, 63, 64, 65, 69, 121, 68, 66, 260, 68, 540, 66, 524, 66, 76, 68, 69, 65, 66, 236, 237, 312, 70, 544, 88, 63, 64, 65, 496, 145, 498, 66, 562, 135, 136, 496, 382, 498, 76, 39, 40, 41, 66, 260, 72, 69, 365, 393, 309, 510, 382, 66, 313, 68, 46, 47, 221, 348, 63, 64, 225, 393, 592, 382, 383, 65, 382, 253, 400, 255, 70, 39, 72, 67, 393, 394, 127, 393, 608, 68, 69, 400, 66, 415, 400, 289, 290, 138, 253, 61, 255, 481, 135, 136, 287, 288, 415, 416, 488, 415, 490, 295, 296, 449, 68, 221, 67, 74, 74, 225, 65, 67, 214, 65, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 68, 3, 236, 237, 496, 253, 498, 255, 65, 65, 532, 13, 14, 0, 16, 198, 68, 200, 510, 202, 68, 204, 69, 206, 67, 208, 260, 210, 68, 212, 64, 33, 71, 35, 71, 71, 71, 559, 340, 26, 66, 563, 564, 66, 31, 32, 33, 34, 68, 74, 352, 67, 67, 65, 356, 291, 292, 293, 294, 19, 582, 236, 237, 238, 239, 52, 34, 66, 251, 7, 30, 66, 10, 11, 66, 597, 36, 71, 65, 17, 71, 69, 63, 64, 65, 23, 24, 74, 73, 27, 28, 29, 67, 31, 32, 76, 34, 71, 3, 37, 65, 74, 40, 41, 19, 65, 67, 74, 13, 14, 70, 16, 8, 67, 67, 30, 76, 419, 63, 64, 65, 36, 65, 61, 62, 63, 64, 65, 33, 64, 35, 76, 63, 64, 65, 73, 74, 75, 76, 77, 78, 79, 80, 326, 69, 76, 66, 330, 63, 64, 65, 334, 71, 67, 65, 338, 63, 64, 65, 61, 595, 76, 67, 70, 3, 4, 5, 6, 7, 76, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 67, 3, 40, 41, 67, 596, 192, 425, 297, 299, 298, 13, 14, 225, 16, 300, 221, 19, 348, 520, 301, 343, 523, 61, 62, 63, 64, 65, 30, 229, 400, 33, 350, 35, 36, 73, 74, 75, 76, 77, 78, 79, 80, 3, 4, 5, 6, 7, 511, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 554, 52, 40, 41, 528, 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, 61, 62, 63, 64, 65, 30, -1, -1, -1, -1, -1, 36, 73, 74, 75, 76, 77, 78, 79, 80, 4, 5, 6, -1, -1, 9, -1, -1, 12, -1, -1, 15, -1, -1, 18, 19, 20, 21, 22, 64, 65, 25, 26, -1, -1, 29, 30, -1, -1, -1, -1, 76, 36, -1, -1, -1, 40, 41, -1, -1, -1, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, 3, -1, -1, -1, -1, 61, 62, 63, 64, 65, 13, 14, -1, 16, -1, -1, 19, -1, -1, 75, 76, 77, 78, 79, 80, 7, 88, 30, 10, 11, 33, -1, 35, 36, -1, 17, -1, -1, -1, -1, -1, 23, 24, -1, -1, 27, 28, 29, -1, 31, 32, -1, 34, -1, -1, 37, -1, -1, 40, 41, 19, -1, -1, -1, 67, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, 36, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, 19, 73, 74, 75, 76, 77, 78, 79, 80, 7, -1, 30, 10, 11, 63, 64, 65, 36, -1, 17, -1, 70, -1, -1, -1, 23, 24, 76, -1, 27, 28, 29, -1, 31, 32, -1, 34, -1, -1, 37, -1, -1, 40, 41, 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, 73, 29, 75, 76, 77, 78, 79, 80, 3, 4, 5, 6, 40, 41, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, 61, 62, 30, 64, 65, 33, -1, 35, 36, -1, -1, -1, 73, -1, 75, 76, 77, 78, 79, 80, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 63, 64, 65, 66, -1, 36, -1, 70, 3, 4, 5, 6, -1, 76, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, 64, 65, 30, -1, -1, 33, 70, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, 66, -1, -1, -1, 70, 3, 4, 5, 6, -1, 76, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, 37, -1, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, 63, 64, 65, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, -1, -1, -1, -1, 70, 3, 4, 5, 6, -1, 76, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, 63, 64, 65, 30, -1, -1, 33, 70, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, 65, 66, -1, -1, -1, 70, 3, 4, 5, 6, -1, 76, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, 63, 64, 65, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, 76, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, 63, 64, 65, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, 4, 5, 6, -1, -1, 9, -1, -1, 12, -1, 76, 15, -1, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, -1, -1, -1, 36, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, 63, -1, 65, 30, -1, -1, 33, 70, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 63, 64, 9, 66, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, 63, 30, -1, 66, 33, -1, 35, 36, -1, -1, -1, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, 50, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, 63, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, -1, 4, 5, 6, -1, -1, 9, -1, -1, 12, -1, -1, 15, -1, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, 63, 30, -1, 4, 5, 6, -1, 36, 9, -1, -1, 12, -1, -1, 15, -1, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, 29, -1, -1, 63, 36, -1, -1, -1, 29, -1, -1, 40, 41, -1, -1, -1, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 61, 62, -1, 64, 65, 66, -1, -1, 61, 62, -1, 64, 65, -1, 75, 76, 77, 78, 79, 80, 73, 29, 75, 76, 77, 78, 79, 80, 29, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, 62, -1, 64, 65, -1, -1, 61, 62, -1, 64, 65, -1, -1, 75, 76, 77, 78, 79, 80, 29, 75, 76, 77, 78, 79, 80, 29, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, 62, -1, 64, 65, -1, -1, 61, 62, -1, 64, 65, -1, -1, 75, 76, 77, 78, 79, 80, 29, 75, 76, 77, 78, 79, 80, 3, 4, 5, -1, 40, 41, 9, -1, -1, -1, 13, 14, 15, 16, -1, -1, 19, 20, 21, 22, -1, -1, 25, 26, -1, 61, 62, 30, 64, 65, 33, -1, 35, 36, -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, 80, 4, 5, -1, -1, -1, 9, -1, -1, -1, -1, -1, 15, -1, -1, -1, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, -1, -1, -1, 36 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 3, 4, 5, 6, 9, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 25, 26, 30, 33, 35, 36, 37, 63, 64, 65, 76, 93, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136, 137, 138, 139, 140, 142, 143, 144, 145, 147, 148, 149, 158, 159, 184, 185, 186, 187, 211, 212, 213, 214, 215, 216, 65, 212, 214, 215, 131, 211, 215, 67, 69, 67, 69, 63, 65, 76, 203, 204, 205, 206, 207, 208, 209, 211, 215, 203, 211, 215, 63, 133, 134, 144, 145, 146, 147, 158, 211, 215, 63, 134, 144, 145, 147, 158, 211, 215, 133, 145, 134, 144, 145, 67, 133, 67, 144, 134, 134, 133, 134, 144, 63, 64, 73, 166, 73, 166, 0, 186, 188, 65, 70, 218, 219, 125, 128, 129, 130, 131, 178, 193, 29, 40, 41, 61, 62, 64, 65, 75, 76, 77, 78, 79, 80, 90, 99, 100, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 66, 66, 66, 211, 215, 65, 76, 211, 214, 65, 76, 203, 211, 65, 218, 63, 65, 206, 208, 210, 65, 131, 205, 208, 37, 91, 92, 189, 178, 194, 92, 190, 178, 195, 92, 191, 178, 196, 92, 192, 178, 197, 129, 131, 136, 138, 140, 141, 143, 150, 151, 152, 153, 154, 73, 160, 161, 166, 73, 73, 177, 64, 66, 128, 129, 130, 131, 137, 138, 162, 163, 164, 165, 33, 131, 132, 70, 211, 211, 125, 198, 177, 65, 105, 65, 105, 105, 122, 129, 131, 143, 167, 61, 40, 41, 65, 70, 101, 102, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 88, 120, 105, 107, 76, 81, 82, 77, 78, 42, 43, 44, 45, 83, 84, 46, 47, 75, 85, 86, 48, 49, 87, 66, 69, 218, 218, 214, 131, 92, 65, 65, 131, 92, 210, 66, 66, 218, 210, 65, 205, 208, 65, 88, 168, 177, 199, 177, 168, 177, 200, 177, 168, 177, 201, 177, 168, 177, 202, 177, 68, 155, 157, 203, 74, 152, 67, 67, 69, 150, 69, 174, 88, 160, 7, 10, 11, 17, 23, 24, 27, 28, 31, 32, 34, 37, 63, 64, 74, 94, 122, 124, 166, 175, 176, 177, 178, 179, 180, 181, 182, 183, 65, 76, 205, 211, 217, 218, 220, 221, 205, 211, 217, 65, 76, 211, 217, 211, 217, 66, 69, 66, 69, 131, 132, 33, 76, 119, 121, 76, 119, 177, 167, 167, 66, 65, 76, 217, 217, 66, 66, 104, 119, 122, 72, 39, 119, 107, 107, 107, 108, 108, 109, 109, 110, 110, 110, 110, 111, 111, 112, 113, 114, 115, 116, 122, 67, 119, 168, 65, 168, 66, 218, 218, 66, 66, 210, 90, 73, 119, 169, 177, 177, 177, 177, 118, 123, 156, 157, 155, 74, 161, 74, 123, 174, 67, 65, 123, 124, 67, 65, 68, 166, 175, 65, 65, 132, 67, 68, 74, 179, 74, 175, 218, 220, 221, 131, 217, 131, 50, 164, 64, 119, 119, 71, 71, 71, 71, 66, 66, 131, 73, 107, 66, 69, 71, 63, 64, 103, 103, 68, 66, 66, 70, 72, 74, 170, 171, 172, 173, 74, 122, 68, 67, 124, 175, 67, 34, 122, 122, 65, 175, 74, 66, 66, 66, 217, 71, 71, 170, 119, 118, 123, 166, 69, 174, 169, 88, 173, 66, 175, 67, 65, 66, 66, 122, 218, 174, 71, 171, 74, 175, 124, 122, 175, 175, 66, 68, 74, 169, 67, 66, 8, 67, 61, 70, 95, 96, 97, 124, 67, 175, 65, 64, 66, 68, 69, 66, 122, 71, 67, 95, 97, 175, 66, 61, 66, 68, 65, 67, 90, 98, 122, 66, 69, 66, 67, 90 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_uint8 yyr1[] = { 0, 89, 90, 90, 91, 92, 92, 93, 94, 94, 94, 94, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 99, 99, 100, 100, 100, 100, 101, 100, 102, 100, 100, 100, 100, 103, 103, 104, 104, 105, 105, 105, 105, 105, 105, 106, 106, 106, 106, 106, 106, 107, 107, 108, 108, 108, 108, 109, 109, 109, 110, 110, 110, 111, 111, 111, 111, 111, 112, 112, 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 121, 122, 122, 123, 124, 124, 125, 125, 125, 125, 126, 126, 126, 127, 127, 127, 128, 128, 128, 129, 129, 129, 130, 130, 130, 131, 131, 132, 132, 133, 133, 134, 134, 134, 135, 135, 135, 135, 136, 136, 136, 136, 137, 137, 137, 138, 138, 139, 139, 139, 140, 140, 140, 141, 141, 142, 142, 142, 143, 143, 143, 144, 144, 144, 144, 144, 144, 145, 145, 145, 145, 145, 145, 145, 145, 145, 146, 146, 147, 147, 147, 148, 149, 149, 150, 150, 151, 151, 152, 152, 153, 154, 154, 155, 155, 156, 156, 157, 158, 158, 158, 159, 160, 160, 161, 161, 162, 162, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 165, 165, 166, 166, 167, 167, 167, 167, 168, 168, 169, 169, 169, 170, 170, 171, 171, 172, 172, 173, 173, 174, 174, 175, 175, 175, 175, 175, 175, 175, 176, 176, 176, 177, 177, 177, 177, 178, 178, 179, 179, 180, 181, 181, 181, 182, 182, 182, 183, 183, 183, 183, 184, 184, 185, 185, 186, 186, 186, 188, 187, 189, 187, 190, 187, 191, 187, 192, 187, 193, 187, 194, 187, 195, 187, 196, 187, 197, 187, 198, 187, 199, 187, 200, 187, 201, 187, 202, 187, 203, 203, 204, 204, 205, 205, 205, 206, 206, 206, 207, 207, 208, 208, 208, 208, 208, 209, 209, 209, 210, 210, 211, 211, 212, 212, 212, 213, 213, 213, 214, 214, 215, 215, 215, 216, 216, 216, 217, 217, 217, 218, 218, 218, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 221, 221, 221, 221 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 1, 2, 4, 0, 1, 5, 6, 8, 10, 12, 0, 1, 1, 3, 4, 7, 1, 3, 1, 1, 1, 3, 1, 4, 3, 4, 0, 4, 0, 4, 2, 2, 7, 1, 1, 1, 3, 1, 2, 2, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 3, 1, 0, 1, 2, 2, 2, 2, 4, 4, 5, 4, 4, 5, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 2, 1, 1, 1, 0, 1, 1, 2, 2, 2, 1, 2, 3, 2, 1, 0, 1, 2, 5, 6, 2, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 2, 1, 3, 1, 1, 1, 2, 1, 2, 0, 2, 2, 4, 1, 2, 4, 0, 2, 1, 2, 3, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 3, 3, 4, 1, 2, 1, 2, 2, 5, 7, 5, 5, 7, 9, 3, 2, 2, 3, 0, 1, 1, 2, 1, 1, 1, 0, 3, 0, 4, 0, 4, 0, 4, 0, 4, 0, 3, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 5, 0, 5, 0, 5, 0, 5, 1, 1, 1, 1, 1, 2, 1, 1, 2, 3, 3, 4, 1, 4, 5, 2, 3, 3, 4, 4, 1, 3, 1, 1, 1, 2, 3, 2, 3, 4, 1, 3, 1, 2, 3, 4, 3, 4, 1, 1, 1, 1, 2, 3, 4, 5, 5, 4, 4, 4, 1, 2, 2, 3, 3, 3, 3, 4 }; enum { YYENOMEM = -2 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab #define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (pState, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Backward compatibility with an undocumented macro. Use YYerror or YYUNDEF. */ #define YYERRCODE YYUNDEF /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (0) # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Kind, Value, pState); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*-----------------------------------. | Print this symbol's value on YYO. | `-----------------------------------*/ static void yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, ParserState *pState) { FILE *yyoutput = yyo; YY_USE (yyoutput); YY_USE (pState); if (!yyvaluep) return; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN switch (yykind) { case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ #line 421 "ctlib/parser.y" { if (((*yyvaluep).identifier)) fprintf(yyoutput, "'%s' len=%d, hash=0x%lx", ((*yyvaluep).identifier)->key, ((*yyvaluep).identifier)->keylen, (unsigned long)((*yyvaluep).identifier)->hash); else fprintf(yyoutput, "NULL"); } #line 2135 "ctlib/y_parser.c" break; case YYSYMBOL_member_declarator: /* member_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2162 "ctlib/y_parser.c" break; case YYSYMBOL_identifier_or_typedef_name: /* identifier_or_typedef_name */ #line 421 "ctlib/parser.y" { if (((*yyvaluep).identifier)) fprintf(yyoutput, "'%s' len=%d, hash=0x%lx", ((*yyvaluep).identifier)->key, ((*yyvaluep).identifier)->keylen, (unsigned long)((*yyvaluep).identifier)->hash); else fprintf(yyoutput, "NULL"); } #line 2173 "ctlib/y_parser.c" break; case YYSYMBOL_declarator: /* declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2200 "ctlib/y_parser.c" break; case YYSYMBOL_typedef_declarator: /* typedef_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2227 "ctlib/y_parser.c" break; case YYSYMBOL_parameter_typedef_declarator: /* parameter_typedef_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2254 "ctlib/y_parser.c" break; case YYSYMBOL_clean_typedef_declarator: /* clean_typedef_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2281 "ctlib/y_parser.c" break; case YYSYMBOL_clean_postfix_typedef_declarator: /* clean_postfix_typedef_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2308 "ctlib/y_parser.c" break; case YYSYMBOL_paren_typedef_declarator: /* paren_typedef_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2335 "ctlib/y_parser.c" break; case YYSYMBOL_paren_postfix_typedef_declarator: /* paren_postfix_typedef_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2362 "ctlib/y_parser.c" break; case YYSYMBOL_simple_paren_typedef_declarator: /* simple_paren_typedef_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2389 "ctlib/y_parser.c" break; case YYSYMBOL_identifier_declarator: /* identifier_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2416 "ctlib/y_parser.c" break; case YYSYMBOL_unary_identifier_declarator: /* unary_identifier_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2443 "ctlib/y_parser.c" break; case YYSYMBOL_postfix_identifier_declarator: /* postfix_identifier_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2470 "ctlib/y_parser.c" break; case YYSYMBOL_paren_identifier_declarator: /* paren_identifier_declarator */ #line 501 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { if (((*yyvaluep).pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", ((*yyvaluep).pDecl)->identifier, ((*yyvaluep).pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", ((*yyvaluep).pDecl)->pointer_flag ? "*" : "", ((*yyvaluep).pDecl)->identifier); if (((*yyvaluep).pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, ((*yyvaluep).pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } #line 2497 "ctlib/y_parser.c" break; default: break; } YY_IGNORE_MAYBE_UNINITIALIZED_END } /*---------------------------. | Print this symbol on YYO. | `---------------------------*/ static void yy_symbol_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, ParserState *pState) { YYFPRINTF (yyo, "%s %s (", yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); yy_symbol_value_print (yyo, yykind, yyvaluep, pState); YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule, ParserState *pState) { int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), &yyvsp[(yyi + 1) - (yynrhs)], pState); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, Rule, pState); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) ((void) 0) # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif /* Context of a parse error. */ typedef struct { yy_state_t *yyssp; yysymbol_kind_t yytoken; } yypcontext_t; /* Put in YYARG at most YYARGN of the expected tokens given the current YYCTX, and return the number of tokens stored in YYARG. If YYARG is null, return the number of expected tokens (guaranteed to be less than YYNTOKENS). Return YYENOMEM on memory exhaustion. Return 0 if there are more than YYARGN expected tokens, yet fill YYARG up to YYARGN. */ static int yypcontext_expected_tokens (const yypcontext_t *yyctx, yysymbol_kind_t yyarg[], int yyargn) { /* Actual size of YYARG. */ int yycount = 0; int yyn = yypact[+*yyctx->yyssp]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror && !yytable_value_is_error (yytable[yyx + yyn])) { if (!yyarg) ++yycount; else if (yycount == yyargn) return 0; else yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx); } } if (yyarg && yycount == 0 && 0 < yyargn) yyarg[0] = YYSYMBOL_YYEMPTY; return yycount; } #ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) # else /* Return the length of YYSTR. */ static YYPTRDIFF_T yystrlen (const char *yystr) { YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif #endif #ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ static char * yystpcpy (char *yydest, const char *yysrc) { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif #endif #ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYPTRDIFF_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; else goto append; append: default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (yyres) return yystpcpy (yyres, yystr) - yyres; else return yystrlen (yystr); } #endif static int yy_syntax_error_arguments (const yypcontext_t *yyctx, yysymbol_kind_t yyarg[], int yyargn) { /* Actual size of YYARG. */ int yycount = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yyctx->yytoken != YYSYMBOL_YYEMPTY) { int yyn; if (yyarg) yyarg[yycount] = yyctx->yytoken; ++yycount; yyn = yypcontext_expected_tokens (yyctx, yyarg ? yyarg + 1 : yyarg, yyargn - 1); if (yyn == YYENOMEM) return YYENOMEM; else yycount += yyn; } return yycount; } /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the required number of bytes is too large to store. */ static int yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, const yypcontext_t *yyctx) { enum { YYARGS_MAX = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; /* Arguments of yyformat: reported tokens (one for the "unexpected", one per "expected"). */ yysymbol_kind_t yyarg[YYARGS_MAX]; /* Cumulated lengths of YYARG. */ YYPTRDIFF_T yysize = 0; /* Actual size of YYARG. */ int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX); if (yycount == YYENOMEM) return YYENOMEM; switch (yycount) { #define YYCASE_(N, S) \ case N: \ yyformat = S; \ break default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); #undef YYCASE_ } /* Compute error message size. Don't count the "%s"s, but reserve room for the terminator. */ yysize = yystrlen (yyformat) - 2 * yycount + 1; { int yyi; for (yyi = 0; yyi < yycount; ++yyi) { YYPTRDIFF_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else return YYENOMEM; } } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return -1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]); yyformat += 2; } else { ++yyp; ++yyformat; } } return 0; } /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep, ParserState *pState) { YY_USE (yyvaluep); YY_USE (pState); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN switch (yykind) { case YYSYMBOL_IDENTIFIER: /* IDENTIFIER */ #line 412 "ctlib/parser.y" { if (((*yyvaluep).identifier)) { CT_DEBUG(PARSER, ("deleting node @ %p", ((*yyvaluep).identifier))); HN_delete(((*yyvaluep).identifier)); } } #line 2901 "ctlib/y_parser.c" break; case YYSYMBOL_member_declaration_list_opt: /* member_declaration_list_opt */ #line 560 "ctlib/parser.y" { if (((*yyvaluep).list)) { CT_DEBUG(PARSER, ("deleting struct declaration list @ %p", ((*yyvaluep).list))); LL_destroy(((*yyvaluep).list), (LLDestroyFunc) structdecl_delete); } } #line 2913 "ctlib/y_parser.c" break; case YYSYMBOL_member_declaration_list: /* member_declaration_list */ #line 560 "ctlib/parser.y" { if (((*yyvaluep).list)) { CT_DEBUG(PARSER, ("deleting struct declaration list @ %p", ((*yyvaluep).list))); LL_destroy(((*yyvaluep).list), (LLDestroyFunc) structdecl_delete); } } #line 2925 "ctlib/y_parser.c" break; case YYSYMBOL_member_declaration: /* member_declaration */ #line 457 "ctlib/parser.y" { if (((*yyvaluep).pStructDecl)) { CT_DEBUG(PARSER, ("deleting struct declaration @ %p", ((*yyvaluep).pStructDecl))); structdecl_delete(((*yyvaluep).pStructDecl)); } } #line 2937 "ctlib/y_parser.c" break; case YYSYMBOL_unnamed_su_declaration: /* unnamed_su_declaration */ #line 457 "ctlib/parser.y" { if (((*yyvaluep).pStructDecl)) { CT_DEBUG(PARSER, ("deleting struct declaration @ %p", ((*yyvaluep).pStructDecl))); structdecl_delete(((*yyvaluep).pStructDecl)); } } #line 2949 "ctlib/y_parser.c" break; case YYSYMBOL_member_declaring_list: /* member_declaring_list */ #line 457 "ctlib/parser.y" { if (((*yyvaluep).pStructDecl)) { CT_DEBUG(PARSER, ("deleting struct declaration @ %p", ((*yyvaluep).pStructDecl))); structdecl_delete(((*yyvaluep).pStructDecl)); } } #line 2961 "ctlib/y_parser.c" break; case YYSYMBOL_member_declarator: /* member_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 2973 "ctlib/y_parser.c" break; case YYSYMBOL_enumerator_list: /* enumerator_list */ #line 543 "ctlib/parser.y" { if (((*yyvaluep).list)) { CT_DEBUG(PARSER, ("deleting enumerator list @ %p", ((*yyvaluep).list))); LL_destroy(((*yyvaluep).list), (LLDestroyFunc) enum_delete); } } #line 2985 "ctlib/y_parser.c" break; case YYSYMBOL_identifier_or_typedef_name: /* identifier_or_typedef_name */ #line 412 "ctlib/parser.y" { if (((*yyvaluep).identifier)) { CT_DEBUG(PARSER, ("deleting node @ %p", ((*yyvaluep).identifier))); HN_delete(((*yyvaluep).identifier)); } } #line 2997 "ctlib/y_parser.c" break; case YYSYMBOL_declarator: /* declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3009 "ctlib/y_parser.c" break; case YYSYMBOL_typedef_declarator: /* typedef_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3021 "ctlib/y_parser.c" break; case YYSYMBOL_parameter_typedef_declarator: /* parameter_typedef_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3033 "ctlib/y_parser.c" break; case YYSYMBOL_clean_typedef_declarator: /* clean_typedef_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3045 "ctlib/y_parser.c" break; case YYSYMBOL_clean_postfix_typedef_declarator: /* clean_postfix_typedef_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3057 "ctlib/y_parser.c" break; case YYSYMBOL_paren_typedef_declarator: /* paren_typedef_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3069 "ctlib/y_parser.c" break; case YYSYMBOL_paren_postfix_typedef_declarator: /* paren_postfix_typedef_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3081 "ctlib/y_parser.c" break; case YYSYMBOL_simple_paren_typedef_declarator: /* simple_paren_typedef_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3093 "ctlib/y_parser.c" break; case YYSYMBOL_identifier_declarator: /* identifier_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3105 "ctlib/y_parser.c" break; case YYSYMBOL_unary_identifier_declarator: /* unary_identifier_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3117 "ctlib/y_parser.c" break; case YYSYMBOL_postfix_identifier_declarator: /* postfix_identifier_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3129 "ctlib/y_parser.c" break; case YYSYMBOL_paren_identifier_declarator: /* paren_identifier_declarator */ #line 481 "ctlib/parser.y" { if (((*yyvaluep).pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", ((*yyvaluep).pDecl))); decl_delete(((*yyvaluep).pDecl)); } } #line 3141 "ctlib/y_parser.c" break; case YYSYMBOL_postfixing_abstract_declarator: /* postfixing_abstract_declarator */ #line 551 "ctlib/parser.y" { if (((*yyvaluep).list)) { CT_DEBUG(PARSER, ("deleting array list @ %p", ((*yyvaluep).list))); LL_destroy(((*yyvaluep).list), (LLDestroyFunc) value_delete); } } #line 3153 "ctlib/y_parser.c" break; case YYSYMBOL_array_abstract_declarator: /* array_abstract_declarator */ #line 551 "ctlib/parser.y" { if (((*yyvaluep).list)) { CT_DEBUG(PARSER, ("deleting array list @ %p", ((*yyvaluep).list))); LL_destroy(((*yyvaluep).list), (LLDestroyFunc) value_delete); } } #line 3165 "ctlib/y_parser.c" break; default: break; } YY_IGNORE_MAYBE_UNINITIALIZED_END } /*----------. | yyparse. | `----------*/ int yyparse (ParserState *pState) { /* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ YY_INITIAL_VALUE (static YYSTYPE yyval_default;) YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Number of syntax errors so far. */ int yynerrs = 0; yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus = 0; /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ YYPTRDIFF_T yystacksize = YYINITDEPTH; /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; yy_state_t *yyss = yyssa; yy_state_t *yyssp = yyss; /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs = yyvsa; YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; /*--------------------------------------------------------------------. | yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); YY_IGNORE_USELESS_CAST_BEGIN *yyssp = YY_CAST (yy_state_t, yystate); YY_IGNORE_USELESS_CAST_END YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * YYSIZEOF (*yyssp), &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yy_state_t *yyss1 = yyss; union yyalloc *yyptr = YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YY_IGNORE_USELESS_CAST_BEGIN YYDPRINTF ((stderr, "Stack size increased to %ld\n", YY_CAST (long, yystacksize))); YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (&yylval, pState); } if (yychar <= YYEOF) { yychar = YYEOF; yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else if (yychar == YYerror) { /* The scanner already issued an error message, process directly to error recovery. But do not keep the error token as lookahead, it is too special and may lead us to an endless loop in error recovery. */ yychar = YYUNDEF; yytoken = YYSYMBOL_YYerror; goto yyerrlab1; } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Discard the shifted token. */ yychar = YYEMPTY; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 3: /* string_literal_list: string_literal_list STRING_LITERAL */ #line 622 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-1].value), +, (yyvsp[0].value)); } #line 3444 "ctlib/y_parser.c" break; case 17: /* asm_operand: '[' IDENTIFIER ']' STRING_LITERAL '(' comma_expression ')' */ #line 667 "ctlib/parser.y" { if ((yyvsp[-5].identifier)) HN_delete((yyvsp[-5].identifier)); } #line 3453 "ctlib/y_parser.c" break; case 20: /* primary_expression: IDENTIFIER */ #line 681 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); if ((yyvsp[0].identifier)) { Enumerator *pEnum = HT_get(PSTATE->pCPI->htEnumerators, (yyvsp[0].identifier)->key, (yyvsp[0].identifier)->keylen, (yyvsp[0].identifier)->hash); if (pEnum) { CT_DEBUG(CLEXER, ("enum found!")); (yyval.value) = pEnum->value; } HN_delete((yyvsp[0].identifier)); } } #line 3472 "ctlib/y_parser.c" break; case 22: /* primary_expression: string_literal_list */ #line 696 "ctlib/parser.y" { (yyval.value) = (yyvsp[0].value); (yyval.value).iv++; } #line 3478 "ctlib/y_parser.c" break; case 23: /* primary_expression: '(' comma_expression ')' */ #line 697 "ctlib/parser.y" { (yyval.value) = (yyvsp[-1].value); } #line 3484 "ctlib/y_parser.c" break; case 25: /* postfix_expression: postfix_expression '[' comma_expression ']' */ #line 708 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3490 "ctlib/y_parser.c" break; case 26: /* postfix_expression: postfix_expression '(' ')' */ #line 709 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3496 "ctlib/y_parser.c" break; case 27: /* postfix_expression: postfix_expression '(' argument_expression_list ')' */ #line 710 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3502 "ctlib/y_parser.c" break; case 28: /* $@1: %empty */ #line 711 "ctlib/parser.y" {} #line 3508 "ctlib/y_parser.c" break; case 29: /* postfix_expression: postfix_expression $@1 '.' member_name */ #line 711 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3514 "ctlib/y_parser.c" break; case 30: /* $@2: %empty */ #line 712 "ctlib/parser.y" {} #line 3520 "ctlib/y_parser.c" break; case 31: /* postfix_expression: postfix_expression $@2 PTR_OP member_name */ #line 712 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3526 "ctlib/y_parser.c" break; case 32: /* postfix_expression: postfix_expression INC_OP */ #line 713 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3532 "ctlib/y_parser.c" break; case 33: /* postfix_expression: postfix_expression DEC_OP */ #line 714 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3538 "ctlib/y_parser.c" break; case 34: /* postfix_expression: '(' type_name ')' '{' initializer_list comma_opt '}' */ #line 715 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3544 "ctlib/y_parser.c" break; case 35: /* member_name: IDENTIFIER */ #line 719 "ctlib/parser.y" { if((yyvsp[0].identifier)) HN_delete((yyvsp[0].identifier)); } #line 3550 "ctlib/y_parser.c" break; case 36: /* member_name: TYPE_NAME */ #line 720 "ctlib/parser.y" {} #line 3556 "ctlib/y_parser.c" break; case 37: /* argument_expression_list: assignment_expression */ #line 724 "ctlib/parser.y" {} #line 3562 "ctlib/y_parser.c" break; case 38: /* argument_expression_list: argument_expression_list ',' assignment_expression */ #line 725 "ctlib/parser.y" {} #line 3568 "ctlib/y_parser.c" break; case 40: /* unary_expression: INC_OP unary_expression */ #line 730 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3574 "ctlib/y_parser.c" break; case 41: /* unary_expression: DEC_OP unary_expression */ #line 731 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3580 "ctlib/y_parser.c" break; case 42: /* unary_expression: unary_operator cast_expression */ #line 733 "ctlib/parser.y" { switch( (yyvsp[-1].oper) ) { case '-' : UNARY_OP((yyval.value), -, (yyvsp[0].value)); break; case '~' : UNARY_OP((yyval.value), ~, (yyvsp[0].value)); break; case '!' : UNARY_OP((yyval.value), !, (yyvsp[0].value)); break; case '+' : (yyval.value) = (yyvsp[0].value); break; case '*' : case '&' : (yyval.value) = (yyvsp[0].value); (yyval.value).flags |= V_IS_UNSAFE_PTROP; break; default: UNDEF_VAL((yyval.value)); break; } } #line 3602 "ctlib/y_parser.c" break; case 43: /* unary_expression: SIZEOF_TOK unary_expression */ #line 750 "ctlib/parser.y" { (yyval.value) = (yyvsp[0].value); } #line 3608 "ctlib/y_parser.c" break; case 44: /* unary_expression: SIZEOF_TOK '(' type_name ')' */ #line 751 "ctlib/parser.y" { (yyval.value) = (yyvsp[-1].value); } #line 3614 "ctlib/y_parser.c" break; case 45: /* unary_operator: '&' */ #line 755 "ctlib/parser.y" { (yyval.oper) = '&'; } #line 3620 "ctlib/y_parser.c" break; case 46: /* unary_operator: '*' */ #line 756 "ctlib/parser.y" { (yyval.oper) = '*'; } #line 3626 "ctlib/y_parser.c" break; case 47: /* unary_operator: '+' */ #line 757 "ctlib/parser.y" { (yyval.oper) = '+'; } #line 3632 "ctlib/y_parser.c" break; case 48: /* unary_operator: '-' */ #line 758 "ctlib/parser.y" { (yyval.oper) = '-'; } #line 3638 "ctlib/y_parser.c" break; case 49: /* unary_operator: '~' */ #line 759 "ctlib/parser.y" { (yyval.oper) = '~'; } #line 3644 "ctlib/y_parser.c" break; case 50: /* unary_operator: '!' */ #line 760 "ctlib/parser.y" { (yyval.oper) = '!'; } #line 3650 "ctlib/y_parser.c" break; case 52: /* cast_expression: '(' type_name ')' cast_expression */ #line 765 "ctlib/parser.y" { (yyval.value) = (yyvsp[0].value); (yyval.value).flags |= V_IS_UNSAFE_CAST; } #line 3656 "ctlib/y_parser.c" break; case 54: /* multiplicative_expression: multiplicative_expression '*' cast_expression */ #line 771 "ctlib/parser.y" { BINARY_OP( (yyval.value), (yyvsp[-2].value), *, (yyvsp[0].value) ); } #line 3662 "ctlib/y_parser.c" break; case 55: /* multiplicative_expression: multiplicative_expression '/' cast_expression */ #line 773 "ctlib/parser.y" { if ((yyvsp[0].value).iv == 0) UNDEF_VAL((yyval.value)); else BINARY_OP((yyval.value), (yyvsp[-2].value), /, (yyvsp[0].value)); } #line 3673 "ctlib/y_parser.c" break; case 56: /* multiplicative_expression: multiplicative_expression '%' cast_expression */ #line 780 "ctlib/parser.y" { if ((yyvsp[0].value).iv == 0) UNDEF_VAL((yyval.value)); else BINARY_OP((yyval.value), (yyvsp[-2].value), %, (yyvsp[0].value)); } #line 3684 "ctlib/y_parser.c" break; case 58: /* additive_expression: additive_expression '+' multiplicative_expression */ #line 791 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), +, (yyvsp[0].value)); } #line 3690 "ctlib/y_parser.c" break; case 59: /* additive_expression: additive_expression '-' multiplicative_expression */ #line 793 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), -, (yyvsp[0].value)); } #line 3696 "ctlib/y_parser.c" break; case 61: /* shift_expression: shift_expression LEFT_OP additive_expression */ #line 799 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), <<, (yyvsp[0].value)); } #line 3702 "ctlib/y_parser.c" break; case 62: /* shift_expression: shift_expression RIGHT_OP additive_expression */ #line 801 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), >>, (yyvsp[0].value)); } #line 3708 "ctlib/y_parser.c" break; case 64: /* relational_expression: relational_expression '<' shift_expression */ #line 807 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), <, (yyvsp[0].value)); } #line 3714 "ctlib/y_parser.c" break; case 65: /* relational_expression: relational_expression '>' shift_expression */ #line 809 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), >, (yyvsp[0].value)); } #line 3720 "ctlib/y_parser.c" break; case 66: /* relational_expression: relational_expression LE_OP shift_expression */ #line 811 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), <=, (yyvsp[0].value)); } #line 3726 "ctlib/y_parser.c" break; case 67: /* relational_expression: relational_expression GE_OP shift_expression */ #line 813 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), >=, (yyvsp[0].value)); } #line 3732 "ctlib/y_parser.c" break; case 69: /* equality_expression: equality_expression EQ_OP relational_expression */ #line 819 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), ==, (yyvsp[0].value)); } #line 3738 "ctlib/y_parser.c" break; case 70: /* equality_expression: equality_expression NE_OP relational_expression */ #line 821 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), !=, (yyvsp[0].value)); } #line 3744 "ctlib/y_parser.c" break; case 72: /* AND_expression: AND_expression '&' equality_expression */ #line 827 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), &, (yyvsp[0].value)); } #line 3750 "ctlib/y_parser.c" break; case 74: /* exclusive_OR_expression: exclusive_OR_expression '^' AND_expression */ #line 833 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), ^, (yyvsp[0].value)); } #line 3756 "ctlib/y_parser.c" break; case 76: /* inclusive_OR_expression: inclusive_OR_expression '|' exclusive_OR_expression */ #line 839 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), |, (yyvsp[0].value)); } #line 3762 "ctlib/y_parser.c" break; case 78: /* logical_AND_expression: logical_AND_expression AND_OP inclusive_OR_expression */ #line 845 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), &&, (yyvsp[0].value)); } #line 3768 "ctlib/y_parser.c" break; case 80: /* logical_OR_expression: logical_OR_expression OR_OP logical_AND_expression */ #line 851 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[-2].value), ||, (yyvsp[0].value)); } #line 3774 "ctlib/y_parser.c" break; case 82: /* conditional_expression: logical_OR_expression '?' comma_expression ':' conditional_expression */ #line 857 "ctlib/parser.y" { (yyval.value) = (yyvsp[-4].value).iv ? (yyvsp[-2].value) : (yyvsp[0].value); (yyval.value).flags |= (yyvsp[-4].value).flags; } #line 3780 "ctlib/y_parser.c" break; case 84: /* assignment_expression: unary_expression assignment_operator assignment_expression */ #line 862 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3786 "ctlib/y_parser.c" break; case 85: /* assignment_operator: '=' */ #line 866 "ctlib/parser.y" {} #line 3792 "ctlib/y_parser.c" break; case 86: /* assignment_operator: MUL_ASSIGN */ #line 867 "ctlib/parser.y" {} #line 3798 "ctlib/y_parser.c" break; case 87: /* assignment_operator: DIV_ASSIGN */ #line 868 "ctlib/parser.y" {} #line 3804 "ctlib/y_parser.c" break; case 88: /* assignment_operator: MOD_ASSIGN */ #line 869 "ctlib/parser.y" {} #line 3810 "ctlib/y_parser.c" break; case 89: /* assignment_operator: ADD_ASSIGN */ #line 870 "ctlib/parser.y" {} #line 3816 "ctlib/y_parser.c" break; case 90: /* assignment_operator: SUB_ASSIGN */ #line 871 "ctlib/parser.y" {} #line 3822 "ctlib/y_parser.c" break; case 91: /* assignment_operator: LEFT_ASSIGN */ #line 872 "ctlib/parser.y" {} #line 3828 "ctlib/y_parser.c" break; case 92: /* assignment_operator: RIGHT_ASSIGN */ #line 873 "ctlib/parser.y" {} #line 3834 "ctlib/y_parser.c" break; case 93: /* assignment_operator: AND_ASSIGN */ #line 874 "ctlib/parser.y" {} #line 3840 "ctlib/y_parser.c" break; case 94: /* assignment_operator: XOR_ASSIGN */ #line 875 "ctlib/parser.y" {} #line 3846 "ctlib/y_parser.c" break; case 95: /* assignment_operator: OR_ASSIGN */ #line 876 "ctlib/parser.y" {} #line 3852 "ctlib/y_parser.c" break; case 96: /* assignment_expression_opt: %empty */ #line 880 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 3858 "ctlib/y_parser.c" break; case 99: /* comma_expression: comma_expression ',' assignment_expression */ #line 885 "ctlib/parser.y" { (yyval.value) = (yyvsp[0].value); } #line 3864 "ctlib/y_parser.c" break; case 102: /* comma_expression_opt: comma_expression */ #line 895 "ctlib/parser.y" {} #line 3870 "ctlib/y_parser.c" break; case 103: /* declaration: sue_declaration_specifier ';' */ #line 933 "ctlib/parser.y" {} #line 3876 "ctlib/y_parser.c" break; case 104: /* declaration: sue_type_specifier ';' */ #line 934 "ctlib/parser.y" {} #line 3882 "ctlib/y_parser.c" break; case 105: /* declaration: declaring_list ';' */ #line 935 "ctlib/parser.y" {} #line 3888 "ctlib/y_parser.c" break; case 106: /* declaration: default_declaring_list ';' */ #line 936 "ctlib/parser.y" {} #line 3894 "ctlib/y_parser.c" break; case 107: /* default_declaring_list: declaration_qualifier_list identifier_declarator asm_string_opt initializer_opt */ #line 944 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pTypedefList) = NULL; else { if ((yyvsp[-3].uval) & T_TYPEDEF) { TypeSpec ts; ts.tflags = (yyvsp[-3].uval); ts.ptr = NULL; if ((ts.tflags & ANY_TYPE_NAME) == 0) ts.tflags |= T_INT; (yyval.pTypedefList) = typedef_list_new(ts, LL_new()); LL_push(PSTATE->pCPI->typedef_lists, (yyval.pTypedefList)); MAKE_TYPEDEF((yyval.pTypedefList), (yyvsp[-2].pDecl)); } else { (yyval.pTypedefList) = NULL; decl_delete((yyvsp[-2].pDecl)); } } } #line 3922 "ctlib/y_parser.c" break; case 108: /* default_declaring_list: type_qualifier_list identifier_declarator asm_string_opt initializer_opt */ #line 968 "ctlib/parser.y" { (yyval.pTypedefList) = NULL; if ((yyvsp[-2].pDecl)) decl_delete((yyvsp[-2].pDecl)); } #line 3932 "ctlib/y_parser.c" break; case 109: /* default_declaring_list: default_declaring_list ',' identifier_declarator asm_string_opt initializer_opt */ #line 974 "ctlib/parser.y" { (yyval.pTypedefList) = (yyvsp[-4].pTypedefList); if ((yyval.pTypedefList)) MAKE_TYPEDEF((yyval.pTypedefList), (yyvsp[-2].pDecl)); else if((yyvsp[-2].pDecl)) decl_delete((yyvsp[-2].pDecl)); } #line 3944 "ctlib/y_parser.c" break; case 110: /* declaring_list: declaration_specifier declarator asm_string_opt initializer_opt */ #line 985 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pTypedefList) = NULL; else { if ((yyvsp[-3].tspec).tflags & T_TYPEDEF) { if (((yyvsp[-3].tspec).tflags & ANY_TYPE_NAME) == 0) (yyvsp[-3].tspec).tflags |= T_INT; ctt_refcount_inc((yyvsp[-3].tspec).ptr); (yyval.pTypedefList) = typedef_list_new((yyvsp[-3].tspec), LL_new()); LL_push(PSTATE->pCPI->typedef_lists, (yyval.pTypedefList)); MAKE_TYPEDEF((yyval.pTypedefList), (yyvsp[-2].pDecl)); } else { (yyval.pTypedefList) = NULL; decl_delete((yyvsp[-2].pDecl)); } } } #line 3970 "ctlib/y_parser.c" break; case 111: /* declaring_list: type_specifier declarator asm_string_opt initializer_opt */ #line 1007 "ctlib/parser.y" { (yyval.pTypedefList) = NULL; if ((yyvsp[-2].pDecl)) decl_delete((yyvsp[-2].pDecl)); } #line 3980 "ctlib/y_parser.c" break; case 112: /* declaring_list: declaring_list ',' declarator asm_string_opt initializer_opt */ #line 1013 "ctlib/parser.y" { (yyval.pTypedefList) = (yyvsp[-4].pTypedefList); if ((yyval.pTypedefList)) MAKE_TYPEDEF((yyval.pTypedefList), (yyvsp[-2].pDecl)); else if ((yyvsp[-2].pDecl)) decl_delete((yyvsp[-2].pDecl)); } #line 3992 "ctlib/y_parser.c" break; case 113: /* declaration_specifier: basic_declaration_specifier */ #line 1025 "ctlib/parser.y" { (yyval.tspec).ptr = NULL; (yyval.tspec).tflags = (yyvsp[0].uval); } #line 4001 "ctlib/y_parser.c" break; case 116: /* type_specifier: basic_type_specifier */ #line 1036 "ctlib/parser.y" { (yyval.tspec).ptr = NULL; (yyval.tspec).tflags = (yyvsp[0].uval); } #line 4010 "ctlib/y_parser.c" break; case 120: /* declaration_qualifier_list: type_qualifier_list storage_class */ #line 1048 "ctlib/parser.y" { (yyval.uval) = (yyvsp[0].uval); } #line 4016 "ctlib/y_parser.c" break; case 121: /* declaration_qualifier_list: declaration_qualifier_list declaration_qualifier */ #line 1049 "ctlib/parser.y" { (yyval.uval) = (yyvsp[-1].uval) | (yyvsp[0].uval); } #line 4022 "ctlib/y_parser.c" break; case 127: /* declaration_qualifier: type_qualifier */ #line 1064 "ctlib/parser.y" { (yyval.uval) = 0; } #line 4028 "ctlib/y_parser.c" break; case 131: /* basic_declaration_specifier: declaration_qualifier_list basic_type_name */ #line 1074 "ctlib/parser.y" { (yyval.uval) = LLC_OR((yyvsp[-1].uval), (yyvsp[0].uval)); } #line 4034 "ctlib/y_parser.c" break; case 132: /* basic_declaration_specifier: basic_type_specifier storage_class */ #line 1075 "ctlib/parser.y" { (yyval.uval) = LLC_OR((yyvsp[-1].uval), (yyvsp[0].uval)); } #line 4040 "ctlib/y_parser.c" break; case 133: /* basic_declaration_specifier: basic_declaration_specifier declaration_qualifier */ #line 1076 "ctlib/parser.y" { (yyval.uval) = LLC_OR((yyvsp[-1].uval), (yyvsp[0].uval)); } #line 4046 "ctlib/y_parser.c" break; case 134: /* basic_declaration_specifier: basic_declaration_specifier basic_type_name */ #line 1077 "ctlib/parser.y" { (yyval.uval) = LLC_OR((yyvsp[-1].uval), (yyvsp[0].uval)); } #line 4052 "ctlib/y_parser.c" break; case 136: /* basic_type_specifier: type_qualifier_list basic_type_name */ #line 1082 "ctlib/parser.y" { (yyval.uval) = (yyvsp[0].uval); } #line 4058 "ctlib/y_parser.c" break; case 137: /* basic_type_specifier: basic_type_specifier type_qualifier */ #line 1083 "ctlib/parser.y" { (yyval.uval) = (yyvsp[-1].uval); } #line 4064 "ctlib/y_parser.c" break; case 138: /* basic_type_specifier: basic_type_specifier basic_type_name */ #line 1084 "ctlib/parser.y" { (yyval.uval) = LLC_OR((yyvsp[-1].uval), (yyvsp[0].uval)); } #line 4070 "ctlib/y_parser.c" break; case 139: /* sue_declaration_specifier: declaration_qualifier_list elaborated_type_name */ #line 1089 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[0].tspec).ptr; (yyval.tspec).tflags = (yyvsp[0].tspec).tflags | (yyvsp[-1].uval); } #line 4079 "ctlib/y_parser.c" break; case 140: /* sue_declaration_specifier: sue_type_specifier storage_class */ #line 1094 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[-1].tspec).ptr; (yyval.tspec).tflags = (yyvsp[-1].tspec).tflags | (yyvsp[0].uval); } #line 4088 "ctlib/y_parser.c" break; case 141: /* sue_declaration_specifier: sue_declaration_specifier declaration_qualifier */ #line 1099 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[-1].tspec).ptr; (yyval.tspec).tflags = (yyvsp[-1].tspec).tflags | (yyvsp[0].uval); } #line 4097 "ctlib/y_parser.c" break; case 145: /* enum_type_specifier: type_qualifier_list enum_name */ #line 1112 "ctlib/parser.y" { (yyval.tspec) = (yyvsp[0].tspec); } #line 4103 "ctlib/y_parser.c" break; case 146: /* enum_type_specifier: enum_type_specifier type_qualifier */ #line 1113 "ctlib/parser.y" { (yyval.tspec) = (yyvsp[-1].tspec); } #line 4109 "ctlib/y_parser.c" break; case 148: /* su_type_specifier: type_qualifier_list aggregate_name */ #line 1118 "ctlib/parser.y" { (yyval.tspec) = (yyvsp[0].tspec); } #line 4115 "ctlib/y_parser.c" break; case 149: /* su_type_specifier: su_type_specifier type_qualifier */ #line 1119 "ctlib/parser.y" { (yyval.tspec) = (yyvsp[-1].tspec); } #line 4121 "ctlib/y_parser.c" break; case 152: /* typedef_declaration_specifier: typedef_type_specifier storage_class */ #line 1128 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[-1].tspec).ptr; (yyval.tspec).tflags = (yyvsp[-1].tspec).tflags | (yyvsp[0].uval); } #line 4130 "ctlib/y_parser.c" break; case 153: /* typedef_declaration_specifier: declaration_qualifier_list TYPE_NAME */ #line 1133 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[0].pTypedef); (yyval.tspec).tflags = T_TYPE | (yyvsp[-1].uval); } #line 4139 "ctlib/y_parser.c" break; case 154: /* typedef_declaration_specifier: typedef_declaration_specifier declaration_qualifier */ #line 1138 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[-1].tspec).ptr; (yyval.tspec).tflags = (yyvsp[-1].tspec).tflags | (yyvsp[0].uval); } #line 4148 "ctlib/y_parser.c" break; case 155: /* typedef_type_specifier: TYPE_NAME */ #line 1145 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[0].pTypedef); (yyval.tspec).tflags = T_TYPE; } #line 4154 "ctlib/y_parser.c" break; case 156: /* typedef_type_specifier: type_qualifier_list TYPE_NAME */ #line 1146 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[0].pTypedef); (yyval.tspec).tflags = T_TYPE; } #line 4160 "ctlib/y_parser.c" break; case 157: /* typedef_type_specifier: typedef_type_specifier type_qualifier */ #line 1147 "ctlib/parser.y" { (yyval.tspec) = (yyvsp[-1].tspec); } #line 4166 "ctlib/y_parser.c" break; case 158: /* storage_class: TYPEDEF_TOK */ #line 1151 "ctlib/parser.y" { (yyval.uval) = T_TYPEDEF; } #line 4172 "ctlib/y_parser.c" break; case 159: /* storage_class: EXTERN_TOK */ #line 1152 "ctlib/parser.y" { (yyval.uval) = 0; } #line 4178 "ctlib/y_parser.c" break; case 160: /* storage_class: STATIC_TOK */ #line 1153 "ctlib/parser.y" { (yyval.uval) = 0; } #line 4184 "ctlib/y_parser.c" break; case 161: /* storage_class: AUTO_TOK */ #line 1154 "ctlib/parser.y" { (yyval.uval) = 0; } #line 4190 "ctlib/y_parser.c" break; case 162: /* storage_class: REGISTER_TOK */ #line 1155 "ctlib/parser.y" { (yyval.uval) = 0; } #line 4196 "ctlib/y_parser.c" break; case 163: /* storage_class: INLINE_TOK */ #line 1156 "ctlib/parser.y" { (yyval.uval) = 0; } #line 4202 "ctlib/y_parser.c" break; case 164: /* basic_type_name: INT_TOK */ #line 1160 "ctlib/parser.y" { (yyval.uval) = T_INT; } #line 4208 "ctlib/y_parser.c" break; case 165: /* basic_type_name: CHAR_TOK */ #line 1161 "ctlib/parser.y" { (yyval.uval) = T_CHAR; } #line 4214 "ctlib/y_parser.c" break; case 166: /* basic_type_name: SHORT_TOK */ #line 1162 "ctlib/parser.y" { (yyval.uval) = T_SHORT; } #line 4220 "ctlib/y_parser.c" break; case 167: /* basic_type_name: LONG_TOK */ #line 1163 "ctlib/parser.y" { (yyval.uval) = T_LONG; } #line 4226 "ctlib/y_parser.c" break; case 168: /* basic_type_name: FLOAT_TOK */ #line 1164 "ctlib/parser.y" { (yyval.uval) = T_FLOAT; } #line 4232 "ctlib/y_parser.c" break; case 169: /* basic_type_name: DOUBLE_TOK */ #line 1165 "ctlib/parser.y" { (yyval.uval) = T_DOUBLE; } #line 4238 "ctlib/y_parser.c" break; case 170: /* basic_type_name: SIGNED_TOK */ #line 1166 "ctlib/parser.y" { (yyval.uval) = T_SIGNED; } #line 4244 "ctlib/y_parser.c" break; case 171: /* basic_type_name: UNSIGNED_TOK */ #line 1167 "ctlib/parser.y" { (yyval.uval) = T_UNSIGNED; } #line 4250 "ctlib/y_parser.c" break; case 172: /* basic_type_name: VOID_TOK */ #line 1168 "ctlib/parser.y" { (yyval.uval) = T_VOID; } #line 4256 "ctlib/y_parser.c" break; case 175: /* aggregate_name: aggregate_key_context '{' member_declaration_list_opt '}' */ #line 1178 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; } else { Struct *pStruct; pStruct = struct_new(NULL, 0, (yyvsp[-3].context).uval, pragma_parser_get_pack(PSTATE->pragma), (yyvsp[-1].list)); pStruct->context = (yyvsp[-3].context).ctx; LL_push(PSTATE->pCPI->structs, pStruct); (yyval.tspec).tflags = (yyvsp[-3].context).uval; (yyval.tspec).ptr = pStruct; } } #line 4277 "ctlib/y_parser.c" break; case 176: /* aggregate_name: aggregate_key_context identifier_or_typedef_name '{' member_declaration_list_opt '}' */ #line 1195 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { Struct *pStruct = HT_get(PSTATE->pCPI->htStructs, (yyvsp[-3].identifier)->key, (yyvsp[-3].identifier)->keylen, (yyvsp[-3].identifier)->hash); if (pStruct == NULL) { pStruct = struct_new((yyvsp[-3].identifier)->key, (yyvsp[-3].identifier)->keylen, (yyvsp[-4].context).uval, pragma_parser_get_pack(PSTATE->pragma), (yyvsp[-1].list)); pStruct->context = (yyvsp[-4].context).ctx; LL_push(PSTATE->pCPI->structs, pStruct); HT_storenode(PSTATE->pCPI->htStructs, (yyvsp[-3].identifier), pStruct); } else { DELETE_NODE((yyvsp[-3].identifier)); if (pStruct->declarations == NULL) { pStruct->context = (yyvsp[-4].context).ctx; pStruct->declarations = (yyvsp[-1].list); pStruct->pack = pragma_parser_get_pack(PSTATE->pragma); } else LL_destroy((yyvsp[-1].list), (LLDestroyFunc) structdecl_delete); } (yyval.tspec).tflags = (yyvsp[-4].context).uval; (yyval.tspec).ptr = pStruct; } } #line 4317 "ctlib/y_parser.c" break; case 177: /* aggregate_name: aggregate_key_context identifier_or_typedef_name */ #line 1231 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { Struct *pStruct = HT_get(PSTATE->pCPI->htStructs, (yyvsp[0].identifier)->key, (yyvsp[0].identifier)->keylen, (yyvsp[0].identifier)->hash); if (pStruct == NULL) { pStruct = struct_new((yyvsp[0].identifier)->key, (yyvsp[0].identifier)->keylen, (yyvsp[-1].context).uval, 0, NULL); pStruct->context = (yyvsp[-1].context).ctx; LL_push(PSTATE->pCPI->structs, pStruct); HT_storenode(PSTATE->pCPI->htStructs, (yyvsp[0].identifier), pStruct); } else DELETE_NODE((yyvsp[0].identifier)); (yyval.tspec).tflags = (yyvsp[-1].context).uval; (yyval.tspec).ptr = pStruct; } } #line 4347 "ctlib/y_parser.c" break; case 178: /* aggregate_key_context: aggregate_key */ #line 1260 "ctlib/parser.y" { (yyval.context).uval = (yyvsp[0].uval); (yyval.context).ctx.pFI = PSTATE->pFI; (yyval.context).ctx.line = PSTATE->pLexer->ctok->line; } #line 4357 "ctlib/y_parser.c" break; case 179: /* aggregate_key: STRUCT_TOK */ #line 1268 "ctlib/parser.y" { (yyval.uval) = T_STRUCT; } #line 4363 "ctlib/y_parser.c" break; case 180: /* aggregate_key: UNION_TOK */ #line 1269 "ctlib/parser.y" { (yyval.uval) = T_UNION; } #line 4369 "ctlib/y_parser.c" break; case 181: /* member_declaration_list_opt: %empty */ #line 1273 "ctlib/parser.y" { (yyval.list) = IS_LOCAL ? NULL : LL_new(); } #line 4375 "ctlib/y_parser.c" break; case 183: /* member_declaration_list: member_declaration */ #line 1279 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { ctt_refcount_inc((yyvsp[0].pStructDecl)->type.ptr); (yyval.list) = LL_new(); LL_push((yyval.list), (yyvsp[0].pStructDecl)); } } #line 4390 "ctlib/y_parser.c" break; case 184: /* member_declaration_list: member_declaration_list member_declaration */ #line 1290 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { ctt_refcount_inc((yyvsp[0].pStructDecl)->type.ptr); (yyval.list) = (yyvsp[-1].list); LL_push((yyval.list), (yyvsp[0].pStructDecl)); } } #line 4405 "ctlib/y_parser.c" break; case 187: /* unnamed_su_declaration: sut_type_specifier */ #line 1308 "ctlib/parser.y" { (yyval.pStructDecl) = IS_LOCAL ? NULL : structdecl_new((yyvsp[0].tspec), NULL); } #line 4411 "ctlib/y_parser.c" break; case 188: /* member_declaring_list: type_specifier member_declarator */ #line 1313 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pStructDecl) = NULL; else { if (((yyvsp[-1].tspec).tflags & ANY_TYPE_NAME) == 0) (yyvsp[-1].tspec).tflags |= T_INT; (yyval.pStructDecl) = structdecl_new((yyvsp[-1].tspec), LL_new()); if ((yyvsp[0].pDecl)) LL_push((yyval.pStructDecl)->declarators, (yyvsp[0].pDecl)); } } #line 4428 "ctlib/y_parser.c" break; case 189: /* member_declaring_list: member_declaring_list ',' member_declarator */ #line 1326 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pStructDecl) = NULL; else { (yyval.pStructDecl) = (yyvsp[-2].pStructDecl); if ((yyvsp[0].pDecl)) LL_push((yyval.pStructDecl)->declarators, (yyvsp[0].pDecl)); } } #line 4443 "ctlib/y_parser.c" break; case 190: /* member_declarator: declarator bit_field_size_opt */ #line 1340 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pDecl) = NULL; else { (yyval.pDecl) = (yyvsp[-1].pDecl); if (((yyvsp[0].value).flags & V_IS_UNDEF) == 0) { if ((yyvsp[0].value).iv <= 0) { char *msg; AllocF(char *, msg, 80 + CTT_IDLEN((yyvsp[-1].pDecl))); sprintf(msg, "%s width for bit-field '%s'", (yyvsp[0].value).iv < 0 ? "negative" : "zero", (yyvsp[-1].pDecl)->identifier); decl_delete((yyvsp[-1].pDecl)); yyerror(pState, msg); Free(msg); YYERROR; } (yyval.pDecl)->bitfield_flag = 1; (yyval.pDecl)->ext.bitfield.bits = (unsigned char) (yyvsp[0].value).iv; } } } #line 4474 "ctlib/y_parser.c" break; case 191: /* member_declarator: bit_field_size */ #line 1367 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pDecl) = NULL; else { if ((yyvsp[0].value).iv < 0) { yyerror(pState, "negative width for bit-field"); YYERROR; } (yyval.pDecl) = decl_new("", 0); (yyval.pDecl)->bitfield_flag = 1; (yyval.pDecl)->ext.bitfield.bits = (unsigned char) (yyvsp[0].value).iv; } } #line 4495 "ctlib/y_parser.c" break; case 192: /* bit_field_size_opt: %empty */ #line 1386 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); } #line 4501 "ctlib/y_parser.c" break; case 194: /* bit_field_size: ':' constant_expression */ #line 1391 "ctlib/parser.y" { (yyval.value) = (yyvsp[0].value); } #line 4507 "ctlib/y_parser.c" break; case 195: /* enum_name: enum_key_context '{' enumerator_list comma_opt '}' */ #line 1396 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; LL_destroy((yyvsp[-2].list), (LLDestroyFunc) enum_delete); } else { EnumSpecifier *pEnum = enumspec_new(NULL, 0, (yyvsp[-2].list)); pEnum->context = (yyvsp[-4].context).ctx; LL_push(PSTATE->pCPI->enums, pEnum); (yyval.tspec).tflags = T_ENUM; (yyval.tspec).ptr = pEnum; } } #line 4528 "ctlib/y_parser.c" break; case 196: /* enum_name: enum_key_context identifier_or_typedef_name '{' enumerator_list comma_opt '}' */ #line 1413 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { EnumSpecifier *pEnum = HT_get(PSTATE->pCPI->htEnums, (yyvsp[-4].identifier)->key, (yyvsp[-4].identifier)->keylen, (yyvsp[-4].identifier)->hash); if (pEnum == NULL) { pEnum = enumspec_new((yyvsp[-4].identifier)->key, (yyvsp[-4].identifier)->keylen, (yyvsp[-2].list)); pEnum->context = (yyvsp[-5].context).ctx; LL_push(PSTATE->pCPI->enums, pEnum); HT_storenode(PSTATE->pCPI->htEnums, (yyvsp[-4].identifier), pEnum); } else { DELETE_NODE((yyvsp[-4].identifier)); if (pEnum->enumerators == NULL) { enumspec_update(pEnum, (yyvsp[-2].list)); pEnum->context = (yyvsp[-5].context).ctx; } else LL_destroy((yyvsp[-2].list), (LLDestroyFunc) enum_delete); } (yyval.tspec).tflags = T_ENUM; (yyval.tspec).ptr = pEnum; } } #line 4568 "ctlib/y_parser.c" break; case 197: /* enum_name: enum_key_context identifier_or_typedef_name */ #line 1449 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { EnumSpecifier *pEnum = HT_get(PSTATE->pCPI->htEnums, (yyvsp[0].identifier)->key, (yyvsp[0].identifier)->keylen, (yyvsp[0].identifier)->hash); if (pEnum == NULL) { pEnum = enumspec_new((yyvsp[0].identifier)->key, (yyvsp[0].identifier)->keylen, NULL); pEnum->context = (yyvsp[-1].context).ctx; LL_push(PSTATE->pCPI->enums, pEnum); HT_storenode(PSTATE->pCPI->htEnums, (yyvsp[0].identifier), pEnum); } else { DELETE_NODE((yyvsp[0].identifier)); } (yyval.tspec).tflags = T_ENUM; (yyval.tspec).ptr = pEnum; } } #line 4600 "ctlib/y_parser.c" break; case 198: /* enum_key_context: ENUM_TOK */ #line 1480 "ctlib/parser.y" { (yyval.context).ctx.pFI = PSTATE->pFI; (yyval.context).ctx.line = PSTATE->pLexer->ctok->line; } #line 4609 "ctlib/y_parser.c" break; case 199: /* enumerator_list: enumerator */ #line 1488 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = LL_new(); if ((yyvsp[0].pEnum)->value.flags & V_IS_UNDEF) { (yyvsp[0].pEnum)->value.flags &= ~V_IS_UNDEF; (yyvsp[0].pEnum)->value.iv = 0; } LL_push((yyval.list), (yyvsp[0].pEnum)); } } #line 4628 "ctlib/y_parser.c" break; case 200: /* enumerator_list: enumerator_list ',' enumerator */ #line 1503 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { if ((yyvsp[0].pEnum)->value.flags & V_IS_UNDEF) { Enumerator *pEnum = LL_get((yyvsp[-2].list), -1); (yyvsp[0].pEnum)->value.flags = pEnum->value.flags; (yyvsp[0].pEnum)->value.iv = pEnum->value.iv + 1; } LL_push((yyvsp[-2].list), (yyvsp[0].pEnum)); (yyval.list) = (yyvsp[-2].list); } } #line 4648 "ctlib/y_parser.c" break; case 201: /* enumerator: identifier_or_typedef_name */ #line 1522 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.pEnum) = NULL; /* identifier_or_typedef_name is NULL */ } else { (yyval.pEnum) = enum_new((yyvsp[0].identifier)->key, (yyvsp[0].identifier)->keylen, NULL); HT_storenode(PSTATE->pCPI->htEnumerators, (yyvsp[0].identifier), (yyval.pEnum)); } } #line 4665 "ctlib/y_parser.c" break; case 202: /* enumerator: identifier_or_typedef_name '=' constant_expression */ #line 1535 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.pEnum) = NULL; /* identifier_or_typedef_name is NULL */ } else { (yyval.pEnum) = enum_new((yyvsp[-2].identifier)->key, (yyvsp[-2].identifier)->keylen, &(yyvsp[0].value)); HT_storenode(PSTATE->pCPI->htEnumerators, (yyvsp[-2].identifier), (yyval.pEnum)); } } #line 4682 "ctlib/y_parser.c" break; case 207: /* parameter_declaration: declaration_specifier */ #line 1560 "ctlib/parser.y" {} #line 4688 "ctlib/y_parser.c" break; case 208: /* parameter_declaration: declaration_specifier abstract_declarator */ #line 1561 "ctlib/parser.y" {} #line 4694 "ctlib/y_parser.c" break; case 209: /* parameter_declaration: declaration_specifier identifier_declarator */ #line 1562 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) decl_delete((yyvsp[0].pDecl)); } #line 4700 "ctlib/y_parser.c" break; case 210: /* parameter_declaration: declaration_specifier parameter_typedef_declarator */ #line 1563 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) decl_delete((yyvsp[0].pDecl)); } #line 4706 "ctlib/y_parser.c" break; case 211: /* parameter_declaration: declaration_qualifier_list */ #line 1564 "ctlib/parser.y" {} #line 4712 "ctlib/y_parser.c" break; case 212: /* parameter_declaration: declaration_qualifier_list abstract_declarator */ #line 1565 "ctlib/parser.y" {} #line 4718 "ctlib/y_parser.c" break; case 213: /* parameter_declaration: declaration_qualifier_list identifier_declarator */ #line 1566 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) decl_delete((yyvsp[0].pDecl)); } #line 4724 "ctlib/y_parser.c" break; case 214: /* parameter_declaration: type_specifier */ #line 1567 "ctlib/parser.y" {} #line 4730 "ctlib/y_parser.c" break; case 215: /* parameter_declaration: type_specifier abstract_declarator */ #line 1568 "ctlib/parser.y" {} #line 4736 "ctlib/y_parser.c" break; case 216: /* parameter_declaration: type_specifier identifier_declarator */ #line 1569 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) decl_delete((yyvsp[0].pDecl)); } #line 4742 "ctlib/y_parser.c" break; case 217: /* parameter_declaration: type_specifier parameter_typedef_declarator */ #line 1570 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) decl_delete((yyvsp[0].pDecl)); } #line 4748 "ctlib/y_parser.c" break; case 218: /* parameter_declaration: type_qualifier_list */ #line 1571 "ctlib/parser.y" {} #line 4754 "ctlib/y_parser.c" break; case 219: /* parameter_declaration: type_qualifier_list abstract_declarator */ #line 1572 "ctlib/parser.y" {} #line 4760 "ctlib/y_parser.c" break; case 220: /* parameter_declaration: type_qualifier_list identifier_declarator */ #line 1573 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) decl_delete((yyvsp[0].pDecl)); } #line 4766 "ctlib/y_parser.c" break; case 221: /* identifier_list: IDENTIFIER */ #line 1581 "ctlib/parser.y" { if ((yyvsp[0].identifier)) HN_delete((yyvsp[0].identifier)); } #line 4772 "ctlib/y_parser.c" break; case 222: /* identifier_list: identifier_list ',' IDENTIFIER */ #line 1582 "ctlib/parser.y" { if ((yyvsp[0].identifier)) HN_delete((yyvsp[0].identifier)); } #line 4778 "ctlib/y_parser.c" break; case 224: /* identifier_or_typedef_name: TYPE_NAME */ #line 1588 "ctlib/parser.y" { (yyval.identifier) = IS_LOCAL ? NULL : HN_new((yyvsp[0].pTypedef)->pDecl->identifier, CTT_IDLEN((yyvsp[0].pTypedef)->pDecl), 0); } #line 4786 "ctlib/y_parser.c" break; case 225: /* type_name: type_specifier */ #line 1595 "ctlib/parser.y" { if (!IS_LOCAL) { unsigned size; u_32 flags; (void) PSTATE->pCPC->get_type_info(&PSTATE->pCPC->layout, &(yyvsp[0].tspec), NULL, "sf", &size, &flags); (yyval.value).iv = size; (yyval.value).flags = 0; if (flags & T_UNSAFE_VAL) (yyval.value).flags |= V_IS_UNSAFE; } } #line 4803 "ctlib/y_parser.c" break; case 226: /* type_name: type_specifier abstract_declarator */ #line 1608 "ctlib/parser.y" { if (!IS_LOCAL) { if ((yyvsp[0].absDecl).pointer_flag) { (yyval.value).iv = PSTATE->pCPC->layout.ptr_size * (yyvsp[0].absDecl).multiplicator; (yyval.value).flags = 0; } else { unsigned size; u_32 flags; (void) PSTATE->pCPC->get_type_info(&PSTATE->pCPC->layout, &(yyvsp[-1].tspec), NULL, "sf", &size, &flags); (yyval.value).iv = size * (yyvsp[0].absDecl).multiplicator; (yyval.value).flags = 0; if (flags & T_UNSAFE_VAL) (yyval.value).flags |= V_IS_UNSAFE; } } } #line 4828 "ctlib/y_parser.c" break; case 227: /* type_name: type_qualifier_list */ #line 1629 "ctlib/parser.y" { if (!IS_LOCAL) { (yyval.value).iv = PSTATE->pCPC->layout.int_size; (yyval.value).flags = 0; } } #line 4840 "ctlib/y_parser.c" break; case 228: /* type_name: type_qualifier_list abstract_declarator */ #line 1637 "ctlib/parser.y" { if (!IS_LOCAL) { (yyval.value).iv = (yyvsp[0].absDecl).multiplicator * ((yyvsp[0].absDecl).pointer_flag ? PSTATE->pCPC->layout.ptr_size : PSTATE->pCPC->layout.int_size); (yyval.value).flags = 0; } } #line 4853 "ctlib/y_parser.c" break; case 233: /* initializer: assignment_expression */ #line 1655 "ctlib/parser.y" {} #line 4859 "ctlib/y_parser.c" break; case 241: /* designator: '.' identifier_or_typedef_name */ #line 1675 "ctlib/parser.y" { DELETE_NODE((yyvsp[0].identifier)); } #line 4865 "ctlib/y_parser.c" break; case 251: /* labeled_statement: identifier_or_typedef_name ':' statement */ #line 1695 "ctlib/parser.y" { DELETE_NODE((yyvsp[-2].identifier)); } #line 4871 "ctlib/y_parser.c" break; case 269: /* jump_statement: GOTO_TOK identifier_or_typedef_name ';' */ #line 1734 "ctlib/parser.y" { DELETE_NODE((yyvsp[-1].identifier)); } #line 4877 "ctlib/y_parser.c" break; case 280: /* $@3: %empty */ #line 1760 "ctlib/parser.y" { BEGIN_LOCAL; } #line 4883 "ctlib/y_parser.c" break; case 281: /* function_definition: identifier_declarator $@3 compound_statement */ #line 1761 "ctlib/parser.y" { END_LOCAL; decl_delete((yyvsp[-2].pDecl)); } #line 4889 "ctlib/y_parser.c" break; case 282: /* $@4: %empty */ #line 1762 "ctlib/parser.y" { BEGIN_LOCAL; } #line 4895 "ctlib/y_parser.c" break; case 283: /* function_definition: declaration_specifier identifier_declarator $@4 compound_statement */ #line 1763 "ctlib/parser.y" { END_LOCAL; decl_delete((yyvsp[-2].pDecl)); } #line 4901 "ctlib/y_parser.c" break; case 284: /* $@5: %empty */ #line 1764 "ctlib/parser.y" { BEGIN_LOCAL; } #line 4907 "ctlib/y_parser.c" break; case 285: /* function_definition: type_specifier identifier_declarator $@5 compound_statement */ #line 1765 "ctlib/parser.y" { END_LOCAL; decl_delete((yyvsp[-2].pDecl)); } #line 4913 "ctlib/y_parser.c" break; case 286: /* $@6: %empty */ #line 1766 "ctlib/parser.y" { BEGIN_LOCAL; } #line 4919 "ctlib/y_parser.c" break; case 287: /* function_definition: declaration_qualifier_list identifier_declarator $@6 compound_statement */ #line 1767 "ctlib/parser.y" { END_LOCAL; decl_delete((yyvsp[-2].pDecl)); } #line 4925 "ctlib/y_parser.c" break; case 288: /* $@7: %empty */ #line 1768 "ctlib/parser.y" { BEGIN_LOCAL; } #line 4931 "ctlib/y_parser.c" break; case 289: /* function_definition: type_qualifier_list identifier_declarator $@7 compound_statement */ #line 1769 "ctlib/parser.y" { END_LOCAL; decl_delete((yyvsp[-2].pDecl)); } #line 4937 "ctlib/y_parser.c" break; case 290: /* $@8: %empty */ #line 1771 "ctlib/parser.y" { BEGIN_LOCAL; } #line 4943 "ctlib/y_parser.c" break; case 291: /* function_definition: old_function_declarator $@8 compound_statement */ #line 1771 "ctlib/parser.y" { END_LOCAL; } #line 4949 "ctlib/y_parser.c" break; case 292: /* $@9: %empty */ #line 1772 "ctlib/parser.y" { BEGIN_LOCAL; } #line 4955 "ctlib/y_parser.c" break; case 293: /* function_definition: declaration_specifier old_function_declarator $@9 compound_statement */ #line 1772 "ctlib/parser.y" { END_LOCAL; } #line 4961 "ctlib/y_parser.c" break; case 294: /* $@10: %empty */ #line 1773 "ctlib/parser.y" { BEGIN_LOCAL; } #line 4967 "ctlib/y_parser.c" break; case 295: /* function_definition: type_specifier old_function_declarator $@10 compound_statement */ #line 1773 "ctlib/parser.y" { END_LOCAL; } #line 4973 "ctlib/y_parser.c" break; case 296: /* $@11: %empty */ #line 1774 "ctlib/parser.y" { BEGIN_LOCAL; } #line 4979 "ctlib/y_parser.c" break; case 297: /* function_definition: declaration_qualifier_list old_function_declarator $@11 compound_statement */ #line 1774 "ctlib/parser.y" { END_LOCAL; } #line 4985 "ctlib/y_parser.c" break; case 298: /* $@12: %empty */ #line 1775 "ctlib/parser.y" { BEGIN_LOCAL; } #line 4991 "ctlib/y_parser.c" break; case 299: /* function_definition: type_qualifier_list old_function_declarator $@12 compound_statement */ #line 1775 "ctlib/parser.y" { END_LOCAL; } #line 4997 "ctlib/y_parser.c" break; case 300: /* $@13: %empty */ #line 1777 "ctlib/parser.y" { BEGIN_LOCAL; } #line 5003 "ctlib/y_parser.c" break; case 301: /* function_definition: old_function_declarator declaration_list $@13 compound_statement */ #line 1777 "ctlib/parser.y" { END_LOCAL; } #line 5009 "ctlib/y_parser.c" break; case 302: /* $@14: %empty */ #line 1778 "ctlib/parser.y" { BEGIN_LOCAL; } #line 5015 "ctlib/y_parser.c" break; case 303: /* function_definition: declaration_specifier old_function_declarator declaration_list $@14 compound_statement */ #line 1778 "ctlib/parser.y" { END_LOCAL; } #line 5021 "ctlib/y_parser.c" break; case 304: /* $@15: %empty */ #line 1779 "ctlib/parser.y" { BEGIN_LOCAL; } #line 5027 "ctlib/y_parser.c" break; case 305: /* function_definition: type_specifier old_function_declarator declaration_list $@15 compound_statement */ #line 1779 "ctlib/parser.y" { END_LOCAL; } #line 5033 "ctlib/y_parser.c" break; case 306: /* $@16: %empty */ #line 1780 "ctlib/parser.y" { BEGIN_LOCAL; } #line 5039 "ctlib/y_parser.c" break; case 307: /* function_definition: declaration_qualifier_list old_function_declarator declaration_list $@16 compound_statement */ #line 1780 "ctlib/parser.y" { END_LOCAL; } #line 5045 "ctlib/y_parser.c" break; case 308: /* $@17: %empty */ #line 1781 "ctlib/parser.y" { BEGIN_LOCAL; } #line 5051 "ctlib/y_parser.c" break; case 309: /* function_definition: type_qualifier_list old_function_declarator declaration_list $@17 compound_statement */ #line 1781 "ctlib/parser.y" { END_LOCAL; } #line 5057 "ctlib/y_parser.c" break; case 314: /* parameter_typedef_declarator: TYPE_NAME */ #line 1796 "ctlib/parser.y" { (yyval.pDecl) = IS_LOCAL ? NULL : decl_new((yyvsp[0].pTypedef)->pDecl->identifier, CTT_IDLEN((yyvsp[0].pTypedef)->pDecl)); } #line 5065 "ctlib/y_parser.c" break; case 315: /* parameter_typedef_declarator: TYPE_NAME postfixing_abstract_declarator */ #line 1800 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pDecl) = NULL; else { (yyval.pDecl) = decl_new((yyvsp[-1].pTypedef)->pDecl->identifier, CTT_IDLEN((yyvsp[-1].pTypedef)->pDecl)); if ((yyvsp[0].list)) { (yyval.pDecl)->array_flag = 1; (yyval.pDecl)->ext.array = (yyvsp[0].list); } } } #line 5083 "ctlib/y_parser.c" break; case 318: /* clean_typedef_declarator: '*' parameter_typedef_declarator */ #line 1822 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) (yyvsp[0].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[0].pDecl); } #line 5093 "ctlib/y_parser.c" break; case 319: /* clean_typedef_declarator: '*' type_qualifier_list parameter_typedef_declarator */ #line 1828 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) (yyvsp[0].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[0].pDecl); } #line 5103 "ctlib/y_parser.c" break; case 320: /* clean_postfix_typedef_declarator: '(' clean_typedef_declarator ')' */ #line 1836 "ctlib/parser.y" { (yyval.pDecl) = (yyvsp[-1].pDecl); } #line 5109 "ctlib/y_parser.c" break; case 321: /* clean_postfix_typedef_declarator: '(' clean_typedef_declarator ')' postfixing_abstract_declarator */ #line 1838 "ctlib/parser.y" { POSTFIX_DECL((yyvsp[-2].pDecl), (yyvsp[0].list)); (yyval.pDecl) = (yyvsp[-2].pDecl); } #line 5118 "ctlib/y_parser.c" break; case 323: /* paren_typedef_declarator: '*' '(' simple_paren_typedef_declarator ')' */ #line 1850 "ctlib/parser.y" { if ((yyvsp[-1].pDecl)) (yyvsp[-1].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[-1].pDecl); } #line 5128 "ctlib/y_parser.c" break; case 324: /* paren_typedef_declarator: '*' type_qualifier_list '(' simple_paren_typedef_declarator ')' */ #line 1856 "ctlib/parser.y" { if ((yyvsp[-1].pDecl)) (yyvsp[-1].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[-1].pDecl); } #line 5138 "ctlib/y_parser.c" break; case 325: /* paren_typedef_declarator: '*' paren_typedef_declarator */ #line 1862 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) (yyvsp[0].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[0].pDecl); } #line 5148 "ctlib/y_parser.c" break; case 326: /* paren_typedef_declarator: '*' type_qualifier_list paren_typedef_declarator */ #line 1868 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) (yyvsp[0].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[0].pDecl); } #line 5158 "ctlib/y_parser.c" break; case 327: /* paren_postfix_typedef_declarator: '(' paren_typedef_declarator ')' */ #line 1876 "ctlib/parser.y" { (yyval.pDecl) = (yyvsp[-1].pDecl); } #line 5164 "ctlib/y_parser.c" break; case 328: /* paren_postfix_typedef_declarator: '(' simple_paren_typedef_declarator postfixing_abstract_declarator ')' */ #line 1878 "ctlib/parser.y" { POSTFIX_DECL((yyvsp[-2].pDecl), (yyvsp[-1].list)); (yyval.pDecl) = (yyvsp[-2].pDecl); } #line 5173 "ctlib/y_parser.c" break; case 329: /* paren_postfix_typedef_declarator: '(' paren_typedef_declarator ')' postfixing_abstract_declarator */ #line 1883 "ctlib/parser.y" { POSTFIX_DECL((yyvsp[-2].pDecl), (yyvsp[0].list)); (yyval.pDecl) = (yyvsp[-2].pDecl); } #line 5182 "ctlib/y_parser.c" break; case 330: /* simple_paren_typedef_declarator: TYPE_NAME */ #line 1891 "ctlib/parser.y" { (yyval.pDecl) = IS_LOCAL ? NULL : decl_new((yyvsp[0].pTypedef)->pDecl->identifier, CTT_IDLEN((yyvsp[0].pTypedef)->pDecl)); } #line 5190 "ctlib/y_parser.c" break; case 331: /* simple_paren_typedef_declarator: '(' simple_paren_typedef_declarator ')' */ #line 1894 "ctlib/parser.y" { (yyval.pDecl) = (yyvsp[-1].pDecl); } #line 5196 "ctlib/y_parser.c" break; case 335: /* unary_identifier_declarator: '*' identifier_declarator */ #line 1905 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) (yyvsp[0].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[0].pDecl); } #line 5206 "ctlib/y_parser.c" break; case 336: /* unary_identifier_declarator: '*' type_qualifier_list identifier_declarator */ #line 1911 "ctlib/parser.y" { if ((yyvsp[0].pDecl)) (yyvsp[0].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[0].pDecl); } #line 5216 "ctlib/y_parser.c" break; case 337: /* postfix_identifier_declarator: paren_identifier_declarator postfixing_abstract_declarator */ #line 1920 "ctlib/parser.y" { POSTFIX_DECL((yyvsp[-1].pDecl), (yyvsp[0].list)); (yyval.pDecl) = (yyvsp[-1].pDecl); } #line 5225 "ctlib/y_parser.c" break; case 338: /* postfix_identifier_declarator: '(' unary_identifier_declarator ')' */ #line 1924 "ctlib/parser.y" { (yyval.pDecl) = (yyvsp[-1].pDecl); } #line 5231 "ctlib/y_parser.c" break; case 339: /* postfix_identifier_declarator: '(' unary_identifier_declarator ')' postfixing_abstract_declarator */ #line 1926 "ctlib/parser.y" { POSTFIX_DECL((yyvsp[-2].pDecl), (yyvsp[0].list)); (yyval.pDecl) = (yyvsp[-2].pDecl); } #line 5240 "ctlib/y_parser.c" break; case 340: /* paren_identifier_declarator: IDENTIFIER */ #line 1934 "ctlib/parser.y" { if ((yyvsp[0].identifier)) { (yyval.pDecl) = decl_new((yyvsp[0].identifier)->key, (yyvsp[0].identifier)->keylen); HN_delete((yyvsp[0].identifier)); } else { (yyval.pDecl) = NULL; } } #line 5256 "ctlib/y_parser.c" break; case 341: /* paren_identifier_declarator: '(' paren_identifier_declarator ')' */ #line 1945 "ctlib/parser.y" { (yyval.pDecl) = (yyvsp[-1].pDecl); } #line 5262 "ctlib/y_parser.c" break; case 342: /* old_function_declarator: postfix_old_function_declarator */ #line 1949 "ctlib/parser.y" {} #line 5268 "ctlib/y_parser.c" break; case 343: /* old_function_declarator: '*' old_function_declarator */ #line 1950 "ctlib/parser.y" {} #line 5274 "ctlib/y_parser.c" break; case 344: /* old_function_declarator: '*' type_qualifier_list old_function_declarator */ #line 1951 "ctlib/parser.y" {} #line 5280 "ctlib/y_parser.c" break; case 345: /* postfix_old_function_declarator: paren_identifier_declarator '(' identifier_list ')' */ #line 1956 "ctlib/parser.y" { if ((yyvsp[-3].pDecl)) decl_delete((yyvsp[-3].pDecl)); } #line 5289 "ctlib/y_parser.c" break; case 346: /* postfix_old_function_declarator: '(' old_function_declarator ')' */ #line 1960 "ctlib/parser.y" {} #line 5295 "ctlib/y_parser.c" break; case 347: /* postfix_old_function_declarator: '(' old_function_declarator ')' postfixing_abstract_declarator */ #line 1962 "ctlib/parser.y" { if ((yyvsp[0].list)) LL_destroy((yyvsp[0].list), (LLDestroyFunc) value_delete); } #line 5304 "ctlib/y_parser.c" break; case 350: /* abstract_declarator: postfixing_abstract_declarator */ #line 1972 "ctlib/parser.y" { (yyval.absDecl).pointer_flag = 0; (yyval.absDecl).multiplicator = 1; if ((yyvsp[0].list)) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvsp[0].list)) (yyval.absDecl).multiplicator *= pValue->iv; LL_destroy((yyvsp[0].list), (LLDestroyFunc) value_delete); } } #line 5323 "ctlib/y_parser.c" break; case 352: /* postfixing_abstract_declarator: '(' ')' */ #line 1990 "ctlib/parser.y" { (yyval.list) = NULL; } #line 5329 "ctlib/y_parser.c" break; case 353: /* postfixing_abstract_declarator: '(' parameter_type_list ')' */ #line 1991 "ctlib/parser.y" { (yyval.list) = NULL; } #line 5335 "ctlib/y_parser.c" break; case 354: /* array_abstract_declarator: '[' type_qualifier_list_opt assignment_expression_opt ']' */ #line 1996 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = LL_new(); LL_push((yyval.list), value_new((yyvsp[-1].value).iv, (yyvsp[-1].value).flags)); CT_DEBUG(PARSER, ("array dimension => %ld", (yyvsp[-1].value).iv)); } } #line 5350 "ctlib/y_parser.c" break; case 355: /* array_abstract_declarator: '[' STATIC_TOK type_qualifier_list_opt assignment_expression ']' */ #line 2007 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = LL_new(); LL_push((yyval.list), value_new((yyvsp[-1].value).iv, (yyvsp[-1].value).flags)); CT_DEBUG(PARSER, ("array dimension => %ld", (yyvsp[-1].value).iv)); } } #line 5365 "ctlib/y_parser.c" break; case 356: /* array_abstract_declarator: '[' type_qualifier_list STATIC_TOK assignment_expression ']' */ #line 2018 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = LL_new(); LL_push((yyval.list), value_new((yyvsp[-1].value).iv, (yyvsp[-1].value).flags)); CT_DEBUG(PARSER, ("array dimension => %ld", (yyvsp[-1].value).iv)); } } #line 5380 "ctlib/y_parser.c" break; case 357: /* array_abstract_declarator: '[' type_qualifier_list_opt '*' ']' */ #line 2028 "ctlib/parser.y" { (yyval.list) = NULL; } #line 5386 "ctlib/y_parser.c" break; case 358: /* array_abstract_declarator: array_abstract_declarator '[' assignment_expression ']' */ #line 2030 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = (yyvsp[-3].list) ? (yyvsp[-3].list) : LL_new(); LL_push((yyval.list), value_new((yyvsp[-1].value).iv, (yyvsp[-1].value).flags)); CT_DEBUG(PARSER, ("array dimension => %ld", (yyvsp[-1].value).iv)); } } #line 5401 "ctlib/y_parser.c" break; case 359: /* array_abstract_declarator: array_abstract_declarator '[' '*' ']' */ #line 2041 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = (yyvsp[-3].list) ? (yyvsp[-3].list) : LL_new(); LL_push((yyval.list), value_new(0, 0)); CT_DEBUG(PARSER, ("array dimension => *" )); } } #line 5416 "ctlib/y_parser.c" break; case 360: /* unary_abstract_declarator: '*' */ #line 2055 "ctlib/parser.y" { (yyval.absDecl).pointer_flag = 1; (yyval.absDecl).multiplicator = 1; } #line 5425 "ctlib/y_parser.c" break; case 361: /* unary_abstract_declarator: '*' type_qualifier_list */ #line 2060 "ctlib/parser.y" { (yyval.absDecl).pointer_flag = 1; (yyval.absDecl).multiplicator = 1; } #line 5434 "ctlib/y_parser.c" break; case 362: /* unary_abstract_declarator: '*' abstract_declarator */ #line 2065 "ctlib/parser.y" { (yyvsp[0].absDecl).pointer_flag = 1; (yyval.absDecl) = (yyvsp[0].absDecl); } #line 5443 "ctlib/y_parser.c" break; case 363: /* unary_abstract_declarator: '*' type_qualifier_list abstract_declarator */ #line 2070 "ctlib/parser.y" { (yyvsp[0].absDecl).pointer_flag = 1; (yyval.absDecl) = (yyvsp[0].absDecl); } #line 5452 "ctlib/y_parser.c" break; case 364: /* postfix_abstract_declarator: '(' unary_abstract_declarator ')' */ #line 2077 "ctlib/parser.y" { (yyval.absDecl) = (yyvsp[-1].absDecl); } #line 5458 "ctlib/y_parser.c" break; case 365: /* postfix_abstract_declarator: '(' postfix_abstract_declarator ')' */ #line 2078 "ctlib/parser.y" { (yyval.absDecl) = (yyvsp[-1].absDecl); } #line 5464 "ctlib/y_parser.c" break; case 366: /* postfix_abstract_declarator: '(' postfixing_abstract_declarator ')' */ #line 2080 "ctlib/parser.y" { (yyval.absDecl).pointer_flag = 0; (yyval.absDecl).multiplicator = 1; if ((yyvsp[-1].list)) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvsp[-1].list)) (yyval.absDecl).multiplicator *= pValue->iv; LL_destroy((yyvsp[-1].list), (LLDestroyFunc) value_delete); } } #line 5483 "ctlib/y_parser.c" break; case 367: /* postfix_abstract_declarator: '(' unary_abstract_declarator ')' postfixing_abstract_declarator */ #line 2095 "ctlib/parser.y" { (yyval.absDecl) = (yyvsp[-2].absDecl); if ((yyvsp[0].list)) LL_destroy((yyvsp[0].list), (LLDestroyFunc) value_delete); } #line 5493 "ctlib/y_parser.c" break; #line 5497 "ctlib/y_parser.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; *++yyvsp = yyval; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ { const int yylhs = yyr1[yyn] - YYNTOKENS; const int yyi = yypgoto[yylhs] + *yyssp; yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp ? yytable[yyi] : yydefgoto[yylhs]); } goto yynewstate; /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; { yypcontext_t yyctx = {yyssp, yytoken}; char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == -1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); if (yymsg) { yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); yymsgp = yymsg; } else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = YYENOMEM; } } yyerror (pState, yymsgp); if (yysyntax_error_status == YYENOMEM) YYNOMEM; } } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, pState); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYSYMBOL_YYerror; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", YY_ACCESSING_SYMBOL (yystate), yyvsp, pState); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturnlab; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturnlab; /*-----------------------------------------------------------. | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | `-----------------------------------------------------------*/ yyexhaustedlab: yyerror (pState, YY_("memory exhausted")); yyresult = 2; goto yyreturnlab; /*----------------------------------------------------------. | yyreturnlab -- parsing is finished, clean up and return. | `----------------------------------------------------------*/ yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, pState); } /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, pState); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); return yyresult; } #line 2102 "ctlib/parser.y" /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: c_lex * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: C lexer. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int c_lex(YYSTYPE *plval, ParserState *pState) { int rval, token; struct lexer_state *pLexer = pState->pLexer; dUCPP(pState->pp); CT_DEBUG(CLEXER, ("parser.y::c_lex()")); while ((rval = lex(aUCPP_ pLexer)) < CPPERR_EOF) { if (rval) { CT_DEBUG(CLEXER, ("lex() returned %d", rval)); continue; } token = pLexer->ctok->type; switch (token) { case NONE: CT_DEBUG(CLEXER, ("token-type => NONE")); break; case COMMENT: CT_DEBUG(CLEXER, ("token-type => COMMENT => [%s]", pLexer->ctok->name)); break; case NEWLINE: CT_DEBUG(CLEXER, ("token-type => NEWLINE")); break; case BUNCH: CT_DEBUG(CLEXER, ("token-type => BUNCH => [%s]", pLexer->ctok->name)); break; case CONTEXT: CT_DEBUG(CLEXER, ("token-type => CONTEXT => [%s]", pLexer->ctok->name)); { FileInfo *pFI; size_t len = strlen(pLexer->ctok->name); CT_DEBUG(CLEXER, ("new context: file '%s', line %ld", pLexer->ctok->name, pLexer->ctok->line)); pFI = HT_get(pState->pCPI->htFiles, pLexer->ctok->name, len, 0); if (pFI == NULL) { pFI = fileinfo_new(pLexer->input, pLexer->ctok->name, len); HT_store(pState->pCPI->htFiles, pLexer->ctok->name, len, 0, pFI); } pState->pFI = pFI; } break; case NUMBER: CT_DEBUG(CLEXER, ("token-type => NUMBER => [%s]", pLexer->ctok->name)); plval->value.iv = strtol(pLexer->ctok->name, NULL, 0); plval->value.flags = 0; CT_DEBUG(CLEXER, ("constant: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return CONSTANT; case STRING: CT_DEBUG(CLEXER, ("token-type => STRING => [%s]", pLexer->ctok->name)); plval->value.iv = string_size(pLexer->ctok->name); plval->value.flags = 0; CT_DEBUG(CLEXER, ("string literal: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return STRING_LITERAL; case CHAR: CT_DEBUG(CLEXER, ("token-type => CHAR => [%s]", pLexer->ctok->name)); plval->value.iv = get_char_value(pLexer->ctok->name); plval->value.flags = 0; CT_DEBUG(CLEXER, ("constant: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return CONSTANT; case PRAGMA: CT_DEBUG(CLEXER, ("token-type => PRAGMA")); CT_DEBUG(CLEXER, ("line %ld: <#pragma>", pLexer->line)); pragma_parser_set_context(pState->pragma, pState->pFI ? pState->pFI->name : "unknown", pLexer->line - 1, pLexer->ctok->name); pragma_parser_parse(pState->pragma); CT_DEBUG(CLEXER, ("current packing: %d\n", pragma_parser_get_pack(pState->pragma))); break; case NAME: CT_DEBUG(CLEXER, ("token-type => NAME => [%s]", pLexer->ctok->name)); { char *tokstr = pLexer->ctok->name; const CKeywordToken *ckt; #include "token/t_parser.c" unknown: if ((ckt = HT_get(pState->pCPC->keyword_map, tokstr, 0, 0)) != NULL) { if (ckt->token == SKIP_TOK) { CT_DEBUG(CLEXER, ("skipping token '%s' in line %ld", tokstr, pLexer->line)); break; } return ckt->token; } return check_type(plval, pState, tokstr); } default: CT_DEBUG(CLEXER, ("token-type => %d", token)); if ((rval = tokentab[token]) != 0) return rval; CT_DEBUG(CLEXER, ("unhandled token in line %ld: <%2d>", pLexer->line, token)); break; } } CT_DEBUG(CLEXER, ("EOF!")); return 0; } /******************************************************************************* * * ROUTINE: parser_error * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void parser_error(ParserState *pState, const char *msg) { push_error(pState->pCPI, "%s, line %ld: %s", pState->pFI ? pState->pFI->name : "[unknown]", pState->pLexer->ctok->line, msg); } /******************************************************************************* * * ROUTINE: get_char_value * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int get_char_value(const char *s) { while (*s && *s != '\'') s++; if (*++s != '\\') return (int) *s; switch (*++s) { case '0' : case '1' : case '2' : case '3' : return (int) strtol(s, NULL, 8); case 'a' : return (int) '\a'; case 'b' : return (int) '\b'; case 'f' : return (int) '\f'; case 'h' : return (int) strtol(++s, NULL, 16); case 'n' : return (int) '\n'; case 'r' : return (int) '\r'; case 't' : return (int) '\t'; case 'v' : return (int) '\v'; default: return (int) *s; } } /******************************************************************************* * * ROUTINE: string_size * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int string_size(const char *s) { int size, count; while (*s && *s != '\"') s++; for (s++, size=0; *s; size++) { if (*s == '\"') break; if (*s++ != '\\') continue; if (*s == 'x') { count = 0; do s++; while (count++ < 2 && ((*s >= '0' && *s <= '9') || (*s >= 'a' && *s <= 'f') || (*s >= 'A' && *s <= 'F'))); continue; } if (*s >= '0' && *s <= '7') { count = 0; do s++; while (count++ < 2 && *s >= '0' && *s <= '7'); } else s++; } return size; } /******************************************************************************* * * ROUTINE: check_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int check_type(YYSTYPE *plval, ParserState *pState, const char *s) { Typedef *pTypedef; HashSum hash; int len; CT_DEBUG(CLEXER, ("check_type( \"%s\" )", s)); HASH_STR_LEN(hash, s, len); pTypedef = HT_get(pState->pCPI->htTypedefs, s, len, hash); if (pTypedef) { CT_DEBUG(CLEXER, ("typedef found!")); plval->pTypedef = pTypedef; return TYPE_NAME; } plval->identifier = pState->flags & F_LOCAL ? NULL : HN_new(s, len, hash); return IDENTIFIER; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_c_keyword_token * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const CKeywordToken *get_c_keyword_token(const char *name) { #include "token/t_ckeytok.c" unknown: return NULL; } /******************************************************************************* * * ROUTINE: get_skip_token * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const CKeywordToken *get_skip_token(void) { static const CKeywordToken ckt = { SKIP_TOK, NULL }; return &ckt; } /******************************************************************************* * * ROUTINE: c_parser_new * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ ParserState *c_parser_new(const CParseConfig *pCPC, CParseInfo *pCPI, pUCPP_ struct lexer_state *pLexer) { ParserState *pState; #ifdef CTLIB_DEBUGGING #ifdef YYDEBUG extern int pragma_debug; c_debug = pragma_debug = DEBUG_FLAG(YACC) ? 1 : 0; #endif #endif if (pCPC == NULL || pCPI == NULL || pLexer == NULL) return NULL; AllocF(ParserState *, pState, sizeof(ParserState)); pState->pCPI = pCPI; pState->pCPC = pCPC; pState->pLexer = pLexer; pState->pp = aUCPP; pState->flags = 0; pState->pFI = NULL; pState->pragma = pragma_parser_new(pCPI); return pState; } /******************************************************************************* * * ROUTINE: c_parser_run * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Run the C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int c_parser_run(ParserState *pState) { return c_parse((void *) pState); } /******************************************************************************* * * ROUTINE: c_parser_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Delete a C parser object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void c_parser_delete(ParserState *pState) { if (pState == NULL) return; pragma_parser_delete(pState->pragma); Free(pState); } Convert-Binary-C-0.85/ctlib/ctparse.c0000644000175000001440000006555514677003452016135 0ustar mhxusers/******************************************************************************* * * MODULE: ctparse.c * ******************************************************************************** * * DESCRIPTION: Parser interface routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctparse.h" #include "cterror.h" #include "ctdebug.h" #include "fileinfo.h" #include "parser.h" #include "util/memalloc.h" #include "ucpp/cpp.h" #ifdef MEM_DEBUG #include "ucpp/mem.h" /* for report_leaks() */ #endif #include "cppreent.h" /*===== DEFINES ==============================================================*/ #if defined MSDOS || defined WIN32 #define SYSTEM_DIRECTORY_DELIMITER '\\' #define IS_NON_SYSTEM_DIR_DELIM( c ) ( (c) == '/' ) #else #define SYSTEM_DIRECTORY_DELIMITER '/' #define IS_NON_SYSTEM_DIR_DELIM( c ) ( (c) == '\\' ) #endif #define IS_ANY_DIRECTORY_DELIMITER( c ) ( (c) == '/' || (c) == '\\' ) #define BUFFER_NAME "[buffer]" /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static char *get_path_name(const char *dir, const char *file); static void macro_callback(const struct macro_info *pmi); static void add_predef_callback(const struct macro_info *pmi); static void destroy_cpp(struct CPP *pp); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ #ifdef MEM_DEBUG static int gs_num_cpp; #endif /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_path_name * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static char *get_path_name(const char *dir, const char *file) { int dirlen = 0, filelen, append_delim = 0; char *buf, *b; if (dir != NULL) { dirlen = strlen(dir); if (!IS_ANY_DIRECTORY_DELIMITER(dir[dirlen-1])) append_delim = 1; } filelen = strlen(file); AllocF(char *, buf, dirlen + append_delim + filelen + 1); if (dir != NULL) strcpy(buf, dir); if (append_delim) buf[dirlen++] = SYSTEM_DIRECTORY_DELIMITER; strcpy(buf+dirlen, file); for (b = buf; *b; b++) if (IS_NON_SYSTEM_DIR_DELIM(*b)) *b = SYSTEM_DIRECTORY_DELIMITER; return buf; } /******************************************************************************* * * ROUTINE: macro_callback * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ struct macro_cb_arg { HashTable predef; void (*func)(const CMacroInfo *); CMacroInfo info; }; static void macro_callback(const struct macro_info *pmi) { struct macro_cb_arg *a = pmi->arg; if (a->predef == NULL || !HT_exists(a->predef, pmi->name, 0, 0)) { CMacroInfo *p = &a->info; p->name = pmi->name; p->definition = pmi->definition; p->definition_len = pmi->definition_len; a->func(p); } } /******************************************************************************* * * ROUTINE: add_predef_callback * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_predef_callback(const struct macro_info *pmi) { HT_store(pmi->arg, pmi->name, 0, 0, NULL); } /******************************************************************************* * * ROUTINE: destroy_cpp * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void destroy_cpp(struct CPP *pp) { assert(pp != 0); wipeout(pp); del_cpp(pp); /* XXX: This cannot be used with concurrent preprocessor objects. * Leak checking has to be done when all objects are gone. */ #ifdef MEM_DEBUG assert(gs_num_cpp > 0); gs_num_cpp--; if (gs_num_cpp == 0) { report_leaks(); } #endif } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: macro_is_defined * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int macro_is_defined(CParseInfo *pCPI, const char *name) { assert(pCPI != NULL); if (pCPI->pp) return is_macro_defined(pCPI->pp, name); return 0; } /******************************************************************************* * * ROUTINE: macro_get_def * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ char *macro_get_def(CParseInfo *pCPI, const char *name, size_t *plen) { assert(pCPI != NULL); if (pCPI->pp) return get_macro_definition(pCPI->pp, name, plen); return NULL; } /******************************************************************************* * * ROUTINE: macro_free_def * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void macro_free_def(char *p) { free_macro_definition(p); } /******************************************************************************* * * ROUTINE: macro_iterate_defs * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void macro_iterate_defs(CParseInfo *pCPI, void (*func)(const CMacroInfo *), void *arg, CMIFlags flags) { if (pCPI && pCPI->pp) { struct macro_cb_arg a; unsigned long ppflags = 0; if (flags & CMIF_WITH_DEFINITION) ppflags |= MI_WITH_DEFINITION; if (flags & CMIF_NO_PREDEFINED) a.predef = pCPI->htPredefined; else a.predef = NULL; a.func = func; a.info.arg = arg; iterate_macros(pCPI->pp, macro_callback, &a, ppflags); } } /******************************************************************************* * * ROUTINE: parse_buffer * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int parse_buffer(const char *filename, const Buffer *pBuf, const CParseConfig *pCPC, CParseInfo *pCPI) { int rval, pp_needs_init; char *file, *str; FILE *infile; struct lexer_state lexer; ParserState *pState; struct CPP *pp; CT_DEBUG(CTLIB, ("ctparse::parse_buffer( %s, %p, %p, %p )", filename ? filename : BUFFER_NAME, pBuf, pCPI, pCPC)); /*----------------------------------*/ /* Initialize parse info structures */ /*----------------------------------*/ if (!pCPI->available) { assert(pCPI->enums == NULL); assert(pCPI->structs == NULL); assert(pCPI->typedef_lists == NULL); assert(pCPI->htEnumerators == NULL); assert(pCPI->htEnums == NULL); assert(pCPI->htStructs == NULL); assert(pCPI->htTypedefs == NULL); assert(pCPI->htFiles == NULL); CT_DEBUG(CTLIB, ("creating linked lists")); pCPI->enums = LL_new(); pCPI->structs = LL_new(); pCPI->typedef_lists = LL_new(); pCPI->htEnumerators = HT_new_ex(5, HT_AUTOGROW); pCPI->htEnums = HT_new_ex(4, HT_AUTOGROW); pCPI->htStructs = HT_new_ex(4, HT_AUTOGROW); pCPI->htTypedefs = HT_new_ex(4, HT_AUTOGROW); pCPI->htFiles = HT_new_ex(3, HT_AUTOGROW); pCPI->htPredefined = HT_new_ex(3, HT_AUTOGROW); pCPI->errorStack = LL_new(); pCPI->available = 1; } else if (pCPI->enums != NULL && pCPI->structs != NULL && pCPI->typedef_lists != NULL) { CT_DEBUG(CTLIB, ("re-using linked lists")); pop_all_errors(pCPI); } else fatal_error("CParseInfo is inconsistent!"); /* make sure we trigger update_parse_info() afterwards */ pCPI->ready = 0; /*----------------------------*/ /* Try to open the input file */ /*----------------------------*/ infile = NULL; if (filename != NULL) { file = get_path_name(NULL, filename); CT_DEBUG(CTLIB, ("Trying '%s'...", file)); infile = fopen(file, "r"); if (infile == NULL) { ListIterator li; LL_foreach(str, li, pCPC->includes) { Free(file); file = get_path_name(str, filename); CT_DEBUG(CTLIB, ("Trying '%s'...", file)); if((infile = fopen(file, "r")) != NULL) break; } if (infile == NULL) { Free(file); push_error(pCPI, "Cannot find input file '%s'", filename); return 0; } } } /*-------------------------*/ /* Set up new preprocessor */ /*-------------------------*/ CT_DEBUG(CTLIB, ("setting up preprocessor")); pp_needs_init = pCPI->pp == NULL; if (pp_needs_init) { #ifdef MEM_DEBUG gs_num_cpp++; #endif pp = pCPI->pp = new_cpp(); CT_DEBUG(CTLIB, ("created preprocessor object @ %p", pp)); init_cpp(pp); pp->ucpp_ouch = my_ucpp_ouch; pp->ucpp_error = my_ucpp_error; pp->ucpp_warning = my_ucpp_warning; pp->callback_arg = (void *) pCPI; r_no_special_macros = 0; r_emit_defines = 0; r_emit_assertions = 0; r_emit_dependencies = 0; r_c99_compliant = 0; r_c99_hosted = 0; init_tables(aUCPP_ 1); CT_DEBUG(CTLIB, ("configuring preprocessor")); init_include_path(aUCPP_ NULL); } else { pp = pCPI->pp; } if (filename != NULL) { set_init_filename(aUCPP_ file, 1); Free(file); } else { set_init_filename(aUCPP_ BUFFER_NAME, 0); } init_lexer_state(&lexer); init_lexer_mode(&lexer); lexer.flags |= HANDLE_ASSERTIONS | HANDLE_PRAGMA | LINE_NUM; if (pCPC->issue_warnings) lexer.flags |= WARN_STANDARD | WARN_ANNOYING | WARN_TRIGRAPHS | WARN_TRIGRAPHS_MORE; if (pCPC->has_cpp_comments) lexer.flags |= CPLUSPLUS_COMMENTS; if (pCPC->has_macro_vaargs) lexer.flags |= MACRO_VAARG; if (infile != NULL) { lexer.input = infile; } else { lexer.input = NULL; lexer.input_string = (unsigned char *) pBuf->buffer; lexer.pbuf = pBuf->pos; lexer.ebuf = pBuf->length; } if (pp_needs_init) { ListIterator li; /* Configure standard C features */ if (pCPC->has_std_c) { char tmp[20 + 4*sizeof(pCPC->std_c_version)]; sprintf(tmp, "__STDC_VERSION__=%ldL", pCPC->std_c_version); (void) define_macro(aUCPP_ &lexer, tmp); } if (pCPC->has_std_c_hosted) { char tmp[20]; sprintf(tmp, "__STDC_HOSTED__=%u", pCPC->is_std_c_hosted); (void) define_macro(aUCPP_ &lexer, tmp); } /* Add includes */ LL_foreach(str, li, pCPC->includes) { CT_DEBUG(CTLIB, ("adding include path '%s'", str)); add_incpath(aUCPP_ str); } /* Make defines */ LL_foreach(str, li, pCPC->defines) { CT_DEBUG(CTLIB, ("defining macro '%s'", str)); (void) define_macro(aUCPP_ &lexer, str); } /* Make assertions */ LL_foreach(str, li, pCPC->assertions) { CT_DEBUG(CTLIB, ("making assertion '%s'", str)); (void) make_assertion(aUCPP_ str); } iterate_macros(aUCPP_ add_predef_callback, pCPI->htPredefined, 0); } enter_file(aUCPP_ &lexer, lexer.flags); /*---------------------*/ /* Create the C parser */ /*---------------------*/ pState = c_parser_new(pCPC, pCPI, aUCPP_ &lexer); /*-----------------*/ /* Parse the input */ /*-----------------*/ if (pCPC->disable_parser) { CT_DEBUG(CTLIB, ("parser is disabled, running only preprocessor")); rval = 0; } else { CT_DEBUG(CTLIB, ("entering parser")); rval = c_parser_run(pState); CT_DEBUG(CTLIB, ("c_parse() returned %d", rval)); } /*-------------------------------*/ /* Finish parsing (cleanup ucpp) */ /*-------------------------------*/ if (rval || pCPC->disable_parser) while (lex(aUCPP_ &lexer) < CPPERR_EOF); (void) check_cpp_errors(aUCPP_ &lexer); if (DEBUG_FLAG(PREPROC)) { pp->emit_output = stderr; /* the best we can get here... */ print_defines(pp); print_assertions(pp); } free_lexer_state(&lexer); /*----------------------*/ /* Cleanup the C parser */ /*----------------------*/ c_parser_delete(pState); /* Invalidate the buffer name in the parsed files table */ if (filename == NULL) ((FileInfo *) HT_get(pCPI->htFiles, BUFFER_NAME, 0, 0))->valid = 0; #if !defined NDEBUG && defined CTLIB_DEBUGGING if (DEBUG_FLAG(HASH)) { HT_dump(pCPI->htEnumerators); HT_dump(pCPI->htEnums); HT_dump(pCPI->htStructs); HT_dump(pCPI->htTypedefs); HT_dump(pCPI->htFiles); HT_dump(pCPI->htPredefined); } #endif return rval ? 0 : 1; } /******************************************************************************* * * ROUTINE: init_parse_info * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void init_parse_info(CParseInfo *pCPI) { CT_DEBUG( CTLIB, ("ctparse::init_parse_info()") ); if (pCPI) { pCPI->typedef_lists = NULL; pCPI->structs = NULL; pCPI->enums = NULL; pCPI->htEnumerators = NULL; pCPI->htEnums = NULL; pCPI->htStructs = NULL; pCPI->htTypedefs = NULL; pCPI->htFiles = NULL; pCPI->htPredefined = NULL; pCPI->errorStack = NULL; pCPI->pp = NULL; pCPI->available = 0; pCPI->ready = 0; } } /******************************************************************************* * * ROUTINE: reset_preprocessor * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void reset_preprocessor(CParseInfo *pCPI) { CT_DEBUG(CTLIB, ("ctparse::reset_preprocessor()")); if (pCPI && pCPI->pp) { CT_DEBUG(CTLIB, ("destroying preprocessor object @ %p", pCPI->pp)); destroy_cpp(pCPI->pp); pCPI->pp = NULL; } } /******************************************************************************* * * ROUTINE: free_parse_info * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void free_parse_info(CParseInfo *pCPI) { CT_DEBUG(CTLIB, ("ctparse::free_parse_info()")); if (pCPI) { if (pCPI->available) { LL_destroy(pCPI->enums, (LLDestroyFunc) enumspec_delete); LL_destroy(pCPI->structs, (LLDestroyFunc) struct_delete); LL_destroy(pCPI->typedef_lists, (LLDestroyFunc) typedef_list_delete); HT_destroy(pCPI->htEnumerators, NULL); HT_destroy(pCPI->htEnums, NULL); HT_destroy(pCPI->htStructs, NULL); HT_destroy(pCPI->htTypedefs, NULL); HT_destroy(pCPI->htFiles, (LLDestroyFunc) fileinfo_delete); HT_destroy(pCPI->htPredefined, NULL); if (pCPI->errorStack) { pop_all_errors(pCPI); LL_delete(pCPI->errorStack); } } reset_preprocessor(pCPI); init_parse_info(pCPI); /* make sure everything is NULL'd */ } } /******************************************************************************* * * ROUTINE: reset_parse_info * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void reset_parse_info(CParseInfo *pCPI) { ListIterator li, ti; Struct *pStruct; TypedefList *pTDL; Typedef *pTD; CT_DEBUG(CTLIB, ("ctparse::reset_parse_info(): got %d struct(s)", LL_count(pCPI->structs))); /* clear size and align fields */ LL_foreach(pStruct, li, pCPI->structs) { CT_DEBUG(CTLIB, ("resetting struct '%s':", pStruct->identifier[0] ? pStruct->identifier : "")); pStruct->align = 0; pStruct->size = 0; } LL_foreach(pTDL, li, pCPI->typedef_lists) LL_foreach(pTD, ti, pTDL->typedefs) { pTD->pDecl->size = -1; pTD->pDecl->item_size = -1; } pCPI->ready = 0; } /******************************************************************************* * * ROUTINE: update_parse_info * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void update_parse_info(CParseInfo *pCPI, const CParseConfig *pCPC) { ListIterator li, ti; Struct *pStruct; TypedefList *pTDL; Typedef *pTD; CT_DEBUG(CTLIB, ("ctparse::update_parse_info(): got %d struct(s)", LL_count(pCPI->structs))); /* compute size and alignment */ LL_foreach(pStruct, li, pCPI->structs) { CT_DEBUG(CTLIB, ("updating struct '%s':", pStruct->identifier[0] ? pStruct->identifier : "")); if (pStruct->align == 0) pCPC->layout_compound(&pCPC->layout, pStruct); } LL_foreach(pTDL, li, pCPI->typedef_lists) LL_foreach(pTD, ti, pTDL->typedefs) if (pTD->pDecl->size < 0) { unsigned size, item_size; if (pCPC->get_type_info(&pCPC->layout, pTD->pType, pTD->pDecl, "si", &size, &item_size) == GTI_NO_ERROR) { pTD->pDecl->size = (int) size; pTD->pDecl->item_size = (int) item_size; } } pCPI->ready = 1; } /******************************************************************************* * * ROUTINE: clone_parse_info * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define PTR_NOT_FOUND(ptr) \ fatal_error("FATAL: pointer " #ptr " (%p) not found! (%s:%d)\n", \ ptr, __FILE__, __LINE__) #define REMAP_PTR(what, target) \ do { \ if (target != NULL) \ { \ void *ptr = HT_get(ptrmap, (const char *) &target, \ sizeof(void *), 0); \ \ CT_DEBUG(CTLIB, (#what ": %p => %p", target, ptr)); \ \ if (ptr) \ target = ptr; \ else \ PTR_NOT_FOUND((void *) target); \ } \ } while (0) void clone_parse_info(CParseInfo *pDest, const CParseInfo *pSrc) { ListIterator li; HashTable ptrmap; EnumSpecifier *pES; Struct *pStruct; TypedefList *pTDL; CT_DEBUG(CTLIB, ("ctparse::clone_parse_info()")); if (!pSrc->available) return; /* don't clone empty objects */ assert(pSrc->enums != NULL); assert(pSrc->structs != NULL); assert(pSrc->typedef_lists != NULL); assert(pSrc->htEnumerators != NULL); assert(pSrc->htEnums != NULL); assert(pSrc->htStructs != NULL); assert(pSrc->htTypedefs != NULL); assert(pSrc->htFiles != NULL); assert(pSrc->htPredefined != NULL); if (pSrc->pp) { #ifdef MEM_DEBUG gs_num_cpp++; #endif pDest->pp = clone_cpp(pSrc->pp); assert(pDest->pp != NULL); CT_DEBUG(CTLIB, ("cloned preprocessor object @ %p -> %p", pSrc->pp, pDest->pp)); } ptrmap = HT_new_ex(3, HT_AUTOGROW); pDest->enums = LL_new(); pDest->structs = LL_new(); pDest->typedef_lists = LL_new(); pDest->htEnumerators = HT_new_ex(HT_size(pSrc->htEnumerators), HT_AUTOGROW); pDest->htEnums = HT_new_ex(HT_size(pSrc->htEnums), HT_AUTOGROW); pDest->htStructs = HT_new_ex(HT_size(pSrc->htStructs), HT_AUTOGROW); pDest->htTypedefs = HT_new_ex(HT_size(pSrc->htTypedefs), HT_AUTOGROW); pDest->errorStack = LL_new(); pDest->available = pSrc->available; pDest->ready = pSrc->ready; CT_DEBUG(CTLIB, ("cloning enums")); LL_foreach(pES, li, pSrc->enums) { ListIterator ei; Enumerator *pEnum; EnumSpecifier *pClone = enumspec_clone(pES); CT_DEBUG(CTLIB, ("storing pointer to map: %p <=> %p", pES, pClone)); HT_store(ptrmap, (const char *) &pES, sizeof(pES), 0, pClone); LL_push(pDest->enums, pClone); if (pClone->identifier[0]) HT_store(pDest->htEnums, pClone->identifier, 0, 0, pClone); LL_foreach(pEnum, ei, pClone->enumerators) HT_store(pDest->htEnumerators, pEnum->identifier, 0, 0, pEnum); } CT_DEBUG(CTLIB, ("cloning structs")); LL_foreach(pStruct, li, pSrc->structs) { Struct *pClone = struct_clone(pStruct); CT_DEBUG(CTLIB, ("storing pointer to map: %p <=> %p", pStruct, pClone)); HT_store(ptrmap, (const char *) &pStruct, sizeof(pStruct), 0, pClone); LL_push(pDest->structs, pClone); if (pClone->identifier[0]) HT_store(pDest->htStructs, pClone->identifier, 0, 0, pClone); } CT_DEBUG(CTLIB, ("cloning typedefs")); LL_foreach(pTDL, li, pSrc->typedef_lists) { ListIterator oi, ci; TypedefList *pClone = typedef_list_clone(pTDL); LI_init(&oi, pTDL->typedefs); LI_init(&ci, pClone->typedefs); while (LI_next(&oi) && LI_next(&ci)) { Typedef *pOld = LI_curr(&oi), *pNew = LI_curr(&ci); CT_DEBUG(CTLIB, ("storing pointer to map: %p <=> %p", pOld, pNew)); HT_store(ptrmap, (const char *) &pOld, sizeof(pOld), 0, pNew); HT_store(pDest->htTypedefs, pNew->pDecl->identifier, 0, 0, pNew); } LL_push(pDest->typedef_lists, pClone); } CT_DEBUG(CTLIB, ("cloning file information")); { HashIterator isrc, idst; void *pOld, *pNew; pDest->htFiles = HT_clone(pSrc->htFiles, (HTCloneFunc) fileinfo_clone); HI_init(&isrc, pSrc->htFiles); HI_init(&idst, pDest->htFiles); while (HI_next(&isrc, NULL, NULL, &pOld) && HI_next(&idst, NULL, NULL, &pNew)) { CT_DEBUG(CTLIB, ("storing pointer to map: %p <=> %p", pOld, pNew)); HT_store(ptrmap, (const char *) &pOld, sizeof(pOld), 0, pNew); } } CT_DEBUG(CTLIB, ("cloning predefined macros")); pDest->htPredefined = HT_clone(pSrc->htPredefined, NULL); CT_DEBUG(CTLIB, ("remapping pointers for enums")); LL_foreach(pES, li, pDest->enums) REMAP_PTR(EnumSpec, pES->context.pFI); CT_DEBUG(CTLIB, ("remapping pointers for structs")); LL_foreach(pStruct, li, pDest->structs) { ListIterator sdi; StructDeclaration *pStructDecl; CT_DEBUG(CTLIB, ("remapping pointers for struct @ %p ('%s')", pStruct, pStruct->identifier)); LL_foreach(pStructDecl, sdi, pStruct->declarations) REMAP_PTR(StructDecl, pStructDecl->type.ptr); REMAP_PTR(Struct, pStruct->context.pFI); } CT_DEBUG(CTLIB, ("remapping pointers for typedef lists")); LL_foreach(pTDL, li, pDest->typedef_lists) REMAP_PTR(TypedefList, pTDL->type.ptr); HT_destroy(ptrmap, NULL); } #undef REMAP_PTR #undef PTR_NOT_FOUND Convert-Binary-C-0.85/ctlib/layout.h0000644000175000001440000000727114677003452016005 0ustar mhxusers/******************************************************************************* * * HEADER: layout.h * ******************************************************************************** * * DESCRIPTION: Type layouting routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_LAYOUT_H #define _CTLIB_LAYOUT_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/cttype.h" #include "ctlib/bitfields.h" #include "ctlib/byteorder.h" /*===== DEFINES ==============================================================*/ #if ARCH_HAVE_LONG_LONG #define CTLIB_long_long_SIZE sizeof(long long) #else #define CTLIB_long_long_SIZE 8 #endif #if ARCH_HAVE_LONG_DOUBLE #define CTLIB_long_double_SIZE sizeof(long double) #else #define CTLIB_long_double_SIZE 12 #endif #define CTLIB_double_SIZE sizeof(double) #define CTLIB_float_SIZE sizeof(float) #define CTLIB_char_SIZE sizeof(char) #define CTLIB_short_SIZE sizeof(short) #define CTLIB_long_SIZE sizeof(long) #define CTLIB_int_SIZE sizeof(int) #define CTLIB_POINTER_SIZE sizeof(void *) #define CTLIB_ALIGNMENT (native_alignment ? native_alignment \ : get_native_alignment()) #define CTLIB_COMPOUND_ALIGNMENT (native_compound_alignment \ ? native_compound_alignment \ : get_native_compound_alignment()) /*===== TYPEDEFS =============================================================*/ typedef enum { GTI_NO_ERROR = 0, GTI_NO_STRUCT_DECL } ErrorGTI; typedef struct { unsigned alignment; unsigned compound_alignment; unsigned char_size; unsigned int_size; unsigned short_size; unsigned long_size; unsigned long_long_size; int enum_size; unsigned ptr_size; unsigned float_size; unsigned double_size; unsigned long_double_size; CByteOrder byte_order; BitfieldLayouter bflayouter; } LayoutParam; /*===== EXTERNAL VARIABLES ===================================================*/ #define native_alignment CTlib_native_alignment extern unsigned native_alignment; #define native_compound_alignment CTlib_native_compound_alignment extern unsigned native_compound_alignment; /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_type_info_generic CTlib_get_type_info_generic ErrorGTI get_type_info_generic(const LayoutParam *pLP, const TypeSpec *pTS, const Declarator *pDecl, const char *format, ...); #define layout_compound_generic CTlib_layout_compound_generic void layout_compound_generic(const LayoutParam *pLP, Struct *pStruct); #define get_native_alignment CTlib_get_native_alignment unsigned get_native_alignment(void); #define get_native_compound_alignment CTlib_get_native_compound_alignment unsigned get_native_compound_alignment(void); #define get_native_enum_size CTlib_get_native_enum_size int get_native_enum_size(void); #define get_native_unsigned_chars CTlib_get_native_unsigned_chars int get_native_unsigned_chars(void); #define get_native_unsigned_bitfields CTlib_get_native_unsigned_bitfields int get_native_unsigned_bitfields(void); #endif Convert-Binary-C-0.85/ctlib/cterror.c0000644000175000001440000002644114677003452016143 0ustar mhxusers/******************************************************************************* * * MODULE: cterror.c * ******************************************************************************** * * DESCRIPTION: Error reporting for the ctlib * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "cterror.h" #include "util/memalloc.h" #include "ucpp/cpp.h" #include "ucpp/mem.h" #include "cppreent.h" /*===== DEFINES ==============================================================*/ #define INIT_CHECK \ do { \ if (!initialized) \ { \ fprintf(stderr, "FATAL: print functions have not been set!\n"); \ abort(); \ } \ } while(0) /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static CTLibError *error_new(enum CTErrorSeverity severity, void *str); static void error_delete(CTLibError *error); static void push_str(CParseInfo *pCPI, enum CTErrorSeverity severity, void *str); static void push_verror(CParseInfo *pCPI, enum CTErrorSeverity severity, const char *fmt, va_list *pap); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ static int initialized = 0; static PrintFunctions F; /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: error_new * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static CTLibError *error_new(enum CTErrorSeverity severity, void *str) { CTLibError *perr; const char *string; size_t len; string = F.cstring(str, &len); AllocF(CTLibError *, perr, sizeof(CTLibError)); AllocF(char *, perr->string, len + 1); perr->severity = severity; strncpy(perr->string, string, len); perr->string[len] = '\0'; return perr; } /******************************************************************************* * * ROUTINE: error_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void error_delete(CTLibError *error) { if (error) { if (error->string) Free(error->string); Free(error); } } /******************************************************************************* * * ROUTINE: push_str * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void push_str(CParseInfo *pCPI, enum CTErrorSeverity severity, void *str) { if (pCPI == NULL || pCPI->errorStack == NULL) F.fatalerr(str); LL_push(pCPI->errorStack, error_new(severity, str)); } /******************************************************************************* * * ROUTINE: push_verror * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void push_verror(CParseInfo *pCPI, enum CTErrorSeverity severity, const char *fmt, va_list *pap) { void *str = F.newstr(); F.vscatf(str, fmt, pap); push_str(pCPI, severity, str); F.destroy(str); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: set_print_functions * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void set_print_functions(PrintFunctions *pPF) { if (pPF->newstr == NULL || pPF->destroy == NULL || pPF->scatf == NULL || pPF->vscatf == NULL || pPF->cstring == NULL || pPF->fatalerr == NULL) { fprintf(stderr, "FATAL: all print functions must be set!\n"); abort(); } F = *pPF; initialized = 1; } /******************************************************************************* * * ROUTINE: pop_all_errors * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pop_all_errors(CParseInfo *pCPI) { LL_flush(pCPI->errorStack, (LLDestroyFunc) error_delete); } /******************************************************************************* * * ROUTINE: push_error * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void push_error(CParseInfo *pCPI, const char *fmt, ...) { va_list ap; INIT_CHECK; va_start(ap, fmt); push_verror(pCPI, CTES_ERROR, fmt, &ap); va_end(ap); } /******************************************************************************* * * ROUTINE: push_warning * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void push_warning(CParseInfo *pCPI, const char *fmt, ...) { va_list ap; INIT_CHECK; va_start(ap, fmt); push_verror(pCPI, CTES_WARNING, fmt, &ap); va_end(ap); } /******************************************************************************* * * ROUTINE: fatal_error * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void fatal_error(const char *fmt, ...) { va_list ap; void *str; INIT_CHECK; va_start(ap, fmt); str = F.newstr(); F.vscatf(str, fmt, &ap); va_end(ap); F.fatalerr(str); } /******************************************************************************* * * ROUTINE: my_ucpp_ouch * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void my_ucpp_ouch(pUCPP_ char *fmt, ...) { va_list ap; void *str; INIT_CHECK; va_start(ap, fmt); str = F.newstr(); F.scatf(str, "%s: (FATAL) ", r_current_filename); F.vscatf(str, fmt, &ap); va_end(ap); F.fatalerr(str); } /******************************************************************************* * * ROUTINE: my_ucpp_error * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void my_ucpp_error(pUCPP_ long line, char *fmt, ...) { va_list ap; void *str; INIT_CHECK; va_start(ap, fmt); str = F.newstr(); if (line > 0) F.scatf(str, "%s, line %ld: ", r_current_filename, line); else if (line == 0) F.scatf(str, "%s: ", r_current_filename); F.vscatf(str, fmt, &ap); if (line >= 0) { struct stack_context *sc = report_context(aUCPP); size_t i; for (i = 0; sc[i].line >= 0; i++) F.scatf(str, "\n\tincluded from %s:%ld", sc[i].long_name ? sc[i].long_name : sc[i].name, sc[i].line); freemem(sc); } va_end(ap); push_str(r_callback_arg, CTES_ERROR, str); F.destroy(str); } /******************************************************************************* * * ROUTINE: my_ucpp_warning * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void my_ucpp_warning(pUCPP_ long line, char *fmt, ...) { va_list ap; void *str; INIT_CHECK; va_start(ap, fmt); str = F.newstr(); if (line > 0) F.scatf(str, "%s, line %ld: (warning) ", r_current_filename, line); else if (line == 0) F.scatf(str, "%s: (warning) ", r_current_filename); else F.scatf(str, "(warning) "); F.vscatf(str, fmt, &ap); if (line >= 0) { struct stack_context *sc = report_context(aUCPP); size_t i; for (i = 0; sc[i].line >= 0; i++) F.scatf(str, "\n\tincluded from %s:%ld", sc[i].long_name ? sc[i].long_name : sc[i].name, sc[i].line); freemem(sc); } va_end(ap); push_str(r_callback_arg, CTES_WARNING, str); F.destroy(str); } Convert-Binary-C-0.85/ctlib/ctdebug.h0000644000175000001440000000511314677003452016076 0ustar mhxusers/******************************************************************************* * * HEADER: ctdebug.h * ******************************************************************************** * * DESCRIPTION: Debugging support * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CTDEBUG_H #define _CTLIB_CTDEBUG_H /*===== GLOBAL INCLUDES ======================================================*/ #include /*===== LOCAL INCLUDES =======================================================*/ #include "util/ccattr.h" /*===== DEFINES ==============================================================*/ #define DB_CTLIB_MAIN 0x00000001 #define DB_CTLIB_PARSER 0x00000002 #define DB_CTLIB_CLEXER 0x00000004 #define DB_CTLIB_YACC 0x00000008 #define DB_CTLIB_PRAGMA 0x00000010 #define DB_CTLIB_CTLIB 0x00000020 #define DB_CTLIB_HASH 0x00000040 #define DB_CTLIB_TYPE 0x00000080 #define DB_CTLIB_PREPROC 0x00000100 #ifdef CTLIB_DEBUGGING #define DEBUG_FLAG( flag ) \ (g_CT_dbfunc && ((DB_CTLIB_ ## flag) & g_CT_dbflags)) #ifdef CTLIB_FORMAT_CHECK # define CTLIB_DEBUG_FUNC CT_dbfunc_check #else # define CTLIB_DEBUG_FUNC g_CT_dbfunc #endif #define CT_DEBUG( flag, out ) \ do { \ if( DEBUG_FLAG( flag ) ) \ CTLIB_DEBUG_FUNC out ; \ } while(0) #else #define DEBUG_FLAG( flag ) 0 #define CT_DEBUG( flag, out ) (void) 0 #endif /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #ifdef CTLIB_DEBUGGING extern void (*g_CT_dbfunc)(const char *, ...); extern unsigned long g_CT_dbflags; #endif #ifdef CTLIB_DEBUGGING # ifdef CTLIB_FORMAT_CHECK void CT_dbfunc_check( const char *str, ... ) __attribute__(( __format__( __printf__, 1, 2 ), __noreturn__ )); # endif int SetDebugCType( void (*dbfunc)(const char *, ...), void (*dbvprintf)(const char *, va_list *), unsigned long dbflags ); void BisonDebugFunc( void *dummy, const char *fmt, ... ); #else # define SetDebugCType( func, flags ) 0 #endif #endif Convert-Binary-C-0.85/ctlib/byteorder.h0000644000175000001440000000330314677003452016457 0ustar mhxusers/******************************************************************************* * * HEADER: byteorder.h * ******************************************************************************** * * DESCRIPTION: Architecture independent integer conversion. * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_BYTEORDER_H #define _CTLIB_BYTEORDER_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "arch.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef enum { CBO_BIG_ENDIAN, CBO_LITTLE_ENDIAN } CByteOrder; typedef struct { union { u_64 u; i_64 s; } value; int sign; char *string; } IntValue; /*===== FUNCTION PROTOTYPES ==================================================*/ #define string_is_integer CTlib_string_is_integer int string_is_integer(const char *pStr); #define fetch_integer CTlib_fetch_integer void fetch_integer(unsigned size, unsigned sign, unsigned bits, unsigned shift, CByteOrder bo, const void *src, IntValue *pIV); #define store_integer CTlib_store_integer void store_integer(unsigned size, unsigned bits, unsigned shift, CByteOrder bo, void *dest, const IntValue *pIV); #endif Convert-Binary-C-0.85/ctlib/parser.y0000644000175000001440000020742014677003452016003 0ustar mhxusers%{ /******************************************************************************* * * MODULE: parser.y * ******************************************************************************** * * DESCRIPTION: C parser * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * * Portions Copyright (c) 1989, 1990 James A. Roskind. * Also see the original copyright notice below. * *******************************************************************************/ /* Copyright (C) 1989,1990 James A. Roskind, All rights reserved. This grammar was developed and written by James A. Roskind. Copying of this grammar description, as a whole, is permitted providing this notice is intact and applicable in all complete copies. Translations as a whole to other parser generator input languages (or grammar description languages) is permitted provided that this notice is intact and applicable in all such copies, along with a disclaimer that the contents are a translation. The reproduction of derived text, such as modified versions of this grammar, or the output of parser generators, is permitted, provided the resulting work includes the copyright notice "Portions Copyright (c) 1989, 1990 James A. Roskind". Derived products, such as compilers, translators, browsers, etc., that use this grammar, must also provide the notice "Portions Copyright (c) 1989, 1990 James A. Roskind" in a manner appropriate to the utility, and in keeping with copyright law (e.g.: EITHER displayed when first invoked/executed; OR displayed continuously on display terminal; OR via placement in the object code in form readable in a printout, with or near the title of the work, or at the end of the file). No royalties, licenses or commissions of any kind are required to copy this grammar, its translations, or derivative products, when the copies are made in compliance with this notice. Persons or corporations that do make copies in compliance with this notice may charge whatever price is agreeable to a buyer, for such copies or derivative works. THIS GRAMMAR IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. James A. Roskind Independent Consultant 516 Latania Palm Drive Indialantic FL, 32903 (407)729-4348 jar@ileaf.com ACKNOWLEDGMENT: Without the effort expended by the ANSI C standardizing committee, I would have been lost. Although the ANSI C standard does not include a fully disambiguated syntax description, the committee has at least provided most of the disambiguating rules in narratives. Several reviewers have also recently critiqued this grammar, and/or assisted in discussions during it's preparation. These reviewers are certainly not responsible for the errors I have committed here, but they are responsible for allowing me to provide fewer errors. These colleagues include: Bruce Blodgett, and Mark Langley. */ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctdebug.h" #include "ctparse.h" #include "cterror.h" #include "fileinfo.h" #include "parser.h" #include "pragma.h" #include "util/ccattr.h" #include "util/list.h" #include "util/memalloc.h" #include "ucpp/cpp.h" #include "cppreent.h" /*===== DEFINES ==============================================================*/ /* ADDITIONAL BISON CONFIGURATION */ #define YYMAXDEPTH 10000 /* * Bison version >= 1.31 is needed for YYFPRINTF */ #if YYDEBUG && defined CTLIB_DEBUGGING #define YYFPRINTF BisonDebugFunc #endif #define c_error parser_error #define c_parse CTlib_c_parse /* MACROS */ #define PSTATE ((ParserState *) pState) #define DELETE_NODE(node) \ do { \ if (node != NULL) \ HN_delete(node); \ } while (0) #define POSTFIX_DECL(decl, postfix) \ do { \ if (postfix) \ { \ if (decl->pointer_flag) \ LL_destroy(postfix, (LLDestroyFunc) value_delete); \ else \ { \ if (decl->array_flag) \ LL_delete(LL_splice(decl->ext.array, 0, 0, postfix)); \ else \ { \ decl->array_flag = 1; \ decl->ext.array = postfix; \ } \ } \ } \ } while (0) #define MAKE_TYPEDEF(list, decl) \ do { \ Typedef *pTypedef = typedef_new(&(list->type), decl); \ CT_DEBUG(PARSER, ("making new typedef => %s (list @ %p)", \ decl->identifier, list)); \ LL_push(list->typedefs, pTypedef); \ HT_store(PSTATE->pCPI->htTypedefs, decl->identifier, 0, 0, pTypedef);\ } while (0) #define UNDEF_VAL(x) do { x.iv = 0; x.flags = V_IS_UNDEF; } while (0) #define UNARY_OP(result, op, val) \ do { result.iv = op val.iv; result.flags = val.flags; } while (0) #define BINARY_OP(result, val1, op, val2) \ do { \ result.iv = val1.iv op val2.iv; \ result.flags = val1.flags | val2.flags; \ } while (0) #define LLC_OR(t1, t2) \ ( \ ((t1) & T_LONG) && ((t2) & T_LONG) \ ? (t1) | (t2) | T_LONGLONG : (t1) | (t2) \ ) #define F_LOCAL 0x00000001U #define BEGIN_LOCAL (PSTATE->flags |= F_LOCAL) #define END_LOCAL (PSTATE->flags &= ~F_LOCAL) #define IS_LOCAL (PSTATE->flags & F_LOCAL) /*===== TYPEDEFS =============================================================*/ struct _parserState { const CParseConfig *pCPC; CParseInfo *pCPI; PragmaState *pragma; struct CPP *pp; struct lexer_state *pLexer; FileInfo *pFI; u_32 flags; }; %} /*===== YACC PARSER DEFINITION ================================================*/ /* This refined grammar resolves several typedef ambiguities in the draft proposed ANSI C standard syntax down to 1 shift/reduce conflict, as reported by a YACC process. Note that the one shift reduce conflicts is the traditional if-if-else conflict that is not resolved by the grammar. This ambiguity can be removed using the method described in the Dragon Book (2nd edition), but this does not appear worth the effort. There was quite a bit of effort made to reduce the conflicts to this level, and an additional effort was made to make the grammar quite similar to the C++ grammar being developed in parallel. Note that this grammar resolves the following ANSI C ambiguity as follows: ANSI C section 3.5.6, "If the [typedef name] is redeclared at an inner scope, the type specifiers shall not be omitted in the inner declaration". Supplying type specifiers prevents consideration of T as a typedef name in this grammar. Failure to supply type specifiers forced the use of the TYPEDEFname as a type specifier. ANSI C section 3.5.4.3, "In a parameter declaration, a single typedef name in parentheses is taken to be an abstract declarator that specifies a function with a single parameter, not as redundant parentheses around the identifier". This is extended to cover the following cases: typedef float T; int noo(const (T[5])); int moo(const (T(int))); ... Where again the '(' immediately to the left of 'T' is interpreted as being the start of a parameter type list, and not as a redundant paren around a redeclaration of T. Hence an equivalent code fragment is: typedef float T; int noo(const int identifier1 (T identifier2 [5])); int moo(const int identifier1 (T identifier2 (int identifier3))); ... */ %union { HashNode identifier; Declarator *pDecl; AbstractDeclarator absDecl; StructDeclaration *pStructDecl; TypedefList *pTypedefList; LinkedList list; Enumerator *pEnum; Typedef *pTypedef; TypeSpec tspec; Value value; struct { u_32 uval; ContextInfo ctx; } context; u_32 uval; char oper; } %{ /*===== STATIC VARIABLES =====================================================*/ /* TOKEN MAPPING TABLE */ static const int tokentab[] = { 0, /* NONE, */ /* whitespace */ 0, /* NEWLINE, */ /* newline */ 0, /* COMMENT, */ /* comment */ 0, /* NUMBER, */ /* number constant */ 0, /* NAME, */ /* identifier */ 0, /* BUNCH, */ /* non-C characters */ 0, /* PRAGMA, */ /* a #pragma directive */ 0, /* CONTEXT, */ /* new file or #line */ 0, /* STRING, */ /* constant "xxx" */ CONSTANT, /* CHAR, */ /* constant 'xxx' */ '/', /* SLASH, */ /* / */ DIV_ASSIGN, /* ASSLASH, */ /* /= */ '-', /* MINUS, */ /* - */ DEC_OP, /* MMINUS, */ /* -- */ SUB_ASSIGN, /* ASMINUS, */ /* -= */ PTR_OP, /* ARROW, */ /* -> */ '+', /* PLUS, */ /* + */ INC_OP, /* PPLUS, */ /* ++ */ ADD_ASSIGN, /* ASPLUS, */ /* += */ '<', /* LT, */ /* < */ LE_OP, /* LEQ, */ /* <= */ LEFT_OP, /* LSH, */ /* << */ LEFT_ASSIGN, /* ASLSH, */ /* <<= */ '>', /* GT, */ /* > */ GE_OP, /* GEQ, */ /* >= */ RIGHT_OP, /* RSH, */ /* >> */ RIGHT_ASSIGN, /* ASRSH, */ /* >>= */ '=', /* ASGN, */ /* = */ EQ_OP, /* SAME, */ /* == */ #ifdef CAST_OP 0, /* CAST, */ /* => */ #endif '~', /* NOT, */ /* ~ */ NE_OP, /* NEQ, */ /* != */ '&', /* AND, */ /* & */ AND_OP, /* LAND, */ /* && */ AND_ASSIGN, /* ASAND, */ /* &= */ '|', /* OR, */ /* | */ OR_OP, /* LOR, */ /* || */ OR_ASSIGN, /* ASOR, */ /* |= */ '%', /* PCT, */ /* % */ MOD_ASSIGN, /* ASPCT, */ /* %= */ '*', /* STAR, */ /* * */ MUL_ASSIGN, /* ASSTAR, */ /* *= */ '^', /* CIRC, */ /* ^ */ XOR_ASSIGN, /* ASCIRC, */ /* ^= */ '!', /* LNOT, */ /* ! */ '{', /* LBRA, */ /* { */ '}', /* RBRA, */ /* } */ '[', /* LBRK, */ /* [ */ ']', /* RBRK, */ /* ] */ '(', /* LPAR, */ /* ( */ ')', /* RPAR, */ /* ) */ ',', /* COMMA, */ /* , */ '?', /* QUEST, */ /* ? */ ';', /* SEMIC, */ /* ; */ ':', /* COLON, */ /* : */ '.', /* DOT, */ /* . */ ELLIPSIS, /* MDOTS, */ /* ... */ 0, /* SHARP, */ /* # */ 0, /* DSHARP, */ /* ## */ 0, /* OPT_NONE, */ /* optional space to separate tokens in text output */ 0, /* DIGRAPH_TOKENS, */ /* there begin digraph tokens */ /* for DIG_*, do not change order, unless checking undig() in cpp.c */ '[', /* DIG_LBRK, */ /* <: */ ']', /* DIG_RBRK, */ /* :> */ '{', /* DIG_LBRA, */ /* <% */ '}', /* DIG_RBRA, */ /* %> */ 0, /* DIG_SHARP, */ /* %: */ 0, /* DIG_DSHARP, */ /* %:%: */ 0, /* DIGRAPH_TOKENS_END, */ /* digraph tokens end here */ 0, /* LAST_MEANINGFUL_TOKEN, */ /* reserved words will go there */ 0, /* MACROARG, */ /* special token for representing macro arguments */ 0, /* UPLUS = CPPERR, */ /* unary + */ 0, /* UMINUS */ /* unary - */ }; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static inline int c_lex(YYSTYPE *plval, ParserState *pState); static inline int get_char_value(const char *s); static inline int string_size(const char *s); static inline int check_type(YYSTYPE *plval, ParserState *pState, const char *s); static void parser_error(ParserState *pState, const char *msg); %} /* Define terminal tokens */ /* keywords */ %token AUTO_TOK DOUBLE_TOK INT_TOK STRUCT_TOK %token BREAK_TOK ELSE_TOK LONG_TOK SWITCH_TOK %token CASE_TOK ENUM_TOK REGISTER_TOK TYPEDEF_TOK %token CHAR_TOK EXTERN_TOK RETURN_TOK UNION_TOK %token CONST_TOK FLOAT_TOK SHORT_TOK UNSIGNED_TOK %token CONTINUE_TOK FOR_TOK SIGNED_TOK VOID_TOK %token DEFAULT_TOK GOTO_TOK SIZEOF_TOK VOLATILE_TOK %token DO_TOK IF_TOK STATIC_TOK WHILE_TOK /* keywords new in ANSI-C99 */ %token INLINE_TOK RESTRICT_TOK /* special tokens */ %token ASM_TOK %token SKIP_TOK /* Multi-Character operators */ %token PTR_OP /* -> */ %token INC_OP DEC_OP /* ++ -- */ %token LEFT_OP RIGHT_OP /* << >> */ %token LE_OP GE_OP EQ_OP NE_OP /* <= >= == != */ %token AND_OP OR_OP /* && || */ %token ELLIPSIS /* ... */ /* modifying assignment operators */ %token MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN /* *= /= %= */ %token ADD_ASSIGN SUB_ASSIGN /* += -= */ %token LEFT_ASSIGN RIGHT_ASSIGN /* <<= >>= */ %token AND_ASSIGN XOR_ASSIGN OR_ASSIGN /* &= ^= |= */ /* ANSI Grammar suggestions */ %token STRING_LITERAL %token CONSTANT /* New Lexical element, whereas ANSI suggested non-terminal */ %token TYPE_NAME /* Lexer will tell the difference between this and an identifier! An identifier that is CURRENTLY in scope as a typedef name is provided to the parser as a TYPE_NAME.*/ %token IDENTIFIER %type identifier_or_typedef_name %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting node @ %p", $$)); HN_delete($$); } } IDENTIFIER identifier_or_typedef_name %printer { if ($$) fprintf(yyoutput, "'%s' len=%d, hash=0x%lx", $$->key, $$->keylen, (unsigned long)$$->hash); else fprintf(yyoutput, "NULL"); } IDENTIFIER identifier_or_typedef_name %type unary_operator %type enumerator %type abstract_declarator unary_abstract_declarator postfix_abstract_declarator %type declaring_list default_declaring_list %type declaration_specifier sue_declaration_specifier typedef_declaration_specifier elaborated_type_name su_type_specifier sut_type_specifier sue_type_specifier enum_type_specifier typedef_type_specifier aggregate_name enum_name type_specifier %type member_declaration member_declaring_list unnamed_su_declaration %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting struct declaration @ %p", $$)); structdecl_delete($$); } } member_declaration member_declaring_list unnamed_su_declaration %type identifier_declarator declarator member_declarator parameter_typedef_declarator typedef_declarator paren_typedef_declarator clean_typedef_declarator clean_postfix_typedef_declarator paren_postfix_typedef_declarator simple_paren_typedef_declarator unary_identifier_declarator paren_identifier_declarator postfix_identifier_declarator %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting declarator @ %p", $$)); decl_delete($$); } } identifier_declarator declarator member_declarator parameter_typedef_declarator typedef_declarator paren_typedef_declarator clean_typedef_declarator clean_postfix_typedef_declarator paren_postfix_typedef_declarator simple_paren_typedef_declarator unary_identifier_declarator paren_identifier_declarator postfix_identifier_declarator %printer { if ($$) { if ($$->bitfield_flag) fprintf(yyoutput, "%s:%d", $$->identifier, $$->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", $$->pointer_flag ? "*" : "", $$->identifier); if ($$->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, $$->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } identifier_declarator declarator member_declarator parameter_typedef_declarator typedef_declarator paren_typedef_declarator clean_typedef_declarator clean_postfix_typedef_declarator paren_postfix_typedef_declarator simple_paren_typedef_declarator unary_identifier_declarator paren_identifier_declarator postfix_identifier_declarator %type enumerator_list postfixing_abstract_declarator array_abstract_declarator member_declaration_list member_declaration_list_opt %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting enumerator list @ %p", $$)); LL_destroy($$, (LLDestroyFunc) enum_delete); } } enumerator_list %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting array list @ %p", $$)); LL_destroy($$, (LLDestroyFunc) value_delete); } } array_abstract_declarator postfixing_abstract_declarator %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting struct declaration list @ %p", $$)); LL_destroy($$, (LLDestroyFunc) structdecl_delete); } } member_declaration_list member_declaration_list_opt %type basic_declaration_specifier declaration_qualifier_list basic_type_specifier storage_class basic_type_name declaration_qualifier aggregate_key %type aggregate_key_context enum_key_context %type string_literal_list primary_expression postfix_expression unary_expression cast_expression multiplicative_expression additive_expression shift_expression relational_expression equality_expression AND_expression exclusive_OR_expression inclusive_OR_expression logical_AND_expression logical_OR_expression conditional_expression assignment_expression assignment_expression_opt comma_expression constant_expression type_name bit_field_size bit_field_size_opt /*************************************************************************/ %parse-param { ParserState *pState } %lex-param { ParserState *pState } %expect 1 %define api.pure %define parse.error verbose %start source_file /*************************************************************************/ %% string_literal_list : STRING_LITERAL | string_literal_list STRING_LITERAL { BINARY_OP($$, $1, +, $2); } ; /********************* ASSEMBLER DIRECTIVES ***************************/ asm_string : ASM_TOK '(' string_literal_list ')' ; asm_string_opt : /* nothing */ | asm_string ; asm_expr : ASM_TOK '(' comma_expression ')' ';' ; asm_statement : ASM_TOK type_qualifier_list_opt '(' comma_expression ')' ';' | ASM_TOK type_qualifier_list_opt '(' comma_expression ':' asm_operands_opt ')' ';' | ASM_TOK type_qualifier_list_opt '(' comma_expression ':' asm_operands_opt ':' asm_operands_opt ')' ';' | ASM_TOK type_qualifier_list_opt '(' comma_expression ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers ')' ';' ; asm_operands_opt : /* nothing */ | asm_operands ; asm_operands : asm_operand | asm_operands ',' asm_operand ; asm_operand : STRING_LITERAL '(' comma_expression ')' | '[' IDENTIFIER ']' STRING_LITERAL '(' comma_expression ')' { if ($2) HN_delete($2); } ; asm_clobbers : string_literal_list | asm_clobbers ',' string_literal_list ; /************************* EXPRESSIONS ********************************/ primary_expression : IDENTIFIER /* We cannot use a typedef name as a variable */ { UNDEF_VAL($$); if ($1) { Enumerator *pEnum = HT_get(PSTATE->pCPI->htEnumerators, $1->key, $1->keylen, $1->hash); if (pEnum) { CT_DEBUG(CLEXER, ("enum found!")); $$ = pEnum->value; } HN_delete($1); } } | CONSTANT | string_literal_list { $$ = $1; $$.iv++; } | '(' comma_expression ')' { $$ = $2; } ; /* * We don't have to deal with postfix expressions currently, since a primary * expression (which the postfix expression is based on) cannot be a type, * but only a variable. And we don't support sizeof(variable) at the moment, * since all variables are discarded. */ postfix_expression : primary_expression | postfix_expression '[' comma_expression ']' { UNDEF_VAL($$); } | postfix_expression '(' ')' { UNDEF_VAL($$); } | postfix_expression '(' argument_expression_list ')' { UNDEF_VAL($$); } | postfix_expression {} '.' member_name { UNDEF_VAL($$); } | postfix_expression {} PTR_OP member_name { UNDEF_VAL($$); } | postfix_expression INC_OP { UNDEF_VAL($$); } | postfix_expression DEC_OP { UNDEF_VAL($$); } | '(' type_name ')' '{' initializer_list comma_opt '}' { UNDEF_VAL($$); } /* ANSI-C99 addition */ ; member_name : IDENTIFIER { if($1) HN_delete($1); } | TYPE_NAME {} ; argument_expression_list : assignment_expression {} | argument_expression_list ',' assignment_expression {} ; unary_expression : postfix_expression | INC_OP unary_expression { UNDEF_VAL($$); } | DEC_OP unary_expression { UNDEF_VAL($$); } | unary_operator cast_expression { switch( $1 ) { case '-' : UNARY_OP($$, -, $2); break; case '~' : UNARY_OP($$, ~, $2); break; case '!' : UNARY_OP($$, !, $2); break; case '+' : $$ = $2; break; case '*' : case '&' : $$ = $2; $$.flags |= V_IS_UNSAFE_PTROP; break; default: UNDEF_VAL($$); break; } } | SIZEOF_TOK unary_expression { $$ = $2; } | SIZEOF_TOK '(' type_name ')' { $$ = $3; } ; unary_operator : '&' { $$ = '&'; } | '*' { $$ = '*'; } | '+' { $$ = '+'; } | '-' { $$ = '-'; } | '~' { $$ = '~'; } | '!' { $$ = '!'; } ; cast_expression : unary_expression | '(' type_name ')' cast_expression { $$ = $4; $$.flags |= V_IS_UNSAFE_CAST; } ; multiplicative_expression : cast_expression | multiplicative_expression '*' cast_expression { BINARY_OP( $$, $1, *, $3 ); } | multiplicative_expression '/' cast_expression { if ($3.iv == 0) UNDEF_VAL($$); else BINARY_OP($$, $1, /, $3); } | multiplicative_expression '%' cast_expression { if ($3.iv == 0) UNDEF_VAL($$); else BINARY_OP($$, $1, %, $3); } ; additive_expression : multiplicative_expression | additive_expression '+' multiplicative_expression { BINARY_OP($$, $1, +, $3); } | additive_expression '-' multiplicative_expression { BINARY_OP($$, $1, -, $3); } ; shift_expression : additive_expression | shift_expression LEFT_OP additive_expression { BINARY_OP($$, $1, <<, $3); } | shift_expression RIGHT_OP additive_expression { BINARY_OP($$, $1, >>, $3); } ; relational_expression : shift_expression | relational_expression '<' shift_expression { BINARY_OP($$, $1, <, $3); } | relational_expression '>' shift_expression { BINARY_OP($$, $1, >, $3); } | relational_expression LE_OP shift_expression { BINARY_OP($$, $1, <=, $3); } | relational_expression GE_OP shift_expression { BINARY_OP($$, $1, >=, $3); } ; equality_expression : relational_expression | equality_expression EQ_OP relational_expression { BINARY_OP($$, $1, ==, $3); } | equality_expression NE_OP relational_expression { BINARY_OP($$, $1, !=, $3); } ; AND_expression : equality_expression | AND_expression '&' equality_expression { BINARY_OP($$, $1, &, $3); } ; exclusive_OR_expression : AND_expression | exclusive_OR_expression '^' AND_expression { BINARY_OP($$, $1, ^, $3); } ; inclusive_OR_expression : exclusive_OR_expression | inclusive_OR_expression '|' exclusive_OR_expression { BINARY_OP($$, $1, |, $3); } ; logical_AND_expression : inclusive_OR_expression | logical_AND_expression AND_OP inclusive_OR_expression { BINARY_OP($$, $1, &&, $3); } ; logical_OR_expression : logical_AND_expression | logical_OR_expression OR_OP logical_AND_expression { BINARY_OP($$, $1, ||, $3); } ; conditional_expression : logical_OR_expression | logical_OR_expression '?' comma_expression ':' conditional_expression { $$ = $1.iv ? $3 : $5; $$.flags |= $1.flags; } ; assignment_expression : conditional_expression | unary_expression assignment_operator assignment_expression { UNDEF_VAL($$); } ; assignment_operator : '=' {} | MUL_ASSIGN {} | DIV_ASSIGN {} | MOD_ASSIGN {} | ADD_ASSIGN {} | SUB_ASSIGN {} | LEFT_ASSIGN {} | RIGHT_ASSIGN {} | AND_ASSIGN {} | XOR_ASSIGN {} | OR_ASSIGN {} ; assignment_expression_opt : /* nothing */ { UNDEF_VAL($$); } | assignment_expression comma_expression : assignment_expression | comma_expression ',' assignment_expression { $$ = $3; } ; constant_expression : conditional_expression ; /* The following was used for clarity */ comma_expression_opt : /* Nothing */ | comma_expression {} ; /******************************* DECLARATIONS *********************************/ /* The following is different from the ANSI C specified grammar. The changes were made to disambiguate typedef's presence in declaration_specifiers (vs. in the declarator for redefinition); to allow struct/union/enum tag declarations without declarators, and to better reflect the parsing of declarations (declarators must be combined with declaration_specifiers ASAP so that they are visible in scope). Example of typedef use as either a declaration_specifier or a declarator: typedef int T; struct S { T T;}; / * redefinition of T as member name * / Example of legal and illegal statements detected by this grammar: int; / * syntax error: vacuous declaration * / struct S; / * no error: tag is defined or elaborated * / Example of result of proper declaration binding: int a=sizeof(a); / * note that "a" is declared with a type in the name space BEFORE parsing the initializer * / int b, c[sizeof(b)]; / * Note that the first declarator "b" is declared with a type BEFORE the second declarator is parsed * / */ declaration : sue_declaration_specifier ';' {} | sue_type_specifier ';' {} | declaring_list ';' {} | default_declaring_list ';' {} ; /* Note that if a typedef were redeclared, then a declaration specifier must be supplied */ default_declaring_list /* Can't redeclare typedef names */ : declaration_qualifier_list identifier_declarator asm_string_opt initializer_opt { if (IS_LOCAL) $$ = NULL; else { if ($1 & T_TYPEDEF) { TypeSpec ts; ts.tflags = $1; ts.ptr = NULL; if ((ts.tflags & ANY_TYPE_NAME) == 0) ts.tflags |= T_INT; $$ = typedef_list_new(ts, LL_new()); LL_push(PSTATE->pCPI->typedef_lists, $$); MAKE_TYPEDEF($$, $2); } else { $$ = NULL; decl_delete($2); } } } | type_qualifier_list identifier_declarator asm_string_opt initializer_opt { $$ = NULL; if ($2) decl_delete($2); } | default_declaring_list ',' identifier_declarator asm_string_opt initializer_opt { $$ = $1; if ($$) MAKE_TYPEDEF($$, $3); else if($3) decl_delete($3); } ; declaring_list : declaration_specifier declarator asm_string_opt initializer_opt { if (IS_LOCAL) $$ = NULL; else { if ($1.tflags & T_TYPEDEF) { if (($1.tflags & ANY_TYPE_NAME) == 0) $1.tflags |= T_INT; ctt_refcount_inc($1.ptr); $$ = typedef_list_new($1, LL_new()); LL_push(PSTATE->pCPI->typedef_lists, $$); MAKE_TYPEDEF($$, $2); } else { $$ = NULL; decl_delete($2); } } } | type_specifier declarator asm_string_opt initializer_opt { $$ = NULL; if ($2) decl_delete($2); } | declaring_list ',' declarator asm_string_opt initializer_opt { $$ = $1; if ($$) MAKE_TYPEDEF($$, $3); else if ($3) decl_delete($3); } ; /* those are all potential typedefs */ declaration_specifier : basic_declaration_specifier /* Arithmetic or void */ { $$.ptr = NULL; $$.tflags = $1; } | sue_declaration_specifier /* struct/union/enum */ | typedef_declaration_specifier /* typedef*/ ; /* those can't be typedefs */ type_specifier : basic_type_specifier /* Arithmetic or void */ { $$.ptr = NULL; $$.tflags = $1; } | sue_type_specifier /* Struct/Union/Enum */ | typedef_type_specifier /* Typedef */ ; /* those are all potential typedefs */ declaration_qualifier_list /* const/volatile, AND storage class */ : storage_class | type_qualifier_list storage_class { $$ = $2; } | declaration_qualifier_list declaration_qualifier { $$ = $1 | $2; } ; type_qualifier_list : type_qualifier | type_qualifier_list type_qualifier ; type_qualifier_list_opt : /* nothing */ | type_qualifier_list ; declaration_qualifier : storage_class | type_qualifier { $$ = 0; } /* const or volatile */ ; type_qualifier : CONST_TOK | RESTRICT_TOK | VOLATILE_TOK ; basic_declaration_specifier /* Storage Class+Arithmetic or void */ : declaration_qualifier_list basic_type_name { $$ = LLC_OR($1, $2); } | basic_type_specifier storage_class { $$ = LLC_OR($1, $2); } | basic_declaration_specifier declaration_qualifier { $$ = LLC_OR($1, $2); } | basic_declaration_specifier basic_type_name { $$ = LLC_OR($1, $2); } ; basic_type_specifier /* Arithmetic or void */ : basic_type_name | type_qualifier_list basic_type_name { $$ = $2; } | basic_type_specifier type_qualifier { $$ = $1; } | basic_type_specifier basic_type_name { $$ = LLC_OR($1, $2); } ; sue_declaration_specifier /* Storage Class + struct/union/enum */ : declaration_qualifier_list elaborated_type_name { $$.ptr = $2.ptr; $$.tflags = $2.tflags | $1; } | sue_type_specifier storage_class { $$.ptr = $1.ptr; $$.tflags = $1.tflags | $2; } | sue_declaration_specifier declaration_qualifier { $$.ptr = $1.ptr; $$.tflags = $1.tflags | $2; } ; sue_type_specifier /* struct/union/enum */ : su_type_specifier | enum_type_specifier ; enum_type_specifier /* enum */ : enum_name | type_qualifier_list enum_name { $$ = $2; } /* we don't care about */ | enum_type_specifier type_qualifier { $$ = $1; } /* type qualifiers */ ; su_type_specifier /* struct/union */ : aggregate_name | type_qualifier_list aggregate_name { $$ = $2; } /* we don't care about */ | su_type_specifier type_qualifier { $$ = $1; } /* type qualifiers */ ; sut_type_specifier /* struct/union/typedef */ : su_type_specifier | typedef_type_specifier typedef_declaration_specifier /* Storage Class + typedef types */ : typedef_type_specifier storage_class { $$.ptr = $1.ptr; $$.tflags = $1.tflags | $2; } | declaration_qualifier_list TYPE_NAME { $$.ptr = $2; $$.tflags = T_TYPE | $1; } | typedef_declaration_specifier declaration_qualifier { $$.ptr = $1.ptr; $$.tflags = $1.tflags | $2; } ; typedef_type_specifier /* typedef types */ : TYPE_NAME { $$.ptr = $1; $$.tflags = T_TYPE; } | type_qualifier_list TYPE_NAME { $$.ptr = $2; $$.tflags = T_TYPE; } /* we don't care about */ | typedef_type_specifier type_qualifier { $$ = $1; } /* type qualifiers */ ; storage_class : TYPEDEF_TOK { $$ = T_TYPEDEF; } | EXTERN_TOK { $$ = 0; } | STATIC_TOK { $$ = 0; } | AUTO_TOK { $$ = 0; } /* don't care about anything but typedefs */ | REGISTER_TOK { $$ = 0; } | INLINE_TOK { $$ = 0; } /* ANSI-C99 */ ; basic_type_name : INT_TOK { $$ = T_INT; } | CHAR_TOK { $$ = T_CHAR; } | SHORT_TOK { $$ = T_SHORT; } | LONG_TOK { $$ = T_LONG; } | FLOAT_TOK { $$ = T_FLOAT; } | DOUBLE_TOK { $$ = T_DOUBLE; } | SIGNED_TOK { $$ = T_SIGNED; } | UNSIGNED_TOK { $$ = T_UNSIGNED; } | VOID_TOK { $$ = T_VOID; } ; elaborated_type_name : aggregate_name | enum_name ; aggregate_name : aggregate_key_context '{' member_declaration_list_opt '}' { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; } else { Struct *pStruct; pStruct = struct_new(NULL, 0, $1.uval, pragma_parser_get_pack(PSTATE->pragma), $3); pStruct->context = $1.ctx; LL_push(PSTATE->pCPI->structs, pStruct); $$.tflags = $1.uval; $$.ptr = pStruct; } } | aggregate_key_context identifier_or_typedef_name '{' member_declaration_list_opt '}' { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { Struct *pStruct = HT_get(PSTATE->pCPI->htStructs, $2->key, $2->keylen, $2->hash); if (pStruct == NULL) { pStruct = struct_new($2->key, $2->keylen, $1.uval, pragma_parser_get_pack(PSTATE->pragma), $4); pStruct->context = $1.ctx; LL_push(PSTATE->pCPI->structs, pStruct); HT_storenode(PSTATE->pCPI->htStructs, $2, pStruct); } else { DELETE_NODE($2); if (pStruct->declarations == NULL) { pStruct->context = $1.ctx; pStruct->declarations = $4; pStruct->pack = pragma_parser_get_pack(PSTATE->pragma); } else LL_destroy($4, (LLDestroyFunc) structdecl_delete); } $$.tflags = $1.uval; $$.ptr = pStruct; } } | aggregate_key_context identifier_or_typedef_name { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { Struct *pStruct = HT_get(PSTATE->pCPI->htStructs, $2->key, $2->keylen, $2->hash); if (pStruct == NULL) { pStruct = struct_new($2->key, $2->keylen, $1.uval, 0, NULL); pStruct->context = $1.ctx; LL_push(PSTATE->pCPI->structs, pStruct); HT_storenode(PSTATE->pCPI->htStructs, $2, pStruct); } else DELETE_NODE($2); $$.tflags = $1.uval; $$.ptr = pStruct; } } ; aggregate_key_context : aggregate_key { $$.uval = $1; $$.ctx.pFI = PSTATE->pFI; $$.ctx.line = PSTATE->pLexer->ctok->line; } ; aggregate_key : STRUCT_TOK { $$ = T_STRUCT; } | UNION_TOK { $$ = T_UNION; } ; member_declaration_list_opt : /* nothing */ { $$ = IS_LOCAL ? NULL : LL_new(); } | member_declaration_list ; member_declaration_list : member_declaration { if (IS_LOCAL) $$ = NULL; else { ctt_refcount_inc($1->type.ptr); $$ = LL_new(); LL_push($$, $1); } } | member_declaration_list member_declaration { if (IS_LOCAL) $$ = NULL; else { ctt_refcount_inc($2->type.ptr); $$ = $1; LL_push($$, $2); } } ; member_declaration : member_declaring_list ';' | unnamed_su_declaration ';' ; unnamed_su_declaration : sut_type_specifier { $$ = IS_LOCAL ? NULL : structdecl_new($1, NULL); } ; member_declaring_list : type_specifier member_declarator { if (IS_LOCAL) $$ = NULL; else { if (($1.tflags & ANY_TYPE_NAME) == 0) $1.tflags |= T_INT; $$ = structdecl_new($1, LL_new()); if ($2) LL_push($$->declarators, $2); } } | member_declaring_list ',' member_declarator { if (IS_LOCAL) $$ = NULL; else { $$ = $1; if ($3) LL_push($$->declarators, $3); } } ; member_declarator : declarator bit_field_size_opt { if (IS_LOCAL) $$ = NULL; else { $$ = $1; if (($2.flags & V_IS_UNDEF) == 0) { if ($2.iv <= 0) { char *msg; AllocF(char *, msg, 80 + CTT_IDLEN($1)); sprintf(msg, "%s width for bit-field '%s'", $2.iv < 0 ? "negative" : "zero", $1->identifier); decl_delete($1); yyerror(pState, msg); Free(msg); YYERROR; } $$->bitfield_flag = 1; $$->ext.bitfield.bits = (unsigned char) $2.iv; } } } | bit_field_size { if (IS_LOCAL) $$ = NULL; else { if ($1.iv < 0) { yyerror(pState, "negative width for bit-field"); YYERROR; } $$ = decl_new("", 0); $$->bitfield_flag = 1; $$->ext.bitfield.bits = (unsigned char) $1.iv; } } ; bit_field_size_opt : /* nothing */ { UNDEF_VAL($$); } | bit_field_size ; bit_field_size : ':' constant_expression { $$ = $2; } ; enum_name : enum_key_context '{' enumerator_list comma_opt '}' { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; LL_destroy($3, (LLDestroyFunc) enum_delete); } else { EnumSpecifier *pEnum = enumspec_new(NULL, 0, $3); pEnum->context = $1.ctx; LL_push(PSTATE->pCPI->enums, pEnum); $$.tflags = T_ENUM; $$.ptr = pEnum; } } | enum_key_context identifier_or_typedef_name '{' enumerator_list comma_opt '}' { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { EnumSpecifier *pEnum = HT_get(PSTATE->pCPI->htEnums, $2->key, $2->keylen, $2->hash); if (pEnum == NULL) { pEnum = enumspec_new($2->key, $2->keylen, $4); pEnum->context = $1.ctx; LL_push(PSTATE->pCPI->enums, pEnum); HT_storenode(PSTATE->pCPI->htEnums, $2, pEnum); } else { DELETE_NODE($2); if (pEnum->enumerators == NULL) { enumspec_update(pEnum, $4); pEnum->context = $1.ctx; } else LL_destroy($4, (LLDestroyFunc) enum_delete); } $$.tflags = T_ENUM; $$.ptr = pEnum; } } | enum_key_context identifier_or_typedef_name { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { EnumSpecifier *pEnum = HT_get(PSTATE->pCPI->htEnums, $2->key, $2->keylen, $2->hash); if (pEnum == NULL) { pEnum = enumspec_new($2->key, $2->keylen, NULL); pEnum->context = $1.ctx; LL_push(PSTATE->pCPI->enums, pEnum); HT_storenode(PSTATE->pCPI->htEnums, $2, pEnum); } else { DELETE_NODE($2); } $$.tflags = T_ENUM; $$.ptr = pEnum; } } ; enum_key_context : ENUM_TOK { $$.ctx.pFI = PSTATE->pFI; $$.ctx.line = PSTATE->pLexer->ctok->line; } ; enumerator_list : enumerator { if (IS_LOCAL) $$ = NULL; else { $$ = LL_new(); if ($1->value.flags & V_IS_UNDEF) { $1->value.flags &= ~V_IS_UNDEF; $1->value.iv = 0; } LL_push($$, $1); } } | enumerator_list ',' enumerator { if (IS_LOCAL) $$ = NULL; else { if ($3->value.flags & V_IS_UNDEF) { Enumerator *pEnum = LL_get($1, -1); $3->value.flags = pEnum->value.flags; $3->value.iv = pEnum->value.iv + 1; } LL_push($1, $3); $$ = $1; } } ; enumerator : identifier_or_typedef_name { if (IS_LOCAL) { $$ = NULL; /* identifier_or_typedef_name is NULL */ } else { $$ = enum_new($1->key, $1->keylen, NULL); HT_storenode(PSTATE->pCPI->htEnumerators, $1, $$); } } | identifier_or_typedef_name '=' constant_expression { if (IS_LOCAL) { $$ = NULL; /* identifier_or_typedef_name is NULL */ } else { $$ = enum_new($1->key, $1->keylen, &$3); HT_storenode(PSTATE->pCPI->htEnumerators, $1, $$); } } ; parameter_type_list : parameter_list | parameter_list ',' ELLIPSIS ; parameter_list : parameter_declaration | parameter_list ',' parameter_declaration ; parameter_declaration : declaration_specifier {} | declaration_specifier abstract_declarator {} | declaration_specifier identifier_declarator { if ($2) decl_delete($2); } | declaration_specifier parameter_typedef_declarator { if ($2) decl_delete($2); } | declaration_qualifier_list {} | declaration_qualifier_list abstract_declarator {} | declaration_qualifier_list identifier_declarator { if ($2) decl_delete($2); } | type_specifier {} | type_specifier abstract_declarator {} | type_specifier identifier_declarator { if ($2) decl_delete($2); } | type_specifier parameter_typedef_declarator { if ($2) decl_delete($2); } | type_qualifier_list {} | type_qualifier_list abstract_declarator {} | type_qualifier_list identifier_declarator { if ($2) decl_delete($2); } ; /* ANSI C section 3.7.1 states "An identifier declared as a typedef name shall not be redeclared as a parameter". Hence the following is based only on IDENTIFIERs */ identifier_list : IDENTIFIER { if ($1) HN_delete($1); } | identifier_list ',' IDENTIFIER { if ($3) HN_delete($3); } ; identifier_or_typedef_name : IDENTIFIER | TYPE_NAME { $$ = IS_LOCAL ? NULL : HN_new($1->pDecl->identifier, CTT_IDLEN($1->pDecl), 0); } ; type_name : type_specifier { if (!IS_LOCAL) { unsigned size; u_32 flags; (void) PSTATE->pCPC->get_type_info(&PSTATE->pCPC->layout, &$1, NULL, "sf", &size, &flags); $$.iv = size; $$.flags = 0; if (flags & T_UNSAFE_VAL) $$.flags |= V_IS_UNSAFE; } } | type_specifier abstract_declarator { if (!IS_LOCAL) { if ($2.pointer_flag) { $$.iv = PSTATE->pCPC->layout.ptr_size * $2.multiplicator; $$.flags = 0; } else { unsigned size; u_32 flags; (void) PSTATE->pCPC->get_type_info(&PSTATE->pCPC->layout, &$1, NULL, "sf", &size, &flags); $$.iv = size * $2.multiplicator; $$.flags = 0; if (flags & T_UNSAFE_VAL) $$.flags |= V_IS_UNSAFE; } } } | type_qualifier_list { if (!IS_LOCAL) { $$.iv = PSTATE->pCPC->layout.int_size; $$.flags = 0; } } | type_qualifier_list abstract_declarator { if (!IS_LOCAL) { $$.iv = $2.multiplicator * ($2.pointer_flag ? PSTATE->pCPC->layout.ptr_size : PSTATE->pCPC->layout.int_size); $$.flags = 0; } } ; initializer_opt : /* nothing */ | '=' initializer ; initializer : '{' '}' | '{' initializer_list comma_opt '}' | assignment_expression {} ; initializer_list : designation_opt initializer | initializer_list ',' designation_opt initializer ; designation_opt : /* nothing */ | designator_list '=' ; designator_list : designator | designator_list designator ; designator : '[' constant_expression ']' | '.' identifier_or_typedef_name { DELETE_NODE($2); } ; comma_opt : /* nothing */ | ',' ; /*************************** STATEMENTS *******************************/ statement : labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | asm_statement ; labeled_statement : identifier_or_typedef_name ':' statement { DELETE_NODE($1); } | CASE_TOK constant_expression ':' statement | DEFAULT_TOK ':' statement ; compound_statement : '{' '}' | '{' declaration_list '}' | '{' statement_list '}' | '{' declaration_list statement_list '}' ; declaration_list : declaration | declaration_list declaration ; statement_list : statement | statement_list statement ; expression_statement : comma_expression_opt ';' ; selection_statement : IF_TOK '(' comma_expression ')' statement | IF_TOK '(' comma_expression ')' statement ELSE_TOK statement | SWITCH_TOK '(' comma_expression ')' statement ; iteration_statement : WHILE_TOK '(' comma_expression ')' statement | DO_TOK statement WHILE_TOK '(' comma_expression ')' ';' | FOR_TOK '(' comma_expression_opt ';' comma_expression_opt ';' comma_expression_opt ')' statement ; jump_statement : GOTO_TOK identifier_or_typedef_name ';' { DELETE_NODE($2); } | CONTINUE_TOK ';' | BREAK_TOK ';' | RETURN_TOK comma_expression_opt ';' ; /***************************** EXTERNAL DEFINITIONS *****************************/ source_file : /* empty file */ | translation_unit ; translation_unit : external_definition | translation_unit external_definition ; external_definition : function_definition | declaration | asm_expr ; function_definition : identifier_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; decl_delete($1); } | declaration_specifier identifier_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; decl_delete($2); } | type_specifier identifier_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; decl_delete($2); } | declaration_qualifier_list identifier_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; decl_delete($2); } | type_qualifier_list identifier_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; decl_delete($2); } | old_function_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | declaration_specifier old_function_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | type_specifier old_function_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | declaration_qualifier_list old_function_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | type_qualifier_list old_function_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | old_function_declarator declaration_list { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | declaration_specifier old_function_declarator declaration_list { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | type_specifier old_function_declarator declaration_list { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | declaration_qualifier_list old_function_declarator declaration_list { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | type_qualifier_list old_function_declarator declaration_list { BEGIN_LOCAL; } compound_statement { END_LOCAL; } ; declarator : identifier_declarator | typedef_declarator ; typedef_declarator : paren_typedef_declarator /* would be ambiguous as parameter*/ | parameter_typedef_declarator /* not ambiguous as param*/ ; parameter_typedef_declarator : TYPE_NAME { $$ = IS_LOCAL ? NULL : decl_new($1->pDecl->identifier, CTT_IDLEN($1->pDecl)); } | TYPE_NAME postfixing_abstract_declarator { if (IS_LOCAL) $$ = NULL; else { $$ = decl_new($1->pDecl->identifier, CTT_IDLEN($1->pDecl)); if ($2) { $$->array_flag = 1; $$->ext.array = $2; } } } | clean_typedef_declarator ; /* The following have at least one '*'. There is no (redundant) '(' between the '*' and the TYPE_NAME. */ clean_typedef_declarator : clean_postfix_typedef_declarator | '*' parameter_typedef_declarator { if ($2) $2->pointer_flag = 1; $$ = $2; } | '*' type_qualifier_list parameter_typedef_declarator { if ($3) $3->pointer_flag = 1; $$ = $3; } ; clean_postfix_typedef_declarator : '(' clean_typedef_declarator ')' { $$ = $2; } | '(' clean_typedef_declarator ')' postfixing_abstract_declarator { POSTFIX_DECL($2, $4); $$ = $2; } ; /* The following have a redundant '(' placed immediately to the left of the TYPE_NAME */ paren_typedef_declarator : paren_postfix_typedef_declarator | '*' '(' simple_paren_typedef_declarator ')' { if ($3) $3->pointer_flag = 1; $$ = $3; } | '*' type_qualifier_list '(' simple_paren_typedef_declarator ')' { if ($4) $4->pointer_flag = 1; $$ = $4; } | '*' paren_typedef_declarator { if ($2) $2->pointer_flag = 1; $$ = $2; } | '*' type_qualifier_list paren_typedef_declarator { if ($3) $3->pointer_flag = 1; $$ = $3; } ; paren_postfix_typedef_declarator : '(' paren_typedef_declarator ')' { $$ = $2; } | '(' simple_paren_typedef_declarator postfixing_abstract_declarator ')' { POSTFIX_DECL($2, $3); $$ = $2; } | '(' paren_typedef_declarator ')' postfixing_abstract_declarator { POSTFIX_DECL($2, $4); $$ = $2; } ; simple_paren_typedef_declarator : TYPE_NAME { $$ = IS_LOCAL ? NULL : decl_new($1->pDecl->identifier, CTT_IDLEN($1->pDecl)); } | '(' simple_paren_typedef_declarator ')' { $$ = $2; } ; identifier_declarator : unary_identifier_declarator | paren_identifier_declarator ; unary_identifier_declarator : postfix_identifier_declarator | '*' identifier_declarator { if ($2) $2->pointer_flag = 1; $$ = $2; } | '*' type_qualifier_list identifier_declarator { if ($3) $3->pointer_flag = 1; $$ = $3; } ; postfix_identifier_declarator : paren_identifier_declarator postfixing_abstract_declarator { POSTFIX_DECL($1, $2); $$ = $1; } | '(' unary_identifier_declarator ')' { $$ = $2; } | '(' unary_identifier_declarator ')' postfixing_abstract_declarator { POSTFIX_DECL($2, $4); $$ = $2; } ; paren_identifier_declarator : IDENTIFIER { if ($1) { $$ = decl_new($1->key, $1->keylen); HN_delete($1); } else { $$ = NULL; } } | '(' paren_identifier_declarator ')' { $$ = $2; } ; old_function_declarator : postfix_old_function_declarator {} | '*' old_function_declarator {} | '*' type_qualifier_list old_function_declarator {} ; postfix_old_function_declarator : paren_identifier_declarator '(' identifier_list ')' { if ($1) decl_delete($1); } | '(' old_function_declarator ')' {} | '(' old_function_declarator ')' postfixing_abstract_declarator { if ($4) LL_destroy($4, (LLDestroyFunc) value_delete); } ; abstract_declarator : unary_abstract_declarator | postfix_abstract_declarator | postfixing_abstract_declarator { $$.pointer_flag = 0; $$.multiplicator = 1; if ($1) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, $1) $$.multiplicator *= pValue->iv; LL_destroy($1, (LLDestroyFunc) value_delete); } } ; postfixing_abstract_declarator : array_abstract_declarator | '(' ')' { $$ = NULL; } | '(' parameter_type_list ')' { $$ = NULL; } ; array_abstract_declarator : '[' type_qualifier_list_opt assignment_expression_opt ']' { if (IS_LOCAL) $$ = NULL; else { $$ = LL_new(); LL_push($$, value_new($3.iv, $3.flags)); CT_DEBUG(PARSER, ("array dimension => %ld", $3.iv)); } } | '[' STATIC_TOK type_qualifier_list_opt assignment_expression ']' { if (IS_LOCAL) $$ = NULL; else { $$ = LL_new(); LL_push($$, value_new($4.iv, $4.flags)); CT_DEBUG(PARSER, ("array dimension => %ld", $4.iv)); } } | '[' type_qualifier_list STATIC_TOK assignment_expression ']' { if (IS_LOCAL) $$ = NULL; else { $$ = LL_new(); LL_push($$, value_new($4.iv, $4.flags)); CT_DEBUG(PARSER, ("array dimension => %ld", $4.iv)); } } | '[' type_qualifier_list_opt '*' ']' { $$ = NULL; } | array_abstract_declarator '[' assignment_expression ']' { if (IS_LOCAL) $$ = NULL; else { $$ = $1 ? $1 : LL_new(); LL_push($$, value_new($3.iv, $3.flags)); CT_DEBUG(PARSER, ("array dimension => %ld", $3.iv)); } } | array_abstract_declarator '[' '*' ']' { if (IS_LOCAL) $$ = NULL; else { $$ = $1 ? $1 : LL_new(); LL_push($$, value_new(0, 0)); CT_DEBUG(PARSER, ("array dimension => *" )); } } ; unary_abstract_declarator : '*' { $$.pointer_flag = 1; $$.multiplicator = 1; } | '*' type_qualifier_list { $$.pointer_flag = 1; $$.multiplicator = 1; } | '*' abstract_declarator { $2.pointer_flag = 1; $$ = $2; } | '*' type_qualifier_list abstract_declarator { $3.pointer_flag = 1; $$ = $3; } ; postfix_abstract_declarator : '(' unary_abstract_declarator ')' { $$ = $2; } | '(' postfix_abstract_declarator ')' { $$ = $2; } | '(' postfixing_abstract_declarator ')' { $$.pointer_flag = 0; $$.multiplicator = 1; if ($2) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, $2) $$.multiplicator *= pValue->iv; LL_destroy($2, (LLDestroyFunc) value_delete); } } | '(' unary_abstract_declarator ')' postfixing_abstract_declarator { $$ = $2; if ($4) LL_destroy($4, (LLDestroyFunc) value_delete); } ; %% /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: c_lex * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: C lexer. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int c_lex(YYSTYPE *plval, ParserState *pState) { int rval, token; struct lexer_state *pLexer = pState->pLexer; dUCPP(pState->pp); CT_DEBUG(CLEXER, ("parser.y::c_lex()")); while ((rval = lex(aUCPP_ pLexer)) < CPPERR_EOF) { if (rval) { CT_DEBUG(CLEXER, ("lex() returned %d", rval)); continue; } token = pLexer->ctok->type; switch (token) { case NONE: CT_DEBUG(CLEXER, ("token-type => NONE")); break; case COMMENT: CT_DEBUG(CLEXER, ("token-type => COMMENT => [%s]", pLexer->ctok->name)); break; case NEWLINE: CT_DEBUG(CLEXER, ("token-type => NEWLINE")); break; case BUNCH: CT_DEBUG(CLEXER, ("token-type => BUNCH => [%s]", pLexer->ctok->name)); break; case CONTEXT: CT_DEBUG(CLEXER, ("token-type => CONTEXT => [%s]", pLexer->ctok->name)); { FileInfo *pFI; size_t len = strlen(pLexer->ctok->name); CT_DEBUG(CLEXER, ("new context: file '%s', line %ld", pLexer->ctok->name, pLexer->ctok->line)); pFI = HT_get(pState->pCPI->htFiles, pLexer->ctok->name, len, 0); if (pFI == NULL) { pFI = fileinfo_new(pLexer->input, pLexer->ctok->name, len); HT_store(pState->pCPI->htFiles, pLexer->ctok->name, len, 0, pFI); } pState->pFI = pFI; } break; case NUMBER: CT_DEBUG(CLEXER, ("token-type => NUMBER => [%s]", pLexer->ctok->name)); plval->value.iv = strtol(pLexer->ctok->name, NULL, 0); plval->value.flags = 0; CT_DEBUG(CLEXER, ("constant: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return CONSTANT; case STRING: CT_DEBUG(CLEXER, ("token-type => STRING => [%s]", pLexer->ctok->name)); plval->value.iv = string_size(pLexer->ctok->name); plval->value.flags = 0; CT_DEBUG(CLEXER, ("string literal: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return STRING_LITERAL; case CHAR: CT_DEBUG(CLEXER, ("token-type => CHAR => [%s]", pLexer->ctok->name)); plval->value.iv = get_char_value(pLexer->ctok->name); plval->value.flags = 0; CT_DEBUG(CLEXER, ("constant: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return CONSTANT; case PRAGMA: CT_DEBUG(CLEXER, ("token-type => PRAGMA")); CT_DEBUG(CLEXER, ("line %ld: <#pragma>", pLexer->line)); pragma_parser_set_context(pState->pragma, pState->pFI ? pState->pFI->name : "unknown", pLexer->line - 1, pLexer->ctok->name); pragma_parser_parse(pState->pragma); CT_DEBUG(CLEXER, ("current packing: %d\n", pragma_parser_get_pack(pState->pragma))); break; case NAME: CT_DEBUG(CLEXER, ("token-type => NAME => [%s]", pLexer->ctok->name)); { char *tokstr = pLexer->ctok->name; const CKeywordToken *ckt; #include "token/t_parser.c" unknown: if ((ckt = HT_get(pState->pCPC->keyword_map, tokstr, 0, 0)) != NULL) { if (ckt->token == SKIP_TOK) { CT_DEBUG(CLEXER, ("skipping token '%s' in line %ld", tokstr, pLexer->line)); break; } return ckt->token; } return check_type(plval, pState, tokstr); } default: CT_DEBUG(CLEXER, ("token-type => %d", token)); if ((rval = tokentab[token]) != 0) return rval; CT_DEBUG(CLEXER, ("unhandled token in line %ld: <%2d>", pLexer->line, token)); break; } } CT_DEBUG(CLEXER, ("EOF!")); return 0; } /******************************************************************************* * * ROUTINE: parser_error * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void parser_error(ParserState *pState, const char *msg) { push_error(pState->pCPI, "%s, line %ld: %s", pState->pFI ? pState->pFI->name : "[unknown]", pState->pLexer->ctok->line, msg); } /******************************************************************************* * * ROUTINE: get_char_value * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int get_char_value(const char *s) { while (*s && *s != '\'') s++; if (*++s != '\\') return (int) *s; switch (*++s) { case '0' : case '1' : case '2' : case '3' : return (int) strtol(s, NULL, 8); case 'a' : return (int) '\a'; case 'b' : return (int) '\b'; case 'f' : return (int) '\f'; case 'h' : return (int) strtol(++s, NULL, 16); case 'n' : return (int) '\n'; case 'r' : return (int) '\r'; case 't' : return (int) '\t'; case 'v' : return (int) '\v'; default: return (int) *s; } } /******************************************************************************* * * ROUTINE: string_size * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int string_size(const char *s) { int size, count; while (*s && *s != '\"') s++; for (s++, size=0; *s; size++) { if (*s == '\"') break; if (*s++ != '\\') continue; if (*s == 'x') { count = 0; do s++; while (count++ < 2 && ((*s >= '0' && *s <= '9') || (*s >= 'a' && *s <= 'f') || (*s >= 'A' && *s <= 'F'))); continue; } if (*s >= '0' && *s <= '7') { count = 0; do s++; while (count++ < 2 && *s >= '0' && *s <= '7'); } else s++; } return size; } /******************************************************************************* * * ROUTINE: check_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int check_type(YYSTYPE *plval, ParserState *pState, const char *s) { Typedef *pTypedef; HashSum hash; int len; CT_DEBUG(CLEXER, ("check_type( \"%s\" )", s)); HASH_STR_LEN(hash, s, len); pTypedef = HT_get(pState->pCPI->htTypedefs, s, len, hash); if (pTypedef) { CT_DEBUG(CLEXER, ("typedef found!")); plval->pTypedef = pTypedef; return TYPE_NAME; } plval->identifier = pState->flags & F_LOCAL ? NULL : HN_new(s, len, hash); return IDENTIFIER; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_c_keyword_token * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const CKeywordToken *get_c_keyword_token(const char *name) { #include "token/t_ckeytok.c" unknown: return NULL; } /******************************************************************************* * * ROUTINE: get_skip_token * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const CKeywordToken *get_skip_token(void) { static const CKeywordToken ckt = { SKIP_TOK, NULL }; return &ckt; } /******************************************************************************* * * ROUTINE: c_parser_new * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ ParserState *c_parser_new(const CParseConfig *pCPC, CParseInfo *pCPI, pUCPP_ struct lexer_state *pLexer) { ParserState *pState; #ifdef CTLIB_DEBUGGING #ifdef YYDEBUG extern int pragma_debug; c_debug = pragma_debug = DEBUG_FLAG(YACC) ? 1 : 0; #endif #endif if (pCPC == NULL || pCPI == NULL || pLexer == NULL) return NULL; AllocF(ParserState *, pState, sizeof(ParserState)); pState->pCPI = pCPI; pState->pCPC = pCPC; pState->pLexer = pLexer; pState->pp = aUCPP; pState->flags = 0; pState->pFI = NULL; pState->pragma = pragma_parser_new(pCPI); return pState; } /******************************************************************************* * * ROUTINE: c_parser_run * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Run the C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int c_parser_run(ParserState *pState) { return c_parse((void *) pState); } /******************************************************************************* * * ROUTINE: c_parser_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Delete a C parser object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void c_parser_delete(ParserState *pState) { if (pState == NULL) return; pragma_parser_delete(pState->pragma); Free(pState); } Convert-Binary-C-0.85/ctlib/byteorder.c0000644000175000001440000012342714677003452016464 0ustar mhxusers/******************************************************************************* * * MODULE: ctype.c * ******************************************************************************** * * DESCRIPTION: ANSI C data type objects * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #include #endif /*===== LOCAL INCLUDES =======================================================*/ #include "byteorder.h" /*===== DEFINES ==============================================================*/ #ifndef NULL #define NULL ((void *) 0) #endif #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L typedef uintptr_t uintptr_type; #else typedef unsigned long uintptr_type; #endif /*----------------------------------------------------------*/ /* reading/writing integers in big/little endian byte order */ /* depending on the native byte order of the system */ /*----------------------------------------------------------*/ #if ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_BIG_ENDIAN /*--------------------*/ /* big endian systems */ /*--------------------*/ #define GET_LE_WORD(ptr, value, sign) \ value = (sign ## _16) \ ( ( (u_16) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_16) *( (const u_8 *) ((ptr)+1) ) << 8) \ ) #define GET_LE_LONG(ptr, value, sign) \ value = (sign ## _32) \ ( ( (u_32) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_32) *( (const u_8 *) ((ptr)+1) ) << 8) \ | ( (u_32) *( (const u_8 *) ((ptr)+2) ) << 16) \ | ( (u_32) *( (const u_8 *) ((ptr)+3) ) << 24) \ ) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_LE_LONGLONG(ptr, value, sign) \ value = (sign ## _64) \ ( ( (u_64) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_64) *( (const u_8 *) ((ptr)+1) ) << 8) \ | ( (u_64) *( (const u_8 *) ((ptr)+2) ) << 16) \ | ( (u_64) *( (const u_8 *) ((ptr)+3) ) << 24) \ | ( (u_64) *( (const u_8 *) ((ptr)+4) ) << 32) \ | ( (u_64) *( (const u_8 *) ((ptr)+5) ) << 40) \ | ( (u_64) *( (const u_8 *) ((ptr)+6) ) << 48) \ | ( (u_64) *( (const u_8 *) ((ptr)+7) ) << 56) \ ) #endif #define SET_LE_WORD(ptr, value) \ do { \ register u_16 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 8) & 0xFF); \ } while (0) #define SET_LE_LONG(ptr, value) \ do { \ register u_32 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 24) & 0xFF); \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define SET_LE_LONGLONG(ptr, value) \ do { \ register u_64 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 24) & 0xFF); \ *((u_8 *) ((ptr)+4)) = (u_8) ((v >> 32) & 0xFF); \ *((u_8 *) ((ptr)+5)) = (u_8) ((v >> 40) & 0xFF); \ *((u_8 *) ((ptr)+6)) = (u_8) ((v >> 48) & 0xFF); \ *((u_8 *) ((ptr)+7)) = (u_8) ((v >> 56) & 0xFF); \ } while (0) #endif #ifdef CAN_UNALIGNED_ACCESS #define GET_BE_WORD(ptr, value, sign) \ value = (sign ## _16) ( *( (const u_16 *) (ptr) ) ) #define GET_BE_LONG(ptr, value, sign) \ value = (sign ## _32) ( *( (const u_32 *) (ptr) ) ) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_BE_LONGLONG(ptr, value, sign) \ value = (sign ## _64) ( *( (const u_64 *) (ptr) ) ) #endif #define SET_BE_WORD(ptr, value) \ *( (u_16 *) (ptr) ) = (u_16) value #define SET_BE_LONG(ptr, value) \ *( (u_32 *) (ptr) ) = (u_32) value #if ARCH_NATIVE_64_BIT_INTEGER #define SET_BE_LONGLONG(ptr, value) \ *( (u_64 *) (ptr) ) = (u_64) value #endif #else #define GET_BE_WORD(ptr, value, sign) \ do { \ if (((uintptr_type) (ptr)) % 2) \ value = (sign ## _16) \ ( ( (u_16) *( (const u_8 *) ((ptr)+0) ) << 8) \ | ( (u_16) *( (const u_8 *) ((ptr)+1) ) << 0) \ ); \ else \ value = (sign ## _16) ( *( (const u_16 *) (ptr) ) ); \ } while (0) #define GET_BE_LONG(ptr, value, sign) \ do { \ switch (((uintptr_type) (ptr)) % 4) \ { \ case 0: \ value = (sign ## _32) ( *( (const u_32 *) (ptr) ) ); \ break; \ \ case 2: \ value = (sign ## _32) \ ( ( (u_32) *( (const u_16 *) ((ptr)+0) ) << 16) \ | ( (u_32) *( (const u_16 *) ((ptr)+2) ) << 0) \ ); \ break; \ \ default: \ value = (sign ## _32) \ ( ( (u_32) *( (const u_8 *) ((ptr)+0) ) << 24) \ | ( (u_32) *( (const u_16 *) ((ptr)+1) ) << 8) \ | ( (u_32) *( (const u_8 *) ((ptr)+3) ) << 0) \ ); \ break; \ } \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_BE_LONGLONG(ptr, value, sign) \ do { \ value = (sign ## _64) \ ( ( (u_64) *( (const u_8 *) ((ptr)+0) ) << 56) \ | ( (u_64) *( (const u_8 *) ((ptr)+1) ) << 48) \ | ( (u_64) *( (const u_8 *) ((ptr)+2) ) << 40) \ | ( (u_64) *( (const u_8 *) ((ptr)+3) ) << 32) \ | ( (u_64) *( (const u_8 *) ((ptr)+4) ) << 24) \ | ( (u_64) *( (const u_8 *) ((ptr)+5) ) << 16) \ | ( (u_64) *( (const u_8 *) ((ptr)+6) ) << 8) \ | ( (u_64) *( (const u_8 *) ((ptr)+7) ) << 0) \ ); \ } while (0) #endif #define SET_BE_WORD(ptr, value) \ do { \ if (((uintptr_type) (ptr)) % 2) \ { \ register u_16 v = (u_16) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 0) & 0xFF); \ } \ else \ *( (u_16 *) (ptr) ) = (u_16) value; \ } while (0) #define SET_BE_LONG(ptr, value) \ do { \ switch (((uintptr_type) (ptr)) % 4) \ { \ case 0: \ *( (u_32 *) (ptr) ) = (u_32) value; \ break; \ \ case 2: \ { \ register u_32 v = (u_32) value; \ *((u_16 *) ((ptr)+0)) = (u_16) ((v >> 16) & 0xFFFF); \ *((u_16 *) ((ptr)+2)) = (u_16) ((v >> 0) & 0xFFFF); \ } \ break; \ \ default: \ { \ register u_32 v = (u_32) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 24) & 0xFF ); \ *((u_16 *) ((ptr)+1)) = (u_16) ((v >> 8) & 0xFFFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 0) & 0xFF ); \ } \ break; \ } \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define SET_BE_LONGLONG(ptr, value) \ do { \ register u_64 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 56) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 48) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 40) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 32) & 0xFF); \ *((u_8 *) ((ptr)+4)) = (u_8) ((v >> 24) & 0xFF); \ *((u_8 *) ((ptr)+5)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+6)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+7)) = (u_8) ((v >> 0) & 0xFF); \ } while (0) #endif #endif #elif ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_LITTLE_ENDIAN /*-----------------------*/ /* little endian systems */ /*-----------------------*/ #define GET_BE_WORD(ptr, value, sign) \ value = (sign ## _16) \ ( ( (u_16) *( (const u_8 *) ((ptr)+0) ) << 8) \ | ( (u_16) *( (const u_8 *) ((ptr)+1) ) << 0) \ ) #define GET_BE_LONG(ptr, value, sign) \ value = (sign ## _32) \ ( ( (u_32) *( (const u_8 *) ((ptr)+0) ) << 24) \ | ( (u_32) *( (const u_8 *) ((ptr)+1) ) << 16) \ | ( (u_32) *( (const u_8 *) ((ptr)+2) ) << 8) \ | ( (u_32) *( (const u_8 *) ((ptr)+3) ) << 0) \ ) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_BE_LONGLONG(ptr, value, sign) \ value = (sign ## _64) \ ( ( (u_64) *( (const u_8 *) ((ptr)+0) ) << 56) \ | ( (u_64) *( (const u_8 *) ((ptr)+1) ) << 48) \ | ( (u_64) *( (const u_8 *) ((ptr)+2) ) << 40) \ | ( (u_64) *( (const u_8 *) ((ptr)+3) ) << 32) \ | ( (u_64) *( (const u_8 *) ((ptr)+4) ) << 24) \ | ( (u_64) *( (const u_8 *) ((ptr)+5) ) << 16) \ | ( (u_64) *( (const u_8 *) ((ptr)+6) ) << 8) \ | ( (u_64) *( (const u_8 *) ((ptr)+7) ) << 0) \ ) #endif #define SET_BE_WORD(ptr, value) \ do { \ register u_16 v = (u_16) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 0) & 0xFF); \ } while (0) #define SET_BE_LONG(ptr, value) \ do { \ register u_32 v = (u_32) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 24) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 0) & 0xFF); \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define SET_BE_LONGLONG(ptr, value) \ do { \ register u_64 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 56) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 48) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 40) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 32) & 0xFF); \ *((u_8 *) ((ptr)+4)) = (u_8) ((v >> 24) & 0xFF); \ *((u_8 *) ((ptr)+5)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+6)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+7)) = (u_8) ((v >> 0) & 0xFF); \ } while (0) #endif #ifdef CAN_UNALIGNED_ACCESS #define GET_LE_WORD(ptr, value, sign) \ value = (sign ## _16) ( *( (const u_16 *) (ptr) ) ) #define GET_LE_LONG(ptr, value, sign) \ value = (sign ## _32) ( *( (const u_32 *) (ptr) ) ) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_LE_LONGLONG(ptr, value, sign) \ value = (sign ## _64) ( *( (const u_64 *) (ptr) ) ) #endif #define SET_LE_WORD(ptr, value) \ *( (u_16 *) (ptr) ) = (u_16) value #define SET_LE_LONG(ptr, value) \ *( (u_32 *) (ptr) ) = (u_32) value #if ARCH_NATIVE_64_BIT_INTEGER #define SET_LE_LONGLONG(ptr, value) \ *( (u_64 *) (ptr) ) = (u_64) value #endif #else #define GET_LE_WORD(ptr, value, sign) \ do { \ if (((uintptr_type) (ptr)) % 2) \ value = (sign ## _16) \ ( ( (u_16) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_16) *( (const u_8 *) ((ptr)+1) ) << 8) \ ); \ else \ value = (sign ## _16) ( *( (const u_16 *) (ptr) ) ); \ } while (0) #define GET_LE_LONG(ptr, value, sign) \ do { \ switch (((uintptr_type) (ptr)) % 4) \ { \ case 0: \ value = (sign ## _32) ( *( (const u_32 *) (ptr) ) ); \ break; \ \ case 2: \ value = (sign ## _32) \ ( ( (u_32) *( (const u_16 *) ((ptr)+0) ) << 0) \ | ( (u_32) *( (const u_16 *) ((ptr)+2) ) << 16) \ ); \ break; \ \ default: \ value = (sign ## _32) \ ( ( (u_32) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_32) *( (const u_16 *) ((ptr)+1) ) << 8) \ | ( (u_32) *( (const u_8 *) ((ptr)+3) ) << 24) \ ); \ break; \ } \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_LE_LONGLONG(ptr, value, sign) \ do { \ value = (sign ## _64) \ ( ( (u_64) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_64) *( (const u_8 *) ((ptr)+1) ) << 8) \ | ( (u_64) *( (const u_8 *) ((ptr)+2) ) << 16) \ | ( (u_64) *( (const u_8 *) ((ptr)+3) ) << 24) \ | ( (u_64) *( (const u_8 *) ((ptr)+4) ) << 32) \ | ( (u_64) *( (const u_8 *) ((ptr)+5) ) << 40) \ | ( (u_64) *( (const u_8 *) ((ptr)+6) ) << 48) \ | ( (u_64) *( (const u_8 *) ((ptr)+7) ) << 56) \ ); \ } while (0) #endif #define SET_LE_WORD(ptr, value) \ do { \ if (((uintptr_type) (ptr)) % 2) \ { \ register u_16 v = (u_16) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 8) & 0xFF); \ } \ else \ *( (u_16 *) (ptr) ) = (u_16) value; \ } while (0) #define SET_LE_LONG(ptr, value) \ do { \ switch (((uintptr_type) (ptr)) % 4) \ { \ case 0: \ *( (u_32 *) (ptr) ) = (u_32) value; \ break; \ \ case 2: \ { \ register u_32 v = (u_32) value; \ *((u_16 *) ((ptr)+0)) = (u_16) ((v >> 0) & 0xFFFF); \ *((u_16 *) ((ptr)+2)) = (u_16) ((v >> 16) & 0xFFFF); \ } \ break; \ \ default: \ { \ register u_32 v = (u_32) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF ); \ *((u_16 *) ((ptr)+1)) = (u_16) ((v >> 8) & 0xFFFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 24) & 0xFF ); \ } \ break; \ } \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define SET_LE_LONGLONG(ptr, value) \ do { \ register u_64 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 24) & 0xFF); \ *((u_8 *) ((ptr)+4)) = (u_8) ((v >> 32) & 0xFF); \ *((u_8 *) ((ptr)+5)) = (u_8) ((v >> 40) & 0xFF); \ *((u_8 *) ((ptr)+6)) = (u_8) ((v >> 48) & 0xFF); \ *((u_8 *) ((ptr)+7)) = (u_8) ((v >> 56) & 0xFF); \ } while (0) #endif #endif #else /* ARCH_NATIVE_BYTEORDER */ #error "unknown native byte order" #endif /* ARCH_NATIVE_BYTEORDER */ #define GET_BE_BYTE(ptr, value, sign) \ value = *((const sign ## _8 *) (ptr)) #define GET_LE_BYTE(ptr, value, sign) \ value = *((const sign ## _8 *) (ptr)) #define SET_BE_BYTE(ptr, value) \ *((u_8 *) (ptr)) = (u_8) value #define SET_LE_BYTE(ptr, value) \ *((u_8 *) (ptr)) = (u_8) value #define ALL_64_BITS (~((u_64) 0)) #define ALL_32_BITS (~((u_32) 0)) /*===== TYPEDEFS =============================================================*/ enum shift_direction { SHIFT_LEFT, SHIFT_RIGHT }; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ static int integer2string(IntValue *pInt); static void string2integer(IntValue *pInt); /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: integer2string * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Turn an integer into a string. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int integer2string(IntValue *pInt) { #if ARCH_NATIVE_64_BIT_INTEGER register u_64 val; #else register u_32 hval, lval, tval, umod, lmod; #endif int stack[20], len, sp; char *pStr = pInt->string; if (pStr == NULL) return 0; len = sp = 0; #if ARCH_NATIVE_64_BIT_INTEGER if (pInt->sign && pInt->value.s < 0) { val = -pInt->value.s; *pStr++ = '-'; len++; } else val = pInt->value.u; while (val > 0) stack[sp++] = val % 10, val /= 10; #else hval = pInt->value.u.h; lval = pInt->value.u.l; if (pInt->sign && pInt->value.s.h < 0) { *pStr++ = '-'; len++; if (lval-- == 0) hval--; hval = ~hval; lval = ~lval; } while (hval > 0) { static const u_32 CDIV[10] = { 0x00000000, 0x19999999, 0x33333333, 0x4CCCCCCC, 0x66666666, 0x80000000, 0x99999999, 0xB3333333, 0xCCCCCCCC, 0xE6666666 }; static const u_32 CMOD[10] = { 0U, 6U, 2U, 8U, 4U, 0U, 6U, 2U, 8U, 4U }; umod = hval % 10; hval /= 10; lmod = lval % 10; lval /= 10; lmod += CMOD[umod]; tval = CDIV[umod]; if (lmod >= 10) lmod -= 10, tval++; lval += tval; if (lval < tval) hval++; stack[sp++] = lmod; } while (lval > 0) stack[sp++] = lval % 10, lval /= 10; #endif len += sp; if (sp == 0) *pStr++ = '0'; else while(sp-- > 0) *pStr++ = (char) ('0' + stack[sp]); *pStr = '\0'; return len; } /******************************************************************************* * * ROUTINE: string2integer * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Turn a dec/hex/oct string into an integer. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void string2integer(IntValue *pInt) { register int val; register const char *pStr = pInt->string; #if ARCH_NATIVE_64_BIT_INTEGER register u_64 iv = 0; #else register u_32 hval = 0, lval = 0; #endif pInt->sign = 0; while (isspace(*pStr)) /* ignore leading whitespace */ pStr++; switch (*pStr) { default : break; case '-': pInt->sign = 1; case '+': while(isspace(*++pStr)); } if (*pStr == '0') /* seems to be hex or octal */ { pStr++; if (*pStr == 'x') /* must be hex */ { while (isxdigit(val = *++pStr)) { if (isdigit(val)) val -= (int) '0'; else if (isupper(val)) val -= (int) 'A' - 10; else val -= (int) 'a' - 10; #if ARCH_NATIVE_64_BIT_INTEGER iv = (iv << 4) | (val & 0xF); #else hval = (hval << 4) | (lval >> 28); lval = (lval << 4) | (val & 0xF); #endif } } else if (*pStr == 'b') /* must be binary */ { pStr++; while (*pStr == '0' || *pStr == '1') { val = (int) (*pStr - '0'); #if ARCH_NATIVE_64_BIT_INTEGER iv = (iv << 1) | (val & 0x1); #else hval = (hval << 1) | (lval >> 31); lval = (lval << 1) | (val & 0x1); #endif pStr++; } } else /* must be octal */ { while (isdigit(*pStr) && *pStr != '8' && *pStr != '9') { val = (int) (*pStr - '0'); #if ARCH_NATIVE_64_BIT_INTEGER iv = (iv << 3) | (val & 0x7); #else hval = (hval << 3) | (lval >> 29); lval = (lval << 3) | (val & 0x7); #endif pStr++; } } } else /* must be decimal */ { #if ARCH_NATIVE_64_BIT_INTEGER while (isdigit(val = *pStr++)) iv = 10*iv + (val - (int) '0'); #else register u_32 temp; do { if (!isdigit(val = *pStr++)) goto end_of_string; lval = 10*lval + (val - (int) '0'); } while (lval < 429496729); while (isdigit(val = *pStr++)) { hval = ((hval << 3) | (lval >> 29)) + ((hval << 1) | (lval >> 31)); lval <<= 1; temp = lval + (lval << 2); if (temp < lval) hval++; lval = temp + (int) (val - '0'); if (lval < temp) hval++; } #endif } #if ARCH_NATIVE_64_BIT_INTEGER if (pInt->sign) pInt->value.s = -iv; else pInt->value.u = iv; #else end_of_string: if (pInt->sign && (hval || lval)) { if (lval-- == 0) hval--; pInt->value.u.h = ~hval; pInt->value.u.l = ~lval; } else { pInt->value.u.h = hval; pInt->value.u.l = lval; } #endif } /******************************************************************************* * * ROUTINE: shift_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Bit-shift an u_64 value left or right. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void shift_integer(u_64 *pval, unsigned bits, enum shift_direction dir) { assert(bits <= 64); #if ARCH_NATIVE_64_BIT_INTEGER switch (dir) { case SHIFT_LEFT: *pval <<= bits; break; case SHIFT_RIGHT: *pval >>= bits; break; } #else switch (dir) { case SHIFT_LEFT: if (bits >= 32) { pval->h = pval->l << (bits - 32); pval->l = 0; } else { pval->h = (pval->h << bits) | (pval->l >> (32 - bits)); pval->l <<= bits; } break; case SHIFT_RIGHT: if (bits >= 32) { pval->l = pval->h >> (bits - 32); pval->h = 0; } else { pval->l = (pval->l >> bits) | (pval->h << (32 - bits)); pval->h >>= bits; } break; } #endif } /******************************************************************************* * * ROUTINE: mask_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Bit-mask an u_64 value. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void mask_integer(u_64 *pval, unsigned bits, unsigned shift, int extend_msb) { u_64 mask; const unsigned msb = bits + shift - 1; assert(bits <= 64); assert(shift <= 64); assert((bits + shift) <= 64); #if ARCH_NATIVE_64_BIT_INTEGER mask = (ALL_64_BITS >> (64 - bits)) << shift; *pval &= mask; if (extend_msb && bits > 0) if (*pval & (((u_64)1) << msb)) *pval |= ALL_64_BITS << msb; #else if (bits > 32) { mask.h = (ALL_32_BITS >> (64 - bits)); mask.l = ALL_32_BITS; } else { mask.h = 0; mask.l = (ALL_32_BITS >> (32 - bits)); } if (shift > 0) shift_integer(&mask, shift, SHIFT_LEFT); pval->h &= mask.h; pval->l &= mask.l; if (extend_msb && bits > 0) { if (msb >= 32) { if (pval->h & (((u_32)1) << (msb - 32))) pval->h |= ALL_32_BITS << (msb - 32); } else { if (pval->l & (((u_32)1) << msb)) { pval->h = ALL_32_BITS; pval->l |= ALL_32_BITS << msb; } } } #endif } /******************************************************************************* * * ROUTINE: merge_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Merge an u_64 value into another one. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void merge_integer(u_64 *dest, const u_64 *src, unsigned bits, unsigned shift) { u_64 mask; assert(bits <= 64); assert(shift <= 64); assert((bits + shift) <= 64); #if ARCH_NATIVE_64_BIT_INTEGER mask = (ALL_64_BITS >> (64 - bits)) << shift; *dest = (*dest & (~mask)) | (*src & mask); #else if (bits > 32) { mask.h = (ALL_32_BITS >> (64 - bits)); mask.l = ALL_32_BITS; } else { mask.h = 0; mask.l = (ALL_32_BITS >> (32 - bits)); } if (shift > 0) shift_integer(&mask, shift, SHIFT_LEFT); dest->h = (dest->h & (~mask.h)) | (src->h & mask.h); dest->l = (dest->l & (~mask.l)) | (src->l & mask.l); #endif } /******************************************************************************* * * ROUTINE: string_is_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Decide if a string contains a dec/hex/oct integer. * * ARGUMENTS: * * RETURNS: Zero if the string doesn't hold an interpretable number. * The base (i.e. 2, 8, 10 or 16) if the string is a number. * *******************************************************************************/ int string_is_integer(const char *pStr) { int rval; /* ignore leading whitespace */ while (isspace(*pStr)) pStr++; switch (*pStr) { default : break; case '-': case '+': while (isspace(*++pStr)); } if (*pStr == '0') /* seems to be hex or octal */ { pStr++; if (*pStr == 'x') /* must be hex */ { pStr++; while (isxdigit(*pStr)) pStr++; rval = 16; } else if (*pStr == 'b') /* must be binary */ { pStr++; while (*pStr == '0' || *pStr == '1') pStr++; rval = 2; } else /* must be octal */ { while (isdigit(*pStr) && *pStr != '8' && *pStr != '9') pStr++; rval = 8; } } else /* must be decimal */ { while (isdigit(*pStr)) pStr++; rval = 10; } /* ignore trailing whitespace */ while (isspace(*pStr)) pStr++; return *pStr ? 0 : rval; } /******************************************************************************* * * ROUTINE: fetch_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #if ARCH_NATIVE_64_BIT_INTEGER #define FETCH(bo, what) \ do { \ if (sign) \ GET_ ## bo ## _ ## what (ptr, iv.value.s, i); \ else \ GET_ ## bo ## _ ## what (ptr, iv.value.u, u); \ } while (0) #else #define FETCH(bo, what) \ do { \ if(sign) \ { \ GET_ ## bo ## _ ## what (ptr, iv.value.s.l, i); \ iv.value.s.h = ((i_32) iv.value.s.l) < 0 ? -1 : 0; \ } \ else \ { \ GET_ ## bo ## _ ## what (ptr, iv.value.u.l, u); \ iv.value.u.h = 0; \ } \ } while (0) #endif void fetch_integer(unsigned size, unsigned sign, unsigned bits, unsigned shift, CByteOrder bo, const void *src, IntValue *pIV) { register const u_8 *ptr = (const u_8 *) src; IntValue iv = *pIV; switch (size) { case 1: FETCH(BE, BYTE); break; case 2: if (bo == CBO_BIG_ENDIAN) FETCH(BE, WORD); else FETCH(LE, WORD); break; case 4: if (bo == CBO_BIG_ENDIAN) FETCH(BE, LONG); else FETCH(LE, LONG); break; case 8: #if ARCH_NATIVE_64_BIT_INTEGER if (bo == CBO_BIG_ENDIAN) FETCH(BE, LONGLONG); else FETCH(LE, LONGLONG); #else if (bo == CBO_BIG_ENDIAN) { GET_BE_LONG(ptr, iv.value.u.h, u); GET_BE_LONG(ptr+4, iv.value.u.l, u); } else { GET_LE_LONG(ptr, iv.value.u.l, u); GET_LE_LONG(ptr+4, iv.value.u.h, u); } #endif break; default: break; } iv.sign = sign; if (bits > 0) { if (shift > 0) shift_integer(&iv.value.u, shift, SHIFT_RIGHT); mask_integer(&iv.value.u, bits, 0, sign); } if (iv.string) (void) integer2string(&iv); *pIV = iv; } #undef FETCH /******************************************************************************* * * ROUTINE: store_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #if ARCH_NATIVE_64_BIT_INTEGER #define STORE(bo, what) \ do { \ SET_ ## bo ## _ ## what (ptr, iv.value.u); \ } while (0) #else #define STORE(bo, what) \ do { \ SET_ ## bo ## _ ## what (ptr, iv.value.u.l); \ } while (0) #endif void store_integer(unsigned size, unsigned bits, unsigned shift, CByteOrder bo, void *dest, const IntValue *pIV) { register u_8 *ptr = (u_8 *) dest; IntValue iv = *pIV; if (iv.string) string2integer(&iv); if (bits > 0) { IntValue orig; orig.string = NULL; fetch_integer(size, 0, 0, 0, bo, dest, &orig); if (shift > 0) shift_integer(&iv.value.u, shift, SHIFT_LEFT); merge_integer(&orig.value.u, &iv.value.u, bits, shift); iv = orig; } switch (size) { case 1: STORE(BE, BYTE); break; case 2: if (bo == CBO_BIG_ENDIAN) STORE(BE, WORD); else STORE(LE, WORD); break; case 4: if (bo == CBO_BIG_ENDIAN) STORE(BE, LONG); else STORE(LE, LONG); break; case 8: #if ARCH_NATIVE_64_BIT_INTEGER if (bo == CBO_BIG_ENDIAN) STORE(BE, LONGLONG); else STORE(LE, LONGLONG); #else if (bo == CBO_BIG_ENDIAN) { SET_BE_LONG(ptr, iv.value.u.h); SET_BE_LONG(ptr+4, iv.value.u.l); } else { SET_LE_LONG(ptr, iv.value.u.l); SET_LE_LONG(ptr+4, iv.value.u.h); } #endif break; default: break; } } #undef STORE Convert-Binary-C-0.85/ctlib/pragma.h0000644000175000001440000000327614677003452015740 0ustar mhxusers/******************************************************************************* * * HEADER: parser.h * ******************************************************************************** * * DESCRIPTION: Pragma parser * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_PRAGMA_H #define _CTLIB_PRAGMA_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctparse.h" #include "util/list.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct _pragmaState PragmaState; /*===== FUNCTION PROTOTYPES ==================================================*/ #define pragma_parser_new CTlib_pragma_parser_new PragmaState *pragma_parser_new(CParseInfo *pCPI); #define pragma_parser_delete CTlib_pragma_parser_delete void pragma_parser_delete(PragmaState *pPragma); #define pragma_parser_parse CTlib_pragma_parser_parse int pragma_parser_parse(PragmaState *pPragma); #define pragma_parser_set_context CTlib_pragma_parser_set_context void pragma_parser_set_context(PragmaState *pPragma, const char *file, long int line, const char *code); #define pragma_parser_get_pack CTlib_pragma_parser_get_pack unsigned pragma_parser_get_pack(PragmaState *pPragma); #endif Convert-Binary-C-0.85/ctlib/cttags.c0000644000175000001440000001542414677003452015747 0ustar mhxusers/******************************************************************************* * * MODULE: cttags.c * ******************************************************************************** * * DESCRIPTION: Tag properties to C types * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "cttags.h" #include "util/memalloc.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: tag_new * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: CtTag object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTag *tag_new(CtTagType type, const CtTagVtable *vtable) { CtTag *tag; AllocF(CtTag *, tag, sizeof(CtTag)); tag->next = NULL; tag->vtable = vtable; tag->type = type; tag->flags = 0; tag->any = 0; if (tag->vtable && tag->vtable->init) tag->vtable->init(tag); return tag; } /******************************************************************************* * * ROUTINE: tag_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone CtTag object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTag *tag_clone(const CtTag *stag) { CtTag *dtag; if (stag == NULL) return NULL; AllocF(CtTag *, dtag, sizeof(CtTag)); memcpy(dtag, stag, sizeof(CtTag)); if (stag->vtable && stag->vtable->clone) stag->vtable->clone(dtag, stag); return dtag; } /******************************************************************************* * * ROUTINE: tag_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: CtTag object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void tag_delete(CtTag *tag) { if (tag) { if (tag->vtable && tag->vtable->free) tag->vtable->free(tag); Free(tag); } } /******************************************************************************* * * ROUTINE: find_tag * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Find a CtTag object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTag *find_tag(CtTagList list, CtTagType type) { while (list && list->type != type) list = list->next; return list; } /******************************************************************************* * * ROUTINE: insert_tag * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Insert a CtTag object into a list. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void insert_tag(CtTagList *list, CtTag *tag) { tag->next = *list; *list = tag; } /******************************************************************************* * * ROUTINE: remove_tag * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Remove a single CtTag object from a list. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTag *remove_tag(CtTagList *list, CtTagType type) { while (*list) { if ((*list)->type == type) { CtTag *tag = *list; *list = (*list)->next; tag->next = NULL; return tag; } list = &(*list)->next; } return NULL; } /******************************************************************************* * * ROUTINE: delete_taglist * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Remove all CtTag objects from a list. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void delete_taglist(CtTagList *list) { CtTag *tag = *list; *list = NULL; while (tag) { CtTag *old = tag; tag = tag->next; tag_delete(old); } } /******************************************************************************* * * ROUTINE: clone_taglist * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone a CtTag list. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTagList clone_taglist(CtTagList list) { CtTagList rv = NULL; CtTagList *cloned = &rv; while (list) { *cloned = tag_clone(list); cloned = &(*cloned)->next; *cloned = NULL; list = list->next; } return rv; } Convert-Binary-C-0.85/ctlib/bitfields.h0000644000175000001440000000623114677003452016430 0ustar mhxusers/******************************************************************************* * * HEADER: bitfields.h * ******************************************************************************** * * DESCRIPTION: Bitfield layouting routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_BITFIELDS_H #define _CTLIB_BITFIELDS_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/cttype.h" #include "token/t_blproperty.h" /*===== DEFINES ==============================================================*/ #define BL_CLASS_FIXED \ const struct BLVtable *m; \ const struct BLClass *blc /*===== TYPEDEFS =============================================================*/ struct BLClass; enum BLError { BLE_NO_ERROR, BLE_INVALID_PROPERTY, BLE_BITFIELD_TOO_WIDE }; typedef signed long BLPropValInt; typedef struct _BLPropValue { enum BLPVType { BLPVT_INT, BLPVT_STR } type; union { BLPropValInt v_int; BLPropValStr v_str; } v; } BLPropValue; typedef struct _BLOption { BLProperty prop; enum BLPVType type; int nval; /* number of allowed values (0: all values allowed) */ const void *pval; /* pointer to list of allowed values */ } BLOption; typedef struct _BLPushParam { Struct *pStruct; Declarator *pDecl; unsigned type_size; unsigned type_align; } BLPushParam; typedef struct _BitfieldLayouter *BitfieldLayouter; struct BLVtable { BitfieldLayouter (*clone) (BitfieldLayouter); void (*init) (BitfieldLayouter); void (*reset) (BitfieldLayouter); void (*destroy) (BitfieldLayouter); enum BLError (*push) (BitfieldLayouter, const BLPushParam *); enum BLError (*finalize) (BitfieldLayouter); enum BLError (*get) (BitfieldLayouter, BLProperty, BLPropValue *); enum BLError (*set) (BitfieldLayouter, BLProperty, const BLPropValue *); const BLOption * (*options) (BitfieldLayouter, int *count); const char * (*class_name) (BitfieldLayouter); }; struct _BitfieldLayouter { BL_CLASS_FIXED; }; /*===== EXTERNAL VARIABLES ===================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define bl_create CTlib_bl_create BitfieldLayouter bl_create(const char *class_name); #define bl_property CTlib_bl_property BLProperty bl_property(const char *property); #define bl_property_string CTlib_bl_property_string const char *bl_property_string(BLProperty property); #define bl_propval CTlib_bl_propval BLPropValStr bl_propval(const char *propval); #define bl_propval_string CTlib_bl_propval_string const char *bl_propval_string(BLPropValStr propval); #endif Convert-Binary-C-0.85/ctlib/arch.pl0000644000175000001440000000776514677003452015601 0ustar mhxusers################################################################################ # # PROGRAM: arch.pl # ################################################################################ # # DESCRIPTION: Generate header file for architecture specific definitions # ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Config; $file = @ARGV ? shift : 'ctlib/arch.h'; open OUT, ">$file" or die "$file: $!\n"; %cfg = %Config; # because we modify some values in %cfg %use = ( '64BIT' => 1, 'LONGLONG' => 1, 'LONGDOUBLE' => 1, ); if( $Config{osname} eq 'hpux' and $Config{cc} eq 'cc' and $Config{osvers} =~ /(\d+)\.(\d+)/ and $1 < 11 ) { # At least some versions of HP's cc compiler have a broken # preprocessor/compiler implementation of 64-bit data types. $use{'64BIT'} = 0; $use{'LONGLONG'} = 0; } for( keys %use ) { exists $ENV{"CBC_USE$_"} and $use{$_} = $ENV{"CBC_USE$_"}; } # required to support perl < 5.6.0 unless( exists $cfg{i8type} ) { $b8 = 'char'; for( qw( int short long ) ) { if( not defined $b16 and $cfg{"${_}size"} == 2 ) { $b16 = $_ } if( not defined $b32 and $cfg{"${_}size"} == 4 ) { $b32 = $_ } } defined $b16 and defined $b32 or die "cannot determine integer sizes"; $cfg{i8type} = "signed $b8"; $cfg{u8type} = "unsigned $b8"; $cfg{i16type} = "signed $b16"; $cfg{u16type} = "unsigned $b16"; $cfg{i32type} = "signed $b32"; $cfg{u32type} = "unsigned $b32"; } # # make the i_8 explicitly signed # (i8type was plain 'char' on an IPAQ system where 'char' was unsigned) if( $cfg{i8type} eq 'char' ) { $cfg{i8type} = 'signed char'; } sub is_big_endian () { my $byteorder = $cfg{byteorder} || unpack( "a*", pack "L", 0x34333231 ); die "Native byte order ($byteorder) not supported!\n" if $byteorder ne '1234' and $byteorder ne '4321' and $byteorder ne '12345678' and $byteorder ne '87654321'; $byteorder eq '4321' or $byteorder eq '87654321'; } sub config ($) { local $_ = shift; s/\$\{([^}]+)\}/$cfg{$1}/g; print OUT; } $long_double = $use{LONGDOUBLE} && $cfg{d_longdbl} eq 'define' ? 1 : 0; print "DISABLED long double support\n" if $use{LONGDOUBLE} == 0; $long_long = $use{LONGLONG} && $cfg{d_longlong} eq 'define' ? 1 : 0; print "DISABLED long long support\n" if $use{LONGLONG} == 0; config < #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctdebug.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ void (*g_CT_dbfunc)(const char *, ...) = NULL; unsigned long g_CT_dbflags = 0; /*===== STATIC VARIABLES =====================================================*/ static void (*gs_vprintf)(const char *, va_list *) = NULL; /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ #ifdef CTLIB_FORMAT_CHECK void CT_dbfunc_check( const char *str __attribute(( __unused__ )), ... ) { fprintf( stderr, "compiled with CTLIB_FORMAT_CHECK, please don't run\n" ); abort(); } #endif /******************************************************************************* * * ROUTINE: SetDebugCType * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int SetDebugCType( void (*dbfunc)(const char *, ...), void (*dbvprintf)(const char *, va_list *), unsigned long dbflags ) { g_CT_dbfunc = dbfunc; gs_vprintf = dbvprintf; g_CT_dbflags = dbflags; return 1; } /******************************************************************************* * * ROUTINE: BisonDebugFunc * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void BisonDebugFunc( void *dummy, const char *fmt, ... ) { if( dummy != NULL && gs_vprintf != NULL ) { va_list l; va_start( l, fmt ); gs_vprintf( fmt, &l ); va_end( l ); } } #endif /* CTLIB_DEBUGGING */ Convert-Binary-C-0.85/ctlib/cttype.c0000644000175000001440000010110614677003452015763 0ustar mhxusers/******************************************************************************* * * MODULE: cttype.c * ******************************************************************************** * * DESCRIPTION: ANSI C data type objects * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "cttype.h" #include "ctdebug.h" #include "cterror.h" #include "util/memalloc.h" /*===== DEFINES ==============================================================*/ #define CTLIB_STRINGIFY(x) #x #if defined(__GNUC__) && !defined(__clang__) # define CTLIB_DIAG_PUSH _Pragma("GCC diagnostic push") # define CTLIB_DIAG_POP _Pragma("GCC diagnostic pop") # define CTLIB_DIAG_GCC_IGNORE(what) \ _Pragma(CTLIB_STRINGIFY(GCC diagnostic ignored what)) #else # define CTLIB_DIAG_PUSH # define CTLIB_DIAG_POP # define CTLIB_DIAG_GCC_IGNORE(what) #endif #define CTLIB_DIAG_IGNORE_STRINGOP_OVERFLOW \ CTLIB_DIAG_GCC_IGNORE("-Wstringop-overflow") #define CTLIB_DIAG_IGNORE_STRINGOP_OVERREAD \ CTLIB_DIAG_GCC_IGNORE("-Wstringop-overread") #define CONSTRUCT_OBJECT(type, name) \ type *name; \ AllocF(type *, name, sizeof(type)); \ PROFILE_ADD(type, sizeof(type)) #define CLONE_OBJECT(type, dest, src) \ type *dest; \ if ((src) == NULL) \ return NULL; \ AllocF(type *, dest, sizeof(type)); \ memcpy(dest, src, sizeof(type)); \ PROFILE_ADD(type, sizeof(type)) #define CONSTRUCT_OBJECT_IDENT(type, name) \ type *name; \ if (identifier && id_len == 0) \ id_len = strlen(identifier); \ AllocF(type *, name, offsetof(type, identifier) + id_len + 1); \ if (identifier) \ { \ CTLIB_DIAG_PUSH \ CTLIB_DIAG_IGNORE_STRINGOP_OVERFLOW \ CTLIB_DIAG_IGNORE_STRINGOP_OVERREAD \ strncpy(name->identifier, identifier, id_len); \ name->identifier[id_len] = '\0'; \ CTLIB_DIAG_POP \ } \ else \ name->identifier[0] = '\0'; \ name->id_len = (unsigned char) (id_len < 255 ? id_len : 255); \ PROFILE_ADD(type, offsetof(type, identifier) + id_len + 1) #define CLONE_OBJECT_IDENT(type, dest, src) \ type *dest; \ size_t count = offsetof(type, identifier) + 1; \ if ((src) == NULL) \ return NULL; \ if ((src)->id_len) \ count += CTT_IDLEN(src); \ AllocF(type *, dest, count); \ memcpy(dest, src, count); \ PROFILE_ADD(type, count) #define DELETE_OBJECT_IDENT(type, ptr) \ do { \ PROFILE_DEL(type, offsetof(type, identifier) + CTT_IDLEN(ptr) + 1); \ Free(ptr); \ } while (0) #define DELETE_OBJECT(type, ptr) \ do { \ PROFILE_DEL(type, sizeof(type)); \ Free(ptr); \ } while (0) #ifdef CTLIB_PROFILE_MEM #define PROFILE_ADD(ix, size) \ do { \ struct MemProfile *p = &gs_profile[PROFILE_ ## ix]; \ p->total++; \ p->mtotal += size; \ if (++p->cur > p->max) \ p->max = p->cur; \ p->mcur += size; \ if (p->mcur > p->mmax) \ p->mmax = p->mcur; \ if (!gs_profile_init) \ { \ gs_profile_init = 1; \ (void) atexit(profile_dump); \ } \ } while (0) #define PROFILE_DEL(ix, size) \ do { \ struct MemProfile *p = &gs_profile[PROFILE_ ## ix]; \ p->cur--; \ p->mcur -= size; \ } while (0) #else #define PROFILE_ADD(ix, size) (void)0 #define PROFILE_DEL(ix, size) (void)0 #endif /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ #ifdef CTLIB_PROFILE_MEM enum { PROFILE_Value, PROFILE_Enumerator, PROFILE_EnumSpecifier, PROFILE_Declarator, PROFILE_StructDeclaration, PROFILE_Struct, PROFILE_Typedef, PROFILE_TypedefList, PROFILE_MAX, }; static struct MemProfile { const char *name; int size; long total, cur, max; long mtotal, mcur, mmax; } gs_profile[PROFILE_MAX] = { #define PROFTYPE(type) { #type, sizeof(type) } PROFTYPE(Value), PROFTYPE(Enumerator), PROFTYPE(EnumSpecifier), PROFTYPE(Declarator), PROFTYPE(StructDeclaration), PROFTYPE(Struct), PROFTYPE(Typedef), PROFTYPE(TypedefList) #undef PROFTYPE }; int gs_profile_init = 0; #endif /*===== STATIC FUNCTIONS =====================================================*/ #ifdef CTLIB_PROFILE_MEM void profile_dump(void) { int i; struct MemProfile *p = &gs_profile[0]; fprintf(stderr, "\n\n=== MEMORY PROFILE ===\n\n"); for (i = 0; i < PROFILE_MAX; i++, p++) fprintf(stderr, "%-20s (%3d bytes): total=%6ld (%9ld bytes) / " "cur=%6ld (%9ld bytes) / max=%6ld (%9ld bytes)\n", p->name, p->size, p->total, p->mtotal, p->cur, p->mcur, p->max, p->mmax); fprintf(stderr, "\n======================\n\n"); } #endif /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: value_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Value object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Value *value_new(signed long iv, u_32 flags) { CONSTRUCT_OBJECT(Value, pValue); pValue->iv = iv; pValue->flags = flags; CT_DEBUG(TYPE, ("type::value_new( iv=%ld flags=0x%08lX ) = %p", iv, (unsigned long) flags, pValue)); return pValue; } /******************************************************************************* * * ROUTINE: value_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Value object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void value_delete(Value *pValue) { CT_DEBUG(TYPE, ("type::value_delete( pValue=%p )", pValue)); if (pValue) DELETE_OBJECT(Value, pValue); } /******************************************************************************* * * ROUTINE: value_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Value object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Value *value_clone(const Value *pSrc) { CLONE_OBJECT(Value, pDest, pSrc); CT_DEBUG(TYPE, ("type::value_clone( %p ) = %p", pSrc, pDest)); return pDest; } /******************************************************************************* * * ROUTINE: enum_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Enumeration object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Enumerator *enum_new(const char *identifier, int id_len, Value *pValue) { CONSTRUCT_OBJECT_IDENT(Enumerator, pEnum); if (pValue) { pEnum->value = *pValue; if (pValue->flags & V_IS_UNDEF) pEnum->value.flags |= V_IS_UNSAFE_UNDEF; } else { pEnum->value.iv = 0; pEnum->value.flags = V_IS_UNDEF; } CT_DEBUG(TYPE, ("type::enum_new( identifier=\"%s\", pValue=%p " "[iv=%ld, flags=0x%08lX] ) = %p", pEnum->identifier, pValue, pEnum->value.iv, (unsigned long) pEnum->value.flags, pEnum)); return pEnum; } /******************************************************************************* * * ROUTINE: enum_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Enumeration object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void enum_delete(Enumerator *pEnum) { CT_DEBUG(TYPE, ("type::enum_delete( pEnum=%p [identifier=\"%s\"] )", pEnum, pEnum ? pEnum->identifier : "")); if (pEnum) DELETE_OBJECT_IDENT(Enumerator, pEnum); } /******************************************************************************* * * ROUTINE: enum_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Enumeration object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Enumerator *enum_clone(const Enumerator *pSrc) { CLONE_OBJECT_IDENT(Enumerator, pDest, pSrc); CT_DEBUG(TYPE, ("type::enum_clone( pSrc=%p [identifier=\"%s\"] ) = %p", pSrc, pSrc ? pSrc->identifier : "", pDest)); return pDest; } /******************************************************************************* * * ROUTINE: enumspec_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Enumeration Specifier object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ EnumSpecifier *enumspec_new(const char *identifier, int id_len, LinkedList enumerators) { CONSTRUCT_OBJECT_IDENT(EnumSpecifier, pEnumSpec); pEnumSpec->ctype = TYP_ENUM; pEnumSpec->tflags = T_ENUM; pEnumSpec->refcount = 0; pEnumSpec->tags = NULL; if (enumerators == NULL) pEnumSpec->enumerators = NULL; else enumspec_update(pEnumSpec, enumerators); CT_DEBUG(TYPE, ("type::enumspec_new( identifier=\"%s\", enumerators=%p [count=%d] ) = %p", pEnumSpec->identifier, enumerators, LL_count( enumerators ), pEnumSpec)); return pEnumSpec; } /******************************************************************************* * * ROUTINE: enumspec_update * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Update an Enumeration Specifier object after all enumerators * have been added. This routine will update the sign and size * properties. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void enumspec_update(EnumSpecifier *pEnumSpec, LinkedList enumerators) { ListIterator ei; Enumerator *pEnum; long min, max; CT_DEBUG(TYPE, ("type::enumspec_update( pEnumSpec=%p [identifier=\"%s\"], enumerators=%p [count=%d] )", pEnumSpec, pEnumSpec->identifier, enumerators, LL_count( enumerators ))); pEnumSpec->tflags = 0; pEnumSpec->enumerators = enumerators; min = max = 0; LL_foreach(pEnum, ei, enumerators) { if (pEnum->value.iv > max) max = pEnum->value.iv; else if (pEnum->value.iv < min) min = pEnum->value.iv; if (IS_UNSAFE_VAL(pEnum->value)) pEnumSpec->tflags |= T_UNSAFE_VAL; } if (min < 0) { pEnumSpec->tflags |= T_SIGNED; if (min >= -128 && max < 128) { pEnumSpec->sizes[ES_SIGNED_SIZE] = 1U; pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 1U; } else if (min >= -32768 && max < 32768) { pEnumSpec->sizes[ES_SIGNED_SIZE] = 2U; pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 2U; } else { pEnumSpec->sizes[ES_SIGNED_SIZE] = 4U; pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 4U; } } else { pEnumSpec->tflags |= T_UNSIGNED; if (max < 256) pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 1U; else if (max < 65536) pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 2U; else pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 4U; if (max < 128) pEnumSpec->sizes[ES_SIGNED_SIZE] = 1U; else if (max < 32768) pEnumSpec->sizes[ES_SIGNED_SIZE] = 2U; else pEnumSpec->sizes[ES_SIGNED_SIZE] = 4U; } } /******************************************************************************* * * ROUTINE: enumspec_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Enumeration Specifier object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void enumspec_delete(EnumSpecifier *pEnumSpec) { CT_DEBUG(TYPE, ("type::enumspec_delete( pEnumSpec=%p [identifier=\"%s\"] )", pEnumSpec, pEnumSpec ? pEnumSpec->identifier : "")); if (pEnumSpec) { LL_destroy(pEnumSpec->enumerators, (LLDestroyFunc) enum_delete); delete_taglist(&pEnumSpec->tags); DELETE_OBJECT_IDENT(EnumSpecifier, pEnumSpec); } } /******************************************************************************* * * ROUTINE: enumspec_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Enumeration Specifier object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ EnumSpecifier *enumspec_clone(const EnumSpecifier *pSrc) { CLONE_OBJECT_IDENT(EnumSpecifier, pDest, pSrc); CT_DEBUG(TYPE, ("type::enumspec_clone( pSrc=%p [identifier=\"%s\"] ) = %p", pSrc, pSrc ? pSrc->identifier : "", pDest)); pDest->enumerators = LL_clone(pSrc->enumerators, (LLCloneFunc) enum_clone); pDest->tags = clone_taglist(pSrc->tags); return pDest; } /******************************************************************************* * * ROUTINE: decl_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Declarator object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Declarator *decl_new(const char *identifier, int id_len) { CONSTRUCT_OBJECT_IDENT(Declarator, pDecl); pDecl->offset = -1; pDecl->size = -1; pDecl->item_size = -1; pDecl->tags = NULL; pDecl->ext.array = NULL; pDecl->ext.bitfield.size = 0; pDecl->ext.bitfield.bits = 0; pDecl->ext.bitfield.pos = 0; pDecl->pointer_flag = 0; pDecl->array_flag = 0; pDecl->bitfield_flag = 0; CT_DEBUG(TYPE, ("type::decl_new( identifier=\"%s\" ) = %p", pDecl->identifier, pDecl)); return pDecl; } /******************************************************************************* * * ROUTINE: decl_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Declarator object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void decl_delete(Declarator *pDecl) { CT_DEBUG(TYPE, ("type::decl_delete( pDecl=%p [identifier=\"%s\"] )", pDecl, pDecl ? pDecl->identifier : "")); if (pDecl) { if (pDecl->array_flag) LL_destroy(pDecl->ext.array, (LLDestroyFunc) value_delete); delete_taglist(&pDecl->tags); DELETE_OBJECT_IDENT(Declarator, pDecl); } } /******************************************************************************* * * ROUTINE: decl_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Declarator object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Declarator *decl_clone(const Declarator *pSrc) { CLONE_OBJECT_IDENT(Declarator, pDest, pSrc); CT_DEBUG(TYPE, ("type::decl_clone( pSrc=%p [identifier=\"%s\"] ) = %p", pSrc, pSrc ? pSrc->identifier : "", pDest)); if (pSrc->array_flag) pDest->ext.array = LL_clone(pSrc->ext.array, (LLCloneFunc) value_clone); pDest->tags = clone_taglist(pSrc->tags); return pDest; } /******************************************************************************* * * ROUTINE: structdecl_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Struct Declaration object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ StructDeclaration *structdecl_new(TypeSpec type, LinkedList declarators) { CONSTRUCT_OBJECT(StructDeclaration, pStructDecl); pStructDecl->type = type; pStructDecl->declarators = declarators; pStructDecl->offset = 0; pStructDecl->size = 0; CT_DEBUG(TYPE, ("type::structdecl_new( type=[tflags=0x%08lX,ptr=%p], " "declarators=%p [count=%d] ) = %p", (unsigned long) type.tflags, type.ptr, declarators, LL_count(declarators), pStructDecl)); return pStructDecl; } /******************************************************************************* * * ROUTINE: structdecl_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Struct Declaration object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void structdecl_delete(StructDeclaration *pStructDecl) { CT_DEBUG(TYPE, ("type::structdecl_delete( pStructDecl=%p )", pStructDecl)); if (pStructDecl) { LL_destroy(pStructDecl->declarators, (LLDestroyFunc) decl_delete); DELETE_OBJECT(StructDeclaration, pStructDecl); } } /******************************************************************************* * * ROUTINE: structdecl_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Struct Declaration object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ StructDeclaration *structdecl_clone(const StructDeclaration *pSrc) { CLONE_OBJECT(StructDeclaration, pDest, pSrc); CT_DEBUG(TYPE, ("type::structdecl_clone( pSrc=%p ) = %p", pSrc, pDest)); pDest->declarators = LL_clone(pSrc->declarators, (LLCloneFunc) decl_clone); return pDest; } /******************************************************************************* * * ROUTINE: struct_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Struct/Union object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Struct *struct_new(const char *identifier, int id_len, u_32 tflags, unsigned pack, LinkedList declarations) { CONSTRUCT_OBJECT_IDENT(Struct, pStruct); pStruct->ctype = TYP_STRUCT; pStruct->tflags = tflags; pStruct->refcount = 0; pStruct->align = 0; pStruct->size = 0; pStruct->pack = pack; pStruct->declarations = declarations; pStruct->tags = NULL; CT_DEBUG(TYPE, ("type::struct_new( identifier=\"%s\", tflags=0x%08lX, " "pack=%d, declarations=%p [count=%d] ) = %p", pStruct->identifier, (unsigned long) tflags, pack, declarations, LL_count(declarations), pStruct)); return pStruct; } /******************************************************************************* * * ROUTINE: struct_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Struct/Union object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void struct_delete(Struct *pStruct) { CT_DEBUG(TYPE, ("type::struct_delete( pStruct=%p )", pStruct)); if (pStruct) { LL_destroy(pStruct->declarations, (LLDestroyFunc) structdecl_delete); delete_taglist(&pStruct->tags); DELETE_OBJECT_IDENT(Struct, pStruct); } } /******************************************************************************* * * ROUTINE: struct_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Struct object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Struct *struct_clone(const Struct *pSrc) { CLONE_OBJECT_IDENT(Struct, pDest, pSrc); CT_DEBUG(TYPE, ("type::struct_clone( pSrc=%p [identifier=\"%s\"] ) = %p", pSrc, pSrc ? pSrc->identifier : "", pDest)); pDest->declarations = LL_clone(pSrc->declarations, (LLCloneFunc) structdecl_clone); pDest->tags = clone_taglist(pSrc->tags); return pDest; } /******************************************************************************* * * ROUTINE: typedef_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Typedef object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Typedef *typedef_new(TypeSpec *pType, Declarator *pDecl) { CONSTRUCT_OBJECT(Typedef, pTypedef); pTypedef->ctype = TYP_TYPEDEF; pTypedef->pType = pType; pTypedef->pDecl = pDecl; CT_DEBUG(TYPE, ("type::typedef_new( type=[tflags=0x%08lX,ptr=%p], " "pDecl=%p [identifier=\"%s\"] ) = %p", (unsigned long) pType->tflags, pType->ptr, pDecl, pDecl ? pDecl->identifier : "", pTypedef)); return pTypedef; } /******************************************************************************* * * ROUTINE: typedef_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Typedef object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void typedef_delete(Typedef *pTypedef) { CT_DEBUG(TYPE, ("type::typedef_delete( pTypedef=%p )", pTypedef)); if (pTypedef) { decl_delete(pTypedef->pDecl); DELETE_OBJECT(Typedef, pTypedef); } } /******************************************************************************* * * ROUTINE: typedef_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Typedef object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Typedef *typedef_clone(const Typedef *pSrc) { CLONE_OBJECT(Typedef, pDest, pSrc); CT_DEBUG(TYPE, ("type::typedef_clone( pSrc=%p ) = %p", pSrc, pDest)); pDest->pDecl = decl_clone(pSrc->pDecl); return pDest; } /******************************************************************************* * * ROUTINE: typedef_list_new * * WRITTEN BY: Marcus Holland-Moritz ON: Sep 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Typedef List object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ TypedefList *typedef_list_new(TypeSpec type, LinkedList typedefs) { CONSTRUCT_OBJECT(TypedefList, pTypedefList); pTypedefList->ctype = TYP_TYPEDEF_LIST; pTypedefList->type = type; pTypedefList->typedefs = typedefs; CT_DEBUG(TYPE, ("type::typedef_list_new( type=[tflags=0x%08lX,ptr=%p], typedefs=%p ) = %p", (unsigned long) type.tflags, type.ptr, typedefs, pTypedefList)); return pTypedefList; } /******************************************************************************* * * ROUTINE: typedef_list_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Sep 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Typedef List object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void typedef_list_delete(TypedefList *pTypedefList) { CT_DEBUG(TYPE, ("type::typedef_list_delete( pTypedefList=%p )", pTypedefList)); if (pTypedefList) { LL_destroy(pTypedefList->typedefs, (LLDestroyFunc) typedef_delete); DELETE_OBJECT(TypedefList, pTypedefList); } } /******************************************************************************* * * ROUTINE: typedef_list_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Typedef List object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ TypedefList *typedef_list_clone(const TypedefList *pSrc) { CLONE_OBJECT(TypedefList, pDest, pSrc); CT_DEBUG(TYPE, ("type::typedef_list_clone( pSrc=%p ) = %p", pSrc, pDest)); if (pSrc->typedefs) { ListIterator ti; Typedef *pTypedef; pDest->typedefs = LL_new(); LL_foreach(pTypedef, ti, pSrc->typedefs) { Typedef *pClone = typedef_clone(pTypedef); pClone->pType = &pDest->type; LL_push(pDest->typedefs, pClone); } } return pDest; } /******************************************************************************* * * ROUTINE: get_typedef_list * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Get typedef list object from a typedef object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ TypedefList *get_typedef_list(Typedef *pTypedef) { TypedefList *pTDL; CT_DEBUG(TYPE, ("type::get_typedef_list( pTypedef=%p )", pTypedef)); if (pTypedef == NULL || pTypedef->ctype != TYP_TYPEDEF || pTypedef->pType == NULL) return NULL; /* assume that pType points to type member of typedef list */ pTDL = (TypedefList *) (((u_8 *) pTypedef->pType) - offsetof(TypedefList, type)); if (pTDL->ctype != TYP_TYPEDEF_LIST) return NULL; return pTDL; } /******************************************************************************* * * ROUTINE: ctt_refcount_inc * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Increment reference count of structs / enums. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void ctt_refcount_inc(void *ptr) { if (ptr == NULL) return; switch (GET_CTYPE(ptr)) { case TYP_ENUM: if (((EnumSpecifier *) ptr)->refcount < ~((unsigned)0)) ((EnumSpecifier *) ptr)->refcount++; break; case TYP_STRUCT: if (((Struct *) ptr)->refcount < ~((unsigned)0)) ((Struct *) ptr)->refcount++; break; case TYP_TYPEDEF: case TYP_TYPEDEF_LIST: /* no refcounting */ break; default: fatal_error("invalid cttype (%d) passed to ctt_refcount_inc()", GET_CTYPE(ptr)); break; } } Convert-Binary-C-0.85/ctlib/bitfields.c0000644000175000001440000006026414677003452016431 0ustar mhxusers/******************************************************************************* * * MODULE: bitfields.c * ******************************************************************************** * * DESCRIPTION: Bitfield layouting routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctdebug.h" #include "ctlib/cterror.h" #include "ctlib/bitfields.h" #include "util/ccattr.h" #include "util/memalloc.h" /*===== DEFINES ==============================================================*/ #define REG_BL_CLASS(cls) { #cls, sizeof(struct _BL_ ## cls), &cls ## _vtable } #define BL_SELF(cls) BL_ ## cls self = (BL_ ## cls) _self #define aSELF BitfieldLayouter _self __attribute__((unused)) #ifdef BITS # undef BITS #endif #define BITS(bytes) (8*(bytes)) #define BYTE_ORDER_STRING (self->byte_order == BLPV_BIG_ENDIAN ? "BE" : "LE") /*===== TYPEDEFS =============================================================*/ typedef struct _BL_Generic { BL_CLASS_FIXED; BLPropValStr byte_order; BLPropValInt max_align; BLPropValInt align; BLPropValInt offset; int bit_offset; int cur_type_size; int cur_type_align; } *BL_Generic; typedef struct _BL_Microsoft { BL_CLASS_FIXED; BLPropValStr byte_order; BLPropValInt max_align; BLPropValInt align; BLPropValInt offset; int bit_offset; int cur_type_size; int cur_type_align; } *BL_Microsoft; typedef struct _BL_Simple { BL_CLASS_FIXED; BLPropValStr byte_order; BLPropValInt max_align; BLPropValInt align; BLPropValInt offset; BLPropValInt block_size; int pos; int bits_left; } *BL_Simple; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void Generic_init(aSELF); static void Generic_reset(aSELF); static enum BLError Generic_push(aSELF, const BLPushParam *pParam); static enum BLError Generic_finalize(aSELF); static enum BLError Generic_get(aSELF, BLProperty prop, BLPropValue *value); static enum BLError Generic_set(aSELF, BLProperty prop, const BLPropValue *value); static const BLOption * Generic_options(aSELF, int *count); static void Microsoft_init(aSELF); static void Microsoft_reset(aSELF); static enum BLError Microsoft_push(aSELF, const BLPushParam *pParam); static enum BLError Microsoft_finalize(aSELF); static enum BLError Microsoft_get(aSELF, BLProperty prop, BLPropValue *value); static enum BLError Microsoft_set(aSELF, BLProperty prop, const BLPropValue *value); static const BLOption * Microsoft_options(aSELF, int *count); static void Simple_init(aSELF); static void Simple_reset(aSELF); static enum BLError Simple_push(aSELF, const BLPushParam *pParam); static enum BLError Simple_finalize(aSELF); static enum BLError Simple_get(aSELF, BLProperty prop, BLPropValue *value); static enum BLError Simple_set(aSELF, BLProperty prop, const BLPropValue *value); static const BLOption * Simple_options(aSELF, int *count); static void bl_destroy(BitfieldLayouter self); static BitfieldLayouter bl_clone(BitfieldLayouter self); static const char * bl_class_name(BitfieldLayouter self); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ static const struct BLVtable Generic_vtable = { bl_clone, Generic_init, Generic_reset, bl_destroy, Generic_push, Generic_finalize, Generic_get, Generic_set, Generic_options, bl_class_name, }; static const struct BLVtable Microsoft_vtable = { bl_clone, Microsoft_init, Microsoft_reset, bl_destroy, Microsoft_push, Microsoft_finalize, Microsoft_get, Microsoft_set, Microsoft_options, bl_class_name, }; static const struct BLVtable Simple_vtable = { bl_clone, Simple_init, Simple_reset, bl_destroy, Simple_push, Simple_finalize, Simple_get, Simple_set, Simple_options, bl_class_name, }; static const struct BLClass { const char *name; const size_t size; const struct BLVtable *vtbl; } bl_classes[] = { REG_BL_CLASS(Generic), REG_BL_CLASS(Microsoft), REG_BL_CLASS(Simple) }; /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* ******************************************************************************** ******************************************************************************** ______ _ / ____/__ ____ ___ _____(_)____ / / __/ _ \/ __ \/ _ \/ ___/ / ___/ / /_/ / __/ / / / __/ / / / /__ \____/\___/_/ /_/\___/_/ /_/\___/ ******************************************************************************** ******************************************************************************** *******************************************************************************/ /******************************************************************************* * * ROUTINE: Generic_init * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Generic_init(aSELF) { BL_SELF(Generic); self->byte_order = BLPV_LITTLE_ENDIAN; } /******************************************************************************* * * ROUTINE: Generic_reset * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Generic_reset(aSELF) { BL_SELF(Generic); self->bit_offset = 0; self->cur_type_size = 0; self->cur_type_align = 0; } /******************************************************************************* * * ROUTINE: Generic_push * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Generic_push(aSELF, const BLPushParam *pParam) { BL_SELF(Generic); BitfieldInfo *bit; assert(pParam->pDecl != NULL); assert(pParam->pDecl->bitfield_flag); bit = &pParam->pDecl->ext.bitfield; CT_DEBUG(CTLIB, ("(Generic) pushing bitfield (%s:%d/s=%d/a=%d), offset=%d.%d, max_align=%d", pParam->pDecl->identifier, bit->bits, pParam->type_size, pParam->type_align, (int) self->offset, self->bit_offset, (int) self->max_align)); if (self->cur_type_size != (int) pParam->type_size) { int align = (int) pParam->type_align < self->max_align ? (int) pParam->type_align : self->max_align; int delta = self->offset % align; if (align > self->align) self->align = align; self->offset -= delta; self->bit_offset += BITS(delta); CT_DEBUG(CTLIB, ("(Generic) type size change: size: %d -> %d, align: %d -> %d, offset=%d.%d", self->cur_type_size, pParam->type_size, self->cur_type_align, align, (int) self->offset, self->bit_offset)); self->cur_type_size = pParam->type_size; self->cur_type_align = align; } while (bit->bits > BITS(self->cur_type_size) - self->bit_offset) { self->offset += self->cur_type_align; if (self->bit_offset > BITS(self->cur_type_align)) self->bit_offset -= BITS(self->cur_type_align); else self->bit_offset = 0; CT_DEBUG(CTLIB, ("(Generic) move offset -> %d.%d", (int) self->offset, self->bit_offset)); } if (bit->bits == 0) { if (self->bit_offset > 0) { self->offset += self->cur_type_size - (self->offset % self->cur_type_size); self->bit_offset = 0; } } else { int used_bytes, new_bit_offset; new_bit_offset = self->bit_offset + bit->bits; if (new_bit_offset <= BITS(1)) used_bytes = 1; else if (new_bit_offset <= BITS(2)) used_bytes = 2; else if (new_bit_offset <= BITS(4)) used_bytes = 4; else if (new_bit_offset <= BITS(8)) used_bytes = 8; assert(used_bytes <= self->cur_type_size); pParam->pDecl->offset = self->offset; pParam->pDecl->size = used_bytes; bit->size = used_bytes; switch (self->byte_order) { case BLPV_LITTLE_ENDIAN: bit->pos = self->bit_offset; break; case BLPV_BIG_ENDIAN: bit->pos = BITS(used_bytes) - self->bit_offset - bit->bits; break; default: fatal_error("(Generic) invalid byte-order (%d)", self->byte_order); break; } assert(bit->pos < 64); self->bit_offset = new_bit_offset; } CT_DEBUG(CTLIB, ("(Generic) new %s bitfield (%s) at (offset=%d, size=%d, pos=%d, bits=%d)", BYTE_ORDER_STRING, pParam->pDecl->identifier, pParam->pDecl->offset, bit->size, bit->pos, bit->bits)); return BLE_NO_ERROR; } /******************************************************************************* * * ROUTINE: Generic_finalize * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Generic_finalize(aSELF) { BL_SELF(Generic); CT_DEBUG(CTLIB, ("(Generic) finalizing bitfield (offset=%d.%d)", (int) self->offset, self->bit_offset)); self->offset += (self->bit_offset + (BITS(1)-1)) / BITS(1); CT_DEBUG(CTLIB, ("(Generic) final offset=%d", (int) self->offset)); return BLE_NO_ERROR; } /******************************************************************************* ******************************************************************************** ******************************************************************************** __ ____ ______ / |/ (_)_____________ _________ / __/ /_ / /|_/ / / ___/ ___/ __ \/ ___/ __ \/ /_/ __/ / / / / / /__/ / / /_/ (__ ) /_/ / __/ /_ /_/ /_/_/\___/_/ \____/____/\____/_/ \__/ ******************************************************************************** ******************************************************************************** *******************************************************************************/ /******************************************************************************* * * ROUTINE: Microsoft_init * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Microsoft_init(aSELF) { BL_SELF(Microsoft); self->byte_order = BLPV_LITTLE_ENDIAN; } /******************************************************************************* * * ROUTINE: Microsoft_reset * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Microsoft_reset(aSELF) { BL_SELF(Microsoft); self->bit_offset = 0; self->cur_type_size = 0; self->cur_type_align = 0; } /******************************************************************************* * * ROUTINE: Microsoft_push * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Microsoft_push(aSELF, const BLPushParam *pParam) { BL_SELF(Microsoft); BitfieldInfo *bit; assert(pParam->pDecl != NULL); assert(pParam->pDecl->bitfield_flag); bit = &pParam->pDecl->ext.bitfield; if (self->cur_type_size != (int) pParam->type_size) { int delta; int align = (int) pParam->type_align < self->max_align ? (int) pParam->type_align : self->max_align; if (align > self->align) self->align = align; if (self->bit_offset > 0) { self->offset += self->cur_type_size; self->bit_offset = 0; } delta = self->offset % align; if (delta) { self->offset += align - delta; self->bit_offset = 0; } self->cur_type_size = pParam->type_size; self->cur_type_align = align; } if (bit->bits == 0) { if (self->bit_offset > 0) { self->offset += self->cur_type_size; self->bit_offset = 0; } } else { if (bit->bits > BITS(self->cur_type_size) - self->bit_offset) { if (bit->bits > BITS(self->cur_type_size)) return BLE_BITFIELD_TOO_WIDE; self->offset += self->cur_type_size; self->bit_offset = 0; } switch (self->byte_order) { case BLPV_LITTLE_ENDIAN: bit->pos = self->bit_offset; break; case BLPV_BIG_ENDIAN: bit->pos = BITS(self->cur_type_size) - self->bit_offset - bit->bits; break; default: fatal_error("(Microsoft) invalid byte-order (%d)", self->byte_order); break; } assert(bit->pos < 64); self->bit_offset += bit->bits; pParam->pDecl->offset = self->offset; pParam->pDecl->size = self->cur_type_size; bit->size = self->cur_type_size; CT_DEBUG(CTLIB, ("(Microsoft) new %s bitfield (%s) at (offset=%d, size=%d, pos=%d, bits=%d), bit_offset=%d", BYTE_ORDER_STRING, pParam->pDecl->identifier, pParam->pDecl->offset, bit->size, bit->pos, bit->bits, self->bit_offset)); } return BLE_NO_ERROR; } /******************************************************************************* * * ROUTINE: Microsoft_finalize * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Microsoft_finalize(aSELF) { BL_SELF(Microsoft); if (self->bit_offset > 0) self->offset += self->cur_type_size; return BLE_NO_ERROR; } /******************************************************************************* ******************************************************************************** ******************************************************************************** _____ _ __ / ___/(_)___ ___ ____ / /__ \__ \/ / __ `__ \/ __ \/ / _ \ ___/ / / / / / / / /_/ / / __/ /____/_/_/ /_/ /_/ .___/_/\___/ /_/ ******************************************************************************** ******************************************************************************** *******************************************************************************/ /******************************************************************************* * * ROUTINE: Simple_init * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Simple_init(aSELF) { BL_SELF(Simple); self->byte_order = BLPV_LITTLE_ENDIAN; self->block_size = 4; } /******************************************************************************* * * ROUTINE: Simple_reset * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Simple_reset(aSELF) { BL_SELF(Simple); self->offset += self->block_size - (self->offset % self->block_size); self->pos = 0; self->bits_left = BITS(self->block_size); } /******************************************************************************* * * ROUTINE: Simple_push * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Simple_push(aSELF, const BLPushParam *pParam) { BL_SELF(Simple); BitfieldInfo *bit; assert(pParam->pDecl != NULL); assert(pParam->pDecl->bitfield_flag); bit = &pParam->pDecl->ext.bitfield; if (bit->bits == 0) { self->pos += self->block_size; self->bits_left = BITS(self->block_size); } else { if (bit->bits > self->bits_left) { self->pos += self->block_size; self->bits_left = BITS(self->block_size); } pParam->pDecl->offset = self->offset + self->pos; pParam->pDecl->size = self->block_size; bit->size = (unsigned char) self->block_size; switch (self->byte_order) { case BLPV_LITTLE_ENDIAN: bit->pos = BITS(self->block_size) - self->bits_left; break; case BLPV_BIG_ENDIAN: bit->pos = self->bits_left - bit->bits; break; default: fatal_error("(Simple) invalid byte-order (%d)", self->byte_order); break; } self->bits_left -= bit->bits; CT_DEBUG(CTLIB, ("(Simple) new %s bitfield (%s) at (offset=%d, size=%d, pos=%d, bits=%d), bits_left=%d", BYTE_ORDER_STRING, pParam->pDecl->identifier, pParam->pDecl->offset, pParam->pDecl->size, bit->pos, bit->bits, self->bits_left)); } return BLE_NO_ERROR; } /******************************************************************************* * * ROUTINE: Simple_finalize * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Simple_finalize(aSELF) { BL_SELF(Simple); if (self->bits_left != BITS(self->block_size)) self->pos += self->block_size; self->offset += self->pos; self->align = self->block_size; return BLE_NO_ERROR; } /******************************************************************************* ******************************************************************************** ******************************************************************************** __ _ __ _____ __ __ __ __ / /_ (_) /_/ __(_)__ / /___/ / / /___ ___ ______ __ __/ /____ _____ / __ \/ / __/ /_/ / _ \/ / __ / / / __ `/ / / / __ \/ / / / __/ _ \/ ___/ / /_/ / / /_/ __/ / __/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / /_/ __/ / /_.___/_/\__/_/ /_/\___/_/\__,_/____/_/\__,_/\__, /\____/\__,_/\__/\___/_/ /_____/ /____/ ******************************************************************************** ******************************************************************************** *******************************************************************************/ /******************************************************************************* * * ROUTINE: bl_destroy * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Destroys a BitfieldLayouter. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void bl_destroy(BitfieldLayouter self) { if (self) Free(self); } /******************************************************************************* * * ROUTINE: bl_clone * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clones a BitfieldLayouter. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static BitfieldLayouter bl_clone(BitfieldLayouter self) { BitfieldLayouter clone; const struct BLClass *pc; assert(self != NULL); pc = self->blc; AllocF(BitfieldLayouter, clone, pc->size); memcpy(clone, self, pc->size); return clone; } /******************************************************************************* * * ROUTINE: bl_class_name * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Returns the class name of a BitfieldLayouter. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static const char *bl_class_name(BitfieldLayouter self) { assert(self != NULL); return self->blc->name; } /******************************************************************************* * * ROUTINE: bl_create * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ BitfieldLayouter bl_create(const char *class_name) { BitfieldLayouter self; unsigned i; const struct BLClass *pc = NULL; assert(class_name != NULL); CT_DEBUG(CTLIB, ("trying to create new [%s] bitfield layouter", class_name)); for (i = 0; i < sizeof bl_classes / sizeof bl_classes[0]; i++) if (strcmp(class_name, bl_classes[i].name) == 0) { pc = &bl_classes[i]; break; } if (pc == NULL) { CT_DEBUG(CTLIB, ("no such bitfield layouter class [%s]", class_name)); return NULL; } AllocF(BitfieldLayouter, self, pc->size); memset(self, 0, pc->size); self->blc = pc; self->m = pc->vtbl; if (self->m->init) self->m->init(self); CT_DEBUG(CTLIB, ("created new [%s] bitfield layouter", class_name)); return self; } #include "token/t_blproperty.c" Convert-Binary-C-0.85/ctlib/ctparse.h0000644000175000001440000001076214677003452016130 0ustar mhxusers/******************************************************************************* * * HEADER: ctparse.h * ******************************************************************************** * * DESCRIPTION: Parser interface routines * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CTPARSE_H #define _CTLIB_CTPARSE_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/cttype.h" #include "ctlib/layout.h" #include "util/list.h" #include "util/hash.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ struct CPP; typedef struct { char *buffer; unsigned long pos, length; } Buffer; typedef struct { LayoutParam layout; ErrorGTI (*get_type_info)(const LayoutParam *, const TypeSpec *, const Declarator *, const char *, ...); void (*layout_compound)(const LayoutParam *, Struct *); /* boolean options */ unsigned unsigned_chars : 1; unsigned unsigned_bitfields : 1; unsigned issue_warnings : 1; unsigned disable_parser : 1; unsigned has_cpp_comments : 1; unsigned has_macro_vaargs : 1; unsigned has_std_c : 1; unsigned has_std_c_hosted : 1; unsigned is_std_c_hosted : 1; long int std_c_version; u_32 keywords; #define HAS_KEYWORD_AUTO 0x00000001U #define HAS_KEYWORD_CONST 0x00000002U #define HAS_KEYWORD_DOUBLE 0x00000004U #define HAS_KEYWORD_ENUM 0x00000008U #define HAS_KEYWORD_EXTERN 0x00000010U #define HAS_KEYWORD_FLOAT 0x00000020U #define HAS_KEYWORD_INLINE 0x00000040U #define HAS_KEYWORD_LONG 0x00000080U #define HAS_KEYWORD_REGISTER 0x00000100U #define HAS_KEYWORD_RESTRICT 0x00000200U #define HAS_KEYWORD_SHORT 0x00000400U #define HAS_KEYWORD_SIGNED 0x00000800U #define HAS_KEYWORD_STATIC 0x00001000U #define HAS_KEYWORD_UNSIGNED 0x00002000U #define HAS_KEYWORD_VOID 0x00004000U #define HAS_KEYWORD_VOLATILE 0x00008000U #define HAS_KEYWORD_ASM 0x00010000U #define HAS_ALL_KEYWORDS 0x0001FFFFU LinkedList disabled_keywords; LinkedList includes; LinkedList defines; LinkedList assertions; HashTable keyword_map; } CParseConfig; typedef struct { LinkedList enums; LinkedList structs; LinkedList typedef_lists; HashTable htEnumerators; HashTable htEnums; HashTable htStructs; HashTable htTypedefs; HashTable htFiles; HashTable htPredefined; LinkedList errorStack; struct CPP *pp; unsigned available : 1; unsigned ready : 1; } CParseInfo; typedef struct { void *arg; const char *name; const char *definition; size_t definition_len; } CMacroInfo; #define CMIF_WITH_DEFINITION 0x00000001 #define CMIF_NO_PREDEFINED 0x00000002 typedef unsigned CMIFlags; /*===== FUNCTION PROTOTYPES ==================================================*/ #define parse_buffer CTlib_parse_buffer int parse_buffer(const char *filename, const Buffer *pBuf, const CParseConfig *pCPC, CParseInfo *pCPI); #define init_parse_info CTlib_init_parse_info void init_parse_info(CParseInfo *pCPI); #define free_parse_info CTlib_free_parse_info void free_parse_info(CParseInfo *pCPI); #define reset_preprocessor CTlib_reset_preprocessor void reset_preprocessor(CParseInfo *pCPI); #define reset_parse_info CTlib_reset_parse_info void reset_parse_info(CParseInfo *pCPI); #define update_parse_info CTlib_update_parse_info void update_parse_info(CParseInfo *pCPI, const CParseConfig *pCPC); #define clone_parse_info CTlib_clone_parse_info void clone_parse_info(CParseInfo *pDest, const CParseInfo *pSrc); #define macro_is_defined CTlib_macro_is_defined int macro_is_defined(CParseInfo *pCPI, const char *name); #define macro_get_def CTlib_macro_get_def char *macro_get_def(CParseInfo *pCPI, const char *name, size_t *plen); #define macro_free_def CTlib_macro_free_def void macro_free_def(char *p); #define macro_iterate_defs CTlib_macro_iterate_defs void macro_iterate_defs(CParseInfo *pCPI, void (*func)(const CMacroInfo *), void *arg, CMIFlags flags); #endif Convert-Binary-C-0.85/ctlib/cterror.h0000644000175000001440000000436514677003452016151 0ustar mhxusers/******************************************************************************* * * HEADER: cterror.h * ******************************************************************************** * * DESCRIPTION: Error reporting for the ctlib * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CTERROR_H #define _CTLIB_CTERROR_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctparse.h" #include "cppreent.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { void * (*newstr)(void); void (*destroy)(void *); void (*scatf)(void *, const char *, ...); void (*vscatf)(void *, const char *, va_list *); const char * (*cstring)(void *, size_t *); void (*fatalerr)(void *); } PrintFunctions; enum CTErrorSeverity { CTES_INFORMATION, CTES_WARNING, CTES_ERROR }; typedef struct { enum CTErrorSeverity severity; char *string; } CTLibError; /*===== FUNCTION PROTOTYPES ==================================================*/ #define set_print_functions CTlib_set_print_functions void set_print_functions(PrintFunctions *pPF); #define pop_all_errors CTlib_pop_all_errors void pop_all_errors(CParseInfo *pCPI); #define push_error CTlib_push_error void push_error(CParseInfo *pCPI, const char *fmt, ...); #define push_warning CTlib_push_warning void push_warning(CParseInfo *pCPI, const char *fmt, ...); #define fatal_error CTlib_fatal_error void fatal_error(const char *fmt, ...); #define my_ucpp_ouch CTlib_my_ucpp_ouch void my_ucpp_ouch(pUCPP_ char *fmt, ...); #define my_ucpp_error CTlib_my_ucpp_error void my_ucpp_error(pUCPP_ long line, char *fmt, ...); #define my_ucpp_warning CTlib_my_ucpp_warning void my_ucpp_warning(pUCPP_ long line, char *fmt, ...); #endif Convert-Binary-C-0.85/xsubs/0000755000175000001440000000000014677003524014357 5ustar mhxusersConvert-Binary-C-0.85/xsubs/defined.xs0000644000175000001440000000173714677003452016341 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: defined # # WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 # CHANGED BY: ON: # ################################################################################ bool CBC::defined(name) const char *name PREINIT: CBC_METHOD(defined); CODE: CT_DEBUG_METHOD; /* TODO: probably we can do without parse data (would require special handling of the pp object) */ CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; RETVAL = macro_is_defined(&THIS->cpi, name); OUTPUT: RETVAL Convert-Binary-C-0.85/xsubs/compound.xs0000644000175000001440000001067214677003452016565 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: compound_names / struct_names / union_names # # WRITTEN BY: Marcus Holland-Moritz ON: Aug 2002 # CHANGED BY: ON: # ################################################################################ void CBC::compound_names() ALIAS: struct_names = 1 union_names = 2 PREINIT: CBC_METHOD_VAR; ListIterator li; Struct *pStruct; int count = 0; U32 context; u_32 mask; PPCODE: switch (ix) { case 1: /* struct_names */ CBC_METHOD_SET("struct_names"); mask = T_STRUCT; break; case 2: /* union_names */ CBC_METHOD_SET("union_names"); mask = T_UNION; break; default: /* compound_names */ CBC_METHOD_SET("compound_names"); mask = T_STRUCT | T_UNION; break; } CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; LL_foreach(pStruct, li, THIS->cpi.structs) if (pStruct->identifier[0] && pStruct->declarations && pStruct->tflags & mask) { if (context == G_ARRAY) XPUSHs(sv_2mortal(newSVpv(pStruct->identifier, 0))); count++; } if (context == G_ARRAY) XSRETURN(count); else XSRETURN_IV(count); ################################################################################ # # METHOD: compound / struct / union # # WRITTEN BY: Marcus Holland-Moritz ON: Aug 2002 # CHANGED BY: ON: # ################################################################################ void CBC::compound(...) ALIAS: struct = 1 union = 2 PREINIT: CBC_METHOD_VAR; Struct *pStruct; U32 context; u_32 mask; PPCODE: switch(ix) { case 1: /* struct */ CBC_METHOD_SET("struct"); mask = T_STRUCT; break; case 2: /* union */ CBC_METHOD_SET("union"); mask = T_UNION; break; default: /* compound */ CBC_METHOD_SET("compound"); mask = T_STRUCT | T_UNION; break; } CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; if (context == G_SCALAR && items != 2) { if (items > 1) XSRETURN_IV(items-1); else if (mask == (T_STRUCT|T_UNION)) XSRETURN_IV(LL_count(THIS->cpi.structs)); else { ListIterator li; int count = 0; LL_foreach(pStruct, li, THIS->cpi.structs) if (pStruct->tflags & mask) count++; XSRETURN_IV(count); } } NEED_PARSE_DATA; if (items > 1) { int i; for (i = 1; i < items; i++) { const char *name; u_32 limit = mask; name = SvPV_nolen(ST(i)); /* skip optional union/struct */ if(mask & T_UNION && name[0] == 'u' && name[1] == 'n' && name[2] == 'i' && name[3] == 'o' && name[4] == 'n' && isSPACE(name[5])) { name += 6; limit = T_UNION; } else if(mask & T_STRUCT && name[0] == 's' && name[1] == 't' && name[2] == 'r' && name[3] == 'u' && name[4] == 'c' && name[5] == 't' && isSPACE(name[6])) { name += 7; limit = T_STRUCT; } while (isSPACE(*name)) name++; pStruct = HT_get(THIS->cpi.htStructs, name, 0, 0); if (pStruct && pStruct->tflags & limit) PUSHs(sv_2mortal(get_struct_spec_def(aTHX_ &THIS->cfg, pStruct))); else PUSHs(&PL_sv_undef); } XSRETURN(items-1); } else { ListIterator li; int count = 0; LL_foreach(pStruct, li, THIS->cpi.structs) if (pStruct->tflags & mask) { XPUSHs(sv_2mortal(get_struct_spec_def(aTHX_ &THIS->cfg, pStruct))); count++; } XSRETURN(count); } Convert-Binary-C-0.85/xsubs/initializer.xs0000644000175000001440000000211414677003452017254 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: initializer # # WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 # CHANGED BY: ON: # ################################################################################ SV * CBC::initializer(type, init = &PL_sv_undef) const char *type SV *init PREINIT: CBC_METHOD(initializer); MemberInfo mi; CODE: CT_DEBUG_METHOD1("'%s'", type); CHECK_VOID_CONTEXT; if (!get_member_info(aTHX_ THIS, type, &mi, CBC_GMI_NO_CALC)) Perl_croak(aTHX_ "Cannot find '%s'", type); SvGETMAGIC(init); RETVAL = get_initializer_string(aTHX_ THIS, &mi, init, type); OUTPUT: RETVAL Convert-Binary-C-0.85/xsubs/enum.xs0000644000175000001440000000535314677003452015705 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: enum_names # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::enum_names() PREINIT: CBC_METHOD(enum_names); ListIterator li; EnumSpecifier *pEnumSpec; int count = 0; U32 context; PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; LL_foreach(pEnumSpec, li, THIS->cpi.enums) if (pEnumSpec->identifier[0] && pEnumSpec->enumerators) { if (context == G_ARRAY) XPUSHs(sv_2mortal(newSVpv(pEnumSpec->identifier, 0))); count++; } if (context == G_ARRAY) XSRETURN(count); else XSRETURN_IV(count); ################################################################################ # # METHOD: enum # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::enum(...) PREINIT: CBC_METHOD(enum); EnumSpecifier *pEnumSpec; U32 context; PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; if (context == G_SCALAR && items != 2) XSRETURN_IV(items > 1 ? items-1 : LL_count(THIS->cpi.enums)); if (items > 1) { int i; for (i = 1; i < items; i++) { const char *name = SvPV_nolen(ST(i)); /* skip optional enum */ if (name[0] == 'e' && name[1] == 'n' && name[2] == 'u' && name[3] == 'm' && isSPACE(name[4])) name += 5; while (isSPACE(*name)) name++; pEnumSpec = HT_get(THIS->cpi.htEnums, name, 0, 0); if (pEnumSpec) PUSHs(sv_2mortal(get_enum_spec_def(aTHX_ &THIS->cfg, pEnumSpec))); else PUSHs(&PL_sv_undef); } XSRETURN(items-1); } else { ListIterator li; int size = LL_count(THIS->cpi.enums); if (size <= 0) XSRETURN_EMPTY; EXTEND(SP, size); LL_foreach(pEnumSpec, li, THIS->cpi.enums) PUSHs(sv_2mortal(get_enum_spec_def(aTHX_ &THIS->cfg, pEnumSpec))); XSRETURN(size); } Convert-Binary-C-0.85/xsubs/member.xs0000644000175000001440000000564614677003452016215 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: member # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::member(type, offset = NULL) const char *type SV *offset PREINIT: CBC_METHOD(member); MemberInfo mi; int have_offset, off; PPCODE: off = (have_offset = DEFINED(offset)) ? SvIV(offset) : 0; CT_DEBUG_METHOD2("'%s', %d", type, off); CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; NEED_PARSE_DATA; if (!get_member_info(aTHX_ THIS, type, &mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); check_allowed_types(aTHX_ &mi, method, ALLOW_STRUCTS | ALLOW_UNIONS | ALLOW_ARRAYS); if (mi.flags) { u_32 flags = mi.flags; /* bitfields are not a problem without offset given */ if (!have_offset) flags &= ~T_HASBITFIELD; WARN_FLAGS(type, flags); } if (have_offset) { if (off < 0 || off >= (int) mi.size) Perl_croak(aTHX_ "Offset %d out of range (0 <= offset < %d)", off, mi.size); if (GIMME_V == G_ARRAY) { ListIterator li; GMSInfo info; SV *member; int count; info.hit = LL_new(); info.off = LL_new(); info.pad = LL_new(); (void) get_member_string(aTHX_ &mi, off, &info); count = LL_count(info.hit) + LL_count(info.off) + LL_count(info.pad); EXTEND(SP, count); LL_foreach(member, li, info.hit) PUSHs(member); LL_foreach(member, li, info.off) PUSHs(member); LL_foreach(member, li, info.pad) PUSHs(member); LL_destroy(info.hit, NULL); LL_destroy(info.off, NULL); LL_destroy(info.pad, NULL); XSRETURN(count); } else { SV *member = get_member_string(aTHX_ &mi, off, NULL); PUSHs(member); XSRETURN(1); } } else { LinkedList list; SV *member; int count; list = GIMME_V == G_ARRAY ? LL_new() : NULL; count = get_all_member_strings(aTHX_ &mi, list); if (GIMME_V == G_ARRAY) { ListIterator li; EXTEND(SP, count); LL_foreach(member, li, list) PUSHs(member); LL_destroy(list, NULL); XSRETURN(count); } else XSRETURN_IV(count); } Convert-Binary-C-0.85/xsubs/arg.xs0000644000175000001440000000314014677003452015502 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: arg # # WRITTEN BY: Marcus Holland-Moritz ON: Jun 2004 # CHANGED BY: ON: # ################################################################################ # # DESCRIPTION: Turn string arguments into blessed object, so we can recognize # them later on. # ################################################################################ void CBC::arg(...) PREINIT: CBC_METHOD(arg); int i; PPCODE: CT_DEBUG_METHOD; CHECK_VOID_CONTEXT; for (i = 1; i < items; i++) { const char *argstr; STRLEN len; HookArgType type; SV *sv; argstr = SvPV(ST(i), len); if (strEQ(argstr, "SELF")) type = HOOK_ARG_SELF; else if (strEQ(argstr, "TYPE")) type = HOOK_ARG_TYPE; else if (strEQ(argstr, "DATA")) type = HOOK_ARG_DATA; else if (strEQ(argstr, "HOOK")) type = HOOK_ARG_HOOK; else Perl_croak(aTHX_ "Unknown argument type '%s' in %s", argstr, method); sv = newRV_noinc(newSViv(type)); sv_bless(sv, gv_stashpv(ARGTYPE_PACKAGE, 1)); ST(i-1) = sv_2mortal(sv); } XSRETURN(items-1); Convert-Binary-C-0.85/xsubs/offsetof.xs0000644000175000001440000000270114677003452016546 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: offsetof # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ SV * CBC::offsetof(type, member) const char *type const char *member PREINIT: CBC_METHOD(offsetof); MemberInfo mi, mi2; const char *m = member; CODE: CT_DEBUG_METHOD2("'%s', '%s'", type, member); CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; while (isSPACE(*m)) m++; if (*m == '\0') WARN((aTHX_ "Empty string passed as member expression")); NEED_PARSE_DATA; if (!get_member_info(aTHX_ THIS, type, &mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); (void) get_member(aTHX_ &mi, member, &mi2, CBC_GM_ACCEPT_DOTLESS_MEMBER); if (mi2.pDecl && mi2.pDecl->bitfield_flag) Perl_croak(aTHX_ "Cannot use %s on bitfields", method); if (mi.flags) WARN_FLAGS(type, mi.flags); RETVAL = newSViv(mi2.offset); OUTPUT: RETVAL Convert-Binary-C-0.85/xsubs/sizeof.xs0000644000175000001440000000221414677003452016231 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: sizeof # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ SV * CBC::sizeof(type) const char *type PREINIT: CBC_METHOD(sizeof); MemberInfo mi; CODE: CT_DEBUG_METHOD1("'%s'", type); CHECK_VOID_CONTEXT; NEED_PARSE_DATA; if (!get_member_info(aTHX_ THIS, type, &mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); if (mi.pDecl && mi.pDecl->bitfield_flag) Perl_croak(aTHX_ "Cannot use %s on bitfields", method); if (mi.flags) WARN_FLAGS(type, mi.flags); RETVAL = newSVuv(mi.size); OUTPUT: RETVAL Convert-Binary-C-0.85/xsubs/sourcify.xs0000644000175000001440000000247514677003452016606 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: sourcify # # WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 # CHANGED BY: ON: # ################################################################################ SV * CBC::sourcify(...) PREINIT: CBC_METHOD(sourcify); SourcifyConfig sc; CODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; /* preset with defaults */ sc.context = 0; sc.defines = 0; if (items == 2 && SvROK(ST(1))) { SV *sv = SvRV(ST(1)); if (SvTYPE(sv) == SVt_PVHV) get_sourcify_config(aTHX_ (HV *) sv, &sc); else Perl_croak(aTHX_ "Need a hash reference for configuration options"); } else if (items >= 2) Perl_croak(aTHX_ "Sourcification of individual types is not yet supported"); RETVAL = get_parsed_definitions_string(aTHX_ &THIS->cpi, &sc); OUTPUT: RETVAL Convert-Binary-C-0.85/xsubs/feature.xs0000644000175000001440000000274714677003452016400 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # FUNCTION: feature # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ # # DESCRIPTION: Check if the module was compiled with a certain feature. # ################################################################################ void feature(...) PREINIT: CBC_METHOD(feature); int method_call; const char *feat; PPCODE: method_call = items > 0 && sv_isobject(ST(0)); if (items != (method_call ? 2 : 1)) Perl_croak(aTHX_ "Usage: Convert::Binary::C::feature(feat)"); CHECK_VOID_CONTEXT; feat = (const char *)SvPV_nolen(ST(items-1)); switch (*feat) { case 'd': if (strEQ(feat, "debug")) #ifdef CBC_DEBUGGING XSRETURN_YES; #else XSRETURN_NO; #endif break; case 'i': if (strEQ(feat, "ieeefp")) #ifdef CBC_HAVE_IEEE_FP XSRETURN_YES; #else XSRETURN_NO; #endif break; } XSRETURN_UNDEF; Convert-Binary-C-0.85/xsubs/macro.xs0000644000175000001440000000517014677003452016037 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: macro_names # # WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 # CHANGED BY: ON: # ################################################################################ void CBC::macro_names() PREINIT: CBC_METHOD(macro_names); PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; if (GIMME_V == G_ARRAY) { LinkedList ll = macros_get_names(aTHX_ &THIS->cpi, NULL); int count = LL_count(ll); SV *sv; EXTEND(SP, count); while ((sv = LL_pop(ll)) != NULL) PUSHs(sv_2mortal(sv)); assert(LL_count(ll) == 0); LL_delete(ll); XSRETURN(count); } else { size_t count; (void) macros_get_names(aTHX_ &THIS->cpi, &count); XSRETURN_IV((int)count); } ################################################################################ # # METHOD: macro # # WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 # CHANGED BY: ON: # ################################################################################ void CBC::macro(...) PREINIT: CBC_METHOD(macro); PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; if (GIMME_V == G_SCALAR && items != 2) { if (items > 1) { XSRETURN_IV(items-1); } else { size_t count; (void) macros_get_names(aTHX_ &THIS->cpi, &count); XSRETURN_IV((int)count); } } if (items > 1) { int i; for (i = 1; i < items; i++) { const char *name = SvPV_nolen(ST(i)); size_t len; char *def = macro_get_def(&THIS->cpi, name, &len); if (def) { PUSHs(sv_2mortal(newSVpvn(def, len))); macro_free_def(def); } else PUSHs(&PL_sv_undef); } XSRETURN(items-1); } else { LinkedList ll = macros_get_definitions(aTHX_ &THIS->cpi); int count = LL_count(ll); SV *sv; EXTEND(SP, count); while ((sv = LL_pop(ll)) != NULL) PUSHs(sv_2mortal(sv)); assert(LL_count(ll) == 0); LL_delete(ll); XSRETURN(count); } Convert-Binary-C-0.85/xsubs/def.xs0000644000175000001440000000362414677003452015476 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: def # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ char * CBC::def(type) const char *type PREINIT: CBC_METHOD(def); MemberInfo mi; const char *member = NULL; CODE: CT_DEBUG_METHOD1("'%s'", type); CHECK_VOID_CONTEXT; if (get_type_spec(THIS, type, &member, &mi.type) == 0) XSRETURN_UNDEF; if (mi.type.ptr == NULL) RETVAL = "basic"; else { void *ptr = mi.type.ptr; switch (GET_CTYPE(ptr)) { case TYP_TYPEDEF: RETVAL = is_typedef_defined((Typedef *) ptr) ? "typedef" : ""; break; case TYP_STRUCT: if (((Struct *) ptr)->declarations) RETVAL = ((Struct *) ptr)->tflags & T_STRUCT ? "struct" : "union"; else RETVAL = ""; break; case TYP_ENUM: RETVAL = ((EnumSpecifier *) ptr)->enumerators ? "enum" : ""; break; default: fatal("Invalid type (%d) in " XSCLASS "::%s( '%s' )", GET_CTYPE(ptr), method, type); break; } if (member && *member != '\0' && *RETVAL != '\0') { mi.pDecl = NULL; mi.level = 0; RETVAL = get_member(aTHX_ &mi, member, NULL, CBC_GM_DONT_CROAK | CBC_GM_NO_OFFSET_SIZE_CALC) ? "member" : ""; } } OUTPUT: RETVAL Convert-Binary-C-0.85/xsubs/typedef.xs0000644000175000001440000000530614677003452016377 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: typedef_names # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::typedef_names() PREINIT: CBC_METHOD(typedef_names); ListIterator tli, ti; TypedefList *pTDL; Typedef *pTypedef; int count = 0; U32 context; PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; LL_foreach(pTDL, tli, THIS->cpi.typedef_lists) LL_foreach(pTypedef, ti, pTDL->typedefs) if (is_typedef_defined(pTypedef)) { if (context == G_ARRAY) XPUSHs(sv_2mortal(newSVpv(pTypedef->pDecl->identifier, 0))); count++; } if (context == G_ARRAY) XSRETURN(count); else XSRETURN_IV(count); ################################################################################ # # METHOD: typedef # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::typedef(...) PREINIT: CBC_METHOD(typedef); Typedef *pTypedef; U32 context; PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; if (context == G_SCALAR && items != 2) XSRETURN_IV(items > 1 ? items-1 : HT_count(THIS->cpi.htTypedefs)); NEED_PARSE_DATA; if (items > 1) { int i; for (i = 1; i < items; i++) { const char *name = SvPV_nolen(ST(i)); pTypedef = HT_get(THIS->cpi.htTypedefs, name, 0, 0); if (pTypedef) PUSHs(sv_2mortal(get_typedef_def(aTHX_ &THIS->cfg, pTypedef))); else PUSHs(&PL_sv_undef); } XSRETURN(items-1); } else { ListIterator tli, ti; TypedefList *pTDL; int size = HT_count(THIS->cpi.htTypedefs); if (size <= 0) XSRETURN_EMPTY; EXTEND(SP, size); LL_foreach(pTDL, tli, THIS->cpi.typedef_lists) LL_foreach(pTypedef, ti, pTDL->typedefs) PUSHs(sv_2mortal(get_typedef_def(aTHX_ &THIS->cfg, pTypedef))); XSRETURN(size); } Convert-Binary-C-0.85/xsubs/configure.xs0000644000175000001440000000344614677003452016723 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: configure # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ SV * CBC::configure(...) PREINIT: CBC_METHOD(configure); CODE: CT_DEBUG_METHOD; if (items <= 2 && GIMME_V == G_VOID) { WARN_VOID_CONTEXT; XSRETURN_EMPTY; } else if (items == 1) RETVAL = get_configuration(aTHX_ THIS); else if (items == 2) handle_option(aTHX_ THIS, ST(1), NULL, &RETVAL, NULL); else if (items % 2) { int i, changes = 0, layout = 0, preproc = 0; HandleOptionResult res; for (i = 1; i < items; i += 2) { handle_option(aTHX_ THIS, ST(i), ST(i+1), NULL, &res); if (res.option_modified) changes = 1; if (res.impacts_layout) layout = 1; if (res.impacts_preproc) preproc = 1; } if (changes) { if (layout) { basic_types_reset(THIS->basic); if (THIS->cpi.available && THIS->cpi.ready) reset_parse_info(&THIS->cpi); } if (preproc) { reset_preprocessor(&THIS->cpi); } } XSRETURN(1); } else Perl_croak(aTHX_ "Invalid number of arguments to %s", method); OUTPUT: RETVAL Convert-Binary-C-0.85/xsubs/include.xs0000644000175000001440000000400314677003452016353 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: Include / Define / Assert # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ void CBC::Include(...) ALIAS: Define = 1 Assert = 2 PREINIT: CBC_METHOD_VAR; LinkedList list; int hasRval; SV *rval, *inval; PPCODE: switch (ix) { case 1: /* Define */ CBC_METHOD_SET("Define"); list = THIS->cfg.defines; break; case 2: /* Assert */ CBC_METHOD_SET("Assert"); list = THIS->cfg.assertions; break; default: /* Include */ CBC_METHOD_SET("Include"); list = THIS->cfg.includes; break; } CT_DEBUG_METHOD; hasRval = GIMME_V != G_VOID && items <= 1; if (GIMME_V == G_VOID && items <= 1) { WARN_VOID_CONTEXT; XSRETURN_EMPTY; } if (items > 1 && !SvROK(ST(1))) { int i; inval = NULL; for (i = 1; i < items; i++) { if (SvROK(ST(i))) Perl_croak(aTHX_ "Argument %d to %s must not be a reference", i, method); LL_push(list, string_new_fromSV(aTHX_ ST(i))); } } else { if (items > 2) Perl_croak(aTHX_ "Invalid number of arguments to %s", method); inval = items == 2 ? ST(1) : NULL; } if (inval != NULL || hasRval) handle_string_list(aTHX_ method, list, inval, hasRval ? &rval : NULL); if (hasRval) ST(0) = sv_2mortal(rval); reset_preprocessor(&THIS->cpi); XSRETURN(1); Convert-Binary-C-0.85/xsubs/cbc.xs0000644000175000001440000000413714677003452015467 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # CONSTRUCTOR # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::new(...) PREINIT: CBC_METHOD(new); PPCODE: CT_DEBUG_METHOD; if (items % 2 == 0) Perl_croak(aTHX_ "Number of configuration arguments " "to %s must be even", method); else { int i; CBC *THIS = cbc_new(aTHX); if (gs_DisableParser) { Perl_warn(aTHX_ XSCLASS " parser is DISABLED"); THIS->cfg.disable_parser = 1; } /* Only preset the option here, user may explicitly */ /* disable OrderMembers in the constructor */ if (gs_OrderMembers) THIS->order_members = 1; /* * bless the new object here, because handle_option() * may croak and DESTROY would not be called to free * the memory that has been allocated */ ST(0) = sv_2mortal(cbc_bless(aTHX_ THIS, CLASS)); for (i = 1; i < items; i += 2) handle_option(aTHX_ THIS, ST(i), ST(i+1), NULL, NULL); if (gs_OrderMembers && THIS->order_members) load_indexed_hash_module(aTHX_ THIS); XSRETURN(1); } ################################################################################ # # DESTRUCTOR # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::DESTROY() PREINIT: CBC_METHOD(DESTROY); CODE: CT_DEBUG_METHOD; cbc_delete(aTHX_ THIS); Convert-Binary-C-0.85/xsubs/parse.xs0000644000175000001440000000370314677003452016050 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: parse # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::parse(code) SV *code PREINIT: CBC_METHOD(parse); SV *temp = NULL; STRLEN len; Buffer buf; CODE: CT_DEBUG_METHOD; buf.buffer = SvPV(code, len); if (!((len == 0) || (len >= 1 && (buf.buffer[len-1] == '\n' || buf.buffer[len-1] == '\r')))) { /* append a newline to a temporary copy */ temp = newSVsv(code); sv_catpvn(temp, "\n", 1); buf.buffer = SvPV(temp, len); } buf.length = len; buf.pos = 0; (void) parse_buffer(NULL, &buf, &THIS->cfg, &THIS->cpi); if (temp) SvREFCNT_dec(temp); handle_parse_errors(aTHX_ THIS->cpi.errorStack); if (GIMME_V != G_VOID) XSRETURN(1); ################################################################################ # # METHOD: parse_file # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::parse_file(file) const char *file PREINIT: CBC_METHOD(parse_file); CODE: CT_DEBUG_METHOD1("'%s'", file); (void) parse_buffer(file, NULL, &THIS->cfg, &THIS->cpi); handle_parse_errors(aTHX_ THIS->cpi.errorStack); if (GIMME_V != G_VOID) XSRETURN(1); Convert-Binary-C-0.85/xsubs/pack.xs0000644000175000001440000001173214677003452015655 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: pack # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::pack(type, data = &PL_sv_undef, string = NULL) const char *type SV *data SV *string PREINIT: CBC_METHOD(pack); char *buffer; MemberInfo mi; PackHandle pack; SV *rv; dXCPT; CODE: CT_DEBUG_METHOD1("'%s'", type); if (string == NULL && GIMME_V == G_VOID) { WARN_VOID_CONTEXT; XSRETURN_EMPTY; } if (string != NULL) { SvGETMAGIC(string); if ((SvFLAGS(string) & (SVf_POK|SVp_POK)) == 0) Perl_croak(aTHX_ "Type of arg 3 to pack must be string"); if (GIMME_V == G_VOID && SvREADONLY(string)) Perl_croak(aTHX_ "Modification of a read-only value attempted"); } NEED_PARSE_DATA; if (!get_member_info(aTHX_ THIS, type, &mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); if (mi.flags) WARN_FLAGS(type, mi.flags); if (string == NULL) { rv = newSV(mi.size); /* force rv into a PV when mi.size is zero (bug #3753) */ if (mi.size == 0) sv_grow(rv, 1); SvPOK_only(rv); SvCUR_set(rv, mi.size); buffer = SvPVX(rv); /* We get an mi.size+1 buffer from newSV. So the following */ /* call will properly \0-terminate our return value. */ Zero(buffer, mi.size+1, char); } else { STRLEN len = SvCUR(string); STRLEN max = mi.size > len ? mi.size : len; if (GIMME_V == G_VOID) { rv = NULL; buffer = SvGROW(string, max+1); SvCUR_set(string, max); } else { rv = newSV(max); SvPOK_only(rv); buffer = SvPVX(rv); SvCUR_set(rv, max); Copy(SvPVX(string), buffer, len, char); } if(max > len) Zero(buffer+len, max+1-len, char); } pack = pk_create(THIS, ST(0)); pk_set_type(pack, type); pk_set_buffer(pack, rv ? rv : string, buffer, mi.size); SvGETMAGIC(data); XCPT_TRY_START { pk_pack(aTHX_ pack, &mi.type, mi.pDecl, mi.level, data); } XCPT_TRY_END pk_delete(pack); XCPT_CATCH { if (rv) SvREFCNT_dec(rv); XCPT_RETHROW; } /* this makes substr() as third argument work */ if (string) SvSETMAGIC(string); if (rv == NULL) XSRETURN_EMPTY; ST(0) = sv_2mortal(rv); XSRETURN(1); ################################################################################ # # METHOD: unpack # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::unpack(type, string) const char *type SV *string PREINIT: CBC_METHOD(unpack); char *buf; STRLEN len; MemberInfo mi; unsigned long count; PPCODE: CT_DEBUG_METHOD1("'%s'", type); CHECK_VOID_CONTEXT; SvGETMAGIC(string); if ((SvFLAGS(string) & (SVf_POK|SVp_POK)) == 0) Perl_croak(aTHX_ "Type of arg 2 to unpack must be string"); NEED_PARSE_DATA; if (!get_member_info(aTHX_ THIS, type, &mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); if (mi.flags) WARN_FLAGS(type, mi.flags); buf = SvPV(string, len); if (GIMME_V == G_SCALAR) { if (mi.size > len) WARN((aTHX_ "Data too short")); count = 1; } else count = mi.size == 0 ? 1 : len / mi.size; if (count > 0) { dXCPT; unsigned long i; PackHandle pack; SV **sva; /* newHV_indexed() messes with the stack, so we cannot * store the return values on the stack immediately... */ Newz(0, sva, count, SV *); pack = pk_create(THIS, ST(0)); pk_set_buffer(pack, NULL, buf, len); XCPT_TRY_START { for (i = 0; i < count; i++) { pk_set_buffer_pos(pack, i*mi.size); sva[i] = pk_unpack(aTHX_ pack, &mi.type, mi.pDecl, mi.level); } } XCPT_TRY_END pk_delete(pack); XCPT_CATCH { for (i = 0; i < count; i++) if (sva[i]) SvREFCNT_dec(sva[i]); Safefree(sva); XCPT_RETHROW; } /* A hook may have moved our stack */ SPAGAIN; SP -= items; EXTEND(SP, count); for (i = 0; i < count; i++) PUSHs(sv_2mortal(sva[i])); Safefree(sva); } XSRETURN(count); Convert-Binary-C-0.85/xsubs/clean.xs0000644000175000001440000000146314677003452016021 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: clean # # WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 # CHANGED BY: ON: # ################################################################################ void CBC::clean() PREINIT: CBC_METHOD(clean); CODE: CT_DEBUG_METHOD; free_parse_info(&THIS->cpi); if (GIMME_V != G_VOID) XSRETURN(1); Convert-Binary-C-0.85/xsubs/clone.xs0000644000175000001440000000167414677003452016043 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: clone # # WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 # CHANGED BY: ON: # ################################################################################ void CBC::clone() PREINIT: CBC_METHOD(clone); CBC *clone; const char *class; PPCODE: CT_DEBUG_METHOD; CHECK_VOID_CONTEXT; class = HvNAME(SvSTASH(SvRV(ST(0)))); clone = cbc_clone(aTHX_ THIS); ST(0) = sv_2mortal(cbc_bless(aTHX_ clone, class)); XSRETURN(1); Convert-Binary-C-0.85/xsubs/native.xs0000644000175000001440000000261214677003452016222 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # FUNCTION: native # # WRITTEN BY: Marcus Holland-Moritz ON: Aug 2004 # CHANGED BY: ON: # ################################################################################ # # DESCRIPTION: Get property of the native platform. # ################################################################################ SV * native(...) PREINIT: CBC_METHOD(native); int method_call; CODE: method_call = items > 0 && sv_isobject(ST(0)); if (items > (method_call ? 2 : 1)) Perl_croak(aTHX_ "Usage: Convert::Binary::C::native(property)"); CHECK_VOID_CONTEXT; if (items == (method_call ? 1 : 0)) { RETVAL = get_native_property(aTHX_ NULL); } else { const char *property = (const char *)SvPV_nolen(ST(items-1)); RETVAL = get_native_property(aTHX_ property); if (RETVAL == NULL) Perl_croak(aTHX_ "Invalid property '%s'", property); } OUTPUT: RETVAL Convert-Binary-C-0.85/xsubs/dependencies.xs0000644000175000001440000000346114677003452017365 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: dependencies # # WRITTEN BY: Marcus Holland-Moritz ON: Sep 2002 # CHANGED BY: ON: # ################################################################################ void CBC::dependencies() PREINIT: CBC_METHOD(dependencies); HashIterator hi; const char *pKey; FileInfo *pFI; PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; if (GIMME_V == G_SCALAR) { HV *hv = newHV(); HT_foreach(pKey, pFI, hi, THIS->cpi.htFiles) { if (pFI && pFI->valid) { SV *attr; HV *hattr = newHV(); HV_STORE_CONST(hattr, "size", newSVuv(pFI->size)); HV_STORE_CONST(hattr, "mtime", newSViv(pFI->modify_time)); HV_STORE_CONST(hattr, "ctime", newSViv(pFI->change_time)); attr = newRV_noinc((SV *) hattr); if (hv_store(hv, pFI->name, strlen(pFI->name), attr, 0) == NULL) SvREFCNT_dec(attr); } } XPUSHs(sv_2mortal(newRV_noinc((SV *) hv))); XSRETURN(1); } else { int keylen, count = 0; HI_init(&hi, THIS->cpi.htFiles); while (HI_next(&hi, &pKey, &keylen, (void **) &pFI)) if (pFI && pFI->valid) { XPUSHs(sv_2mortal(newSVpvn(CONST_CHAR(pKey), keylen))); count++; } XSRETURN(count); } Convert-Binary-C-0.85/xsubs/tag.xs0000644000175000001440000000435014677003452015510 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: tag / untag # # WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 # CHANGED BY: ON: # ################################################################################ void CBC::tag(type, ...) const char *type ALIAS: untag = 1 PREINIT: CBC_METHOD_VAR; TagTypeInfo tti; CtTagList *taglist; CODE: switch (ix) { case 0: CBC_METHOD_SET("tag"); break; case 1: CBC_METHOD_SET("untag"); break; default: fatal("Invalid alias (%d) for tag method", ix); break; } CT_DEBUG_METHOD1("'%s'", type); if (ix == 0 && items <= 3 && GIMME_V == G_VOID) { WARN_VOID_CONTEXT; XSRETURN_EMPTY; } NEED_PARSE_DATA; tti.type = type; if (!get_member_info(aTHX_ THIS, type, &tti.mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); if (tti.mi.level != 0) Perl_croak(aTHX_ "Cannot tag array members"); taglist = tti.mi.pDecl ? &tti.mi.pDecl->tags : find_taglist_ptr(tti.mi.type.ptr); assert(taglist != NULL); if (ix == 0) /* tag */ { if (items == 2) ST(0) = get_tags(aTHX_ &tti, *taglist); else if (items == 3) handle_tag(aTHX_ &tti, taglist, ST(2), NULL, &ST(0)); else if (items % 2 == 0) { int i; for (i = 2; i < items; i += 2) handle_tag(aTHX_ &tti, taglist, ST(i), ST(i+1), NULL); } else Perl_croak(aTHX_ "Invalid number of arguments to %s", method); } else /* untag */ { if (items == 2) delete_all_tags(taglist); else { int i; for (i = 2; i < items; i++) handle_tag(aTHX_ &tti, taglist, ST(i), &PL_sv_undef, NULL); } } XSRETURN(1); Convert-Binary-C-0.85/xsubs/typeof.xs0000644000175000001440000000176214677003452016247 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: typeof # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2003 # CHANGED BY: ON: # ################################################################################ SV * CBC::typeof(type) const char *type PREINIT: CBC_METHOD(typeof); MemberInfo mi; CODE: CT_DEBUG_METHOD1("'%s'", type); CHECK_VOID_CONTEXT; if (!get_member_info(aTHX_ THIS, type, &mi, CBC_GMI_NO_CALC)) Perl_croak(aTHX_ "Cannot find '%s'", type); RETVAL = get_type_name_string(aTHX_ &mi); OUTPUT: RETVAL Convert-Binary-C-0.85/MANIFEST0000644000175000001440000005066114677003525014355 0ustar mhxusersbin/ccconfig bin/convert.PL bin/elf.PL bin/memmap.PL bin/perltypes.PL C.xs cbc/basic.c cbc/basic.h cbc/cbc.h cbc/debug.c cbc/debug.h cbc/dimension.c cbc/dimension.h cbc/hook.c cbc/hook.h cbc/idl.c cbc/idl.h cbc/init.c cbc/init.h cbc/macros.c cbc/macros.h cbc/member.c cbc/member.h cbc/object.c cbc/object.h cbc/option.c cbc/option.h cbc/pack.c cbc/pack.h cbc/sourcify.c cbc/sourcify.h cbc/tag.c cbc/tag.h cbc/type.c cbc/type.h cbc/typeinfo.c cbc/typeinfo.h cbc/util.c cbc/util.h Changes ctlib/arch.pl ctlib/bitfields.c ctlib/bitfields.h ctlib/byteorder.c ctlib/byteorder.h ctlib/cppreent.h ctlib/ctdebug.c ctlib/ctdebug.h ctlib/cterror.c ctlib/cterror.h ctlib/ctparse.c ctlib/ctparse.h ctlib/cttags.c ctlib/cttags.h ctlib/cttype.c ctlib/cttype.h ctlib/fileinfo.c ctlib/fileinfo.h ctlib/layout.c ctlib/layout.h ctlib/parser.h ctlib/parser.y ctlib/pragma.h ctlib/pragma.y ctlib/y_parser.c ctlib/y_pragma.c examples/README lib/Convert/Binary/C.pm lib/Convert/Binary/C/Cached.pm Makefile.PL MANIFEST ppport.h README.md test.pl tests/001_init.t tests/101_basic.t tests/201_config.t tests/202_misc.t tests/203_warnings.t tests/204_enum.t tests/205_pack.t tests/206_parse.t tests/207_typedef.t tests/208_float.t tests/209_sourcify.t tests/210_depend.t tests/211_clone.t tests/212_clean.t tests/213_string.t tests/214_cache.t tests/215_local.t tests/216_language.t tests/217_preproc.t tests/218_member.t tests/219_def.t tests/220_new.t tests/221_asm.t tests/222_ieee.t tests/223_initializer.t tests/224_typeof.t tests/225_magic.t tests/226_indexed.t tests/227_flexarray.t tests/228_hooks.t tests/229_substr.t tests/230_compiler.t tests/231_align.t tests/232_native.t tests/233_tags.t tests/234_format.t tests/235_basic.t tests/236_typeinfo.t tests/237_parser.t tests/238_byteorder.t tests/239_macros.t tests/240_offsetof.t tests/241_sizeof.t tests/242_dimension.t tests/243_parser.t tests/501_bfsimple.t tests/502_bfmicrosoft.t tests/503_bfgeneric.t tests/601_speed.t tests/602_threads.t tests/603_complex.t tests/701_debug.t tests/702_env.t tests/703_bugs.t tests/801_examples.t tests/802_pod.t tests/803_pod_coverage.t tests/901_memory.t tests/cache/cache.1 tests/cache/cache.2 tests/cache/header.1 tests/cache/header.2 tests/cache/sub/dir.1 tests/cache/sub/dir.2 tests/compiler/gcc-arm.bin tests/compiler/gcc-arm.cfg tests/compiler/gcc-arm.dat tests/compiler/gcc-hp64.bin tests/compiler/gcc-hp64.cfg tests/compiler/gcc-hp64.dat tests/compiler/gcc-vax.bin tests/compiler/gcc-vax.cfg tests/compiler/gcc-vax.dat tests/compiler/test.h tests/include/config.pl tests/include/files/empty.h tests/include/files/files.h tests/include/files/ifdef.h tests/include/files/ifnonl.h tests/include/files/ifnull.h tests/include/files/nldos.h tests/include/files/nlmac.h tests/include/files/nlnone.h tests/include/files/nlunix.h tests/include/files/something.h tests/include/files/trigraph.h tests/include/files/unmatched.h tests/include/include.c tests/include/pdclib/auxiliary/errno/CMakeLists.txt tests/include/pdclib/auxiliary/errno/errno_readout.c tests/include/pdclib/auxiliary/fpconvert/CMakeLists.txt tests/include/pdclib/auxiliary/fpconvert/fpconvert.c tests/include/pdclib/auxiliary/pthread/CMakeLists.txt tests/include/pdclib/auxiliary/pthread/pthread_readout.c tests/include/pdclib/auxiliary/uctype/CMakeLists.txt tests/include/pdclib/auxiliary/uctype/derived_properties.c tests/include/pdclib/auxiliary/uctype/derived_properties.h tests/include/pdclib/auxiliary/uctype/main.c tests/include/pdclib/auxiliary/uctype/Makefile tests/include/pdclib/auxiliary/uctype/test.h tests/include/pdclib/auxiliary/uctype/text_utilities.c tests/include/pdclib/auxiliary/uctype/text_utilities.h tests/include/pdclib/auxiliary/uctype/uctype.c tests/include/pdclib/auxiliary/uctype/uctype.h tests/include/pdclib/auxiliary/uctype/unicode_data.c tests/include/pdclib/auxiliary/uctype/unicode_data.h tests/include/pdclib/CMakeLists.txt tests/include/pdclib/COPYING.CC0 tests/include/pdclib/functions/_dlmalloc/malloc-2.8.6.patch tests/include/pdclib/functions/_dlmalloc/malloc.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_atomax.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint10.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint2.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint32.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint64.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_add.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_cmp.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_div32.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_log2.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_mul.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_mul32.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_shl.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_sub.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_bigint_tostring.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_closeall.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_digits.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_filemode.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_getstream.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_init_file_t.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_is_leap.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_isstream.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_collate.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_ctype.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_messages.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_monetary.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_numeric.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lc_time.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_load_lines.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_prepread.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_prepwrite.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_print.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_scan.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_seed.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_strtok.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_strtox_main.c tests/include/pdclib/functions/_PDCLIB/_PDCLIB_strtox_prelim.c tests/include/pdclib/functions/_PDCLIB/assert.c tests/include/pdclib/functions/_PDCLIB/errno.c tests/include/pdclib/functions/_PDCLIB/Readme.txt tests/include/pdclib/functions/_PDCLIB/stdarg.c tests/include/pdclib/functions/_tzcode/_PDCLIB_gmtcheck.c tests/include/pdclib/functions/_tzcode/_PDCLIB_gmtsub.c tests/include/pdclib/functions/_tzcode/_PDCLIB_increment_overflow.c tests/include/pdclib/functions/_tzcode/_PDCLIB_init_ttinfo.c tests/include/pdclib/functions/_tzcode/_PDCLIB_localsub.c tests/include/pdclib/functions/_tzcode/_PDCLIB_localtime_tzset.c tests/include/pdclib/functions/_tzcode/_PDCLIB_mktime_tzname.c tests/include/pdclib/functions/_tzcode/_PDCLIB_timesub.c tests/include/pdclib/functions/_tzcode/_PDCLIB_tzload.c tests/include/pdclib/functions/_tzcode/_PDCLIB_tzparse.c tests/include/pdclib/functions/_tzcode/_PDCLIB_tzset_unlocked.c tests/include/pdclib/functions/_tzcode/_PDCLIB_update_tzname_etc.c tests/include/pdclib/functions/_tzcode/Readme.txt tests/include/pdclib/functions/ctype/isalnum.c tests/include/pdclib/functions/ctype/isalpha.c tests/include/pdclib/functions/ctype/isblank.c tests/include/pdclib/functions/ctype/iscntrl.c tests/include/pdclib/functions/ctype/isdigit.c tests/include/pdclib/functions/ctype/isgraph.c tests/include/pdclib/functions/ctype/islower.c tests/include/pdclib/functions/ctype/isprint.c tests/include/pdclib/functions/ctype/ispunct.c tests/include/pdclib/functions/ctype/isspace.c tests/include/pdclib/functions/ctype/isupper.c tests/include/pdclib/functions/ctype/isxdigit.c tests/include/pdclib/functions/ctype/tolower.c tests/include/pdclib/functions/ctype/toupper.c tests/include/pdclib/functions/inttypes/imaxabs.c tests/include/pdclib/functions/inttypes/imaxdiv.c tests/include/pdclib/functions/inttypes/strtoimax.c tests/include/pdclib/functions/inttypes/strtoumax.c tests/include/pdclib/functions/locale/localeconv.c tests/include/pdclib/functions/locale/setlocale.c tests/include/pdclib/functions/stdio/clearerr.c tests/include/pdclib/functions/stdio/fclose.c tests/include/pdclib/functions/stdio/feof.c tests/include/pdclib/functions/stdio/ferror.c tests/include/pdclib/functions/stdio/fflush.c tests/include/pdclib/functions/stdio/fgetc.c tests/include/pdclib/functions/stdio/fgetpos.c tests/include/pdclib/functions/stdio/fgets.c tests/include/pdclib/functions/stdio/fopen.c tests/include/pdclib/functions/stdio/fopen_s.c tests/include/pdclib/functions/stdio/fprintf.c tests/include/pdclib/functions/stdio/fputc.c tests/include/pdclib/functions/stdio/fputs.c tests/include/pdclib/functions/stdio/fread.c tests/include/pdclib/functions/stdio/freopen.c tests/include/pdclib/functions/stdio/freopen_s.c tests/include/pdclib/functions/stdio/fscanf.c tests/include/pdclib/functions/stdio/fseek.c tests/include/pdclib/functions/stdio/fsetpos.c tests/include/pdclib/functions/stdio/ftell.c tests/include/pdclib/functions/stdio/fwrite.c tests/include/pdclib/functions/stdio/getc.c tests/include/pdclib/functions/stdio/getchar.c tests/include/pdclib/functions/stdio/perror.c tests/include/pdclib/functions/stdio/printf.c tests/include/pdclib/functions/stdio/putc.c tests/include/pdclib/functions/stdio/putchar.c tests/include/pdclib/functions/stdio/puts.c tests/include/pdclib/functions/stdio/remove.c tests/include/pdclib/functions/stdio/rename.c tests/include/pdclib/functions/stdio/rewind.c tests/include/pdclib/functions/stdio/scanf.c tests/include/pdclib/functions/stdio/setbuf.c tests/include/pdclib/functions/stdio/setvbuf.c tests/include/pdclib/functions/stdio/snprintf.c tests/include/pdclib/functions/stdio/sprintf.c tests/include/pdclib/functions/stdio/sscanf.c tests/include/pdclib/functions/stdio/tmpfile_s.c tests/include/pdclib/functions/stdio/tmpnam.c tests/include/pdclib/functions/stdio/ungetc.c tests/include/pdclib/functions/stdio/vfprintf.c tests/include/pdclib/functions/stdio/vfscanf.c tests/include/pdclib/functions/stdio/vprintf.c tests/include/pdclib/functions/stdio/vscanf.c tests/include/pdclib/functions/stdio/vsnprintf.c tests/include/pdclib/functions/stdio/vsprintf.c tests/include/pdclib/functions/stdio/vsscanf.c tests/include/pdclib/functions/stdlib/_Exit.c tests/include/pdclib/functions/stdlib/abort.c tests/include/pdclib/functions/stdlib/abort_handler_s.c tests/include/pdclib/functions/stdlib/abs.c tests/include/pdclib/functions/stdlib/at_quick_exit.c tests/include/pdclib/functions/stdlib/atexit.c tests/include/pdclib/functions/stdlib/atoi.c tests/include/pdclib/functions/stdlib/atol.c tests/include/pdclib/functions/stdlib/atoll.c tests/include/pdclib/functions/stdlib/bsearch.c tests/include/pdclib/functions/stdlib/bsearch_s.c tests/include/pdclib/functions/stdlib/div.c tests/include/pdclib/functions/stdlib/exit.c tests/include/pdclib/functions/stdlib/ignore_handler_s.c tests/include/pdclib/functions/stdlib/labs.c tests/include/pdclib/functions/stdlib/ldiv.c tests/include/pdclib/functions/stdlib/llabs.c tests/include/pdclib/functions/stdlib/lldiv.c tests/include/pdclib/functions/stdlib/qsort.c tests/include/pdclib/functions/stdlib/qsort_s.c tests/include/pdclib/functions/stdlib/quick_exit.c tests/include/pdclib/functions/stdlib/rand.c tests/include/pdclib/functions/stdlib/set_constraint_handler_s.c tests/include/pdclib/functions/stdlib/srand.c tests/include/pdclib/functions/stdlib/strtol.c tests/include/pdclib/functions/stdlib/strtoll.c tests/include/pdclib/functions/stdlib/strtoul.c tests/include/pdclib/functions/stdlib/strtoull.c tests/include/pdclib/functions/string/memchr.c tests/include/pdclib/functions/string/memcmp.c tests/include/pdclib/functions/string/memcpy.c tests/include/pdclib/functions/string/memcpy_s.c tests/include/pdclib/functions/string/memmove.c tests/include/pdclib/functions/string/memmove_s.c tests/include/pdclib/functions/string/memset.c tests/include/pdclib/functions/string/memset_s.c tests/include/pdclib/functions/string/strcat.c tests/include/pdclib/functions/string/strcat_s.c tests/include/pdclib/functions/string/strchr.c tests/include/pdclib/functions/string/strcmp.c tests/include/pdclib/functions/string/strcoll.c tests/include/pdclib/functions/string/strcpy.c tests/include/pdclib/functions/string/strcpy_s.c tests/include/pdclib/functions/string/strcspn.c tests/include/pdclib/functions/string/strerror.c tests/include/pdclib/functions/string/strerror_s.c tests/include/pdclib/functions/string/strerrorlen_s.c tests/include/pdclib/functions/string/strlen.c tests/include/pdclib/functions/string/strncat.c tests/include/pdclib/functions/string/strncat_s.c tests/include/pdclib/functions/string/strncmp.c tests/include/pdclib/functions/string/strncpy.c tests/include/pdclib/functions/string/strncpy_s.c tests/include/pdclib/functions/string/strpbrk.c tests/include/pdclib/functions/string/strrchr.c tests/include/pdclib/functions/string/strspn.c tests/include/pdclib/functions/string/strstr.c tests/include/pdclib/functions/string/strtok.c tests/include/pdclib/functions/string/strtok_s.c tests/include/pdclib/functions/string/strxfrm.c tests/include/pdclib/functions/time/asctime.c tests/include/pdclib/functions/time/asctime_s.c tests/include/pdclib/functions/time/ctime.c tests/include/pdclib/functions/time/ctime_s.c tests/include/pdclib/functions/time/difftime.c tests/include/pdclib/functions/time/gmtime.c tests/include/pdclib/functions/time/gmtime_s.c tests/include/pdclib/functions/time/localtime.c tests/include/pdclib/functions/time/localtime_s.c tests/include/pdclib/functions/time/mktime.c tests/include/pdclib/functions/time/strftime.c tests/include/pdclib/include/assert.h tests/include/pdclib/include/ctype.h tests/include/pdclib/include/errno.h tests/include/pdclib/include/inttypes.h tests/include/pdclib/include/iso646.h tests/include/pdclib/include/limits.h tests/include/pdclib/include/locale.h tests/include/pdclib/include/pdclib/_PDCLIB_glue.h tests/include/pdclib/include/pdclib/_PDCLIB_internal.h tests/include/pdclib/include/pdclib/_PDCLIB_lib_ext1.h tests/include/pdclib/include/pdclib/_PDCLIB_tzcode.h tests/include/pdclib/include/stdalign.h tests/include/pdclib/include/stdarg.h tests/include/pdclib/include/stdbool.h tests/include/pdclib/include/stddef.h tests/include/pdclib/include/stdint.h tests/include/pdclib/include/stdio.h tests/include/pdclib/include/stdlib.h tests/include/pdclib/include/stdnoreturn.h tests/include/pdclib/include/string.h tests/include/pdclib/include/time.h tests/include/pdclib/include/wctype.h tests/include/pdclib/Internals.txt tests/include/pdclib/Notes.txt tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_changemode.c tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_close.c tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_Exit.c tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_fillbuffer.c tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_flushbuffer.c tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_open.c tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_realpath.c tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_remove.c tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_rename.c tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_seek.c tests/include/pdclib/platform/example/functions/_PDCLIB/_PDCLIB_stdinit.c tests/include/pdclib/platform/example/functions/signal/raise.c tests/include/pdclib/platform/example/functions/signal/signal.c tests/include/pdclib/platform/example/functions/stdio/tmpfile.c tests/include/pdclib/platform/example/functions/stdlib/getenv.c tests/include/pdclib/platform/example/functions/stdlib/getenv_s.c tests/include/pdclib/platform/example/functions/stdlib/system.c tests/include/pdclib/platform/example/functions/threads/call_once.c tests/include/pdclib/platform/example/functions/threads/cnd_broadcast.c tests/include/pdclib/platform/example/functions/threads/cnd_destroy.c tests/include/pdclib/platform/example/functions/threads/cnd_init.c tests/include/pdclib/platform/example/functions/threads/cnd_signal.c tests/include/pdclib/platform/example/functions/threads/cnd_timedwait.c tests/include/pdclib/platform/example/functions/threads/cnd_wait.c tests/include/pdclib/platform/example/functions/threads/mtx_destroy.c tests/include/pdclib/platform/example/functions/threads/mtx_init.c tests/include/pdclib/platform/example/functions/threads/mtx_lock.c tests/include/pdclib/platform/example/functions/threads/mtx_timedlock.c tests/include/pdclib/platform/example/functions/threads/mtx_trylock.c tests/include/pdclib/platform/example/functions/threads/mtx_unlock.c tests/include/pdclib/platform/example/functions/threads/thrd_create.c tests/include/pdclib/platform/example/functions/threads/thrd_current.c tests/include/pdclib/platform/example/functions/threads/thrd_detach.c tests/include/pdclib/platform/example/functions/threads/thrd_equal.c tests/include/pdclib/platform/example/functions/threads/thrd_exit.c tests/include/pdclib/platform/example/functions/threads/thrd_join.c tests/include/pdclib/platform/example/functions/threads/thrd_sleep.c tests/include/pdclib/platform/example/functions/threads/thrd_yield.c tests/include/pdclib/platform/example/functions/threads/tss_create.c tests/include/pdclib/platform/example/functions/threads/tss_delete.c tests/include/pdclib/platform/example/functions/threads/tss_get.c tests/include/pdclib/platform/example/functions/threads/tss_set.c tests/include/pdclib/platform/example/functions/time/clock.c tests/include/pdclib/platform/example/functions/time/time.c tests/include/pdclib/platform/example/functions/time/timespec_get.c tests/include/pdclib/platform/example/include/float.h tests/include/pdclib/platform/example/include/pdclib/_PDCLIB_config.h tests/include/pdclib/platform/example/include/pdclib/_PDCLIB_defguard.h tests/include/pdclib/platform/example/include/signal.h tests/include/pdclib/platform/example/include/threads.h tests/include/pdclib/platform/example/Readme.txt tests/include/pdclib/Quickstart.txt tests/include/pdclib/Readme.txt tests/include/pdclib/test_support/_PDCLIB_iotest.h tests/include/pdclib/test_support/_PDCLIB_test.h tests/include/pdclib/test_support/printf_testcases.h tests/include/pdclib/test_support/scanf_testcases.h tests/include/sizeof.pl tests/include/stuff/aa.h tests/include/stuff/ab.h tests/include/stuff/ac.h tests/include/stuff/ad.h tests/include/stuff/ae.h tests/include/stuff/af.h tests/include/stuff/ag.h tests/include/stuff/ah.h tests/include/stuff/ai.h tests/include/stuff/aj.h tests/include/stuff/ak.h tests/include/stuff/al.h tests/include/stuff/am.h tests/include/stuff/an.h tests/include/stuff/ao.h tests/include/stuff/ap.h tests/include/stuff/aq.h tests/include/stuff/ar.h tests/include/stuff/as.h tests/include/stuff/at.h tests/include/stuff/au.h tests/include/stuff/av.h tests/include/stuff/aw.h tests/include/stuff/ax.h tests/include/stuff/ay.h tests/include/stuff/az.h tests/include/stuff/generate.pl tests/parser/bug1.c tests/parser/context.c TODO token/blproperty.pl token/config.pl token/hook.pl token/parser.pl token/pragma.pl token/t_basic.c token/t_blproperty.c token/t_blproperty.h token/t_ckeytok.c token/t_config.c token/t_hookid.c token/t_hookid.h token/t_keywords.c token/t_parser.c token/t_pragma.c token/t_sourcify.c token/t_tag.c token/t_tag.h token/tag.pl typemap ucpp/arith.c ucpp/arith.h ucpp/assert.c ucpp/atest.c ucpp/config.h ucpp/cpp.c ucpp/cpp.h ucpp/eval.c ucpp/hash.c ucpp/hash.h ucpp/lexer.c ucpp/macro.c ucpp/Makefile ucpp/mem.c ucpp/mem.h ucpp/nhash.c ucpp/nhash.h ucpp/ppdir.pl ucpp/README ucpp/reent.h ucpp/sample.c ucpp/sample_r.c ucpp/scanppd.c ucpp/tune.h ucpp/ucpp.1 ucpp/ucppi.h util/ccattr.h util/config.h util/doxyfile util/doxyinc/Alloc.c util/doxyinc/doxygen.css util/doxyinc/footer.inc util/doxyinc/header.inc util/doxyinc/LinkedList.c util/doxyinc/mem_debug.dat util/doxyinc/mem_debug.out util/doxyinc/memdb_large.out util/hash.c util/hash.h util/list.c util/list.h util/Makefile util/memalloc.c util/memalloc.h util/t/maketests.pl util/t/test_memalloc.pl util/tool/check_alloc.pl util/tool/test util/tool/test.in util/tool/test.out xsubs/arg.xs xsubs/cbc.xs xsubs/clean.xs xsubs/clone.xs xsubs/compound.xs xsubs/configure.xs xsubs/def.xs xsubs/defined.xs xsubs/dependencies.xs xsubs/enum.xs xsubs/feature.xs xsubs/include.xs xsubs/initializer.xs xsubs/macro.xs xsubs/member.xs xsubs/native.xs xsubs/offsetof.xs xsubs/pack.xs xsubs/parse.xs xsubs/sizeof.xs xsubs/sourcify.xs xsubs/tag.xs xsubs/typedef.xs xsubs/typeof.xs META.yml Module YAML meta-data (added by MakeMaker) META.json Module JSON meta-data (added by MakeMaker) Convert-Binary-C-0.85/C.xs0000644000175000001440000003076114677003452013760 0ustar mhxusers/******************************************************************************* * * MODULE: C.xs * ******************************************************************************** * * DESCRIPTION: XS Interface for Convert::Binary::C Perl extension module * ******************************************************************************** * * Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * ******************************************************************************** * * "All you have to do is to decide what you are going to do * with the time that is given to you." -- Gandalf * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #define NO_XSLOCKS #include #define NEED_newRV_noinc_GLOBAL #define NEED_sv_2pv_nolen_GLOBAL #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "util/ccattr.h" #include "util/list.h" #include "util/hash.h" #include "ctlib/cterror.h" #include "ctlib/fileinfo.h" #include "ctlib/parser.h" #include "cbc/cbc.h" #include "cbc/debug.h" #include "cbc/hook.h" #include "cbc/init.h" #include "cbc/macros.h" #include "cbc/member.h" #include "cbc/object.h" #include "cbc/option.h" #include "cbc/pack.h" #include "cbc/sourcify.h" #include "cbc/tag.h" #include "cbc/type.h" #include "cbc/typeinfo.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ #ifndef PerlEnv_getenv # define PerlEnv_getenv getenv #endif #ifdef CBC_DEBUGGING #define DBG_CTXT_FMT "%s" #define DBG_CTXT_ARG (GIMME_V == G_VOID ? "0=" : \ (GIMME_V == G_SCALAR ? "$=" : \ (GIMME_V == G_ARRAY ? "@=" : \ "?=" \ ))) #endif #define CBC_METHOD(name) const char * const method PERL_UNUSED_DECL = #name #define CBC_METHOD_VAR const char * method PERL_UNUSED_DECL = "" #define CBC_METHOD_SET(string) method = string #define CT_DEBUG_METHOD \ CT_DEBUG(MAIN, (DBG_CTXT_FMT XSCLASS "::%s", DBG_CTXT_ARG, method)) #define CT_DEBUG_METHOD1(fmt, arg1) \ CT_DEBUG(MAIN, (DBG_CTXT_FMT XSCLASS "::%s( " fmt " )", \ DBG_CTXT_ARG, method, arg1)) #define CT_DEBUG_METHOD2(fmt, arg1, arg2) \ CT_DEBUG(MAIN, (DBG_CTXT_FMT XSCLASS "::%s( " fmt " )", \ DBG_CTXT_ARG, method, arg1, arg2) ) #define CHECK_PARSE_DATA \ STMT_START { \ if (!THIS->cpi.available) \ Perl_croak(aTHX_ "Call to %s without parse data", method); \ } STMT_END #define NEED_PARSE_DATA \ STMT_START { \ if (THIS->cpi.available) \ { \ if (!THIS->cpi.ready) \ update_parse_info(&THIS->cpi, &THIS->cfg); \ assert(THIS->cpi.ready); \ } \ } STMT_END #define WARN_VOID_CONTEXT \ WARN((aTHX_ "Useless use of %s in void context", method)) #define CHECK_VOID_CONTEXT \ STMT_START { \ if (GIMME_V == G_VOID) \ { \ WARN_VOID_CONTEXT; \ XSRETURN_EMPTY; \ } \ } STMT_END /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void *ct_newstr(void); static void ct_scatf(void *p, const char *f, ...); static void ct_vscatf(void *p, const char *f, va_list *l); static const char *ct_cstring(void *p, size_t *len); static void ct_fatal(void *p) __attribute__((__noreturn__)); static void handle_parse_errors(pTHX_ LinkedList stack); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ static int gs_DisableParser; static int gs_OrderMembers; /*===== GLOBAL FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: CBC_malloc, CBC_calloc, CBC_realloc, CBC_free * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Memory allocation routines for ucpp and util libs. * *******************************************************************************/ void *CBC_malloc(size_t size) { void *p; New(0, p, size, char); return p; } void *CBC_calloc(size_t count, size_t size) { void *p; Newz(0, p, count*size, char); return p; } void *CBC_realloc(void *p, size_t size) { Renew(p, size, char); return p; } void CBC_free(void *p) { Safefree(p); } /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: ct_* * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: These functions are used to build arbitrary strings within the * ctlib routines and to provide an interface to perl's warn(). * *******************************************************************************/ static void *ct_newstr(void) { dTHX; return (void *) newSVpvn("", 0); } static void ct_destroy(void *p) { dTHX; SvREFCNT_dec((SV*)p); } static void ct_scatf(void *p, const char *f, ...) { dTHX; va_list l; va_start(l, f); sv_vcatpvf((SV*)p, f, &l); va_end(l); } static void ct_vscatf(void *p, const char *f, va_list *l) { dTHX; sv_vcatpvf((SV*)p, f, l); } static const char *ct_cstring(void *p, size_t *len) { dTHX; STRLEN l; const char *s = SvPV((SV*)p, l); if (len) *len = (size_t) l; return s; } static void ct_fatal(void *p) { dTHX; sv_2mortal((SV*)p); fatal("%s", SvPV_nolen((SV*)p)); } /******************************************************************************* * * ROUTINE: handle_parse_errors * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void handle_parse_errors(pTHX_ LinkedList stack) { ListIterator ei; CTLibError *perr; LL_foreach(perr, ei, stack) { switch (perr->severity) { case CTES_ERROR: Perl_croak(aTHX_ "%s", perr->string); break; case CTES_WARNING: if( PERL_WARNINGS_ON ) Perl_warn(aTHX_ "%s", perr->string); break; default: Perl_croak(aTHX_ "unknown severity [%d] for error: %s", perr->severity, perr->string); } } } /*===== XS FUNCTIONS =========================================================*/ MODULE = Convert::Binary::C PACKAGE = Convert::Binary::C PROTOTYPES: ENABLE INCLUDE: xsubs/cbc.xs INCLUDE: xsubs/clone.xs INCLUDE: xsubs/clean.xs INCLUDE: xsubs/configure.xs INCLUDE: xsubs/include.xs INCLUDE: xsubs/parse.xs INCLUDE: xsubs/def.xs INCLUDE: xsubs/pack.xs INCLUDE: xsubs/sizeof.xs INCLUDE: xsubs/typeof.xs INCLUDE: xsubs/offsetof.xs INCLUDE: xsubs/member.xs INCLUDE: xsubs/tag.xs INCLUDE: xsubs/enum.xs INCLUDE: xsubs/compound.xs INCLUDE: xsubs/typedef.xs INCLUDE: xsubs/sourcify.xs INCLUDE: xsubs/initializer.xs INCLUDE: xsubs/dependencies.xs INCLUDE: xsubs/defined.xs INCLUDE: xsubs/macro.xs INCLUDE: xsubs/arg.xs INCLUDE: xsubs/feature.xs INCLUDE: xsubs/native.xs ################################################################################ # # FUNCTION: import # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ # # DESCRIPTION: Handle global features, currently only debugging support. # # ARGUMENTS: # # RETURNS: # ################################################################################ #define WARN_NO_DEBUGGING 0x00000001 void import(...) PREINIT: int i; U32 wflags; CODE: wflags = 0; if (items % 2 == 0) Perl_croak(aTHX_ "You must pass an even number of module arguments"); else { for (i = 1; i < items; i += 2) { const char *opt = SvPV_nolen(ST(i)); #ifdef CBC_DEBUGGING const char *arg = SvPV_nolen(ST(i+1)); #endif if (strEQ(opt, "debug")) { #ifdef CBC_DEBUGGING set_debug_options(aTHX_ arg); #else wflags |= WARN_NO_DEBUGGING; #endif } else if (strEQ(opt, "debugfile")) { #ifdef CBC_DEBUGGING set_debug_file(aTHX_ arg); #else wflags |= WARN_NO_DEBUGGING; #endif } else Perl_croak(aTHX_ "Invalid module option '%s'", opt); } if (wflags & WARN_NO_DEBUGGING) Perl_warn(aTHX_ XSCLASS " not compiled with debugging support"); } #undef WARN_NO_DEBUGGING ################################################################################ # # FUNCTION: __DUMP__ # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ # # DESCRIPTION: Internal function used for reference count checks. # # ARGUMENTS: # # RETURNS: # ################################################################################ SV * __DUMP__(val) SV *val CODE: RETVAL = newSVpvn("", 0); #ifdef CBC_DEBUGGING dump_sv(aTHX_ RETVAL, 0, val); #else (void) val; Perl_croak(aTHX_ "__DUMP__ not enabled in non-debug version"); #endif OUTPUT: RETVAL ################################################################################ # # BOOTCODE # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ BOOT: { const char *str; PrintFunctions f; f.newstr = ct_newstr; f.destroy = ct_destroy; f.scatf = ct_scatf; f.vscatf = ct_vscatf; f.cstring = ct_cstring; f.fatalerr = ct_fatal; set_print_functions(&f); #ifdef CBC_DEBUGGING init_debugging(aTHX); if ((str = PerlEnv_getenv("CBC_DEBUG_OPT")) != NULL) set_debug_options(aTHX_ str); if ((str = PerlEnv_getenv("CBC_DEBUG_FILE")) != NULL) set_debug_file(aTHX_ str); #endif gs_DisableParser = 0; if ((str = PerlEnv_getenv("CBC_DISABLE_PARSER")) != NULL) gs_DisableParser = atoi(str); gs_OrderMembers = 0; if ((str = PerlEnv_getenv("CBC_ORDER_MEMBERS")) != NULL) { if (isDIGIT(str[0])) gs_OrderMembers = atoi(str); else if (isALPHA(str[0])) { gs_OrderMembers = 1; set_preferred_indexed_hash_module(strdup(str)); } } } Convert-Binary-C-0.85/test.pl0000755000175000001440000000211114677003452014525 0ustar mhxusers#!/usr/bin/perl -w ################################################################################ # # Copyright (c) 2005-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ BEGIN { $only_basic = $] < 5.005; if ($only_basic) { print STDERR < WARNING: The version of perl you're using ($]) is very old. --> --> The complete test suite cannot be run with perl < 5.005. --> --> I will only run some very basic tests now. ENDWARN } eval q{ use Test::Harness; $Test::Harness::switches = "-w"; }; } @tests = @ARGV ? @ARGV : find_tests(); die "*** Can't find any test files\n" unless @tests; $ENV{PERL_DL_NONLAZY} = 1; runtests(@tests); sub find_tests { use File::Find; my $fd = $only_basic ? '1' : $ENV{ONLY_FAST_TESTS} ? '[0123478]' : '\d'; my %t; find(sub { -f and /^$fd\d{2}_\w+\.t$/ and $t{$File::Find::name}++ }, 'tests'); return sort keys %t; } Convert-Binary-C-0.85/Changes0000644000175000001440000006261514677003452014520 0ustar mhxusers---------------------------- Version 0.85 (2024-10-01) ---------------------------- * remove bundled Test modules (should fix github #11) * small change for compatibility with pre-dor perls (should fix github #10) * suppress some gcc warnings during build * update `ppport.h`, which gets rid of a lot of clang warnings ---------------------------- Version 0.84 (2020-11-23) ---------------------------- * skip threads testing on 5.9.5 and 5.10.0 as Perl_clone() segfaults for these releases ---------------------------- Version 0.83 (2020-11-19) ---------------------------- * more Windows fixes ---------------------------- Version 0.82 (2020-11-19) ---------------------------- * fix speed tests (the new smaller code was parsing too quickly for caching to have a strong impact) * update documentation, e.g. bugtracker ---------------------------- Version 0.81 (2020-11-18) ---------------------------- * fix parallel builds ---------------------------- Version 0.80 (2020-11-17) ---------------------------- * fix 602_threads.t ---------------------------- Version 0.79_01 (2020-11-15) ---------------------------- * [WIP] fixing cpan #132904: License Inconsitencies * update documentation ------------------------- Version 0.79 (2020-05-19) ------------------------- * fix cpan #121039: Fails tests when no "." in @INC; thanks to Kent Fredric for the report & pull request and sorry for the long time this bug/pr sat in the queue * merge github PR #5: Remove use of indirect object notation in tests; thanks to Julien Fiegehenn for the PR and sorry for the long time this sat in the queue * fix some tests that generated spurious output and didn't actually test anything useful ------------------------- Version 0.78 (2016-02-14) ------------------------- * added Clang support to ccconfig * fix cpan #109978: improve wording/grammar in POD; thanks to gregor herrmann for providing a patch * fix cpan #95716: Add support for #warn/#warning; thanks to Jon DuSaint for providing an initial patch * update module metadata ------------------------- Version 0.77 (2015-07-22) ------------------------- * ensure consistent order of enums when generating code; this was a real bug and caused the configuration part of C::B::C to report wrong (even invalid) configurations back to the user when built using a recent version of Perl that randomises hash keys * fix cpan #85264: the POD test was reporting a missing =back tag in one of the support modules; the ultimate fix was to ensure only the provided modules were POD checked * fix cpan #83167: an artificially low refcnt for immortal variables introduced recently for debug Perl builds was causing the refcnt tests to fail for SvNULLs; thanks to Reini Urban for his patch; also thanks to Nicholas Clark for pointing me to the Perl commit * fix cpan #78165: spelling errors in the documentation; thanks to gregor herrmann for providing a patch * fix deprecated use of unescaped braces in regex * fix some gcc and Perl warnings * switch from SnapshotCM to git repo: github.com/mhx/Convert-Binary-C/ ------------------------- Version 0.76 (2011-04-11) ------------------------- * it looks like I've found the source of the test failures reported in cpan #56369; this version is an attempt to fix the problem, but without fully understanding it -- if a windows guru can explain to me why setjmp() deadlocks if the jmp_buf structure was allocated through Perl's API (New, Newz, etc), I'd really appreciate it ------------------------- Version 0.75 (2011-04-10) ------------------------- * fix cpan #63381 / perl #79854: make sure warnings cause a cache file not to be used (thanks to Andreas König for reporting this) * fix bug in unpack where the code would attempt to create an array with negative size when running out of input data * make sure elf.PL reads/writes in binary mode (thanks to רחלי מרל for finding this problem) ------------------------- Version 0.74 (2009-04-18) ------------------------- * fix sourcification of flexible array members (triggered by cpan #45105; thanks to Alexander Ost for being persistent in his attempt to convince me that there's a bug in sourcify) ------------------------- Version 0.73 (2009-03-16) ------------------------- * fix META.yml generation with newer versions of ExtUtils::MakeMaker * work around an include path handling bug present in some versions of Test::Harness ------------------------- Version 0.72 (2009-03-15) ------------------------- * fix cpan #43119: patch to allow Convert::Binary::C to build with GCC 4.4.x (thanks to Alex Lancaster for providing a patch) ------------------------- Version 0.71 (2008-04-15) ------------------------- * added new 'StdCVersion' and 'HostedC' options for configuring the predefined macros of the preprocessor * fix debugging build with development version of Perl ------------------------- Version 0.70 (2007-12-24) ------------------------- -- released without changes -- ---------------------------- Version 0.69_01 (2007-12-08) ---------------------------- * fix UV generation on platforms where NVs don't preserve UVs (e.g. amd64) and perl doesn't know about UVs (<5.6.0) * make the test suite more noisy when something goes wrong ------------------------- Version 0.69 (2007-12-06) ------------------------- * fix: unpack would return garbage when an unpack hook causes the perl stack to be reallocated * make ccconfig handle blanks in paths correctly * slightly improve ELF parser example * fix debug format strings ------------------------- Version 0.68 (2007-06-25) ------------------------- * allow #pragma pack(0) to reset to default alignment, just like #pragma pack * add checks for invalid #pragma pack() arguments ------------------------- Version 0.67 (2006-12-29) ------------------------- * bleeding edge perl versions don't have SVt_PVBM anymore, which broke compilation of cbc/util.c ------------------------- Version 0.66 (2006-11-02) ------------------------- * fix a bug in the parser that accidentially allowed qualified enum specifiers as unnamed compound members * update test suite for better coverage of recent compiler features and bitfields ------------------------- Version 0.65 (2006-08-27) ------------------------- * fix compilation issues with perls configured with threads and debugging; these issues were caused by a buggy implementation of the assert() macro in the 5.8 series of perl * fix compilation issues with HP compiler on itanium systems * fix: hooks for the same type were not re-entrant (i.e. you could not pack/unpack the same type within a hook registered for that type) * fix: passing sparse hashes or arrays to pack() in combination with pack hooks was causing an assertion * fix an integer promotion bug in the preprocessor * add better support for C99-style array declarator * fix enumerator handling: it was impossible to reuse the name of an enumerator as an identifer * ccconfig fix: macros defined to the empty string were not properly detected ---------------------------- Version 0.64_02 (2006-03-24) ---------------------------- * struct members are now treated more Cish than before * added experimental Dimension tag * cleaned up some internals ---------------------------- Version 0.64_01 (2006-02-27) ---------------------------- * added new methods to interface with the preprocessor: o the 'defined' method tests if a macro is defined o the 'macro_names' method returns a list of all defined macro names o the 'macro' method returns macro definitions * added 'Defines' option for 'sourcify' method; with this option turned on, macro definition are also sourcified * the speed of the 'sourcify' method has been greatly improved * add a new pod coverage test * fix a pod2usage call in elf.pl example * improve warning when trying to pack references into format tagged types * make the module and some basic tests compatible with perl 5.004 * the native() function/method now also supports the 'UnsignedChars' and 'UnsignedBitfields' properties * the 'threads' feature is deprecated and will be removed in a future relase ------------------------- Version 0.64 (2006-01-16) ------------------------- * fix version handling in *.pm files * don't index bin/elf.PL * upgrade ppport.h ---------------------------- Version 0.63_01 (2006-01-09) ---------------------------- * fix: using the Format tag on bitfield members now throws an exception * added experimental ByteOrder tag * added ELF parser example * improve internals o better encapsulation of the pack/unpack code o avoid unnecessary computations o thanks to the cachegrind tool (http://valgrind.org), some expressions in the lexer code of the ucpp preprocessor could be optimized, making the preprocessor more than 10% faster on x86 platforms; this means that parsing should be about 7% faster now * improve test coverage ------------------------- Version 0.63 (2005-12-29) ------------------------- * fix a problem with the test suite when run in a directory that contains whitespace characters * (hopefully) fix the no_index problem in the META.yml by replacing "dir" with "directory" ------------------------- Version 0.62 (2005-12-01) ------------------------- * fixed a bug in unpack() that would cause an error when repeatedly passing a substr() as the data argument; this is not a critical bug, because there's no silent failure ------------------------- Version 0.61 (2005-10-27) ------------------------- * fix Makefile.PL / META.yml ------------------------- Version 0.60 (2005-10-26) ------------------------- * fixed: the byte order setting was not correctly handed to the bitfield layouter when using configure() before using parse(); since that's what C::B::C::Cached does, C::B::C::Cached could be using the wrong byte order for bitfields * the deprecated methods add_hooks(), delete_hooks() and delete_all_hooks() have been removed * silence some warnings with newer gcc versions * start moving test suite to use Test::More * bundle Test, Test::More and Test::Harness for older perl versions * extend compatibility down to perl 5.005 ------------------------- Version 0.59 (2005-06-13) ------------------------- * fixed: dying hooks no longer leak memory * added new 'UnsignedBitfields' option * removed 'Bitfields are unsupported' warning * documented bitfield support * the usual cleanups and corrections ---------------------------- Version 0.58_01 (2005-05-23) ---------------------------- * bitfields are now supported; since bitfield implementations differ from compiler to compiler (sometimes significantly), the bitfield layouting engine can be exchanged at runtime; bitfield support is, however, still considered experimental * the memory used by internal data structures as well as the number of malloc/free calls has been reduced by about 15 percent; besides saving memory, this also makes parsing and cloning a bit faster * the whole pack()/unpack() engine was re-doing the work that has previously been done by the compound layouter; this redundancy has been removed, making the code more readable (and a little bit faster) * the compound layouter implementation has been separated and can now be exchanged at runtime (which is currently unused as there's only one implementation) * the bison parser is now making use of the %destructor feature introduced recently; this makes the parser code a lot easier to read and maintain, and makes the parser a bit faster; you need at least bison-2.0a to regenerate the files * when packing 'string' numbers, the 0b... syntax is now supported for binary numbers * ccconfig's interface and internals have been updated * ccconfig now has a lot more options that hopefully allow you to test compilers with strange commandline interface * ccconfig is now more robust against compiler failures * lots of minor tweaks and fixes ------------------------- Version 0.58 (2005-02-21) ------------------------- * there's now a mailing list; see the documentation or README for details * new tag() method provides a generic way of tagging properties such as hooks to types * the hooks methods are deprecated and will be removed in a future release (new interface is provided through tag() / untag()) * completely restructured the XS/C internals, since C.xs was getting way too large; the code should be a lot more modular and organized now * make the preprocessor handle (read: ignore) any #ident directives (problem spotted by Ronnie Kelly) * use faster preprocessor tokenizer routine * ccconfig: add --output-file and --output-format options * fix invalid read bug when redefining a macro with trailing whitespace (spotted by valgrind) * make sure pack() returns null-terminated strings; not doing so can confuse the regex engine * strip redundant warnings from enum/compound/typedef methods * fix deep recursion in llex() that causes bus error on hpux (this should fix the activestate test failures) * make util / ucpp use Perl's memory allocation functions (this should fix problems with -Dusethreads and -Dusemymalloc) * as usual, more tests and more docs ------------------------- Version 0.57 (2004-11-23) ------------------------- * allow empty initializers (spotted by Mike Lamb) * add CharSize option to support architectures where chars are larger than 8 bits (spotted by Esa Östring) ------------------------- Version 0.56 (2004-09-19) ------------------------- * allow empty member declaration lists * minor doc fixes ------------------------- Version 0.55 (2004-08-22) ------------------------- * new native() function to query native properties * feature() and native() can now also be called as methods * allow setting Alignment and CompoundAlignment to zero to request native alignment and compound alignment * prefix compile-time defaults with CBC_ and document them * upgrade ppport.h * minor cleanups ------------------------- Version 0.54 (2004-07-01) ------------------------- * improved hooks features * changed handling of autogenerated files that has been causing trouble with crappy archiving tools * minor bugfixes ------------------------- Version 0.53 (2004-05-25) ------------------------- * fixed a bug that messed up the return values when using unpack in list context together with OrderMembers => 1 ------------------------- Version 0.52 (2004-05-24) ------------------------- * added new CompoundAlignment option * added new behaviour for unpack method in list context * simplify inheriting from Convert::Binary::C * fixed a bug in the initializer method that caused wrong initialization strings for unnamed unions * fixed a systematic bug that caused sourcify to return invalid C code in a few special cases ------------------------- Version 0.51 (2004-03-23) ------------------------- * added method chaining for add_hooks, delete_hooks and delete_all_hooks * fixed some bugs when using substr() with pack and unpack * documentation fixes and updates ------------------------- Version 0.50 (2004-03-22) ------------------------- * added support for flexible array members and incomplete types * added support for registering pack/unpack hooks to allow user-defined packing/unpacking * ucpp is now reentrant, thus there's no more locking of parse/parse_file * fixed a memory leak when using OrderMembers => 1 * improved ccconfig's detection of ability to compile object/executable files * lots of minor bugfixes and code cleanups ------------------------- Version 0.49 (2003-11-24) ------------------------- * fixed build problem on multi-threaded 5.6.x perls by removing irrelevant code from ppport.h * changed error reporting: preprocessor errors are no longer only warnings (this fixes an issue with Convert::Binary::C::Cached creating an empty cache file if none of the #include'd files could be found) * fixed some error/warnings reporting problems with Convert::Binary::C::Cached * minor cleanups ------------------------- Version 0.48 (2003-11-03) ------------------------- * added new 'OrderMembers' option: this option allows you to tie all hashes returned by the unpack method to either Tie::Hash::Indexed or Tie::IxHash, thus preserving the order of compound members when e.g. dumping the hashes or iterating through their keys/values * slightly improved performance for pack method * added META.yml * lots of code cleanups * small bugfixes ------------------------- Version 0.47 (2003-09-11) ------------------------- * enhanced behaviour of def() method * added new pod test * fixed some buglets ------------------------- Version 0.46 (2003-09-09) ------------------------- * fixed bug #3753 "packing a struct/member/field causes a bus error" * added new warnings when packing/unpacking zero-sized types * updated the docs with links to http://rt.cpan.org and http://cpanratings.perl.org ------------------------- Version 0.45 (2003-08-18) ------------------------- * fixed/improved sourcify output for #pragma pack * added Context option for sourcify method ------------------------- Version 0.44 (2003-08-17) ------------------------- * fixed behaviour of typeof method for bitfields * dependencies method now returns plain list of files when called in list context * doc fixes ------------------------- Version 0.43 (2003-07-24) ------------------------- * fixed: undef values returned by unpack were not writable and caused problems with almost all versions of perl * fixed: sizeof() could return garbage when used on array types * fixed bogus warning generated by pack when explicitly passing 'undef' * improved warning messages generated by pack * added error when using offsetof on bitfields * added new initializer method * the offset argument to the member method is now optional; without the offset argument, a list of all possible members is returned * code cleanups ------------------------- Version 0.42 (2003-06-23) ------------------------- * added new 'ieeefp' feature * new floating point conversion code to support both IEEE and non-IEEE sytems o on machines using the IEEE format to store floating point numbers, you can pack/unpack arbitrary byteorder floating point values for all supported native sizes o on machines not using the IEEE format, packing and unpacking of floating point values is restricted to the types natively available * floating point conversion checks and warnings have been improved * added floating point format detection to ccconfig * some code cleanups ------------------------- Version 0.41 (2003-06-10) ------------------------- * added support for gcc's asm syntax * some cleanups ------------------------- Version 0.40 (2003-04-20) ------------------------- * same as 0.13, just to make CPAN(?:PLUS|-indexer)? happy ------------------------- Version 0.13 (2003-04-20) ------------------------- * changed behaviour of member method in list context o doesn't return the member's type any longer o returns all matching members instead, if multiple members match the given offset o this change is NOT backward compatible o to get the old behaviour, turn ($member, $typeof) = $c->member( $type, $offset ); into $member = $c->member( $type, $offset ); $typeof = $c->typeof( $type.$member ); * fixed lots of memory leaks resulting from using sv_dec() where SvREFCNT_dec() should have been used instead * fixed memory leak when object construction fails * fixed sourcify for enums in special cases * fixed segfault in debugging mode * removed lots of limitations and fixed lots of bugs when dealing with member expressions * changed module/ccconfig versioning; now $Convert::Binary::C::VERSION $Convert::Binary::C::Cached::VERSION as well as the version of ccconfig are all set to the version of the distribution to avoid confusion * added new typeof method * added dwimmy handling of offset suffixes * added basic type support for many methods * allowed basic types to be used without parsing any code * allowed enum/struct/union prefixes for enum, compound, struct and union methods * improved performance when using a threaded perl binary by about 20%; performance is now only 5% worse than with a non-threaded binary * added new "understanding types" section to documentation * fixed some inconsistencies in documentation * added some new warnings * added lots of new tests, some based on coverage analysis using gcov * fixed some tests that could fail due to random binary input when (un)packing floating point values * used ppport.h for compatibility * added check for unsupported perl binary configuration with usemymalloc=y _and_ threads * lots of code cleanups ------------------------- Version 0.12 (2003-03-18) ------------------------- * fixed some bugs in ccconfig * fixed dealing with cache file corruption * minor fixes in documentation * use Devel::Tokenizer::C for tokenizer generation ------------------------- Version 0.11 (2003-02-27) ------------------------- * fixed problem with recursive data structures in sourcify * minor cleanups ------------------------- Version 0.10 (2003-01-23) ------------------------- * added --version for ccconfig * cleaned up and fixed format strings * updated README ------------------------- Version 0.09 (2003-01-20) ------------------------- * fixed problems with va_list on Linux-PPC that caused some tests to segfault * updated preprocessor output detection in ccconfig for "smart" preprocessors * minor fixes and cleanups * minor documentation updates ------------------------- Version 0.08 (2003-01-15) ------------------------- * added ccconfig --nodelete option * added context info for structs/unions/enums * removed 'c99' feature * documentation updates and fixes ------------------------- Version 0.07 (2003-01-09) ------------------------- * fixed packing/unpacking for #pragma pack * complete rewrite of member() algorithm * added 'KeywordMap' option to add keywords directly to the parser * added new behaviour for EnumSize => -1 * extended ranges of some integer options * integrated new version of ucpp * added 'ccconfig' script * example scripts are now generated * added and improved tests * documentation updates * lots of other tiny tweaks * deprecated 'c99' feature, will be removed in 0.08 ------------------------- Version 0.06 (2002-12-13) ------------------------- * removed options 'HasVOID' and 'HasC99Keywords' * added 'DisabledKeywords' option, which replaces both 'HasVOID' and 'HasC99Keywords', and allows to disable a lot of other keywords, too: HasVOID => 0 --> DisabledKeywords => ['void'] HasC99Keywords => 0 --> DisabledKeywords => [qw(inline restrict)] * updated parser to ignore type definitions within code blocks * fixed an access violation when cleaning up the preprocessor * removed warning when using sourcify method * added some more tests * added examples directory and some example scripts * added more examples to documentation * documentation fixes/updates ------------------------- Version 0.05 (2002-11-28) ------------------------- * fixed a bug that suppressed the error message when the cache file could not be created, and added a test for it ------------------------- Version 0.04 (2002-11-27) ------------------------- * support for 64-bit data types on all platforms * additional data types o long long o long double * new methods o clean -- cleaning an object o clone -- cloning an object o depencencies -- retrieve an object's dependencies o sourcify -- emit an object's parsed data as C source * changed method behaviour o configure - The 'HashSize' option has been removed. I didn't like it anyway, and since the hash tables are now growing automatically, it's completely useless. o def - Instead of undef, 0 and 1, the def method will now return undef, '' (the empty string) or the kind of the type you passed as an argument, e.g. 'typedef' or 'union'. * added method behaviour o configure - Calls to configure (and other configuration methods) can be chained together when they're 'set' method calls. o parse, parse_file - All method calls that have no return value will return a reference to their object, so method chaining is possible. o pack, unpack, sizeof, offsetof, member - These methods now can all operate on compound members, i.e. you could say $obj->sizeof( 'type.foo.x' ). o member - The member method now can optionally return the type of the requested member. * new Convert::Binary::C::Cached module o cached Convert::Binary::C objects o identical interface o can speed up parsing by up to 10 - 20 times * increased speed for packing and unpacking arrays * increased portability * added new and improved existing tests * some bug fixes and a lot of code cleanups * upgraded to bison 1.75 ------------------------- Version 0.03 (2002-09-25) ------------------------- * fixed default sizes for floats and double in object constructor * fixed some 64-bit architecture issues * fixed bug in bison parser * fixed problems with some tests * added support for dec_osf platform ------------------------- Version 0.02 (2002-08-31) ------------------------- * decreased the complex test file, which speeds up the complex test and decreases the size of the distribution file * decreased the number of threads in the threads test * added copyright notice to the README file * minor corrections/cleanups ------------------------- Version 0.01 (2002-08-30) ------------------------- * initial release Convert-Binary-C-0.85/Makefile.PL0000755000175000001440000004512514677003452015177 0ustar mhxusers#!/usr/bin/perl ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ # Check which version of perl the user is running, # and emit some warnings when appropriate. BEGIN { if ($] < 5.006) { print STDERR < WARNING: The version of perl you're using ($]) is very old. --> --> Convert::Binary::C is intended to build cleanly on --> perl versions >= 5.6.0. However, there are some hacks --> to make the code compatible with older versions. --> ENDWARN if ($] < 5.004) { print STDERR "--> But the module will not build with perl < 5.004.\n\n"; exit; } elsif ($] < 5.005) { print STDERR "--> Chances are quite good that the module will\n", "--> build successfully, but you won't be able to\n", "--> run the full test suite, as it uses features\n", "--> not available in perl < 5.005.\n"; } else { print STDERR "--> Chances are quite good that the module will\n", "--> build and test successfully.\n"; } print STDERR < --> You can try to build the module with this version of --> perl, but you should rather update your perl installation. ENDWARN } } # Use some standard modules use ExtUtils::MakeMaker; use File::Find; use Cwd; use Config; $MODULE = 'Convert::Binary::C'; # We need bison only when the source code is modified # Actually, we need a recent version of bison ( >= 1.31 ), # but this isn't checked here. $BISON = $Config{bison} || 'bison'; # Where to look for includes @INC_PATH = qw( . ); # All object files (without extension) @OBJECT = qw( cbc/basic cbc/dimension cbc/hook cbc/idl cbc/init cbc/macros cbc/member cbc/object cbc/option cbc/pack cbc/sourcify cbc/tag cbc/type cbc/typeinfo cbc/util ctlib/bitfields ctlib/byteorder ctlib/cterror ctlib/ctparse ctlib/cttags ctlib/cttype ctlib/fileinfo ctlib/layout ctlib/y_parser ctlib/y_pragma ucpp/assert ucpp/cpp ucpp/eval ucpp/nhash ucpp/lexer ucpp/macro ucpp/mem util/hash util/list util/memalloc ); @DBGOBJ = qw( cbc/debug ctlib/ctdebug ); unshift @OBJECT, $MODULE =~ /([^:]+)$/; # Files additionally to be removed on 'make realclean' @REALCLEAN = qw( ctlib/y_parser.output ctlib/y_pragma.output tests/debug.out ); @CLEAN = qw( $(OBJECT) tests/*.vg tests/*.vgo tests/cache.cbc ); @DEFINE = qw( UCPP_CONFIG UTIL_HAVE_CONFIG_H ); # On AIX systems, this should be defined for ucpp $^O eq 'aix' and push @DEFINE, qw( POSIX_JMP ); # Supported features, and flags to set when (e)nabled or (d)isabled %FEATURES = ( debug => { enabled => $Config{ccflags} =~ /-DDEBUGGING\b/ ? 1 : 0, e_flags => [qw( CBC_DEBUGGING CTLIB_DEBUGGING DEBUG_MEMALLOC DEBUG_UTIL_HASH DEBUG_UTIL_LIST YYDEBUG=1 )], d_flags => [qw( NDEBUG )], }, ieeefp => { enabled => undef, e_flags => [qw( CBC_HAVE_IEEE_FP )], d_flags => [qw()], }, $Config{gccversion} ? ( '$format-check' => { enabled => 0, e_flags => [qw( CTLIB_FORMAT_CHECK UTIL_FORMAT_CHECK )], d_flags => [qw()], }, '$coverage' => { enabled => 0, e_flags => [qw()], d_flags => [qw()], } ) : (), '$mem-check' => { enabled => 0, e_flags => [qw( MEM_DEBUG DEBUG_MEMALLOC TRACE_MEMALLOC AUTOPURGE_MEMALLOC )], d_flags => [qw()], }, ); # Automatically generated files %EXAMPLES = ( map { my $x=$_; s/^bin/examples/; s/PL$/pl/; ($x => $_) } glob "bin/*.PL" ); %GENERATE = ( %EXAMPLES, 'ctlib/arch.pl' => 'ctlib/arch.h', ); push @REALCLEAN, map { ref $_ ? @$_ : $_ } values %GENERATE; # Extract features/optimizations from the commandline arguments @ARGV = map { my $myopt = 0; if( my($what, $feat) = /^(en|dis)able-(\S+)$/ ) { for my $pre ('', '$', '~') { if (exists $FEATURES{$pre.$feat}) { warn "WARNING: Feature '$feat' is deprecated and will be removed!\n" if $pre eq '~'; $feat = $pre.$feat; last; } } unless (exists $FEATURES{$feat}) { my @feat = join ', ', map { s/^[\$\~]//; "'$_'" } sort keys %FEATURES; die "Invalid feature '$feat'. Use one of @feat.\n"; } $FEATURES{$feat}{enabled} = $what eq 'en'; $myopt = 1; } elsif( /^help$/ ) { die < !!!!!!!!!! -------------------------------------------------- --> !! WHOA !! You did not pass the IEEE floating point check! --> !!!!!!!!!! -------------------------------------------------- --> --> This means I've done a couple of very simple tests to see if your machine --> is storing floating point numbers in IEEE format or not. From the results --> I concluded that your machine does _NOT_ store floating point values in --> IEEE format. --> --> These are the values for which the IEEE test failed: --> --> value format expected got --> --------------------------------------------------------------------------- ENDMSG my $hex = sub { join ' ', map { sprintf "%02X", $_ } unpack "C*", $_[0] }; for my $t (@ieee_fail) { printf "--> %-15s %-7s %-24s %-24s\n", $t->{value}, $t->{check}, $hex->( $t->{expected} ), $hex->( $t->{got} ); } print < --------------------------------------------------------------------------- --> --> If you're aware of the fact that your machine does not support IEEE --> floating point, please ignore the junk above. You can suppress this --> message by explicitly disabling the 'ieeefp' feature: --> --> $^X Makefile.PL disable-ieeefp --> --> If you're sure that your machine has IEEE floating point support and the --> tests are just complete crap, you can force IEEE support by explicitly --> enabling the 'ieeefp' feature: --> --> $^X Makefile.PL enable-ieeefp ENDMSG } } WriteMakefile( 'NAME' => $MODULE, 'VERSION_FROM' => 'lib/Convert/Binary/C.pm', 'OBJECT' => join( ' ', map { "$_\$(OBJ_EXT)" } sort @OBJECT ), 'INC' => join( ' ', map { "-I$_" } @INC_PATH ), 'EXE_FILES' => ['bin/ccconfig'], 'PL_FILES' => \%GENERATE, 'CONFIGURE' => \&configure, 'clean' => { FILES => "@CLEAN" }, 'realclean' => { FILES => "@REALCLEAN" }, ); ############################################################################# sub configure { # Configure and print information about features for (keys %FEATURES) { my $feat = $_; my $f = $FEATURES{$feat}; my $class = ''; $class = 'DEVELOPMENT-ONLY ' if $feat =~ s/^\$//; $class = 'DEPRECATED ' if $feat =~ s/^~//; $f->{enabled} and print "Building with ${class}feature '$feat'\n"; push @DEFINE, @{$f->{enabled} ? $f->{e_flags} : $f->{d_flags} }; } my $config = { 'CCFLAGS' => $Config{ccflags}, 'DEFINE' => join(' ', map("-D$_", @DEFINE)), 'depend' => { find_depend( @INC_PATH ) }, }; if ($FEATURES{'$coverage'}{enabled}) { $config->{'CCFLAGS'} .= ' -g -fprofile-arcs -ftest-coverage'; if ($Config{gccversion} =~ /(\d+)\.(\d+)\.(\d+)/ && ($1+1e-3*$2+1e-6*$3) >= 3.004) { $config->{'LDLOADLIBS'} = '-lgcov'; # not a valid parameter, but works... } } if ($FEATURES{'$format-check'}{enabled}) { $config->{'CCFLAGS'} .= ' -Wformat=2'; } if (eval $ExtUtils::MakeMaker::VERSION >= 6.64) { $config->{'TEST_REQUIRES'} = { 'Test::More' => 0, }; } if (eval $ExtUtils::MakeMaker::VERSION >= 6) { $config->{'AUTHOR'} = 'Marcus Holland-Moritz '; $config->{'ABSTRACT_FROM'} = 'lib/Convert/Binary/C.pm'; } if (eval $ExtUtils::MakeMaker::VERSION >= 6.45_01) { $config->{'META_MERGE'} = { 'meta-spec' => { version => 2 }, no_index => { file => [qw( bin/elf.PL )], }, resources => { homepage => 'https://metacpan.org/release/Convert-Binary-C', bugtracker => { web => 'https://github.com/mhx/Convert-Binary-C/issues', }, repository => { type => 'git', url => 'https://github.com/mhx/Convert-Binary-C.git', web => 'https://github.com/mhx/Convert-Binary-C', }, }, }; $config->{'META_ADD'} = { license => ['perl_5', 'bsd'], }; } $config; } sub MY::c_o { package MY; my $c_o = shift->SUPER::c_o(@_); if (!$ENV{CBC_MAKEFILE_DEBUG} and eval $ExtUtils::MakeMaker::VERSION >= 6.17) { $c_o =~ s/^(\s+)(\$\(CCCMD\).*)$/$1\$(NOECHO) \$(ECHO) Compiling [\$(CC) \$(OPTIMIZE)] \$<\n$1\$(NOECHO) $2\n$1\$(NOECHO) \$(MV) \$(\@F) tmp\$(\@F)\n$1\$(NOECHO) \$(MV) tmp\$(\@F) \$\@/mg; } else { $c_o =~ s/^\s+\$\(CCCMD\).*$/$&\n\t\$(MV) \$(\@F) tmp\$(\@F)\n\t\$(MV) tmp\$(\@F) \$\@/mg; } $c_o; } sub MY::constants { package MY; shift->SUPER::constants(@_).< '$(YACC) -v -p c_ -o {dst} {src}', src => 'ctlib/parser.y', dst => ['ctlib/y_parser.c'], }, { cmd => '$(YACC) -v -p pragma_ -o {dst} {src}', src => 'ctlib/pragma.y', dst => ['ctlib/y_pragma.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/parser.pl', dst => ['token/t_parser.c', 'token/t_keywords.c', 'token/t_ckeytok.c', 'token/t_basic.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/pragma.pl', dst => ['token/t_pragma.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/config.pl', dst => ['token/t_config.c', 'token/t_sourcify.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/tag.pl', dst => ['token/t_tag.h', 'token/t_tag.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/hook.pl', dst => ['token/t_hookid.h', 'token/t_hookid.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/blproperty.pl', dst => ['token/t_blproperty.h', 'token/t_blproperty.c'], }, { cmd => '$(PERL) {src} tests/include/stuff', src => 'tests/include/stuff/generate.pl', dst => [map { "tests/include/stuff/$_.h" } 'aa' .. 'az'], }, ); my(@gen, @old_dst, @old_src, @missing); for my $s (@spec) { my %seen; for my $dst (@{$s->{dst}}) { my $cmd = $s->{cmd}; $cmd =~ s/\{dst\}/$dst/g; $cmd =~ s/\{(\w+)\}/$s->{$1}/g; push @gen, $cmd unless $seen{$cmd}++; if (-f $dst) { if (-M $s->{src} < -M $dst) { push @old_dst, $dst; push @old_src, $s->{src}; } } else { push @missing, $dst; } } } @old_src = do { my %s; grep !$s{$_}++, @old_src }; my $make = $Config{'make'} || 'make'; if (@missing) { print STDERR < WARNING: The following autogenerated files are missing: --> --> @missing --> --> Please run: --> --> $make regen --> --> If you just extracted the source distribution and did --> not modify or delete any files, something is seriously --> wrong. ENDWARN } elsif (@old_dst) { print STDERR < WARNING: The following generated files are out of date with --> respect to their source files: --> --> @old_dst --> --> Either you've used a nasty program to extract the files in --> this distribution, or you've modified these source files --> --> @old_src --> --> intentionally and forgot to run --> --> $make regen --> --> afterwards. --> --> If you don't understand anything of the above, you're most --> probably safe if you just run --> --> $make --> --> now. ENDWARN } my $postamble = shift->SUPER::postamble(@_); $postamble .= "\nregen:\n\t" . join("\n\t", @gen) . "\n"; $postamble .= <\$\$file.vg 2>&1 || exit 2; \\ mv \$\$file.vg \$\$file.vgo; \\ fi; \\ grep "==.*==.*$sym" \$\$file.vgo; \\ done END } else { $postamble .= <SUPER::test(@_); $::FEATURES{debug}{enabled} and $test =~ s!^test\s*:.*!$&$/\t\@\$(RM_F) tests/debug.out!m; $test } sub MY::installbin { package MY; my $ibin = shift->SUPER::installbin(@_); my @ex = values %::EXAMPLES; unless ($ibin =~ s!^pure_all\s*:+\s*!$&@ex !m) { $ibin .= "\npure_all :: @ex\n"; } $ibin } sub MY::perldepend { package MY; my $dep = shift->SUPER::perldepend(@_); my @deps; open FILE, "C.xs" or die "C.xs: $!"; while () { /^INCLUDE:\s*(\S+)/ or next; push @deps, $1; } close FILE; $dep =~ s/^(C\.c\s*:)/$1 @deps /m; $dep } # The following routines will extract the include dependencies # from the source files. sub find_depend { my @inc_path = ('.', @_); my(%depend, %d); my $cwd = getcwd; printf "Finding dependencies...\n"; for (@inc_path) { /\/$/ or $_ .= '/'; } File::Find::find(sub { /\.(?:(xs)|[chy])$/ or return; $File::Find::dir =~ /^\.[\/\\]tests[\/\\]/ and return; # exclude test directory my @incs; open FILE, $_ or die "$_: $!"; my $olddir = getcwd; chdir $cwd; while () { my($inc,$base) = /^\s*#\s*include\s*"([^"]+\.\w+)"/ or next; for my $path (@inc_path, "$File::Find::dir/") { if (-e "$path$inc") { push @incs, $path . $inc; } } for my $gen (keys %GENERATE) { push @incs, grep /\E$inc/, (ref $GENERATE{$gen} ? @{$GENERATE{$gen}} : $GENERATE{$gen}); } } close FILE; chdir $olddir; return unless @incs; my $name = $File::Find::name; for (@incs, $name) { s/\.[\\\/]//; s/^\.\/|\/\.(?=\/)//g; s/[^\/]+\/\.\.\///g; } @{$depend{$name}}{@incs} = (1)x@incs; }, '.'); for my $o (@OBJECT) { my $name = $o; for my $ext (qw( xs y c )) { -e "$name.$ext" and $name .= ".$ext" and last; } my %incs; rec_depend($name, \%depend, \%incs); $d{"$o\$(OBJ_EXT)"} = join ' ', sort keys %incs; } %d; } sub rec_depend { my($f,$d,$i) = @_; my $h = $d->{$f}; for (keys %$h) { exists $i->{$_} and next; $i->{$_} = 1; exists $d->{$_} and rec_depend($_, $d, $i); } } sub is_big_endian { my $byteorder = $Config{byteorder} || unpack( "a*", pack "L", 0x34333231 ); die "Native byte order ($byteorder) not supported!\n" if $byteorder ne '1234' and $byteorder ne '4321' and $byteorder ne '12345678' and $byteorder ne '87654321'; $byteorder eq '4321' or $byteorder eq '87654321'; } sub check_ieee_fp { my @test = ( { value => '-1.0', double => pack( 'C*', 0xBF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0xBF, 0x80, 0x00, 0x00 ), }, { value => '0.0', double => pack( 'C*', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x00, 0x00, 0x00, 0x00 ), }, { value => '0.4', double => pack( 'C*', 0x3F, 0xD9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9A ), single => pack( 'C*', 0x3E, 0xCC, 0xCC, 0xCD ), }, { value => '1.0', double => pack( 'C*', 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x3F, 0x80, 0x00, 0x00 ), }, { value => '3.1415926535', double => pack( 'C*', 0x40, 0x09, 0x21, 0xFB, 0x54, 0x41, 0x17, 0x44 ), single => pack( 'C*', 0x40, 0x49, 0x0F, 0xDB ), }, { value => '1.220703125e-4', double => pack( 'C*', 0x3F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x39, 0x00, 0x00, 0x00 ), }, ); my @fail; for my $t ( @test ) { my $s = pack 'f', $t->{value}; my $d = pack 'd', $t->{value}; unless( &is_big_endian ) { for( $s, $d ) { $_ = reverse $_ } } $s eq $t->{single} or push @fail, { value => $t->{value}, check => 'single', expected => $t->{single}, got => $s }; $d eq $t->{double} or push @fail, { value => $t->{value}, check => 'double', expected => $t->{double}, got => $d }; } return @fail; } Convert-Binary-C-0.85/bin/0000755000175000001440000000000014677003524013763 5ustar mhxusersConvert-Binary-C-0.85/bin/ccconfig0000755000175000001440000023316514677003452015476 0ustar mhxusers#!/usr/bin/perl -w ################################################################################ # # PROGRAM: ccconfig # ################################################################################ # # DESCRIPTION: Get Convert::Binary::C configuration for a compiler. # ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use IO::File; use Getopt::Long; use Data::Dumper; use strict; my($NAME) = $0 =~ /([\w\.]+)$/; my $VERSION = '0.85'; my $MESSAGE = "\nThis is $NAME, v$VERSION ($0).\n"; my %OPT = ( 'output-format' => 'dumper', ); unless( GetOptions( \%OPT, qw( cc|c=s inc-path|I=s@ basename=s output-file|o=s output-format|f=s preprocess=s compile-obj=s compile-exe=s obj-ext=s exe-ext=s c-ext=s pp-ext=s version debug quiet status! run! delete! ) ) ) { # poor man's pod2usage... my($USAGE) = do { local(@ARGV,$/)=($0); <> } =~ /^__END__.*?^=head\d\s+SYNOPSIS(.*?)^=/ms; my %M = ( 'I' => '*' ); # minimal markup $USAGE =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g; $USAGE =~ s/^/ /gm; print STDERR "\nUsage:$USAGE", "Try `perldoc $NAME' for more information.\n\n"; exit 2; } if( $OPT{version} ) { print <autoflush(1); $OPT{quiet} or print STDERR $MESSAGE, "\n"; my $output = \*STDOUT; if (exists $OPT{'output-file'}) { $output = new IO::File ">$OPT{'output-file'}" or die "Cannot open $OPT{'output-file'}: $!\n"; } my %format = ( dumper => sub { my $cfg = shift; local $Data::Dumper::Sortkeys = 1; return Data::Dumper->Dump([$cfg], ['*config']); }, require => sub { my $cfg = shift; local $Data::Dumper::Indent = 1; local $Data::Dumper::Sortkeys = 1; my $dump = Data::Dumper->Dump([$cfg], ['config']); $dump =~ s/.*(?={)//; return $dump; }, ); unless (exists $format{$OPT{'output-format'}}) { my $valid = join ', ', sort keys %format; die < [@ARGV]; my $cfg = $cc->get_config; $cc->cleanup; unless( $OPT{quiet} ) { my($wall, $usr, $sys, $cusr, $csys) = (time - $^T, times); my $cpu = sprintf "%.2f", $usr + $sys + $cusr + $csys; $usr = sprintf "%.2f", $usr + $cusr; $sys = sprintf "%.2f", $sys + $csys; print STDERR <($cfg); exit 0; package Compiler::Config; use IO::File; use Data::Dumper; use Text::Wrap; use Text::ParseWords; use Carp; use strict; use constant SUCCESS => 0; use constant ERR_REQUIRE => 1; use constant ERR_CREATE => 2; use constant ERR_CONFIG => 3; use constant UNKNOWN => 0; use constant GNU_GCC => 1; use constant INTEL_ICC => 2; use constant MS_VCPP => 3; use constant CLANG => 4; my %type_map; BEGIN { %type_map = ( &MS_VCPP => { 'long long' => '__int64' } ); }; ######################################################################## # # CONSTANT / AUTOGENERATED STUFF # ######################################################################## sub ANSI_headers { qw( assert.h ctype.h errno.h float.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h ) } sub _preset_names { qw( __386BSD__ __3dNOW__ __3dNOW_A__ __64BIT__ ____386BSD____ a29k ABI64 ABIN32 ADDR64 aegis AES_SOURCE AIX AIX32 AIX370 AIX41 AIX42 AIX43 AIX51 AIX64 AIX_SOURCE aixpc ALL_SOURCE alliant ALMOST_STDC alpha ALPHA_ Alpha_AXP alpha_bwx alpha_cix alpha_ev4 alpha_ev5 alpha_ev6 alpha_fix alpha_max alpha_vxworks ALTIVEC AM29000 am29050 AM29K AM33 AM33_2 AMD64 amiga AMIGAOS AMIX ansi ANSI_C_SOURCE ANSI_COMPAT AOUT APCS_26 APCS_32 apollo APOLLO_SOURCE APPLE APPLE_CC APX386 arc arch64 arch_ arch__v3 arch__v8 ARCH_COM ARCH_PPC ARCH_PPC64 ARCH_PWR ARCH_PWR2 arch_v10 arch_v3 arch_v32 arch_v8 ARCHITECTURE ardent arm arm2 arm32 arm6 ARM_ARCH_2 ARM_ARCH_3 ARM_ARCH_3M ARM_ARCH_4 ARM_ARCH_4T ARM_ARCH_5 ARM_ARCH_5E ARM_ARCH_5T ARM_ARCH_5TE arm_elf arm_oabi ARMEB ARMEL ARMWEL atarist athlon athlon_sse att386 att3b AUX AUX_SOURCE AVR AVR_ARCH AVR_ASM_ONLY AVR_AT43USB320 AVR_AT43USB355 AVR_AT76C711 AVR_AT90C8534 AVR_AT90S1200 AVR_AT90S2313 AVR_AT90S2323 AVR_AT90S2333 AVR_AT90S2343 AVR_AT90S4414 AVR_AT90S4433 AVR_AT90S4434 AVR_AT90S8515 AVR_AT90S8535 AVR_AT94K AVR_ATmega103 AVR_ATmega128 AVR_ATmega16 AVR_ATmega161 AVR_ATmega163 AVR_ATmega32 AVR_ATmega323 AVR_ATmega603 AVR_ATmega64 AVR_ATmega8 AVR_ATmega83 AVR_ATmega85 AVR_ATtiny11 AVR_ATtiny12 AVR_ATtiny15 AVR_ATtiny22 AVR_ATtiny28 AVR_ENHANCED AVR_MEGA base BeOS BIG_ENDIAN BIGMODEL BIT_MSF bool BSD bsd43 bsd4_2 BSD4_3 bsd4_4 BSD_4_3 BSD_4_4 BSD_C BSD_NET2 BSD_SOURCE BSD_TIME BSD_TYPES BSDCOMPAT bsdi BUFSIZ bull BULL_SOURCE BYTE_MSF BYTE_ORDER c C30 C31 C32 C33 C3x C40 C44 C4x cadmus CALL_AIX CALL_AIXDESC CALL_NT CALL_SYSV cdecl CHAR_UNSIGNED CLASSIFY_TYPE clipper CMU COFF COMPATMATH COMPILER_VERSION CONCURRENT CONIX convex convex_c1 convex_c2 convex_c32 convex_c34 convex_c38 CONVEX_FLOAT_ CONVEX_SOURCE cplusplus CPU CPU_FAMILY CPU_VARIANT CRAY CRAYIEEE CRAYMPP CRAYT3E CRIS CRIS_ABI_version CRIS_arch_tune CRIS_arch_version ctix CX_UX CYGWIN CYGWIN32 D30V DCC DCE_THREADS DCPLUSPLUS declspec DGUX DGUX_SOURCE DGUX_TARGET DIAB_TOOL DJGPP dmert DOLPHIN DOUBLE_IS_32BITS DPX2 DSO DSP1600 DSP1610 DYNAMIC Dynix DynixPTX EABI ECOFF ELF elinux elxsi embedded EMBEDDED_CROSS encore EPI EXTENSIONS EXTERN_PREFIX FAVOR_BSD FILE_OFFSET_BITS FILENAME_MAX float128 float80 fpreg fr30 FreeBSD frv FRV_ACC FRV_DWORD FRV_FPR FRV_GPR FRV_HARD_FLOAT FRV_UNDERSCORE FRV_VLIW G_FLOAT gcc GCC_NEW_VARARGS gcos gcx GFLOAT gimpel GLIBC GLIBC_MINOR gmicro GNU GNU_CRIS gnu_hurd GNU_LIBRARY gnu_linux GNU_SOURCE GNUC GNUC_MINOR GNUC_PATCHLEVEL GO32 gould GOULD_PN GP_SUPPORT H3050R H3050RX H8300 H8300H H8300S hardfp HAVE_68881 HAVE_CE HAVE_FPA HAVE_FPU HAVE_SHORT_DOUBLE HAVE_SHORT_INT HAVE_SKY hbullx20 hcx HITACHI HIUX_SOURCE host_mips hp200 hp300 hp64000 hp64902 hp64903 HP700 hp800 hp9000 hp9000ipc hp9000s200 hp9000s300 hp9000s400 hp9000s500 hp9000s700 hp9000s800 hp9k8 HP_aCC hp_osf hppa hpux HPUX_ASM HPUX_SOURCE hypersparc i186 i286 i370 i386 i486 i586 i686 i8086 I80960 i860 i960 i960_CA i960_CC i960_CF i960_KA i960_KB i960_MC i960_SA i960_SB i960CA i960CC i960CF i960JA i960JD i960JF i960KA i960KB i960MC i960RP i960SA i960SB IA64 iAPX286 IBITS32 ibm ibm032 ibmesa IBMR2 ibmrt IEEE_FLOAT IEEE_FLOAT_ IEEE_FP IEEE_FP_INEXACT ILP32 ILP64 INCLUDE__STDC__ INCLUDE_LONGLONG INLINE INLINE_INTRINSICS INT int128 INT64 INT_MAX INTEL interdata INTERIX INTRINSICS IP2K is68k itanium IWMMXT ix86 k6 k6_2 k6_3 KPRINTF_ATTRIBUTE KR ksr1 LANGUAGE_ASSEMBLY LANGUAGE_C LANGUAGE_C_PLUS_PLUS LANGUAGE_OBJECTIVE_C LARGE_FILE_API LARGEFILE64_SOURCE LARGEFILE_SOURCE LD64 LDBL LE370 LFS64_LARGEFILE LFS_LARGEFILE lint Linux LITTLE_ENDIAN LITTLE_ENDIAN_DATA LONG64 LONG_DOUBLE LONG_DOUBLE_128 LONG_DOUBLE_64 LONG_LONG LONG_LONG_MAX LONG_MAX LONGDOUBLE LONGLONG LP64 luna luna88k Lynx M210 M32R m32r2 m32rx M340 m68 M68000 m68020 m68030 m68040 m68332 m68k m88000 m88100 m88110 m88k M88KBCS_TARGET M_ALPHA M_BITFIELDS M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_INTERNAT M_IX86 M_SDATA M_STEXT M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_WORDSWAP M_XENIX MACH machine MachTen macII MASSCOMP MATH_HAS_NO_SIDE_EFFECTS MAVERICK MBCS mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040 mc68060 MC6811 MC6812 mc68302 mc68332 mc68881 mc68hc11 mc68hc12 mc68hc1x mc68hcs12 mc68k mc68k32 mc700 mc88000 mc88100 mc88110 mcf5200 MCORE MCORE__ALIGN_4 MCORE_ALIGN_8 MCOREBE MCORELE mcpu32 merlin mert MINGW32 MiNT mips mips16 mips64 mips_eabi mips_fpr MIPS_FPSET MIPS_ISA MIPS_SIM mips_single_float mips_soft_float MIPS_SZINT MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MMIX MMIX_ABI_GNU MMIX_ABI_MMIXWARE MMX MN10200 MN10300 MODERN_C moss motorola mpc505 mpc604 mpc750 mpc821 mpc860 mpeix MSC_VER MSDOS MSVCRT MT MTXINU MULTIMAX MULTITHREADED mvs n16 NATURAL_ALIGNMENT ncl_el ncl_mr NetBSD netware news1500 news1700 news1800 news1900 news3700 news700 news800 news900 NeXT NEXT_SOURCE NLS NO_INLINE NO_INLINE_MATH NO_INLINE_STDLIB NO_INTERRUPTS NO_LEADING_UNDERSCORES NO_PROTOTYPE NO_UNDERSCORES NODE nofp nonstopux ns16000 ns32000 ns32016 ns32332 ns32532 ns32k nsc32000 OCS88 OEMVS OPEN_NAMESPACE OpenBSD openedition OPENNT OPTIMIZE OS OS2 OS390 osf OSF1 OSF_SOURCE pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON PARISC PC532 pdp11 pe pentium pentium2 pentium3 pentium4 pentium__mmx pentiumpro PGC pic PIC_ pj plexus PORTAR POSIX POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE POSIX_C_SOURCE POSIX_SOURCE POSIX_THREADS POWER PowerPC powerpc64 PPC ppc403 ppc601 ppc602 ppc603 ppc603e PPC64 PPC64_ PPC_ PRAGMA_REDEFINE_EXTNAME pro PROTOTYPES ps2 psos PTHREAD_USE_D4 PTHREADS PTHREADS95 PTRDIFF_TYPE PWB pyr QNX R3000 R4000 REENTRANT REGPARM RELOCATABLE RES REVARGV Rhapsody rios RISC6000 riscbsd riscix riscos ROSE rs6000 RT rtasim rtems RTP s390 s390x s64_t SA110 SCO SCO_C_DIALECT SCO_COFF SCO_DS SCO_ELF SCO_ODS_30 SCO_XPG_VERS score3 scs semi sequent SEQUENT_ sgi SGI_SOURCE sh sh1 sh2 sh3 SH3E SH4 SH4_100 SH4_200 SH4_300 SH4_340 SH4_400 SH4_500 SH4_NOFPU SH4_SINGLE SH4_SINGLE_ONLY SH5 SHARED SHMEDIA SHRT_MAX simulator sinix SIZE_INT SIZE_LONG SIZE_PTR SIZE_TYPE SNI SOCKET_SOURCE SOCKETS_SOURCE SOFT_FLOAT SOFTFP SOLARIS_THREADS sony sony_news sonyrisc sparc sparc64 sparc_v8 sparc_v9 sparclet sparclite sparclite86x sparcv9 spectrum spur SSE SSE2 stardent STATIC STD_INCLUDE_DIR STDC STDC_EXT STDC_HOSTED STDC_VERSION stdcall STDCPP stratos STRICT_ANSI STRICT_BSD STRICT_NAMES sun sun3 sun386 Sun386i supersparc SVID SVR3 SVR4 SVR4_2 SVR4_ABI SVR4_SOURCE svr5 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5 sysV68 sysV88 SYSV_SOURCE tahoe Tek4132 Tek4300 THREAD_SAFE THREADS_POSIX4ad4 thumb THUMB_INTERWORK THUMBEB THUMBEL titan TM3200 TM5400 TM5600 TMS320C30 TMS320C31 TMS320C32 TMS320C33 TMS320C3x TMS320C40 TMS320C44 TMS320C4x tower tower32 tower32_200 tower32_600 tower32_700 tower32_800 tower32_850 TOWER_ASM tss tune_ tune_athlon tune_athlon_sse tune_i386 tune_i486 tune_i586 tune_i686 tune_k6 tune_k6_2 tune_k6_3 tune_pentium tune_pentium2 tune_pentium3 tune_pentium4 tune_pentium_mmx tune_pentiumpro tune_v tune_v10 tune_v3 tune_v8 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5 u64_t uclinux UINT128_T ultrix UMAXV unaligned UnicomPBB UnicomPBD UNICOS UNICOSMK unix UNIX95 UNIX99 unixpc unos USE_BSD USE_FILE_OFFSET64 USE_GNU USE_INIT_FINI USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2 USE_REENTRANT USE_RTC USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED USES_INITFINI USG USGr4 USGr4_2 UTek Utek UTS UWIN uxpm uxps v20 v33 v850 v850e v850e1 v850ea v851 vax venix VMESA VMS VSTA VTHREADS vxworks vxworks_5 wchar_t WCHAR_TYPE we32000 WIN32 WINNT WINT_TYPE WRS_R3K_EXC_SUPPORT X86_ x86_64 X_FLOAT xenix Xenix286 XOPEN_C XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED XSCALE xstormy16 XTENSA XTENSA_EB XTENSA_EL XTENSA_SOFT_FLOAT z8000 ) } sub _assert { { 'cpu' => [qw( a29k alpha arc arm bwx cix clipper convex elxsi ev4 ev5 ev6 fix h8300 h8300h h8300s hppa i370 i386 i860 i960 ia64 ibm032 m32r m68k m88k max mc68000 mc68020 mc68030 mc68040 mips ns32k parisc powerpc powerpc64 pyr rs6000 sh sparc sparc64 spur tahoe tron v850 vax we32000 x86_64 xtensa )], 'endian' => [qw( big little )], 'lint' => [qw( off )], 'machine' => [qw( a29k alpha arc arm bigendian clipper convex d30v elxsi fr30 h8300 h8300h h8300s hppa i370 i386 i860 i960 ia64 ibm032 littleendian m32r m68k m88k macII mc68000 mips ns32k parisc powerpc powerpc64 pyr rs6000 sgi sh sparc sparc64 sparcv9 spur tahoe tron v850 vax we32000 x86_64 xstormy16 xtensa )], 'model' => [qw( ilp32 lp64 )], 'system' => [qw( aix AUX beos bsd embedded FreeBSD gnu hiux hpux hurd interix linux lynx mach msdos mvs NetBSD netware OpenBSD openedition osf1 posix ptx4 rtems simulator svr3 svr4 unix vms vsta vxworks winnt xpg4 )] } } ######################################################################## # # CONSTRUCTOR # ######################################################################## sub new { my $class = shift; my $self = bless { 'headers' => [&ANSI_headers], 'ppline' => qr/^\s*#\s*(?:line\s*)?(\d+)\s*"([^"]*)"/, # TODO: make configurable? 'debug' => 0, 'quiet' => 0, 'status' => 1, 'run' => 1, 'delete' => 1, 'timeout' => 30, 'basename' => '_t_e_s_t', 'c-ext' => '.c', @_ }, $class; $self->{fatal} = 0; $self->{__int__} = 0; $SIG{INT} = sub { $self->{__int__} = 1; $SIG{INT} = 'DEFAULT' }; $self->_configure; $self->{fatal} = 1; $self; } ######################################################################## # # CONFIGURATION # ######################################################################## sub _getwarn { my @warn = @_; for( @warn ) { s/\s+at\s+\Q$0\E\s+line\s+\d+\.//m; s/^\s*included\s+from\s+\[buffer\]:\d+[\r\n]+//m; s/[\r\n]+$//; }; @warn; } sub check_config { my $self = shift; my $config = shift; my @headers = @_; my %inc; eval { require Convert::Binary::C }; $@ and return {code => ERR_REQUIRE}; $self->{debug} and import Convert::Binary::C debug => 'all'; my $c = eval { new Convert::Binary::C }; $@ and return {code => ERR_CREATE}; eval { $c->configure( %$config ) }; $@ and return {code => ERR_CONFIG}; @inc{@headers} = (undef) x @headers; my %res = ( code => SUCCESS, header => \%inc, fail => [], succ => [], warnings => [], ); for my $hdr ( keys %inc ) { my $code = "#include <$hdr>\n"; my @warn; { local $^W = 1; local $SIG{__WARN__} = sub { push @warn, @_ }; eval { $c->clean->parse( $code ) }; } $inc{$hdr} = { warnings => [_getwarn(@warn)] }; push @{$res{warnings}}, _getwarn(@warn); if( $@ ) { ($inc{$hdr}{error}) = _getwarn($@); push @{$res{fail}}, $hdr; } else { push @{$res{succ}}, $hdr; } } return \%res; } sub get_config { my $self = shift; exists $self->{config} or $self->run_checks; my @headers; my @missing; $self->_msg( "\nChecking for ANSI headers..." ); for my $hdr ( @{$self->{headers}} ) { my $found = 0; for my $inc ( @{$self->{'inc-path'}} ) { if( -e $inc.$hdr ) { $found = 1; last; } } push @{ $found ? \@headers : \@missing }, $hdr; } if( @missing ) { $self->_msg("The following ANSI headers are missing:"); $self->_wrapped_list( @missing ); } else { $self->_msg("All ANSI headers found."); } $self->_msg( "\nAssembling the configuration..." ); my %predef = %{$self->{predefined} || {}}; my %def; my $compiler = $self->_compiler; if( $compiler == GNU_GCC || $compiler == CLANG || $compiler == INTEL_ICC ) { my %name = ( GNU_GCC, 'GNU', INTEL_ICC, 'Intel ICC', CLANG, 'Clang', ); $self->_msg( "You're using the $name{$compiler} compiler." ); %def = ( '__attribute(x)' => '', '__attribute__(x)' => '', '__typeof(x)' => 'int', '__typeof__(x)' => 'int', '__alignof(x)' => '1', '__alignof__(x)' => '1', '__label__' => 'int', '__builtin_va_list' => 'int', '__has_feature(x)' => '0', '__has_include_next(x)' => '0', ); } elsif( $compiler == MS_VCPP ) { $self->_msg( "You're using the Microsoft compiler." ); $def{'__int64'} = 'long long'; } if( exists $predef{__CYGWIN__} || exists $predef{_WIN32} ) { $self->_msg( "This is a Windows compiler." ); $def{'__cdecl'} = ''; $def{'__declspec(x)'} = ''; } my %cfg; my $define = sub { [ map { "$_=$predef{$_}" } sort keys %{$_[0]} ] }; if( exists $self->{basic_sizes} ) { my %sizes = %{$self->{basic_sizes}}; my %valid = ( PointerSize => [ 0, 1, 2, 4, 8 ], EnumSize => [-1, 0, 1, 2, 4, 8 ], IntSize => [ 0, 1, 2, 4, 8 ], CharSize => [ 0, 1, 2, 4, 8 ], ShortSize => [ 0, 1, 2, 4, 8 ], LongSize => [ 0, 1, 2, 4, 8 ], LongLongSize => [ 0, 1, 2, 4, 8 ], FloatSize => [ 0, 1, 2, 4, 8, 12, 16], DoubleSize => [ 0, 1, 2, 4, 8, 12, 16], LongDoubleSize => [ 0, 1, 2, 4, 8, 12, 16], ); for my $type ( keys %sizes ) { my $opt = join( '', map ucfirst, split ' ', $type ) . 'Size'; if( exists $valid{$opt} ) { if( grep { $sizes{$type} == $_ } @{$valid{$opt}} ) { $cfg{$opt} = $sizes{$type}; } else { $self->_msg( "Strange size '$sizes{$type}' for type '$type'." ); } } else { $self->_msg( "Strange type '$type' with size '$sizes{$type}'." ); } } } if( exists $self->{unsigned_chars} and defined $self->{unsigned_chars} ) { $cfg{UnsignedChars} = $self->{unsigned_chars}; } if( exists $self->{alignment} and defined $self->{alignment} ) { if( grep { $self->{alignment} == $_ } 1, 2, 4, 8, 16 ) { $cfg{Alignment} = $self->{alignment}; } else { $self->_msg( "Strange alignment '$self->{alignment}'." ); } } if( exists $self->{compound_alignment} and defined $self->{compound_alignment} ) { if( grep { $self->{compound_alignment} == $_ } 1, 2, 4, 8, 16 ) { $cfg{CompoundAlignment} = $self->{compound_alignment}; } else { $self->_msg( "Strange compound alignment '$self->{compound_alignment}'." ); } } if( exists $self->{invalid_keywords} and @{$self->{invalid_keywords}} > 0 ) { $cfg{DisabledKeywords} = $self->{invalid_keywords}; } if( exists $self->{keyword_map} and keys %{$self->{keyword_map}} > 0 ) { $cfg{KeywordMap} = $self->{keyword_map}; } if( exists $self->{byteorder} and $self->{byteorder} ) { $cfg{ByteOrder} = $self->{byteorder}; } if( exists $self->{cpp_comments} ) { $cfg{HasCPPComments} = $self->{cpp_comments}; } if( exists $self->{stdc_version} ) { $cfg{StdCVersion} = $self->{stdc_version}; } if( exists $self->{stdc_hosted} ) { $cfg{HostedC} = $self->{stdc_hosted}; } if( exists $self->{'inc-path'} and @{$self->{'inc-path'}} > 0 ) { $cfg{Include} = [ map { s/[\\\/]+$//; $_ } @{$self->{'inc-path'}} ]; } keys %{$self->{preasserted}} and $cfg{Assert} = [sort keys %{$self->{preasserted}}]; unless (keys %cfg) { $self->_msg("\nI could not get any useful compiler information."); $self->_quit; } $self->_msg( "\nTesting configuration..." ); $self->_debug(sub { Data::Dumper->Dump( [\%def, \%predef, \%cfg], [qw(*def *predef *cfg)] ) }); # First, check if the configuration works without additional defines my $warnings = 0; my $failures = 0; keys %predef and $cfg{Define} = $define->( \%predef ); my $res = $self->check_config( \%cfg, @headers ); $self->_debug(sub { Data::Dumper->Dump( [$res], [qw(res)] ) }); if( $res->{code} == SUCCESS ) { $failures = @{$res->{fail}}; $warnings = @{$res->{warnings}}; if( $failures ) { $self->_msg( "Plain configuration failed for these headers:" ); $self->_wrapped_list( sort @{$res->{fail}} ); } else { if( $warnings == 0 ) { goto finish; } $self->_msg( "Plain configuration works fine, but there are some warnings:" ); $self->_out( "| ", @{$res->{warnings}} ); } } else { goto finish; } # There were errors or warnings. Let's see if there's something we can try... unless( keys %def ) { if( $res->{code} == SUCCESS ) { $self->_msg( "\nHowever, there's nothing I can do about it." ); } goto finish; } $self->_msg( "\nI will try to add couple of defines..." ); for my $key ( keys %def ) { my($name) = $key =~ /(\w+)/; delete $predef{$name}; $predef{$key} = $def{$key}; } keys %predef and $cfg{Define} = $define->( \%predef ); my $newres = $self->check_config( \%cfg, @headers ); $self->_debug(sub { Data::Dumper->Dump( [$res], [qw(res)] ) }); if( $res->{code} != SUCCESS ) { $res = $newres; goto finish; } if( @{$newres->{fail}} < $failures or @{$newres->{fail}} == $failures && @{$newres->{warnings}} < $warnings ) { $self->_msg( "This configuration feels better." ); if( $failures ) { if( @{$newres->{fail}} ) { $self->_msg( "Only these headers still fail:" ); $self->_wrapped_list( sort @{$newres->{fail}} ); } else { $self->_msg( "No more headers that fail." ); } } $res = $newres; $failures = @{$res->{fail}}; $warnings = @{$res->{warnings}}; } else { if( $failures == 0 and @{$newres->{fail}} > 0 ) { $self->_msg( "Whoa, now it fails. Restoring original configuration." ); } else { $self->_msg( "Doesn't help. Restoring original configuration." ); } goto finish; } # Try to remove as many defines as possible $self->_msg( "\nNow let's see which defines aren't necessary..." ); my %orgdef = %{$self->{predefined}}; my @additional; my $tested = 0; for my $key ( sort keys %def ) { my($name) = $key =~ /(\w+)/; delete $predef{$key}; exists $orgdef{$name} and $predef{$name} = $orgdef{$name}; keys %predef and $cfg{Define} = $define->( \%predef ); $newres = $self->check_config( \%cfg, @headers ); $self->_debug(sub { Data::Dumper->Dump( [$res], [qw(res)] ) }); if( $newres->{code} == SUCCESS and @{$newres->{fail}} <= $failures and @{$newres->{warnings}} <= $warnings ) { $res = $newres; $failures = @{$res->{fail}}; $warnings = @{$res->{warnings}}; } else { push @additional, $name; delete $predef{$name}; $predef{$key} = $def{$key}; } $self->_work_in_progress( sprintf "%d/%d needed", scalar @additional, ++$tested ); } $self->_work_done; if( @additional ) { $self->_msg( "Additionally defining the following symbols:" ); $self->_wrapped_list( sort @additional ); } else { $self->_msg( "Not defining any additional symbols." ); } finish: if( $res->{code} == SUCCESS ) { if( @{$res->{succ}} > 0 ) { $self->_msg( "\n>>>>>>>>>> Successfully tested configuration! <<<<<<<<<<" ); } else { $self->_msg( "\n>>>>>>>>>> Configuration test FAILED! <<<<<<<<<<" ); } if( @{$res->{fail}} ) { $self->_msg( "\nThese headers fail:" ); for my $hdr ( sort keys %{$res->{header}} ) { exists $res->{header}{$hdr}{error} or next; $self->_msg( " <$hdr> $res->{header}{$hdr}{error}" ); } } elsif( @{$res->{warnings}} ) { $self->_msg( "\nHowever, there are some warnings that I can't get rid of:" ); $self->_out( "| ", @{$res->{warnings}} ); } if( defined $self->{float_format} ) { if( $self->{float_format} eq 'IEEE' ) { Convert::Binary::C::feature('ieeefp') or $self->_msg( <{float_format} eq 'native' ) { Convert::Binary::C::feature('ieeefp') and $self->_msg( <_msg( <{code} == ERR_REQUIRE and $self->_msg( "Failed to load Convert::Binary::C, cannot test configuration." ); $res->{code} == ERR_CREATE and $self->_msg( "Could not create Convert::Binary::C object." ); $res->{code} == ERR_CONFIG and $self->_msg( "Could not configure Convert::Binary::C object." ); } keys %predef and $cfg{Define} = $define->( \%predef ); return \%cfg; } ######################################################################## # # COMPILER TESTING # ######################################################################## sub cleanup { my $self = shift; if( $self->{'delete'} ) { for( qw( c pp obj exe ) ) { my $meth = "_${_}file"; my $file = $self->$meth(); -e $file and unlink $file; } for( glob "$self->{basename}.*" ) { -e and unlink } } } sub run_checks { my $self = shift; my $asserts; if ($self->{'inc-path'}) { for (@{$self->{'inc-path'}}) { $_ .= _OS('file-sep') unless /[:\/\\]$/ } } elsif ($self->{can_read_ppout}) { $self->{'inc-path'} = $self->_run_incpath; } else { $self->{'inc-path'} = []; } ($self->{names}, $asserts) = $self->_names( $self->{'inc-path'} ); if ($self->{can_preprocess}) { $self->{predefined} = $self->_get_predefined( $self->{names} ); $self->{preasserted} = $self->_get_preasserted( $asserts ); $self->{stdc_version} = delete $self->{predefined}{__STDC_VERSION__}; $self->{stdc_hosted} = delete $self->{predefined}{__STDC_HOSTED__}; $self->{stdc_version} =~ s/L$// if defined $self->{stdc_version}; } if ($self->{can_compile} || $self->{can_run}) { $self->{invalid_keywords} = $self->_get_invalid_keywords; $self->{keyword_map} = $self->_get_keyword_map; $self->{cpp_comments} = $self->_get_cpp_comments; $self->{basic_sizes} = $self->_get_basic_sizes; $self->{byteorder} = $self->_get_byteorder; $self->{unsigned_chars} = $self->_get_unsigned_chars; $self->{alignment} = $self->_get_alignment; $self->{compound_alignment} = $self->_get_compound_alignment; # run _after_ byteorder test $self->{float_format} = $self->_get_float_format; } } sub _compiler { my $self = shift; exists $self->{predefined}{__clang__} and return CLANG; exists $self->{predefined}{__GNUC__} and return GNU_GCC; exists $self->{predefined}{__ICC} || exists $self->{predefined}{__INTEL_COMPILER} and return INTEL_ICC; exists $self->{predefined}{_MSC_VER} and return MS_VCPP; return UNKNOWN; } sub _test_type { my($self, $type, $init, $width) = @_; my $begin = "\x21\x05\x19\x77*MHXCBC*\xDE\xAD\xBE\xEF"; my $end = "\x21\x05\x19\x77*MARCUS*\xDE\xAD\xBE\xEF"; my $cvt = sub { join ', ', map { sprintf "0x%02X", $_ } unpack "C*", $_[0] }; my $c_begin = $cvt->( $begin ); my $c_end = $cvt->( $end ); $self->_temp( <_compile_temp; $res->{status} and return undef; my $fh = new IO::File $self->_objfile or return undef; binmode $fh; my $obj = do { local $/; <$fh> }; $obj =~ /\Q$begin\E(.{1,$width}?)\Q$end\E/s and return $1; return undef; } #----------------------------------------------------------------------- # FLOATING POINT FORMAT #----------------------------------------------------------------------- sub _get_float_format_run { my $self = shift; my $value = shift; my %res; TYPE: for my $type ( qw( float double ) ) { $self->_work_in_progress; $self->_temp( < union fp { $type val; unsigned char byte[sizeof($type)]; }; int main() { union fp x; int i; x.val = $value; printf("size=%d:", sizeof($type)); for( i=0; i_build_temp; if( -e $self->_exefile ) { local $self->{fatal} = 0; $res = $self->_run_temp; } else { $self->_msg( "Got no output from compiler for '($type) $value'." ); next; } if( $res->{didnotrun} or $res->{status} ) { $self->_msg( "It seems I cannot run your compiler's executables." ); last; } for my $line ( @{$res->{stdout}} ) { if( my($size, $hex) = $line =~ /^size=(\d+):\s*(.*)/ ) { my $bits = pack 'C*', map hex, $hex =~ /0x(\S{2})/g; length($bits) == $size or last; $res{$type} = $bits; next TYPE; } } $self->_msg( "Strange output for '($type) $value'" ); } return \%res; } sub _get_float_format_compile { my $self = shift; my $value = shift; my %res; for my $type ( qw( float double ) ) { $self->_work_in_progress; $res{$type} = $self->_test_type( $type, $value, 32 ); unless( defined $res{$type} ) { $self->_msg( "Got no output from compiler for '($type) $value'." ); } } return \%res; } sub _get_float_format { my $self = shift; $self->_msg( "\nTrying to determine floating point format..." ); my @test = ( { value => '-1.0', double => pack( 'C*', 0xBF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0xBF, 0x80, 0x00, 0x00 ), }, { value => '0.0', double => pack( 'C*', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x00, 0x00, 0x00, 0x00 ), }, { value => '0.4', double => pack( 'C*', 0x3F, 0xD9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9A ), single => pack( 'C*', 0x3E, 0xCC, 0xCC, 0xCD ), }, { value => '1.0', double => pack( 'C*', 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x3F, 0x80, 0x00, 0x00 ), }, { value => '3.1415926535', double => pack( 'C*', 0x40, 0x09, 0x21, 0xFB, 0x54, 0x41, 0x17, 0x44 ), single => pack( 'C*', 0x40, 0x49, 0x0F, 0xDB ), }, { value => '1.220703125e-4', double => pack( 'C*', 0x3F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x39, 0x00, 0x00, 0x00 ), }, ); my $meth = $self->{can_run} ? "_get_float_format_run" : "_get_float_format_compile"; for my $t ( @test ) { my $res = $self->$meth( $t->{value} ); $t->{result}{single} = $res->{float}; $t->{result}{double} = $res->{double}; } my $fail_nat = 0; my $fail_i3e = 0; my @tests; for my $t ( @test ) { my $s_nat = pack 'f', $t->{value}; my $d_nat = pack 'd', $t->{value}; my $s_i3e = $t->{single}; my $d_i3e = $t->{double}; if( defined $self->{byteorder} && $self->{byteorder} eq 'LittleEndian' ) { $_ = reverse $_ for $s_i3e, $d_i3e; } if( defined $t->{result}{single} ) { push @tests, { value => $t->{value}, format => 'single', ieee => $s_i3e, native => $s_nat, got => $t->{result}{single} }; $t->{result}{single} eq $s_nat or $fail_nat++; $t->{result}{single} eq $s_i3e or $fail_i3e++; } if( defined $t->{result}{double} ) { push @tests, { value => $t->{value}, format => 'double', ieee => $d_i3e, native => $d_nat, got => $t->{result}{double} }; $t->{result}{double} eq $d_nat or $fail_nat++; $t->{result}{double} eq $d_i3e or $fail_i3e++; } } $self->_work_done; my $fp_format; if( @tests == 0 ) { $self->_msg( "Could not determine floating point format." ); } elsif( $fail_i3e == 0 ) { $fp_format = 'IEEE'; $self->_msg( "Seems to be IEEE floating point format." ); } elsif( $fail_nat == 0 ) { $fp_format = 'native'; $self->_msg( "No IEEE, but at least the natively supported floating point format." ); } else { $fp_format = 'unknown'; $self->_msg( "Neither IEEE nor natively supported floating point format." ); $self->_msg( "\nFYI, this is what I got:" ); $self->_msg( "\nvalue format IEEE representation Native representation Compiler representation" ); $self->_msg( '-'x97 ); my $hex = sub { join ' ', map { sprintf "%02X", $_ } unpack "C*", $_[0] }; for my $t ( @tests ) { $self->_msg( sprintf( "%-15s %-7s %-24s %-24s %-24s", $t->{value}, $t->{format}, $hex->($t->{ieee}), $hex->($t->{native}), $hex->($t->{got}) ) ); } $self->_msg( '-'x97 ); } return $fp_format; } #----------------------------------------------------------------------- # ALIGNMENT #----------------------------------------------------------------------- sub _get_alignment_run { my $self = shift; my $type = shift; $self->_work_in_progress; $self->_temp( < #include struct align { char a; $type b; }; int main() { printf("align=%d\\n", offsetof(struct align, b)); return 0; } ENDC my $res = $self->_build_temp; if( -e $self->_exefile ) { local $self->{fatal} = 0; $res = $self->_run_temp; } else { $self->_work_done; $self->_msg( "Got no output from compiler for '$type'." ); return undef; } if( $res->{didnotrun} or $res->{status} ) { $self->_work_done; $self->_msg( "It seems I cannot run your compiler's executables." ); return undef; } for my $line ( @{$res->{stdout}} ) { $line =~ /^align=(\d+)/ and return $1; } $self->_work_done; $self->_msg( "Strange output..." ); return undef; } sub _get_alignment_compile { my $self = shift; my $type = shift; $self->_work_in_progress; my $init = $type =~ /(struct|union)\s+(\w+)/ ? "{ sizeof(struct align) - sizeof($1 $2) }" : "{ sizeof(struct align) - sizeof($type), ($type) -1 }"; my $res = $self->_test_type( "struct align { char a; $type b; }", $init, 32 ); unless( defined $res ) { $self->_work_done; $self->_msg( "Got no output from compiler for '$type'." ); return undef; } my $off = unpack "C", $res; if( $off == 0 ) { $self->_work_done; $self->_msg( "Strange output..." ); return undef; } return $off; } sub _get_alignment { my $self = shift; $self->_msg( "\nTrying to determine struct member alignment..." ); my $meth = $self->{can_run} ? "_get_alignment_run" : "_get_alignment_compile"; my $align; my $compiler = $self->_compiler; for my $type ( 'int', 'short', 'long', 'long long', 'float', 'double', 'int *' ) { my $real_type = $type_map{$compiler}{$type} || $type; if( defined( my $rv = $self->$meth( $real_type ) ) ) { !defined($align) || $rv > $align and $align = $rv; } } $self->_work_done; if( defined $align ) { $self->_msg( "Struct members are aligned to $align-byte boundaries." ); } else { $self->_msg( "Could not determine struct member alignment." ); } return $align; } sub _get_compound_alignment { my $self = shift; $self->_msg( "\nTrying to determine compound alignment..." ); my $meth = $self->{can_run} ? "_get_alignment_run" : "_get_alignment_compile"; my $s_align = $self->$meth("struct testit { char a; }"); my $u_align = $self->$meth("union testit { char a; }"); $self->_work_done; if( defined($s_align) && defined($u_align) && $s_align == $u_align ) { $self->_msg( "Compounds are aligned to $s_align-byte boundaries." ); return $s_align; } else { $self->_msg( "Could not determine compound alignment." ); return undef; } } #----------------------------------------------------------------------- # BASIC TYPE SIZES #----------------------------------------------------------------------- sub _get_basic_sizes_run { my $self = shift; my $type = shift; $self->_work_in_progress; $self->_temp( < typedef $type _t_y_p_e_; int main() { printf("sizeof=%d\\n", sizeof(_t_y_p_e_)); return 0; } ENDC my $res = $self->_build_temp; if( -e $self->_exefile ) { local $self->{fatal} = 0; $res = $self->_run_temp; } else { $self->_work_done; $self->_msg( "Got no output from compiler for '$type'." ); return undef; } if( $res->{didnotrun} or $res->{status} ) { $self->_work_done; $self->_msg( "It seems I cannot run your compiler's executables." ); return undef; } for my $line ( @{$res->{stdout}} ) { $line =~ /^sizeof=(\d+)/ and return $1; } $self->_work_done; $self->_msg( "Strange output..." ); return undef; } sub _get_basic_sizes_compile { my $self = shift; my $type = shift; $self->_work_in_progress; my $res = $self->_test_type( $type, "0", 16 ); unless( defined $res ) { $self->_work_done; $self->_msg( "Got no output from compiler for '$type'." ); return undef; } return length $res; } sub _get_basic_sizes { my $self = shift; $self->_msg( "\nTrying to determine basic type sizes..." ); my $meth = $self->{can_run} ? "_get_basic_sizes_run" : "_get_basic_sizes_compile"; my %sizes; my $compiler = $self->_compiler; for my $type ( 'int', 'char', 'short', 'long', 'long long', 'float', 'double', 'long double', 'int *' ) { my $real_type = $type_map{$compiler}{$type} || $type; my $rv = $self->$meth( $real_type ) or next; $sizes{$type =~ y/*// ? 'pointer' : $type} = $rv; } my %enum; for my $type ( "enum pbyte { PB1 = 0, PB2 = 255 }", "enum nbyte { NB1 = -128, NB2 = 127 }", "enum pword { PW1 = 0, PW2 = 65535 }", "enum nword { NW1 = -32768, NW2 = 32767 }", "enum plong { PL1 = 0, PL2 = 65536 }", "enum nlong { NL1 = -32768, NL2 = 32768 }", ) { my $rv = $self->$meth( $type ) or next; my($name) = $type =~ /^enum\s+(\w+)/; $enum{$name} = $rv; } $self->_work_done; if( keys %enum == 6 ) { if( $enum{pbyte} == 2 && $enum{nbyte} == 1 && $enum{pword} == 4 && $enum{nword} == 2 && $enum{plong} == 4 && $enum{nlong} == 4 ) { $sizes{enum} = -1; } elsif( $enum{pbyte} == 1 && $enum{nbyte} == 1 && $enum{pword} == 2 && $enum{nword} == 2 && $enum{plong} == 4 && $enum{nlong} == 4 ) { $sizes{enum} = 0; } elsif( $enum{pbyte} == $enum{nbyte} && $enum{pbyte} == $enum{pword} && $enum{pbyte} == $enum{nword} && $enum{pbyte} == $enum{plong} && $enum{pbyte} == $enum{nlong} ) { $sizes{enum} = $enum{pbyte}; } else { $self->_msg( "Hmm, your compiler has strange enums." ); } } $self->_msg( "Got size information for the following types:" ); $self->_wrapped_list( sort @{[map {y/ /_/; $_} keys %sizes]} ); $self->_debug(sub { Data::Dumper->Dump( [\%sizes], ['*sizes'] ) }); \%sizes; } #----------------------------------------------------------------------- # UNSIGNED CHARACTERS #----------------------------------------------------------------------- sub _get_unsigned_chars_run { my $self = shift; $self->_temp( < int main() { char c; int i; c = -1; i = c; printf("result=%d\\n", i); } ENDC my $res = $self->_build_temp; if( $res->{status} == 0 and -e $self->_exefile ) { { local $self->{fatal} = 0; $res = $self->_run_temp; } if( $res->{didnotrun} ) { $self->_msg( "It seems I cannot run your compiler executables." ); return undef; } for my $line ( @{$res->{stdout}} ) { $line =~ /^result=(-?\d+)/ and return $1; } } else { $self->_msg( "Could not build the test program." ); $self->_out( '| ', @{$res->{stderr}} ); } return undef; } sub _get_unsigned_chars_compile { my $self = shift; my $res = $self->_test_type( "int", "(int)((char)-1)", 8 ); if( defined $res ) { $res =~ /^\xFF+$/ and return -1; $res =~ /^\x00+\xFF$/ || $res =~ /^\xFF\x00+$/ and return 255; } $self->_msg( "Could not determine character signedness." ); return undef; } sub _get_unsigned_chars { my $self = shift; $self->_msg( "\nTrying to find out if your chars are unsigned..." ); my $meth = $self->{can_run} ? "_get_unsigned_chars_run" : "_get_unsigned_chars_compile"; my $result = $self->$meth(); if( defined $result ) { if( $result == -1 ) { $self->_msg( "Your chars are signed." ); return 0; } elsif( $result == 255 ) { $self->_msg( "Your chars are unsigned." ); return 1; } elsif( $result >= 0 ) { $self->_msg( "Your chars seem to be unsigned." ); return 1; } else { $self->_msg( "Your chars seem to be signed." ); return 0; } } $self->_msg( "No idea." ); return undef; } #----------------------------------------------------------------------- # BYTEORDER #----------------------------------------------------------------------- sub _get_byteorder_run { my $self = shift; $self->_temp( < typedef unsigned long UVAL; typedef union { UVAL multi; char byte[sizeof(UVAL)]; } order; int main() { order test; int i; if( sizeof(UVAL) > 4 ) test.multi = (((UVAL)0x08070605) << 32) | ((UVAL)0x04030201); else test.multi = (UVAL)0x04030201; printf("order="); for( i=0; i_build_temp; if( $res->{status} == 0 and -e $self->_exefile ) { { local $self->{fatal} = 0; $res = $self->_run_temp; } if( $res->{didnotrun} ) { $self->_msg( "It seems I cannot run your compiler executables." ); return ''; } my $order; for my $line ( @{$res->{stdout}} ) { $line =~ /^order=(\d+)/ and $order = $1; } if( defined $order ) { my %bo = ( '87654321' => 'BigEndian', '4321' => 'BigEndian', '21' => 'BigEndian', '12345678' => 'LittleEndian', '1234' => 'LittleEndian', '12' => 'LittleEndian', ); if( exists $bo{$order} ) { $self->_msg( "The byte order appears to be $bo{$order}." ); return $bo{$order}; } $self->_msg( "Your compiler seems to have a strange byte order ($order)." ); } else { $self->_msg( "The test program delivered some strange output." ); $self->_out( '| ', @{$res->{stdout}} ); } } else { $self->_msg( "Could not build the test program." ); $self->_out( '| ', @{$res->{stderr}} ); } return ''; } sub _get_byteorder_compile { my $self = shift; my $res = $self->_test_type( "unsigned long", < 4 ? (((unsigned long)0x08070605) << 32) | ((unsigned long)0x04030201) : (unsigned long)0x04030201 ENDINIT unless( defined $res ) { $self->_msg( "Could not determine byte order." ); return ''; } my %bo = ( "\x08\x07\x06\x05\x04\x03\x02\x01" => 'BigEndian', "\x04\x03\x02\x01" => 'BigEndian', "\x02\x01" => 'BigEndian', "\x01\x02\x03\x04\x05\x06\x07\x08" => 'LittleEndian', "\x01\x02\x03\x04" => 'LittleEndian', "\x01\x02" => 'LittleEndian', ); if( exists $bo{$res} ) { $self->_msg( "The byte order appears to be $bo{$res}." ); return $bo{$res}; } my $str = join '', map { sprintf "%02X", $_ } unpack "C*", $res; $self->_msg( "Your compiler seems to have a strange byte order (0x$str)." ); return ''; } sub _get_byteorder { my $self = shift; $self->_msg( "\nTrying to determine byte order..." ); my $meth = $self->{can_run} ? "_get_byteorder_run" : "_get_byteorder_compile"; return $self->$meth(); } #----------------------------------------------------------------------- # C++ COMMENTS #----------------------------------------------------------------------- sub _get_cpp_comments { my $self = shift; $self->_msg( "\nTrying to find out if your compiler understands C++ comments..." ); $self->_temp( <_compile_or_build_temp; if( $res->{status} ) { $self->_msg( "No, it doesn't." ); return 0; } else { $self->_msg( "Yes, it does." ); return 1; } } #----------------------------------------------------------------------- # KEYWORD MAP #----------------------------------------------------------------------- sub _get_keyword_map { my $self = shift; $self->_msg( "\nTrying to find out which special keywords your compiler knows..." ); my @remap = qw( asm break case char continue default do else for goto if int return sizeof struct switch typedef union while auto const double enum extern float long register short signed static unsigned void volatile inline restrict ); my @keywords = map { ("_${_}", "__${_}", "__${_}__") } sort @remap, qw( bounded unbounded imag real complex extension ); my @known; my $count = 0; for my $key ( sort @keywords ) { $self->_work_in_progress( sprintf "%d/%d keywords", scalar @known, $count++ ); $self->_temp( <_compile_or_build_temp; $res->{status} and push @known, $key; } $self->_work_done; if( @known ) { $self->_msg( "Your compiler recognizes the following special keywords:" ); $self->_wrapped_list( sort @known ); } else { $self->_msg( "None." ); } $self->_debug(sub { Data::Dumper->Dump( [\@known], ['*known'] ) }); my $remap = join '|', @remap; return { map { ( $_ => (/^_*($remap)_*$/ ? $1 : undef) ) } @known } } #----------------------------------------------------------------------- # INVALID KEYWORDS #----------------------------------------------------------------------- sub _get_invalid_keywords { my $self = shift; $self->_msg( "\nTrying to find out which keywords your compiler doesn't know..." ); my @keywords = qw( inline restrict auto const double enum extern float long register short signed static unsigned void volatile asm ); my @invalid; my $count = 0; for my $key ( sort @keywords ) { $self->_work_in_progress( sprintf "%d/%d keywords", scalar @invalid, $count++ ); $self->_temp( <_compile_or_build_temp; $res->{status} == 0 and push @invalid, $key; } $self->_work_done; if( @invalid ) { $self->_msg( "Your compiler doesn't recognize the following keywords:" ); $self->_wrapped_list( sort @invalid ); } else { $self->_msg( "Your compiler recognizes all keywords." ); } $self->_debug(sub { Data::Dumper->Dump( [\@invalid], ['*invalid'] ) }); \@invalid; } #----------------------------------------------------------------------- # PREDEFINED ASSERTIONS #----------------------------------------------------------------------- sub _get_preasserted { my $self = shift; my $assert = shift; $self->_msg( "\nChecking for assertions (this may take a while)..." ); my $code; for my $pred ( keys %$assert ) { for my $ans ( @{$assert->{$pred}} ) { $code .= <_temp( $code ); my $res = $self->_preprocess_temp; if( $res->{status} ) { $self->_msg( "Your compiler doesn't seem to like assertions." ); return {}; } my %results; for my $line ($self->_read_pp($res)) { chomp $line; next if $line =~ /^\s*#/; next if $line =~ /^\s*$/; $line =~ /"\s*([^"]+?)\s*"\s*;/ or next; $results{$1} = 1; } if( my $count = keys %results ) { my $what = $count > 1 ? "these $count assertions" : "this assertion"; $self->_msg( "Your compiler makes $what:" ); $self->_wrapped_list( sort keys %results ); } else { $self->_msg( "Your compiler doesn't seem to assert anything." ); } \%results; } #----------------------------------------------------------------------- # PREDEFINED MACROS #----------------------------------------------------------------------- sub _get_predefined { my $self = shift; my $names = shift; my $pos = 0; my @stdnames = qw( __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ _Pragma ); my @special = qw( __has_extension __has_include_next __has_feature __has_attribute ); $self->_msg( "\nChecking for predefined macros (this may take a while)..." ); my %defs; for my $name ( &_preset_names ) { my @words = map { ("$_", "_$_", "__$_", "__${_}__" ) } $name, uc($name), lc($name); @defs{@words} = (1)x@words; } my %results = (); my $count = 0; my $max = @$names; while(1) { delete @defs{@stdnames}; delete @defs{@special}; $self->_work_in_progress( "($count) $pos/$max" ); my $code; for my $def ( keys %defs ) { $code .= <_temp( $code ); my $res = $self->_preprocess_temp; if( $res->{status} ) { $self->_work_done; $self->_msg( "Your compiler exited unexpectedly:" ); $self->_out( '| ', @{$res->{stderr}} ); return {}; } my $out = join '', $self->_read_pp($res); while( $out =~ /"\s*([^\s"]+)\s*"\s*;\s*\(\s*([^\r\n]*?)\s*\)\s*;/g ) { $results{$1} = $2; } $count = keys %results; %defs = (); last if $pos >= @$names; my $last = $pos+999; $last = $#$names if $last > $#$names; @defs{@{$names}[$pos..$last]} = (1)x($last-$pos+1); $pos = $last+1; } delete @results{@stdnames}; $self->_work_done; if( my $count = keys %results ) { my $what = $count > 1 ? "these $count symbols" : "this symbol"; $self->_msg( "Your compiler defines $what:" ); $self->_wrapped_list( sort keys %results ); } else { $self->_msg( "Your compiler doesn't seem to define anything." ); } $self->_debug(sub { Data::Dumper->Dump( [\%results], ['*results'] ) }); \%results; } #----------------------------------------------------------------------- # INCLUDE PATH #----------------------------------------------------------------------- sub _incpath_main { my($self, $quiet, @headers) = @_; my %resolve; for my $hdr ( @headers ) { $self->_work_in_progress; $self->_temp( < TEMP my $res = $self->_preprocess_temp; if( $res->{status} ) { $quiet or $self->_msg("Compiler choked on including '$hdr'. Maybe a missing ANSI header..."); next; } for my $line ($self->_read_pp($res)) { if( $line =~ $self->{ppline} ) { my $file = $2; if( $file =~ /^(.*)\Q$hdr\E$/ ) { my $inc = $1; $inc =~ y{\\}{/}s; $resolve{$hdr} = [$inc]; last; } } } } %resolve; } sub _get_files { my($dir, $rex) = @_; local *DIR; opendir DIR, $dir or return (); my @files = readdir DIR; closedir DIR; if( defined $rex ) { return grep $_ =~ $rex, @files; } @files; } sub _run_incpath { my $self = shift; my(@inc,@newhdr,%resolve); my @headers = @{$self->{headers}}; $self->_msg( "\nTrying to determine include path..." ); %resolve = $self->_incpath_main(0, @headers); @inc = _unique( map $_->[0], values %resolve ); if( @inc > 1 ) { my @files; for my $path ( @inc ) { push @files, grep !-d $path.$_, _get_files( $path ); } for my $hdr ( _unique( @files ) ) { my @f = grep { -e "$_$hdr" } @inc; @f > 1 && push @newhdr, $hdr; } push @headers, @newhdr; %resolve = ( %resolve, $self->_incpath_main(1, @newhdr) ); for my $hdr ( @headers ) { for my $path ( @inc ) { next unless exists $resolve{$hdr}; next if $path eq $resolve{$hdr}[0]; -e $path.$hdr and push @{$resolve{$hdr}}, $path; } } $self->_debug(sub { Data::Dumper->Dump( [\%resolve], ['*resolve'] ) }); my($i,$j); my @h = grep { @{$resolve{$_}} > 1 } keys %resolve; for( $i = 0; $i < @inc; ++$i ) { for( $j = $i+1; $j < @inc; ++$j ) { for my $h ( @h ) { my($a,$b) = @inc[$i,$j]; my @r = @{$resolve{$h}}; $b eq $r[0] or next; for( my $k = 1; $k < @r; ++$k ) { $r[$k] eq $a and @inc[$i,$j] = @inc[$j,$i]; } } } } } $self->_work_done; $self->_debug(sub { Data::Dumper->Dump( [\@inc], ['*inc'] ) }); $self->_msg( "The include path appears to be:" ); $self->_msg( " ($_) $inc[$_-1]" ) for 1 .. @inc; \@inc; } #----------------------------------------------------------------------- # GATHER MACRO / ASSERTION NAMES #----------------------------------------------------------------------- sub _names { my $self = shift; my $inc_path = shift; my @ppkey = qw( define undef include line error pragma if ifdef ifndef defined elif else endif ); my %files; my %names; my %asserts; $self->_msg( "\nSearching macro names and assertions..." ); my @files = map { my $p = $_; map { $p.$_ } _get_files( $p, qr/\.[hH]$/ ) } @$inc_path; my $ff = 0; while( @files ) { my $file = shift @files; -e $file or next; exists $files{$file} and next; $files{$file} = 1; $ff = keys %files; $self->_work_in_progress( "$ff files found" ); my $fh = new IO::File $file; next unless defined $fh; while( <$fh> ) { if( /^\s*#\s*include\s*[<"]([^>"]+)[>"]/ ) { for( '', @$inc_path ) { my $f = $_.$1; exists $files{$f} or push @files, $f; } } } } $self->_debug(sub { Data::Dumper->Dump([\%files], ['*files']) }); $ff = keys %files; my $fs = 0; for my $name ( keys %files ) { my $count = keys %names; $fs++; $self->_work_in_progress( "($count) $fs/$ff files scanned" ); -e $name or next; my $fh = new IO::File $name; next unless defined $fh; my $file = do { local $/; <$fh> }; $file =~ s{\\\s*$/}{}g; while( $file =~ /\b([A-Za-z_]\w*)\b/g ) { $names{$1} ||= 1; } for my $line ( $file =~ /^\s*#(?:el)?if(.*)/gm ) { while( $line =~ /#\s*(\w+)\s*\(\s*(\w+)\s*\)/g ) { $asserts{$1}{$2} ||= 1; } } } delete @names{@ppkey}; my @names = keys %names; my $assertions = 0; for( keys %asserts ) { $assertions += keys %{$asserts{$_}}; } # merge assertions with fixed assertions from _assert() my $asserts = _assert(); for my $q ( keys %$asserts ) { for my $a ( @{$asserts->{$q}} ) { $asserts{$q}{$a} ||= 1; } } for( keys %asserts ) { $asserts{$_} = [sort keys %{$asserts{$_}}]; } $self->_work_done; $self->{debug} and $self->_debug(sub { Data::Dumper->Dump([\@names, \%asserts], [qw(*names *asserts)]) }); $assertions = $assertions ? " and $assertions potential assertions" : ''; $self->_msg( sprintf "Found %d potential macro names$assertions.", scalar @names ); (\@names, \%asserts); } ######################################################################## # # CONFIGURE # ######################################################################## sub _configure { my $self = shift; ### Purpose of _configure: ### Populate these options unless set by the user and ### check if they do what they're supposed to. ### ### --cc the C compiler ### --preprocess how to get preprocessor output from the compiler ### --compile-obj how to compile C file to object file ### --compile-exe how to compile C file to executable file ### ### TODO: detect a.out. (Probably glob <*> before and after running the compiler?) ### Save user values... my $user = {}; for my $c (qw( cc preprocess compile-obj compile-exe )) { $user->{$c} = $self->{$c} if exists $self->{$c}; } ### Let's go! $self->_cleanup_basename; $self->_msg("Checking if your compiler works..."); ### First, try to find a working CC that we can run... my @CC = exists $user->{cc} ? ($user->{cc}) : (qw( cc gcc icc cl )); my $res; my $didnotrun; my $fullcc; do { my $ccname = shift @CC; $fullcc = which($ccname); $fullcc = $ccname if !defined $fullcc && -x $ccname; $didnotrun = 1; if (defined $fullcc) { $self->{cc} = $fullcc; $res = $self->_runprog($self->{cc}); $didnotrun = $res->{didnotrun}; } if ($didnotrun and exists $user->{cc}) { if (defined $fullcc) { $self->_msg("It seems your compiler '$self->{cc}' did not run."); } else { $self->_msg("I could not find your compiler '$self->{cc}'."); } $self->_quit; } } while ($didnotrun && @CC); if ($didnotrun) { $self->_msg("None of the compilers I know seemed to run."); $self->_msg("Try specifying a compiler using the --cc option."); $self->_quit; }; $self->_msg("Found a working compiler at $self->{cc}\n"); ### Ok, so we have a compiler. Let's see how to get preprocessor output... my $line = 'char*lotr="Very useful, no doubt, that was to Saruman; yet it seems that he was not content.";'; $self->_temp(<{preprocess} ? ($user->{preprocess}) : ('-E %c |', '-c -E %c |', '-sp %c'); my @PPE = exists $user->{'pp-ext'} ? ($user->{'pp-ext'}) : ('.i', '.p'); my($have_source, $have_ppline, $pp_ext); do { $have_source = 0; $have_ppline = 0; $self->{preprocess} = shift @PP; $res = $self->_preprocess_temp; for my $ext (@PPE) { $self->{'pp-ext'} = $ext; if (-f $self->_ppfile) { $pp_ext = $ext; last; } } my @ppout = $self->_read_pp($res); for (@ppout) { /\Q$line/ and $have_source = 1; $_ =~ $self->{ppline} && $2 =~ /\Q$self->{basename}/ and $have_ppline = 1; } } while (!$have_source && @PP); $self->{'pp-ext'} = $pp_ext || ''; $self->{can_preprocess} = $have_source; $self->{can_read_ppout} = $have_ppline; if (!$self->{can_preprocess}) { $self->_msg("I couldn't figure out how to get usable preprocessor output from the compiler."); } else { $self->_msg("I can get preprocessor output using rule [$self->{preprocess}]."); $self->_msg("But I don't understand the preprocessor output.") unless $self->{can_read_ppout}; } ### Compile/build executable files $self->{can_compile} = 0; $self->{can_build} = 0; $self->{can_run} = 0; $self->_cleanup_basename; $self->_temp( <{'compile-obj'} ? ($user->{'compile-obj'}) : ('-c -o %o %c', '%c'); my @OBJ = exists $user->{'obj-ext'} ? ($user->{'obj-ext'}) : @{_OS('obj-ext')}; my $obj_ext; do { $self->{'compile-obj'} = shift @CCO; undef $obj_ext; for my $ext (@OBJ) { $self->{'obj-ext'} = $ext; $res = $self->_compile_temp; if (-f $self->_objfile) { $obj_ext = $ext; last; } } $self->{can_compile} = $res->{didnotrun} == 0 && $res->{status} == 0 && defined $obj_ext; } while (!$self->{can_compile} && @CCO); $self->{'obj-ext'} = $obj_ext || ''; if ($self->{can_compile}) { $self->_msg("I can compile object files using rule [$self->{'compile-obj'}]."); } else { $self->_msg("I cannot compile object files."); } if ($self->{run}) { $self->_cleanup_basename; $self->_temp(< int main() { printf("Hello World\\n"); return 0; } TEMP my @CCE = exists $user->{'compile-exe'} ? ($user->{'compile-exe'}) : ('-o %e %c'); my @EXE = exists $user->{'exe-ext'} ? ($user->{'exe-ext'}) : @{_OS('exe-ext')}; my $exe_ext; do { $self->{'compile-exe'} = shift @CCE; undef $exe_ext; for my $ext (@EXE) { $self->{'exe-ext'} = $ext; $res = $self->_build_temp; if (-f $self->_exefile) { $exe_ext = $ext; last; } } $self->{can_build} = $res->{didnotrun} == 0 && $res->{status} == 0 && defined $exe_ext; } while (!$self->{can_build} && @CCE); $self->{'exe-ext'} = $exe_ext || ''; if ($self->{can_build}) { if ($self->{can_compile}) { $self->_msg("I can also build executable files using rule [$self->{'compile-exe'}]."); } else { $self->_msg("But it seems I can build executable files using rule [$self->{'compile-exe'}]."); } $res = $self->_run_temp; $self->{can_run} = $res->{didnotrun} == 0 && $res->{status} == 0 && grep /Hello World/, @{$res->{stdout}}; if ($self->{can_run}) { $self->_msg("And I can run the executables. Great!"); } else { $self->_msg("But I cannot run the executables. That should be fine, too."); } } else { if ($self->{can_compile}) { $self->_msg("But I cannot build executable files. No big deal."); } else { $self->_msg("And I cannot build executable files. Sigh."); } } } else { $self->_msg("No need to check if I can build executables."); } $self->_cleanup_basename; $self->_debug(sub { Data::Dumper->Dump( [$self], [qw(self)] ) }); unless ($self->{can_preprocess} || $self->{can_compile} || $self->{can_run}) { my @opt = map { "--$_" } grep { !exists $user->{$_} } qw( preprocess compile-obj compile-exe ); if (@opt) { my $last = pop @opt; my $opt = @opt ? join(', ', @opt) . " and $last options" : "$last option"; $self->_msg_wrapped("\nTry using the $opt to specify compiler behaviour."); } $self->_quit; } } ######################################################################## # # UTILITY ROUTINES # ######################################################################## sub _OS { my $prop = shift; my %os = ( (map { ( $_ => { 'obj-ext' => ['.obj', '.o'], 'exe-ext' => ['.exe', ''], 'file-sep' => '\\', } ) } qw( MSWin32 dos os2 ) ), ); my %def = ( 'obj-ext' => ['.o', '.obj'], 'exe-ext' => ['', '.exe'], 'file-sep' => '/', ); return exists $os{$^O} ? $os{$^O}{$prop} : $def{$prop}; } sub _cleanup_basename { my $self = shift; my %seen; my @basefiles = grep !$seen{$_}++, glob "$self->{basename}*"; push @basefiles, grep !$seen{$_}++, glob "$self->{basename}.*"; $self->_debug("cleaning up: @basefiles\n"); unlink @basefiles; } sub _unique { my %unique; grep !$unique{$_}++, @_; } sub _cfile { my $self = shift; return $self->{basename} . ($self->{'c-ext'} || ''); } sub _ppfile { my $self = shift; return $self->{basename} . ($self->{'pp-ext'} || ''); } sub _objfile { my $self = shift; return $self->{basename} . ($self->{'obj-ext'} || ''); } sub _exefile { my $self = shift; return $self->{basename} . ($self->{'exe-ext'} || ''); } sub _read_pp { my($self, $res) = @_; if ($self->{preprocess} =~ /\|$/) { return @{$res->{stdout}}; } my $f = new IO::File $self->_ppfile or return; return <$f>; } sub _temp { my $self = shift; my $temp = $self->_cfile; $self->_debug( "creating temporary file '$temp'\n" ); if (-e $temp) { unlink $temp or croak "Could not remove temporary file '$temp': $!\n"; } my $f = new IO::File ">$temp" or croak "Could not open temporary file '$temp': $!\n"; $f->print(@_); } sub _quit { my $self = shift; $self->_msg("\nSorry, cannot continue."); $self->cleanup; exit(1); } sub _run_temp { my $self = shift; $self->_runprog( "." . _OS('file-sep') . $self->_exefile ); } sub _interpolate { my($self, $template) = @_; my %replace = ( c => $self->_cfile, o => $self->_objfile, e => $self->_exefile, i => $self->_ppfile, ); my $match = join '|', keys %replace; $template =~ s/\s+\|$//; $template =~ s/%($match)/$replace{$1}/g; return shellwords($template); } sub _compile_or_build_temp { my $self = shift; my $meth = $self->{can_compile} ? '_compile_temp' : '_build_temp'; $self->$meth(); } sub _build_temp { my $self = shift; unlink $self->_exefile if -f $self->_exefile; # make sure exe is removed $self->_runcc($self->_interpolate($self->{'compile-exe'})); } sub _compile_temp { my $self = shift; unlink $self->_objfile if -f $self->_objfile; # make sure obj is removed $self->_runcc($self->_interpolate($self->{'compile-obj'})); } sub _preprocess_temp { my $self = shift; $self->_runcc($self->_interpolate($self->{'preprocess'})); } sub _runcc { my $self = shift; $self->_runprog($self->{cc}, @{$self->{ccflags}}, @_); } sub _runprog { my $self = shift; my $prog = shift; my @args = @_; eval { alarm 10; alarm 0; }; my $has_alarm = $@ eq ''; my $tmp = '_t_m_p_'; $self->_debug( "running '$prog @args'\n" ); eval { local $SIG{ALRM}; if( $has_alarm ) { $SIG{ALRM} = sub { die "TIMEOUT\n" }; alarm $self->{timeout}; } my $run = $prog =~ m/\s/ ? qq("$prog") : $prog; system "$run @args >$tmp.out 2>$tmp.err"; $has_alarm and alarm 0; }; my %rval = ( status => $? >> 8, ); for my $p (qw(out err)) { my $file = "$tmp.$p"; my @lines; if (-f $file) { { my $fh = IO::File->new($file); if (defined $fh) { @lines = <$fh>; } } unlink $file; } $rval{"std$p"} = \@lines; } $rval{didnotrun} = 0; if( @{$rval{stdout}} && $rval{stdout}[0] =~ /^Can't exec "\Q$prog\E":/ ) { $rval{didnotrun} = 1; } if( $^O eq 'MSWin32' && @{$rval{stdout}} == 0 && @{$rval{stderr}} == 0 && $rval{status} == 1 ) { $rval{didnotrun} = 1; } if( $rval{didnotrun} and $self->{fatal} ) { croak "could not run '$prog @args'\n"; } $? & 128 and $rval{core} = 1; $? & 127 and $rval{signal} = $? & 127; $self->{debug} and $self->_debug(sub { Data::Dumper->Dump( [\%rval], ['*rval'] ) }); if( $self->{__int__} ) { $self->_msg( "\n\nInterrupted..." ); $self->_quit; } \%rval; } sub _work_in_progress { my $self = shift; $self->{quiet} and return; $self->{status} or return; my @prog = qw( ---------- >--------- *>-------- +*>------- -+*>------ --+*>----- ---+*>---- ----+*>--- -----+*>-- ------+*>- -------+*> --------+* ---------+ ---------- ---------< --------<* -------<*+ ------<*+- -----<*+-- ----<*+--- ---<*+---- --<*+----- -<*+------ <*+------- *+-------- +--------- ); my $index = 0; my @t = times; my $t = $t[0]+$t[1]+$t[2]+$t[3]; if( exists $self->{__progress__} ) { $t - $self->{__progress__} < 0.1 and return; $index = ++$self->{__prog_index__} % @prog; } print STDERR "\r", $prog[$index]; if( @_ ) { my $str = ' ' . join( '', @_ ); $str .= ' 'x(40-length($str)); print STDERR $str; } if( $self->{__int__} ) { $self->_msg( "\n\nInterrupted..." ); $self->_quit; } $self->{__progress__} = $t; } sub _work_done { my $self = shift; $self->{quiet} and return; $self->{status} or return; delete $self->{__progress__}; delete $self->{__prog_index__}; print STDERR "\r", ' 'x50, "\r"; } sub _msg { my $self = shift; $self->{quiet} and return; if( $self->{debug} ) { my (undef,undef,$line,$sub) = caller 1; print STDERR "($sub:$line): "; } print STDERR @_, "\n"; } sub _msg_wrapped { my $self = shift; $self->{quiet} and return; my $string = ''; if( $self->{debug} ) { my (undef,undef,$line,$sub) = caller 1; $string .= "($sub:$line): "; } $string .= join '', @_, "\n"; print STDERR wrap('', '', $string); } sub _wrapped_list { my $self = shift; $self->{quiet} and return; my $string = "[@_]\n"; print STDERR wrap( ' ', ' ', $string ); } sub _out { my $self = shift; $self->{quiet} and return; my $pre = shift; my @args = @_; for( @args ) { s/^/$pre/gms; /[\r\n]+$/ or s/$/\n/; } print STDERR @args; } sub _debug { my $self = shift; $self->{debug} or return; my @args = @_; my (undef,undef,$line,$sub) = caller 1; for (@args) { $_ = $_->() if ref $_ eq 'CODE'; s/^/DEBUG | /gms; } print STDERR "DEBUG @ $sub:$line\n", @args; } sub which { my $command = shift; my(@PATH, @PATHEXT, $cfg); my @config = ( { os => 'MSWin32|dos|os2', path_sep => ';' , file_sep => '\\', var => 'PATH' }, { os => 'MacOS' , path_sep => '\,', file_sep => ':' , var => 'Commands' }, { os => '.*' , path_sep => ':' , file_sep => '/' , var => 'PATH' }, ); for( @config ) { if( $^O =~ /^(?:$_->{os})$/ ) { $cfg = $_; last; } } if( index( $command, $cfg->{file_sep} ) >= 0 ) { my $full; if( $^O eq 'MacOS' ) { -e $command and return $command; } else { -x $command and return $command; for my $ext ( @PATHEXT ) { -x "$command$ext" and return "$command$ext"; } } } else { if( exists $ENV{$cfg->{var}} ) { my %uni; @PATH = grep !$uni{$_}++, split /$cfg->{path_sep}/, $ENV{$cfg->{var}}; } if( exists $ENV{PATHEXT} ) { my %uni; @PATHEXT = grep !$uni{$_}++, split /$cfg->{path_sep}/, $ENV{PATHEXT}; } for my $dir ( @PATH ) { my $full; if( $^O eq 'MacOS' ) { $full = "$dir$command"; -e $full and return $full; } else { $full = "$dir$cfg->{file_sep}$command"; -x $full and return $full; for my $ext ( @PATHEXT ) { -x "$full$ext" and return "$full$ext"; } } } } return undef; } __END__ =head1 NAME ccconfig - Get Convert::Binary::C configuration for a compiler =head1 SYNOPSIS ccconfig I [-- compiler-options] I: -c --cc compiler compiler executable to test default: auto-determined -o --output-file file output filename default: output to stdout -f --output-format format output format default: dumper --basename name basename of the temporary test files default: _t_e_s_t -I --inc-path path manually set compiler include path --preprocess rule compiler rule for preprocessing --compile-obj rule compiler rule for compiling objects --compile-exe rule compiler rule for compiling executables --c-ext ext extension of C source files --pp-ext ext extension of preprocessor output files --obj-ext ext extension of object files --exe-ext ext extension of executable files --nodelete don't delete temporary files --norun don't try to run executables --quiet don't display anything --nostatus don't display status indicator --version print version number --debug debug mode Placeholders allowed in compiler rules: %c C source file %o object file %e executable file %i preprocessor output file | result is written to stdout (only at end of rule) =head1 DESCRIPTION C will try to determine a usable configuration for Convert::Binary::C from testing a compiler executable. It is not necessary that the binaries generated by the compiler can be executed, so C can also be used for cross-compilers. This tool is still experimental, and you should neither rely on its output without checking, nor expect it to work in your environment. =head1 OPTIONS =head2 C<--cc> compiler This option allows you to explicitly specify a compiler executable. This is especially useful if you don't want to use your system compiler. If this options is not given, C tries to guess a compiler. =head2 C<--output-file> file Write Convert::Binary::C configuration to the specified file. The default is to write the configuration to C. =head2 C<--output-format> format Specify the output format of the Convert::Binary::C configuration. The following formats are currently supported: dumper Output a %config hash using Data::Dumper require Output in a format suitable for require The default is C. =head2 C<--basename> name Allows you to change the base name of the temporary test files. This is used along with the various C<-ext> options to build the filenames of C source files, preprocessor output files, object files and executables. =head2 C<--inc-path> path This option allows you to manually set the include path of the compiler. This is useful if C cannot determine the include path automatically, most probably because it cannot parse the preprocessor output. This option can be specified more than once. =head2 C<--preprocess> rule Using this option, you can specify a I that C uses to run the compiler to get preprocessor output. Most compilers write the preprocessor output to standard output when given the C<-E> option, i.e. cc -E foo.c will preprocess F to standard output. The corresponding rule for C would be: ccconfig --preprocess='-E %c |' The <%c> will be replaced with the C source filename, and the pipe symbol signals that the result will be written to standard output. The following placeholders can be used in C rules: %c C source file %o object file %e executable file %i preprocessor output file Usually, C tries to figure out the correct rules on its own. =head2 C<--compile-obj> rule Like C<--preprocess>, this option allows you to define a rule for how to compile an object file. For most compilers, this rule will be something like ccconfig --compile-obj='-c -o %o %c' =head2 C<--compile-exe> rule Like C<--preprocess>, this option allows you to define a rule for how to compile an executable file. For most compilers, this rule will be something like ccconfig --compile-exe='-o %e %c' Note that it is sufficient to specify either C<--compile-obj> or C<--compile-exe>. So if your compiler can only create object files, that's just fine. =head2 C<--c-ext> This option is used along with C<--basename> to build the name of a C source file. This is usually set to C<.c>. =head2 C<--pp-ext> This option is used along with C<--basename> to build the name of a preprocessor output file. =head2 C<--obj-ext> This option is used along with C<--basename> to build the name of an object file. =head2 C<--exe-ext> This option is used along with C<--basename> to build the name of an executable file. =head2 C<--nodelete> Don't attempt to delete temporary files that have been created by the compiler. Normally, C will look for all files with the same basename as the temporary test file and delete them. =head2 C<--norun> You can specify this option if the executables generated by your compiler cannot be run on your machine, i.e. if you have a cross-compiler. However, C will automatically find out that it cannot run the executables. When this option is set, a different set of algorithms is used to determine a couple of configuration settings. These algorithms are all based upon placing a special signature in the object file. They are less reliable that the standard algorithms, so you shouldn't use them unless you have to. =head2 C<--quiet> Don't display anything except for the final configuration. =head2 C<--nostatus> Hide the status indicator. Recommended if you want to redirect the script output to a file: ccconfig --nostatus >config.pl 2>ccconfig.log =head2 C<--version> Writes the program name, version and path to standard output. =head2 C<--debug> Generate tons of debug output. Don't use unless you know what you're doing. =head1 EXAMPLES Normally, a simple ccconfig without arguments is enough if you want the configuration for your system compiler. While C is running, it will write lots of status information to C. When it's done, it will usually dump a Perl hash table to C which can be directly used as a configuration for Convert::Binary::C. If you want the configuration for a different compiler, or C cannot determine your system compiler automatically, use ccconfig -c gcc32 if your compiler's name is C. If you want to pass additional options to the compiler, you can do so after a double-dash on the command line: ccconfig -- -g -DDEBUGGING or ccconfig -c gcc32 -- -ansi -fshort-enums If you'd like to interface with the Perl core, you may find a suitable configuration using something like: ccconfig --cc=`perl -MConfig -e 'print $Config{cc}'` \ -- `perl -MConfig -e 'print $Config{ccflags}'` =head1 COPYRIGHT Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO See L. =cut Convert-Binary-C-0.85/bin/perltypes.PL0000755000175000001440000000514514677003452016257 0ustar mhxusersuse Config; $file = @ARGV ? shift : 'examples/perltypes.pl'; open OUT, ">$file" or die "Can't create $file: $!"; print OUT <<"!GROK!THIS!"; $Config{startperl} -w !GROK!THIS! print OUT <<'!NO!SUBS!'; ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ #=============================================================================== # # Parse perl's header files and play around with the types they define. # #=============================================================================== use Convert::Binary::C; use Data::Dumper; use File::Spec::Functions qw(rel2abs); use strict; my $base; -d "$_/include" and $base = rel2abs("$_/include") and last for qw( tests ../tests ); defined $base or die <parse_file( "$base/include.c" ) }; #----------------------- # Check for parse error. #----------------------- if( $@ ) { die "Parse error: $@"; } #---------------------------- # Dump out the configuration. #---------------------------- print Dumper( $c->configure ); #---------------------------- # Print all the enumerations. #---------------------------- my @enums = $c->enum_names; print "\nenums: @enums\n\n"; #--------------------------------------------------------------------------- # Print all structs, sorted by size; skip all structs smaller than 50 bytes. #--------------------------------------------------------------------------- print "large structs:\n\n"; my @structs = sort { $c->sizeof( $b ) <=> $c->sizeof( $a ) } grep { $c->sizeof( $_ ) >= 50 } $c->struct_names; for my $struct ( @structs ) { printf "struct %-20s => %4d bytes\n", $struct, $c->sizeof( $struct ); } print "\n"; #----------------------------------------------- # Dump the definition of the __socket_type enum #----------------------------------------------- print Data::Dumper->Dump( [$c->enum('__socket_type')], ['__socket_type'] ); !NO!SUBS! close OUT or die "Can't close $file: $!"; chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; Convert-Binary-C-0.85/bin/elf.PL0000755000175000001440000004673314677003452015006 0ustar mhxusersuse Config; $file = @ARGV ? shift : 'examples/elf.pl'; open OUT, ">$file" or die "Can't create $file: $!"; print OUT <<"!GROK!THIS!"; $Config{startperl} -w !GROK!THIS! print OUT <<'!NO!SUBS!'; ################################################################################ # # Copyright (c) 2005-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Convert::Binary::C; use Data::Dumper; use Getopt::Long; use strict; #------------------------------------------------- # Constants for accessing ELF identification data #------------------------------------------------- use constant EI_CLASS => 4; use constant EI_DATA => 5; my %opt; Getopt::Long::Configure('bundling'); unless (GetOptions(\%opt, qw( list|l info|i debug section|s=s symbols ))) { eval q{ require Pod::Usage; Pod::Usage::pod2usage(2); }; print "Cannot show help, please consider installing Pod::Usage.\n"; exit; } unless (@ARGV) { print "No input file (try '$0 -h' for usage).\n"; exit; } #--------------------------------------------------- # Compiler Configuration (generated using ccconfig) #--------------------------------------------------- my %config = ( Alignment => 4, CharSize => 1, CompoundAlignment => 1, IntSize => 4, LongLongSize => 8, LongSize => 4, ShortSize => 2, UnsignedChars => 0 ); #----------- # ELF Types #----------- my @elftype = qw( ET_NONE ET_REL ET_EXEC ET_DYN ET_CORE ); #------------------- # ELF Section Types #------------------- my @sectype = qw( SHT_NULL SHT_PROGBITS SHT_SYMTAB SHT_STRTAB SHT_RELA SHT_HASH SHT_DYNAMIC SHT_NOTE SHT_NOBITS SHT_REL SHT_SHLIB SHT_DYNSYM ); #------------------- # ELF Segment Types #------------------- my @segtype = qw( PT_NULL PT_LOAD PT_DYNAMIC PT_INTERP PT_NOTE PT_SHLIB PT_PHDR ); #------------------- # ELF Machine Types #------------------- my %machine = ( 0 => 'EM_NONE (No machine)', 1 => 'EM_M32 (AT&T WE 32100)', 2 => 'EM_SPARC (SUN SPARC)', 3 => 'EM_386 (Intel 80386)', 4 => 'EM_68K (Motorola m68k family)', 5 => 'EM_88K (Motorola m88k family)', 7 => 'EM_860 (Intel 80860)', 8 => 'EM_MIPS (MIPS R3000 big-endian)', 9 => 'EM_S370 (IBM System/370)', 10 => 'EM_MIPS_RS3_LE (MIPS R3000 little-endian)', 15 => 'EM_PARISC (HPPA)', 17 => 'EM_VPP500 (Fujitsu VPP500)', 18 => 'EM_SPARC32PLUS (Sun\'s "v8plus")', 19 => 'EM_960 (Intel 80960)', 20 => 'EM_PPC (PowerPC)', 21 => 'EM_PPC64 (PowerPC 64-bit)', 22 => 'EM_S390 (IBM S390)', 36 => 'EM_V800 (NEC V800 series)', 37 => 'EM_FR20 (Fujitsu FR20)', 38 => 'EM_RH32 (TRW RH-32)', 39 => 'EM_RCE (Motorola RCE)', 40 => 'EM_ARM (ARM)', 41 => 'EM_FAKE_ALPHA (Digital Alpha)', 42 => 'EM_SH (Hitachi SH)', 43 => 'EM_SPARCV9 (SPARC v9 64-bit)', 44 => 'EM_TRICORE (Siemens Tricore)', 45 => 'EM_ARC (Argonaut RISC Core)', 46 => 'EM_H8_300 (Hitachi H8/300)', 47 => 'EM_H8_300H (Hitachi H8/300H)', 48 => 'EM_H8S (Hitachi H8S)', 49 => 'EM_H8_500 (Hitachi H8/500)', 50 => 'EM_IA_64 (Intel Merced)', 51 => 'EM_MIPS_X (Stanford MIPS-X)', 52 => 'EM_COLDFIRE (Motorola Coldfire)', 53 => 'EM_68HC12 (Motorola M68HC12)', 54 => 'EM_MMA (Fujitsu MMA Multimedia Accelerator)', 55 => 'EM_PCP (Siemens PCP)', 56 => 'EM_NCPU (Sony nCPU embeeded RISC)', 57 => 'EM_NDR1 (Denso NDR1 microprocessor)', 58 => 'EM_STARCORE (Motorola Start*Core processor)', 59 => 'EM_ME16 (Toyota ME16 processor)', 60 => 'EM_ST100 (STMicroelectronic ST100 processor)', 61 => 'EM_TINYJ (Advanced Logic Corp. Tinyj emb.fam)', 62 => 'EM_X86_64 (AMD x86-64 architecture)', 63 => 'EM_PDSP (Sony DSP Processor)', 66 => 'EM_FX66 (Siemens FX66 microcontroller)', 67 => 'EM_ST9PLUS (STMicroelectronics ST9+ 8/16 mc)', 68 => 'EM_ST7 (STmicroelectronics ST7 8 bit mc)', 69 => 'EM_68HC16 (Motorola MC68HC16 microcontroller)', 70 => 'EM_68HC11 (Motorola MC68HC11 microcontroller)', 71 => 'EM_68HC08 (Motorola MC68HC08 microcontroller)', 72 => 'EM_68HC05 (Motorola MC68HC05 microcontroller)', 73 => 'EM_SVX (Silicon Graphics SVx)', 74 => 'EM_ST19 (STMicroelectronics ST19 8 bit mc)', 75 => 'EM_VAX (Digital VAX)', 76 => 'EM_CRIS (Axis Communications 32-bit embedded processor)', 77 => 'EM_JAVELIN (Infineon Technologies 32-bit embedded processor)', 78 => 'EM_FIREPATH (Element 14 64-bit DSP Processor)', 79 => 'EM_ZSP (LSI Logic 16-bit DSP Processor)', 80 => 'EM_MMIX (Donald Knuth\'s educational 64-bit processor)', 81 => 'EM_HUANY (Harvard University machine-independent object files)', 82 => 'EM_PRISM (SiTera Prism)', 83 => 'EM_AVR (Atmel AVR 8-bit microcontroller)', 84 => 'EM_FR30 (Fujitsu FR30)', 85 => 'EM_D10V (Mitsubishi D10V)', 86 => 'EM_D30V (Mitsubishi D30V)', 87 => 'EM_V850 (NEC v850)', 88 => 'EM_M32R (Mitsubishi M32R)', 89 => 'EM_MN10300 (Matsushita MN10300)', 90 => 'EM_MN10200 (Matsushita MN10200)', 91 => 'EM_PJ (picoJava)', 92 => 'EM_OPENRISC (OpenRISC 32-bit embedded processor)', 93 => 'EM_ARC_A5 (ARC Cores Tangent-A5)', 94 => 'EM_XTENSA (Tensilica Xtensa Architecture)', ); #----------------------------- # ELF Symbol Binding and Type #----------------------------- my %symbind = ( 0 => 'STB_LOCAL', 1 => 'STB_GLOBAL', 2 => 'STB_WEAK', 3 => 'STB_NUM', 10 => 'STB_LOOS', 12 => 'STB_HIOS', 13 => 'STB_LOPROC', 15 => 'STB_HIPROC', ); my %symtype = ( 0 => 'STT_NOTYPE', 1 => 'STT_OBJECT', 2 => 'STT_FUNC', 3 => 'STT_SECTION', 4 => 'STT_FILE', 5 => 'STT_COMMON', 6 => 'STT_TLS', 7 => 'STT_NUM', 10 => 'STT_LOOS', 12 => 'STT_HIOS', 13 => 'STT_LOPROC', 15 => 'STT_HIPROC', ); #-------------------------------------------------------- # Create a C::B::C object to convert ELF data structures #-------------------------------------------------------- my $ep = Convert::Binary::C->new(%config)->parse(elf_header()); #------------------------------------------- # Attach hooks to certain interesting types #------------------------------------------- my %hook = ( 'Ehdr.e_machine' => \%machine, 'Ehdr.e_type' => \@elftype, 'Shdr.sh_type' => \@sectype, 'Phdr.p_type' => \@segtype, ); for my $c (qw( Elf32 Elf64 )) { while (my($k,$v) = each %hook) { $ep->tag("$c\_$k", Hooks => { unpack => sub { my $x = shift; (ref $v eq 'HASH' ? $v->{$x} : $v->[$x]) || "Unknown ($x)" }}); } $ep->tag("$c\_Sym.st_info", Hooks => { unpack => sub { my $x = shift; my $b = $x >> 4; my $t = $x & 0xf; { sti_bind => $symbind{$b} || "Unknown ($b)", sti_type => $symtype{$t} || "Unknown ($t)", } }}); } #--------------------------------------- # Read the whole ELF file (inefficient) #--------------------------------------- my $elf = do { local($/, *FH); open FH, $ARGV[0] or die "$ARGV[0]: $!\n"; binmode FH; ; }; #--------------------------------- # Process ELF identification data #--------------------------------- my @ident = unpack "C16", substr $elf, 0, 16; #----------------------------- # Is this really an ELF file? #----------------------------- unless ($ident[0] == 0x7F && pack("C*", @ident[1..3]) eq 'ELF') { die "not an ELF file\n" } #----------------------------- # Check ELF class (32/64-Bit) #----------------------------- if ($ident[EI_CLASS] == 0) { die "invalid ELF class ($ident[EI_CLASS])\n" } if ($ident[EI_CLASS] > 2) { die "unsupported ELF class ($ident[EI_CLASS])\n" } my $class = $ident[EI_CLASS] == 1 ? 'Elf32' : 'Elf64'; #------------------------------------------- # Check Byte Order (BigEndian/LittleEndian) #------------------------------------------- if ($ident[EI_DATA] == 0) { die "invalid data encoding ($ident[EI_DATA])\n" } if ($ident[EI_DATA] > 2) { die "unsupported data encoding ($ident[EI_DATA])\n" } $ep->ByteOrder($ident[EI_DATA] == 1 ? 'LittleEndian' : 'BigEndian'); sub get { my($type, $off, $len) = @_; $ep->unpack("$class\_$type", @_ > 2 ? substr $elf, $off, $len : substr $elf, $off); } #--------------------------------------------------- # Unpack ELF header and section header string table #--------------------------------------------------- my $header = get('Ehdr', 0); my $shstrtab = get('Shdr', $header->{e_shoff} + $header->{e_shstrndx}*$header->{e_shentsize}); print Data::Dumper->Dump([$header], ["*$class\_Ehdr"]) if $opt{debug}; #---------------------------- # Get Name from String Table #---------------------------- sub get_name { my($tab, $off) = @_; return unpack "Z*", substr $elf, $tab->{sh_offset} + $off; } #-------------------------- # Read all program headers #-------------------------- for my $ix (0 .. $header->{e_phnum}-1) { my $phdr = get('Phdr', $header->{e_phoff} + $ix*$header->{e_phentsize}); print Data::Dumper->Dump([$phdr], ["*$class\_Phdr"]) if $opt{debug}; } #-------------------------- # Read all section headers #-------------------------- my %section; # for lookup by section name my @section; # for lookup by section index for my $ix (0 .. $header->{e_shnum}-1) { my $shdr = get('Shdr', $header->{e_shoff} + $ix*$header->{e_shentsize}); print Data::Dumper->Dump([$shdr], ["*$class\_Shdr"]) if $opt{debug}; $section{get_name($shstrtab, $shdr->{sh_name})} = $shdr; push @section, $shdr; } #----------------------------------- # Get Section Name by Section Index #----------------------------------- sub get_section_name { my $sec = shift; if ($sec == 0 || $sec >= 0xff00) { my %res = (0 => 'SHN_UNDEF', 0xfff1 => 'SHN_ABS', 0xfff2 => 'SHN_COMMON'); return $res{$sec} || sprintf "reserved section 0x%04X", $sec; } return $sec < @section ? get_name($shstrtab, $section[$sec]{sh_name}) : "invalid section $sec"; } #-------------------------- # Print Header Information #-------------------------- if ($opt{info}) { printf "Byte Order: %s\n", $ep->ByteOrder; printf "ELF Class : %s\n", $class; printf "ELF Type : %s\n", $header->{e_type}; printf "Machine : %s\n", $header->{e_machine}; } #------------------------ # Print List Of Sections #------------------------ if ($opt{list}) { printf "%-3s %-38s %-13s %-9s %-9s\n%s\n", 'Idx', 'Section', 'Type', 'Offset', 'Size', '-'x80; for my $ix (0 .. $#section) { my $sh = $section[$ix]; printf "%3d %-38s %-13s %9d %9d\n", $ix, get_name($shstrtab, $sh->{sh_name}), $sh->{sh_type}, $sh->{sh_offset}, $sh->{sh_size}; } } #-------------------- # Print Symbol Table #-------------------- if ($opt{symbols}) { my $symtab = $section{'.symtab'} or die "got no symbol table\n"; my $strtab = $section{'.strtab'} or die "got no symbol string table\n"; my @sym = get('Sym', $symtab->{sh_offset}, $symtab->{sh_size}); printf "%-6s %-30s %-9s %-9s %-11s %-11s %-30s\n%s\n", 'Index', 'Symbol', 'Value', 'Size', 'Bind', 'Type', 'Section', '-'x120; for my $ix (0 .. $#sym) { my $s = $sym[$ix]; print Data::Dumper->Dump([$s], ['*sym']) if $opt{debug}; printf "%6d %-30s %9d %9d %-11s %-11s %-30s\n", $ix, get_name($strtab, $s->{st_name}), $s->{st_value}, $s->{st_size}, $s->{st_info}{sti_bind}, $s->{st_info}{sti_type}, get_section_name($s->{st_shndx}); } } #------------------------- # Write Section to stdout #------------------------- if ($opt{section}) { my $sec = $opt{section} =~ /^\d+$/ ? $section[$opt{section}] : $section{$opt{section}}; die "no such section ($opt{section})\n" unless defined $sec; binmode STDOUT; print substr $elf, $sec->{sh_offset}, $sec->{sh_size}; } exit; ############################################################################### # # This routine contains the ELF data structures and was generated using: # # perl -MConvert::Binary::C -e'print Convert::Binary::C->new(%{require \ # "devel/gcc-config.pl"})->parse_file("elf.h")->sourcify' # ############################################################################### sub elf_header { return <<'ENDC'; /* typedef predeclarations */ typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; typedef long long int int64_t; typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; typedef unsigned long long int uint64_t; typedef signed char int_least8_t; typedef short int int_least16_t; typedef int int_least32_t; typedef long long int int_least64_t; typedef unsigned char uint_least8_t; typedef unsigned short int uint_least16_t; typedef unsigned int uint_least32_t; typedef unsigned long long int uint_least64_t; typedef signed char int_fast8_t; typedef int int_fast16_t; typedef int int_fast32_t; typedef long long int int_fast64_t; typedef unsigned char uint_fast8_t; typedef unsigned int uint_fast16_t; typedef unsigned int uint_fast32_t; typedef unsigned long long int uint_fast64_t; typedef int intptr_t; typedef unsigned int uintptr_t; typedef long long int intmax_t; typedef unsigned long long int uintmax_t; /* typedefs */ typedef uint16_t Elf32_Half; typedef uint16_t Elf64_Half; typedef uint32_t Elf32_Word; typedef int32_t Elf32_Sword; typedef uint32_t Elf64_Word; typedef int32_t Elf64_Sword; typedef uint64_t Elf32_Xword; typedef int64_t Elf32_Sxword; typedef uint64_t Elf64_Xword; typedef int64_t Elf64_Sxword; typedef uint32_t Elf32_Addr; typedef uint64_t Elf64_Addr; typedef uint32_t Elf32_Off; typedef uint64_t Elf64_Off; typedef uint16_t Elf32_Section; typedef uint16_t Elf64_Section; typedef Elf32_Half Elf32_Versym; typedef Elf64_Half Elf64_Versym; typedef struct { unsigned char e_ident[16]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; Elf32_Off e_phoff; Elf32_Off e_shoff; Elf32_Word e_flags; Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; Elf32_Half e_shentsize; Elf32_Half e_shnum; Elf32_Half e_shstrndx; } Elf32_Ehdr; typedef struct { unsigned char e_ident[16]; Elf64_Half e_type; Elf64_Half e_machine; Elf64_Word e_version; Elf64_Addr e_entry; Elf64_Off e_phoff; Elf64_Off e_shoff; Elf64_Word e_flags; Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx; } Elf64_Ehdr; typedef struct { Elf32_Word sh_name; Elf32_Word sh_type; Elf32_Word sh_flags; Elf32_Addr sh_addr; Elf32_Off sh_offset; Elf32_Word sh_size; Elf32_Word sh_link; Elf32_Word sh_info; Elf32_Word sh_addralign; Elf32_Word sh_entsize; } Elf32_Shdr; typedef struct { Elf64_Word sh_name; Elf64_Word sh_type; Elf64_Xword sh_flags; Elf64_Addr sh_addr; Elf64_Off sh_offset; Elf64_Xword sh_size; Elf64_Word sh_link; Elf64_Word sh_info; Elf64_Xword sh_addralign; Elf64_Xword sh_entsize; } Elf64_Shdr; typedef struct { Elf32_Word st_name; Elf32_Addr st_value; Elf32_Word st_size; unsigned char st_info; unsigned char st_other; Elf32_Section st_shndx; } Elf32_Sym; typedef struct { Elf64_Word st_name; unsigned char st_info; unsigned char st_other; Elf64_Section st_shndx; Elf64_Addr st_value; Elf64_Xword st_size; } Elf64_Sym; typedef struct { Elf32_Half si_boundto; Elf32_Half si_flags; } Elf32_Syminfo; typedef struct { Elf64_Half si_boundto; Elf64_Half si_flags; } Elf64_Syminfo; typedef struct { Elf32_Addr r_offset; Elf32_Word r_info; } Elf32_Rel; typedef struct { Elf64_Addr r_offset; Elf64_Xword r_info; } Elf64_Rel; typedef struct { Elf32_Addr r_offset; Elf32_Word r_info; Elf32_Sword r_addend; } Elf32_Rela; typedef struct { Elf64_Addr r_offset; Elf64_Xword r_info; Elf64_Sxword r_addend; } Elf64_Rela; typedef struct { Elf32_Word p_type; Elf32_Off p_offset; Elf32_Addr p_vaddr; Elf32_Addr p_paddr; Elf32_Word p_filesz; Elf32_Word p_memsz; Elf32_Word p_flags; Elf32_Word p_align; } Elf32_Phdr; typedef struct { Elf64_Word p_type; Elf64_Word p_flags; Elf64_Off p_offset; Elf64_Addr p_vaddr; Elf64_Addr p_paddr; Elf64_Xword p_filesz; Elf64_Xword p_memsz; Elf64_Xword p_align; } Elf64_Phdr; typedef struct { Elf32_Sword d_tag; union { Elf32_Word d_val; Elf32_Addr d_ptr; } d_un; } Elf32_Dyn; typedef struct { Elf64_Sxword d_tag; union { Elf64_Xword d_val; Elf64_Addr d_ptr; } d_un; } Elf64_Dyn; typedef struct { Elf32_Half vd_version; Elf32_Half vd_flags; Elf32_Half vd_ndx; Elf32_Half vd_cnt; Elf32_Word vd_hash; Elf32_Word vd_aux; Elf32_Word vd_next; } Elf32_Verdef; typedef struct { Elf64_Half vd_version; Elf64_Half vd_flags; Elf64_Half vd_ndx; Elf64_Half vd_cnt; Elf64_Word vd_hash; Elf64_Word vd_aux; Elf64_Word vd_next; } Elf64_Verdef; typedef struct { Elf32_Word vda_name; Elf32_Word vda_next; } Elf32_Verdaux; typedef struct { Elf64_Word vda_name; Elf64_Word vda_next; } Elf64_Verdaux; typedef struct { Elf32_Half vn_version; Elf32_Half vn_cnt; Elf32_Word vn_file; Elf32_Word vn_aux; Elf32_Word vn_next; } Elf32_Verneed; typedef struct { Elf64_Half vn_version; Elf64_Half vn_cnt; Elf64_Word vn_file; Elf64_Word vn_aux; Elf64_Word vn_next; } Elf64_Verneed; typedef struct { Elf32_Word vna_hash; Elf32_Half vna_flags; Elf32_Half vna_other; Elf32_Word vna_name; Elf32_Word vna_next; } Elf32_Vernaux; typedef struct { Elf64_Word vna_hash; Elf64_Half vna_flags; Elf64_Half vna_other; Elf64_Word vna_name; Elf64_Word vna_next; } Elf64_Vernaux; typedef struct { int a_type; union { long int a_val; void *a_ptr; void *a_fcn; } a_un; } Elf32_auxv_t; typedef struct { long int a_type; union { long int a_val; void *a_ptr; void *a_fcn; } a_un; } Elf64_auxv_t; typedef struct { Elf32_Word n_namesz; Elf32_Word n_descsz; Elf32_Word n_type; } Elf32_Nhdr; typedef struct { Elf64_Word n_namesz; Elf64_Word n_descsz; Elf64_Word n_type; } Elf64_Nhdr; typedef struct { Elf32_Xword m_value; Elf32_Word m_info; Elf32_Word m_poffset; Elf32_Half m_repeat; Elf32_Half m_stride; } Elf32_Move; typedef struct { Elf64_Xword m_value; Elf64_Xword m_info; Elf64_Xword m_poffset; Elf64_Half m_repeat; Elf64_Half m_stride; } Elf64_Move; typedef union { struct { Elf32_Word gt_current_g_value; Elf32_Word gt_unused; } gt_header; struct { Elf32_Word gt_g_value; Elf32_Word gt_bytes; } gt_entry; } Elf32_gptab; typedef struct { Elf32_Word ri_gprmask; Elf32_Word ri_cprmask[4]; Elf32_Sword ri_gp_value; } Elf32_RegInfo; typedef struct { unsigned char kind; unsigned char size; Elf32_Section section; Elf32_Word info; } Elf_Options; typedef struct { Elf32_Word hwp_flags1; Elf32_Word hwp_flags2; } Elf_Options_Hw; typedef struct { Elf32_Word l_name; Elf32_Word l_time_stamp; Elf32_Word l_checksum; Elf32_Word l_version; Elf32_Word l_flags; } Elf32_Lib; typedef struct { Elf64_Word l_name; Elf64_Word l_time_stamp; Elf64_Word l_checksum; Elf64_Word l_version; Elf64_Word l_flags; } Elf64_Lib; typedef Elf32_Addr Elf32_Conflict; ENDC } __END__ =head1 NAME elf.pl - Read ELF Files =head1 SYNOPSIS elf.pl {I} elf-file I: -i --info print information -l --list print section list --symbols print symbol table -s --section NAME write section to stdout --debug enable debug output example: elf.pl -il C.o =cut !NO!SUBS! close OUT or die "Can't close $file: $!"; chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; Convert-Binary-C-0.85/bin/convert.PL0000755000175000001440000000767514677003452015722 0ustar mhxusersuse Config; $file = @ARGV ? shift : 'examples/convert.pl'; open OUT, ">$file" or die "Can't create $file: $!"; print OUT <<"!GROK!THIS!"; $Config{startperl} -w !GROK!THIS! print OUT <<'!NO!SUBS!'; ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ #=============================================================================== # # Parse a C struct and use 'pack', 'unpack', 'sizeof' and 'offsetof'. # #=============================================================================== use Convert::Binary::C; use Data::Dumper; use strict; #-------------------------------------------------------------- # Create an object, configure it, and parse some embedded code. #-------------------------------------------------------------- my $c = Convert::Binary::C->new( LongSize => 4, ShortSize => 2 ) ->Alignment( 4 ) ->ByteOrder( 'BigEndian' ) ->parse( <<'ENDC' ); typedef signed long i_32; typedef unsigned long u_32; typedef signed short i_16; typedef unsigned short u_16; typedef signed char i_8; typedef unsigned char u_8; struct convert { i_8 byte; i_16 word[2]; i_32 dword; union { u_32 dword; u_8 bytes[ sizeof( u_32 ) ]; } c32; }; ENDC #----------------------------------------------------------- # Print the offsets and sizes of some of the struct members. #----------------------------------------------------------- for( qw( byte word dword ) ) { print "offsetof( 'convert', '$_' ) = ", $c->offsetof( 'convert', $_ ); print ", sizeof( 'convert.$_' ) = ", $c->sizeof( "convert.$_" ), "\n"; } #------------------------------------------------- # Pack a Perl data structure into a binary string. # Note that not all members need to be specified. #------------------------------------------------- my $binary = $c->pack( 'convert', { word => [-30000, 4711], c32 => { dword => 0x01020304 } } ); #------------------------------------------------------- # Just a demonstration that pack does the right thing... #------------------------------------------------------- if( $c->sizeof( 'convert' ) == length $binary ) { print "\nYup, the size matches!\n"; } #------------------------------------------------------- # Hexdump the binary string. # Note that all padding regions are initialized to zero. #------------------------------------------------------- print "\nBinary: ", hexdump( $binary ), "\n\n"; #--------------------------------------------------------------- # Unpack the binary string and dump the returned data structure. #--------------------------------------------------------------- my $data = $c->unpack( 'convert', $binary ); print Data::Dumper->Dump( [$data], ['data'] ); #------------------------------------------------------ # You can modify selected elements in the binary string # using the 3-argument version of 'pack'. #------------------------------------------------------ # only 'dword' will be modified $c->pack( 'convert', { dword => -559038737 }, $binary ); print "\nBinary: ", hexdump( $binary ), "\n\n"; print Dumper( $c->unpack( 'convert', $binary ) ); #-------------------------------------------------- # You can also use pack/unpack on compound members. #-------------------------------------------------- my $array = $c->unpack( 'convert.c32.bytes', 'ABCD' ); print "\n\$array = [ @$array ]\n"; #========================================================== # SUBROUTINES #========================================================== sub hexdump { join ' ', map { sprintf "%02X", $_ } unpack "C*", $_[0]; } !NO!SUBS! close OUT or die "Can't close $file: $!"; chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; Convert-Binary-C-0.85/bin/memmap.PL0000755000175000001440000000642114677003452015502 0ustar mhxusersuse Config; $file = @ARGV ? shift : 'examples/memmap.pl'; open OUT, ">$file" or die "Can't create $file: $!"; print OUT <<"!GROK!THIS!"; $Config{startperl} -w !GROK!THIS! print OUT <<'!NO!SUBS!'; ################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ #=============================================================================== # # Print a simple memory map of a structure. # #=============================================================================== use Convert::Binary::C; use Data::Dumper; use strict; #----------------------------------------------------- # Create an object, configure it, and parse some code. #----------------------------------------------------- my $c = Convert::Binary::C->new( PointerSize => 4, LongSize => 4, ShortSize => 2, Alignment => 4 ) ->parse( <<'ENDC' ); typedef unsigned long u_32; typedef struct _LinkedList * LinkedList; typedef struct _HashTable * HashTable; typedef struct { enum { BO_BIG_ENDIAN, BO_LITTLE_ENDIAN } bo; } ArchSpecs; typedef struct { char *buffer; long pos, length; } Buffer; typedef struct { unsigned alignment; unsigned int_size; unsigned short_size; unsigned long_size; unsigned long_long_size; int enum_size; unsigned ptr_size; unsigned float_size; unsigned double_size; unsigned long_double_size; u_32 flags; u_32 keywords; LinkedList disabled_keywords; LinkedList includes; LinkedList defines; LinkedList assertions; HashTable keyword_map; } CParseConfig; typedef struct { LinkedList enums; LinkedList structs; LinkedList typedef_lists; HashTable htEnumerators; HashTable htEnums; HashTable htStructs; HashTable htTypedefs; HashTable htFiles; char *errstr; } CParseInfo; typedef struct { char *bufptr; unsigned alignment; unsigned align_base; int dataTooShortFlag; Buffer buf; CParseConfig cfg; CParseInfo cpi; ArchSpecs as; enum { ET_INTEGER, ET_STRING, ET_BOTH } enumType; } CBC; ENDC #------------------------------------------------- # Print the memory map for type 'CBC' with a base # address of 0x01500000. #------------------------------------------------- memmap( $c, 'CBC', 0x01500000 ); #========================================================== # SUBROUTINES #========================================================== sub memmap { my($c, $type, $start) = @_; $start ||= 0; my $afmt = '%0' . 2*$c->PointerSize . 'X'; for my $offset ( 0 .. $c->sizeof( $type ) - 1 ) { my $m = $c->member( $type, $offset ); rindex( $m, '+' ) < 0 or next; my $t = $c->typeof( $type.$m ); printf "$afmt %-16s %s\n", $start+$offset, $t, $m; } } !NO!SUBS! close OUT or die "Can't close $file: $!"; chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; Convert-Binary-C-0.85/ppport.h0000644000175000001440000211020714677003452014713 0ustar mhxusers#if 0 my $void = <<'SKIP'; #endif /* ---------------------------------------------------------------------- ppport.h -- Perl/Pollution/Portability Version 3.72 Automatically created by Devel::PPPort running under perl 5.040000. Do NOT edit this file directly! -- Edit PPPort_pm.PL and the includes in parts/inc/ instead. Use 'perldoc ppport.h' to view the documentation below. ---------------------------------------------------------------------- SKIP =pod =head1 NAME ppport.h - Perl/Pollution/Portability version 3.72 =head1 SYNOPSIS perl ppport.h [options] [source files] Searches current directory for files if no [source files] are given --help show short help --version show version --patch=file write one patch file with changes --copy=suffix write changed copies with suffix --diff=program use diff program and options --compat-version=version provide compatibility with Perl version --cplusplus accept C++ comments --quiet don't output anything except fatal errors --nodiag don't show diagnostics --nohints don't show hints --nochanges don't suggest changes --nofilter don't filter input files --strip strip all script and doc functionality from ppport.h --list-provided list provided API --list-unsupported list API that isn't supported all the way back --api-info=name show Perl API portability information =head1 COMPATIBILITY This version of F is designed to support operation with Perl installations back to 5.003_07, and has been tested up to 5.35.9. =head1 OPTIONS =head2 --help Display a brief usage summary. =head2 --version Display the version of F. =head2 --patch=I If this option is given, a single patch file will be created if any changes are suggested. This requires a working diff program to be installed on your system. =head2 --copy=I If this option is given, a copy of each file will be saved with the given suffix that contains the suggested changes. This does not require any external programs. Note that this does not automagically add a dot between the original filename and the suffix. If you want the dot, you have to include it in the option argument. If neither C<--patch> or C<--copy> are given, the default is to simply print the diffs for each file. This requires either C or a C program to be installed. =head2 --diff=I Manually set the diff program and options to use. The default is to use C, when installed, and output unified context diffs. =head2 --compat-version=I Tell F to check for compatibility with the given Perl version. The default is to check for compatibility with Perl version 5.003_07. You can use this option to reduce the output of F if you intend to be backward compatible only down to a certain Perl version. =head2 --cplusplus Usually, F will detect C++ style comments and replace them with C style comments for portability reasons. Using this option instructs F to leave C++ comments untouched. =head2 --quiet Be quiet. Don't print anything except fatal errors. =head2 --nodiag Don't output any diagnostic messages. Only portability alerts will be printed. =head2 --nohints Don't output any hints. Hints often contain useful portability notes. Warnings will still be displayed. =head2 --nochanges Don't suggest any changes. Only give diagnostic output and hints unless these are also deactivated. =head2 --nofilter Don't filter the list of input files. By default, files not looking like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. =head2 --strip Strip all script and documentation functionality from F. This reduces the size of F dramatically and may be useful if you want to include F in smaller modules without increasing their distribution size too much. The stripped F will have a C<--unstrip> option that allows you to undo the stripping, but only if an appropriate C module is installed. =head2 --list-provided Lists the API elements for which compatibility is provided by F. Also lists if it must be explicitly requested, if it has dependencies, and if there are hints or warnings for it. =head2 --list-unsupported Lists the API elements that are known not to be FULLY supported by F, and below which version of Perl they probably won't be available or work. By FULLY, we mean that support isn't provided all the way back to the first version of Perl that F supports at all. =head2 --api-info=I Show portability information for elements matching I. If I is surrounded by slashes, it is interpreted as a regular expression. Normally, only API elements are shown, but if there are no matching API elements but there are some other matching elements, those are shown. This allows you to conveniently find when functions internal to the core implementation were added; only people working on the core are likely to find this last part useful. =head1 DESCRIPTION In order for a Perl extension (XS) module to be as portable as possible across differing versions of Perl itself, certain steps need to be taken. =over 4 =item * Including this header is the first major one. This alone will give you access to a large part of the Perl API that hasn't been available in earlier Perl releases. Use perl ppport.h --list-provided to see which API elements are provided by ppport.h. =item * You should avoid using deprecated parts of the API. For example, using global Perl variables without the C prefix is deprecated. Also, some API functions used to have a C prefix. Using this form is also deprecated. You can safely use the supported API, as F will provide wrappers for older Perl versions. =item * Although the purpose of F is to keep you from having to concern yourself with what version you are running under, there may arise instances where you have to do so. These macros, the same ones as in base Perl, are available to you in all versions, and are what you should use: =over 4 =item C(major, minor, patch)> Returns whether or not the perl currently being compiled has the specified relationship I to the perl given by the parameters. I is one of C, C, C, C, C, C. For example, #if PERL_VERSION_GT(5,24,2) code that will only be compiled on perls after v5.24.2 #else fallback code #endif Note that this is usable in making compile-time decisions You may use the special value '*' for the final number to mean ALL possible values for it. Thus, #if PERL_VERSION_EQ(5,31,'*') means all perls in the 5.31 series. And #if PERL_VERSION_NE(5,24,'*') means all perls EXCEPT 5.24 ones. And #if PERL_VERSION_LE(5,9,'*') is effectively #if PERL_VERSION_LT(5,10,0) =back =item * If you use one of a few functions or variables that were not present in earlier versions of Perl, and that can't be provided using a macro, you have to explicitly request support for these functions by adding one or more C<#define>s in your source code before the inclusion of F. These functions or variables will be marked C in the list shown by C<--list-provided>. Depending on whether you module has a single or multiple files that use such functions or variables, you want either C or global variants. For a C function or variable (used only in a single source file), use: #define NEED_function #define NEED_variable For a global function or variable (used in multiple source files), use: #define NEED_function_GLOBAL #define NEED_variable_GLOBAL Note that you mustn't have more than one global request for the same function or variable in your project. Function / Variable Static Request Global Request ----------------------------------------------------------------------------------------- caller_cx() NEED_caller_cx NEED_caller_cx_GLOBAL ck_warner() NEED_ck_warner NEED_ck_warner_GLOBAL ck_warner_d() NEED_ck_warner_d NEED_ck_warner_d_GLOBAL croak_xs_usage() NEED_croak_xs_usage NEED_croak_xs_usage_GLOBAL die_sv() NEED_die_sv NEED_die_sv_GLOBAL eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL grok_number() NEED_grok_number NEED_grok_number_GLOBAL grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL load_module() NEED_load_module NEED_load_module_GLOBAL mess() NEED_mess NEED_mess_GLOBAL mess_nocontext() NEED_mess_nocontext NEED_mess_nocontext_GLOBAL mess_sv() NEED_mess_sv NEED_mess_sv_GLOBAL mg_findext() NEED_mg_findext NEED_mg_findext_GLOBAL my_snprintf() NEED_my_snprintf NEED_my_snprintf_GLOBAL my_sprintf() NEED_my_sprintf NEED_my_sprintf_GLOBAL my_strlcat() NEED_my_strlcat NEED_my_strlcat_GLOBAL my_strlcpy() NEED_my_strlcpy NEED_my_strlcpy_GLOBAL my_strnlen() NEED_my_strnlen NEED_my_strnlen_GLOBAL newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL newSVpvn_share() NEED_newSVpvn_share NEED_newSVpvn_share_GLOBAL PL_parser NEED_PL_parser NEED_PL_parser_GLOBAL PL_signals NEED_PL_signals NEED_PL_signals_GLOBAL pv_display() NEED_pv_display NEED_pv_display_GLOBAL pv_escape() NEED_pv_escape NEED_pv_escape_GLOBAL pv_pretty() NEED_pv_pretty NEED_pv_pretty_GLOBAL sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL sv_catpvf_mg_nocontext() NEED_sv_catpvf_mg_nocontext NEED_sv_catpvf_mg_nocontext_GLOBAL sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL sv_unmagicext() NEED_sv_unmagicext NEED_sv_unmagicext_GLOBAL utf8_to_uvchr_buf() NEED_utf8_to_uvchr_buf NEED_utf8_to_uvchr_buf_GLOBAL vload_module() NEED_vload_module NEED_vload_module_GLOBAL vmess() NEED_vmess NEED_vmess_GLOBAL warner() NEED_warner NEED_warner_GLOBAL To avoid namespace conflicts, you can change the namespace of the explicitly exported functions / variables using the C macro. Just C<#define> the macro before including C: #define DPPP_NAMESPACE MyOwnNamespace_ #include "ppport.h" The default namespace is C. =back The good thing is that most of the above can be checked by running F on your source code. See the next section for details. =head1 EXAMPLES To verify whether F is needed for your module, whether you should make any changes to your code, and whether any special defines should be used, F can be run as a Perl script to check your source code. Simply say: perl ppport.h The result will usually be a list of patches suggesting changes that should at least be acceptable, if not necessarily the most efficient solution, or a fix for all possible problems. If you know that your XS module uses features only available in newer Perl releases, if you're aware that it uses C++ comments, and if you want all suggestions as a single patch file, you could use something like this: perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff If you only want your code to be scanned without any suggestions for changes, use: perl ppport.h --nochanges You can specify a different C program or options, using the C<--diff> option: perl ppport.h --diff='diff -C 10' This would output context diffs with 10 lines of context. If you want to create patched copies of your files instead, use: perl ppport.h --copy=.new To display portability information for the C function, use: perl ppport.h --api-info=newSVpvn Since the argument to C<--api-info> can be a regular expression, you can use perl ppport.h --api-info=/_nomg$/ to display portability information for all C<_nomg> functions or perl ppport.h --api-info=/./ to display information for all known API elements. =head1 BUGS Some of the suggested edits and/or generated patches may not compile as-is without tweaking manually. This is generally due to the need for an extra parameter to be added to the call to prevent buffer overflow. If this version of F is causing failure during the compilation of this module, please check if newer versions of either this module or C are available on CPAN before sending a bug report. If F was generated using the latest version of C and is causing failure of this module, please file a bug report at L Please include the following information: =over 4 =item 1. The complete output from running "perl -V" =item 2. This file. =item 3. The name and version of the module you were trying to build. =item 4. A full log of the build that failed. =item 5. Any other information that you think could be relevant. =back For the latest version of this code, please get the C module from CPAN. =head1 COPYRIGHT Version 3.x, Copyright (c) 2004-2013, Marcus Holland-Moritz. Version 2.x, Copyright (C) 2001, Paul Marquess. Version 1.x, Copyright (C) 1999, Kenneth Albanowski. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO See L. =cut # These are tools that must be included in ppport.h. It doesn't work if given # a .pl suffix. # # WARNING: Use only constructs that are legal as far back as D:P handles, as # this is run in the perl version being tested. # What revisions are legal, to be output as-is and converted into a pattern # that matches them precisely my $r_pat = "[57]"; sub format_version { # Given an input version that is acceptable to parse_version(), return a # string of the standard representation of it. my($r,$v,$s) = parse_version(shift); if ($r < 5 || ($r == 5 && $v < 6)) { my $ver = sprintf "%d.%03d", $r, $v; $s > 0 and $ver .= sprintf "_%02d", $s; return $ver; } return sprintf "%d.%d.%d", $r, $v, $s; } sub parse_version { # Returns a triplet, (revision, major, minor) from the input, treated as a # string, which can be in any of several typical formats. my $ver = shift; $ver = "" unless defined $ver; my($r,$v,$s); if ( ($r, $v, $s) = $ver =~ /^([0-9]+)([0-9]{3})([0-9]{3})$/ # 5029010, from the file # names in our # parts/base/ and # parts/todo directories or ($r, $v, $s) = $ver =~ /^([0-9]+)\.([0-9]+)\.([0-9]+)$/ # 5.25.7 or ($r, $v, $s) = $ver =~ /^([0-9]+)\.([0-9]{3})([0-9]{3})$/ # 5.025008, from the # output of $] or ($r, $v, $s) = $ver =~ /^([0-9]+)\.([0-9]{1,3})()$/ # 5.24, 5.004 or ($r, $v, $s) = $ver =~ /^([0-9]+)\.(00[1-5])_?([0-9]{2})$/ # 5.003_07 ) { $s = 0 unless $s; die "Only Perl $r_pat are supported '$ver'\n" unless $r =~ / ^ $r_pat $ /x; die "Invalid version number: $ver\n" if $v >= 1000 || $s >= 1000; return (0 +$r, 0 + $v, 0 + $s); } # For some safety, don't assume something is a version number if it has a # literal dot as one of the three characters. This will have to be fixed # when we reach x.46 (since 46 is ord('.')) if ($ver !~ /\./ && (($r, $v, $s) = $ver =~ /^(.)(.)(.)$/)) # vstring 5.25.7 { $r = ord $r; $v = ord $v; $s = ord $s; die "Only Perl $r_pat are supported '$ver'\n" unless $r =~ / ^ $r_pat $ /x; return ($r, $v, $s); } my $mesg = ""; $mesg = ". (In 5.00x_yz, x must be 1-5.)" if $ver =~ /_/; die "Invalid version number format: '$ver'$mesg\n"; } sub int_parse_version { # Returns integer 7 digit human-readable version, suitable for use in file # names in parts/todo parts/base. return 0 + join "", map { sprintf("%03d", $_) } parse_version(shift); } sub ivers # Shorter name for int_parse_version { return int_parse_version(shift); } sub format_version_line { # Returns a floating point representation of the input version my $version = int_parse_version(shift); $version =~ s/ ^ ( $r_pat ) \B /$1./x; return $version; } BEGIN { if ("$]" < "5.006" ) { # On early perls, the implicit pass by reference doesn't work, so we have # to use the globals to initialize. eval q[sub dictionary_order($$) { _dictionary_order($a, $b) } ]; } elsif ("$]" < "5.022" ) { eval q[sub dictionary_order($$) { _dictionary_order(@_) } ]; } else { eval q[sub dictionary_order :prototype($$) { _dictionary_order(@_) } ]; } } sub _dictionary_order { # Sort caselessly, ignoring punct my ($valid_a, $valid_b) = @_; my ($lc_a, $lc_b); my ($squeezed_a, $squeezed_b); $valid_a = '' unless defined $valid_a; $valid_b = '' unless defined $valid_b; $lc_a = lc $valid_a; $lc_b = lc $valid_b; $squeezed_a = $lc_a; $squeezed_a =~ s/^_+//g; # No leading underscores $squeezed_a =~ s/\B_+\B//g; # No connecting underscores $squeezed_a =~ s/[\W]//g; # No punct $squeezed_b = $lc_b; $squeezed_b =~ s/^_+//g; $squeezed_b =~ s/\B_+\B//g; $squeezed_b =~ s/[\W]//g; return( $squeezed_a cmp $squeezed_b or $lc_a cmp $lc_b or $valid_a cmp $valid_b); } sub sort_api_lines # Sort lines of the form flags|return|name|args... # by 'name' { $a =~ / ^ [^|]* \| [^|]* \| ( [^|]* ) /x; # 3rd field '|' is sep my $a_name = $1; $b =~ / ^ [^|]* \| [^|]* \| ( [^|]* ) /x; my $b_name = $1; return dictionary_order($a_name, $b_name); } 1; use strict; BEGIN { require warnings if "$]" > '5.006' } # Disable broken TRIE-optimization BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if "$]" >= "5.009004" && "$]" <= "5.009005"} my $VERSION = 3.72; my %opt = ( quiet => 0, diag => 1, hints => 1, changes => 1, cplusplus => 0, filter => 1, strip => 0, version => 0, ); my($ppport) = $0 =~ /([\w.]+)$/; my $LF = '(?:\r\n|[\r\n])'; # line feed my $HS = "[ \t]"; # horizontal whitespace # Never use C comments in this file! my $ccs = '/'.'*'; my $cce = '*'.'/'; my $rccs = quotemeta $ccs; my $rcce = quotemeta $cce; eval { require Getopt::Long; Getopt::Long::GetOptions(\%opt, qw( help quiet diag! filter! hints! changes! cplusplus strip version patch=s copy=s diff=s compat-version=s list-provided list-unsupported api-info=s )) or usage(); }; if ($@ and grep /^-/, @ARGV) { usage() if "@ARGV" =~ /^--?h(?:elp)?$/; die "Getopt::Long not found. Please don't use any options.\n"; } if ($opt{version}) { print "This is $0 $VERSION.\n"; exit 0; } usage() if $opt{help}; strip() if $opt{strip}; $opt{'compat-version'} = 5.003_07 unless exists $opt{'compat-version'}; $opt{'compat-version'} = int_parse_version($opt{'compat-version'}); my $int_min_perl = int_parse_version(5.003_07); # Each element of this hash looks something like: # 'Poison' => { # 'base' => '5.008000', # 'provided' => 1, # 'todo' => '5.003007' # }, my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ ? ( $1 => { ($2 ? ( base => $2 ) : ()), ($3 ? ( todo => $3 ) : ()), (index($4, 'v') >= 0 ? ( varargs => 1 ) : ()), (index($4, 'p') >= 0 ? ( provided => 1 ) : ()), (index($4, 'n') >= 0 ? ( noTHXarg => 1 ) : ()), (index($4, 'c') >= 0 ? ( core_only => 1 ) : ()), (index($4, 'd') >= 0 ? ( deprecated => 1 ) : ()), (index($4, 'i') >= 0 ? ( inaccessible => 1 ) : ()), (index($4, 'x') >= 0 ? ( experimental => 1 ) : ()), (index($4, 'u') >= 0 ? ( undocumented => 1 ) : ()), (index($4, 'o') >= 0 ? ( ppport_fnc => 1 ) : ()), (index($4, 'V') >= 0 ? ( unverified => 1 ) : ()), } ) : die "invalid spec: $_" } qw( ABDAY_1|5.027010||Viu ABDAY_2|5.027010||Viu ABDAY_3|5.027010||Viu ABDAY_4|5.027010||Viu ABDAY_5|5.027010||Viu ABDAY_6|5.027010||Viu ABDAY_7|5.027010||Viu ABMON_10|5.027010||Viu ABMON_11|5.027010||Viu ABMON_12|5.027010||Viu ABMON_1|5.027010||Viu ABMON_2|5.027010||Viu ABMON_3|5.027010||Viu ABMON_4|5.027010||Viu ABMON_5|5.027010||Viu ABMON_6|5.027010||Viu ABMON_7|5.027010||Viu ABMON_8|5.027010||Viu ABMON_9|5.027010||Viu ABORT|5.003007||Viu abort|5.005000||Viu abort_execution|5.025010||Viu accept|5.005000||Viu ACCEPT|5.009005||Viu ACCEPT_t8|5.035004||Viu ACCEPT_t8_p8|5.033003||Viu ACCEPT_t8_pb|5.033003||Viu ACCEPT_tb|5.035004||Viu ACCEPT_tb_p8|5.033003||Viu ACCEPT_tb_pb|5.033003||Viu access|5.005000||Viu add_above_Latin1_folds|5.021001||Viu add_cp_to_invlist|5.013011||Viu add_data|5.005000||Vniu add_multi_match|5.021004||Viu _add_range_to_invlist|5.016000||cViu add_utf16_textfilter|5.011001||Viu adjust_size_and_find_bucket|5.019003||Vniu advance_one_LB|5.023007||Viu advance_one_SB|5.021009||Viu advance_one_WB|5.021009||Viu AHOCORASICK|5.009005||Viu AHOCORASICKC|5.009005||Viu AHOCORASICKC_t8|5.035004||Viu AHOCORASICKC_t8_p8|5.033003||Viu AHOCORASICKC_t8_pb|5.033003||Viu AHOCORASICKC_tb|5.035004||Viu AHOCORASICKC_tb_p8|5.033003||Viu AHOCORASICKC_tb_pb|5.033003||Viu AHOCORASICK_t8|5.035004||Viu AHOCORASICK_t8_p8|5.033003||Viu AHOCORASICK_t8_pb|5.033003||Viu AHOCORASICK_tb|5.035004||Viu AHOCORASICK_tb_p8|5.033003||Viu AHOCORASICK_tb_pb|5.033003||Viu ALIGNED_TYPE_NAME|||Viu ALIGNED_TYPE|||Viu alloccopstash|5.017001|5.017001|x alloc_LOGOP|5.025004||xViu allocmy|5.008001||Viu ALLOC_THREAD_KEY|5.005003||Viu ALT_DIGITS|5.027010||Viu amagic_call|5.003007|5.003007|u amagic_cmp|5.009003||Viu amagic_cmp_desc|5.031011||Viu amagic_cmp_locale|5.009003||Viu amagic_cmp_locale_desc|5.031011||Viu amagic_deref_call|5.013007|5.013007|u amagic_i_ncmp|5.009003||Viu amagic_i_ncmp_desc|5.031011||Viu amagic_is_enabled|5.015008||Viu amagic_ncmp|5.009003||Viu amagic_ncmp_desc|5.031011||Viu AMG_CALLun|5.003007||Viu AMG_CALLunary|5.013009||Viu AMGfallNEVER|5.003007||Viu AMGfallNO|5.003007||Viu AMGfallYES|5.003007||Viu AMGf_assign|5.003007||Viu AMGf_noleft|5.003007||Viu AMGf_noright|5.003007||Viu AMGf_numarg|5.021009||Viu AMGf_numeric|5.013002||Viu AMGf_unary|5.003007||Viu AMGf_want_list|5.017002||Viu AM_STR|5.027010||Viu AMT_AMAGIC|5.004000||Viu AMT_AMAGIC_off|5.004000||Viu AMT_AMAGIC_on|5.004000||Viu AMTf_AMAGIC|5.004000||Viu _aMY_CXT|5.009000|5.009000|p aMY_CXT|5.009000|5.009000|p aMY_CXT_|5.009000|5.009000|p anchored_end_shift|5.009005||Viu anchored_offset|5.005000||Viu anchored_substr|5.005000||Viu anchored_utf8|5.008000||Viu ANGSTROM_SIGN|5.017003||Viu anonymise_cv_maybe|5.013003||Viu any_dup|5.006000||Vu ANYOF|5.003007||Viu ANYOF_ALNUM|5.006000||Viu ANYOF_ALNUML|5.004000||Viu ANYOF_ALPHA|5.006000||Viu ANYOF_ALPHANUMERIC|5.017008||Viu ANYOF_ASCII|5.006000||Viu ANYOF_BIT|5.004005||Viu ANYOF_BITMAP|5.006000||Viu ANYOF_BITMAP_BYTE|5.006000||Viu ANYOF_BITMAP_CLEAR|5.006000||Viu ANYOF_BITMAP_CLEARALL|5.007003||Viu ANYOF_BITMAP_SET|5.006000||Viu ANYOF_BITMAP_SETALL|5.007003||Viu ANYOF_BITMAP_SIZE|5.006000||Viu ANYOF_BITMAP_TEST|5.006000||Viu ANYOF_BITMAP_ZERO|5.006000||Viu ANYOF_BLANK|5.006001||Viu ANYOF_CASED|5.017008||Viu ANYOF_CLASS_OR|5.017007||Viu ANYOF_CLASS_SETALL|5.013011||Viu ANYOF_CLASS_TEST_ANY_SET|5.013008||Viu ANYOF_CNTRL|5.006000||Viu ANYOF_COMMON_FLAGS|5.019008||Viu ANYOFD|5.023003||Viu ANYOF_DIGIT|5.006000||Viu ANYOFD_t8|5.035004||Viu ANYOFD_t8_p8|5.033003||Viu ANYOFD_t8_pb|5.033003||Viu ANYOFD_tb|5.035004||Viu ANYOFD_tb_p8|5.033003||Viu ANYOFD_tb_pb|5.033003||Viu ANYOF_FLAGS|5.006000||Viu ANYOF_FLAGS_ALL|5.006000||Viu ANYOF_GRAPH|5.006000||Viu ANYOFH|5.029007||Viu ANYOFHb|5.031001||Viu ANYOFHb_t8|5.035004||Viu ANYOFHb_t8_p8|5.033003||Viu ANYOFHb_t8_pb|5.033003||Viu ANYOFHb_tb|5.035004||Viu ANYOFHb_tb_p8|5.033003||Viu ANYOFHb_tb_pb|5.033003||Viu ANYOF_HORIZWS|5.009005||Viu ANYOFHr|5.031002||Viu ANYOFHr_t8|5.035004||Viu ANYOFHr_t8_p8|5.033003||Viu ANYOFHr_t8_pb|5.033003||Viu ANYOFHr_tb|5.035004||Viu ANYOFHr_tb_p8|5.033003||Viu ANYOFHr_tb_pb|5.033003||Viu ANYOFHs|5.031007||Viu ANYOFHs_t8|5.035004||Viu ANYOFHs_t8_p8|5.033003||Viu ANYOFHs_t8_pb|5.033003||Viu ANYOFHs_tb|5.035004||Viu ANYOFHs_tb_p8|5.033003||Viu ANYOFHs_tb_pb|5.033003||Viu ANYOFH_t8|5.035004||Viu ANYOFH_t8_p8|5.033003||Viu ANYOFH_t8_pb|5.033003||Viu ANYOFH_tb|5.035004||Viu ANYOFH_tb_p8|5.033003||Viu ANYOFH_tb_pb|5.033003||Viu ANYOF_INVERT|5.004000||Viu ANYOFL|5.021008||Viu ANYOFL_FOLD|5.023007||Viu ANYOF_LOCALE_FLAGS|5.019005||Viu ANYOF_LOWER|5.006000||Viu ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD|5.023007||Viu ANYOFL_SOME_FOLDS_ONLY_IN_UTF8_LOCALE|5.023007||Viu ANYOFL_t8|5.035004||Viu ANYOFL_t8_p8|5.033003||Viu ANYOFL_t8_pb|5.033003||Viu ANYOFL_tb|5.035004||Viu ANYOFL_tb_p8|5.033003||Viu ANYOFL_tb_pb|5.033003||Viu ANYOFL_UTF8_LOCALE_REQD|5.023007||Viu ANYOFM|5.027009||Viu ANYOF_MATCHES_ALL_ABOVE_BITMAP|5.021004||Viu ANYOF_MATCHES_POSIXL|5.021004||Viu ANYOF_MAX|5.006000||Viu ANYOFM_t8|5.035004||Viu ANYOFM_t8_p8|5.033003||Viu ANYOFM_t8_pb|5.033003||Viu ANYOFM_tb|5.035004||Viu ANYOFM_tb_p8|5.033003||Viu ANYOFM_tb_pb|5.033003||Viu ANYOF_NALNUM|5.006000||Viu ANYOF_NALNUML|5.004000||Viu ANYOF_NALPHA|5.006000||Viu ANYOF_NALPHANUMERIC|5.017008||Viu ANYOF_NASCII|5.006000||Viu ANYOF_NBLANK|5.006001||Viu ANYOF_NCASED|5.017008||Viu ANYOF_NCNTRL|5.006000||Viu ANYOF_NDIGIT|5.006000||Viu ANYOF_NGRAPH|5.006000||Viu ANYOF_NHORIZWS|5.009005||Viu ANYOF_NLOWER|5.006000||Viu ANYOF_NPRINT|5.006000||Viu ANYOF_NPUNCT|5.006000||Viu ANYOF_NSPACE|5.006000||Viu ANYOF_NSPACEL|5.004000||Viu ANYOF_NUPPER|5.006000||Viu ANYOF_NVERTWS|5.009005||Viu ANYOF_NWORDCHAR|5.017005||Viu ANYOF_NXDIGIT|5.006000||Viu ANYOF_ONLY_HAS_BITMAP|5.021004||Viu ANYOFPOSIXL|5.029004||Viu ANYOF_POSIXL_AND|5.019005||Viu ANYOF_POSIXL_BITMAP|5.035003||Viu ANYOF_POSIXL_CLEAR|5.019005||Viu ANYOF_POSIXL_MAX|5.019005||Viu ANYOF_POSIXL_OR|5.019005||Viu ANYOF_POSIXL_SET|5.019005||Viu ANYOF_POSIXL_SETALL|5.019005||Viu ANYOF_POSIXL_SET_TO_BITMAP|5.029004||Viu ANYOF_POSIXL_SSC_TEST_ALL_SET|5.019009||Viu ANYOF_POSIXL_SSC_TEST_ANY_SET|5.019009||Viu ANYOFPOSIXL_t8|5.035004||Viu ANYOFPOSIXL_t8_p8|5.033003||Viu ANYOFPOSIXL_t8_pb|5.033003||Viu ANYOFPOSIXL_tb|5.035004||Viu ANYOFPOSIXL_tb_p8|5.033003||Viu ANYOFPOSIXL_tb_pb|5.033003||Viu ANYOF_POSIXL_TEST|5.019005||Viu ANYOF_POSIXL_TEST_ALL_SET|5.019005||Viu ANYOF_POSIXL_TEST_ANY_SET|5.019005||Viu ANYOF_POSIXL_ZERO|5.019005||Viu ANYOF_PRINT|5.006000||Viu ANYOF_PUNCT|5.006000||Viu ANYOFR|5.031007||Viu ANYOFRb|5.031007||Viu ANYOFRbase|5.031007||Viu ANYOFR_BASE_BITS|5.031007||Viu ANYOFRb_t8|5.035004||Viu ANYOFRb_t8_p8|5.033003||Viu ANYOFRb_t8_pb|5.033003||Viu ANYOFRb_tb|5.035004||Viu ANYOFRb_tb_p8|5.033003||Viu ANYOFRb_tb_pb|5.033003||Viu ANYOFRdelta|5.031007||Viu ANYOFR_t8|5.035004||Viu ANYOFR_t8_p8|5.033003||Viu ANYOFR_t8_pb|5.033003||Viu ANYOFR_tb|5.035004||Viu ANYOFR_tb_p8|5.033003||Viu ANYOFR_tb_pb|5.033003||Viu ANYOF_SHARED_d_MATCHES_ALL_NON_UTF8_NON_ASCII_non_d_WARN_SUPER|5.023003||Viu ANYOF_SHARED_d_UPPER_LATIN1_UTF8_STRING_MATCHES_non_d_RUNTIME_USER_PROP|5.023006||Viu ANYOF_SPACE|5.006000||Viu ANYOF_SPACEL|5.004000||Viu ANYOF_t8|5.035004||Viu ANYOF_t8_p8|5.033003||Viu ANYOF_t8_pb|5.033003||Viu ANYOF_tb|5.035004||Viu ANYOF_tb_p8|5.033003||Viu ANYOF_tb_pb|5.033003||Viu ANYOF_UNIPROP|5.017006||Viu ANYOF_UPPER|5.006000||Viu ANYOF_VERTWS|5.009005||Viu ANYOF_WORDCHAR|5.017005||Viu ANYOF_XDIGIT|5.006000||Viu ao|5.005000||Viu _append_range_to_invlist|5.013010||Viu append_utf8_from_native_byte|5.019004||cVniu apply|5.003007||Viu apply_attrs|5.006000||Viu apply_attrs_my|5.007003||Viu apply_attrs_string|5.006001|5.006001|xu ARCHLIB|5.003007|5.003007|Vn ARCHLIB_EXP|5.003007|5.003007|Vn ARCHNAME|5.004000|5.004000|Vn ARG1|5.003007||Viu ARG1_LOC|5.005000||Viu ARG1_SET|5.005000||Viu ARG2|5.003007||Viu ARG2L|5.009005||Viu ARG2L_LOC|5.009005||Viu ARG2_LOC|5.005000||Viu ARG2L_SET|5.009005||Viu ARG2_SET|5.005000||Viu ARG|5.005000||Viu ARG_LOC|5.005000||Viu ARGp|5.031010||Viu ARGp_LOC|5.031010||Viu ARGp_SET|5.031010||Viu ARG__SET|5.005000||Viu ARG_SET|5.005000||Viu ARGTARG|5.003007||Viu ARG_VALUE|5.005000||Viu argvout_final|5.029006||Viu ASCIIish|5.005003||Viu ASCII_MORE_RESTRICT_PAT_MODS|5.013010||Viu ASCII_PLATFORM_UTF8_MAXBYTES|5.035004||Viu ASCII_RESTRICT_PAT_MOD|5.013009||Viu ASCII_RESTRICT_PAT_MODS|5.013009||Viu ASCII_TO_NATIVE|5.007001||Viu ASCII_TO_NEED|5.019004||dcVnu asctime|5.009000||Viu ASCTIME_R_PROTO|5.008000|5.008000|Vn assert|5.003007||Viu __ASSERT_|5.019007|5.008008|p ASSERT_CURPAD_ACTIVE|5.008001||Viu ASSERT_CURPAD_LEGAL|5.008001||Viu ASSERT_IS_LITERAL|||Viu ASSERT_IS_PTR|||Viu assert_not_glob|5.009004||Viu ASSERT_NOT_PTR|5.035004||Viu assert_not_ROK|5.008001||Viu assert_uft8_cache_coherent|5.013003||Viu assignment_type|5.021005||Viu ASSUME|5.019006|5.003007|p atfork_lock|5.007003|5.007003|nu atfork_unlock|5.007003|5.007003|nu aTHX|5.006000|5.003007|p aTHX_|5.006000|5.003007|p aTHXa|5.017006||Viu aTHXo|5.006000||Viu aTHXR||5.003007|ponu aTHXR_||5.003007|ponu aTHXx|5.006000||Viu Atof|5.006000||Viu Atol|5.006000||Viu atoll|5.008000||Viu Atoul|5.006000||Viu AvALLOC|5.003007||Viu AvARRAY|5.003007|5.003007| AvARYLEN|5.003007||Viu av_arylen_p|||cu av_clear|5.003007|5.003007| av_count|5.033001|5.003007|p av_create_and_push||| av_create_and_unshift_one||| av_delete|5.006000|5.006000| av_exists|5.006000|5.006000| av_extend|5.003007|5.003007| av_extend_guts|5.017004||Viu av_fetch|5.003007|5.003007| av_fetch_simple|5.035002||cV av_fill|5.003007|5.003007| AvFILL|5.003007|5.003007| AvFILLp|5.004005||pcV av_iter_p|||cu av_len|5.003007|5.003007| av_make|5.003007|5.003007| AvMAX|5.003007||Viu av_new_alloc|5.035001|5.035001| av_nonelem|5.027009||Viu av_pop|5.003007|5.003007| av_push|5.003007|5.003007| AvREAL|5.003007||Viu AvREALISH|5.003007||Viu AvREAL_off|5.003007||Viu AvREAL_on|5.003007||Viu AvREAL_only|5.009003||Viu AvREIFY|5.003007||Viu av_reify|5.004004||cViu AvREIFY_off|5.003007||Viu AvREIFY_on|5.003007||Viu AvREIFY_only|5.009003||Viu av_shift|5.003007|5.003007| av_store|5.003007|5.003007| av_store_simple|5.035002||cV av_tindex|5.017009|5.003007|p av_tindex_skip_len_mg|5.025010||Viu av_top_index|5.017009|5.003007|p av_top_index_skip_len_mg|5.025010||Viu av_undef|5.003007|5.003007| av_unshift|5.003007|5.003007| ax|5.003007|5.003007| backup_one_GCB|5.025003||Viu backup_one_LB|5.023007||Viu backup_one_SB|5.021009||Viu backup_one_WB|5.021009||Viu bad_type_gv|5.019002||Viu bad_type_pv|5.016000||Viu BADVERSION|5.011004||Viu BASEOP|5.003007||Viu BhkDISABLE|5.013003||xV BhkENABLE|5.013003||xV BhkENTRY|5.013003||xVi BhkENTRY_set|5.013003||xV BHKf_bhk_eval|5.013006||Viu BHKf_bhk_post_end|5.013006||Viu BHKf_bhk_pre_end|5.013006||Viu BHKf_bhk_start|5.013006||Viu BhkFLAGS|5.013003||xVi BIN|5.003007|5.003007|Vn bind|5.005000||Viu bind_match|5.003007||Viu BIN_EXP|5.004000|5.004000|Vn BIT_BUCKET|5.003007||Viu BIT_DIGITS|5.004000||Viu BITMAP_BYTE|5.009005||Viu BITMAP_TEST|5.009005||Viu blk_eval|5.003007||Viu blk_format|5.011000||Viu blk_gimme|5.003007||Viu blk_givwhen|5.027008||Viu blk_loop|5.003007||Viu blk_oldcop|5.003007||Viu blk_oldmarksp|5.003007||Viu blk_oldpm|5.003007||Viu blk_oldsaveix|5.023008||Viu blk_oldscopesp|5.003007||Viu blk_oldsp|5.003007||Viu blk_old_tmpsfloor|5.023008||Viu blk_sub|5.003007||Viu blk_u16|5.011000||Viu block_end|5.021006|5.021006| block_gimme|5.004000|5.004000|u blockhook_register|||x block_start|5.021006|5.021006| BmFLAGS|5.009005||Viu BmPREVIOUS|5.003007||Viu BmRARE|5.003007||Viu BmUSEFUL|5.003007||Viu BOL|5.003007||Viu BOL_t8|5.035004||Viu BOL_t8_p8|5.033003||Viu BOL_t8_pb|5.033003||Viu BOL_tb|5.035004||Viu BOL_tb_p8|5.033003||Viu BOL_tb_pb|5.033003||Viu BOM_UTF8|5.025005|5.003007|p BOM_UTF8_FIRST_BYTE|5.019004||Viu BOM_UTF8_TAIL|5.019004||Viu boolSV|5.004000|5.003007|p boot_core_builtin|5.035007||Viu boot_core_mro|5.009005||Viu boot_core_PerlIO|5.007002||Viu boot_core_UNIVERSAL|5.003007||Viu BOUND|5.003007||Viu BOUNDA|5.013009||Viu BOUNDA_t8|5.035004||Viu BOUNDA_t8_p8|5.033003||Viu BOUNDA_t8_pb|5.033003||Viu BOUNDA_tb|5.035004||Viu BOUNDA_tb_p8|5.033003||Viu BOUNDA_tb_pb|5.033003||Viu BOUNDL|5.004000||Viu BOUNDL_t8|5.035004||Viu BOUNDL_t8_p8|5.033003||Viu BOUNDL_t8_pb|5.033003||Viu BOUNDL_tb|5.035004||Viu BOUNDL_tb_p8|5.033003||Viu BOUNDL_tb_pb|5.033003||Viu BOUND_t8|5.035004||Viu BOUND_t8_p8|5.033003||Viu BOUND_t8_pb|5.033003||Viu BOUND_tb|5.035004||Viu BOUND_tb_p8|5.033003||Viu BOUND_tb_pb|5.033003||Viu BOUNDU|5.013009||Viu BOUNDU_t8|5.035004||Viu BOUNDU_t8_p8|5.033003||Viu BOUNDU_t8_pb|5.033003||Viu BOUNDU_tb|5.035004||Viu BOUNDU_tb_p8|5.033003||Viu BOUNDU_tb_pb|5.033003||Viu BRANCH|5.003007||Viu BRANCHJ|5.005000||Viu BRANCHJ_t8|5.035004||Viu BRANCHJ_t8_p8|5.033003||Viu BRANCHJ_t8_pb|5.033003||Viu BRANCHJ_tb|5.035004||Viu BRANCHJ_tb_p8|5.033003||Viu BRANCHJ_tb_pb|5.033003||Viu BRANCH_next|5.009005||Viu BRANCH_next_fail|5.009005||Viu BRANCH_next_fail_t8|5.035004||Viu BRANCH_next_fail_t8_p8|5.033003||Viu BRANCH_next_fail_t8_pb|5.033003||Viu BRANCH_next_fail_tb|5.035004||Viu BRANCH_next_fail_tb_p8|5.033003||Viu BRANCH_next_fail_tb_pb|5.033003||Viu BRANCH_next_t8|5.035004||Viu BRANCH_next_t8_p8|5.033003||Viu BRANCH_next_t8_pb|5.033003||Viu BRANCH_next_tb|5.035004||Viu BRANCH_next_tb_p8|5.033003||Viu BRANCH_next_tb_pb|5.033003||Viu BRANCH_t8|5.035004||Viu BRANCH_t8_p8|5.033003||Viu BRANCH_t8_pb|5.033003||Viu BRANCH_tb|5.035004||Viu BRANCH_tb_p8|5.033003||Viu BRANCH_tb_pb|5.033003||Viu BSD_GETPGRP|5.003007||Viu BSDish|5.008001||Viu BSD_SETPGRP|5.003007||Viu BUFSIZ|5.003007||Viu _byte_dump_string|5.025006||cViu BYTEORDER|5.003007|5.003007|Vn bytes_cmp_utf8|5.013007|5.013007| bytes_from_utf8|5.007001|5.007001|x bytes_from_utf8_loc|5.027001||xcVn bytes_to_utf8|5.006001|5.006001|x call_argv|5.006000|5.003007|p call_atexit|5.006000|5.006000|u CALL_BLOCK_HOOKS|5.013003||xVi CALL_CHECKER_REQUIRE_GV|5.021004|5.021004| caller_cx|5.013005|5.006000|p CALL_FPTR|5.006000||Viu call_list|5.004000|5.004000|u call_method|5.006000|5.003007|p calloc|5.029005||Vn call_pv|5.006000|5.003007|p CALLREGCOMP|5.005000||Viu CALLREGCOMP_ENG|5.009005||Viu CALLREGDUPE|5.009005||Viu CALLREGDUPE_PVT|5.009005||Viu CALLREGEXEC|5.005000||Viu CALLREGFREE|5.006000||Viu CALLREGFREE_PVT|5.009005||Viu CALLREG_INTUIT_START|5.006000||Viu CALLREG_INTUIT_STRING|5.006000||Viu CALLREG_NAMED_BUFF_ALL|5.009005||Viu CALLREG_NAMED_BUFF_CLEAR|5.009005||Viu CALLREG_NAMED_BUFF_COUNT|5.009005||Viu CALLREG_NAMED_BUFF_DELETE|5.009005||Viu CALLREG_NAMED_BUFF_EXISTS|5.009005||Viu CALLREG_NAMED_BUFF_FETCH|5.009005||Viu CALLREG_NAMED_BUFF_FIRSTKEY|5.009005||Viu CALLREG_NAMED_BUFF_NEXTKEY|5.009005||Viu CALLREG_NAMED_BUFF_SCALAR|5.009005||Viu CALLREG_NAMED_BUFF_STORE|5.009005||Viu CALLREG_NUMBUF_FETCH|5.009005||Viu CALLREG_NUMBUF_LENGTH|5.009005||Viu CALLREG_NUMBUF_STORE|5.009005||Viu CALLREG_PACKAGE|5.009005||Viu CALLRUNOPS|5.005000||Viu call_sv|5.006000|5.003007|p CAN64BITHASH|5.027001||Viu CAN_COW_FLAGS|5.009000||Viu CAN_COW_MASK|5.009000||Viu cando|5.003007||Viu CAN_PROTOTYPE|5.003007||Viu C_ARRAY_END|5.013002|5.003007|p C_ARRAY_LENGTH|5.008001|5.003007|p case_100_SBOX32|5.027001||Viu case_101_SBOX32|5.027001||Viu case_102_SBOX32|5.027001||Viu case_103_SBOX32|5.027001||Viu case_104_SBOX32|5.027001||Viu case_105_SBOX32|5.027001||Viu case_106_SBOX32|5.027001||Viu case_107_SBOX32|5.027001||Viu case_108_SBOX32|5.027001||Viu case_109_SBOX32|5.027001||Viu case_10_SBOX32|5.027001||Viu case_110_SBOX32|5.027001||Viu case_111_SBOX32|5.027001||Viu case_112_SBOX32|5.027001||Viu case_113_SBOX32|5.027001||Viu case_114_SBOX32|5.027001||Viu case_115_SBOX32|5.027001||Viu case_116_SBOX32|5.027001||Viu case_117_SBOX32|5.027001||Viu case_118_SBOX32|5.027001||Viu case_119_SBOX32|5.027001||Viu case_11_SBOX32|5.027001||Viu case_120_SBOX32|5.027001||Viu case_121_SBOX32|5.027001||Viu case_122_SBOX32|5.027001||Viu case_123_SBOX32|5.027001||Viu case_124_SBOX32|5.027001||Viu case_125_SBOX32|5.027001||Viu case_126_SBOX32|5.027001||Viu case_127_SBOX32|5.027001||Viu case_128_SBOX32|5.027001||Viu case_129_SBOX32|5.027001||Viu case_12_SBOX32|5.027001||Viu case_130_SBOX32|5.027001||Viu case_131_SBOX32|5.027001||Viu case_132_SBOX32|5.027001||Viu case_133_SBOX32|5.027001||Viu case_134_SBOX32|5.027001||Viu case_135_SBOX32|5.027001||Viu case_136_SBOX32|5.027001||Viu case_137_SBOX32|5.027001||Viu case_138_SBOX32|5.027001||Viu case_139_SBOX32|5.027001||Viu case_13_SBOX32|5.027001||Viu case_140_SBOX32|5.027001||Viu case_141_SBOX32|5.027001||Viu case_142_SBOX32|5.027001||Viu case_143_SBOX32|5.027001||Viu case_144_SBOX32|5.027001||Viu case_145_SBOX32|5.027001||Viu case_146_SBOX32|5.027001||Viu case_147_SBOX32|5.027001||Viu case_148_SBOX32|5.027001||Viu case_149_SBOX32|5.027001||Viu case_14_SBOX32|5.027001||Viu case_150_SBOX32|5.027001||Viu case_151_SBOX32|5.027001||Viu case_152_SBOX32|5.027001||Viu case_153_SBOX32|5.027001||Viu case_154_SBOX32|5.027001||Viu case_155_SBOX32|5.027001||Viu case_156_SBOX32|5.027001||Viu case_157_SBOX32|5.027001||Viu case_158_SBOX32|5.027001||Viu case_159_SBOX32|5.027001||Viu case_15_SBOX32|5.027001||Viu case_160_SBOX32|5.027001||Viu case_161_SBOX32|5.027001||Viu case_162_SBOX32|5.027001||Viu case_163_SBOX32|5.027001||Viu case_164_SBOX32|5.027001||Viu case_165_SBOX32|5.027001||Viu case_166_SBOX32|5.027001||Viu case_167_SBOX32|5.027001||Viu case_168_SBOX32|5.027001||Viu case_169_SBOX32|5.027001||Viu case_16_SBOX32|5.027001||Viu case_170_SBOX32|5.027001||Viu case_171_SBOX32|5.027001||Viu case_172_SBOX32|5.027001||Viu case_173_SBOX32|5.027001||Viu case_174_SBOX32|5.027001||Viu case_175_SBOX32|5.027001||Viu case_176_SBOX32|5.027001||Viu case_177_SBOX32|5.027001||Viu case_178_SBOX32|5.027001||Viu case_179_SBOX32|5.027001||Viu case_17_SBOX32|5.027001||Viu case_180_SBOX32|5.027001||Viu case_181_SBOX32|5.027001||Viu case_182_SBOX32|5.027001||Viu case_183_SBOX32|5.027001||Viu case_184_SBOX32|5.027001||Viu case_185_SBOX32|5.027001||Viu case_186_SBOX32|5.027001||Viu case_187_SBOX32|5.027001||Viu case_188_SBOX32|5.027001||Viu case_189_SBOX32|5.027001||Viu case_18_SBOX32|5.027001||Viu case_190_SBOX32|5.027001||Viu case_191_SBOX32|5.027001||Viu case_192_SBOX32|5.027001||Viu case_193_SBOX32|5.027001||Viu case_194_SBOX32|5.027001||Viu case_195_SBOX32|5.027001||Viu case_196_SBOX32|5.027001||Viu case_197_SBOX32|5.027001||Viu case_198_SBOX32|5.027001||Viu case_199_SBOX32|5.027001||Viu case_19_SBOX32|5.027001||Viu case_1_SBOX32|5.027001||Viu case_200_SBOX32|5.027001||Viu case_201_SBOX32|5.027001||Viu case_202_SBOX32|5.027001||Viu case_203_SBOX32|5.027001||Viu case_204_SBOX32|5.027001||Viu case_205_SBOX32|5.027001||Viu case_206_SBOX32|5.027001||Viu case_207_SBOX32|5.027001||Viu case_208_SBOX32|5.027001||Viu case_209_SBOX32|5.027001||Viu case_20_SBOX32|5.027001||Viu case_210_SBOX32|5.027001||Viu case_211_SBOX32|5.027001||Viu case_212_SBOX32|5.027001||Viu case_213_SBOX32|5.027001||Viu case_214_SBOX32|5.027001||Viu case_215_SBOX32|5.027001||Viu case_216_SBOX32|5.027001||Viu case_217_SBOX32|5.027001||Viu case_218_SBOX32|5.027001||Viu case_219_SBOX32|5.027001||Viu case_21_SBOX32|5.027001||Viu case_220_SBOX32|5.027001||Viu case_221_SBOX32|5.027001||Viu case_222_SBOX32|5.027001||Viu case_223_SBOX32|5.027001||Viu case_224_SBOX32|5.027001||Viu case_225_SBOX32|5.027001||Viu case_226_SBOX32|5.027001||Viu case_227_SBOX32|5.027001||Viu case_228_SBOX32|5.027001||Viu case_229_SBOX32|5.027001||Viu case_22_SBOX32|5.027001||Viu case_230_SBOX32|5.027001||Viu case_231_SBOX32|5.027001||Viu case_232_SBOX32|5.027001||Viu case_233_SBOX32|5.027001||Viu case_234_SBOX32|5.027001||Viu case_235_SBOX32|5.027001||Viu case_236_SBOX32|5.027001||Viu case_237_SBOX32|5.027001||Viu case_238_SBOX32|5.027001||Viu case_239_SBOX32|5.027001||Viu case_23_SBOX32|5.027001||Viu case_240_SBOX32|5.027001||Viu case_241_SBOX32|5.027001||Viu case_242_SBOX32|5.027001||Viu case_243_SBOX32|5.027001||Viu case_244_SBOX32|5.027001||Viu case_245_SBOX32|5.027001||Viu case_246_SBOX32|5.027001||Viu case_247_SBOX32|5.027001||Viu case_248_SBOX32|5.027001||Viu case_249_SBOX32|5.027001||Viu case_24_SBOX32|5.027001||Viu case_250_SBOX32|5.027001||Viu case_251_SBOX32|5.027001||Viu case_252_SBOX32|5.027001||Viu case_253_SBOX32|5.027001||Viu case_254_SBOX32|5.027001||Viu case_255_SBOX32|5.027001||Viu case_256_SBOX32|5.027001||Viu case_25_SBOX32|5.027001||Viu case_26_SBOX32|5.027001||Viu case_27_SBOX32|5.027001||Viu case_28_SBOX32|5.027001||Viu case_29_SBOX32|5.027001||Viu case_2_SBOX32|5.027001||Viu case_30_SBOX32|5.027001||Viu case_31_SBOX32|5.027001||Viu case_32_SBOX32|5.027001||Viu case_33_SBOX32|5.027001||Viu case_34_SBOX32|5.027001||Viu case_35_SBOX32|5.027001||Viu case_36_SBOX32|5.027001||Viu case_37_SBOX32|5.027001||Viu case_38_SBOX32|5.027001||Viu case_39_SBOX32|5.027001||Viu case_3_SBOX32|5.027001||Viu case_40_SBOX32|5.027001||Viu case_41_SBOX32|5.027001||Viu case_42_SBOX32|5.027001||Viu case_43_SBOX32|5.027001||Viu case_44_SBOX32|5.027001||Viu case_45_SBOX32|5.027001||Viu case_46_SBOX32|5.027001||Viu case_47_SBOX32|5.027001||Viu case_48_SBOX32|5.027001||Viu case_49_SBOX32|5.027001||Viu case_4_SBOX32|5.027001||Viu case_50_SBOX32|5.027001||Viu case_51_SBOX32|5.027001||Viu case_52_SBOX32|5.027001||Viu case_53_SBOX32|5.027001||Viu case_54_SBOX32|5.027001||Viu case_55_SBOX32|5.027001||Viu case_56_SBOX32|5.027001||Viu case_57_SBOX32|5.027001||Viu case_58_SBOX32|5.027001||Viu case_59_SBOX32|5.027001||Viu case_5_SBOX32|5.027001||Viu case_60_SBOX32|5.027001||Viu case_61_SBOX32|5.027001||Viu case_62_SBOX32|5.027001||Viu case_63_SBOX32|5.027001||Viu case_64_SBOX32|5.027001||Viu case_65_SBOX32|5.027001||Viu case_66_SBOX32|5.027001||Viu case_67_SBOX32|5.027001||Viu case_68_SBOX32|5.027001||Viu case_69_SBOX32|5.027001||Viu case_6_SBOX32|5.027001||Viu case_70_SBOX32|5.027001||Viu case_71_SBOX32|5.027001||Viu case_72_SBOX32|5.027001||Viu case_73_SBOX32|5.027001||Viu case_74_SBOX32|5.027001||Viu case_75_SBOX32|5.027001||Viu case_76_SBOX32|5.027001||Viu case_77_SBOX32|5.027001||Viu case_78_SBOX32|5.027001||Viu case_79_SBOX32|5.027001||Viu case_7_SBOX32|5.027001||Viu case_80_SBOX32|5.027001||Viu case_81_SBOX32|5.027001||Viu case_82_SBOX32|5.027001||Viu case_83_SBOX32|5.027001||Viu case_84_SBOX32|5.027001||Viu case_85_SBOX32|5.027001||Viu case_86_SBOX32|5.027001||Viu case_87_SBOX32|5.027001||Viu case_88_SBOX32|5.027001||Viu case_89_SBOX32|5.027001||Viu case_8_SBOX32|5.027001||Viu case_90_SBOX32|5.027001||Viu case_91_SBOX32|5.027001||Viu case_92_SBOX32|5.027001||Viu case_93_SBOX32|5.027001||Viu case_94_SBOX32|5.027001||Viu case_95_SBOX32|5.027001||Viu case_96_SBOX32|5.027001||Viu case_97_SBOX32|5.027001||Viu case_98_SBOX32|5.027001||Viu case_99_SBOX32|5.027001||Viu case_9_SBOX32|5.027001||Viu CASE_STD_PMMOD_FLAGS_PARSE_SET|5.009005||Viu CASTFLAGS|5.003007|5.003007|Vn cast_i32|5.006000||cVnu cast_iv|5.006000||cVnu CASTNEGFLOAT|5.003007|5.003007|Vn cast_ulong|5.003007||cVnu cast_uv|5.006000||cVnu CAT2|5.003007|5.003007|Vn CATCH_GET|5.004000||Viu CATCH_SET|5.004000||Viu category_name|5.027008||Vniu cBINOP|5.003007||Viu cBINOPo|5.004005||Viu cBINOPx|5.006000||Viu cBOOL|5.013000|5.003007|p cCOP|5.003007||Viu cCOPo|5.004005||Viu cCOPx|5.006000||Viu C_FAC_POSIX|5.009003||Viu cGVOP_gv|5.006000||Viu cGVOPo_gv|5.006000||Viu cGVOPx_gv|5.006000||Viu change_engine_size|5.029004||Viu CHANGE_MULTICALL_FLAGS|5.018000||Viu CHARBITS|5.011002|5.011002|Vn CHARSET_PAT_MODS|5.013010||Viu chdir|5.005000||Viu checkcomma|5.003007||Viu check_end_shift|5.009005||Viu check_locale_boundary_crossing|5.015006||Viu CHECK_MALLOC_TAINT|5.008001||Viu CHECK_MALLOC_TOO_LATE_FOR|5.008001||Viu check_offset_max|5.005000||Viu check_offset_min|5.005000||Viu check_substr|5.005000||Viu check_type_and_open|5.009003||Viu check_uni|5.003007||Viu check_utf8|5.008000||Viu check_utf8_print|5.013009||Viu child_offset_bits|5.009003||Viu chmod|5.005000||Viu chsize|5.005000||Viu ckDEAD|5.006000||Viu ck_entersub_args_core|||iu ck_entersub_args_list|5.013006|5.013006| ck_entersub_args_proto|5.013006|5.013006| ck_entersub_args_proto_or_list|5.013006|5.013006| ckWARN2|5.006000|5.003007|p ckWARN2_d|5.006000|5.003007|p ckWARN3|5.007003|5.003007|p ckWARN3_d|5.007003|5.003007|p ckWARN4|5.007003|5.003007|p ckWARN4_d|5.007003|5.003007|p ckWARN|5.006000|5.003007|p ckwarn_common|5.011001||Viu ckwarn|||cu ckWARN_d|5.006000|5.003007|p ckwarn_d|||cu ck_warner|5.011001||pvV ck_warner_d|5.011001||pvV CLANG_DIAG_IGNORE|5.023006||Viu CLANG_DIAG_IGNORE_DECL|5.027007||Viu CLANG_DIAG_IGNORE_STMT|5.027007||Viu CLANG_DIAG_PRAGMA|5.023006||Viu CLANG_DIAG_RESTORE|5.023006||Viu CLANG_DIAG_RESTORE_DECL|5.027007||Viu CLANG_DIAG_RESTORE_STMT|5.027007||Viu CLASS||5.003007| CLEAR_ARGARRAY|5.006000||Viu clear_defarray|5.023008|5.023008|u clearerr|5.003007||Viu CLEAR_ERRSV|5.025007|5.025007| CLEARFEATUREBITS|5.031006||Viu clear_placeholders|5.009004||xViu clear_special_blocks|5.021003||Viu cLISTOP|5.003007||Viu cLISTOPo|5.004005||Viu cLISTOPx|5.006000||Viu cLOGOP|5.003007||Viu cLOGOPo|5.004005||Viu cLOGOPx|5.006000||Viu CLONEf_CLONE_HOST|5.007002||Viu CLONEf_COPY_STACKS|5.007001||Viu CLONEf_JOIN_IN|5.008001||Viu CLONEf_KEEP_PTR_TABLE|5.007001||Viu clone_params_del|||nu clone_params_new|||nu cLOOP|5.003007||Viu cLOOPo|5.004005||Viu cLOOPx|5.006000||Viu CLOSE|5.003007||Viu close|5.005000||Viu closedir|5.005000||Viu closest_cop|5.007002||Viu CLOSE_t8|5.035004||Viu CLOSE_t8_p8|5.033003||Viu CLOSE_t8_pb|5.033003||Viu CLOSE_tb|5.035004||Viu CLOSE_tb_p8|5.033003||Viu CLOSE_tb_pb|5.033003||Viu CLUMP_2IV|5.006000||Viu CLUMP_2UV|5.006000||Viu CLUMP|5.006000||Viu CLUMP_t8|5.035004||Viu CLUMP_t8_p8|5.033003||Viu CLUMP_t8_pb|5.033003||Viu CLUMP_tb|5.035004||Viu CLUMP_tb_p8|5.033003||Viu CLUMP_tb_pb|5.033003||Viu cMETHOPx|5.021005||Viu cMETHOPx_meth|5.021005||Viu cMETHOPx_rclass|5.021007||Viu cmpchain_extend|5.031011||Viu cmpchain_finish|5.031011||Viu cmpchain_start|5.031011||Viu cmp_desc|5.031011||Viu cmp_locale_desc|5.031011||Viu cntrl_to_mnemonic|5.021004||cVniu CODESET|5.027010||Viu COMBINING_DOT_ABOVE_UTF8|5.029008||Viu COMBINING_GRAVE_ACCENT_UTF8|5.017004||Viu COMMIT|5.009005||Viu COMMIT_next|5.009005||Viu COMMIT_next_fail|5.009005||Viu COMMIT_next_fail_t8|5.035004||Viu COMMIT_next_fail_t8_p8|5.033003||Viu COMMIT_next_fail_t8_pb|5.033003||Viu COMMIT_next_fail_tb|5.035004||Viu COMMIT_next_fail_tb_p8|5.033003||Viu COMMIT_next_fail_tb_pb|5.033003||Viu COMMIT_next_t8|5.035004||Viu COMMIT_next_t8_p8|5.033003||Viu COMMIT_next_t8_pb|5.033003||Viu COMMIT_next_tb|5.035004||Viu COMMIT_next_tb_p8|5.033003||Viu COMMIT_next_tb_pb|5.033003||Viu COMMIT_t8|5.035004||Viu COMMIT_t8_p8|5.033003||Viu COMMIT_t8_pb|5.033003||Viu COMMIT_tb|5.035004||Viu COMMIT_tb_p8|5.033003||Viu COMMIT_tb_pb|5.033003||Viu compile_wildcard|5.031010||Viu compute_EXACTish|5.017003||Vniu COND_BROADCAST|5.005000||Viu COND_DESTROY|5.005000||Viu COND_INIT|5.005000||Viu COND_SIGNAL|5.005000||Viu COND_WAIT|5.005000||Viu connect|5.005000||Viu construct_ahocorasick_from_trie|5.021001||Viu CONTINUE_PAT_MOD|5.009005||Viu cop_fetch_label|5.031004|5.031004|x CopFILE|5.006000|5.003007|p CopFILEAV|5.006000|5.003007|p CopFILEAVn|5.035006|5.035006| cop_file_avn|5.035006||cVu CopFILEAVx|5.009003||Viu CopFILE_free|5.007003||Viu CopFILEGV|5.006000|5.003007|p CopFILEGV_set|5.006000|5.003007|p CopFILE_set|5.006000|5.003007|p CopFILE_setn|5.009005||Viu CopFILESV|5.006000|5.003007|p cop_free|5.006000||Viu cophh_2hv|5.013007|5.013007|x cophh_copy|5.013007|5.013007|x cophh_delete_pv|5.013007|5.013007|x cophh_delete_pvn|5.013007|5.013007|x cophh_delete_pvs|5.013007|5.013007|x cophh_delete_sv|5.013007|5.013007|x COPHH_EXISTS|5.033008||Viu cophh_exists_pv|5.033008|5.033008|x cophh_exists_pvn|5.033008|5.033008|x cophh_exists_pvs|5.033008|5.033008|x cophh_exists_sv|5.033008|5.033008|x cophh_fetch_pv|5.013007|5.013007|x cophh_fetch_pvn|5.013007|5.013007|x cophh_fetch_pvs|5.013007|5.013007|x cophh_fetch_sv|5.013007|5.013007|x cophh_free|5.013007|5.013007|x COPHH_KEY_UTF8|5.013007|5.013007| cophh_new_empty|5.013007|5.013007|x cophh_store_pv|5.013007|5.013007|x cophh_store_pvn|5.013007|5.013007|x cophh_store_pvs|5.013007|5.013007|x cophh_store_sv|5.013007|5.013007|x CopHINTHASH_get|5.013007||Viu CopHINTHASH_set|5.013007||Viu cop_hints_2hv|5.013007|5.013007| cop_hints_exists_pv|5.033008|5.033008| cop_hints_exists_pvn|5.033008|5.033008| cop_hints_exists_pvs|5.033008|5.033008| cop_hints_exists_sv|5.033008|5.033008| cop_hints_fetch_pv|5.013007|5.013007| cop_hints_fetch_pvn|5.013007|5.013007| cop_hints_fetch_pvs|5.013007|5.013007| cop_hints_fetch_sv|5.013007|5.013007| CopHINTS_get|5.009004||Viu CopHINTS_set|5.009004||Viu CopLABEL|5.009005|5.009005| CopLABEL_alloc|5.009005||Viu CopLABEL_len|5.016000|5.016000| CopLABEL_len_flags|5.016000|5.016000| CopLINE|5.006000|5.006000| CopLINE_dec|5.006000||Viu CopLINE_inc|5.006000||Viu CopLINE_set|5.006000||Viu COP_SEQMAX_INC|5.021006||Viu COP_SEQ_RANGE_HIGH|5.009005||Viu COP_SEQ_RANGE_LOW|5.009005||Viu CopSTASH|5.006000|5.003007|p CopSTASH_eq|5.006000|5.003007|p CopSTASH_ne|5.006000||Viu CopSTASHPV|5.006000|5.003007|p CopSTASHPV_set|5.017001|5.017001|p CopSTASH_set|5.006000|5.003007|p cop_store_label|5.031004|5.031004|x Copy|5.003007|5.003007| CopyD|5.009002|5.003007|p copy_length|||Viu core_prototype|5.015002||Vi coresub_op|5.015003||Viu CowREFCNT|5.017007||Viu cPADOP|5.006000||Viu cPADOPo|5.006000||Viu cPADOPx|5.006000||Viu CPERLarg|5.005000||Viu CPERLscope|5.005000|5.003007|pdV cPMOP|5.003007||Viu cPMOPo|5.004005||Viu cPMOPx|5.006000||Viu CPPLAST|5.006000|5.006000|Vn CPPMINUS|5.003007|5.003007|Vn CPPRUN|5.006000|5.006000|Vn CPPSTDIN|5.003007|5.003007|Vn cPVOP|5.003007||Viu cPVOPo|5.004005||Viu cPVOPx|5.006000||Viu create_eval_scope|5.009004||xViu CR_NATIVE|5.019004||Viu CRNCYSTR|5.027010||Viu croak|5.003007||vV croak_caller|5.025004||vVniu croak_memory_wrap|5.019003||pcVnu croak_nocontext|5.006000||pvVn croak_no_mem|5.017006||Vniu croak_no_modify|5.013003|5.003007|pn croak_popstack|5.017008||cVniu croak_sv|5.013001|5.003007|p croak_xs_usage|5.010001|5.003007|pn cr_textfilter|5.006000||Viu crypt|5.009000||Viu CRYPT_R_PROTO|5.008000|5.008000|Vn CSH|5.003007|5.003007|Vn csighandler1|5.031007||cVnu csighandler3|5.031007||cVnu csighandler|5.008001||cVnu cSVOP|5.003007||Viu cSVOPo|5.004005||Viu cSVOPo_sv|5.006000||Viu cSVOP_sv|5.006000||Viu cSVOPx|5.006000||Viu cSVOPx_sv|5.006000||Viu cSVOPx_svp|5.006000||Viu ctermid|5.009000||Viu CTERMID_R_PROTO|5.008000|5.008000|Vn ctime|5.009000||Viu CTIME_R_PROTO|5.008000|5.008000|Vn Ctl|5.003007||Viu CTYPE256|5.003007||Viu cUNOP|5.003007||Viu cUNOP_AUX|5.021007||Viu cUNOP_AUXo|5.021007||Viu cUNOP_AUXx|5.021007||Viu cUNOPo|5.004005||Viu cUNOPx|5.006000||Viu CURLY|5.003007||Viu CURLY_B_max|5.009005||Viu CURLY_B_max_fail|5.009005||Viu CURLY_B_max_fail_t8|5.035004||Viu CURLY_B_max_fail_t8_p8|5.033003||Viu CURLY_B_max_fail_t8_pb|5.033003||Viu CURLY_B_max_fail_tb|5.035004||Viu CURLY_B_max_fail_tb_p8|5.033003||Viu CURLY_B_max_fail_tb_pb|5.033003||Viu CURLY_B_max_t8|5.035004||Viu CURLY_B_max_t8_p8|5.033003||Viu CURLY_B_max_t8_pb|5.033003||Viu CURLY_B_max_tb|5.035004||Viu CURLY_B_max_tb_p8|5.033003||Viu CURLY_B_max_tb_pb|5.033003||Viu CURLY_B_min|5.009005||Viu CURLY_B_min_fail|5.009005||Viu CURLY_B_min_fail_t8|5.035004||Viu CURLY_B_min_fail_t8_p8|5.033003||Viu CURLY_B_min_fail_t8_pb|5.033003||Viu CURLY_B_min_fail_tb|5.035004||Viu CURLY_B_min_fail_tb_p8|5.033003||Viu CURLY_B_min_fail_tb_pb|5.033003||Viu CURLY_B_min_t8|5.035004||Viu CURLY_B_min_t8_p8|5.033003||Viu CURLY_B_min_t8_pb|5.033003||Viu CURLY_B_min_tb|5.035004||Viu CURLY_B_min_tb_p8|5.033003||Viu CURLY_B_min_tb_pb|5.033003||Viu CURLYM|5.005000||Viu CURLYM_A|5.009005||Viu CURLYM_A_fail|5.009005||Viu CURLYM_A_fail_t8|5.035004||Viu CURLYM_A_fail_t8_p8|5.033003||Viu CURLYM_A_fail_t8_pb|5.033003||Viu CURLYM_A_fail_tb|5.035004||Viu CURLYM_A_fail_tb_p8|5.033003||Viu CURLYM_A_fail_tb_pb|5.033003||Viu CURLYM_A_t8|5.035004||Viu CURLYM_A_t8_p8|5.033003||Viu CURLYM_A_t8_pb|5.033003||Viu CURLYM_A_tb|5.035004||Viu CURLYM_A_tb_p8|5.033003||Viu CURLYM_A_tb_pb|5.033003||Viu CURLYM_B|5.009005||Viu CURLYM_B_fail|5.009005||Viu CURLYM_B_fail_t8|5.035004||Viu CURLYM_B_fail_t8_p8|5.033003||Viu CURLYM_B_fail_t8_pb|5.033003||Viu CURLYM_B_fail_tb|5.035004||Viu CURLYM_B_fail_tb_p8|5.033003||Viu CURLYM_B_fail_tb_pb|5.033003||Viu CURLYM_B_t8|5.035004||Viu CURLYM_B_t8_p8|5.033003||Viu CURLYM_B_t8_pb|5.033003||Viu CURLYM_B_tb|5.035004||Viu CURLYM_B_tb_p8|5.033003||Viu CURLYM_B_tb_pb|5.033003||Viu CURLYM_t8|5.035004||Viu CURLYM_t8_p8|5.033003||Viu CURLYM_t8_pb|5.033003||Viu CURLYM_tb|5.035004||Viu CURLYM_tb_p8|5.033003||Viu CURLYM_tb_pb|5.033003||Viu CURLYN|5.005000||Viu CURLYN_t8|5.035004||Viu CURLYN_t8_p8|5.033003||Viu CURLYN_t8_pb|5.033003||Viu CURLYN_tb|5.035004||Viu CURLYN_tb_p8|5.033003||Viu CURLYN_tb_pb|5.033003||Viu CURLY_t8|5.035004||Viu CURLY_t8_p8|5.033003||Viu CURLY_t8_pb|5.033003||Viu CURLY_tb|5.035004||Viu CURLY_tb_p8|5.033003||Viu CURLY_tb_pb|5.033003||Viu CURLYX|5.003007||Viu CURLYX_end|5.009005||Viu CURLYX_end_fail|5.009005||Viu CURLYX_end_fail_t8|5.035004||Viu CURLYX_end_fail_t8_p8|5.033003||Viu CURLYX_end_fail_t8_pb|5.033003||Viu CURLYX_end_fail_tb|5.035004||Viu CURLYX_end_fail_tb_p8|5.033003||Viu CURLYX_end_fail_tb_pb|5.033003||Viu CURLYX_end_t8|5.035004||Viu CURLYX_end_t8_p8|5.033003||Viu CURLYX_end_t8_pb|5.033003||Viu CURLYX_end_tb|5.035004||Viu CURLYX_end_tb_p8|5.033003||Viu CURLYX_end_tb_pb|5.033003||Viu CURLYX_t8|5.035004||Viu CURLYX_t8_p8|5.033003||Viu CURLYX_t8_pb|5.033003||Viu CURLYX_tb|5.035004||Viu CURLYX_tb_p8|5.033003||Viu CURLYX_tb_pb|5.033003||Viu CURRENT_FEATURE_BUNDLE|5.015007||Viu CURRENT_HINTS|5.015007||Viu current_re_engine|5.017001||cViu curse|5.013009||Viu custom_op_desc|5.007003|5.007003|d custom_op_get_field|5.019006||cViu custom_op_name|5.007003|5.007003|d custom_op_register||| CUTGROUP|5.009005||Viu CUTGROUP_next|5.009005||Viu CUTGROUP_next_fail|5.009005||Viu CUTGROUP_next_fail_t8|5.035004||Viu CUTGROUP_next_fail_t8_p8|5.033003||Viu CUTGROUP_next_fail_t8_pb|5.033003||Viu CUTGROUP_next_fail_tb|5.035004||Viu CUTGROUP_next_fail_tb_p8|5.033003||Viu CUTGROUP_next_fail_tb_pb|5.033003||Viu CUTGROUP_next_t8|5.035004||Viu CUTGROUP_next_t8_p8|5.033003||Viu CUTGROUP_next_t8_pb|5.033003||Viu CUTGROUP_next_tb|5.035004||Viu CUTGROUP_next_tb_p8|5.033003||Viu CUTGROUP_next_tb_pb|5.033003||Viu CUTGROUP_t8|5.035004||Viu CUTGROUP_t8_p8|5.033003||Viu CUTGROUP_t8_pb|5.033003||Viu CUTGROUP_tb|5.035004||Viu CUTGROUP_tb_p8|5.033003||Viu CUTGROUP_tb_pb|5.033003||Viu CvANON|5.003007||Viu CvANONCONST|5.021008||Viu CvANONCONST_off|5.021008||Viu CvANONCONST_on|5.021008||Viu CvANON_off|5.003007||Viu CvANON_on|5.003007||Viu CvAUTOLOAD|5.015004||Viu CvAUTOLOAD_off|5.015004||Viu CvAUTOLOAD_on|5.015004||Viu cv_ckproto|5.009004||Viu cv_ckproto_len_flags|5.015004||xcViu CvCLONE|5.003007||Viu cv_clone|5.015001|5.015001| CvCLONED|5.003007||Viu CvCLONED_off|5.003007||Viu CvCLONED_on|5.003007||Viu cv_clone_into|5.017004||Viu CvCLONE_off|5.003007||Viu CvCLONE_on|5.003007||Viu CvCONST|5.007001||Viu CvCONST_off|5.007001||Viu CvCONST_on|5.007001||Viu cv_const_sv|5.003007|5.003007|n cv_const_sv_or_av|5.019003||Vniu CvCVGV_RC|5.013003||Viu CvCVGV_RC_off|5.013003||Viu CvCVGV_RC_on|5.013003||Viu CvDEPTH|5.003007|5.003007|nu CvDEPTHunsafe|5.021006||Viu cv_dump|5.006000||Vi CvDYNFILE|5.015002||Viu CvDYNFILE_off|5.015002||Viu CvDYNFILE_on|5.015002||Viu CvEVAL|5.005003||Viu CvEVAL_off|5.005003||Viu CvEVAL_on|5.005003||Viu CVf_ANON|5.003007||Viu CVf_ANONCONST|5.021008||Viu CVf_AUTOLOAD|5.015004||Viu CVf_BUILTIN_ATTRS|5.008000||Viu CVf_CLONE|5.003007||Viu CVf_CLONED|5.003007||Viu CVf_CONST|5.007001||Viu CVf_CVGV_RC|5.013003||Viu CVf_DYNFILE|5.015002||Viu CVf_HASEVAL|5.017002||Viu CvFILE|5.006000||Viu CvFILEGV|5.003007||Viu CvFILE_set_from_cop|5.007002||Viu CVf_ISXSUB|5.009004||Viu CvFLAGS|5.003007||Viu CVf_LEXICAL|5.021004||Viu CVf_LVALUE|5.006000||Viu CVf_METHOD|5.005000||Viu CVf_NAMED|5.017004||Viu CVf_NODEBUG|5.004000||Viu cv_forget_slab|5.017002||Vi CVf_SIGNATURE|5.035009||Viu CVf_SLABBED|5.017002||Viu CVf_UNIQUE|5.004000||Viu CVf_WEAKOUTSIDE|5.008001||Viu cv_get_call_checker|5.013006|5.013006| cv_get_call_checker_flags|5.027003|5.027003| CvGV|5.003007|5.003007| cvgv_from_hek|||ciu cvgv_set|5.013003||cViu CvGV_set|5.013003||Viu CvHASEVAL|5.017002||Viu CvHASEVAL_off|5.017002||Viu CvHASEVAL_on|5.017002||Viu CvHASGV|5.021004||Viu CvHSCXT|5.021006||Viu CvISXSUB|5.009004||Viu CvISXSUB_off|5.009004||Viu CvISXSUB_on|5.009004||Viu CvLEXICAL|5.021004||Viu CvLEXICAL_off|5.021004||Viu CvLEXICAL_on|5.021004||Viu CvLVALUE|5.006000||Viu CvLVALUE_off|5.006000||Viu CvLVALUE_on|5.006000||Viu CvMETHOD|5.005000||Viu CvMETHOD_off|5.005000||Viu CvMETHOD_on|5.005000||Viu cv_name|5.021005|5.021005| CvNAMED|5.017004||Viu CvNAMED_off|5.017004||Viu CvNAMED_on|5.017004||Viu CvNAME_HEK_set|5.017004||Viu CV_NAME_NOTQUAL|5.021005|5.021005| CvNODEBUG|5.004000||Viu CvNODEBUG_off|5.004000||Viu CvNODEBUG_on|5.004000||Viu CvOUTSIDE|5.003007||Viu CvOUTSIDE_SEQ|5.008001||Viu CvPADLIST|5.008001|5.008001|x CvPADLIST_set|5.021006||Viu CvPROTO|5.015004||Viu CvPROTOLEN|5.015004||Viu CvROOT|5.003007||Viu cv_set_call_checker|5.013006|5.013006| cv_set_call_checker_flags|5.021004|5.021004| CvSIGNATURE|5.035009||Viu CvSIGNATURE_off|5.035009||Viu CvSIGNATURE_on|5.035009||Viu CvSLABBED|5.017002||Viu CvSLABBED_off|5.017002||Viu CvSLABBED_on|5.017002||Viu CvSPECIAL|5.005003||Viu CvSPECIAL_off|5.005003||Viu CvSPECIAL_on|5.005003||Viu CvSTART|5.003007||Viu CvSTASH|5.003007|5.003007| cvstash_set|5.013007||cViu CvSTASH_set|5.013007||Viu cv_undef|5.003007|5.003007| cv_undef_flags|5.021004||Viu CV_UNDEF_KEEP_NAME|5.021004||Viu CvUNIQUE|5.004000||Viu CvUNIQUE_off|5.004000||Viu CvUNIQUE_on|5.004000||Viu CvWEAKOUTSIDE|5.008001||Vi CvWEAKOUTSIDE_off|5.008001||Viu CvWEAKOUTSIDE_on|5.008001||Viu CvXSUB|5.003007||Viu CvXSUBANY|5.003007||Viu CX_CUR|5.023008||Viu CX_CURPAD_SAVE|5.008001||Vi CX_CURPAD_SV|5.008001||Vi CX_DEBUG|5.023008||Viu cx_dump|5.003007||cVu cx_dup|5.006000||cVu CxEVALBLOCK|5.033007||Viu CxEVAL_TXT_REFCNTED|5.025007||Viu CxFOREACH|5.009003||Viu CxHASARGS|5.010001||Viu cxinc|5.003007||cVu CXINC|5.003007||Viu CxITERVAR|5.006000||Viu CxLABEL|5.010001||Viu CxLABEL_len|5.016000||Viu CxLABEL_len_flags|5.016000||Viu CX_LEAVE_SCOPE|5.023008||Viu CxLVAL|5.010001||Viu CxMULTICALL|5.009003||Viu CxOLD_IN_EVAL|5.010001||Viu CxOLD_OP_TYPE|5.010001||Viu CxONCE|5.010001||Viu CxPADLOOP|5.006000||Viu CXp_EVALBLOCK|5.033007||Viu CXp_FINALLY|5.035008||Viu CXp_FOR_DEF|5.027008||Viu CXp_FOR_GV|5.023008||Viu CXp_FOR_LVREF|5.021005||Viu CXp_FOR_PAD|5.023008||Viu CXp_HASARGS|5.011000||Viu CXp_MULTICALL|5.009003||Viu CXp_ONCE|5.011000||Viu CX_POP|5.023008||Viu cx_popblock|5.023008||xcVu cx_popeval|5.023008||xcVu cx_popformat|5.023008||xcVu cx_popgiven|5.027008||xcVu cx_poploop|5.023008||xcVu CX_POP_SAVEARRAY|5.023008||Viu cx_popsub|5.023008||xcVu cx_popsub_args|5.023008||xcVu cx_popsub_common|5.023008||xcVu CX_POPSUBST|5.023008||Viu cx_popwhen|5.027008||xcVu CXp_REAL|5.005003||Viu CXp_SUB_RE|5.018000||Viu CXp_SUB_RE_FAKE|5.018000||Viu CXp_TRY|5.033007||Viu CXp_TRYBLOCK|5.006000||Viu cx_pushblock|5.023008||xcVu cx_pusheval|5.023008||xcVu cx_pushformat|5.023008||xcVu cx_pushgiven|5.027008||xcVu cx_pushloop_for|5.023008||xcVu cx_pushloop_plain|5.023008||xcVu cx_pushsub|5.023008||xcVu CX_PUSHSUB_GET_LVALUE_MASK|5.023008||Viu CX_PUSHSUBST|5.023008||Viu cx_pushtry|5.033007||xcVu cx_pushwhen|5.027008||xcVu CxREALEVAL|5.005003||Viu cxstack|5.005000||Viu cxstack_ix|5.005000||Viu cxstack_max|5.005000||Viu CXt_BLOCK|5.003007||Viu CXt_DEFER|5.035004||Viu CXt_EVAL|5.003007||Viu CXt_FORMAT|5.006000||Viu CXt_GIVEN|5.027008||Viu CXt_LOOP_ARY|5.023008||Viu CXt_LOOP_LAZYIV|5.011000||Viu CXt_LOOP_LAZYSV|5.011000||Viu CXt_LOOP_LIST|5.023008||Viu CXt_LOOP_PLAIN|5.011000||Viu CXt_NULL|5.003007||Viu cx_topblock|5.023008||xcVu CxTRY|5.033007||Viu CxTRYBLOCK|5.006000||Viu CXt_SUB|5.003007||Viu CXt_SUBST|5.003007||Viu CXt_WHEN|5.027008||Viu CxTYPE|5.005003||Viu cx_type|5.009005||Viu CxTYPE_is_LOOP|5.011000||Viu CXTYPEMASK|5.005003||Viu dATARGET|5.003007||Viu dAX|5.007002|5.003007|p dAXMARK|5.009003|5.003007|p DAY_1|5.027010||Viu DAY_2|5.027010||Viu DAY_3|5.027010||Viu DAY_4|5.027010||Viu DAY_5|5.027010||Viu DAY_6|5.027010||Viu DAY_7|5.027010||Viu DB_Hash_t|5.003007|5.003007|Vn DBM_ckFilter|5.008001||Viu DBM_setFilter|5.008001||Viu DB_Prefix_t|5.003007|5.003007|Vn DBVARMG_COUNT|5.021005||Viu DBVARMG_SIGNAL|5.021005||Viu DBVARMG_SINGLE|5.021005||Viu DBVARMG_TRACE|5.021005||Viu DB_VERSION_MAJOR_CFG|5.007002|5.007002|Vn DB_VERSION_MINOR_CFG|5.007002|5.007002|Vn DB_VERSION_PATCH_CFG|5.007002|5.007002|Vn deb|5.003007||vVu deb_curcv|5.007002||Viu deb_nocontext|5.006000||vVnu debop|5.005000|5.005000|u debprof|5.005000||Viu debprofdump|5.005000|5.005000|u debstack|5.007003|5.007003|u deb_stack_all|5.008001||Viu deb_stack_n|5.008001||Viu debstackptrs|5.007003|5.007003|u DEBUG|5.003007||Viu DEBUG_A|5.009001||Viu DEBUG_A_FLAG|5.009001||Viu DEBUG_A_TEST|5.009001||Viu DEBUG_B|5.011000||Viu DEBUG_B_FLAG|5.011000||Viu DEBUG_BOTH_FLAGS_TEST|5.033007||Viu DEBUG_B_TEST|5.011000||Viu DEBUG_BUFFERS_r|5.009005||Viu DEBUG_c|5.003007||Viu DEBUG_C|5.009000||Viu DEBUG_c_FLAG|5.007001||Viu DEBUG_C_FLAG|5.009000||Viu DEBUG_COMPILE_r|5.009002||Viu DEBUG_c_TEST|5.007001||Viu DEBUG_C_TEST|5.009000||Viu DEBUG_D|5.003007||Viu DEBUG_DB_RECURSE_FLAG|5.007001||Viu DEBUG_D_FLAG|5.007001||Viu DEBUG_D_TEST|5.007001||Viu DEBUG_DUMP_PRE_OPTIMIZE_r|5.031004||Viu DEBUG_DUMP_r|5.009004||Viu DEBUG_EXECUTE_r|5.009002||Viu DEBUG_EXTRA_r|5.009004||Viu DEBUG_f|5.003007||Viu DEBUG_f_FLAG|5.007001||Viu DEBUG_FLAGS_r|5.009005||Viu DEBUG_f_TEST|5.007001||Viu DEBUG_GPOS_r|5.011000||Viu DEBUG_i|5.025002||Viu DEBUG_i_FLAG|5.025002||Viu DEBUG_INTUIT_r|5.009004||Viu DEBUG_i_TEST|5.025002||Viu DEBUG_J_FLAG|5.007003||Viu DEBUG_J_TEST|5.007003||Viu DEBUG_l|5.003007||Viu DEBUG_L|5.019009||Viu DEBUG_l_FLAG|5.007001||Viu DEBUG_L_FLAG|5.019009||Viu DEBUG_l_TEST|5.007001||Viu DEBUG_L_TEST|5.019009||Viu DEBUG_Lv|5.023003||Viu DEBUG_Lv_TEST|5.023003||Viu DEBUG_m|5.003007||Viu DEBUG_M|5.027008||Viu DEBUG_MASK|5.007001||Viu DEBUG_MATCH_r|5.009004||Viu DEBUG_m_FLAG|5.007001||Viu DEBUG_M_FLAG|5.027008||Viu DEBUG_m_TEST|5.007001||Viu DEBUG_M_TEST|5.027008||Viu DEBUG_o|5.003007||Viu DEBUG_o_FLAG|5.007001||Viu DEBUG_OPTIMISE_MORE_r|5.009005||Viu DEBUG_OPTIMISE_r|5.009002||Viu DEBUG_o_TEST|5.007001||Viu DEBUG_P|5.003007||Viu DEBUG_p|5.003007||Viu DEBUG_PARSE_r|5.009004||Viu DEBUG_P_FLAG|5.007001||Viu DEBUG_p_FLAG|5.007001||Viu DEBUG_POST_STMTS|5.033008||Viu DEBUG_PRE_STMTS|5.033008||Viu DEBUG_P_TEST|5.007001||Viu DEBUG_p_TEST|5.007001||Viu DEBUG_Pv|5.013008||Viu DEBUG_Pv_TEST|5.013008||Viu DEBUG_q|5.009001||Viu DEBUG_q_FLAG|5.009001||Viu DEBUG_q_TEST|5.009001||Viu DEBUG_r|5.003007||Viu DEBUG_R|5.007001||Viu DEBUG_R_FLAG|5.007001||Viu DEBUG_r_FLAG|5.007001||Viu DEBUG_R_TEST|5.007001||Viu DEBUG_r_TEST|5.007001||Viu DEBUG_s|5.003007||Viu DEBUG_S|5.017002||Viu DEBUG_SBOX32_HASH|5.027001||Viu DEBUG_SCOPE|5.008001||Viu DEBUG_s_FLAG|5.007001||Viu DEBUG_S_FLAG|5.017002||Viu DEBUG_STACK_r|5.009005||Viu debug_start_match|5.009004||Viu DEBUG_STATE_r|5.009004||Viu DEBUG_s_TEST|5.007001||Viu DEBUG_S_TEST|5.017002||Viu DEBUG_t|5.003007||Viu DEBUG_T|5.007001||Viu DEBUG_TEST_r|5.021005||Viu DEBUG_T_FLAG|5.007001||Viu DEBUG_t_FLAG|5.007001||Viu DEBUG_TOP_FLAG|5.007001||Viu DEBUG_TRIE_COMPILE_MORE_r|5.009002||Viu DEBUG_TRIE_COMPILE_r|5.009002||Viu DEBUG_TRIE_EXECUTE_MORE_r|5.009002||Viu DEBUG_TRIE_EXECUTE_r|5.009002||Viu DEBUG_TRIE_r|5.009002||Viu DEBUG_T_TEST|5.007001||Viu DEBUG_t_TEST|5.007001||Viu DEBUG_u|5.003007||Viu DEBUG_U|5.009005||Viu DEBUG_u_FLAG|5.007001||Viu DEBUG_U_FLAG|5.009005||Viu DEBUG_u_TEST|5.007001||Viu DEBUG_U_TEST|5.009005||Viu DEBUG_Uv|5.009005||Viu DEBUG_Uv_TEST|5.009005||Viu DEBUG_v|5.008001||Viu DEBUG_v_FLAG|5.008001||Viu DEBUG_v_TEST|5.008001||Viu DEBUG_X|5.003007||Viu DEBUG_x|5.003007||Viu DEBUG_X_FLAG|5.007001||Viu DEBUG_x_FLAG|5.007001||Viu DEBUG_X_TEST|5.007001||Viu DEBUG_x_TEST|5.007001||Viu DEBUG_Xv|5.008001||Viu DEBUG_Xv_TEST|5.008001||Viu DEBUG_y|5.031007||Viu DEBUG_y_FLAG|5.031007||Viu DEBUG_y_TEST|5.031007||Viu DEBUG_yv|5.031007||Viu DEBUG_yv_TEST|5.031007||Viu DEBUG_ZAPHOD32_HASH|5.027001||Viu DECLARATION_FOR_LC_NUMERIC_MANIPULATION|5.021010|5.021010|p DECLARE_AND_GET_RE_DEBUG_FLAGS|5.031011||Viu DECLARE_AND_GET_RE_DEBUG_FLAGS_NON_REGEX|5.031011||Viu DEFAULT_INC_EXCLUDES_DOT|5.025011|5.025011|Vn DEFAULT_PAT_MOD|5.013006||Viu defelem_target|5.019002||Viu DEFINE_INC_MACROS|5.027006||Viu DEFINEP|5.009005||Viu DEFINEP_t8|5.035004||Viu DEFINEP_t8_p8|5.033003||Viu DEFINEP_t8_pb|5.033003||Viu DEFINEP_tb|5.035004||Viu DEFINEP_tb_p8|5.033003||Viu DEFINEP_tb_pb|5.033003||Viu DEFSV|5.004005|5.003007|p DEFSV_set|5.010001|5.003007|p del_body_by_type|||Viu delete_eval_scope|5.009004||xViu delimcpy|5.004000|5.004000|n delimcpy_no_escape|5.025005||cVni DEL_NATIVE|5.017010||Viu del_sv|5.005000||Viu DEPENDS_PAT_MOD|5.013009||Viu DEPENDS_PAT_MODS|5.013009||Viu deprecate|5.011001||Viu deprecate_disappears_in|5.025009||Viu deprecate_fatal_in|5.025009||Viu despatch_signals|5.007001||cVu destroy_matcher|5.027008||Viu DETACH|5.005000||Viu dEXT|5.003007||Viu dEXTCONST|5.004000||Viu DFA_RETURN_FAILURE|5.035004||Viu DFA_RETURN_SUCCESS|5.035004||Viu DFA_TEASE_APART_FF|5.035004||Viu D_FMT|5.027010||Viu DIE|5.003007||Viu die|5.003007||vV die_nocontext|5.006000||vVn die_sv|5.013001|5.003007|p die_unwind|5.013001||Viu Direntry_t|5.003007|5.003007|Vn dirp_dup|5.013007|5.013007|u dITEMS|5.007002|5.003007|p div128|5.005000||Viu dJMPENV|5.004000||Viu djSP|5.004005||Vi dMARK|5.003007|5.003007| DM_ARRAY_ISA|5.013002||Viu DM_DELAY|5.003007||Viu DM_EGID|5.003007||Viu DM_EUID|5.003007||Viu DM_GID|5.003007||Viu DM_RGID|5.003007||Viu DM_RUID|5.003007||Viu DM_UID|5.003007||Viu dMULTICALL|5.009003|5.009003| dMY_CXT|5.009000|5.009000|p dMY_CXT_INTERP|5.009003||Viu dMY_CXT_SV|5.007003|5.003007|pV dNOOP|5.006000|5.003007|p do_aexec|5.009003||Viu do_aexec5|5.006000||Viu do_aspawn|5.008000||Vu do_binmode|5.004005|5.004005|du docatch|5.005000||Vi do_chomp|5.003007||Viu do_close|5.003007|5.003007|u do_delete_local|5.011000||Viu do_dump_pad|5.008001||Vi do_eof|5.003007||Viu does_utf8_overflow|5.025006||Vniu doeval_compile|5.023008||Viu do_exec3|5.006000||Viu do_exec|5.009003||Viu dofile|5.005003||Viu dofindlabel|5.003007||Viu doform|5.005000||Viu do_gv_dump|5.006000||cVu do_gvgv_dump|5.006000||cVu do_hv_dump|5.006000||cVu doing_taint|5.008001||cVnu DOINIT|5.003007||Viu do_ipcctl|5.003007||Viu do_ipcget|5.003007||Viu do_join|5.003007|5.003007|u do_magic_dump|5.006000||cVu do_msgrcv|5.003007||Viu do_msgsnd|5.003007||Viu do_ncmp|5.015001||Viu do_oddball|5.006000||Viu dooneliner|5.006000||Viu do_op_dump|5.006000||cVu do_open|5.003007|5.003007|u do_open6|5.019010||xViu do_open9|5.006000|5.006000|du do_openn|5.007001|5.007001|u doopen_pm|5.008001||Viu do_open_raw|5.019010||xViu doparseform|5.005000||Viu do_pmop_dump|5.006000||cVu dopoptoeval|5.003007||Viu dopoptogivenfor|5.027008||Viu dopoptolabel|5.005000||Viu dopoptoloop|5.005000||Viu dopoptosub_at|5.005000||Viu dopoptowhen|5.027008||Viu do_print|5.003007||Viu do_readline|5.003007||Viu doref|5.009003|5.009003|u dORIGMARK|5.003007|5.003007| do_seek|5.003007||Viu do_semop|5.003007||Viu do_shmio|5.003007||Viu DOSISH|5.003007||Viu do_smartmatch|5.027008||Viu do_spawn|5.008000||Vu do_spawn_nowait|5.008000||Vu do_sprintf|5.003007|5.003007|u do_sv_dump|5.006000||cVu do_sysseek|5.004000||Viu do_tell|5.003007||Viu do_trans|5.003007||Viu do_trans_complex|5.006001||Viu do_trans_count|5.006001||Viu do_trans_count_invmap|5.031006||Viu do_trans_invmap|5.031006||Viu do_trans_simple|5.006001||Viu DOUBLE_BIG_ENDIAN|5.021009||Viu DOUBLE_HAS_INF|5.025003|5.025003|Vn DOUBLE_HAS_NAN|5.025003|5.025003|Vn DOUBLE_HAS_NEGATIVE_ZERO|5.025007|5.025007|Vn DOUBLE_HAS_SUBNORMALS|5.025007|5.025007|Vn DOUBLEINFBYTES|5.023000|5.023000|Vn DOUBLE_IS_CRAY_SINGLE_64_BIT|5.025006|5.025006|Vn DOUBLE_IS_IBM_DOUBLE_64_BIT|5.025006|5.025006|Vn DOUBLE_IS_IBM_SINGLE_32_BIT|5.025006|5.025006|Vn DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN|5.021006|5.021006|Vn DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN|5.021006|5.021006|Vn DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN|5.021006|5.021006|Vn DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN|5.021006|5.021006|Vn DOUBLE_IS_IEEE_754_64_BIT_BIG_ENDIAN|5.021006|5.021006|Vn DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN|5.021006|5.021006|Vn DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE|5.021006|5.021006|Vn DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE|5.021006|5.021006|Vn DOUBLE_IS_IEEE_FORMAT|5.025003||Viu DOUBLE_IS_UNKNOWN_FORMAT|5.021006|5.021006|Vn DOUBLE_IS_VAX_D_FLOAT|5.025003|5.025003|Vn DOUBLE_IS_VAX_F_FLOAT|5.025003|5.025003|Vn DOUBLE_IS_VAX_FLOAT|5.025003||Viu DOUBLE_IS_VAX_G_FLOAT|5.025003|5.025003|Vn DOUBLEKIND|5.021006|5.021006|Vn DOUBLE_LITTLE_ENDIAN|5.021009||Viu DOUBLEMANTBITS|5.023000|5.023000|Vn DOUBLE_MIX_ENDIAN|5.021009||Viu DOUBLENANBYTES|5.023000|5.023000|Vn DOUBLESIZE|5.005000|5.005000|Vn DOUBLE_STYLE_IEEE|5.025007|5.025007|Vn DOUBLE_VAX_ENDIAN|5.025003||Viu do_uniprop_match|5.031011||cVniu dounwind|5.003007|5.003007|u DO_UTF8|5.006000|5.006000| do_vecget|5.006000||Viu do_vecset|5.003007||Viu do_vop|5.003007||Viu dowantarray|5.003007|5.003007|u dPOPiv|5.003007||Viu dPOPnv|5.003007||Viu dPOPnv_nomg|5.013002||Viu dPOPPOPiirl|5.003007||Viu dPOPPOPnnrl|5.003007||Viu dPOPPOPssrl|5.003007||Viu dPOPss|5.003007||Viu dPOPTOPiirl|5.003007||Viu dPOPTOPiirl_nomg|5.013002||Viu dPOPTOPiirl_ul_nomg|5.013002||Viu dPOPTOPnnrl|5.003007||Viu dPOPTOPnnrl_nomg|5.013002||Viu dPOPTOPssrl|5.003007||Viu dPOPuv|5.004000||Viu dPOPXiirl|5.004000||Viu dPOPXiirl_ul_nomg|5.013002||Viu dPOPXnnrl|5.004000||Viu dPOPXssrl|5.004000||Viu DPTR2FPTR|5.009003||Viu Drand01|5.006000|5.006000| drand48_init_r|||cniu drand48_r|||cniu DRAND48_R_PROTO|5.008000|5.008000|Vn dSAVEDERRNO|5.010001||Vi dSAVE_ERRNO|5.010001||Vi dSP|5.003007|5.003007| dSS_ADD|5.017007||Viu dTARG|5.003007||Viu dTARGET|5.003007|5.003007| dTARGETSTACKED|5.003007||Viu D_T_FMT|5.027010||Viu dTHR|5.004005|5.003007|p dTHX|5.003007|5.003007|p dTHXa|5.006000|5.003007|p dTHX_DEBUGGING|5.027009||Viu dTHXo|5.006000||Viu dTHXoa|5.006001|5.003007|p dTHXR||5.003007|ponu dTHXs|5.007002||Viu dTHXx|5.006000||Viu dTOPiv|5.003007||Viu dTOPnv|5.003007||Viu dTOPss|5.003007||Viu dTOPuv|5.004000||Viu dtrace_probe_call|||ciu dtrace_probe_load|||ciu dtrace_probe_op|||ciu dtrace_probe_phase|||ciu dump_all|5.006000|5.006000| dump_all_perl|5.011000||Viu dump_c_backtrace|5.021001||V dump_eval|5.006000|5.006000|u dump_exec_pos|5.009004||Viu dump_form|5.006000|5.006000|u dump_indent|5.006000||vcVu dump_mstats|5.003007||Vu dump_packsubs|5.006000|5.006000| dump_packsubs_perl|5.011000||Viu dump_regex_sets_structures|5.025006||Viu dump_sub|5.006000|5.006000|u dump_sub_perl|5.011000||Viu dump_sv_child|5.009003||Viu dump_trie|5.009004||Viu dump_trie_interim_list|5.009004||Viu dump_trie_interim_table|5.009004||Viu dumpuntil|5.005000||Viu dump_vindent|5.006000||cVu dUNDERBAR|5.009002|5.003007|p dup2|5.005000||Viu dup|5.005000||Viu dup_attrlist|5.006000||Viu DUP_WARNINGS|5.009004||Viu dup_warnings|||ciu dVAR|5.009003|5.003007|p dXCPT|5.009002|5.003007|p dXSARGS|5.003007|5.003007| dXSBOOTARGSAPIVERCHK|5.021006||Viu dXSBOOTARGSNOVERCHK|5.021006||Viu dXSBOOTARGSXSAPIVERCHK|5.021006||Viu dXSFUNCTION|5.005000||Viu dXSI32|5.003007|5.003007|V dXSTARG|5.006000|5.003007|poVnu dXSUB_SYS|5.003007||Viu edit_distance|5.023008||Vniu EIGHT_BIT_UTF8_TO_NATIVE|5.023003||Viu ELEMENT_RANGE_MATCHES_INVLIST|5.023002||Viu EMBEDMYMALLOC|5.006000||Viu emulate_cop_io|||xciu emulate_setlocale|5.027009||Vniu END|5.003007||Viu END_EXTERN_C|5.005000|5.003007|pV endgrent|5.009000||Viu ENDGRENT_R_HAS_FPTR|5.008000||Viu ENDGRENT_R_PROTO|5.008000|5.008000|Vn endhostent|5.005000||Viu ENDHOSTENT_R_PROTO|5.008000|5.008000|Vn ENDLIKE|5.009005||Viu ENDLIKE_t8|5.035004||Viu ENDLIKE_t8_p8|5.033003||Viu ENDLIKE_t8_pb|5.033003||Viu ENDLIKE_tb|5.035004||Viu ENDLIKE_tb_p8|5.033003||Viu ENDLIKE_tb_pb|5.033003||Viu endnetent|5.005000||Viu ENDNETENT_R_PROTO|5.008000|5.008000|Vn endprotoent|5.005000||Viu ENDPROTOENT_R_PROTO|5.008000|5.008000|Vn endpwent|5.009000||Viu ENDPWENT_R_HAS_FPTR|5.008000||Viu ENDPWENT_R_PROTO|5.008000|5.008000|Vn endservent|5.005000||Viu ENDSERVENT_R_PROTO|5.008000|5.008000|Vn END_t8|5.035004||Viu END_t8_p8|5.033003||Viu END_t8_pb|5.033003||Viu END_tb|5.035004||Viu END_tb_p8|5.033003||Viu END_tb_pb|5.033003||Viu ENTER|5.003007|5.003007| ENTER_with_name|5.011002|5.011002| ENV_INIT|5.031011||Viu environ|5.003007||Viu ENV_LOCALE_LOCK|5.031011||Viu ENV_LOCALE_READ_LOCK|5.031011||Viu ENV_LOCALE_READ_UNLOCK|5.031011||Viu ENV_LOCALE_UNLOCK|5.031011||Viu ENV_LOCK|5.031011||Viu ENV_READ_LOCK|5.033005||Viu ENV_READ_UNLOCK|5.033005||Viu ENV_TERM|5.031011||Viu ENV_UNLOCK|5.031011||Viu EOF|5.003007||Viu EOF_NONBLOCK|5.003007|5.003007|Vn EOL|5.003007||Viu EOL_t8|5.035004||Viu EOL_t8_p8|5.033003||Viu EOL_t8_pb|5.033003||Viu EOL_tb|5.035004||Viu EOL_tb_p8|5.033003||Viu EOL_tb_pb|5.033003||Viu EOS|5.005000||Viu EOS_t8|5.035004||Viu EOS_t8_p8|5.033003||Viu EOS_t8_pb|5.033003||Viu EOS_tb|5.035004||Viu EOS_tb_p8|5.033003||Viu EOS_tb_pb|5.033003||Viu ERA|5.027010||Viu ERA_D_FMT|5.027010||Viu ERA_D_T_FMT|5.027010||Viu ERA_T_FMT|5.027010||Viu ERRSV|5.004005|5.003007|p ESC_NATIVE|5.021004||Viu EVAL|5.005000||Viu EVAL_B|5.025010||Viu EVAL_B_fail|5.025010||Viu EVAL_B_fail_t8|5.035004||Viu EVAL_B_fail_t8_p8|5.033003||Viu EVAL_B_fail_t8_pb|5.033003||Viu EVAL_B_fail_tb|5.035004||Viu EVAL_B_fail_tb_p8|5.033003||Viu EVAL_B_fail_tb_pb|5.033003||Viu EVAL_B_t8|5.035004||Viu EVAL_B_t8_p8|5.033003||Viu EVAL_B_t8_pb|5.033003||Viu EVAL_B_tb|5.035004||Viu EVAL_B_tb_p8|5.033003||Viu EVAL_B_tb_pb|5.033003||Viu EVAL_INEVAL|5.006000||Viu EVAL_INREQUIRE|5.007001||Viu EVAL_KEEPERR|5.006000||Viu EVAL_NULL|5.006000||Viu EVAL_postponed_AB|5.025010||Viu EVAL_postponed_AB_fail|5.025010||Viu EVAL_postponed_AB_fail_t8|5.035004||Viu EVAL_postponed_AB_fail_t8_p8|5.033003||Viu EVAL_postponed_AB_fail_t8_pb|5.033003||Viu EVAL_postponed_AB_fail_tb|5.035004||Viu EVAL_postponed_AB_fail_tb_p8|5.033003||Viu EVAL_postponed_AB_fail_tb_pb|5.033003||Viu EVAL_postponed_AB_t8|5.035004||Viu EVAL_postponed_AB_t8_p8|5.033003||Viu EVAL_postponed_AB_t8_pb|5.033003||Viu EVAL_postponed_AB_tb|5.035004||Viu EVAL_postponed_AB_tb_p8|5.033003||Viu EVAL_postponed_AB_tb_pb|5.033003||Viu eval_pv|5.006000|5.003007|p EVAL_RE_REPARSING|5.017011||Viu eval_sv|5.006000|5.003007|p EVAL_t8|5.035004||Viu EVAL_t8_p8|5.033003||Viu EVAL_t8_pb|5.033003||Viu EVAL_tb|5.035004||Viu EVAL_tb_p8|5.033003||Viu EVAL_tb_pb|5.033003||Viu EVAL_WARNONLY|5.006000||Viu EXACT|5.004000||Viu EXACTF|5.004000||Viu EXACTFAA|5.027009||Viu EXACTFAA_NO_TRIE|5.027009||Viu EXACTFAA_NO_TRIE_t8|5.035004||Viu EXACTFAA_NO_TRIE_t8_p8|5.033003||Viu EXACTFAA_NO_TRIE_t8_pb|5.033003||Viu EXACTFAA_NO_TRIE_tb|5.035004||Viu EXACTFAA_NO_TRIE_tb_p8|5.033003||Viu EXACTFAA_NO_TRIE_tb_pb|5.033003||Viu EXACTFAA_t8|5.035004||Viu EXACTFAA_t8_p8|5.033003||Viu EXACTFAA_t8_pb|5.033003||Viu EXACTFAA_tb|5.035004||Viu EXACTFAA_tb_p8|5.033003||Viu EXACTFAA_tb_pb|5.033003||Viu EXACTFL|5.004000||Viu EXACTFL_t8|5.035004||Viu EXACTFL_t8_p8|5.033003||Viu EXACTFL_t8_pb|5.033003||Viu EXACTFL_tb|5.035004||Viu EXACTFL_tb_p8|5.033003||Viu EXACTFL_tb_pb|5.033003||Viu EXACTFLU8|5.021008||Viu EXACTFLU8_t8|5.035004||Viu EXACTFLU8_t8_p8|5.033003||Viu EXACTFLU8_t8_pb|5.033003||Viu EXACTFLU8_tb|5.035004||Viu EXACTFLU8_tb_p8|5.033003||Viu EXACTFLU8_tb_pb|5.033003||Viu EXACTF_t8|5.035004||Viu EXACTF_t8_p8|5.033003||Viu EXACTF_t8_pb|5.033003||Viu EXACTF_tb|5.035004||Viu EXACTF_tb_p8|5.033003||Viu EXACTF_tb_pb|5.033003||Viu EXACTFU|5.013008||Viu EXACTFUP|5.029007||Viu EXACTFUP_t8|5.035004||Viu EXACTFUP_t8_p8|5.033003||Viu EXACTFUP_t8_pb|5.033003||Viu EXACTFUP_tb|5.035004||Viu EXACTFUP_tb_p8|5.033003||Viu EXACTFUP_tb_pb|5.033003||Viu EXACTFU_REQ8|5.031006||Viu EXACTFU_REQ8_t8|5.035004||Viu EXACTFU_REQ8_t8_p8|5.033003||Viu EXACTFU_REQ8_t8_pb|5.033003||Viu EXACTFU_REQ8_tb|5.035004||Viu EXACTFU_REQ8_tb_p8|5.033003||Viu EXACTFU_REQ8_tb_pb|5.033003||Viu EXACTFU_S_EDGE|5.029007||Viu EXACTFU_S_EDGE_t8|5.035004||Viu EXACTFU_S_EDGE_t8_p8|5.033003||Viu EXACTFU_S_EDGE_t8_pb|5.033003||Viu EXACTFU_S_EDGE_tb|5.035004||Viu EXACTFU_S_EDGE_tb_p8|5.033003||Viu EXACTFU_S_EDGE_tb_pb|5.033003||Viu EXACTFU_t8|5.035004||Viu EXACTFU_t8_p8|5.033003||Viu EXACTFU_t8_pb|5.033003||Viu EXACTFU_tb|5.035004||Viu EXACTFU_tb_p8|5.033003||Viu EXACTFU_tb_pb|5.033003||Viu EXACTL|5.021008||Viu EXACTL_t8|5.035004||Viu EXACTL_t8_p8|5.033003||Viu EXACTL_t8_pb|5.033003||Viu EXACTL_tb|5.035004||Viu EXACTL_tb_p8|5.033003||Viu EXACTL_tb_pb|5.033003||Viu EXACT_REQ8|5.031006||Viu EXACT_REQ8_t8|5.035004||Viu EXACT_REQ8_t8_p8|5.033003||Viu EXACT_REQ8_t8_pb|5.033003||Viu EXACT_REQ8_tb|5.035004||Viu EXACT_REQ8_tb_p8|5.033003||Viu EXACT_REQ8_tb_pb|5.033003||Viu EXACT_t8|5.035004||Viu EXACT_t8_p8|5.033003||Viu EXACT_t8_pb|5.033003||Viu EXACT_tb|5.035004||Viu EXACT_tb_p8|5.033003||Viu EXACT_tb_pb|5.033003||Viu EXEC_ARGV_CAST|5.007001||Viu exec_failed|5.009004||Viu execl|5.005000||Viu EXEC_PAT_MOD|5.009005||Viu EXEC_PAT_MODS|5.009005||Viu execute_wildcard|5.031010||Viu execv|5.005000||Viu execvp|5.005000||Viu exit|5.005000||Viu EXPECT|5.009004||Viu expect_number|5.007001||Viu EXT|5.003007||Viu EXTCONST|5.004000||Viu EXTEND|5.003007|5.003007| EXTEND_HWM_SET|5.027002||Viu EXTEND_MORTAL|5.004000||Viu EXTEND_SKIP|5.027002||Viu EXTERN_C|5.005000|5.003007|pV EXT_MGVTBL|5.009004||Viu EXT_PAT_MODS|5.009005||Viu EXTRA_SIZE|5.005000||Viu EXTRA_STEP_2ARGS|5.005000||Viu F0convert|5.009003||Vniu FAKE_BIT_BUCKET|5.009005||Viu FAKE_DEFAULT_SIGNAL_HANDLERS|5.009003||Viu FAKE_PERSISTENT_SIGNAL_HANDLERS|5.009003||Viu FALSE|5.003007||Viu FATAL_ABOVE_FF_MSG|5.027010||Viu F_atan2_amg|5.004000||Viu FBMcf_TAIL|5.006000||Viu FBMcf_TAIL_DOLLAR|5.006000||Viu FBMcf_TAIL_DOLLARM|5.006000||Viu FBMcf_TAIL_Z|5.006000||Viu FBMcf_TAIL_z|5.006000||Viu fbm_compile|5.005000|5.005000| fbm_instr|5.005000|5.005000| FBMrf_MULTILINE|5.006000||Viu fclose|5.003007||Viu fcntl|5.006000||Viu FCNTL_CAN_LOCK|5.007001|5.007001|Vn F_cos_amg|5.004000||Viu FD_CLR|5.008000||Viu FD_ISSET|5.008000||Viu fdopen|5.003007||Viu FD_SET|5.008000||Viu fd_set|5.008000||Viu FD_ZERO|5.008000||Viu FEATURE_BAREWORD_FILEHANDLES_BIT|5.033006||Viu FEATURE_BAREWORD_FILEHANDLES_IS_ENABLED|5.033006||Viu FEATURE_BITWISE_BIT|5.031006||Viu FEATURE_BITWISE_IS_ENABLED|5.021009||Viu FEATURE_BUNDLE_510|5.015007||Viu FEATURE_BUNDLE_511|5.015007||Viu FEATURE_BUNDLE_515|5.015007||Viu FEATURE_BUNDLE_523|5.023001||Viu FEATURE_BUNDLE_527|5.027008||Viu FEATURE_BUNDLE_535|5.035003||Viu FEATURE_BUNDLE_CUSTOM|5.015007||Viu FEATURE_BUNDLE_DEFAULT|5.015007||Viu FEATURE_DEFER_BIT|5.035004||Viu FEATURE_DEFER_IS_ENABLED|5.035004||Viu FEATURE_EVALBYTES_BIT|5.031006||Viu FEATURE_EVALBYTES_IS_ENABLED|5.015007||Viu FEATURE_FC_BIT|5.031006||Viu FEATURE_FC_IS_ENABLED|5.015008||Viu FEATURE_INDIRECT_BIT|5.031010||Viu FEATURE_INDIRECT_IS_ENABLED|5.031010||Viu FEATURE_ISA_BIT|5.031007||Viu FEATURE_ISA_IS_ENABLED|5.031007||Viu FEATURE_IS_ENABLED_MASK|5.031006||Viu FEATURE_MULTIDIMENSIONAL_BIT|5.033001||Viu FEATURE_MULTIDIMENSIONAL_IS_ENABLED|5.033001||Viu FEATURE_MYREF_BIT|5.031006||Viu FEATURE_MYREF_IS_ENABLED|5.025003||Viu FEATURE_POSTDEREF_QQ_BIT|5.031006||Viu FEATURE_POSTDEREF_QQ_IS_ENABLED|5.019005||Viu FEATURE_REFALIASING_BIT|5.031006||Viu FEATURE_REFALIASING_IS_ENABLED|5.021005||Viu FEATURE_SAY_BIT|5.031006||Viu FEATURE_SAY_IS_ENABLED|5.015007||Viu FEATURE_SIGNATURES_BIT|5.031006||Viu FEATURE_SIGNATURES_IS_ENABLED|5.019009||Viu FEATURE_STATE_BIT|5.031006||Viu FEATURE_STATE_IS_ENABLED|5.015007||Viu FEATURE___SUB___BIT|5.031006||Viu FEATURE___SUB___IS_ENABLED|5.015007||Viu FEATURE_SWITCH_BIT|5.031006||Viu FEATURE_SWITCH_IS_ENABLED|5.015007||Viu FEATURE_TRY_BIT|5.033007||Viu FEATURE_TRY_IS_ENABLED|5.033007||Viu FEATURE_UNICODE_BIT|5.031006||Viu FEATURE_UNICODE_IS_ENABLED|5.015007||Viu FEATURE_UNIEVAL_BIT|5.031006||Viu FEATURE_UNIEVAL_IS_ENABLED|5.015007||Viu feof|5.003007||Viu ferror|5.003007||Viu FETCHFEATUREBITSHH|5.031006||Viu F_exp_amg|5.004000||Viu FF_0DECIMAL|5.007001||Viu FF_BLANK|5.003007||Viu FF_CHECKCHOP|5.003007||Viu FF_CHECKNL|5.003007||Viu FF_CHOP|5.003007||Viu FF_DECIMAL|5.003007||Viu FF_END|5.003007||Viu FF_FETCH|5.003007||Viu FF_HALFSPACE|5.003007||Viu FF_ITEM|5.003007||Viu FF_LINEGLOB|5.003007||Viu FF_LINEMARK|5.003007||Viu FF_LINESNGL|5.009001||Viu FF_LITERAL|5.003007||Viu Fflush|5.003007||Viu fflush|5.003007||Viu FFLUSH_NULL|5.006000|5.006000|Vn FF_MORE|5.003007||Viu FF_NEWLINE|5.003007||Viu FF_SKIP|5.003007||Viu FF_SPACE|5.003007||Viu fgetc|5.003007||Viu fgetpos|5.003007||Viu fgets|5.003007||Viu FILE|5.003007||Viu FILE_base|5.007000|5.007000| FILE_bufsiz|5.007000|5.007000| FILE_cnt|5.007000|5.007000| fileno|5.003007||Viu FILE_ptr|5.007000|5.007000| FILL_ADVANCE_NODE_2L_ARG|5.021005||Viu FILL_ADVANCE_NODE|5.005000||Viu FILL_ADVANCE_NODE_ARG|5.005000||Viu FILL_ADVANCE_NODE_ARGp|5.031010||Viu FILL_NODE|5.029004||Viu filter_add|5.003007|5.003007| FILTER_DATA|5.003007||Viu filter_del|5.003007|5.003007|u filter_gets|5.005000||Viu FILTER_ISREADER|5.003007||Viu filter_read|5.003007|5.003007| FILTER_READ|5.003007||Viu finalize_op|5.015002||Viu finalize_optree|5.015002||Vi find_and_forget_pmops|5.009005||Viu find_array_subscript|5.009004||Viu find_beginning|5.005000||Viu find_byclass|5.006000||Viu find_default_stash|5.019004||Viu find_first_differing_byte_pos|5.031007||Vniu find_hash_subscript|5.009004||Viu find_in_my_stash|5.006001||Viu find_lexical_cv|5.019001||Viu find_next_masked|5.027009||Vniu find_runcv|5.009005|5.009005| FIND_RUNCV_level_eq|5.017002||Viu FIND_RUNCV_padid_eq|5.017004||Viu find_runcv_where|5.017002||Viu find_rundefsv|5.013002|5.013002| find_rundefsvoffset|5.009002|5.009002|d find_script|5.004005||Viu find_span_end|5.027009||Vniu find_span_end_mask|5.027009||Vniu find_uninit_var|5.009002||xVi FIRST_NON_ASCII_DECIMAL_DIGIT|5.027007||Viu first_symbol|5.009003||Vniu FIT_ARENA0|||Viu FIT_ARENAn|||Viu FIT_ARENA|||Viu FITS_IN_8_BITS|5.013005||Viu fixup_errno_string|5.019007||Viu FLAGS|5.013006||Viu FLEXFILENAMES|5.003007|5.003007|Vn float_end_shift|5.009005||Viu float_max_offset|5.005000||Viu float_min_offset|5.005000||Viu float_substr|5.005000||Viu float_utf8|5.008000||Viu flock|5.005000||Viu flockfile|5.003007||Viu F_log_amg|5.004000||Viu FmLINES|5.003007||Viu fold_constants|5.003007||Viu foldEQ|5.013002|5.013002|n foldEQ_latin1|5.013008||cVnu foldEQ_latin1_s2_folded|5.029007||Vniu foldEQ_locale|5.013002|5.013002|n FOLDEQ_LOCALE|5.019009||cV FOLDEQ_S1_ALREADY_FOLDED|5.015004||cV FOLDEQ_S1_FOLDS_SANE|5.021008||cV FOLDEQ_S2_ALREADY_FOLDED|5.015004||cV FOLDEQ_S2_FOLDS_SANE|5.021008||cV foldEQ_utf8|5.013002|5.007003|p foldEQ_utf8_flags|5.013010||cVu FOLDEQ_UTF8_NOMIX_ASCII|5.013010||cV FOLD_FLAGS_FULL|5.015006||Viu FOLD_FLAGS_LOCALE|5.015006||Viu FOLD_FLAGS_NOMIX_ASCII|5.017000||Viu fopen|5.003007||Viu forbid_setid|5.005000||Viu force_ident|5.003007||Viu force_ident_maybe_lex|5.017004||Viu force_list|5.003007||Viu force_next|5.003007||Viu _force_out_malformed_utf8_message|5.025009||cVu force_strict_version|5.011004||Viu force_version|5.005000||Viu force_word|5.003007||Viu forget_pmop|5.017007||Viu form|5.004000||vV form_alien_digit_msg|5.031009||cViu form_cp_too_large_msg|5.031009||cViu form_nocontext|5.006000||vVn fp_dup|5.007003|5.007003|u Fpos_t|5.003007|5.003007|Vn F_pow_amg|5.004000||Viu FP_PINF|5.021004||Viu FP_QNAN|5.021004||Viu fprintf|5.003007||Viu fprintf_nocontext|5.006000||vdVnu FPTR2DPTR|5.009003||Viu fputc|5.003007||Viu fputs|5.003007||Viu fread|5.003007||Viu free|5.003007||Viu free_and_set_cop_warnings|5.031011||Viu free_c_backtrace|5.021001||Vi FreeOp|5.008001||Viu Free_t|5.003007|5.003007|Vn FREE_THREAD_KEY|5.006001||Viu free_tied_hv_pool|5.008001||Viu FREETMPS|5.003007|5.003007| free_tmps|5.003007||cVu freopen|5.003007||Viu frewind|5.005000||Viu FROM_INTERNAL_SIZE|5.023002||Viu fscanf|5.003007||Viu fseek|5.003007||Viu FSEEKSIZE|5.006000||Viu fsetpos|5.003007||Viu F_sin_amg|5.004000||Viu F_sqrt_amg|5.004000||Viu Fstat|5.003007||Viu fstat|5.005000||Viu ftell|5.003007||Viu ftruncate|5.006000||Viu ftrylockfile|5.003007||Viu FUNCTION|5.009003||Viu funlockfile|5.003007||Viu fwrite1|5.003007||Viu fwrite|5.003007||Viu G_ARRAY|5.003007||Viu GCB_BREAKABLE|5.025003||Viu GCB_EX_then_EM|5.025003||Viu GCB_Maybe_Emoji_NonBreak|5.029002||Viu GCB_NOBREAK|5.025003||Viu GCB_RI_then_RI|5.025003||Viu GCC_DIAG_IGNORE|5.019007||Viu GCC_DIAG_IGNORE_DECL|5.027007||Viu GCC_DIAG_IGNORE_STMT|5.027007||Viu GCC_DIAG_PRAGMA|5.021001||Viu GCC_DIAG_RESTORE|5.019007||Viu GCC_DIAG_RESTORE_DECL|5.027007||Viu GCC_DIAG_RESTORE_STMT|5.027007||Viu Gconvert|5.003007|5.003007| GDBMNDBM_H_USES_PROTOTYPES|5.032001|5.032001|Vn G_DISCARD|5.003007|5.003007| gen_constant_list|5.003007||Viu get_and_check_backslash_N_name|5.017006||cViu get_and_check_backslash_N_name_wrapper|5.029009||Viu get_ANYOF_cp_list_for_ssc|5.019005||Viu get_ANYOFM_contents|5.027009||Viu GETATARGET|5.003007||Viu get_aux_mg|5.011000||Viu get_av|5.006000|5.003007|p getc|5.003007||Viu get_c_backtrace|5.021001||Vi get_c_backtrace_dump|5.021001||V get_context|5.006000|5.006000|nu getc_unlocked|5.003007||Viu get_cv|5.006000|5.003007|p get_cvn_flags|5.009005|5.003007|p get_cvs|5.011000|5.003007|p getcwd_sv|5.007002|5.007002| get_db_sub|||iu get_debug_opts|5.008001||Viu get_deprecated_property_msg|5.031011||cVniu getegid|5.005000||Viu getenv|5.005000||Viu getenv_len|5.006000||Viu GETENV_LOCK|5.033005||Viu GETENV_PRESERVES_OTHER_THREAD|5.033005|5.033005|Vn GETENV_UNLOCK|5.033005||Viu geteuid|5.005000||Viu getgid|5.005000||Viu getgrent|5.009000||Viu GETGRENT_R_HAS_BUFFER|5.008000||Viu GETGRENT_R_HAS_FPTR|5.008000||Viu GETGRENT_R_HAS_PTR|5.008000||Viu GETGRENT_R_PROTO|5.008000|5.008000|Vn getgrgid|5.009000||Viu GETGRGID_R_HAS_BUFFER|5.008000||Viu GETGRGID_R_HAS_PTR|5.008000||Viu GETGRGID_R_PROTO|5.008000|5.008000|Vn getgrnam|5.009000||Viu GETGRNAM_R_HAS_BUFFER|5.008000||Viu GETGRNAM_R_HAS_PTR|5.008000||Viu GETGRNAM_R_PROTO|5.008000|5.008000|Vn get_hash_seed|5.008001||Viu gethostbyaddr|5.005000||Viu GETHOSTBYADDR_R_HAS_BUFFER|5.008000||Viu GETHOSTBYADDR_R_HAS_ERRNO|5.008000||Viu GETHOSTBYADDR_R_HAS_PTR|5.008000||Viu GETHOSTBYADDR_R_PROTO|5.008000|5.008000|Vn gethostbyname|5.005000||Viu GETHOSTBYNAME_R_HAS_BUFFER|5.008000||Viu GETHOSTBYNAME_R_HAS_ERRNO|5.008000||Viu GETHOSTBYNAME_R_HAS_PTR|5.008000||Viu GETHOSTBYNAME_R_PROTO|5.008000|5.008000|Vn gethostent|5.005000||Viu GETHOSTENT_R_HAS_BUFFER|5.008000||Viu GETHOSTENT_R_HAS_ERRNO|5.008000||Viu GETHOSTENT_R_HAS_PTR|5.008000||Viu GETHOSTENT_R_PROTO|5.008000|5.008000|Vn gethostname|5.005000||Viu get_hv|5.006000|5.003007|p get_invlist_iter_addr|5.015001||Vniu get_invlist_offset_addr|5.019002||Vniu get_invlist_previous_index_addr|5.017004||Vniu getlogin|5.005000||Viu GETLOGIN_R_PROTO|5.008000|5.008000|Vn get_mstats|5.006000||Vu getnetbyaddr|5.005000||Viu GETNETBYADDR_R_HAS_BUFFER|5.008000||Viu GETNETBYADDR_R_HAS_ERRNO|5.008000||Viu GETNETBYADDR_R_HAS_PTR|5.008000||Viu GETNETBYADDR_R_PROTO|5.008000|5.008000|Vn getnetbyname|5.005000||Viu GETNETBYNAME_R_HAS_BUFFER|5.008000||Viu GETNETBYNAME_R_HAS_ERRNO|5.008000||Viu GETNETBYNAME_R_HAS_PTR|5.008000||Viu GETNETBYNAME_R_PROTO|5.008000|5.008000|Vn getnetent|5.005000||Viu GETNETENT_R_HAS_BUFFER|5.008000||Viu GETNETENT_R_HAS_ERRNO|5.008000||Viu GETNETENT_R_HAS_PTR|5.008000||Viu GETNETENT_R_PROTO|5.008000|5.008000|Vn get_no_modify|5.005000||Viu get_num|5.008001||Viu get_opargs|5.005000||Viu get_op_descs|5.005000|5.005000|u get_op_names|5.005000|5.005000|u getpeername|5.005000||Viu getpid|5.006000||Viu get_ppaddr|5.006000|5.006000|u get_prop_definition|5.031011||cViu get_prop_values|5.031011||cVniu getprotobyname|5.005000||Viu GETPROTOBYNAME_R_HAS_BUFFER|5.008000||Viu GETPROTOBYNAME_R_HAS_PTR|5.008000||Viu GETPROTOBYNAME_R_PROTO|5.008000|5.008000|Vn getprotobynumber|5.005000||Viu GETPROTOBYNUMBER_R_HAS_BUFFER|5.008000||Viu GETPROTOBYNUMBER_R_HAS_PTR|5.008000||Viu GETPROTOBYNUMBER_R_PROTO|5.008000|5.008000|Vn getprotoent|5.005000||Viu GETPROTOENT_R_HAS_BUFFER|5.008000||Viu GETPROTOENT_R_HAS_PTR|5.008000||Viu GETPROTOENT_R_PROTO|5.008000|5.008000|Vn getpwent|5.009000||Viu GETPWENT_R_HAS_BUFFER|5.008000||Viu GETPWENT_R_HAS_FPTR|5.008000||Viu GETPWENT_R_HAS_PTR|5.008000||Viu GETPWENT_R_PROTO|5.008000|5.008000|Vn getpwnam|5.009000||Viu GETPWNAM_R_HAS_BUFFER|5.008000||Viu GETPWNAM_R_HAS_PTR|5.008000||Viu GETPWNAM_R_PROTO|5.008000|5.008000|Vn getpwuid|5.009000||Viu GETPWUID_R_HAS_PTR|5.008000||Viu GETPWUID_R_PROTO|5.008000|5.008000|Vn get_quantifier_value|5.033006||Viu get_re_arg|||xciu get_re_gclass_nonbitmap_data|5.031011||Viu get_regclass_nonbitmap_data|5.031011||Viu get_regex_charset_name|5.031004||Vniu getservbyname|5.005000||Viu GETSERVBYNAME_R_HAS_BUFFER|5.008000||Viu GETSERVBYNAME_R_HAS_PTR|5.008000||Viu GETSERVBYNAME_R_PROTO|5.008000|5.008000|Vn getservbyport|5.005000||Viu GETSERVBYPORT_R_HAS_BUFFER|5.008000||Viu GETSERVBYPORT_R_HAS_PTR|5.008000||Viu GETSERVBYPORT_R_PROTO|5.008000|5.008000|Vn getservent|5.005000||Viu GETSERVENT_R_HAS_BUFFER|5.008000||Viu GETSERVENT_R_HAS_PTR|5.008000||Viu GETSERVENT_R_PROTO|5.008000|5.008000|Vn getsockname|5.005000||Viu getsockopt|5.005000||Viu getspnam|5.009000||Viu GETSPNAM_R_HAS_BUFFER|5.031011||Viu GETSPNAM_R_HAS_PTR|5.008000||Viu GETSPNAM_R_PROTO|5.008000|5.008000|Vn get_sv|5.006000|5.003007|p GETTARGET|5.003007||Viu GETTARGETSTACKED|5.003007||Viu gettimeofday|5.008000||Viu getuid|5.005000||Viu get_vtbl|5.005003|5.005003|u getw|5.003007||Viu G_EVAL|5.003007|5.003007| G_FAKINGEVAL|5.009004||Viu Gid_t|5.003007|5.003007|Vn Gid_t_f|5.006000|5.006000|Vn Gid_t_sign|5.006000|5.006000|Vn Gid_t_size|5.006000|5.006000|Vn GIMME|5.003007|5.003007|d GIMME_V|5.004000|5.004000| gimme_V|5.031005||xcVu G_KEEPERR|5.003007|5.003007| G_LIST|5.035001|5.003007| glob_2number|5.009004||Viu GLOBAL_PAT_MOD|5.009005||Viu glob_assign_glob|5.009004||Viu G_METHOD|5.006001|5.003007|p G_METHOD_NAMED|5.019002|5.019002| gmtime|5.031011||Viu GMTIME_MAX|5.010001|5.010001|Vn GMTIME_MIN|5.010001|5.010001|Vn GMTIME_R_PROTO|5.008000|5.008000|Vn G_NOARGS|5.003007|5.003007| G_NODEBUG|5.004005||Viu GOSUB|5.009005||Viu GOSUB_t8|5.035004||Viu GOSUB_t8_p8|5.033003||Viu GOSUB_t8_pb|5.033003||Viu GOSUB_tb|5.035004||Viu GOSUB_tb_p8|5.033003||Viu GOSUB_tb_pb|5.033003||Viu gp_dup|5.007003|5.007003|u gp_free|5.003007|5.003007|u GPOS|5.004000||Viu GPOS_t8|5.035004||Viu GPOS_t8_p8|5.033003||Viu GPOS_t8_pb|5.033003||Viu GPOS_tb|5.035004||Viu GPOS_tb_p8|5.033003||Viu GPOS_tb_pb|5.033003||Viu gp_ref|5.003007|5.003007|u GREEK_CAPITAL_LETTER_MU|5.013011||Viu GREEK_SMALL_LETTER_MU|5.013008||Viu G_RE_REPARSING|5.017011||Viu G_RETHROW|5.031002|5.003007|p grok_atoUV|5.021010||cVni grok_bin|5.007003|5.003007|p grok_bin_oct_hex|5.031008||cVu grok_bslash_c|5.013001||cViu grok_bslash_N|5.017003||Viu grok_bslash_o|5.013003||cViu grok_bslash_x|5.017002||cViu grok_hex|5.007003|5.003007|p grok_infnan|5.021004|5.021004| grok_number|5.007002|5.003007|p grok_number_flags|5.021002|5.021002| GROK_NUMERIC_RADIX|5.007002|5.003007|p grok_numeric_radix|5.007002|5.003007|p grok_oct|5.007003|5.003007|p group_end|5.007003||Viu GROUPP|5.005000||Viu GROUPPN|5.031001||Viu GROUPPN_t8|5.035004||Viu GROUPPN_t8_p8|5.033003||Viu GROUPPN_t8_pb|5.033003||Viu GROUPPN_tb|5.035004||Viu GROUPPN_tb_p8|5.033003||Viu GROUPPN_tb_pb|5.033003||Viu GROUPP_t8|5.035004||Viu GROUPP_t8_p8|5.033003||Viu GROUPP_t8_pb|5.033003||Viu GROUPP_tb|5.035004||Viu GROUPP_tb_p8|5.033003||Viu GROUPP_tb_pb|5.033003||Viu Groups_t|5.003007|5.003007|Vn GRPASSWD|5.005000|5.005000|Vn G_SCALAR|5.003007|5.003007| G_UNDEF_FILL|5.013001||Viu GV_ADD|5.003007|5.003007| gv_add_by_type|5.011000|5.011000|u GV_ADDMG|5.015003|5.015003| GV_ADDMULTI|5.003007|5.003007| GV_ADDWARN|5.003007|5.003007| Gv_AMG|5.003007||Viu Gv_AMupdate|5.011000|5.011000|u GvASSUMECV|5.003007||Viu GvASSUMECV_off|5.003007||Viu GvASSUMECV_on|5.003007||Viu gv_autoload4|5.004000|5.004000| GV_AUTOLOAD|5.011000||Viu GV_AUTOLOAD_ISMETHOD|5.015004||Viu gv_autoload_pv|5.015004|5.015004|u gv_autoload_pvn|5.015004|5.015004|u gv_autoload_sv|5.015004|5.015004|u GvAV|5.003007|5.003007| gv_AVadd|5.003007|5.003007|u GvAVn|5.003007||Viu GV_CACHE_ONLY|5.021004||Vi gv_check|5.003007||cVu gv_const_sv|5.009003|5.009003| GV_CROAK|5.011000||Viu GvCV|5.003007|5.003007| GvCVGEN|5.003007||Viu GvCV_set|5.013010||Viu GvCVu|5.004000||Viu gv_dump|5.006000|5.006000|u gv_efullname3|5.003007|5.003007|u gv_efullname4|5.006001|5.006001|u gv_efullname|5.003007|5.003007|du GvEGV|5.003007||Viu GvEGVx|5.013000||Viu GvENAME|5.003007||Viu GvENAME_HEK|5.015004||Viu GvENAMELEN|5.015004||Viu GvENAMEUTF8|5.015004||Viu GvESTASH|5.003007||Viu GVf_ASSUMECV|5.003007||Viu gv_fetchfile|5.003007|5.003007| gv_fetchfile_flags|5.009005|5.009005| gv_fetchmeth|5.003007|5.003007| gv_fetchmeth_autoload|5.007003|5.007003| gv_fetchmeth_internal|5.021007||Viu gv_fetchmethod|5.003007|5.003007| gv_fetchmethod_autoload|5.004000|5.004000| gv_fetchmethod_flags|5.015004||Viu gv_fetchmethod_pv_flags|5.015004|5.015004|xu gv_fetchmethod_pvn_flags|5.015004|5.015004|xu gv_fetchmethod_sv_flags|5.015004|5.015004|xu gv_fetchmeth_pv|5.015004|5.015004| gv_fetchmeth_pv_autoload|5.015004|5.015004| gv_fetchmeth_pvn|5.015004|5.015004| gv_fetchmeth_pvn_autoload|5.015004|5.015004| gv_fetchmeth_sv|5.015004|5.015004| gv_fetchmeth_sv_autoload|5.015004|5.015004| gv_fetchpv|5.003007|5.003007| gv_fetchpvn|5.013006|5.013006| gv_fetchpvn_flags|5.009002|5.003007|p gv_fetchpvs|5.009004|5.003007|p gv_fetchsv|5.009002|5.003007|p gv_fetchsv_nomg|5.015003|5.015003| GvFILE|5.006000||Viu GvFILEGV|5.003007||Viu GvFILE_HEK|5.009004||Viu GvFILEx|5.019006||Viu GVf_IMPORTED|5.003007||Viu GVf_IMPORTED_AV|5.003007||Viu GVf_IMPORTED_CV|5.003007||Viu GVf_IMPORTED_HV|5.003007||Viu GVf_IMPORTED_SV|5.003007||Viu GVf_INTRO|5.003007||Viu GvFLAGS|5.003007||Viu GVf_MULTI|5.003007||Viu GVF_NOADD|5.035006||Viu GvFORM|5.003007||Viu gv_fullname3|5.003007|5.003007|u gv_fullname4|5.006001|5.006001|u gv_fullname|5.003007|5.003007|du GvGP|5.003007||Viu GvGPFLAGS|5.021004||Viu GvGP_set|5.013010||Viu gv_handler|5.007001|5.007001|u GvHV|5.003007|5.003007| gv_HVadd|5.003007|5.003007|u GvHVn|5.003007||Viu GvIMPORTED|5.003007||Viu GvIMPORTED_AV|5.003007||Viu GvIMPORTED_AV_off|5.003007||Viu GvIMPORTED_AV_on|5.003007||Viu GvIMPORTED_CV|5.003007||Viu GvIMPORTED_CV_off|5.003007||Viu GvIMPORTED_CV_on|5.003007||Viu GvIMPORTED_HV|5.003007||Viu GvIMPORTED_HV_off|5.003007||Viu GvIMPORTED_HV_on|5.003007||Viu GvIMPORTED_off|5.003007||Viu GvIMPORTED_on|5.003007||Viu GvIMPORTED_SV|5.003007||Viu GvIMPORTED_SV_off|5.003007||Viu GvIMPORTED_SV_on|5.003007||Viu gv_init|5.003007|5.003007| gv_init_pv|5.015004|5.015004| gv_init_pvn|5.015004|5.003007|p gv_init_sv|5.015004|5.015004| gv_init_svtype|5.015004||Viu GvIN_PAD|5.006000||Viu GvIN_PAD_off|5.006000||Viu GvIN_PAD_on|5.006000||Viu GvINTRO|5.003007||Viu GvINTRO_off|5.003007||Viu GvINTRO_on|5.003007||Viu GvIO|5.003007||Viu gv_IOadd|5.003007|5.003007|u GvIOn|5.003007||Viu GvIOp|5.003007||Viu gv_is_in_main|5.019004||Viu GvLINE|5.003007||Viu gv_magicalize|5.019004||Viu gv_magicalize_isa|5.013005||Viu gv_method_changed|5.017007||Viu GvMULTI|5.003007||Viu GvMULTI_off|5.003007||Viu GvMULTI_on|5.003007||Viu GvNAME|5.003007||Viu GvNAME_get|5.009004||Viu GvNAME_HEK|5.009004||Viu GvNAMELEN|5.003007||Viu GvNAMELEN_get|5.009004||Viu gv_name_set|5.009004|5.009004|u GvNAMEUTF8|5.015004||Viu GV_NOADD_MASK|5.009005||Viu GV_NOADD_NOINIT|5.009003|5.009003| GV_NOEXPAND|5.009003|5.009003| GV_NOINIT|5.004005|5.004005| GV_NO_SVGMAGIC|5.015003|5.015003| GV_NOTQUAL|5.009004|5.009004| GV_NOUNIVERSAL|5.033009||Viu G_VOID|5.004000|5.004000| gv_override|5.019006||Viu GvREFCNT|5.003007||Viu gv_setref|5.021005||Viu GvSTASH|5.003007||Viu gv_stashpv|5.003007|5.003007| gv_stashpvn|5.003007|5.003007|p gv_stashpvn_internal|5.021004||Viu gv_stashpvs|5.009003|5.003007|p gv_stashsv|5.003007|5.003007| gv_stashsvpvn_cached|5.021004||Vi GV_SUPER|5.017004|5.017004| GvSV|5.003007|5.003007| gv_SVadd|5.011000||Vu GvSVn|5.009003|5.003007|p gv_try_downgrade|5.011002||xcVi GvXPVGV|5.003007||Viu G_WANT|5.010001||Viu G_WARN_ALL_MASK|5.006000||Viu G_WARN_ALL_OFF|5.006000||Viu G_WARN_ALL_ON|5.006000||Viu G_WARN_OFF|5.006000||Viu G_WARN_ON|5.006000||Viu G_WARN_ONCE|5.006000||Viu G_WRITING_TO_STDERR|5.013009||Viu HADNV|||Viu handle_named_backref|5.023008||Viu handle_names_wildcard|5.031011||Viu handle_possible_posix|5.023008||Viu handle_regex_sets|5.017009||Viu handle_user_defined_property|5.029008||Viu HAS_ACCEPT4|5.027008|5.027008|Vn HAS_ACCESS|5.006000|5.006000|Vn HAS_ACOSH|5.021004|5.021004|Vn HAS_ALARM|5.003007|5.003007|Vn HASARENA|||Viu HAS_ASCTIME_R|5.010000|5.010000|Vn HAS_ASINH|5.021006|5.021006|Vn HAS_ATANH|5.021006|5.021006|Vn HAS_ATOLL|5.006000|5.006000|Vn HASATTRIBUTE_ALWAYS_INLINE|5.031007|5.031007|Vn HASATTRIBUTE_DEPRECATED|5.010001|5.010001|Vn HASATTRIBUTE_FORMAT|5.009003|5.009003|Vn HASATTRIBUTE_MALLOC|5.009003|5.009003|Vn HASATTRIBUTE_NONNULL|5.009003|5.009003|Vn HASATTRIBUTE_NORETURN|5.009003|5.009003|Vn HASATTRIBUTE_PURE|5.009003|5.009003|Vn HASATTRIBUTE_UNUSED|5.009003|5.009003|Vn HASATTRIBUTE_WARN_UNUSED_RESULT|5.009003|5.009003|Vn HAS_BACKTRACE|5.021001|5.021001|Vn HAS_BUILTIN_CHOOSE_EXPR|5.009004|5.009004|Vn HAS_BUILTIN_EXPECT|5.010001|5.010001|Vn HAS_BUILTIN_UNREACHABLE|5.033003||Viu HAS_C99|5.021004||Viu HAS_C99_VARIADIC_MACROS|5.009004|5.009004|Vn HAS_CBRT|5.021006|5.021006|Vn HAS_CF_AUX_TABLES|5.027011||Viu HAS_CHOWN|5.003007|5.003007|Vn HAS_CHROOT|5.003007|5.003007|Vn HAS_CHSIZE|5.004005|5.004005|Vn HAS_CLEARENV|5.009003|5.009003|Vn HAS_COPYSIGN|5.021006|5.021006|Vn HAS_COPYSIGNL|5.008001|5.008001|Vn HAS_CRYPT|5.003007|5.003007|Vn HAS_CRYPT_R|5.010000|5.010000|Vn HAS_CSH|5.005000|5.005000|Vn HAS_CTERMID|5.009005|5.009005|Vn HAS_CTIME_R|5.010000|5.010000|Vn HAS_CUSERID|5.003007|5.003007|Vn HAS_DBMINIT_PROTO|5.032001|5.032001|Vn HAS_DIFFTIME|5.003007|5.003007|Vn HAS_DIRFD|5.007003|5.007003|Vn HAS_DLADDR|5.021001|5.021001|Vn HAS_DLERROR|5.003007|5.003007|Vn HAS_DRAND48_PROTO|5.006000|5.006000|Vn HAS_DRAND48_R|5.010000|5.010000|Vn HAS_DUP2|5.003007|5.003007|Vn HAS_DUP3|5.027008|5.027008|Vn HAS_DUPLOCALE|5.027011|5.027011|Vn HAS_EACCESS|5.006000|5.006000|Vn HAS_ENDGRENT|5.005000|5.005000|Vn HAS_ENDHOSTENT|5.005000|5.005000|Vn HAS_ENDNETENT|5.005000|5.005000|Vn HAS_ENDPROTOENT|5.005000|5.005000|Vn HAS_ENDPWENT|5.005000|5.005000|Vn HAS_ENDSERVENT|5.005000|5.005000|Vn HAS_ERF|5.021006|5.021006|Vn HAS_ERFC|5.021006|5.021006|Vn HAS_EXP2|5.021006|5.021006|Vn HAS_EXPM1|5.021006|5.021006|Vn HAS_EXTRA_LONG_UTF8|5.035004||Viu HAS_FAST_STDIO|5.008001|5.008001|Vn HAS_FCHDIR|5.007002|5.007002|Vn HAS_FCHMOD|5.003007|5.003007|Vn HAS_FCHMODAT|5.027004|5.027004|Vn HAS_FCHOWN|5.003007|5.003007|Vn HAS_FCNTL|5.003007|5.003007|Vn HAS_FDIM|5.021006|5.021006|Vn HAS_FD_SET|5.006000|5.006000|Vn HAS_FEGETROUND|5.021004|5.021004|Vn HAS_FFS|5.035001|5.035001|Vn HAS_FFSL|5.035001|5.035001|Vn HAS_FGETPOS|5.003007|5.003007|Vn HAS_FINITE|5.007003|5.007003|Vn HAS_FINITEL|5.007003|5.007003|Vn HAS_FLOCK|5.003007|5.003007|Vn HAS_FLOCK_PROTO|5.007002|5.007002|Vn HAS_FMA|5.021006|5.021006|Vn HAS_FMAX|5.021006|5.021006|Vn HAS_FMIN|5.021006|5.021006|Vn HAS_FORK|5.003007|5.003007|Vn HAS_FPATHCONF|5.003007|5.003007|Vn HAS_FPCLASSIFY|5.021004|5.021004|Vn HAS_FREELOCALE|5.023009|5.023009|Vn HAS_FREXPL|5.006001|5.006001|Vn HAS_FSEEKO|5.006000|5.006000|Vn HAS_FSETPOS|5.003007|5.003007|Vn HAS_FSTATFS|5.023005|5.023005|Vn HAS_FSTATVFS|5.023005|5.023005|Vn HAS_FSYNC|5.007001|5.007001|Vn HAS_FTELLO|5.006000|5.006000|Vn HAS_FUTIMES|5.009003|5.009003|Vn HAS_GAI_STRERROR|5.025004|5.025004|Vn HAS_GETADDRINFO|5.010001|5.010001|Vn HAS_GETCWD|5.006000|5.006000|Vn HAS_GETGRENT|5.005000|5.005000|Vn HAS_GETGRENT_R|5.010000|5.010000|Vn HAS_GETGRGID_R|5.010000|5.010000|Vn HAS_GETGRNAM_R|5.010000|5.010000|Vn HAS_GETGROUPS|5.003007|5.003007|Vn HAS_GETHOSTBYADDR|5.005000|5.005000|Vn HAS_GETHOSTBYADDR_R|5.010000|5.010000|Vn HAS_GETHOSTBYNAME|5.005000|5.005000|Vn HAS_GETHOSTBYNAME_R|5.010000|5.010000|Vn HAS_GETHOSTENT|5.003007|5.003007|Vn HAS_GETHOSTENT_R|5.010000|5.010000|Vn HAS_GETHOSTNAME|5.006000|5.006000|Vn HAS_GETHOST_PROTOS|5.005000|5.005000|Vn HAS_GETITIMER|5.007001|5.007001|Vn HAS_GETLOGIN|5.003007|5.003007|Vn HAS_GETLOGIN_R|5.010000|5.010000|Vn HAS_GETMNTENT|5.023005|5.023005|Vn HAS_GETNAMEINFO|5.010001|5.010001|Vn HAS_GETNETBYADDR|5.005000|5.005000|Vn HAS_GETNETBYADDR_R|5.010000|5.010000|Vn HAS_GETNETBYNAME|5.005000|5.005000|Vn HAS_GETNETBYNAME_R|5.010000|5.010000|Vn HAS_GETNETENT|5.005000|5.005000|Vn HAS_GETNETENT_R|5.010000|5.010000|Vn HAS_GETNET_PROTOS|5.005000|5.005000|Vn HAS_GETPAGESIZE|5.007001|5.007001|Vn HAS_GETPGID|5.003007|5.003007|Vn HAS_GETPGRP|5.003007|5.003007|Vn HAS_GETPPID|5.003007|5.003007|Vn HAS_GETPRIORITY|5.003007|5.003007|Vn HAS_GETPROTOBYNAME|5.005000|5.005000|Vn HAS_GETPROTOBYNAME_R|5.010000|5.010000|Vn HAS_GETPROTOBYNUMBER|5.005000|5.005000|Vn HAS_GETPROTOBYNUMBER_R|5.010000|5.010000|Vn HAS_GETPROTOENT|5.005000|5.005000|Vn HAS_GETPROTOENT_R|5.010000|5.010000|Vn HAS_GETPROTO_PROTOS|5.005000|5.005000|Vn HAS_GETPWENT|5.005000|5.005000|Vn HAS_GETPWENT_R|5.010000|5.010000|Vn HAS_GETPWNAM_R|5.010000|5.010000|Vn HAS_GETPWUID_R|5.010000|5.010000|Vn HAS_GETSERVBYNAME|5.005000|5.005000|Vn HAS_GETSERVBYNAME_R|5.010000|5.010000|Vn HAS_GETSERVBYPORT|5.005000|5.005000|Vn HAS_GETSERVBYPORT_R|5.010000|5.010000|Vn HAS_GETSERVENT|5.005000|5.005000|Vn HAS_GETSERVENT_R|5.010000|5.010000|Vn HAS_GETSERV_PROTOS|5.005000|5.005000|Vn HAS_GETSPNAM|5.006000|5.006000|Vn HAS_GETSPNAM_R|5.010000|5.010000|Vn HAS_GETTIMEOFDAY|5.004000|5.004000|Vn HAS_GMTIME_R|5.010000|5.010000|Vn HAS_GNULIBC|5.004005|5.004005|Vn HAS_GROUP|5.003007||Viu HAS_HASMNTOPT|5.023005|5.023005|Vn HAS_HTONL|5.003007|5.003007|Vn HAS_HTONS|5.003007|5.003007|Vn HAS_HYPOT|5.021006|5.021006|Vn HAS_ILOGB|5.021006|5.021006|Vn HAS_ILOGBL|5.008001|5.008001|Vn HAS_INET_ATON|5.004000|5.004000|Vn HAS_INETNTOP|5.010001|5.010001|Vn HAS_INETPTON|5.010001|5.010001|Vn HAS_INT64_T|5.006000|5.006000|Vn HAS_IOCTL|5.003007||Viu HAS_IP_MREQ|5.017002|5.017002|Vn HAS_IP_MREQ_SOURCE|5.017004|5.017004|Vn HAS_IPV6_MREQ|5.015008|5.015008|Vn HAS_ISASCII|5.003007|5.003007|Vn HAS_ISBLANK|5.015007|5.015007|Vn HAS_ISFINITE|5.021004|5.021004|Vn HAS_ISINF|5.007003|5.007003|Vn HAS_ISINFL|5.021004|5.021004|Vn HAS_ISLESS|5.031007|5.031007|Vn HAS_ISNAN|5.006001|5.006001|Vn HAS_ISNANL|5.006001|5.006001|Vn HAS_ISNORMAL|5.021006|5.021006|Vn HAS_IVCF_AUX_TABLES|5.027011||Viu HAS_J0|5.021004|5.021004|Vn HAS_J0L|5.021004|5.021004|Vn HAS_KILL|5.003007||Viu HAS_KILLPG|5.003007|5.003007|Vn HAS_LC_AUX_TABLES|5.027011||Viu HAS_LCHOWN|5.005000|5.005000|Vn HAS_LC_MONETARY_2008|5.021005|5.021005|Vn HAS_LDBL_DIG|5.006000|5.006000|Vn HAS_LDEXPL|5.021003|5.021003|Vn HAS_LGAMMA|5.021006|5.021006|Vn HAS_LGAMMA_R|5.021006|5.021006|Vn HAS_LINK|5.003007|5.003007|Vn HAS_LINKAT|5.027004|5.027004|Vn HAS_LLRINT|5.021006|5.021006|Vn HAS_LLRINTL|5.021009|5.021009|Vn HAS_LLROUND|5.021006|5.021006|Vn HAS_LLROUNDL|5.021009|5.021009|Vn HAS_LOCALECONV|5.003007|5.003007|Vn HAS_LOCALTIME_R|5.010000|5.010000|Vn HAS_LOCKF|5.003007|5.003007|Vn HAS_LOG1P|5.021006|5.021006|Vn HAS_LOG2|5.021006|5.021006|Vn HAS_LOGB|5.021006|5.021006|Vn HAS_LONG_DOUBLE|5.005000|5.005000|Vn HAS_LONG_LONG|5.005000|5.005000|Vn HAS_LRINT|5.021006|5.021006|Vn HAS_LRINTL|5.021009|5.021009|Vn HAS_LROUND|5.021006|5.021006|Vn HAS_LROUNDL|5.021009|5.021009|Vn HAS_LSEEK_PROTO|5.006000|5.006000|Vn HAS_LSTAT|5.003007|5.003007|Vn HAS_MADVISE|5.006000|5.006000|Vn HAS_MBLEN|5.003007|5.003007|Vn HAS_MBRLEN|5.027006|5.027006|Vn HAS_MBRTOWC|5.027006|5.027006|Vn HAS_MBSTOWCS|5.003007|5.003007|Vn HAS_MBTOWC|5.003007|5.003007|Vn HAS_MEMMEM|5.024000|5.024000|Vn HAS_MEMRCHR|5.027005|5.027005|Vn HAS_MKDIR|5.003007|5.003007|Vn HAS_MKDTEMP|5.006000|5.006000|Vn HAS_MKFIFO|5.003007|5.003007|Vn HAS_MKOSTEMP|5.027008|5.027008|Vn HAS_MKSTEMP|5.006000|5.006000|Vn HAS_MKSTEMPS|5.006000|5.006000|Vn HAS_MKTIME|5.003007|5.003007|Vn HAS_MMAP|5.006000|5.006000|Vn HAS_MODFL|5.006001|5.006001|Vn HAS_MODFL_PROTO|5.009003|5.009003|Vn HAS_MPROTECT|5.006000|5.006000|Vn HAS_MSG|5.003007|5.003007|Vn HAS_MSYNC|5.006000|5.006000|Vn HAS_MUNMAP|5.006000|5.006000|Vn HAS_NAN|5.021006|5.021006|Vn HAS_NANOSLEEP|5.027006|5.027006|Vn HAS_NEARBYINT|5.021006|5.021006|Vn HAS_NEWLOCALE|5.023009|5.023009|Vn HAS_NEXTAFTER|5.021006|5.021006|Vn HAS_NEXTTOWARD|5.021006|5.021006|Vn HAS_NICE|5.003007|5.003007|Vn HAS_NL_LANGINFO|5.007002|5.007002|Vn HAS_NL_LANGINFO_L|5.035001|5.035001|Vn HAS_NON_INT_BITFIELDS|5.035001|5.035001|Vn HAS_NONLATIN1_FOLD_CLOSURE|5.033005||Viu HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE|5.033005||Viu HAS_NTOHL|5.003007|5.003007|Vn HAS_NTOHS|5.003007|5.003007|Vn HAS_OFF64_T|5.010000|5.010000|Vn HAS_OPEN3|5.003007|5.003007|Vn HAS_OPENAT|5.027004|5.027004|Vn HAS_PASSWD|5.003007||Viu HAS_PATHCONF|5.003007|5.003007|Vn HAS_PAUSE|5.003007|5.003007|Vn HAS_PIPE2|5.027008|5.027008|Vn HAS_PIPE|5.003007|5.003007|Vn HAS_POLL|5.003007|5.003007|Vn HAS_POSIX_2008_LOCALE|5.027003||Viu HAS_PRCTL|5.013000|5.013000|Vn HAS_PRCTL_SET_NAME|5.013000|5.013000|Vn HAS_PROCSELFEXE|5.007003|5.007003|Vn HAS_PTHREAD_ATFORK|5.010000|5.010000|Vn HAS_PTHREAD_ATTR_SETSCOPE|5.008001|5.008001|Vn HAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP|5.007002||Viu HAS_PTHREAD_YIELD|5.009005|5.009005|Vn HAS_PTRDIFF_T|5.021001|5.021001|Vn HAS_QUAD|5.003007|5.003007|Vn HAS_RANDOM_R|5.010000|5.010000|Vn HAS_READDIR|5.003007|5.003007|Vn HAS_READDIR64_R|5.010000|5.010000|Vn HAS_READDIR_R|5.010000|5.010000|Vn HAS_READLINK|5.003007|5.003007|Vn HAS_READV|5.007001|5.007001|Vn HAS_RECVMSG|5.007001|5.007001|Vn HAS_REGCOMP|5.021007|5.021007|Vn HAS_REMAINDER|5.021006|5.021006|Vn HAS_REMQUO|5.021006|5.021006|Vn HAS_RENAME|5.003007|5.003007|Vn HAS_RENAMEAT|5.027004|5.027004|Vn HAS_REWINDDIR|5.003007|5.003007|Vn HAS_RINT|5.021006|5.021006|Vn HAS_RMDIR|5.003007|5.003007|Vn HAS_ROUND|5.021006|5.021006|Vn HAS_SBRK_PROTO|5.007001|5.007001|Vn HAS_SCALBN|5.021006|5.021006|Vn HAS_SCALBNL|5.008001|5.008001|Vn HAS_SCHED_YIELD|5.005000|5.005000|Vn HAS_SCX_AUX_TABLES|5.027008||Viu HAS_SEEKDIR|5.003007|5.003007|Vn HAS_SELECT|5.003007|5.003007|Vn HAS_SEM|5.003007|5.003007|Vn HAS_SENDMSG|5.007001|5.007001|Vn HAS_SETEGID|5.003007|5.003007|Vn HAS_SETEUID|5.003007|5.003007|Vn HAS_SETGRENT|5.005000|5.005000|Vn HAS_SETGROUPS|5.004000|5.004000|Vn HAS_SETHOSTENT|5.005000|5.005000|Vn HAS_SETITIMER|5.007001|5.007001|Vn HAS_SETLINEBUF|5.003007|5.003007|Vn HAS_SETLOCALE|5.003007|5.003007|Vn HAS_SETNETENT|5.005000|5.005000|Vn HAS_SETPGID|5.003007|5.003007|Vn HAS_SETPGRP|5.003007|5.003007|Vn HAS_SETPRIORITY|5.003007|5.003007|Vn HAS_SETPROTOENT|5.005000|5.005000|Vn HAS_SETPWENT|5.005000|5.005000|Vn HAS_SETREGID|5.003007|5.003007|Vn HAS_SETRESGID|5.003007|5.003007|Vn HAS_SETRESGID_PROTO|5.010000|5.010000|Vn HAS_SETRESUID|5.003007|5.003007|Vn HAS_SETRESUID_PROTO|5.010000|5.010000|Vn HAS_SETREUID|5.003007|5.003007|Vn HAS_SETSERVENT|5.005000|5.005000|Vn HAS_SETSID|5.003007|5.003007|Vn HAS_SETVBUF|5.005000|5.005000|Vn HAS_SHM|5.003007|5.003007|Vn HAS_SHMAT_PROTOTYPE|5.003007|5.003007|Vn HAS_SIGACTION|5.003007|5.003007|Vn HAS_SIGINFO_SI_ADDR|5.023008|5.023008|Vn HAS_SIGINFO_SI_BAND|5.023008|5.023008|Vn HAS_SIGINFO_SI_ERRNO|5.023008|5.023008|Vn HAS_SIGINFO_SI_PID|5.023008|5.023008|Vn HAS_SIGINFO_SI_STATUS|5.023008|5.023008|Vn HAS_SIGINFO_SI_UID|5.023008|5.023008|Vn HAS_SIGINFO_SI_VALUE|5.023008|5.023008|Vn HAS_SIGNBIT|5.009005|5.009005|Vn HAS_SIGPROCMASK|5.007001|5.007001|Vn HAS_SIGSETJMP|5.003007|5.003007|Vn HAS_SIN6_SCOPE_ID|5.013009|5.013009|Vn HAS_SKIP_LOCALE_INIT|5.019002||Viu HAS_SNPRINTF|5.009003|5.009003|Vn HAS_SOCKADDR_IN6|5.015008|5.015008|Vn HAS_SOCKADDR_STORAGE|5.032001|5.032001|Vn HAS_SOCKATMARK|5.007001|5.007001|Vn HAS_SOCKATMARK_PROTO|5.007002|5.007002|Vn HAS_SOCKET|5.003007|5.003007|Vn HAS_SOCKETPAIR|5.003007|5.003007|Vn HAS_SQRTL|5.006000|5.006000|Vn HAS_SRAND48_R|5.010000|5.010000|Vn HAS_SRANDOM_R|5.010000|5.010000|Vn HAS_STAT|5.021007|5.021007|Vn HAS_STATIC_INLINE|5.013004|5.013004|Vn HAS_STRCOLL|5.003007|5.003007|Vn HAS_STRERROR_L|5.025002|5.025002|Vn HAS_STRERROR_R|5.010000|5.010000|Vn HAS_STRFTIME|5.007002|5.007002|Vn HAS_STRNLEN|5.027006|5.027006|Vn HAS_STRTOD|5.004000|5.004000|Vn HAS_STRTOD_L|5.027011|5.027011|Vn HAS_STRTOL|5.004000|5.004000|Vn HAS_STRTOLD|5.006000|5.006000|Vn HAS_STRTOLD_L|5.027006|5.027006|Vn HAS_STRTOLL|5.006000|5.006000|Vn HAS_STRTOQ|5.007001|5.007001|Vn HAS_STRTOUL|5.004000|5.004000|Vn HAS_STRTOULL|5.006000|5.006000|Vn HAS_STRTOUQ|5.006000|5.006000|Vn HAS_STRUCT_CMSGHDR|5.007001|5.007001|Vn HAS_STRUCT_MSGHDR|5.007001|5.007001|Vn HAS_STRUCT_STATFS|5.023005|5.023005|Vn HAS_STRUCT_STATFS_F_FLAGS|5.023005|5.023005|Vn HAS_STRXFRM|5.003007|5.003007|Vn HAS_STRXFRM_L|5.035001|5.035001|Vn HAS_SYMLINK|5.003007|5.003007|Vn HAS_SYSCALL|5.003007|5.003007|Vn HAS_SYSCALL_PROTO|5.007002|5.007002|Vn HAS_SYSCONF|5.003007|5.003007|Vn HAS_SYS_ERRLIST|5.003007|5.003007|Vn HAS_SYSTEM|5.003007|5.003007|Vn HAS_TC_AUX_TABLES|5.027011||Viu HAS_TCGETPGRP|5.003007|5.003007|Vn HAS_TCSETPGRP|5.003007|5.003007|Vn HAS_TELLDIR|5.003007|5.003007|Vn HAS_TELLDIR_PROTO|5.006000|5.006000|Vn HAS_TGAMMA|5.021006|5.021006|Vn HAS_THREAD_SAFE_NL_LANGINFO_L|5.027006|5.027006|Vn HAS_TIME|5.008000|5.008000|Vn HAS_TIMEGM|5.010001|5.010001|Vn HAS_TIMES|5.003007|5.003007|Vn HAS_TMPNAM_R|5.010000|5.010000|Vn HAS_TM_TM_GMTOFF|5.008001|5.008001|Vn HAS_TM_TM_ZONE|5.008000|5.008000|Vn HAS_TOWLOWER|5.029009|5.029009|Vn HAS_TOWUPPER|5.029009|5.029009|Vn HAS_TRUNC|5.021006|5.021006|Vn HAS_TRUNCATE|5.003007|5.003007|Vn HAS_TRUNCL|5.021004|5.021004|Vn HAS_TTYNAME_R|5.010000|5.010000|Vn HAS_TZNAME|5.003007|5.003007|Vn HAS_UALARM|5.007001|5.007001|Vn HAS_UC_AUX_TABLES|5.027011||Viu HAS_UMASK|5.003007|5.003007|Vn HAS_UNAME|5.003007|5.003007|Vn HAS_UNLINKAT|5.027004|5.027004|Vn HAS_UNSETENV|5.009003|5.009003|Vn HAS_USELOCALE|5.023009|5.023009|Vn HAS_USLEEP|5.007001|5.007001|Vn HAS_USLEEP_PROTO|5.007002|5.007002|Vn HAS_USTAT|5.023005|5.023005|Vn HAS_UTIME|5.003007||Viu HAS_VSNPRINTF|5.009003|5.009003|Vn HAS_WAIT4|5.003007|5.003007|Vn HAS_WAIT|5.003007||Viu HAS_WAITPID|5.003007|5.003007|Vn HAS_WCRTOMB|5.031007|5.031007|Vn HAS_WCSCMP|5.021001|5.021001|Vn HAS_WCSTOMBS|5.003007|5.003007|Vn HAS_WCSXFRM|5.021001|5.021001|Vn HAS_WCTOMB|5.003007|5.003007|Vn HAS_WRITEV|5.007001|5.007001|Vn HE_ARENA_ROOT_IX|5.035005||Viu he_dup|5.007003|5.007003|u HEf_SVKEY|5.003007|5.003007|p HeHASH|5.003007|5.003007| HEK_BASESIZE|5.004000||Viu hek_dup|5.009000|5.009000|u HeKEY|5.003007|5.003007| HeKEY_hek|5.004000||Viu HeKEY_sv|5.004000||Viu HEKf256|5.015004||Viu HEKf|5.015004||Viu HEKfARG|5.015004||Viu HEK_FLAGS|5.008000||Viu HeKFLAGS|5.008000||Viu HEK_HASH|5.004000||Viu HEK_KEY|5.004000||Viu HeKLEN|5.003007|5.003007| HEK_LEN|5.004000||Viu HeKLEN_UTF8|5.007001||Viu HEK_UTF8|5.007001||Viu HeKUTF8|5.007001||Viu HEK_UTF8_off|5.008000||Viu HEK_UTF8_on|5.008000||Viu HEK_WASUTF8|5.008000||Viu HeKWASUTF8|5.008000||Viu HEK_WASUTF8_off|5.008000||Viu HEK_WASUTF8_on|5.008000||Viu HeNEXT|5.003007||Viu HePV|5.004000|5.004000| HeSVKEY|5.003007|5.003007| HeSVKEY_force|5.003007|5.003007| HeSVKEY_set|5.004000|5.004000| HeUTF8|5.010001|5.008000|p HeVAL|5.003007|5.003007| hfree_next_entry|||iu HIGHEST_ANYOF_HRx_BYTE|5.031002||Viu HIGHEST_CASE_CHANGING_CP|5.033005||Viu HINT_ALL_STRICT|5.033002||Viu HINT_BLOCK_SCOPE|5.003007||Viu HINT_BYTES|5.007002||Viu HINT_EXPLICIT_STRICT_REFS|5.016000||Viu HINT_EXPLICIT_STRICT_SUBS|5.016000||Viu HINT_EXPLICIT_STRICT_VARS|5.016000||Viu HINT_FEATURE_MASK|5.015007||Viu HINT_FEATURE_SHIFT|5.015007||Viu HINT_FILETEST_ACCESS|5.006000||Viu HINT_INTEGER|5.003007||Viu HINT_LEXICAL_IO_IN|5.009005||Viu HINT_LEXICAL_IO_OUT|5.009005||Viu HINT_LOCALE|5.004000||Viu HINT_LOCALE_PARTIAL|5.021001||Viu HINT_LOCALIZE_HH|5.005000||Viu HINT_NEW_BINARY|5.005000||Viu HINT_NEW_FLOAT|5.005000||Viu HINT_NEW_INTEGER|5.005000||Viu HINT_NEW_RE|5.005000||Viu HINT_NEW_STRING|5.005000||Viu HINT_NO_AMAGIC|5.010001||Viu HINT_RE_EVAL|5.005000||Viu HINT_RE_FLAGS|5.013007||Viu HINT_RE_TAINT|5.004005||Viu HINTS_DEFAULT|5.033002||Viu HINTS_REFCNT_INIT|5.009004||Viu HINTS_REFCNT_LOCK|5.009004||Viu HINTS_REFCNT_TERM|5.009004||Viu HINTS_REFCNT_UNLOCK|5.009004||Viu HINT_STRICT_REFS|5.003007||Viu HINT_STRICT_SUBS|5.003007||Viu HINT_STRICT_VARS|5.003007||Viu HINT_UNI_8_BIT|5.011002||Viu HINT_UTF8|5.006000||Viu H_PERL|5.003007||Viu HS_APIVERLEN_MAX|5.021006||Viu HS_CXT|5.021006||Viu HSf_IMP_CXT|5.021006||Viu HSf_NOCHK|5.021006||Viu HSf_POPMARK|5.021006||Viu HSf_SETXSUBFN|5.021006||Viu HS_GETAPIVERLEN|5.021006||Viu HS_GETINTERPSIZE|5.021006||Viu HS_GETXSVERLEN|5.021006||Viu HS_KEY|5.021006||Viu HS_KEYp|5.021006||Viu HSm_APIVERLEN|5.021006||Viu HSm_INTRPSIZE|5.021006||Viu HSm_KEY_MATCH|5.021006||Viu HSm_XSVERLEN|5.021006||Viu hsplit|5.005000||Viu HS_XSVERLEN_MAX|5.021006||Viu htoni|5.003007||Viu htonl|5.003007||Viu htons|5.003007||Viu htovl|5.003007||Viu htovs|5.003007||Viu HvAMAGIC|5.017000||Viu HvAMAGIC_off|5.017000||Viu HvAMAGIC_on|5.017000||Viu HvARRAY|5.003007||Viu hv_assert||| HvAUX|5.009003||Viu hv_auxalloc|||iu HVAUX_ARENA_ROOT_IX|5.035005||Viu HvAUXf_NO_DEREF|5.019010||Viu HvAUXf_SCAN_STASH|5.019010||Viu hv_auxinit|5.009003||Viu hv_backreferences_p|||xiu hv_bucket_ratio|5.025003|5.025003|x hv_clear|5.003007|5.003007| hv_clear_placeholders|5.009001|5.009001| hv_common|5.010000||cVu hv_common_key_len|5.010000||cVu hv_copy_hints_hv|5.013005|5.013005| hv_delayfree_ent|5.004000|5.004000|u hv_delete|5.003007|5.003007| HV_DELETE|5.009005||Viu hv_delete_common|5.009001||xViu hv_delete_ent|5.003007|5.003007| hv_deletehek|5.019006||Viu hv_deletes|5.025006||Viu HV_DISABLE_UVAR_XKEY|5.010000||Viu HvEITER|5.003007||Viu HvEITER_get|5.009003||Viu hv_eiter_p|||u HvEITER_set|5.009003||Viu hv_eiter_set|||u HvENAME|5.013007|5.013007| hv_ename_add|5.013007||Vi hv_ename_delete|5.013007||Vi HvENAME_get|5.013007||Viu HvENAME_HEK|5.013007||Viu HvENAME_HEK_NN|5.013007||Viu HvENAMELEN|5.015004|5.015004| HvENAMELEN_get|5.013007||Viu HvENAMEUTF8|5.015004|5.015004| hv_exists|5.003007|5.003007| hv_exists_ent|5.003007|5.003007| hv_existshek|5.035003||Viu hv_existss|5.025006||Viu hv_fetch|5.003007|5.003007| HV_FETCH_EMPTY_HE|5.013007||Viu hv_fetch_ent|5.003007|5.003007| hv_fetchhek|5.019006||Viu HV_FETCH_ISEXISTS|5.009005||Viu HV_FETCH_ISSTORE|5.009005||Viu HV_FETCH_JUST_SV|5.009005||Viu HV_FETCH_LVALUE|5.009005||Viu hv_fetchs|5.009003|5.003007|p hv_fill||| HvFILL|5.003007|5.003007| hv_free_ent|5.004000|5.004000|u hv_free_ent_ret|5.015000||Viu hv_free_entries|5.027002||Viu HvHASKFLAGS|5.008000||Viu HvHASKFLAGS_off|5.008000||Viu HvHASKFLAGS_on|5.008000||Viu HVhek_ENABLEHVKFLAGS|5.008002||Viu HVhek_FREEKEY|5.008000||Viu HVhek_KEYCANONICAL|5.010001||Viu HVhek_MASK|5.008000||Viu HVhek_PLACEHOLD|5.008000||Viu HVhek_UNSHARED|5.009004||Viu HVhek_UTF8|5.008000||Viu HVhek_WASUTF8|5.008000||Viu hv_iterinit|5.003007|5.003007| hv_iterkey|5.003007|5.003007| hv_iterkeysv|5.003007|5.003007| hv_iternext|5.003007|5.003007| hv_iternext_flags|5.008000|5.008000|x hv_iternextsv|5.003007|5.003007| HV_ITERNEXT_WANTPLACEHOLDERS|5.008000|5.008000| hv_iterval|5.003007|5.003007| HvKEYS|5.003007||Viu hv_kill_backrefs|||xiu hv_ksplit|5.003007|5.003007|u HvLASTRAND_get|5.017011||Viu HvLAZYDEL|5.003007||Viu HvLAZYDEL_off|5.003007||Viu HvLAZYDEL_on|5.003007||Viu hv_magic|5.003007|5.003007| hv_magic_check|5.006000||Vniu HvMAX|5.003007||Viu HvMROMETA|5.010001|5.010001| HvNAME|5.003007|5.003007| HvNAME_get|5.009003||pcV HvNAME_HEK|5.009003||Viu HvNAME_HEK_NN|5.013007||Viu HvNAMELEN|5.015004|5.015004| HvNAMELEN_get|5.009003|5.003007|p hv_name_set|5.009003|5.009003|u HV_NAME_SETALL|5.013008||Viu hv_name_sets|5.025006||Viu HvNAMEUTF8|5.015004|5.015004| hv_notallowed|5.008000||Viu HvPLACEHOLDERS|5.007003||Viu HvPLACEHOLDERS_get|5.009003||Viu hv_placeholders_get|||u hv_placeholders_p|||ciu HvPLACEHOLDERS_set|5.009003||Viu hv_placeholders_set|||u hv_pushkv|5.027003||Viu HvRAND_get|5.017011||Viu hv_rand_set|5.018000|5.018000|u HVrhek_delete|5.009004||Viu HVrhek_IV|5.009004||Viu HVrhek_PV|5.009004||Viu HVrhek_PV_UTF8|5.009005||Viu HVrhek_typemask|5.009004||Viu HVrhek_undef|5.009004||Viu HVrhek_UV|5.009004||Viu HvRITER|5.003007||Viu HvRITER_get|5.009003||Viu hv_riter_p|||u HvRITER_set|5.009003||Viu hv_riter_set|||u hv_scalar|5.009001|5.009001| HvSHAREKEYS|5.003007||Viu HvSHAREKEYS_off|5.003007||Viu HvSHAREKEYS_on|5.003007||Viu hv_store|5.003007|5.003007| hv_store_ent|5.003007|5.003007| hv_store_flags|5.008000|5.008000|xu hv_storehek|5.019006||Viu hv_stores|5.009004|5.003007|p HvTOTALKEYS|5.007003||Viu hv_undef|5.003007|5.003007| hv_undef_flags|||ciu HvUSEDKEYS|5.007003||Viu HYPHEN_UTF8|5.017004||Viu I16_MAX|5.003007||Viu I16_MIN|5.003007||Viu I16SIZE|5.006000|5.006000|Vn I16TYPE|5.006000|5.006000|Vn I_32|5.006000|5.003007| I32_MAX|5.003007||Viu I32_MAX_P1|5.007002||Viu I32_MIN|5.003007||Viu I32SIZE|5.006000|5.006000|Vn I32TYPE|5.006000|5.006000|Vn I64SIZE|5.006000|5.006000|Vn I64TYPE|5.006000|5.006000|Vn I8SIZE|5.006000|5.006000|Vn I8_TO_NATIVE|5.015006||Viu I8_TO_NATIVE_UTF8|5.019004||Viu I8TYPE|5.006000|5.006000|Vn I_ARPA_INET|5.005000|5.005000|Vn ibcmp|5.003007|5.003007| ibcmp_locale|5.004000|5.004000| ibcmp_utf8|5.007003|5.007003| I_CRYPT|5.008000|5.008000|Vn I_DBM|5.032001|5.032001|Vn I_DIRENT|5.003007|5.003007|Vn I_DLFCN|5.003007|5.003007|Vn I_EXECINFO|5.021001|5.021001|Vn I_FENV|5.021004|5.021004|Vn IFMATCH|5.003007||Viu IFMATCH_A|5.009005||Viu IFMATCH_A_fail|5.009005||Viu IFMATCH_A_fail_t8|5.035004||Viu IFMATCH_A_fail_t8_p8|5.033003||Viu IFMATCH_A_fail_t8_pb|5.033003||Viu IFMATCH_A_fail_tb|5.035004||Viu IFMATCH_A_fail_tb_p8|5.033003||Viu IFMATCH_A_fail_tb_pb|5.033003||Viu IFMATCH_A_t8|5.035004||Viu IFMATCH_A_t8_p8|5.033003||Viu IFMATCH_A_t8_pb|5.033003||Viu IFMATCH_A_tb|5.035004||Viu IFMATCH_A_tb_p8|5.033003||Viu IFMATCH_A_tb_pb|5.033003||Viu IFMATCH_t8|5.035004||Viu IFMATCH_t8_p8|5.033003||Viu IFMATCH_t8_pb|5.033003||Viu IFMATCH_tb|5.035004||Viu IFMATCH_tb_p8|5.033003||Viu IFMATCH_tb_pb|5.033003||Viu IFTHEN|5.005000||Viu IFTHEN_t8|5.035004||Viu IFTHEN_t8_p8|5.033003||Viu IFTHEN_t8_pb|5.033003||Viu IFTHEN_tb|5.035004||Viu IFTHEN_tb_p8|5.033003||Viu IFTHEN_tb_pb|5.033003||Viu I_GDBM|5.021007|5.021007|Vn I_GDBMNDBM|5.021007|5.021007|Vn IGNORE_PAT_MOD|5.009005||Viu I_GRP|5.003007|5.003007|Vn I_INTTYPES|5.006000|5.006000|Vn I_LANGINFO|5.007002|5.007002|Vn I_LIMITS|5.003007||Viu ILLEGAL_UTF8_BYTE|5.019004||Viu I_LOCALE|5.003007|5.003007|Vn I_MNTENT|5.023005|5.023005|Vn IN_BYTES|5.007002||Viu incline|5.005000||Viu INCLUDE_PROTOTYPES|5.007001||Viu INCMARK|5.023005||Viu incpush|5.005000||Viu INCPUSH_APPLLIB_EXP|5.027006||Viu INCPUSH_APPLLIB_OLD_EXP|5.027006||Viu INCPUSH_ARCHLIB_EXP|5.027006||Viu incpush_if_exists|5.009003||Viu INCPUSH_PERL5LIB|5.027006||Viu INCPUSH_PERL_OTHERLIBDIRS|5.027006||Viu INCPUSH_PERL_OTHERLIBDIRS_ARCHONLY|5.027006||Viu INCPUSH_PERL_VENDORARCH_EXP|5.027006||Viu INCPUSH_PERL_VENDORLIB_EXP|5.027006||Viu INCPUSH_PERL_VENDORLIB_STEM|5.027006||Viu INCPUSH_PRIVLIB_EXP|5.027006||Viu INCPUSH_SITEARCH_EXP|5.027006||Viu INCPUSH_SITELIB_EXP|5.027006||Viu INCPUSH_SITELIB_STEM|5.027006||Viu incpush_use_sep|5.011000||Viu I_NDBM|5.032001|5.032001|Vn inet_addr|5.005000||Viu I_NETDB|5.005000|5.005000|Vn I_NETINET_IN|5.003007|5.003007|Vn I_NETINET_TCP|5.006000|5.006000|Vn inet_ntoa|5.005000||Viu INFNAN_NV_U8_DECL|5.023000||Viu INFNAN_U8_NV_DECL|5.023000||Viu ingroup|5.003007||Viu INIT|5.003007||Viu init_argv_symbols|5.007003||Viu init_constants|5.017003||Viu init_dbargs|||iu init_debugger|5.005000||Viu init_i18nl10n|5.006000||cVu init_i18nl14n|5.006000||dcVu initialize_invlist_guts|5.029002||Viu init_ids|5.005000||Viu init_interp|5.005000||Viu init_main_stash|5.005000||Viu init_named_cv|5.027010||cViu init_os_extras|5.005000||Viu init_perllib|5.005000||Viu init_postdump_symbols|5.005000||Viu init_predump_symbols|5.005000||Viu init_stacks|5.005000|5.005000|u INIT_THREADS|5.005000||Viu init_tm|5.007002|5.007002|u INIT_TRACK_MEMPOOL|5.009004||Viu init_uniprops|5.027011||Viu IN_LC|5.021001||Viu IN_LC_ALL_COMPILETIME|5.021001||Viu IN_LC_ALL_RUNTIME|5.021001||Viu IN_LC_COMPILETIME|5.021001||Viu IN_LC_PARTIAL_COMPILETIME|5.021001||Viu IN_LC_PARTIAL_RUNTIME|5.021001||Viu IN_LC_RUNTIME|5.021001||Viu IN_LOCALE|5.007002|5.004000|p IN_LOCALE_COMPILETIME|5.007002|5.004000|p IN_LOCALE_RUNTIME|5.007002|5.004000|p IN_PERL_COMPILETIME|5.008001|5.003007|p IN_PERL_RUNTIME|5.008001|5.008001| inplace_aassign|5.015003||Viu inRANGE|5.029010||Viu inRANGE_helper|5.033005||Viu IN_SOME_LOCALE_FORM|5.015008||Viu IN_SOME_LOCALE_FORM_COMPILETIME|5.015008||Viu IN_SOME_LOCALE_FORM_RUNTIME|5.015008||Viu instr|5.003007|5.003007|n INSUBP|5.009005||Viu INSUBP_t8|5.035004||Viu INSUBP_t8_p8|5.033003||Viu INSUBP_t8_pb|5.033003||Viu INSUBP_tb|5.035004||Viu INSUBP_tb_p8|5.033003||Viu INSUBP_tb_pb|5.033003||Viu INT16_C|5.003007|5.003007| INT2PTR|5.006000|5.003007|p INT32_C|5.003007|5.003007| INT32_MIN|5.007002||Viu INT64_C|5.023002|5.023002| INT64_MIN|5.007002||Viu INT_64_T|5.011000||Viu INTMAX_C|5.003007|5.003007| INT_PAT_MODS|5.009005||Viu intro_my|5.021006|5.021006| INTSIZE|5.003007|5.003007|Vn intuit_method|5.005000||Viu intuit_more|5.003007||Viu IN_UNI_8_BIT|5.011002||Viu IN_UTF8_CTYPE_LOCALE|5.019009||Viu _inverse_folds|5.027011||cViu invert|5.003007||Viu invlist_array|5.013010||Vniu _invlist_array_init|5.015001||Vniu invlist_clear|5.023009||Viu invlist_clone|5.015001||cViu _invlist_contains_cp|5.017003||Vniu invlist_contents|5.023008||Viu _invlist_dump|5.019003||cViu _invlistEQ|5.023006||cViu invlist_extend|5.013010||Viu invlist_highest|5.017002||Vniu _invlist_intersection|5.015001||Viu _invlist_intersection_maybe_complement_2nd|5.015008||cViu _invlist_invert|5.015001||cViu invlist_is_iterating|5.017008||Vniu invlist_iterfinish|5.017008||Vniu invlist_iterinit|5.015001||Vniu invlist_iternext|5.015001||Vniu _invlist_len|5.017004||Vniu invlist_lowest|5.031007||xVniu invlist_max|5.013010||Vniu invlist_previous_index|5.017004||Vniu invlist_replace_list_destroys_src|5.023009||Viu _invlist_search|5.017003||cVniu invlist_set_len|5.013010||Viu invlist_set_previous_index|5.017004||Vniu _invlist_subtract|5.015001||Viu invlist_trim|5.013010||Vniu _invlist_union|5.015001||cVu _invlist_union_maybe_complement_2nd|5.015008||cViu invmap_dump|5.031006||Viu invoke_exception_hook|5.013001||Viu IoANY|5.006001||Viu IoBOTTOM_GV|5.003007||Viu IoBOTTOM_NAME|5.003007||Viu io_close|5.003007||Viu IOCPARM_LEN|5.003007||Viu ioctl|5.005000||Viu IoDIRP|5.003007||Viu IOf_ARGV|5.003007||Viu IOf_DIDTOP|5.003007||Viu IOf_FAKE_DIRP|5.006000||Viu IOf_FLUSH|5.003007||Viu IoFLAGS|5.003007||Viu IoFMT_GV|5.003007||Viu IoFMT_NAME|5.003007||Viu IOf_NOLINE|5.005003||Viu IOf_START|5.003007||Viu IOf_UNTAINT|5.003007||Viu IoIFP|5.003007||Viu IoLINES|5.003007||Viu IoLINES_LEFT|5.003007||Viu IoOFP|5.003007||Viu IoPAGE|5.003007||Viu IoPAGE_LEN|5.003007||Viu IoTOP_GV|5.003007||Viu IoTOP_NAME|5.003007||Viu IoTYPE|5.003007||Viu IoTYPE_APPEND|5.006001||Viu IoTYPE_CLOSED|5.006001||Viu IoTYPE_IMPLICIT|5.008001||Viu IoTYPE_NUMERIC|5.008001||Viu IoTYPE_PIPE|5.006001||Viu IoTYPE_RDONLY|5.006001||Viu IoTYPE_RDWR|5.006001||Viu IoTYPE_SOCKET|5.006001||Viu IoTYPE_STD|5.006001||Viu IoTYPE_WRONLY|5.006001||Viu I_POLL|5.006000|5.006000|Vn I_PTHREAD|5.005003|5.005003|Vn I_PWD|5.003007|5.003007|Vn isALNUM|5.003007|5.003007|p isALNUM_A|5.031003|5.003007|p isALNUMC|5.006000|5.003007|p isALNUMC_A|5.013006|5.003007|p isALNUMC_L1|5.013006|5.003007|p isALNUMC_LC|5.006000|5.006000| isALNUMC_LC_utf8_safe|5.031007||Viu isALNUMC_LC_uvchr|5.017007|5.017007| isALNUMC_uni|5.017007||Viu isALNUMC_utf8|5.017007||Viu isALNUMC_utf8_safe|5.031007||Viu isALNUM_lazy_if_safe|5.031007||Viu isALNUM_LC|5.004000|5.004000| isALNUM_LC_utf8|5.006000||Viu isALNUM_LC_utf8_safe|5.031007||Viu isALNUM_LC_uvchr|5.007001|5.007001| isALNUMU|5.011005||Viu isALNUM_uni|5.006000||Viu isALNUM_utf8|5.006000||Viu isALNUM_utf8_safe|5.031007||Viu isa_lookup|5.005000||Viu isALPHA|5.003007|5.003007|p isALPHA_A|5.013006|5.003007|p isALPHA_FOLD_EQ|5.021004||Viu isALPHA_FOLD_NE|5.021004||Viu isALPHA_L1|5.013006|5.003007|p isALPHA_LC|5.004000|5.004000| isALPHA_LC_utf8|5.006000||Viu isALPHA_LC_utf8_safe|5.025009|5.006000|p isALPHA_LC_uvchr|5.007001|5.007001| isALPHANUMERIC|5.017008|5.003007|p isALPHANUMERIC_A|5.017008|5.003007|p isALPHANUMERIC_L1|5.017008|5.003007|p isALPHANUMERIC_LC|5.017008|5.004000|p isALPHANUMERIC_LC_utf8|5.017008||Viu isALPHANUMERIC_LC_utf8_safe|5.025009|5.006000|p isALPHANUMERIC_LC_uvchr|5.017008|5.017008| isALPHANUMERIC_uni|5.017008||Viu isALPHANUMERIC_utf8|5.031005|5.031005| isALPHANUMERIC_utf8_safe|5.025009|5.006000|p isALPHANUMERIC_uvchr|5.023009|5.006000|p isALPHAU|5.011005||Viu isALPHA_uni|5.006000||Viu isALPHA_utf8|5.031005|5.031005| isALPHA_utf8_safe|5.025009|5.006000|p isALPHA_uvchr|5.023009|5.006000|p is_an_int|5.005000||Viu is_ANYOF_SYNTHETIC|5.019009||Viu IS_ANYOF_TRIE|5.009005||Viu isASCII|5.006000|5.003007|p isASCII_A|5.013006|5.003007|p isASCII_L1|5.015004|5.003007|p isASCII_LC|5.015008|5.003007|p isASCII_LC_utf8|5.017007||Viu isASCII_LC_utf8_safe|5.025009|5.025009| isASCII_LC_uvchr|5.017007|5.017007| is_ascii_string|5.011000|5.011000|n isASCII_uni|5.006000||Viu isASCII_utf8|5.031005|5.031005| isASCII_utf8_safe|5.025009|5.003007|p isASCII_uvchr|5.023009|5.003007|p isatty|5.005000||Viu ISA_VERSION_OBJ|5.019008||Viu isBLANK|5.006001|5.003007|p isBLANK_A|5.013006|5.003007|p isBLANK_L1|5.013006|5.003007|p isBLANK_LC|5.006001|5.003007|p isBLANK_LC_uni|5.006001||Viu isBLANK_LC_utf8|5.006001||Viu isBLANK_LC_utf8_safe|5.025009|5.006000|p isBLANK_LC_uvchr|5.017007|5.017007| isBLANK_uni|5.006001||Viu isBLANK_utf8|5.031005|5.031005| isBLANK_utf8_safe|5.025009|5.006000|p isBLANK_uvchr|5.023009|5.006000|p isC9_STRICT_UTF8_CHAR|5.025005|5.025005|n is_c9strict_utf8_string|5.025006|5.025006|n is_c9strict_utf8_string_loc|5.025006|5.025006|n is_c9strict_utf8_string_loclen|5.025006|5.025006|n isCHARNAME_CONT|5.011005||Viu isCNTRL|5.006000|5.003007|p isCNTRL_A|5.013006|5.003007|p isCNTRL_L1|5.013006|5.003007|p isCNTRL_LC|5.006000|5.006000| isCNTRL_LC_utf8|5.006000||Viu isCNTRL_LC_utf8_safe|5.025009|5.006000|p isCNTRL_LC_uvchr|5.007001|5.007001| isCNTRL_uni|5.006000||Viu isCNTRL_utf8|5.031005|5.031005| isCNTRL_utf8_safe|5.025009|5.006000|p isCNTRL_uvchr|5.023009|5.006000|p _is_cur_LC_category_utf8|5.021001||cVu isDEBUG_WILDCARD|5.031011||Viu isDIGIT|5.003007|5.003007|p isDIGIT_A|5.013006|5.003007|p isDIGIT_L1|5.013006|5.003007|p isDIGIT_LC|5.004000|5.004000| isDIGIT_LC_utf8|5.006000||Viu isDIGIT_LC_utf8_safe|5.025009|5.006000|p isDIGIT_LC_uvchr|5.007001|5.007001| isDIGIT_uni|5.006000||Viu isDIGIT_utf8|5.031005|5.031005| isDIGIT_utf8_safe|5.025009|5.006000|p isDIGIT_uvchr|5.023009|5.006000|p isEXACTFish|5.033003||Viu isEXACT_REQ8|5.033003||Viu isFF_overlong|5.035004||Vniu is_FOLDS_TO_MULTI_utf8|5.019009||Viu isFOO_lc|5.017007||Viu isFOO_utf8_lc|5.017008||Viu isGCB|5.021009||Viu isGRAPH|5.006000|5.003007|p isGRAPH_A|5.013006|5.003007|p is_grapheme|5.031007||Viu isGRAPH_L1|5.013006|5.003007|p isGRAPH_LC|5.006000|5.006000| isGRAPH_LC_utf8|5.006000||Viu isGRAPH_LC_utf8_safe|5.025009|5.006000|p isGRAPH_LC_uvchr|5.007001|5.007001| isGRAPH_uni|5.006000||Viu isGRAPH_utf8|5.031005|5.031005| isGRAPH_utf8_safe|5.025009|5.006000|p isGRAPH_uvchr|5.023009|5.006000|p isGV|5.003007||Viu isGV_or_RVCV|5.027005||Viu isGV_with_GP|5.009004|5.003007|p isGV_with_GP_off|5.009005||Viu isGV_with_GP_on|5.009005||Viu I_SHADOW|5.006000|5.006000|Vn is_handle_constructor|5.006000||Vniu is_HANGUL_ED_utf8_safe|5.029001||Viu is_HORIZWS_cp_high|5.017006||Viu is_HORIZWS_high|5.017006||Viu isIDCONT|5.017008|5.003007|p isIDCONT_A|5.017008|5.003007|p isIDCONT_L1|5.017008|5.003007|p isIDCONT_LC|5.017008|5.004000|p isIDCONT_LC_utf8|5.017008||Viu isIDCONT_LC_utf8_safe|5.025009|5.006000|p isIDCONT_LC_uvchr|5.017008|5.017008| isIDCONT_uni|5.017008||Viu isIDCONT_utf8|5.031005|5.031005| isIDCONT_utf8_safe|5.025009|5.006000|p isIDCONT_uvchr|5.023009|5.006000|p isIDFIRST|5.003007|5.003007|p isIDFIRST_A|5.013006|5.003007|p isIDFIRST_L1|5.013006|5.003007|p isIDFIRST_lazy_if_safe|5.025009||Viu isIDFIRST_LC|5.004000|5.004000|p isIDFIRST_LC_utf8|5.006000||Viu isIDFIRST_LC_utf8_safe|5.025009|5.006000|p isIDFIRST_LC_uvchr|5.007001|5.007001| isIDFIRST_uni|5.006000||Viu isIDFIRST_utf8|5.031005|5.031005| isIDFIRST_utf8_safe|5.025009|5.006000|p isIDFIRST_uvchr|5.023009|5.006000|p isinfnan|5.021004|5.021004|n isinfnansv|5.021005||Vi _is_in_locale_category|5.021001||cViu IS_IN_SOME_FOLD_L1|5.033005||Viu is_invariant_string|5.021007|5.011000|pn is_invlist|5.029002||Vniu is_LARGER_NON_CHARS_utf8|5.035003||Viu is_LAX_VERSION|5.011004||Viu isLB|5.023007||Viu isLEXWARN_off|5.006000||Viu isLEXWARN_on|5.006000||Viu is_LNBREAK_latin1_safe|5.009005||Viu is_LNBREAK_safe|5.009005||Viu is_LNBREAK_utf8_safe|5.009005||Viu isLOWER|5.003007|5.003007|p isLOWER_A|5.013006|5.003007|p isLOWER_L1|5.013006|5.003007|p isLOWER_LC|5.004000|5.004000| isLOWER_LC_utf8|5.006000||Viu isLOWER_LC_utf8_safe|5.025009|5.006000|p isLOWER_LC_uvchr|5.007001|5.007001| isLOWER_uni|5.006000||Viu isLOWER_utf8|5.031005|5.031005| isLOWER_utf8_safe|5.025009|5.006000|p isLOWER_uvchr|5.023009|5.006000|p is_lvalue_sub|5.007001|5.007001|u isMNEMONIC_CNTRL|5.031009||Viu is_MULTI_CHAR_FOLD_latin1_safe|5.019010||Viu is_MULTI_CHAR_FOLD_utf8_safe|5.019010||Viu is_MULTI_CHAR_FOLD_utf8_safe_part0|5.019010||Viu is_MULTI_CHAR_FOLD_utf8_safe_part1|5.019010||Viu is_MULTI_CHAR_FOLD_utf8_safe_part2|5.025008||Viu is_MULTI_CHAR_FOLD_utf8_safe_part3|5.025008||Viu is_NONCHAR_utf8_safe|5.025005||Viu IS_NON_FINAL_FOLD|5.033005||Viu isnormal|5.021004||Viu IS_NUMBER_GREATER_THAN_UV_MAX|5.007002|5.003007|p IS_NUMBER_INFINITY|5.007002|5.003007|p IS_NUMBER_IN_UV|5.007002|5.003007|p IS_NUMBER_NAN|5.007003|5.003007|p IS_NUMBER_NEG|5.007002|5.003007|p IS_NUMBER_NOT_INT|5.007002|5.003007|p IS_NUMBER_TRAILING|5.021002||Viu IS_NUMERIC_RADIX|5.006000||Viu isOCTAL|5.013005|5.003007|p isOCTAL_A|5.013006|5.003007|p isOCTAL_L1|5.013006|5.003007|p IS_PADCONST|5.006000||Viu IS_PADGV|5.006000||Viu is_PATWS_safe|5.017008||Viu isPOWER_OF_2|5.029006||Viu isPRINT|5.004000|5.003007|p isPRINT_A|5.013006|5.003007|p isPRINT_L1|5.013006|5.003007|p isPRINT_LC|5.004000|5.004000| isPRINT_LC_utf8|5.006000||Viu isPRINT_LC_utf8_safe|5.025009|5.006000|p isPRINT_LC_uvchr|5.007001|5.007001| isPRINT_uni|5.006000||Viu isPRINT_utf8|5.031005|5.031005| isPRINT_utf8_safe|5.025009|5.006000|p isPRINT_uvchr|5.023009|5.006000|p is_PROBLEMATIC_LOCALE_FOLD_cp|5.019009||Viu is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp|5.019009||Viu is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8|5.019009||Viu is_PROBLEMATIC_LOCALE_FOLD_utf8|5.019009||Viu isPSXSPC|5.006001|5.003007|p isPSXSPC_A|5.013006|5.003007|p isPSXSPC_L1|5.013006|5.003007|p isPSXSPC_LC|5.006001|5.006001| isPSXSPC_LC_utf8|5.006001||Viu isPSXSPC_LC_utf8_safe|5.025009|5.006000|p isPSXSPC_LC_uvchr|5.017007|5.017007| isPSXSPC_uni|5.006001||Viu isPSXSPC_utf8|5.031005|5.031005| isPSXSPC_utf8_safe|5.025009|5.006000|p isPSXSPC_uvchr|5.023009|5.006000|p isPUNCT|5.006000|5.003007|p isPUNCT_A|5.013006|5.003007|p isPUNCT_L1|5.013006|5.003007|p isPUNCT_LC|5.006000|5.006000| isPUNCT_LC_utf8|5.006000||Viu isPUNCT_LC_utf8_safe|5.025009|5.006000|p isPUNCT_LC_uvchr|5.007001|5.007001| isPUNCT_uni|5.006000||Viu isPUNCT_utf8|5.031005|5.031005| isPUNCT_utf8_safe|5.025009|5.006000|p isPUNCT_uvchr|5.023009|5.006000|p is_QUOTEMETA_high|5.017004||Viu isREGEXP|5.017006||Viu IS_SAFE_PATHNAME|5.019004||Viu IS_SAFE_SYSCALL|5.019004|5.019004| is_safe_syscall|5.019004|5.019004| isSB|5.021009||Viu isSCRIPT_RUN|5.027008||cVi is_SHORTER_NON_CHARS_utf8|5.035003||Viu isSPACE|5.003007|5.003007|p isSPACE_A|5.013006|5.003007|p isSPACE_L1|5.013006|5.003007|p isSPACE_LC|5.004000|5.004000| isSPACE_LC_utf8|5.006000||Viu isSPACE_LC_utf8_safe|5.025009|5.006000|p isSPACE_LC_uvchr|5.007001|5.007001| isSPACE_uni|5.006000||Viu isSPACE_utf8|5.031005|5.031005| isSPACE_utf8_safe|5.025009|5.006000|p isSPACE_uvchr|5.023009|5.006000|p is_ssc_worth_it|5.021005||Vniu isSTRICT_UTF8_CHAR|5.025005|5.025005|n is_strict_utf8_string|5.025006|5.025006|n is_strict_utf8_string_loc|5.025006|5.025006|n is_strict_utf8_string_loclen|5.025006|5.025006|n is_STRICT_VERSION|5.011004||Viu is_SURROGATE_utf8|5.035004||Viu is_SURROGATE_utf8_safe|5.025005||Viu I_STDARG|5.003007||Viu I_STDBOOL|5.015003|5.015003|Vn I_STDINT|5.021004|5.021004|Vn is_THREE_CHAR_FOLD_HEAD_latin1_safe|5.031007||Viu is_THREE_CHAR_FOLD_HEAD_utf8_safe|5.031007||Viu is_THREE_CHAR_FOLD_latin1_safe|5.031007||Viu is_THREE_CHAR_FOLD_utf8_safe|5.031007||Viu IS_TRIE_AC|5.009005||Viu isUNICODE_POSSIBLY_PROBLEMATIC|5.035004||Viu _is_uni_FOO|5.017008||cVu _is_uni_perl_idcont|5.017008||cVu _is_uni_perl_idstart|5.017007||cVu isUPPER|5.003007|5.003007|p isUPPER_A|5.013006|5.003007|p isUPPER_L1|5.013006|5.003007|p isUPPER_LC|5.004000|5.004000| isUPPER_LC_utf8|5.006000||Viu isUPPER_LC_utf8_safe|5.025009|5.006000|p isUPPER_LC_uvchr|5.007001|5.007001| isUPPER_uni|5.006000||Viu isUPPER_utf8|5.031005|5.031005| isUPPER_utf8_safe|5.025009|5.006000|p isUPPER_uvchr|5.023009|5.006000|p is_utf8_char|5.006000|5.006000|dn IS_UTF8_CHAR|5.009003||Viu isUTF8_CHAR|5.021001|5.006001|pn is_utf8_char_buf|5.015008|5.015008|n isUTF8_CHAR_flags|5.025005|5.025005|n is_utf8_char_helper_|5.035004||cVnu is_utf8_common|5.009003||Viu is_utf8_FF_helper_|5.035004||cVnu is_utf8_fixed_width_buf_flags|5.025006|5.025006|n is_utf8_fixed_width_buf_loc_flags|5.025006|5.025006|n is_utf8_fixed_width_buf_loclen_flags|5.025006|5.025006|n _is_utf8_FOO|5.031006||cVu is_utf8_invariant_string|5.025005|5.011000|pn is_utf8_invariant_string_loc|5.027001|5.027001|n is_utf8_non_invariant_string|5.027007||cVni is_utf8_overlong|5.035004||Vniu _is_utf8_perl_idcont|5.031006||cVu _is_utf8_perl_idstart|5.031006||cVu isUTF8_POSSIBLY_PROBLEMATIC|5.023003||Viu is_utf8_string|5.006001|5.006001|n is_utf8_string_flags|5.025006|5.025006|n is_utf8_string_loc|5.008001|5.008001|n is_utf8_string_loc_flags|5.025006|5.025006|n is_utf8_string_loclen|5.009003|5.009003|n is_utf8_string_loclen_flags|5.025006|5.025006|n is_utf8_valid_partial_char|5.025005|5.025005|n is_utf8_valid_partial_char_flags|5.025005|5.025005|n is_VERTWS_cp_high|5.017006||Viu is_VERTWS_high|5.017006||Viu isVERTWS_uni|5.017006||Viu isVERTWS_utf8|5.017006||Viu isVERTWS_utf8_safe|5.025009||Viu isVERTWS_uvchr|5.023009||Viu isWARNf_on|5.006001||Viu isWARN_on|5.006000||Viu isWARN_ONCE|5.006000||Viu isWB|5.021009||Viu isWORDCHAR|5.013006|5.003007|p isWORDCHAR_A|5.013006|5.003007|p isWORDCHAR_L1|5.013006|5.003007|p isWORDCHAR_lazy_if_safe|5.025009||Viu isWORDCHAR_LC|5.017007|5.004000|p isWORDCHAR_LC_utf8|5.017007||Viu isWORDCHAR_LC_utf8_safe|5.025009|5.006000|p isWORDCHAR_LC_uvchr|5.017007|5.017007| isWORDCHAR_uni|5.017006||Viu isWORDCHAR_utf8|5.031005|5.031005| isWORDCHAR_utf8_safe|5.025009|5.006000|p isWORDCHAR_uvchr|5.023009|5.006000|p isXDIGIT|5.006000|5.003007|p isXDIGIT_A|5.013006|5.003007|p is_XDIGIT_cp_high|5.017006||Viu is_XDIGIT_high|5.017006||Viu isXDIGIT_L1|5.013006|5.003007|p isXDIGIT_LC|5.017007|5.003007|p isXDIGIT_LC_utf8|5.017007||Viu isXDIGIT_LC_utf8_safe|5.025009|5.006000|p isXDIGIT_LC_uvchr|5.017007|5.017007| isXDIGIT_uni|5.006000||Viu isXDIGIT_utf8|5.031005|5.031005| isXDIGIT_utf8_safe|5.025009|5.006000|p isXDIGIT_uvchr|5.023009|5.006000|p is_XPERLSPACE_cp_high|5.017006||Viu is_XPERLSPACE_high|5.017006||Viu I_SYS_DIR|5.003007|5.003007|Vn I_SYS_FILE|5.003007|5.003007|Vn I_SYS_IOCTL|5.003007|5.003007|Vn I_SYSLOG|5.006000|5.006000|Vn I_SYS_MOUNT|5.023005|5.023005|Vn I_SYS_PARAM|5.003007|5.003007|Vn I_SYS_POLL|5.010001|5.010001|Vn I_SYS_RESOURCE|5.003007|5.003007|Vn I_SYS_SELECT|5.003007|5.003007|Vn I_SYS_STAT|5.003007|5.003007|Vn I_SYS_STATFS|5.023005|5.023005|Vn I_SYS_STATVFS|5.023005|5.023005|Vn I_SYS_TIME|5.003007|5.003007|Vn I_SYS_TIMES|5.003007|5.003007|Vn I_SYS_TYPES|5.003007|5.003007|Vn I_SYSUIO|5.006000|5.006000|Vn I_SYS_UN|5.003007|5.003007|Vn I_SYSUTSNAME|5.006000|5.006000|Vn I_SYS_VFS|5.023005|5.023005|Vn I_SYS_WAIT|5.003007|5.003007|Vn items||5.003007| I_TERMIOS|5.003007|5.003007|Vn I_TIME|5.003007|5.003007|Vn I_UNISTD|5.003007|5.003007|Vn I_USTAT|5.023005|5.023005|Vn I_UTIME|5.003007|5.003007|Vn I_V|5.006000|5.003007| IVdf|5.006000|5.003007|poVn IV_DIG|5.006000||Viu IV_IS_QUAD|5.006000||Viu IV_MAX|5.003007|5.003007| IV_MAX_P1|5.007002||Viu IV_MIN|5.003007|5.003007| IVSIZE|5.006000|5.003007|poVn IVTYPE|5.006000|5.003007|poVn I_WCHAR|5.027006|5.027006|Vn I_WCTYPE|5.029009|5.029009|Vn ix||5.003007| I_XLOCALE|5.025004|5.025004|Vn JE_OLD_STACK_HWM_restore|5.027002||Viu JE_OLD_STACK_HWM_save|5.027002||Viu JE_OLD_STACK_HWM_zero|5.027002||Viu jmaybe|5.003007||Viu JMPENV_BOOTSTRAP|5.006000||Viu JMPENV_JUMP|5.004000|5.004000| JMPENV_POP|5.004000||Viu JMPENV_PUSH|5.004000||Viu JOIN|5.005000||Viu join_exact|5.009004||Viu kBINOP|5.003007||Viu kCOP|5.003007||Viu KEEPCOPY_PAT_MOD|5.009005||Viu KEEPCOPY_PAT_MODS|5.009005||Viu KEEPS|5.009005||Viu KEEPS_next|5.009005||Viu KEEPS_next_fail|5.009005||Viu KEEPS_next_fail_t8|5.035004||Viu KEEPS_next_fail_t8_p8|5.033003||Viu KEEPS_next_fail_t8_pb|5.033003||Viu KEEPS_next_fail_tb|5.035004||Viu KEEPS_next_fail_tb_p8|5.033003||Viu KEEPS_next_fail_tb_pb|5.033003||Viu KEEPS_next_t8|5.035004||Viu KEEPS_next_t8_p8|5.033003||Viu KEEPS_next_t8_pb|5.033003||Viu KEEPS_next_tb|5.035004||Viu KEEPS_next_tb_p8|5.033003||Viu KEEPS_next_tb_pb|5.033003||Viu KEEPS_t8|5.035004||Viu KEEPS_t8_p8|5.033003||Viu KEEPS_t8_pb|5.033003||Viu KEEPS_tb|5.035004||Viu KEEPS_tb_p8|5.033003||Viu KEEPS_tb_pb|5.033003||Viu KELVIN_SIGN|5.017003||Viu KERNEL|5.003007||Viu KEY_abs|5.003007||Viu KEY_accept|5.003007||Viu KEY_alarm|5.003007||Viu KEY_and|5.003007||Viu KEY_atan2|5.003007||Viu KEY_AUTOLOAD|5.003007||Viu KEY_BEGIN|5.003007||Viu KEY_bind|5.003007||Viu KEY_binmode|5.003007||Viu KEY_bless|5.003007||Viu KEY_break|5.027008||Viu KEY_caller|5.003007||Viu KEY_catch|5.033007||Viu KEY_chdir|5.003007||Viu KEY_CHECK|5.006000||Viu KEY_chmod|5.003007||Viu KEY_chomp|5.003007||Viu KEY_chop|5.003007||Viu KEY_chown|5.003007||Viu KEY_chr|5.003007||Viu KEY_chroot|5.003007||Viu KEY_close|5.003007||Viu KEY_closedir|5.003007||Viu KEY_cmp|5.003007||Viu KEY_connect|5.003007||Viu KEY_continue|5.003007||Viu KEY_cos|5.003007||Viu KEY_crypt|5.003007||Viu KEY___DATA|5.003007||Viu KEY_dbmclose|5.003007||Viu KEY_dbmopen|5.003007||Viu KEY_default|5.027008||Viu KEY_defer|5.035004||Viu KEY_defined|5.003007||Viu KEY_delete|5.003007||Viu KEY_DESTROY|5.003007||Viu KEY_die|5.003007||Viu KEY_do|5.003007||Viu KEY_dump|5.003007||Viu KEY_each|5.003007||Viu KEY_else|5.003007||Viu KEY_elsif|5.003007||Viu KEY___END|5.003007||Viu KEY_END|5.003007||Viu KEY_endgrent|5.003007||Viu KEY_endhostent|5.003007||Viu KEY_endnetent|5.003007||Viu KEY_endprotoent|5.003007||Viu KEY_endpwent|5.003007||Viu KEY_endservent|5.003007||Viu KEY_eof|5.003007||Viu KEY_eq|5.003007||Viu KEY_eval|5.003007||Viu KEY_evalbytes|5.015005||Viu KEY_exec|5.003007||Viu KEY_exists|5.003007||Viu KEY_exit|5.003007||Viu KEY_exp|5.003007||Viu KEY_fc|5.015008||Viu KEY_fcntl|5.003007||Viu KEY___FILE|5.003007||Viu KEY_fileno|5.003007||Viu KEY_finally|5.035008||Viu KEY_flock|5.003007||Viu KEY_for|5.003007||Viu KEY_foreach|5.003007||Viu KEY_fork|5.003007||Viu KEY_format|5.003007||Viu KEY_formline|5.003007||Viu KEY_ge|5.003007||Viu KEY_getc|5.003007||Viu KEY_getgrent|5.003007||Viu KEY_getgrgid|5.003007||Viu KEY_getgrnam|5.003007||Viu KEY_gethostbyaddr|5.003007||Viu KEY_gethostbyname|5.003007||Viu KEY_gethostent|5.003007||Viu KEY_getlogin|5.003007||Viu KEY_getnetbyaddr|5.003007||Viu KEY_getnetbyname|5.003007||Viu KEY_getnetent|5.003007||Viu KEY_getpeername|5.003007||Viu KEY_getpgrp|5.003007||Viu KEY_getppid|5.003007||Viu KEY_getpriority|5.003007||Viu KEY_getprotobyname|5.003007||Viu KEY_getprotobynumber|5.003007||Viu KEY_getprotoent|5.003007||Viu KEY_getpwent|5.003007||Viu KEY_getpwnam|5.003007||Viu KEY_getpwuid|5.003007||Viu KEY_getservbyname|5.003007||Viu KEY_getservbyport|5.003007||Viu KEY_getservent|5.003007||Viu KEY_getsockname|5.003007||Viu KEY_getsockopt|5.003007||Viu KEY_getspnam|5.031011||Viu KEY_given|5.009003||Viu KEY_glob|5.003007||Viu KEY_gmtime|5.003007||Viu KEY_goto|5.003007||Viu KEY_grep|5.003007||Viu KEY_gt|5.003007||Viu KEY_hex|5.003007||Viu KEY_if|5.003007||Viu KEY_index|5.003007||Viu KEY_INIT|5.005000||Viu KEY_int|5.003007||Viu KEY_ioctl|5.003007||Viu KEY_isa|5.031007||Viu KEY_join|5.003007||Viu KEY_keys|5.003007||Viu KEY_kill|5.003007||Viu KEY_last|5.003007||Viu KEY_lc|5.003007||Viu KEY_lcfirst|5.003007||Viu KEY_le|5.003007||Viu KEY_length|5.003007||Viu KEY___LINE|5.003007||Viu KEY_link|5.003007||Viu KEY_listen|5.003007||Viu KEY_local|5.003007||Viu KEY_localtime|5.003007||Viu KEY_lock|5.005000||Viu KEY_log|5.003007||Viu KEY_lstat|5.003007||Viu KEY_lt|5.003007||Viu KEY_m|5.003007||Viu KEY_map|5.003007||Viu KEY_mkdir|5.003007||Viu KEY_msgctl|5.003007||Viu KEY_msgget|5.003007||Viu KEY_msgrcv|5.003007||Viu KEY_msgsnd|5.003007||Viu KEY_my|5.003007||Viu KEY_ne|5.003007||Viu KEY_next|5.003007||Viu KEY_no|5.003007||Viu KEY_not|5.003007||Viu KEY_NULL|5.003007||Viu KEY_oct|5.003007||Viu KEY_open|5.003007||Viu KEY_opendir|5.003007||Viu KEY_or|5.003007||Viu KEY_ord|5.003007||Viu KEY_our|5.006000||Viu KEY_pack|5.003007||Viu KEY_package|5.003007||Viu KEY___PACKAGE|5.004000||Viu KEY_pipe|5.003007||Viu KEY_pop|5.003007||Viu KEY_pos|5.003007||Viu KEY_print|5.003007||Viu KEY_printf|5.003007||Viu KEY_prototype|5.003007||Viu KEY_push|5.003007||Viu KEY_q|5.003007||Viu KEY_qq|5.003007||Viu KEY_qr|5.005000||Viu KEY_quotemeta|5.003007||Viu KEY_qw|5.003007||Viu KEY_qx|5.003007||Viu KEY_rand|5.003007||Viu KEY_read|5.003007||Viu KEY_readdir|5.003007||Viu KEY_readline|5.003007||Viu KEY_readlink|5.003007||Viu KEY_readpipe|5.003007||Viu KEY_recv|5.003007||Viu KEY_redo|5.003007||Viu KEY_ref|5.003007||Viu KEY_rename|5.003007||Viu KEY_require|5.003007||Viu KEY_reset|5.003007||Viu KEY_return|5.003007||Viu KEY_reverse|5.003007||Viu KEY_rewinddir|5.003007||Viu KEY_rindex|5.003007||Viu KEY_rmdir|5.003007||Viu KEY_s|5.003007||Viu KEY_say|5.009003||Viu KEY_scalar|5.003007||Viu KEY_seek|5.003007||Viu KEY_seekdir|5.003007||Viu KEY_select|5.003007||Viu KEY_semctl|5.003007||Viu KEY_semget|5.003007||Viu KEY_semop|5.003007||Viu KEY_send|5.003007||Viu KEY_setgrent|5.003007||Viu KEY_sethostent|5.003007||Viu KEY_setnetent|5.003007||Viu KEY_setpgrp|5.003007||Viu KEY_setpriority|5.003007||Viu KEY_setprotoent|5.003007||Viu KEY_setpwent|5.003007||Viu KEY_setservent|5.003007||Viu KEY_setsockopt|5.003007||Viu KEY_shift|5.003007||Viu KEY_shmctl|5.003007||Viu KEY_shmget|5.003007||Viu KEY_shmread|5.003007||Viu KEY_shmwrite|5.003007||Viu KEY_shutdown|5.003007||Viu KEY_sigvar|5.025004||Viu KEY_sin|5.003007||Viu KEY_sleep|5.003007||Viu KEY_socket|5.003007||Viu KEY_socketpair|5.003007||Viu KEY_sort|5.003007||Viu KEY_splice|5.003007||Viu KEY_split|5.003007||Viu KEY_sprintf|5.003007||Viu KEY_sqrt|5.003007||Viu KEY_srand|5.003007||Viu KEY_stat|5.003007||Viu KEY_state|5.009004||Viu KEY_study|5.003007||Viu KEY_sub|5.003007||Viu KEY___SUB|5.015006||Viu KEY_substr|5.003007||Viu KEY_symlink|5.003007||Viu KEY_syscall|5.003007||Viu KEY_sysopen|5.003007||Viu KEY_sysread|5.003007||Viu KEY_sysseek|5.004000||Viu KEY_system|5.003007||Viu KEY_syswrite|5.003007||Viu KEY_tell|5.003007||Viu KEY_telldir|5.003007||Viu KEY_tie|5.003007||Viu KEY_tied|5.003007||Viu KEY_time|5.003007||Viu KEY_times|5.003007||Viu KEY_tr|5.003007||Viu KEY_truncate|5.003007||Viu KEY_try|5.033007||Viu KEY_uc|5.003007||Viu KEY_ucfirst|5.003007||Viu KEY_umask|5.003007||Viu KEY_undef|5.003007||Viu KEY_UNITCHECK|5.009005||Viu KEY_unless|5.003007||Viu KEY_unlink|5.003007||Viu KEY_unpack|5.003007||Viu KEY_unshift|5.003007||Viu KEY_untie|5.003007||Viu KEY_until|5.003007||Viu KEY_use|5.003007||Viu KEY_utime|5.003007||Viu KEY_values|5.003007||Viu KEY_vec|5.003007||Viu KEY_wait|5.003007||Viu KEY_waitpid|5.003007||Viu KEY_wantarray|5.003007||Viu KEY_warn|5.003007||Viu KEY_when|5.027008||Viu KEY_while|5.003007||Viu keyword|5.003007||Viu KEYWORD_PLUGIN_DECLINE|5.011002||Viu KEYWORD_PLUGIN_EXPR|5.011002||Viu KEYWORD_PLUGIN_MUTEX_INIT|5.027006||Viu KEYWORD_PLUGIN_MUTEX_LOCK|5.027006||Viu KEYWORD_PLUGIN_MUTEX_TERM|5.027006||Viu KEYWORD_PLUGIN_MUTEX_UNLOCK|5.027006||Viu keyword_plugin_standard|||iu KEYWORD_PLUGIN_STMT|5.011002||Viu KEY_write|5.003007||Viu KEY_x|5.003007||Viu KEY_xor|5.003007||Viu KEY_y|5.003007||Viu kGVOP_gv|5.006000||Viu kill|5.005000||Viu killpg|5.005000||Viu kLISTOP|5.003007||Viu kLOGOP|5.003007||Viu kLOOP|5.003007||Viu kPADOP|5.006000||Viu kPMOP|5.003007||Viu kPVOP|5.003007||Viu kSVOP|5.003007||Viu kSVOP_sv|5.006000||Viu kUNOP|5.003007||Viu kUNOP_AUX|5.021007||Viu LATIN1_TO_NATIVE|5.019004|5.003007|p LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE|5.013011||Viu LATIN_CAPITAL_LETTER_A_WITH_RING_ABOVE_NATIVE|5.017004||Viu LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE|5.023002||Viu LATIN_CAPITAL_LETTER_I_WITH_DOT_ABOVE_UTF8|5.023002||Viu LATIN_CAPITAL_LETTER_SHARP_S|5.014000||Viu LATIN_CAPITAL_LETTER_SHARP_S_UTF8|5.019001||Viu LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS|5.013011||Viu LATIN_SMALL_LETTER_A_WITH_RING_ABOVE|5.013011||Viu LATIN_SMALL_LETTER_A_WITH_RING_ABOVE_NATIVE|5.017004||Viu LATIN_SMALL_LETTER_DOTLESS_I|5.023002||Viu LATIN_SMALL_LETTER_DOTLESS_I_UTF8|5.023002||Viu LATIN_SMALL_LETTER_LONG_S|5.017003||Viu LATIN_SMALL_LETTER_LONG_S_UTF8|5.019001||Viu LATIN_SMALL_LETTER_SHARP_S|5.011002||Viu LATIN_SMALL_LETTER_SHARP_S_NATIVE|5.017004||Viu LATIN_SMALL_LETTER_SHARP_S_UTF8|5.033003||Viu LATIN_SMALL_LETTER_Y_WITH_DIAERESIS|5.011002||Viu LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE|5.017004||Viu LATIN_SMALL_LIGATURE_LONG_S_T|5.019004||Viu LATIN_SMALL_LIGATURE_LONG_S_T_UTF8|5.019004||Viu LATIN_SMALL_LIGATURE_ST|5.019004||Viu LATIN_SMALL_LIGATURE_ST_UTF8|5.019004||Viu LB_BREAKABLE|5.023007||Viu LB_CM_ZWJ_foo|5.025003||Viu LB_HY_or_BA_then_foo|5.023007||Viu LB_NOBREAK|5.023007||Viu LB_NOBREAK_EVEN_WITH_SP_BETWEEN|5.023007||Viu LB_PR_or_PO_then_OP_or_HY|5.023007||Viu LB_RI_then_RI|5.025003||Viu LB_SP_foo|5.023007||Viu LB_SY_or_IS_then_various|5.023007||Viu LB_various_then_PO_or_PR|5.023007||Viu LC_NUMERIC_LOCK|5.027009||pVu LC_NUMERIC_UNLOCK|5.027009||pVu LDBL_DIG|5.006000||Viu LEAVE|5.003007|5.003007| leave_adjust_stacks|5.023008|5.023008|xu leave_scope|5.003007|5.003007|u LEAVE_SCOPE|5.003007||Viu LEAVE_with_name|5.011002|5.011002| LEXACT|5.031005||Viu LEXACT_REQ8|5.031006||Viu LEXACT_REQ8_t8|5.035004||Viu LEXACT_REQ8_t8_p8|5.033003||Viu LEXACT_REQ8_t8_pb|5.033003||Viu LEXACT_REQ8_tb|5.035004||Viu LEXACT_REQ8_tb_p8|5.033003||Viu LEXACT_REQ8_tb_pb|5.033003||Viu LEXACT_t8|5.035004||Viu LEXACT_t8_p8|5.033003||Viu LEXACT_t8_pb|5.033003||Viu LEXACT_tb|5.035004||Viu LEXACT_tb_p8|5.033003||Viu LEXACT_tb_pb|5.033003||Viu lex_bufutf8|5.011002|5.011002|x lex_discard_to|5.011002|5.011002|x LEX_DONT_CLOSE_RSFP|5.015009||Viu LEX_EVALBYTES|5.015005||Viu lex_grow_linestr|5.011002|5.011002|x LEX_IGNORE_UTF8_HINTS|5.015005||Viu LEX_KEEP_PREVIOUS|5.011002|5.011002| lex_next_chunk|5.011002|5.011002|x LEX_NOTPARSING|5.004004||Viu lex_peek_unichar|5.011002|5.011002|x lex_read_space|5.011002|5.011002|x lex_read_to|5.011002|5.011002|x lex_read_unichar|5.011002|5.011002|x lex_start|5.013007|5.013007|x LEX_START_COPIED|5.015005||Viu LEX_START_FLAGS|5.015005||Viu LEX_START_SAME_FILTER|5.014000||Viu lex_stuff_pv|5.013006|5.013006|x lex_stuff_pvn|5.011002|5.011002|x lex_stuff_pvs|5.013005|5.013005|x lex_stuff_sv|5.011002|5.011002|x LEX_STUFF_UTF8|5.011002|5.011002| lex_unstuff|5.011002|5.011002|x LF_NATIVE|5.019004||Viu LIB_INVARG|5.008001||Viu LIBM_LIB_VERSION|5.009003|5.009003|Vn LIKELY|5.009004|5.003007|p link|5.006000||Viu LINKLIST|5.013006|5.013006| list|5.003007||Viu listen|5.005000||Viu listkids|5.003007||Viu LNBREAK|5.009005||Viu LNBREAK_t8|5.035004||Viu LNBREAK_t8_p8|5.033003||Viu LNBREAK_t8_pb|5.033003||Viu LNBREAK_tb|5.035004||Viu LNBREAK_tb_p8|5.033003||Viu LNBREAK_tb_pb|5.033003||Viu load_charnames|5.031010||cViu load_module|5.006000|5.003007|pv load_module_nocontext|5.013006|5.013006|vn LOCALECONV_LOCK|5.033005||Viu LOCALECONV_UNLOCK|5.033005||Viu LOCALE_INIT|5.024000||Viu LOCALE_INIT_LC_NUMERIC|5.033005||Viu LOCALE_LOCK|5.024000||Viu LOCALE_PAT_MOD|5.013006||Viu LOCALE_PAT_MODS|5.013006||Viu LOCALE_READ_LOCK|5.033005||Viu LOCALE_READ_UNLOCK|5.033005||Viu LOCALE_TERM|5.024000||Viu LOCALE_TERM_LC_NUMERIC|5.033005||Viu LOCALE_TERM_POSIX_2008|5.033005||Viu LOCALE_UNLOCK|5.024000||Viu localize|5.003007||Viu LOCAL_PATCH_COUNT|5.003007||Viu localtime|5.031011||Viu LOCALTIME_MAX|5.010001|5.010001|Vn LOCALTIME_MIN|5.010001|5.010001|Vn LOCALTIME_R_NEEDS_TZSET|5.010000|5.010000|Vn LOCALTIME_R_PROTO|5.008000|5.008000|Vn LOCK_DOLLARZERO_MUTEX|5.008001||Viu lockf|5.006000||Viu LOCK_LC_NUMERIC_STANDARD|5.021010||poVnu LOCK_NUMERIC_STANDARD|||piu LOC_SED|5.003007|5.003007|Vn LOGICAL|5.005000||Viu LOGICAL_t8|5.035004||Viu LOGICAL_t8_p8|5.033003||Viu LOGICAL_t8_pb|5.033003||Viu LOGICAL_tb|5.035004||Viu LOGICAL_tb_p8|5.033003||Viu LOGICAL_tb_pb|5.033003||Viu LONGDBLINFBYTES|5.023000|5.023000|Vn LONGDBLMANTBITS|5.023000|5.023000|Vn LONGDBLNANBYTES|5.023000|5.023000|Vn LONGDOUBLE_BIG_ENDIAN|5.021009||Viu LONGDOUBLE_DOUBLEDOUBLE|5.021009||Viu LONG_DOUBLE_EQUALS_DOUBLE|5.007001||Viu LONG_DOUBLE_IS_DOUBLE|5.021003|5.021003|Vn LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE|5.023006|5.023006|Vn LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE|5.023006|5.023006|Vn LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN|5.021003|5.021003|Vn LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE|5.023006|5.023006|Vn LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE|5.023006|5.023006|Vn LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN|5.021003|5.021003|Vn LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN|5.021003|5.021003|Vn LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN|5.021003|5.021003|Vn LONG_DOUBLE_IS_UNKNOWN_FORMAT|5.021003|5.021003|Vn LONG_DOUBLE_IS_VAX_H_FLOAT|5.025004|5.025004|Vn LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN|5.021003|5.021003|Vn LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN|5.021003|5.021003|Vn LONG_DOUBLEKIND|5.021003|5.021003|Vn LONGDOUBLE_LITTLE_ENDIAN|5.021009||Viu LONGDOUBLE_MIX_ENDIAN|5.023006||Viu LONG_DOUBLESIZE|5.005000|5.005000|Vn LONG_DOUBLE_STYLE_IEEE|5.025007|5.025007|Vn LONG_DOUBLE_STYLE_IEEE_EXTENDED|5.025007|5.025007|Vn LONGDOUBLE_VAX_ENDIAN|5.025004||Viu LONGDOUBLE_X86_80_BIT|5.021009||Viu LONGJMP|5.005000||Viu longjmp|5.005000||Viu LONGJMP_t8|5.035004||Viu LONGJMP_t8_p8|5.033003||Viu LONGJMP_t8_pb|5.033003||Viu LONGJMP_tb|5.035004||Viu LONGJMP_tb_p8|5.033003||Viu LONGJMP_tb_pb|5.033003||Viu LONGLONGSIZE|5.005000|5.005000|Vn LONGSIZE|5.004000|5.003007|oVn LOOKBEHIND_END_t8_p8|||Viu LOOKBEHIND_END_t8_pb|||Viu LOOKBEHIND_END_t8|||Viu LOOKBEHIND_END_tb_p8|||Viu LOOKBEHIND_END_tb_pb|||Viu LOOKBEHIND_END_tb|||Viu LOOKBEHIND_END|||Viu looks_like_bool|5.027008||Viu looks_like_number|5.003007|5.003007| LOOP_PAT_MODS|5.009005||Viu lop|5.005000||Viu lossless_NV_to_IV|5.031001||Vniu LOWEST_ANYOF_HRx_BYTE|5.031002||Viu L_R_TZSET|5.009005|5.009005|Vn lsbit_pos32|5.035003||cVnu lsbit_pos|5.035004||Viu lsbit_pos64|5.035003||cVnu lsbit_pos_uintmax|5.035003||Viu lseek|5.005000||Viu LSEEKSIZE|5.006000|5.006000|Vn lstat|5.005000||Viu LvFLAGS|5.015006||Viu LVf_NEG_LEN|5.027001||Viu LVf_NEG_OFF|5.027001||Viu LVf_OUT_OF_RANGE|5.027001||Viu LVRET|5.007001||Vi LvSTARGOFF|5.019004||Viu LvTARG|5.003007||Viu LvTARGLEN|5.003007||Viu LvTARGOFF|5.003007||Viu LvTYPE|5.003007||Viu LZC_TO_MSBIT_POS|5.035003||Viu magic_clear_all_env|5.004001||Viu magic_cleararylen_p|5.017002||Viu magic_clearenv|5.003007||Viu magic_clearhint|5.009004||Vi magic_clearhints|5.011000||Vi magic_clearisa|5.010001||Viu magic_clearpack|5.003007||Viu magic_clearsig|5.003007||Viu magic_copycallchecker|5.017000||Viu magic_dump|5.006000|5.006000|u magic_existspack|5.003007||Viu magic_freearylen_p|5.009003||Viu magic_freecollxfrm|5.033004||Viu magic_freemglob|5.033004||Viu magic_freeovrld|5.007001||Viu magic_freeutf8|5.033004||Viu magic_get|5.003007||Viu magic_getarylen|5.003007||Viu magic_getdebugvar|5.021005||Viu magic_getdefelem|5.004000||Viu magic_getnkeys|5.004005||Viu magic_getpack|5.003007||Viu magic_getpos|5.003007||Viu magic_getsig|5.003007||Viu magic_getsubstr|5.004005||Viu magic_gettaint|5.003007||Viu magic_getuvar|5.003007||Viu magic_getvec|5.004005||Viu magic_killbackrefs|5.006000||Viu magic_methcall1|5.013001||Viu magic_methcall|||vi magic_methpack|5.005000||Viu magic_nextpack|5.003007||Viu magic_regdata_cnt|5.006000||Viu magic_regdatum_get|5.006000||Viu magic_regdatum_set|5.006001||Viu magic_scalarpack|5.009001||Viu magic_set|5.003007||Viu magic_set_all_env|5.004004||Viu magic_setarylen|5.003007||Viu magic_setcollxfrm|5.004000||Viu magic_setdbline|5.003007||Viu magic_setdebugvar|5.021005||Viu magic_setdefelem|5.004000||Viu magic_setenv|5.003007||Viu magic_sethint|5.009004||Vi magic_sethint_feature|5.031007||Viu magic_setisa|5.003007||Viu magic_setlvref|5.021005||Viu magic_setmglob|5.003007||Viu magic_setnkeys|5.003007||Viu magic_setnonelem|5.027009||Viu magic_setpack|5.003007||Viu magic_setpos|5.003007||Viu magic_setregexp|5.008001||Viu magic_setsig|5.003007||Viu magic_setsigall|5.035001||Viu magic_setsubstr|5.003007||Viu magic_settaint|5.003007||Viu magic_setutf8|5.008001||Viu magic_setuvar|5.003007||Viu magic_setvec|5.003007||Viu magic_sizepack|5.005000||Viu magic_wipepack|5.003007||Viu make_exactf_invlist|5.031006||Viu make_matcher|5.027008||Viu make_trie|5.009002||Viu malloc|5.003007||Vn MALLOC_CHECK_TAINT2|5.008001||Viu MALLOC_CHECK_TAINT|5.008001||Viu malloced_size|5.005000||Vniu malloc_good_size|5.010001||Vniu MALLOC_INIT|5.005000||Viu MALLOC_OVERHEAD|5.006000||Viu Malloc_t|5.003007|5.003007|Vn MALLOC_TERM|5.005000||Viu MALLOC_TOO_LATE_FOR|5.008001||Viu MARK|5.003007|5.003007| MARKPOINT|5.009005||Viu MARKPOINT_next|5.009005||Viu MARKPOINT_next_fail|5.009005||Viu MARKPOINT_next_fail_t8|5.035004||Viu MARKPOINT_next_fail_t8_p8|5.033003||Viu MARKPOINT_next_fail_t8_pb|5.033003||Viu MARKPOINT_next_fail_tb|5.035004||Viu MARKPOINT_next_fail_tb_p8|5.033003||Viu MARKPOINT_next_fail_tb_pb|5.033003||Viu MARKPOINT_next_t8|5.035004||Viu MARKPOINT_next_t8_p8|5.033003||Viu MARKPOINT_next_t8_pb|5.033003||Viu MARKPOINT_next_tb|5.035004||Viu MARKPOINT_next_tb_p8|5.033003||Viu MARKPOINT_next_tb_pb|5.033003||Viu MARKPOINT_t8|5.035004||Viu MARKPOINT_t8_p8|5.033003||Viu MARKPOINT_t8_pb|5.033003||Viu MARKPOINT_tb|5.035004||Viu MARKPOINT_tb_p8|5.033003||Viu MARKPOINT_tb_pb|5.033003||Viu markstack_grow|5.021001|5.021001|u matcher_matches_sv|5.027008||Viu MAX|5.025006||Viu MAX_ANYOF_HRx_BYTE|5.031002||Viu MAXARG|5.003007||Viu MAX_CHARSET_NAME_LENGTH|5.013009||Viu MAX_FEATURE_LEN|5.013010||Viu MAX_FOLD_FROMS|5.029006||Viu MAX_LEGAL_CP|5.029002||Viu MAX_MATCHES|5.033005||Viu MAXO|5.003007||Viu MAXPATHLEN|5.006000||Viu MAX_PORTABLE_UTF8_TWO_BYTE|5.011002||Viu MAX_PRINT_A|5.033005||Viu MAX_RECURSE_EVAL_NOCHANGE_DEPTH|5.009005||Viu MAXSYSFD|5.003007||Viu MAX_UNICODE_UTF8|5.027006||Viu MAX_UNI_KEYWORD_INDEX|5.027011||Viu MAX_UTF8_TWO_BYTE|5.019004||Viu MAYBE_DEREF_GV|5.015003||Viu MAYBE_DEREF_GV_flags|5.015003||Viu MAYBE_DEREF_GV_nomg|5.015003||Viu maybe_multimagic_gv|5.019004||Viu mayberelocate|5.015006||Viu MBLEN_LOCK|5.033005||Viu MBLEN_UNLOCK|5.033005||Viu MBOL|5.003007||Viu MBOL_t8|5.035004||Viu MBOL_t8_p8|5.033003||Viu MBOL_t8_pb|5.033003||Viu MBOL_tb|5.035004||Viu MBOL_tb_p8|5.033003||Viu MBOL_tb_pb|5.033003||Viu MBTOWC_LOCK|5.033005||Viu MBTOWC_UNLOCK|5.033005||Viu MDEREF_ACTION_MASK|5.021007||Viu MDEREF_AV_gvav_aelem|5.021007||Viu MDEREF_AV_gvsv_vivify_rv2av_aelem|5.021007||Viu MDEREF_AV_padav_aelem|5.021007||Viu MDEREF_AV_padsv_vivify_rv2av_aelem|5.021007||Viu MDEREF_AV_pop_rv2av_aelem|5.021007||Viu MDEREF_AV_vivify_rv2av_aelem|5.021007||Viu MDEREF_FLAG_last|5.021007||Viu MDEREF_HV_gvhv_helem|5.021007||Viu MDEREF_HV_gvsv_vivify_rv2hv_helem|5.021007||Viu MDEREF_HV_padhv_helem|5.021007||Viu MDEREF_HV_padsv_vivify_rv2hv_helem|5.021007||Viu MDEREF_HV_pop_rv2hv_helem|5.021007||Viu MDEREF_HV_vivify_rv2hv_helem|5.021007||Viu MDEREF_INDEX_const|5.021007||Viu MDEREF_INDEX_gvsv|5.021007||Viu MDEREF_INDEX_MASK|5.021007||Viu MDEREF_INDEX_none|5.021007||Viu MDEREF_INDEX_padsv|5.021007||Viu MDEREF_MASK|5.021007||Viu MDEREF_reload|5.021007||Viu MDEREF_SHIFT|5.021007||Viu measure_struct|5.007003||Viu MEM_ALIGNBYTES|5.003007|5.003007|Vn memBEGINPs|5.027006||Viu memBEGINs|5.027006||Viu MEMBER_TO_FPTR|5.006000||Viu memCHRs|5.031008|5.003007|p mem_collxfrm|5.003007||dViu _mem_collxfrm|5.025002||Viu memENDPs|5.027006||Viu memENDs|5.027006||Viu memEQ|5.004000|5.003007|p memEQs|5.009005|5.003007|p memGE|5.025005||Viu memGT|5.025005||Viu memLE|5.025005||Viu MEM_LOG_ALLOC|5.009003||Viu mem_log_alloc|5.024000||Vniu mem_log_common|5.010001||Vniu MEM_LOG_DEL_SV|||Viu MEM_LOG_FREE|5.009003||Viu mem_log_free|5.024000||Vniu MEM_LOG_NEW_SV|||Viu MEM_LOG_REALLOC|5.009003||Viu mem_log_realloc|5.024000||Vniu memLT|5.025005||Viu memNE|5.004000|5.003007|p memNEs|5.009005|5.003007|p MEM_SIZE|5.003007||Viu MEM_SIZE_MAX|5.009005||Viu MEM_WRAP_CHECK_1|5.009002||Viu MEM_WRAP_CHECK|5.009002||Viu MEM_WRAP_CHECK_s|5.027010||Viu memzero|5.003007|5.003007| MEOL|5.003007||Viu MEOL_t8|5.035004||Viu MEOL_t8_p8|5.033003||Viu MEOL_t8_pb|5.033003||Viu MEOL_tb|5.035004||Viu MEOL_tb_p8|5.033003||Viu MEOL_tb_pb|5.033003||Viu mess|5.003007||pvV mess_alloc|5.005000||Viu mess_nocontext|5.006000||pvVn mess_sv|5.013001|5.004000|p MEXTEND|5.003007||Viu mfree|||nu MgBYTEPOS|5.019004||Viu MgBYTEPOS_set|5.019004||Viu mg_clear|5.003007|5.003007| mg_copy|5.003007|5.003007| mg_dup|5.007003|5.007003|u MGf_BYTES|5.019004||Viu MGf_COPY|5.007003||Viu MGf_DUP|5.007003||Viu MGf_GSKIP|5.003007||Viu mg_find|5.003007|5.003007|n mg_findext|5.013008|5.003007|pn mg_find_mglob|5.019002||cViu MGf_LOCAL|5.009003||Viu MGf_MINMATCH|5.003007||Viu MGf_PERSIST|5.021005||Viu mg_free|5.003007|5.003007| mg_freeext|5.027004|5.027004| mg_free_type|5.013006|5.013006| MGf_REFCOUNTED|5.003007||Viu MGf_REQUIRE_GV|5.021004||Viu MGf_TAINTEDDIR|5.003007||Viu mg_get|5.003007|5.003007| mg_length|5.005000|5.005000|d mg_localize|5.009003||Vi mg_magical|5.003007|5.003007|n MgPV|5.003007||Viu MgPV_const|5.009003||Viu MgPV_nolen_const|5.009003||Viu mg_set|5.003007|5.003007| mg_size|5.005000|5.005000|u MgSV|5.033009||Viu MgTAINTEDDIR|5.003007||Viu MgTAINTEDDIR_off|5.004000||Viu MgTAINTEDDIR_on|5.003007||Viu MICRO_SIGN|5.011002||Viu MICRO_SIGN_NATIVE|5.017004||Viu MICRO_SIGN_UTF8|5.033003||Viu MIN|5.025006||Viu mini_mktime|5.007002|5.007002|n MINMOD|5.003007||Viu MINMOD_t8|5.035004||Viu MINMOD_t8_p8|5.033003||Viu MINMOD_t8_pb|5.033003||Viu MINMOD_tb|5.035004||Viu MINMOD_tb_p8|5.033003||Viu MINMOD_tb_pb|5.033003||Viu minus_v|5.015006||Viu missingterm|5.005000||Viu Mkdir|5.004000||Viu mkdir|5.005000||Viu mktemp|5.005000||Viu Mmap_t|5.006000|5.006000|Vn mode_from_discipline|5.006000||Viu Mode_t|5.003007|5.003007|Vn modkids|5.003007||Viu MON_10|5.027010||Viu MON_11|5.027010||Viu MON_12|5.027010||Viu MON_1|5.027010||Viu MON_2|5.027010||Viu MON_3|5.027010||Viu MON_4|5.027010||Viu MON_5|5.027010||Viu MON_6|5.027010||Viu MON_7|5.027010||Viu MON_8|5.027010||Viu MON_9|5.027010||Viu more_bodies|||cu more_sv|5.009004||cVu moreswitches|5.003007||cVu mortal_getenv|5.031011||cVnu Move|5.003007|5.003007| MoveD|5.009002|5.003007|p move_proto_attr|5.019005||Viu M_PAT_MODS|5.009005||Viu MPH_BUCKETS|5.027011||Viu MPH_RSHIFT|5.027011||Viu MPH_VALt|5.027011||Viu mPUSHi|5.009002|5.003007|p mPUSHn|5.009002|5.003007|p mPUSHp|5.009002|5.003007|p mPUSHs|5.010001|5.003007|p mPUSHu|5.009002|5.003007|p mro_clean_isarev|5.013007||Viu mro_gather_and_rename|5.013007||Viu mro_get_from_name|||u mro_get_linear_isa|5.009005|5.009005| mro_get_linear_isa_c3|||i mro_get_linear_isa_dfs|5.009005||Vi MRO_GET_PRIVATE_DATA|5.010001|5.010001| mro_get_private_data|||cu mro_isa_changed_in|5.009005||Vi mro_meta_dup|5.009005||Viu mro_meta_init|||ciu mro_method_changed_in|5.009005|5.009005| mro_package_moved|5.013006||Vi mro_register||| mro_set_mro|||u mro_set_private_data||| msbit_pos32|5.035003||cVnu msbit_pos|5.035004||Viu msbit_pos64|5.035003||cVnu msbit_pos_uintmax|5.035003||Viu MSPAGAIN|5.003007||Viu MSVC_DIAG_IGNORE|5.029010||Viu MSVC_DIAG_IGNORE_DECL|5.029010||Viu MSVC_DIAG_IGNORE_STMT|5.029010||Viu MSVC_DIAG_RESTORE|5.029010||Viu MSVC_DIAG_RESTORE_DECL|5.029010||Viu MSVC_DIAG_RESTORE_STMT|5.029010||Viu mul128|5.005000||Viu MULTICALL|5.009003|5.009003| multiconcat_stringify|5.027006||cViu multideref_stringify|5.021009||cViu MULTILINE_PAT_MOD|5.009005||Viu MULTIPLICITY|5.006000|5.006000|Vn MUTABLE_AV|5.010001|5.003007|p MUTABLE_CV|5.010001|5.003007|p MUTABLE_GV|5.010001|5.003007|p MUTABLE_HV|5.010001|5.003007|p MUTABLE_IO|5.010001|5.003007|p MUTABLE_PTR|5.010001|5.003007|p MUTABLE_SV|5.010001|5.003007|p MUTEX_DESTROY|5.005000||Viu MUTEX_INIT|5.005000||Viu MUTEX_INIT_NEEDS_MUTEX_ZEROED|5.005003||Viu MUTEX_LOCK|5.005000||Viu MUTEX_UNLOCK|5.005000||Viu mXPUSHi|5.009002|5.003007|p mXPUSHn|5.009002|5.003007|p mXPUSHp|5.009002|5.003007|p mXPUSHs|5.010001|5.003007|p mXPUSHu|5.009002|5.003007|p my|5.011000||Viu my_atof2|5.029000||cVu my_atof3|5.029000||cVu my_atof|5.006000|5.006000| my_attrs|5.006000||Viu my_binmode|5.006000||Viu my_bytes_to_utf8|5.021009||Vniu my_chsize|5.003007||Vu my_clearenv|5.009003||Viu MY_CXT|5.009000|5.009000|p MY_CXT_CLONE|5.009002|5.009000|p MY_CXT_INDEX|5.009005||Viu MY_CXT_INIT|5.009000|5.009000|p MY_CXT_INIT_ARG|5.013005||Viu MY_CXT_INIT_INTERP|5.009003||Viu my_cxt_init|||u my_dirfd|5.009005|5.009005|nu my_exit|5.003007|5.003007| my_exit_jump|5.005000||Viu my_failure_exit|5.004000|5.004000|u my_fflush_all|5.006000|5.006000|u my_fork|5.007003|5.007003|nu my_kid|5.006000||Viu my_lstat|5.013003||Viu my_lstat_flags|5.013003||cViu my_memrchr|5.027006||Vniu my_mkostemp_cloexec|||niu my_mkostemp|||niu my_mkstemp_cloexec|||niu my_mkstemp|||niu my_nl_langinfo|5.027006||Vniu my_pclose|5.003007|5.003007|u my_popen|5.003007|5.003007|u my_popen_list|5.007001|5.007001|u my_setenv|5.003007|5.003007| my_snprintf|5.009004||pvVn my_socketpair|5.007003|5.007003|nu my_sprintf|5.009003|5.003007|pdn my_stat|5.013003||Viu my_stat_flags|5.013003||cViu my_strerror|5.021001||Viu my_strftime|5.007002||V my_strlcat|5.009004|5.003007|pn my_strlcpy|5.009004|5.003007|pn my_strnlen|5.027006|5.003007|pn my_strtod|5.029010|5.029010|n my_unexec|5.003007||Viu my_vsnprintf|5.009004|5.009004|n N0|5.029001||Viu N10|5.029001||Viu N11|5.029001||Viu N1|5.029001||Viu N2|5.029001||Viu N3|5.029001||Viu N4|5.029001||Viu N5|5.029001||Viu N6|5.029001||Viu N7|5.029001||Viu N8|5.029001||Viu N9|5.029001||Viu NAN_COMPARE_BROKEN|5.021005||Viu NANYOFM|5.029005||Viu NANYOFM_t8|5.035004||Viu NANYOFM_t8_p8|5.033003||Viu NANYOFM_t8_pb|5.033003||Viu NANYOFM_tb|5.035004||Viu NANYOFM_tb_p8|5.033003||Viu NANYOFM_tb_pb|5.033003||Viu NATIVE8_TO_UNI|5.011000||Viu NATIVE_BYTE_IS_INVARIANT|5.019004||Viu NATIVE_SKIP|5.019004||Viu NATIVE_TO_ASCII|5.007001||Viu NATIVE_TO_I8|5.015006||Viu NATIVE_TO_LATIN1|5.019004|5.003007|p NATIVE_TO_NEED|5.019004||dcVnu NATIVE_TO_UNI|5.007001|5.003007|p NATIVE_TO_UTF|5.007001||Viu NATIVE_UTF8_TO_I8|5.019004||Viu nBIT_MASK|5.033001||Viu nBIT_UMAX|5.033001||Viu NBOUND|5.003007||Viu NBOUNDA|5.013009||Viu NBOUNDA_t8|5.035004||Viu NBOUNDA_t8_p8|5.033003||Viu NBOUNDA_t8_pb|5.033003||Viu NBOUNDA_tb|5.035004||Viu NBOUNDA_tb_p8|5.033003||Viu NBOUNDA_tb_pb|5.033003||Viu NBOUNDL|5.004000||Viu NBOUNDL_t8|5.035004||Viu NBOUNDL_t8_p8|5.033003||Viu NBOUNDL_t8_pb|5.033003||Viu NBOUNDL_tb|5.035004||Viu NBOUNDL_tb_p8|5.033003||Viu NBOUNDL_tb_pb|5.033003||Viu NBOUND_t8|5.035004||Viu NBOUND_t8_p8|5.033003||Viu NBOUND_t8_pb|5.033003||Viu NBOUND_tb|5.035004||Viu NBOUND_tb_p8|5.033003||Viu NBOUND_tb_pb|5.033003||Viu NBOUNDU|5.013009||Viu NBOUNDU_t8|5.035004||Viu NBOUNDU_t8_p8|5.033003||Viu NBOUNDU_t8_pb|5.033003||Viu NBOUNDU_tb|5.035004||Viu NBOUNDU_tb_p8|5.033003||Viu NBOUNDU_tb_pb|5.033003||Viu NBSP_NATIVE|5.021001||Viu NBSP_UTF8|5.021001||Viu NDBM_H_USES_PROTOTYPES|5.032001|5.032001|Vn NDEBUG|5.021007||Viu need_utf8|5.009003||Vniu NEED_VA_COPY|5.007001|5.007001|Vn NEGATIVE_INDICES_VAR|5.008001||Viu Netdb_hlen_t|5.005000|5.005000|Vn Netdb_host_t|5.005000|5.005000|Vn Netdb_name_t|5.005000|5.005000|Vn Netdb_net_t|5.005000|5.005000|Vn NETDB_R_OBSOLETE|5.008000||Viu New|5.003007||Viu newANONATTRSUB|5.006000|5.006000|u newANONHASH|5.003007|5.003007|u newANONLIST|5.003007|5.003007|u newANONSUB|5.003007|5.003007|u newASSIGNOP|5.003007|5.003007| newATTRSUB|5.006000|5.006000| newATTRSUB_x|5.019008||cVi newAV|5.003007|5.003007| newAV_alloc_x|5.035001|5.035001| newAV_alloc_xz|5.035001|5.035001| newAVREF|5.003007|5.003007|u newBINOP|5.003007|5.003007| new_body_allocated|||Viu new_body_from_arena|||Viu Newc|5.003007||Viu new_collate|5.006000||Viu newCONDOP|5.003007|5.003007| new_constant|||iu newCONSTSUB|5.004005|5.003007|p newCONSTSUB_flags|5.015006|5.015006| new_ctype|5.006000||Viu newCVREF|5.003007|5.003007|u newDEFEROP|5.035004|5.035004|x newDEFSVOP|5.021006|5.021006| newFORM|5.003007|5.003007|u newFOROP|5.013007|5.013007| newGIVENOP|5.009003|5.009003| newGIVWHENOP|5.027008||Viu newGP|||xiu newGVgen|5.003007|5.003007|u newGVgen_flags|5.015004|5.015004|u newGVOP|5.003007|5.003007| newGVREF|5.003007|5.003007|u new_he|5.005000||Viu newHV|5.003007|5.003007| newHVhv|5.005000|5.005000|u newHVREF|5.003007|5.003007|u _new_invlist|5.013010||cViu _new_invlist_C_array|5.015008||cViu newIO|5.003007|5.003007|u newLISTOP|5.003007|5.003007| newLOGOP|5.003007|5.003007| new_logop|5.005000||Viu newLOOPEX|5.003007|5.003007| newLOOPOP|5.003007|5.003007| newMETHOP|5.021005|5.021005| newMETHOP_internal|5.021005||Viu newMETHOP_named|5.021005|5.021005| new_msg_hv|5.027009||Viu newMYSUB|5.017004|5.017004|u new_NOARENA|||Viu new_NOARENAZ|||Viu newNULLLIST|5.003007|5.003007| new_numeric|5.006000||Viu newOP|5.003007|5.003007| NewOp|5.008001||Viu newPADNAMELIST|5.021007|5.021007|xn newPADNAMEouter|5.021007|5.021007|xn newPADNAMEpvn|5.021007|5.021007|xn newPADOP|5.006000||V newPMOP|5.003007|5.003007| newPROG|5.003007|5.003007|u newPVOP|5.003007|5.003007| newRANGE|5.003007|5.003007| newRV|5.003007|5.003007| newRV_inc|5.004000|5.003007|p newRV_noinc|5.004000|5.003007|p newSLICEOP|5.003007|5.003007| new_stackinfo|5.005000|5.005000|u newSTATEOP|5.003007|5.003007| newSTUB|5.017001||Viu newSUB|5.003007|5.003007| newSV|5.003007|5.003007| NEWSV|5.003007||Viu newSVavdefelem|5.019004||Viu newSVhek|5.009003|5.009003| newSViv|5.003007|5.003007| newSVnv|5.006000|5.003007| newSVOP|5.003007|5.003007| newSVpadname|5.017004|5.017004|x newSVpv|5.003007|5.003007| newSVpvf|5.004000||vV newSVpvf_nocontext|5.006000||vVn newSVpvn|5.004005|5.003007|p newSVpvn_flags|5.010001|5.003007|p newSVpvn_share|5.007001|5.003007|p newSVpvn_utf8|5.010001|5.003007|p newSVpvs|5.009003|5.003007|p newSVpvs_flags|5.010001|5.003007|p newSVpv_share|5.013006|5.013006| newSVpvs_share|5.009003|5.003007|p newSVREF|5.003007|5.003007|u newSVrv|5.003007|5.003007| newSVsv|5.003007|5.003007| newSVsv_flags|5.029009|5.003007|p newSVsv_nomg|5.029009|5.003007|p newSV_type|5.009005|5.003007|p newSV_type_mortal||| newSVuv|5.006000|5.003007|p new_SV|||Viu newTRYCATCHOP|5.033007|5.033007|x newUNOP|5.003007|5.003007| newUNOP_AUX|5.021007|5.021007| new_version|5.009000|5.009000| NEW_VERSION|5.019008||Viu new_warnings_bitfield|||xciu newWHENOP|5.027008|5.027008| newWHILEOP|5.013007|5.013007| Newx|5.009003|5.003007|p Newxc|5.009003|5.003007|p new_XNV|||Viu new_XPVMG|||Viu new_XPVNV|||Viu newXS|5.006000|5.006000| newXS_deffile|5.021006||cViu newXS_flags|5.009004|5.009004|xu newXS_len_flags|5.015006||Vi newXSproto|5.006000|5.006000| Newxz|5.009003|5.003007|p Newz|5.003007||Viu nextargv|5.003007||Viu nextchar|5.005000||Viu NEXT_LINE_CHAR|5.007003||Viu NEXT_OFF|5.005000||Viu next_symbol|5.007003||Viu ninstr|5.003007|5.003007|n NL_LANGINFO_LOCK|5.033005||Viu NL_LANGINFO_UNLOCK|5.033005||Viu NOARENA|||Viu no_bareword_allowed|5.005004||Viu no_bareword_filehandle|5.033006||Viu NOCAPTURE_PAT_MOD|5.021008||Viu NOCAPTURE_PAT_MODS|5.021008||Viu NODE_ALIGN|5.005000||Viu NODE_ALIGN_FILL|5.005000||Viu NODE_STEP_REGNODE|5.005000||Viu NODE_SZ_STR|5.006000||Viu NO_ENV_ARRAY_IN_MAIN|5.009004||Viu NOEXPR|5.027010||Viu NofAMmeth|5.003007||Viu no_fh_allowed|5.003007||Viu NOLINE|5.003007||Viu NO_LOCALE|5.007000||Viu NONDESTRUCT_PAT_MOD|5.013002||Viu NONDESTRUCT_PAT_MODS|5.013002||Viu NON_OTHER_COUNT|5.033005||Viu NONV|||Viu no_op|5.003007||Viu NOOP|5.005000|5.003007|p noperl_die|5.021006||vVniu NORETURN_FUNCTION_END|5.009003||Viu NORMAL|5.003007||Viu NOSTR|5.027010||Viu NO_TAINT_SUPPORT|5.017006||Viu not_a_number|5.005000||Viu NOTE3|5.027001||Viu NOTHING|5.003007||Viu NOTHING_t8|5.035004||Viu NOTHING_t8_p8|5.033003||Viu NOTHING_t8_pb|5.033003||Viu NOTHING_tb|5.035004||Viu NOTHING_tb_p8|5.033003||Viu NOTHING_tb_pb|5.033003||Viu nothreadhook|5.008000|5.008000| notify_parser_that_changed_to_utf8|5.025010||Viu not_incrementable|5.021002||Viu NOT_IN_PAD|5.005000||Viu NOT_REACHED|5.019006|5.003007|poVnu NPOSIXA|5.017003||Viu NPOSIXA_t8|5.035004||Viu NPOSIXA_t8_p8|5.033003||Viu NPOSIXA_t8_pb|5.033003||Viu NPOSIXA_tb|5.035004||Viu NPOSIXA_tb_p8|5.033003||Viu NPOSIXA_tb_pb|5.033003||Viu NPOSIXD|5.017003||Viu NPOSIXD_t8|5.035004||Viu NPOSIXD_t8_p8|5.033003||Viu NPOSIXD_t8_pb|5.033003||Viu NPOSIXD_tb|5.035004||Viu NPOSIXD_tb_p8|5.033003||Viu NPOSIXD_tb_pb|5.033003||Viu NPOSIXL|5.017003||Viu NPOSIXL_t8|5.035004||Viu NPOSIXL_t8_p8|5.033003||Viu NPOSIXL_t8_pb|5.033003||Viu NPOSIXL_tb|5.035004||Viu NPOSIXL_tb_p8|5.033003||Viu NPOSIXL_tb_pb|5.033003||Viu NPOSIXU|5.017003||Viu NPOSIXU_t8|5.035004||Viu NPOSIXU_t8_p8|5.033003||Viu NPOSIXU_t8_pb|5.033003||Viu NPOSIXU_tb|5.035004||Viu NPOSIXU_tb_p8|5.033003||Viu NPOSIXU_tb_pb|5.033003||Viu NSIG|5.009003||Viu ntohi|5.003007||Viu ntohl|5.003007||Viu ntohs|5.003007||Viu nuke_stacks|5.005000||Viu Null|5.003007||Viu Nullav|5.003007|5.003007|d Nullch|5.003007|5.003007| Nullcv|5.003007|5.003007|d Nullfp|5.003007||Viu Nullgv|5.003007||Viu Nullhe|5.003007||Viu Nullhek|5.004000||Viu Nullhv|5.003007|5.003007|d Nullop|5.003007||Viu Nullsv|5.003007|5.003007| NUM2PTR|5.006000||pVu NUM_ANYOF_CODE_POINTS|5.021004||Viu NUM_CLASSES|5.029001||Viu num_overflow|5.009001||Vniu NV_BIG_ENDIAN|5.021009||Viu NV_DIG|5.006000||Viu NVef|5.006001|5.003007|poVn NV_EPSILON|5.007003||Viu NVff|5.006001|5.003007|poVn NVgf|5.006001|5.003007|poVn NV_IMPLICIT_BIT|5.021009||Viu NV_INF|5.007003||Viu NV_LITTLE_ENDIAN|5.021009||Viu NVMANTBITS|5.023000|5.023000|Vn NV_MANT_DIG|5.006001||Viu NV_MAX_10_EXP|5.007003||Viu NV_MAX|5.006001||Viu NV_MAX_EXP|5.021003||Viu NV_MIN_10_EXP|5.007003||Viu NV_MIN|5.006001||Viu NV_MIN_EXP|5.021003||Viu NV_MIX_ENDIAN|5.021009||Viu NV_NAN|5.007003||Viu NV_NAN_BITS|5.023000||Viu NV_NAN_IS_QUIET|5.023000||Viu NV_NAN_IS_SIGNALING|5.023000||Viu NV_NAN_PAYLOAD_MASK|5.023000||Viu NV_NAN_PAYLOAD_MASK_IEEE_754_128_BE|5.023000||Viu NV_NAN_PAYLOAD_MASK_IEEE_754_128_LE|5.023000||Viu NV_NAN_PAYLOAD_MASK_IEEE_754_64_BE|5.023000||Viu NV_NAN_PAYLOAD_MASK_IEEE_754_64_LE|5.023000||Viu NV_NAN_PAYLOAD_MASK_SKIP_EIGHT|5.023006||Viu NV_NAN_PAYLOAD_PERM_0_TO_7|5.023000||Viu NV_NAN_PAYLOAD_PERM|5.023000||Viu NV_NAN_PAYLOAD_PERM_7_TO_0|5.023000||Viu NV_NAN_PAYLOAD_PERM_IEEE_754_128_BE|5.023000||Viu NV_NAN_PAYLOAD_PERM_IEEE_754_128_LE|5.023000||Viu NV_NAN_PAYLOAD_PERM_IEEE_754_64_BE|5.023000||Viu NV_NAN_PAYLOAD_PERM_IEEE_754_64_LE|5.023000||Viu NV_NAN_PAYLOAD_PERM_SKIP_EIGHT|5.023006||Viu NV_NAN_QS_BIT|5.023000||Viu NV_NAN_QS_BIT_OFFSET|5.023000||Viu NV_NAN_QS_BIT_SHIFT|5.023000||Viu NV_NAN_QS_BYTE|5.023000||Viu NV_NAN_QS_BYTE_OFFSET|5.023000||Viu NV_NAN_QS_QUIET|5.023000||Viu NV_NAN_QS_SIGNALING|5.023000||Viu NV_NAN_QS_TEST|5.023000||Viu NV_NAN_QS_XOR|5.023000||Viu NV_NAN_SET_QUIET|5.023000||Viu NV_NAN_SET_SIGNALING|5.023000||Viu NV_OVERFLOWS_INTEGERS_AT|5.010001|5.010001|Vn NV_PRESERVES_UV_BITS|5.006001|5.006001|Vn NVSIZE|5.006001|5.006001|Vn NVTYPE|5.006000|5.003007|poVn NV_VAX_ENDIAN|5.025003||Viu NV_WITHIN_IV|5.006000||Viu NV_WITHIN_UV|5.006000||Viu NV_X86_80_BIT|5.025004||Viu NV_ZERO_IS_ALLBITS_ZERO|5.035009|5.035009|Vn OA_AVREF|5.003007||Viu OA_BASEOP|5.005000||Viu OA_BASEOP_OR_UNOP|5.005000||Viu OA_BINOP|5.005000||Viu OA_CLASS_MASK|5.005000||Viu OA_COP|5.005000||Viu OA_CVREF|5.003007||Viu OA_DANGEROUS|5.003007||Viu OA_DEFGV|5.003007||Viu OA_FILEREF|5.003007||Viu OA_FILESTATOP|5.005000||Viu OA_FOLDCONST|5.003007||Viu OA_HVREF|5.003007||Viu OA_LIST|5.003007||Viu OA_LISTOP|5.005000||Viu OA_LOGOP|5.005000||Viu OA_LOOP|5.005000||Viu OA_LOOPEXOP|5.005000||Viu OA_MARK|5.003007||Viu OA_METHOP|5.021005||Viu OA_OPTIONAL|5.003007||Viu OA_OTHERINT|5.003007||Viu OA_PADOP|5.006000||Viu OA_PMOP|5.005000||Viu OA_PVOP_OR_SVOP|5.006000||Viu OA_RETSCALAR|5.003007||Viu OA_SCALAR|5.003007||Viu OA_SCALARREF|5.003007||Viu OASHIFT|5.003007||Viu OA_SVOP|5.005000||Viu OA_TARGET|5.003007||Viu OA_TARGLEX|5.006000||Viu OA_UNOP|5.005000||Viu OA_UNOP_AUX|5.021007||Viu O_BINARY|5.006000||Viu O_CREAT|5.006000||Viu OCSHIFT|5.006000||Viu OCTAL_VALUE|5.019008||Viu Off_t|5.003007|5.003007|Vn Off_t_size|5.006000|5.006000|Vn OFFUNI_IS_INVARIANT|5.023003||Viu OFFUNISKIP|5.019004||Viu OFFUNISKIP_helper|5.035004||Viu ONCE_PAT_MOD|5.009005||Viu ONCE_PAT_MODS|5.009005||Viu ONE_IF_EBCDIC_ZERO_IF_NOT|5.035004||Viu oopsAV|5.003007||Viu oopsHV|5.003007||Viu OP|5.003007||Viu op_append_elem|5.013006|5.013006| op_append_list|5.013006|5.013006| opASSIGN|5.003007||Viu OP_CHECK_MUTEX_INIT|5.015008||Viu OP_CHECK_MUTEX_LOCK|5.015008||Viu OP_CHECK_MUTEX_TERM|5.015008||Viu OP_CHECK_MUTEX_UNLOCK|5.015008||Viu OP_CLASS|5.013007|5.013007| op_class|5.025010|5.025010| op_clear|5.006000||cViu OPCODE|5.003007||Viu op_contextualize|5.013006|5.013006| op_convert_list|5.021006|5.021006| OP_DESC|5.007003|5.007003| op_dump|5.006000|5.006000| OPEN|5.003007||Viu open|5.005000||Viu opendir|5.005000||Viu openn_cleanup|5.019010||Viu openn_setup|5.019010||Viu open_script|5.005000||Viu OPEN_t8|5.035004||Viu OPEN_t8_p8|5.033003||Viu OPEN_t8_pb|5.033003||Viu OPEN_tb|5.035004||Viu OPEN_tb_p8|5.033003||Viu OPEN_tb_pb|5.033003||Viu OPERAND|5.003007||Viu OPERANDl|5.031005||Viu OPERANDs|5.031005||Viu OPFAIL|5.009005||Viu OPFAIL_t8|5.035004||Viu OPFAIL_t8_p8|5.033003||Viu OPFAIL_t8_pb|5.033003||Viu OPFAIL_tb|5.035004||Viu OPFAIL_tb_p8|5.033003||Viu OPFAIL_tb_pb|5.033003||Viu OPf_FOLDED|5.021007||Viu OPf_KIDS|5.003007|5.003007| OPf_KNOW|5.003007||Viu OPf_LIST|5.003007||Viu OPf_MOD|5.003007||Viu OPf_PARENS|5.003007||Viu op_free|5.003007|5.003007| OP_FREED|5.017002||Viu OPf_REF|5.003007||Viu OPf_SPECIAL|5.003007||Viu OPf_STACKED|5.003007||Viu OPf_WANT|5.004000||Viu OPf_WANT_LIST|5.004000||Viu OPf_WANT_SCALAR|5.004000||Viu OPf_WANT_VOID|5.004000||Viu OP_GIMME|5.004000||Viu OP_GIMME_REVERSE|5.010001||Viu OpHAS_SIBLING|5.021007|5.003007|p op_integerize|5.015003||Viu OP_IS_DIRHOP|5.015003||Viu OP_IS_FILETEST|5.006001||Viu OP_IS_FILETEST_ACCESS|5.008001||Viu OP_IS_INFIX_BIT|5.021009||Viu OP_IS_NUMCOMPARE|5.015003||Viu OP_IS_SOCKET|5.006001||Viu OP_IS_STAT|5.031001||Viu OpLASTSIB_set|5.021011|5.003007|p op_linklist|5.013006|5.013006| op_lvalue|5.013007|5.013007|x op_lvalue_flags|||ciu OP_LVALUE_NO_CROAK|5.015001||Viu OpMAYBESIB_set|5.021011|5.003007|p opmethod_stash|5.021007||Viu OpMORESIB_set|5.021011|5.003007|p OP_NAME|5.007003|5.007003| op_null|5.007002|5.007002| OPpALLOW_FAKE|5.015006||Viu op_parent|5.025001|5.025001|n OPpARG1_MASK|5.021004||Viu OPpARG2_MASK|5.021004||Viu OPpARG3_MASK|5.021004||Viu OPpARG4_MASK|5.021004||Viu OPpARGELEM_AV|5.025004||Viu OPpARGELEM_HV|5.025004||Viu OPpARGELEM_MASK|5.025004||Viu OPpARGELEM_SV|5.025004||Viu OPpASSIGN_BACKWARDS|5.003007||Viu OPpASSIGN_COMMON_AGG|5.023002||Viu OPpASSIGN_COMMON_RC1|5.023002||Viu OPpASSIGN_COMMON_SCALAR|5.023002||Viu OPpASSIGN_CV_TO_GV|5.009003||Viu OPpASSIGN_TRUEBOOL|5.027003||Viu OPpAVHVSWITCH_MASK|5.025006||Viu OPpCONCAT_NESTED|5.027007||Viu OPpCONST_BARE|5.003007||Viu OPpCONST_ENTERED|5.003007||Viu OPpCONST_NOVER|5.009003||Viu OPpCONST_SHORTCIRCUIT|5.009001||Viu OPpCONST_STRICT|5.005004||Viu OPpCOREARGS_DEREF1|5.015003||Viu OPpCOREARGS_DEREF2|5.015003||Viu OPpCOREARGS_PUSHMARK|5.015003||Viu OPpCOREARGS_SCALARMOD|5.015003||Viu OPpDEFER_FINALLY|5.035008||Viu OPpDEREF|5.004000||Viu OPpDEREF_AV|5.003007||Viu OPpDEREF_HV|5.003007||Viu OPpDEREF_SV|5.004000||Viu OPpDONT_INIT_GV|5.009003||Viu OPpEARLY_CV|5.006000|5.006000| OPpENTERSUB_AMPER|5.003007|5.003007| OPpENTERSUB_DB|5.003007||Viu OPpENTERSUB_HASTARG|5.006000||Viu OPpENTERSUB_INARGS|5.006000||Viu OPpENTERSUB_LVAL_MASK|5.015001||Viu OPpENTERSUB_NOPAREN|5.005004||Viu OPpEVAL_BYTES|5.015005||Viu OPpEVAL_COPHH|5.015005||Viu OPpEVAL_HAS_HH|5.009003||Viu OPpEVAL_RE_REPARSING|5.017011||Viu OPpEVAL_UNICODE|5.015005||Viu OPpEXISTS_SUB|5.006000||Viu OPpFLIP_LINENUM|5.003007||Viu OPpFT_ACCESS|5.008001||Viu OPpFT_AFTER_t|5.015008||Viu OPpFT_STACKED|5.009001||Viu OPpFT_STACKING|5.015001||Viu OPpHINT_STRICT_REFS|5.021004||Viu OPpHUSH_VMSISH|5.007003||Viu OPpINDEX_BOOLNEG|5.027003||Viu OPpITER_DEF|5.027008||Viu OPpITER_REVERSED|5.009002||Viu OPpKVSLICE|5.027001||Viu OPpLIST_GUESSED|5.003007||Viu OPpLVAL_DEFER|5.004000||Viu OPpLVAL_INTRO|5.003007||Viu OPpLVALUE|5.019006||Viu OPpLVREF_AV|5.021005||Viu OPpLVREF_CV|5.021005||Viu OPpLVREF_ELEM|5.021005||Viu OPpLVREF_HV|5.021005||Viu OPpLVREF_ITER|5.021005||Viu OPpLVREF_SV|5.021005||Viu OPpLVREF_TYPE|5.021005||Viu OPpMAYBE_LVSUB|5.007001||Viu OPpMAYBE_TRUEBOOL|5.017004||Viu OPpMAY_RETURN_CONSTANT|5.009003||Viu OPpMULTICONCAT_APPEND|5.027006||Viu OPpMULTICONCAT_FAKE|5.027006||Viu OPpMULTICONCAT_STRINGIFY|5.027006||Viu OPpMULTIDEREF_DELETE|5.021007||Viu OPpMULTIDEREF_EXISTS|5.021007||Viu OPpOFFBYONE|5.015002||Viu OPpOPEN_IN_CRLF|5.006000||Viu OPpOPEN_IN_RAW|5.006000||Viu OPpOPEN_OUT_CRLF|5.006000||Viu OPpOPEN_OUT_RAW|5.006000||Viu OPpOUR_INTRO|5.006000||Viu OPpPADHV_ISKEYS|5.027003||Viu OPpPADRANGE_COUNTMASK|5.017006||Viu OPpPADRANGE_COUNTSHIFT|5.017006||Viu OPpPAD_STATE|5.009004||Viu OPpPV_IS_UTF8|5.016000||Viu OPpREFCOUNTED|5.006000||Viu OPpREPEAT_DOLIST|5.003007||Viu op_prepend_elem|5.013006|5.013006| OPpREVERSE_INPLACE|5.011002||Viu OPpRV2HV_ISKEYS|5.027003||Viu OPpSLICE|5.004000||Viu OPpSLICEWARNING|5.019004||Viu OPpSORT_DESCEND|5.009002||Viu OPpSORT_INPLACE|5.009001||Viu OPpSORT_INTEGER|5.006000||Viu OPpSORT_NUMERIC|5.006000||Viu OPpSORT_REVERSE|5.006000||Viu OPpSPLIT_ASSIGN|5.025006||Viu OPpSPLIT_IMPLIM|5.019002||Viu OPpSPLIT_LEX|5.025006||Viu OPpSUBSTR_REPL_FIRST|5.015006||Viu OPpTARGET_MY|5.006000||Viu OPpTRANS_ALL|5.009001||Viu OPpTRANS_CAN_FORCE_UTF8|5.031006||Viu OPpTRANS_COMPLEMENT|5.003007||Viu OPpTRANS_DELETE|5.003007||Viu OPpTRANS_FROM_UTF|5.006000||Viu OPpTRANS_GROWS|5.006000||Viu OPpTRANS_IDENTICAL|5.006000||Viu OPpTRANS_SQUASH|5.003007||Viu OPpTRANS_TO_UTF|5.006000||Viu OPpTRANS_USE_SVOP|5.031006||Viu OPpTRUEBOOL|5.017004||Viu OPpUSEINT|5.035005||Viu OpREFCNT_dec|5.006000||Viu op_refcnt_dec|||xiu OpREFCNT_inc|5.006000||Viu op_refcnt_inc|||xiu OP_REFCNT_INIT|5.006000||Viu OP_REFCNT_LOCK|5.006000||Viu op_refcnt_lock|5.009002|5.009002|u OpREFCNT_set|5.006000||Viu OP_REFCNT_TERM|5.006000||Viu OP_REFCNT_UNLOCK|5.006000||Viu op_refcnt_unlock|5.009002|5.009002|u op_relocate_sv|5.021005||Viu op_scope|5.013007|5.013007|x OP_SIBLING|5.021002||Viu OpSIBLING|5.021007|5.003007|p op_sibling_splice|5.021002|5.021002|n OpSLAB|5.017002||Viu opslab_force_free|5.017002||Viu opslab_free|5.017002||Viu opslab_free_nopad|5.017002||Viu OpslabREFCNT_dec|5.017002||Viu OpslabREFCNT_dec_padok|5.017002||Viu OpSLOT|5.017002||Viu OPSLOT_HEADER|5.017002||Viu OpSLOToff|5.033001||Viu op_std_init|5.015003||Viu OPTIMIZED|5.005000||Viu OPTIMIZED_t8|5.035004||Viu OPTIMIZED_t8_p8|5.033003||Viu OPTIMIZED_t8_pb|5.033003||Viu OPTIMIZED_tb|5.035004||Viu OPTIMIZED_tb_p8|5.033003||Viu OPTIMIZED_tb_pb|5.033003||Viu optimize_op|5.027006||Viu optimize_optree|5.027006||Vi optimize_regclass|5.035001||Viu OP_TYPE_IS|5.019007|5.019007| OP_TYPE_IS_NN|5.019010||Viu OP_TYPE_ISNT|5.019010||Viu OP_TYPE_ISNT_AND_WASNT|5.019010||Viu OP_TYPE_ISNT_AND_WASNT_NN|5.019010||Viu OP_TYPE_ISNT_NN|5.019010||Viu OP_TYPE_IS_OR_WAS|5.019010|5.019010| OP_TYPE_IS_OR_WAS_NN|5.019010||Viu op_unscope|5.017003||xViu op_wrap_finally|5.035008|5.035008|x O_RDONLY|5.006000||Viu O_RDWR|5.006000||Viu ORIGMARK|5.003007|5.003007| OSNAME|5.003007|5.003007|Vn OSVERS|5.007002|5.007002|Vn O_TEXT|5.006000||Viu OutCopFILE|5.007003||Viu output_non_portable|5.031008||Viu output_posix_warnings|5.029005||Viu O_VMS_DELETEONCLOSE|5.031002||Viu O_WRONLY|5.006000||Viu package|5.003007||Viu package_version|5.011001||Viu pack_cat|5.033002|5.033002|d packlist|5.008001|5.008001| pack_rec|5.008001||Viu packWARN2|5.007003|5.003007|p packWARN3|5.007003|5.003007|p packWARN4|5.007003|5.003007|p packWARN|5.007003|5.003007|p pad_add_anon|5.015001|5.015001| pad_add_name_pv|5.015001|5.015001| pad_add_name_pvn|5.015001|5.015001| pad_add_name_pvs|5.015001|5.015001| pad_add_name_sv|5.015001|5.015001| padadd_NO_DUP_CHECK|5.011002||Viu padadd_OUR|5.011002||Viu padadd_STALEOK|5.017003||Viu padadd_STATE|5.011002||Viu pad_add_weakref|5.021007||Viu pad_alloc|5.015001|5.015001|x pad_alloc_name|5.015001||Vi PadARRAY|5.017004|5.017004|x PAD_BASE_SV|5.008001||Vi pad_block_start|5.008001||Vi pad_check_dup|5.008001||Vi PAD_CLONE_VARS|5.008001||Vi PAD_COMPNAME|5.017004||Viu PAD_COMPNAME_FLAGS|5.008001||Vi PAD_COMPNAME_FLAGS_isOUR|5.009004||Viu PAD_COMPNAME_GEN|5.008001||Vi PAD_COMPNAME_GEN_set|5.009003||Vi PAD_COMPNAME_OURSTASH|5.008001||Vi PAD_COMPNAME_PV|5.008001||Vi PAD_COMPNAME_SV|5.009005||Viu PAD_COMPNAME_TYPE|5.008001||Vi pad_compname_type|5.033005|5.033005|d PAD_FAKELEX_ANON|5.009005||Viu PAD_FAKELEX_MULTI|5.009005||Viu pad_findlex|5.005000||Vi pad_findmy_pv|5.015001|5.015001| pad_findmy_pvn|5.015001|5.015001| pad_findmy_pvs|5.015001|5.015001| pad_findmy_sv|5.015001|5.015001| pad_fixup_inner_anons|5.008001||Vi pad_free|5.003007||Vi pad_leavemy|5.003007||Vi PadlistARRAY|5.017004|5.017004|x padlist_dup|5.013002||Vi PadlistMAX|5.017004|5.017004|x PadlistNAMES|5.017004|5.017004|x PadlistNAMESARRAY|5.017004|5.017004|x PadlistNAMESMAX|5.017004|5.017004|x PadlistREFCNT|5.017004|5.017004|x padlist_store|5.017004||Viu PadMAX|5.017004|5.017004|x padname_dup|5.021007||Vi PadnameFLAGS|5.021007||Viu padname_free|||ciu PADNAME_FROM_PV|5.021007||Viu PadnameIN_SCOPE|5.031004||Vniu PadnameIsOUR|5.017004||Vi PadnameIsSTATE|5.017004||Vi PadnameIsSTATE_on|5.021007||Viu PadnameLEN|5.017004|5.017004|x PadnamelistARRAY|5.017004|5.017004|x padnamelist_dup|5.021007||Vi padnamelist_fetch|5.021007|5.021007|xn padnamelist_free|||ciu PadnamelistMAX|5.017004|5.017004|x PadnamelistMAXNAMED|5.019003||Viu PadnamelistREFCNT|5.021007|5.021007|x PadnamelistREFCNT_dec|5.021007|5.021007|x padnamelist_store|5.021007|5.021007|x PadnameLVALUE|5.021006||Viu PadnameLVALUE_on|5.021006||Viu PadnameOURSTASH|5.017004||Vi PadnameOURSTASH_set|5.021007||Viu PadnameOUTER|5.017004||Vi PadnamePROTOCV|5.021007||Viu PadnamePV|5.017004|5.017004|x PadnameREFCNT|5.021007|5.021007|x PadnameREFCNT_dec|5.021007|5.021007|x PadnameSV|5.017004|5.017004|x PADNAMEt_LVALUE|5.021007||Viu PADNAMEt_OUR|5.021007||Viu PADNAMEt_OUTER|5.021007|5.021007| PADNAMEt_STATE|5.021007||Viu PADNAMEt_TYPED|5.021007||Viu PadnameTYPE|5.017004||Vi PadnameTYPE_set|5.021007||Viu PadnameUTF8|5.017004|5.017004|x pad_new|5.015001|5.015001| padnew_CLONE|5.008001||Viu padnew_SAVE|5.008001||Viu padnew_SAVESUB|5.008001||Viu pad_peg|5.009004||Viu pad_push|5.008001||cVi pad_reset|5.003007||Vi PAD_RESTORE_LOCAL|5.008001||Vi PAD_SAVE_LOCAL|5.008001||Vi PAD_SAVE_SETNULLPAD|5.008001||Vi PAD_SET_CUR|5.008001||Vi PAD_SET_CUR_NOSAVE|5.008002||Vi pad_setsv|5.008001||cV PAD_SETSV|5.008001||Vi pad_sv|5.003007||cV PAD_SV|5.003007||Vi PAD_SVl|5.008001||Vi pad_swipe|5.003007||Vi pad_tidy|5.015001|5.015001|x panic_write2|5.008001||Viu PARENT_FAKELEX_FLAGS|5.009005||Viu PARENT_PAD_INDEX|5.009005||Viu parse_arithexpr|5.013008|5.013008|x parse_barestmt|5.013007|5.013007|x parse_block|5.013007|5.013007|x parse_body|5.006000||Viu parse_fullexpr|5.013008|5.013008|x parse_fullstmt|5.013005|5.013005|x parse_gv_stash_name|5.019004||Viu parse_ident|5.017010||Viu parse_label|5.013007|5.013007|x parse_listexpr|5.013008|5.013008|x parse_lparen_question_flags|5.017009||Viu PARSE_OPTIONAL|5.013007|5.013007| parser_dup|5.009000|5.009000|u parser_free|5.009005||Viu parser_free_nexttoke_ops|5.017006||Viu parse_stmtseq|5.013006|5.013006|x parse_subsignature|5.031003|5.031003|x parse_termexpr|5.013008|5.013008|x parse_unicode_opts|5.008001||Viu parse_uniprop_string|5.027011||Viu PATCHLEVEL|5.003007||Viu path_is_searchable|5.019001||Vniu Pause|5.003007||Viu pause|5.005000||Viu pclose|5.003007||Viu peep|5.003007||Viu pending_ident|5.017004||Viu PERL_ABS|5.008001|5.003007|p Perl_acos|5.021004|5.021004|n perl_alloc|5.003007|5.003007|n PERL_ALLOC_CHECK|5.006000||Viu perl_alloc_using|5.006000||Vnu PERL_ANY_COW|5.017007||Viu PERL_API_REVISION|5.006000||Viu PERL_API_SUBVERSION|5.006000||Viu PERL_API_VERSION|5.006000||Viu PERL_API_VERSION_STRING|5.013004||Viu PERL_ARENA_ROOTS_SIZE|5.009004||Viu PERL_ARENA_SIZE|5.009003||Viu PERL_ARGS_ASSERT_CROAK_XS_USAGE|||ponu Perl_asin|5.021004|5.021004|n Perl_assert|5.011000||Viu perl_assert_ptr|5.027004||Viu PERL_ASYNC_CHECK|5.006000|5.006000| Perl_atan2|5.006000|5.006000|n Perl_atan|5.021004|5.021004|n Perl_atof2|5.006001||Viu Perl_atof|5.006000||Viu PERL_BCDVERSION||5.003007|onu PERL_BISON_VERSION|5.023008||Viu PERL_BITFIELD16|5.010001||Viu PERL_BITFIELD32|5.010001||Viu PERL_BITFIELD8|5.010001||Viu PERL_CALLCONV|5.005002||Viu PERL_CALLCONV_NO_RET|5.017002||Viu Perl_ceil|5.009001|5.009001|n PERL_CKDEF|5.006000||Viu perl_clone|5.006000||Vn perl_clone_using|5.006000||Vnu PERL_CLZ_32|5.035003||Viu PERL_CLZ_64|5.035003||Viu perl_construct|5.003007|5.003007|n PERL_COP_SEQMAX|5.013010||Viu PERL_COPY_ON_WRITE|5.023001||Viu Perl_cos|5.006000|5.006000|n Perl_cosh|5.021004|5.021004|n PERL_COUNT_MULTIPLIER|5.027007||Viu PERL_CTZ_32|5.035003||Viu PERL_CTZ_64|5.035003||Viu Perl_custom_op_xop|5.019006||V PERLDB_ALL|5.004002||Viu PERLDBf_GOTO|5.004005||Viu PERLDBf_INTER|5.004002||Viu PERLDBf_LINE|5.004002||Viu PERLDBf_NAMEANON|5.006000||Viu PERLDBf_NAMEEVAL|5.006000||Viu PERLDBf_NONAME|5.004005||Viu PERLDBf_NOOPT|5.004002||Viu PERLDBf_SAVESRC|5.010001||Viu PERLDBf_SAVESRC_INVALID|5.010001||Viu PERLDBf_SAVESRC_NOSUBS|5.010001||Viu PERLDBf_SINGLE|5.004002||Viu PERLDBf_SUB|5.004002||Viu PERLDBf_SUBLINE|5.004002||Viu PERLDB_GOTO|5.004005||Viu PERLDB_INTER|5.004002||Viu PERLDB_LINE|5.004002||Viu PERLDB_LINE_OR_SAVESRC|5.023002||Viu PERLDB_NAMEANON|5.006000||Viu PERLDB_NAMEEVAL|5.006000||Viu PERLDB_NOOPT|5.004002||Viu PERLDB_SAVESRC|5.010001||Viu PERLDB_SAVESRC_INVALID|5.010001||Viu PERLDB_SAVESRC_NOSUBS|5.010001||Viu PERLDB_SINGLE|5.004002||Viu PERLDB_SUB|5.004002||Viu PERLDB_SUBLINE|5.004002||Viu PERLDB_SUB_NN|5.004005||Viu PERL_DEB2|5.021007||Viu PERL_DEB|5.008001||Viu PERL_deBruijnMagic32|5.035003||Viu PERL_deBruijnMagic64|5.035003||Viu PERL_deBruijnShift32|5.035003||Viu PERL_deBruijnShift64|5.035003||Viu PERL_DEBUG|5.008001||Viu Perl_debug_log|5.003007||Viu PERL_DEBUG_PAD|5.007003||Viu PERL_DEBUG_PAD_ZERO|5.007003||Viu PERL_DECIMAL_VERSION|5.019008||Viu PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION|5.009003||Viu perl_destruct|5.007003|5.007003|n PerlDir_chdir|5.005000||Viu PerlDir_close|5.005000||Viu PerlDir_mapA|5.006000||Viu PerlDir_mapW|5.006000||Viu PerlDir_mkdir|5.005000||Viu PerlDir_open|5.005000||Viu PerlDir_read|5.005000||Viu PerlDir_rewind|5.005000||Viu PerlDir_rmdir|5.005000||Viu PerlDir_seek|5.005000||Viu PerlDir_tell|5.005000||Viu PERL_DONT_CREATE_GVSV|5.009003||Viu Perl_drand48|5.019004||Viu Perl_drand48_init|5.019004||Viu PERL_DRAND48_QUAD|5.019004||Viu PERL_DTRACE_PROBE_ENTRY|5.023009||Viu PERL_DTRACE_PROBE_FILE_LOADED|5.023009||Viu PERL_DTRACE_PROBE_FILE_LOADING|5.023009||Viu PERL_DTRACE_PROBE_OP|5.023009||Viu PERL_DTRACE_PROBE_PHASE|5.023009||Viu PERL_DTRACE_PROBE_RETURN|5.023009||Viu PERL_EBCDIC_TABLES_H|5.027001||Viu PERL_ENABLE_EXPERIMENTAL_REGEX_OPTIMISATIONS|5.009004||Viu PERL_ENABLE_EXTENDED_TRIE_OPTIMISATION|5.009004||Viu PERL_ENABLE_POSITIVE_ASSERTION_STUDY|5.009005||Viu PERL_ENABLE_TRIE_OPTIMISATION|5.009004||Viu PerlEnv_clearenv|5.006000||Viu PerlEnv_ENVgetenv|5.006000||Viu PerlEnv_ENVgetenv_len|5.006000||Viu PerlEnv_free_childdir|5.006000||Viu PerlEnv_free_childenv|5.006000||Viu PerlEnv_get_childdir|5.006000||Viu PerlEnv_get_childenv|5.006000||Viu PerlEnv_get_child_IO|5.006000||Viu PerlEnv_getenv|5.005000||Viu PerlEnv_getenv_len|5.006000||Viu PerlEnv_lib_path|5.005000||Viu PerlEnv_os_id|5.006000||Viu PerlEnv_putenv|5.005000||Viu PerlEnv_sitelib_path|5.005000||Viu PerlEnv_uname|5.005004||Viu PerlEnv_vendorlib_path|5.006000||Viu Perl_error_log|5.006000||Viu Perl_eval_pv||5.003007|onu Perl_eval_sv||5.003007|onu PERL_EXIT_ABORT|5.019003|5.019003| PERL_EXIT_DESTRUCT_END|5.007003|5.007003| PERL_EXIT_EXPECTED|5.006000|5.006000| PERL_EXIT_WARN|5.019003|5.019003| Perl_exp|5.006000|5.006000|n Perl_fabs|5.035005||Viu PERL_FEATURE_H|5.029006||Viu PERL_FILE_IS_ABSOLUTE|5.006000||Viu PERL_FILTER_EXISTS|5.009005||Viu Perl_floor|5.006000|5.006000|n PERL_FLUSHALL_FOR_CHILD|5.006000||Viu Perl_fmod|5.006000|5.006000|n Perl_fp_class|5.007003||Viu Perl_fp_class_denorm|5.007003||Viu Perl_fp_class_inf|5.007003||Viu Perl_fp_class_nan|5.007003||Viu Perl_fp_class_ndenorm|5.007003||Viu Perl_fp_class_ninf|5.007003||Viu Perl_fp_class_nnorm|5.007003||Viu Perl_fp_class_norm|5.007003||Viu Perl_fp_class_nzero|5.007003||Viu Perl_fp_class_pdenorm|5.007003||Viu Perl_fp_class_pinf|5.007003||Viu Perl_fp_class_pnorm|5.007003||Viu Perl_fp_class_pzero|5.007003||Viu Perl_fp_class_qnan|5.007003||Viu Perl_fp_class_snan|5.007003||Viu Perl_fp_class_zero|5.007003||Viu PERL_FPU_INIT|5.007002||Viu PERL_FPU_POST_EXEC|5.008001||Viu PERL_FPU_PRE_EXEC|5.008001||Viu perl_free|5.003007|5.003007|n Perl_free_c_backtrace|5.021001||Viu Perl_frexp|5.006000|5.006000|n PERL_FS_VER_FMT|5.006000||Viu PERL_FS_VERSION|5.010001||Viu PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||Viu PERL_GCC_VERSION_GE|5.035003||Viu PERL_GCC_VERSION_GT|5.035003||Viu PERL_GCC_VERSION_LE|5.035003||Viu PERL_GCC_VERSION_LT|5.035003||Viu PERL_GET_CONTEXT|5.006000||Viu PERL_GET_INTERP|5.006000||Viu PERL_GET_THX|5.006000||Viu PERL_GIT_UNPUSHED_COMMITS|5.010001||Viu PERL_GPROF_MONCONTROL|5.007002||Viu PERL_HANDY_H|5.027001||Viu PERL_HAS_FAST_GET_LSB_POS32|5.035003||Viu PERL_HAS_FAST_GET_LSB_POS64|5.035003||Viu PERL_HAS_FAST_GET_MSB_POS32|5.035003||Viu PERL_HAS_FAST_GET_MSB_POS64|5.035003||Viu PERL_HASH|5.003007|5.003007|p PERL_HASH_DEFAULT_HvMAX|5.017011||Viu PERL_HASH_FUNC|5.017006||Viu PERL_HASH_FUNC_SIPHASH13|5.033007||Viu PERL_HASH_FUNC_ZAPHOD32|5.027001||Viu PERL_HASH_INTERNAL|5.008002||Viu PERL_HASH_ITER_BUCKET|5.018000||Viu PERL_HASH_RANDOMIZE_KEYS|5.018000||Viu PERL_HASH_SEED|5.008001||Viu PERL_HASH_SEED_BYTES|5.017006||Viu PERL_HASH_SEED_STATE|5.027001||Viu PERL_HASH_SEED_WORDS|5.033007||Viu PERL_HASH_STATE_BYTES|5.027001||Viu PERL_HASH_STATE_WORDS|5.033007||Viu PERL_HASH_USE_SBOX32_ALSO|5.027001||Viu PERL_HASH_WITH_SEED|5.021001||Viu PERL_HASH_WITH_STATE|5.027001||Viu PERL_HV_ARRAY_ALLOC_BYTES|5.006000||Viu PERL___I|5.009005||Viu PERL_IMPLICIT_CONTEXT|5.006000||Viu PERL_INC_VERSION_LIST|5.035009|5.035009|Vn Perl_internal_drand48|5.027004||Viu PERL_INTERPRETER_SIZE_UPTO_MEMBER|5.010000||Viu PERL_INT_MAX|5.003007|5.003007|p PERL_INT_MIN|5.003007|5.003007|p PERL_INVLIST_INLINE_H|5.029006||Viu PerlIO|5.003007||Viu PerlIO_apply_layers|5.007001|5.007001| PerlIOArg|5.007001||Viu PerlIOBase|5.007001||Viu PerlIO_binmode|5.007001|5.007001| PERLIOBUF_DEFAULT_BUFSIZ|5.013007||Viu PerlIO_canset_cnt|5.003007|5.003007|n PerlIO_clearerr|5.007003|5.007003| PerlIO_close|5.007003|5.007003| PerlIO_context_layers|||u PerlIO_debug|5.007001|5.007001| PERLIO_DUP_CLONE|5.007003||Viu PERLIO_DUP_FD|5.007003||Viu PerlIO_eof|5.007003|5.007003| PerlIO_error|5.007003|5.007003| PerlIO_exportFILE|5.003007|5.003007|n PERLIO_F_APPEND|5.007001|5.007001| PerlIO_fast_gets|5.003007|5.003007|n PERLIO_F_CANREAD|5.007001|5.007001| PERLIO_F_CANWRITE|5.007001|5.007001| PERLIO_F_CLEARED|5.013008||Viu PERLIO_F_CRLF|5.007001|5.007001| PerlIO_fdopen|5.003007|5.003007|n PERLIO_F_EOF|5.007001|5.007001| PERLIO_F_ERROR|5.007001|5.007001| PERLIO_F_FASTGETS|5.007001|5.007001| PerlIO_fileno|5.007003|5.007003| PerlIO_fill|5.007000|5.007000|u PerlIO_findFILE|5.003007|5.003007|n PERLIO_F_LINEBUF|5.007001|5.007001| PerlIO_flush|5.007003|5.007003| PERLIO_F_NOTREG|5.008001||Viu PERLIO_F_OPEN|5.007001|5.007001| PERLIO_F_RDBUF|5.007001|5.007001| PERLIO_F_TEMP|5.007001|5.007001| PERLIO_F_TRUNCATE|5.007001|5.007001| PERLIO_F_TTY|5.007001||Viu PERLIO_F_UNBUF|5.007001|5.007001| PERLIO_FUNCS_CAST|5.009003||pVu PERLIO_FUNCS_DECL|5.009003|5.009003|pVu PERLIO_F_UTF8|5.007001|5.007001| PERLIO_F_WRBUF|5.007001|5.007001| PerlIO_get_base|5.007003|5.007003| PerlIO_get_bufsiz|5.007003|5.007003| PerlIO_getc|5.003007|5.003007|n PerlIO_get_cnt|5.007003|5.007003| PerlIO_getpos|5.003007|5.003007|n PerlIO_get_ptr|5.007003|5.007003| PERLIO_H|5.027001||Viu PerlIO_has_base|5.003007|5.003007|n PerlIO_has_cntptr|5.003007|5.003007|n PerlIO_importFILE|5.003007|5.003007|n PERLIO_INIT|5.009005||Viu PERLIO_K_BUFFERED|5.007001|5.007001| PERLIO_K_CANCRLF|5.007001|5.007001| PERLIO_K_DESTRUCT|5.007001||Viu PERLIO_K_DUMMY|5.007001||Viu PERLIO_K_FASTGETS|5.007001|5.007001| PERLIO_K_MULTIARG|5.007003|5.007003| PERLIO_K_RAW|5.007001|5.007001| PERLIO_K_UTF8|5.007001||Viu PERLIO_LAYERS|5.007001||Viu PERLIOL_H|5.027001||Viu PerlIONext|5.007001||Viu PERLIO_NOT_STDIO|5.003007||Viu PerlIO_open|5.003007|5.003007|n PerlIO_printf|5.006000|5.003007| PerlIO_putc|5.003007|5.003007|n PerlIO_puts|5.003007|5.003007|n PerlIO_read|5.007003|5.007003| PerlIO_releaseFILE|5.003007|5.003007|n PerlIO_reopen|5.003007|5.003007|n PerlIO_restore_errno|5.021006||cViu PerlIO_rewind|5.003007|5.003007|n PerlIO_save_errno|5.021006||cViu PerlIO_seek|5.007003|5.007003| PerlIOSelf|5.007001||Viu PerlIO_set_cnt|5.007003|5.007003| PerlIO_setlinebuf|5.007003|5.007003| PerlIO_setpos|5.003007|5.003007|n PerlIO_set_ptrcnt|5.007003|5.007003| PerlIO_stderr|5.007003|5.007003| PerlIO_stdin|5.007003|5.007003| PerlIO_stdout|5.007003|5.007003| PerlIO_stdoutf|5.006000|5.003007| PERLIO_STDTEXT|5.007001||Viu PerlIO_tell|5.007003|5.007003| PERLIO_TERM|5.009005||Viu PerlIO_ungetc|5.003007|5.003007|n PerlIO_unread|5.007003|5.007003|u PERLIO_USING_CRLF|5.007003||Viu PerlIOValid|5.007003||Viu PerlIO_vprintf|5.003007|5.003007|n PerlIO_write|5.007003|5.007003| Perl_isfinite|5.007003|5.007003|n Perl_isfinitel|5.021004||Viu PERL_IS_GCC|5.032001||Viu Perl_isinf|5.007003|5.007003|n Perl_isnan|5.006001|5.006001|n PERL_IS_SUBWORD_ADDR|5.027007||Viu PERL_IS_UTF8_CHAR_DFA|5.035004||Viu PERL_JNP_TO_DECIMAL|5.033001||Viu Perl_langinfo|5.027004|5.027004|n PERL_LANGINFO_H|5.027004||Viu PERL_LAST_5_18_0_INTERP_MEMBER|5.017009||Viu Perl_ldexp|5.021003|5.021003|n PerlLIO_access|5.005000||Viu PerlLIO_chmod|5.005000||Viu PerlLIO_chown|5.005000||Viu PerlLIO_chsize|5.005000||Viu PerlLIO_close|5.005000||Viu PerlLIO_dup2|5.005000||Viu PerlLIO_dup2_cloexec|5.027008||Viu PerlLIO_dup|5.005000||Viu PerlLIO_dup_cloexec|5.027008||Viu PerlLIO_flock|5.005000||Viu PerlLIO_fstat|5.005000||Viu PerlLIO_ioctl|5.005000||Viu PerlLIO_isatty|5.005000||Viu PerlLIO_link|5.006000||Viu PerlLIO_lseek|5.005000||Viu PerlLIO_lstat|5.005000||Viu PerlLIO_mktemp|5.005000||Viu PerlLIO_open3|5.005000||Viu PerlLIO_open3_cloexec|5.027008||Viu PerlLIO_open|5.005000||Viu PerlLIO_open_cloexec|5.027008||Viu PerlLIO_read|5.005000||Viu PerlLIO_readlink|5.033005||Viu PerlLIO_rename|5.005000||Viu PerlLIO_setmode|5.005000||Viu PerlLIO_stat|5.005000||Viu PerlLIO_symlink|5.033005||Viu PerlLIO_tmpnam|5.005000||Viu PerlLIO_umask|5.005000||Viu PerlLIO_unlink|5.005000||Viu PerlLIO_utime|5.005000||Viu PerlLIO_write|5.005000||Viu PERL_LOADMOD_DENY|5.006000|5.003007| PERL_LOADMOD_IMPORT_OPS|5.006000|5.003007| PERL_LOADMOD_NOIMPORT|5.006000|5.003007| Perl_log10|5.021004|5.021004|n Perl_log|5.006000|5.006000|n PERL_LONG_MAX|5.003007|5.003007|p PERL_LONG_MIN|5.003007|5.003007|p PERL_MAGIC_arylen|5.007002|5.003007|p PERL_MAGIC_arylen_p|5.009003|5.009003| PERL_MAGIC_backref|5.007002|5.003007|p PERL_MAGIC_bm|5.007002|5.003007|p PERL_MAGIC_checkcall|5.013006|5.013006| PERL_MAGIC_collxfrm|5.007002|5.003007|p PERL_MAGIC_dbfile|5.007002|5.003007|p PERL_MAGIC_dbline|5.007002|5.003007|p PERL_MAGIC_debugvar|5.021005|5.021005| PERL_MAGIC_defelem|5.007002|5.003007|p PERL_MAGIC_env|5.007002|5.003007|p PERL_MAGIC_envelem|5.007002|5.003007|p PERL_MAGIC_ext|5.007002|5.003007|p PERL_MAGIC_fm|5.007002|5.003007|p PERL_MAGIC_glob||5.003007|ponu PERL_MAGIC_hints|5.009004|5.009004| PERL_MAGIC_hintselem|5.009004|5.009004| PERL_MAGIC_isa|5.007002|5.003007|p PERL_MAGIC_isaelem|5.007002|5.003007|p PERL_MAGIC_lvref|5.021005|5.021005| PERL_MAGIC_mutex||5.003007|ponu PERL_MAGIC_nkeys|5.007002|5.003007|p PERL_MAGIC_nonelem|5.027009|5.027009| PERL_MAGIC_overload||5.003007|ponu PERL_MAGIC_overload_elem||5.003007|ponu PERL_MAGIC_overload_table|5.007002|5.003007|p PERL_MAGIC_pos|5.007002|5.003007|p PERL_MAGIC_qr|5.007002|5.003007|p PERL_MAGIC_READONLY_ACCEPTABLE|5.015000||Viu PERL_MAGIC_regdata|5.007002|5.003007|p PERL_MAGIC_regdatum|5.007002|5.003007|p PERL_MAGIC_regex_global|5.007002|5.003007|p PERL_MAGIC_rhash|5.009003|5.009003| PERL_MAGIC_shared|5.007003|5.003007|p PERL_MAGIC_shared_scalar|5.007003|5.003007|p PERL_MAGIC_sig|5.007002|5.003007|p PERL_MAGIC_sigelem|5.007002|5.003007|p PERL_MAGIC_substr|5.007002|5.003007|p PERL_MAGIC_sv|5.007002|5.003007|p PERL_MAGIC_symtab|5.009003|5.009003| PERL_MAGIC_taint|5.007002|5.003007|p PERL_MAGIC_tied|5.007002|5.003007|p PERL_MAGIC_tiedelem|5.007002|5.003007|p PERL_MAGIC_tiedscalar|5.007002|5.003007|p PERL_MAGIC_TYPE_IS_VALUE_MAGIC|5.015000||Viu PERL_MAGIC_TYPE_READONLY_ACCEPTABLE|5.015000||Viu PERL_MAGIC_utf8|5.008001|5.003007|p PERL_MAGIC_UTF8_CACHESIZE|5.008001||Viu PERL_MAGIC_uvar|5.007002|5.003007|p PERL_MAGIC_uvar_elem|5.007003|5.003007|p PERL_MAGIC_VALUE_MAGIC|5.015000||Viu PERL_MAGIC_vec|5.007002|5.003007|p PERL_MAGIC_vstring|5.008001|5.003007|p PERL_MAGIC_VTABLE_MASK|5.015000||Viu PERL_MALLOC_CTL_H|5.027001||Viu Perl_malloc_good_size|5.010001||Viu PERL_MALLOC_WRAP|5.009002|5.009002|Vn PerlMem_calloc|5.006000||Viu PerlMem_free|5.005000||Viu PerlMem_free_lock|5.006000||Viu PerlMem_get_lock|5.006000||Viu PerlMem_is_locked|5.006000||Viu PerlMem_malloc|5.005000||Viu PERL_MEMORY_DEBUG_HEADER_SIZE|5.019009||Viu PerlMemParse_calloc|5.006000||Viu PerlMemParse_free|5.006000||Viu PerlMemParse_free_lock|5.006000||Viu PerlMemParse_get_lock|5.006000||Viu PerlMemParse_is_locked|5.006000||Viu PerlMemParse_malloc|5.006000||Viu PerlMemParse_realloc|5.006000||Viu PerlMem_realloc|5.005000||Viu PerlMemShared_calloc|5.006000||Viu PerlMemShared_free|5.006000||Viu PerlMemShared_free_lock|5.006000||Viu PerlMemShared_get_lock|5.006000||Viu PerlMemShared_is_locked|5.006000||Viu PerlMemShared_malloc|5.006000||Viu PerlMemShared_realloc|5.006000||Viu PERL_MG_UFUNC|5.007001||Viu Perl_modf|5.006000|5.006000|n PERL_MULTICONCAT_HEADER_SIZE|5.027006||Viu PERL_MULTICONCAT_IX_LENGTHS|5.027006||Viu PERL_MULTICONCAT_IX_NARGS|5.027006||Viu PERL_MULTICONCAT_IX_PLAIN_LEN|5.027006||Viu PERL_MULTICONCAT_IX_PLAIN_PV|5.027006||Viu PERL_MULTICONCAT_IX_UTF8_LEN|5.027006||Viu PERL_MULTICONCAT_IX_UTF8_PV|5.027006||Viu PERL_MULTICONCAT_MAXARG|5.027006||Viu Perl_my_mkostemp|5.027008||Viu Perl_my_mkstemp|5.027004||Viu PERL_MY_SNPRINTF_GUARDED|5.009004||Viu PERL_MY_SNPRINTF_POST_GUARD|5.021002||Viu PERL_MY_VSNPRINTF_GUARDED|5.009004||Viu PERL_MY_VSNPRINTF_POST_GUARD|5.021002||Viu PERL_NO_DEV_RANDOM|5.009004||Viu PERL_NON_CORE_CHECK_EMPTY|5.035004||Viu PERL_OBJECT_THIS|5.005000||Viu PERL_OP_PARENT|5.025001||Viu PERL_PADNAME_MINIMAL|5.021007||Viu PERL_PADSEQ_INTRO|5.013010||Viu perl_parse|5.006000|5.006000|n PERL_PATCHLEVEL_H_IMPLICIT|5.006000||Viu PERL_PATCHNUM|5.010001||Viu PERL_POISON_EXPR|5.019006||Viu Perl_pow|5.006000|5.006000|n Perl_pp_accept|5.013009||Viu Perl_pp_aelemfast_lex|5.015000||Viu Perl_pp_andassign|5.013009||Viu Perl_pp_avalues|5.013009||Viu Perl_pp_bind|5.013009||Viu Perl_pp_bit_xor|5.013009||Viu Perl_pp_chmod|5.013009||Viu Perl_pp_chomp|5.013009||Viu Perl_pp_connect|5.013009||Viu Perl_pp_cos|5.013009||Viu Perl_pp_custom|5.013009||Viu Perl_pp_dbmclose|5.013009||Viu PERL_PPDEF|5.006000||Viu Perl_pp_dofile|5.013009||Viu Perl_pp_dor|5.013009||Viu Perl_pp_dorassign|5.013009||Viu Perl_pp_dump|5.013009||Viu Perl_pp_egrent|5.013009||Viu Perl_pp_enetent|5.013009||Viu Perl_pp_eprotoent|5.013009||Viu Perl_pp_epwent|5.013009||Viu Perl_pp_eservent|5.013009||Viu Perl_pp_exp|5.013009||Viu Perl_pp_fcntl|5.013009||Viu Perl_pp_ftatime|5.013009||Viu Perl_pp_ftbinary|5.013009||Viu Perl_pp_ftblk|5.013009||Viu Perl_pp_ftchr|5.013009||Viu Perl_pp_ftctime|5.013009||Viu Perl_pp_ftdir|5.013009||Viu Perl_pp_fteexec|5.013009||Viu Perl_pp_fteowned|5.013009||Viu Perl_pp_fteread|5.013009||Viu Perl_pp_ftewrite|5.013009||Viu Perl_pp_ftfile|5.013009||Viu Perl_pp_ftmtime|5.013009||Viu Perl_pp_ftpipe|5.013009||Viu Perl_pp_ftrexec|5.013009||Viu Perl_pp_ftrwrite|5.013009||Viu Perl_pp_ftsgid|5.013009||Viu Perl_pp_ftsize|5.013009||Viu Perl_pp_ftsock|5.013009||Viu Perl_pp_ftsuid|5.013009||Viu Perl_pp_ftsvtx|5.013009||Viu Perl_pp_ftzero|5.013009||Viu Perl_pp_getpeername|5.013009||Viu Perl_pp_getsockname|5.013009||Viu Perl_pp_ggrgid|5.013009||Viu Perl_pp_ggrnam|5.013009||Viu Perl_pp_ghbyaddr|5.013009||Viu Perl_pp_ghbyname|5.013009||Viu Perl_pp_gnbyaddr|5.013009||Viu Perl_pp_gnbyname|5.013009||Viu Perl_pp_gpbyname|5.013009||Viu Perl_pp_gpbynumber|5.013009||Viu Perl_pp_gpwnam|5.013009||Viu Perl_pp_gpwuid|5.013009||Viu Perl_pp_gsbyname|5.013009||Viu Perl_pp_gsbyport|5.013009||Viu Perl_pp_gsockopt|5.013009||Viu Perl_pp_hex|5.013009||Viu Perl_pp_i_postdec|5.006000||Viu Perl_pp_i_postinc|5.006000||Viu Perl_pp_i_predec|5.006000||Viu Perl_pp_i_preinc|5.006000||Viu Perl_pp_keys|5.013009||Viu Perl_pp_kill|5.013009||Viu Perl_pp_lcfirst|5.013009||Viu Perl_pp_lineseq|5.013009||Viu Perl_pp_listen|5.013009||Viu Perl_pp_localtime|5.013009||Viu Perl_pp_log|5.013009||Viu Perl_pp_lstat|5.013009||Viu Perl_pp_mapstart|5.013009||Viu Perl_pp_msgctl|5.013009||Viu Perl_pp_msgget|5.013009||Viu Perl_pp_msgrcv|5.013009||Viu Perl_pp_msgsnd|5.013009||Viu Perl_pp_nbit_xor|5.021009||Viu Perl_pp_orassign|5.013009||Viu Perl_pp_padany|5.013009||Viu Perl_pp_pop|5.013009||Viu Perl_pp_read|5.013009||Viu Perl_pp_recv|5.013009||Viu Perl_pp_regcmaybe|5.013009||Viu Perl_pp_rindex|5.013009||Viu Perl_pp_rv2hv|5.013009||Viu Perl_pp_say|5.013009||Viu Perl_pp_sbit_xor|5.021009||Viu Perl_pp_scalar|5.013009||Viu Perl_pp_schomp|5.013009||Viu Perl_pp_scope|5.013009||Viu Perl_pp_seek|5.013009||Viu Perl_pp_semop|5.013009||Viu Perl_pp_send|5.013009||Viu Perl_pp_sge|5.013009||Viu Perl_pp_sgrent|5.013009||Viu Perl_pp_sgt|5.013009||Viu Perl_pp_shmctl|5.013009||Viu Perl_pp_shmget|5.013009||Viu Perl_pp_shmread|5.013009||Viu Perl_pp_shutdown|5.013009||Viu Perl_pp_slt|5.013009||Viu Perl_pp_snetent|5.013009||Viu Perl_pp_socket|5.013009||Viu Perl_pp_sprotoent|5.013009||Viu Perl_pp_spwent|5.013009||Viu Perl_pp_sqrt|5.013009||Viu Perl_pp_sservent|5.013009||Viu Perl_pp_ssockopt|5.013009||Viu Perl_pp_symlink|5.013009||Viu Perl_pp_transr|5.013009||Viu Perl_pp_unlink|5.013009||Viu Perl_pp_utime|5.013009||Viu Perl_pp_values|5.013009||Viu PERL_PRESERVE_IVUV|5.007001||Viu PERL_PRIeldbl|5.006001|5.006001|Vn PERL_PRIfldbl|5.006000|5.006000|Vn PERL_PRIgldbl|5.006000|5.006000|Vn PerlProc_abort|5.005000||Viu PerlProc_crypt|5.005000||Viu PerlProc_DynaLoad|5.006000||Viu PerlProc_execl|5.005000||Viu PerlProc_execv|5.005000||Viu PerlProc_execvp|5.005000||Viu PerlProc__exit|5.005000||Viu PerlProc_exit|5.005000||Viu PerlProc_fork|5.006000||Viu PerlProc_getegid|5.005000||Viu PerlProc_geteuid|5.005000||Viu PerlProc_getgid|5.005000||Viu PerlProc_getlogin|5.005000||Viu PerlProc_GetOSError|5.006000||Viu PerlProc_getpid|5.006000||Viu PerlProc_gettimeofday|5.008000||Viu PerlProc_getuid|5.005000||Viu PerlProc_kill|5.005000||Viu PerlProc_killpg|5.005000||Viu PerlProc_lasthost|5.007001||Viu PerlProc_longjmp|5.005000||Viu PerlProc_pause|5.005000||Viu PerlProc_pclose|5.005000||Viu PerlProc_pipe|5.005000||Viu PerlProc_pipe_cloexec|5.027008||Viu PerlProc_popen|5.005000||Viu PerlProc_popen_list|5.007001||Viu PerlProc_setgid|5.005000||Viu PerlProc_setjmp|5.005000||Viu PerlProc_setuid|5.005000||Viu PerlProc_signal|5.005000||Viu PerlProc_sleep|5.005000||Viu PerlProc_spawnvp|5.008000||Viu PerlProc_times|5.005000||Viu PerlProc_wait|5.005000||Viu PerlProc_waitpid|5.005000||Viu perl_pthread_mutex_lock|5.023006||Viu perl_pthread_mutex_unlock|5.023006||Viu PERL_PV_ESCAPE_ALL|5.009004|5.003007|p PERL_PV_ESCAPE_DWIM|5.019008||Viu PERL_PV_ESCAPE_DWIM_ALL_HEX|||Viu PERL_PV_ESCAPE_FIRSTCHAR|5.009004|5.003007|p PERL_PV_ESCAPE_NOBACKSLASH|5.009004|5.003007|p PERL_PV_ESCAPE_NOCLEAR|5.009004|5.003007|p PERL_PV_ESCAPE_NONASCII|5.013009|5.013009| PERL_PV_ESCAPE_QUOTE|5.009004|5.003007|p PERL_PV_ESCAPE_RE|5.009005|5.003007|p PERL_PV_ESCAPE_UNI|5.009004|5.003007|p PERL_PV_ESCAPE_UNI_DETECT|5.009004|5.003007|p PERL_PV_PRETTY_DUMP|5.009004||pcV PERL_PV_PRETTY_ELLIPSES|5.010000|5.003007|p PERL_PV_PRETTY_EXACTSIZE|5.021005||Viu PERL_PV_PRETTY_LTGT|5.009004|5.003007|p PERL_PV_PRETTY_NOCLEAR|5.010000||pcV PERL_PV_PRETTY_QUOTE|5.009004|5.003007|p PERL_PV_PRETTY_REGPROP|5.009004||pcV PERL_QUAD_MAX|5.003007|5.003007|p PERL_QUAD_MIN|5.003007|5.003007|p PERL_READ_LOCK|5.033005||Viu PERL_READ_UNLOCK|5.033005||Viu PERL_REENTR_API|5.009005||Viu PERL_REENTR_H|5.027001||Viu PERL_REENTR_USING_ASCTIME_R|5.031011||Viu PERL_REENTR_USING_CRYPT_R|5.031011||Viu PERL_REENTR_USING_CTERMID_R|5.031011||Viu PERL_REENTR_USING_CTIME_R|5.031011||Viu PERL_REENTR_USING_ENDGRENT_R|5.031011||Viu PERL_REENTR_USING_ENDHOSTENT_R|5.031011||Viu PERL_REENTR_USING_ENDNETENT_R|5.031011||Viu PERL_REENTR_USING_ENDPROTOENT_R|5.031011||Viu PERL_REENTR_USING_ENDPWENT_R|5.031011||Viu PERL_REENTR_USING_ENDSERVENT_R|5.031011||Viu PERL_REENTR_USING_GETGRENT_R|5.031011||Viu PERL_REENTR_USING_GETGRGID_R|5.031011||Viu PERL_REENTR_USING_GETGRNAM_R|5.031011||Viu PERL_REENTR_USING_GETHOSTBYADDR_R|5.031011||Viu PERL_REENTR_USING_GETHOSTBYNAME_R|5.031011||Viu PERL_REENTR_USING_GETHOSTENT_R|5.031011||Viu PERL_REENTR_USING_GETLOGIN_R|5.031011||Viu PERL_REENTR_USING_GETNETBYADDR_R|5.031011||Viu PERL_REENTR_USING_GETNETBYNAME_R|5.031011||Viu PERL_REENTR_USING_GETNETENT_R|5.031011||Viu PERL_REENTR_USING_GETPROTOBYNAME_R|5.031011||Viu PERL_REENTR_USING_GETPROTOBYNUMBER_R|5.031011||Viu PERL_REENTR_USING_GETPROTOENT_R|5.031011||Viu PERL_REENTR_USING_GETPWENT_R|5.031011||Viu PERL_REENTR_USING_GETPWNAM_R|5.031011||Viu PERL_REENTR_USING_GETPWUID_R|5.031011||Viu PERL_REENTR_USING_GETSERVBYNAME_R|5.031011||Viu PERL_REENTR_USING_GETSERVBYPORT_R|5.031011||Viu PERL_REENTR_USING_GETSERVENT_R|5.031011||Viu PERL_REENTR_USING_GETSPNAM_R|5.031011||Viu PERL_REENTR_USING_GMTIME_R|5.031011||Viu PERL_REENTR_USING_LOCALTIME_R|5.031011||Viu PERL_REENTR_USING_READDIR64_R|5.031011||Viu PERL_REENTR_USING_READDIR_R|5.031011||Viu PERL_REENTR_USING_SETGRENT_R|5.031011||Viu PERL_REENTR_USING_SETHOSTENT_R|5.031011||Viu PERL_REENTR_USING_SETLOCALE_R|5.031011||Viu PERL_REENTR_USING_SETNETENT_R|5.031011||Viu PERL_REENTR_USING_SETPROTOENT_R|5.031011||Viu PERL_REENTR_USING_SETPWENT_R|5.031011||Viu PERL_REENTR_USING_SETSERVENT_R|5.031011||Viu PERL_REENTR_USING_STRERROR_R|5.031011||Viu PERL_REENTR_USING_TMPNAM_R|5.031011||Viu PERL_REENTR_USING_TTYNAME_R|5.031011||Viu PERL_REGCHARCLASS_H|5.027001||Viu PERL_REGCOMP_H|5.029006||Viu PERL_REGMATCH_SLAB_SLOTS|5.009004||Viu PERL_RELOCATABLE_INC|5.017002|5.017002|Vn PERL_REVISION|5.006000|5.006000|d perl_run|5.003007|5.003007|n PERL_RW_MUTEX_DESTROY|5.033005||Viu PERL_RW_MUTEX_INIT|5.033005||Viu Perl_safesysmalloc_size|5.010001||Viu PERL_SAWAMPERSAND|5.017010||Viu PERL_SCAN_ALLOW_MEDIAL_UNDERSCORES|5.031009||Viu PERL_SCAN_ALLOW_UNDERSCORES|5.007003|5.003007|p PERL_SCAN_DISALLOW_PREFIX|5.007003|5.003007|p PERL_SCAN_GREATER_THAN_UV_MAX|5.007003|5.003007|p PERL_SCAN_NOTIFY_ILLDIGIT|5.031008||Viu PERL_SCAN_SILENT_ILLDIGIT|5.008001|5.003007|p PERL_SCAN_SILENT_NON_PORTABLE|5.015001||Viu PERL_SCAN_SILENT_OVERFLOW|5.031009||Viu PERL_SCAN_TRAILING|5.021002|5.021002| PERL_SCNfldbl|5.006001|5.006001|Vn PERL_SCRIPT_MODE|5.004005||Viu PERL_SEEN_HV_FUNC_H|5.017010||Viu PERL_SEEN_HV_MACRO_H|5.027001||Viu PERL_SET_CONTEXT|5.006000||Viu PERL_SET_INTERP|5.006000||Viu Perl_setlocale|5.027002|5.027002|n PERL_SET_PHASE|5.015001||Viu PERL_SET_THX|5.006000||Viu Perl_sharepvn|5.006000||Viu PERL_SHORT_MAX|5.003007|5.003007|p PERL_SHORT_MIN|5.003007|5.003007|p PERLSI_DESTROY|5.005000||Viu PERLSI_DIEHOOK|5.005000||Viu PERL_SIGNALS_UNSAFE_FLAG|5.008001|5.003007|p Perl_signbit|5.009005|5.009005|xn PERLSI_MAGIC|5.005000||Viu PERLSI_MAIN|5.005000||Viu PERLSI_MULTICALL|5.023000||Viu Perl_sin|5.006000|5.006000|n Perl_sinh|5.021004|5.021004|n PerlSIO_canset_cnt|5.007001||Viu PerlSIO_clearerr|5.007001||Viu PerlSIO_fast_gets|5.007001||Viu PerlSIO_fclose|5.007001||Viu PerlSIO_fdopen|5.007001||Viu PerlSIO_fdupopen|5.007001||Viu PerlSIO_feof|5.007001||Viu PerlSIO_ferror|5.007001||Viu PerlSIO_fflush|5.007001||Viu PerlSIO_fgetc|5.007001||Viu PerlSIO_fgetpos|5.007001||Viu PerlSIO_fgets|5.007001||Viu PerlSIO_fileno|5.007001||Viu PerlSIO_fopen|5.007001||Viu PerlSIO_fputc|5.007001||Viu PerlSIO_fputs|5.007001||Viu PerlSIO_fread|5.007001||Viu PerlSIO_freopen|5.007001||Viu PerlSIO_fseek|5.007001||Viu PerlSIO_fsetpos|5.007001||Viu PerlSIO_ftell|5.007001||Viu PerlSIO_fwrite|5.007001||Viu PerlSIO_get_base|5.007001||Viu PerlSIO_get_bufsiz|5.007001||Viu PerlSIO_get_cnt|5.007001||Viu PerlSIO_get_ptr|5.007001||Viu PerlSIO_has_base|5.007001||Viu PerlSIO_has_cntptr|5.007001||Viu PerlSIO_init|5.007001||Viu PerlSIO_printf|5.007001||Viu PerlSIO_rewind|5.007001||Viu PerlSIO_setbuf|5.007001||Viu PerlSIO_set_cnt|5.007001||Viu PerlSIO_setlinebuf|5.007001||Viu PerlSIO_set_ptr|5.007001||Viu PerlSIO_setvbuf|5.007001||Viu PerlSIO_stderr|5.007001||Viu PerlSIO_stdin|5.007001||Viu PerlSIO_stdout|5.007001||Viu PerlSIO_stdoutf|5.007001||Viu PerlSIO_tmpfile|5.007001||Viu PerlSIO_ungetc|5.007001||Viu PERLSI_OVERLOAD|5.005000||Viu PerlSIO_vprintf|5.007001||Viu PERL_SIPHASH_FNC|5.025008||Viu PERLSI_REGCOMP|5.031011||Viu PERLSI_REQUIRE|5.005000||Viu PERLSI_SIGNAL|5.005000||Viu PERLSI_SORT|5.005000||Viu PERLSI_UNDEF|5.005000||Viu PERLSI_UNKNOWN|5.005000||Viu PERLSI_WARNHOOK|5.005000||Viu PERL_SNPRINTF_CHECK|5.021002||Viu PerlSock_accept|5.005000||Viu PerlSock_accept_cloexec|5.027008||Viu PerlSock_bind|5.005000||Viu PerlSock_closesocket|5.006000||Viu PerlSock_connect|5.005000||Viu PerlSock_endhostent|5.005000||Viu PerlSock_endnetent|5.005000||Viu PerlSock_endprotoent|5.005000||Viu PerlSock_endservent|5.005000||Viu PerlSock_gethostbyaddr|5.005000||Viu PerlSock_gethostbyname|5.005000||Viu PerlSock_gethostent|5.005000||Viu PerlSock_gethostname|5.005000||Viu PerlSock_getnetbyaddr|5.005000||Viu PerlSock_getnetbyname|5.005000||Viu PerlSock_getnetent|5.005000||Viu PerlSock_getpeername|5.005000||Viu PerlSock_getprotobyname|5.005000||Viu PerlSock_getprotobynumber|5.005000||Viu PerlSock_getprotoent|5.005000||Viu PerlSock_getservbyname|5.005000||Viu PerlSock_getservbyport|5.005000||Viu PerlSock_getservent|5.005000||Viu PerlSock_getsockname|5.005000||Viu PerlSock_getsockopt|5.005000||Viu PerlSock_htonl|5.005000||Viu PerlSock_htons|5.005000||Viu PerlSock_inet_addr|5.005000||Viu PerlSock_inet_ntoa|5.005000||Viu PerlSock_listen|5.005000||Viu PerlSock_ntohl|5.005000||Viu PerlSock_ntohs|5.005000||Viu PerlSock_recv|5.005000||Viu PerlSock_recvfrom|5.005000||Viu PerlSock_select|5.005000||Viu PerlSock_send|5.005000||Viu PerlSock_sendto|5.005000||Viu PerlSock_sethostent|5.005000||Viu PerlSock_setnetent|5.005000||Viu PerlSock_setprotoent|5.005000||Viu PerlSock_setservent|5.005000||Viu PerlSock_setsockopt|5.005000||Viu PerlSock_shutdown|5.005000||Viu PERL_SOCKS_NEED_PROTOTYPES|5.007001||Viu PerlSock_socket|5.005000||Viu PerlSock_socket_cloexec|5.027008||Viu PerlSock_socketpair|5.005000||Viu PerlSock_socketpair_cloexec|5.027008||Viu Perl_sqrt|5.006000|5.006000|n PERL_STACK_OFFSET_DEFINED|||piu PERL_STACK_OVERFLOW_CHECK|5.006000||Viu PERL_STATIC_FORCE_INLINE|5.031011||Viu PERL_STATIC_FORCE_INLINE_NO_RET|5.031011||Viu PERL_STATIC_INLINE|5.013004|5.013004|poVn PERL_STATIC_INLINE_NO_RET|5.017005||Viu PERL_STATIC_NO_RET|5.017005||Viu PERL_STRLEN_EXPAND_SHIFT|5.013004||Viu PERL_STRLEN_ROUNDUP|5.009003||Viu PERL_STRLEN_ROUNDUP_QUANTUM|5.009003||Viu Perl_strtod|5.021004||Viu PERL_SUB_DEPTH_WARN|5.010001||Viu PERL_SUBVERSION|5.006000|5.003007|d PERL_SYS_FPU_INIT|5.021005||Viu PERL_SYS_INIT3|5.006000|5.006000| PERL_SYS_INIT3_BODY|5.010000||Viu PERL_SYS_INIT|5.003007|5.003007| PERL_SYS_INIT_BODY|5.010000||Viu PERL_SYS_TERM|5.003007|5.003007| PERL_SYS_TERM_BODY|5.010000||Viu Perl_tan|5.021004|5.021004|n Perl_tanh|5.021004|5.021004|n PERL_TARGETARCH|5.007002|5.007002|Vn PERL_THREAD_LOCAL|5.035004|5.035004|Vn PERL_TIME64_CONFIG_H|5.027001||Viu PERL_TIME64_H|5.027001||Viu PERL_TRACK_MEMPOOL|5.009003||Viu PERL_TSA|5.023006||Viu PERL_TSA_ACQUIRE|5.023006||Viu PERL_TSA_ACTIVE|5.023006||Viu PERL_TSA_CAPABILITY|5.023006||Viu PERL_TSA_EXCLUDES|5.023006||Viu PERL_TSA_GUARDED_BY|5.023006||Viu PERL_TSA_NO_TSA|5.023006||Viu PERL_TSA_PT_GUARDED_BY|5.023006||Viu PERL_TSA_RELEASE|5.023006||Viu PERL_TSA_REQUIRES|5.023006||Viu PERL_UCHAR_MAX|5.003007|5.003007|p PERL_UCHAR_MIN|5.003007|5.003007|p PERL_UINT_MAX|5.003007|5.003007|p PERL_UINT_MIN|5.003007|5.003007|p PERL_ULONG_MAX|5.003007|5.003007|p PERL_ULONG_MIN|5.003007|5.003007|p PERL_UNICODE_ALL_FLAGS|5.008001||Viu PERL_UNICODE_ARGV|5.008001||Viu PERL_UNICODE_ARGV_FLAG|5.008001||Viu PERL_UNICODE_CONSTANTS_H|5.027001||Viu PERL_UNICODE_DEFAULT_FLAGS|5.008001||Viu PERL_UNICODE_IN|5.008001||Viu PERL_UNICODE_IN_FLAG|5.008001||Viu PERL_UNICODE_INOUT|5.008001||Viu PERL_UNICODE_INOUT_FLAG|5.008001||Viu PERL_UNICODE_LOCALE|5.008001||Viu PERL_UNICODE_LOCALE_FLAG|5.008001||Viu PERL_UNICODE_MAX|5.007003||Viu PERL_UNICODE_OUT|5.008001||Viu PERL_UNICODE_OUT_FLAG|5.008001||Viu PERL_UNICODE_STD|5.008001||Viu PERL_UNICODE_STDERR|5.008001||Viu PERL_UNICODE_STDERR_FLAG|5.008001||Viu PERL_UNICODE_STD_FLAG|5.008001||Viu PERL_UNICODE_STDIN|5.008001||Viu PERL_UNICODE_STDIN_FLAG|5.008001||Viu PERL_UNICODE_STDOUT|5.008001||Viu PERL_UNICODE_STDOUT_FLAG|5.008001||Viu PERL_UNICODE_UTF8CACHEASSERT|5.009004||Viu PERL_UNICODE_UTF8CACHEASSERT_FLAG|5.009004||Viu PERL_UNICODE_WIDESYSCALLS|5.008001||Viu PERL_UNICODE_WIDESYSCALLS_FLAG|5.008001||Viu PERL_UNLOCK_HOOK|5.009004||Viu PERL_UNUSED_ARG|5.009003|5.003007|p PERL_UNUSED_CONTEXT|5.009004|5.003007|p PERL_UNUSED_DECL|5.007002|5.003007|p PERL_UNUSED_RESULT|5.021001|5.003007|p PERL_UNUSED_VAR|5.007002|5.003007|p PERL_UQUAD_MAX|5.003007|5.003007|p PERL_UQUAD_MIN|5.003007|5.003007|p PERL_USE_DEVEL|5.010001|5.010001|Vn PERL_USE_GCC_BRACE_GROUPS|5.009004|5.003007|pV PERL_USES_PL_PIDSTATUS|5.009003||Viu PERL_USE_THREAD_LOCAL|5.035004||Viu PERL_USHORT_MAX|5.003007|5.003007|p PERL_USHORT_MIN|5.003007|5.003007|p PERL_UTF8_H|5.027001||Viu PERL_UTIL_H|5.025012||Viu Perl_va_copy|5.007001||Viu PERLVAR|5.005000||Viu PERLVARA|5.006000||Viu PERLVARI|5.005000||Viu PERL_VARIANTS_WORD_MASK|5.027007||Viu PERLVARIC|5.005000||Viu PERL_VERSION|5.006000|5.003007|d PERL_VERSION_EQ|5.033001||p PERL_VERSION_GE|5.033001|5.003007|p PERL_VERSION_GT|5.033001|5.003007|p PERL_VERSION_LE|5.033001|5.003007|p PERL_VERSION_LT|5.033001|5.003007|p PERL_VERSION_MAJOR|5.033001||Viu PERL_VERSION_MINOR|5.033001||Viu PERL_VERSION_NE|5.033001||p PERL_VERSION_PATCH|5.033001||Viu PERL_VERSION_STRING|5.010001||Viu PERL_WAIT_FOR_CHILDREN|5.006000||Viu Perl_Warn_Bit|5.033003||Viu Perl_warner_nocontext||5.004000|ponu PERL_WARNHOOK_FATAL|5.009004||Viu Perl_Warn_Off|5.033003||Viu PERL_WORD_BOUNDARY_MASK|5.027007||Viu PERL_WORDSIZE|5.027007||Viu PERL_WRITE_LOCK|5.033005||Viu PERL_WRITE_MSG_TO_CONSOLE|5.007003||Viu PERL_WRITE_UNLOCK|5.033005||Viu PERL_XSUB_H|5.027001||Viu perly_sighandler|5.031007||cVnu phase_name|5.035007|5.035007| PHOSTNAME|5.006000|5.006000|Vn pidgone|5.003007||Viu Pid_t|5.005000|5.005000|Vn pipe|5.005000||Viu PIPE_OPEN_MODE|5.008002||Viu PIPESOCK_MODE|5.008001||Viu PL_AboveLatin1|5.015008||Viu PL_amagic_generation|5.005000||Viu PL_an|5.005000||Viu PL_argvgv|5.005000||Viu PL_argvoutgv|5.005000||Viu PL_argvout_stack|5.006000||Viu PL_Assigned_invlist|5.025009||Viu PL_basetime|5.005000||Viu PL_beginav|5.005000||Viu PL_beginav_save|5.006001||Viu PL_blockhooks|5.013003||Viu PL_body_arenas|5.009004||Viu PL_body_roots|5.009003||Viu PL_bodytarget|5.005000||Viu PL_breakable_sub_gen|5.010001||Viu PL_bufend||5.003007|ponu PL_bufptr||5.003007|ponu PL_CCC_non0_non230|5.029008||Viu PL_check|5.009003|5.006000| PL_checkav|5.006000||Viu PL_checkav_save|5.008001||Viu PL_chopset|5.005000||Viu PL_clocktick|5.008001||Viu PL_collation_ix|5.005000||Viu PL_collation_name|5.005000||Viu PL_collation_standard|5.005000||Viu PL_collxfrm_base|5.005000||Viu PL_collxfrm_mult|5.005000||Viu PL_colors|5.005000||Viu PL_colorset|5.005000||Viu PL_compcv|5.005000||Viu PL_compiling|5.005000|5.003007|poVnu PL_comppad|5.008001|5.008001|x PL_comppad_name|5.017004|5.017004|x PL_comppad_name_fill|5.005000||Viu PL_comppad_name_floor|5.005000||Viu PL_constpadix|5.021004||Viu PL_copline||5.003007|ponu PL_cop_seqmax|5.005000||Viu PL_cshlen|5.005000||Viu PL_curcop|5.004005|5.003007|p PL_curcopdb|5.005000||Viu PL_curlocales|5.027009||Viu PL_curpad|5.005000|5.005000|x PL_curpm|5.005000||Viu PL_curpm_under|5.025007||Viu PL_curstack|5.005000||Viu PL_curstackinfo|5.005000||Viu PL_curstash|5.004005|5.003007|p PL_curstname|5.005000||Viu PL_custom_op_descs|5.007003||Viu PL_custom_op_names|5.007003||Viu PL_custom_ops|5.013007||Viu PL_cv_has_eval|5.009000||Viu PL_dbargs|5.005000||Viu PL_DBcontrol|5.021005||Viu PL_DBcv|5.005000||Viu PL_DBgv|5.005000||Viu PL_DBline|5.005000||Viu PL_DBsignal|5.005000|5.003007|poVnu PL_DBsignal_iv|5.021005||Viu PL_DBsingle|5.005000||pV PL_DBsingle_iv|5.021005||Viu PL_DBsub|5.005000||pV PL_DBtrace|5.005000||pV PL_DBtrace_iv|5.021005||Viu PL_debstash|5.005000|5.003007|poVnu PL_debug|5.005000||Viu PL_debug_pad|5.007003||Viu PL_defgv|5.004005|5.003007|p PL_def_layerlist|5.007003||Viu PL_defoutgv|5.005000||Viu PL_defstash|5.005000||Viu PL_delaymagic|5.005000||Viu PL_delaymagic_egid|5.015008||Viu PL_delaymagic_euid|5.015008||Viu PL_delaymagic_gid|5.015008||Viu PL_delaymagic_uid|5.015008||Viu PL_destroyhook|5.010000||Viu PL_diehook|5.005000|5.003007|poVnu PL_Dir|5.006000||Viu PL_dirty|5.005000|5.003007|poVnu PL_doswitches|5.005000||Viu PL_dowarn|5.005000||pV PL_dumper_fd|5.009003||Viu PL_dumpindent|5.006000||Viu PL_dump_re_max_len|5.023008||Viu PL_efloatbuf|5.006000||Viu PL_efloatsize|5.006000||Viu PL_E_FORMAT_PRECISION|5.029000||Viu PL_encoding|5.007003||Viu PL_endav|5.005000||Viu PL_Env|5.006000||Viu PL_envgv|5.005000||Viu PL_errgv|5.004005|5.003007|p PL_error_count||5.003007|ponu PL_errors|5.006000||Viu PL_e_script|5.005000||Viu PL_eval_root|5.005000||Viu PL_evalseq|5.005000||Viu PL_eval_start|5.005000||Viu PL_exit_flags|5.006000|5.006000| PL_exitlist|5.005000||Viu PL_exitlistlen|5.005000||Viu PL_expect||5.003007|ponu PL_fdpid|5.005000||Viu PL_filemode|5.005000||Viu PL_firstgv|5.005000||Viu PL_forkprocess|5.005000||Viu PL_formtarget|5.005000||Viu PL_GCB_invlist|5.021009||Viu PL_generation|5.005000||Viu PL_gensym|5.005000||Viu PL_globalstash|5.005000||Viu PL_globhook|5.015005||Viu PL_hash_rand_bits|5.017010||Viu PL_HASH_RAND_BITS_ENABLED|5.018000||Viu PL_hash_rand_bits_enabled|5.018000||Viu PL_hash_seed|5.033007||Viu PL_hash_state|5.033007||Viu PL_HasMultiCharFold|5.017005||Viu PL_hexdigit||5.003007|pn PL_hintgv|5.005000||Viu PL_hints|5.005000|5.003007|poVnu PL_hv_fetch_ent_mh|5.005000||Viu PL_incgv|5.005000||Viu PL_in_clean_all|5.005000||Viu PL_in_clean_objs|5.005000||Viu PL_in_eval|5.005000||Viu PL_initav|5.005000||Viu PL_in_load_module|5.008001||Viu PL_in_my||5.003007|ponu PL_in_my_stash||5.005000|ponu PL_inplace|5.005000||Viu PL_in_some_fold|5.029007||Viu PL_internal_random_state|5.027004||Viu PL_in_utf8_COLLATE_locale|5.025002||Viu PL_in_utf8_CTYPE_locale|5.019009||Viu PL_in_utf8_turkic_locale|5.029008||Viu PL_isarev|5.009005||Viu PL_keyword_plugin|5.011002|5.011002|x PL_known_layers|5.007003||Viu PL_langinfo_buf|5.027004||Viu PL_langinfo_bufsize|5.027004||Viu PL_lastfd|5.005000||Viu PL_lastgotoprobe|5.005000||Viu PL_last_in_gv|5.005000||Vi PL_laststatval|5.005000|5.003007|poVnu PL_laststype|5.005000||Viu PL_Latin1|5.015008||Viu PL_LB_invlist|5.023007||Viu PL_lc_numeric_mutex_depth|5.027009||Viu PL_lex_state||5.003007|ponu PL_lex_stuff||5.003007|ponu PL_linestr||5.003007|ponu PL_LIO|5.006000||Viu PL_locale_utf8ness|5.027009||Viu PL_localizing|5.005000||Viu PL_localpatches|5.005000||Viu PL_lockhook|5.007003||Viu PL_main_cv|5.005000||Viu PL_main_root|5.005000||Viu PL_mainstack|5.005000||Viu PL_main_start|5.005000||Viu PL_markstack|5.005000||Viu PL_markstack_max|5.005000||Viu PL_markstack_ptr|5.005000||Viu PL_max_intro_pending|5.005000||Viu PL_maxo|5.005000||Viu PL_maxsysfd|5.005000|5.005000| PL_mbrlen_ps|5.031010||Viu PL_mbrtowc_ps|5.031010||Viu PL_Mem|5.006000||Viu PL_mem_log|5.033005||Viu PL_memory_debug_header|5.009004||Viu PL_MemParse|5.006000||Viu PL_MemShared|5.006000||Viu PL_mess_sv|5.005000|5.004000|poVnu PL_min_intro_pending|5.005000||Viu PL_minus_a|5.005000||Viu PL_minus_c|5.005000||Viu PL_minus_E|5.009003||Viu PL_minus_F|5.005000||Viu PL_minus_l|5.005000||Viu PL_minus_n|5.005000||Viu PL_minus_p|5.005000||Viu PL_modcount|5.005000||Viu PL_modglobal|5.005000|5.005000| PL_multideref_pc|5.021007||Viu PL_my_cxt_list|5.009003||Viu PL_my_cxt_size|5.009003||Viu PL_na|5.004005|5.003007|p PL_nomemok|5.005000||Viu PL_no_modify||5.003007|ponu PL_numeric_name|5.005000||Viu PL_numeric_radix_sv|5.007002||Viu PL_numeric_standard|5.005000||Viu PL_numeric_underlying|5.027006||Viu PL_numeric_underlying_is_standard|5.027009||Viu PL_ofsgv|5.011000||Vi PL_oldname|5.005000||Viu PL_op|5.005000||Viu PL_op_exec_cnt|5.019002||Viu PL_opfreehook|5.011000|5.011000| PL_op_mask|5.005000||Viu PL_origalen|5.005000||Viu PL_origargc|5.005000||Viu PL_origargv|5.005000||Viu PL_origenviron|5.005000||Viu PL_origfilename|5.005000||Viu PL_ors_sv|5.007001||Viu PL_osname|5.005000||Viu PL_padix|5.005000||Viu PL_padix_floor|5.005000||Viu PL_padlist_generation|5.021007||Viu PL_padname_const|5.021007||Viu PL_padname_undef|5.021007||Viu PL_pad_reset_pending|5.005000||Viu PL_parser|5.009005|5.003007|p PL_patchlevel|5.005000||Viu PL_peepp|5.007003|5.007003| PL_perldb|5.005000|5.003007|poVnu PL_perl_destruct_level|5.004005|5.003007|p PL_perlio|5.007003||Viu PL_phase|5.013007|5.013007| PL_pidstatus|5.005000||Viu PL_Posix_ptrs|5.029000||Viu PL_ppaddr||5.003007|ponu PL_preambleav|5.005000||Viu PL_prevailing_version|5.035009||Viu PL_Private_Use|5.029009||Viu PL_Proc|5.006000||Viu PL_profiledata|5.005000||Viu PL_psig_name|5.006000||Viu PL_psig_pend|5.007001||Viu PL_psig_ptr|5.006000||Viu PL_ptr_table|5.006000||Viu PL_random_state|5.019004||Viu PL_RANDOM_STATE_TYPE|5.019004||Viu PL_reentrant_buffer|5.007002||Viu PL_reentrant_retint|5.008001||Viu PL_reg_curpm|5.006000||Viu PL_regex_pad|5.007002||Viu PL_regex_padav|5.007002||Viu PL_registered_mros|5.010001||Viu PL_regmatch_slab|5.009004||Viu PL_regmatch_state|5.009004||Viu PL_replgv|5.005000||Viu PL_restartjmpenv|5.013001||Viu PL_restartop|5.005000|5.005000| PL_rpeepp|5.013005|5.013005| PL_rs|5.005000||Vi PL_rsfp||5.003007|ponu PL_rsfp_filters||5.003007|ponu PL_runops|5.006000|5.006000| PL_savebegin|5.007003||Viu PL_savestack|5.005000||Viu PL_savestack_ix|5.005000||Viu PL_savestack_max|5.005000||Viu PL_sawampersand|5.005000||Viu PL_SB_invlist|5.021009||Viu PL_scopestack|5.005000||Viu PL_scopestack_ix|5.005000||Viu PL_scopestack_max|5.005000||Viu PL_scopestack_name|5.011002||Viu PL_SCX_invlist|5.027008||Viu PL_secondgv|5.005000||Viu PL_setlocale_buf|5.027009||Viu PL_setlocale_bufsize|5.027009||Viu PL_sharehook|5.007003||Viu PL_sighandler1p|5.031007||Viu PL_sighandler3p|5.031007||Viu PL_sighandlerp|5.005000||Viu PL_signalhook|5.013002||Viu PL_signals|5.008001|5.003007|poVnu PL_sig_pending|5.007001||Viu PL_Sock|5.006000||Viu PL_sortcop|5.005000||Viu PL_sortstash|5.005000||Viu PL_splitstr|5.005000||Viu PL_srand_called|5.006000||Viu PL_stack_base|5.005000|5.003007|poVnu PL_stack_max|5.005000||Viu PL_stack_sp|5.005000|5.003007|poVnu PL_start_env|5.005000||Viu PL_stashcache|5.008001||Viu PL_stashpad|5.017001||Viu PL_stashpadix|5.017001||Viu PL_stashpadmax|5.017001||Viu PL_statcache|5.005000|5.003007|poVnu PL_statgv|5.005000||Viu PL_statname|5.005000||Viu PL_statusvalue|5.005000||Viu PL_statusvalue_posix|5.009003||Viu PL_statusvalue_vms|5.005000||Viu PL_stderrgv|5.006000||Viu PL_stdingv|5.005000|5.003007|poVnu PL_StdIO|5.006000||Viu PL_strtab|5.005000||Viu PL_strxfrm_is_behaved|5.025002||Viu PL_strxfrm_max_cp|5.025002||Viu PL_strxfrm_NUL_replacement|5.025008||Viu PL_sub_generation|5.005000||Viu PL_subline|5.005000||Viu PL_subname|5.005000||Viu PL_Sv|5.005000||pcV PL_sv_arenaroot|5.005000|5.003007|poVnu PL_sv_consts|5.019002||Viu PL_sv_count|5.005000||Viu PL_sv_immortals|5.027003||Viu PL_sv_no|5.004005|5.003007|p PL_sv_root|5.005000||Viu PL_sv_serial|5.010001||Viu PL_sv_undef|5.004005|5.003007|p PL_sv_yes|5.004005|5.003007|p PL_sv_zero|5.027003|5.027003| PL_sys_intern|5.005000||Viu PL_tainted|5.005000|5.003007|poVnu PL_tainting|5.005000|5.003007|poVnu PL_taint_warn|5.007003||Viu PL_threadhook|5.008000||Viu PL_tmps_floor|5.005000||Viu PL_tmps_ix|5.005000||Viu PL_tmps_max|5.005000||Viu PL_tmps_stack|5.005000||Viu PL_tokenbuf||5.003007|ponu PL_top_env|5.005000||Viu PL_toptarget|5.005000||Viu PL_TR_SPECIAL_HANDLING_UTF8|5.031006||Viu PL_underlying_numeric_obj|5.027009||Viu PL_unicode|5.008001||Viu PL_unitcheckav|5.009005||Viu PL_unitcheckav_save|5.009005||Viu PL_unlockhook|5.007003||Viu PL_unsafe|5.005000||Viu PL_UpperLatin1|5.019005||Viu PLUS|5.003007||Viu PLUS_t8|5.035004||Viu PLUS_t8_p8|5.033003||Viu PLUS_t8_pb|5.033003||Viu PLUS_tb|5.035004||Viu PLUS_tb_p8|5.033003||Viu PLUS_tb_pb|5.033003||Viu PL_utf8cache|5.009004||Viu PL_utf8_charname_begin|5.017006||Viu PL_utf8_charname_continue|5.017006||Viu PL_utf8_foldclosures|5.013007||Viu PL_utf8_idcont|5.008000||Viu PL_utf8_idstart|5.008000||Viu PL_utf8locale|5.008001||Viu PL_utf8_mark|5.006000||Viu PL_utf8_perl_idcont|5.017008||Viu PL_utf8_perl_idstart|5.015004||Viu PL_utf8_tofold|5.007003||Viu PL_utf8_tolower|5.006000||Viu PL_utf8_tosimplefold|5.027011||Viu PL_utf8_totitle|5.006000||Viu PL_utf8_toupper|5.006000||Viu PL_utf8_xidcont|5.013010||Viu PL_utf8_xidstart|5.013010||Viu PL_vtbl_arylen|5.015000||Viu PL_vtbl_arylen_p|5.015000||Viu PL_vtbl_backref|5.015000||Viu PL_vtbl_bm|5.015000||Viu PL_vtbl_checkcall|5.017000||Viu PL_vtbl_collxfrm|5.015000||Viu PL_vtbl_dbline|5.015000||Viu PL_vtbl_debugvar|5.021005||Viu PL_vtbl_defelem|5.015000||Viu PL_vtbl_env|5.015000||Viu PL_vtbl_envelem|5.015000||Viu PL_vtbl_fm|5.015000||Viu PL_vtbl_hints|5.015000||Viu PL_vtbl_hintselem|5.015000||Viu PL_vtbl_isa|5.015000||Viu PL_vtbl_isaelem|5.015000||Viu PL_vtbl_lvref|5.021005||Viu PL_vtbl_mglob|5.015000||Viu PL_vtbl_nkeys|5.015000||Viu PL_vtbl_nonelem|5.027009||Viu PL_vtbl_ovrld|5.015000||Viu PL_vtbl_pack|5.015000||Viu PL_vtbl_packelem|5.015000||Viu PL_vtbl_pos|5.015000||Viu PL_vtbl_regdata|5.015000||Viu PL_vtbl_regdatum|5.015000||Viu PL_vtbl_regexp|5.015000||Viu PL_vtbl_sig|5.035001||Viu PL_vtbl_sigelem|5.015000||Viu PL_vtbl_substr|5.015000||Viu PL_vtbl_sv|5.015000||Viu PL_vtbl_taint|5.015000||Viu PL_vtbl_utf8|5.015000||Viu PL_vtbl_uvar|5.015000||Viu PL_vtbl_vec|5.015000||Viu PL_warnhook|5.005000||Viu PL_warn_locale|5.021008||Viu PL_watchaddr|5.006000||Viu PL_watchok|5.006000||Viu PL_WB_invlist|5.021009||Viu PL_wcrtomb_ps|5.031010||Viu PL_XPosix_ptrs|5.017008||Viu PL_Xpv|5.005000|5.003007|poVnu PL_xsubfilename|5.021006||Viu pm_description|5.009004||Viu PMf_BASE_SHIFT|5.013004||Viu PMf_CHARSET|5.017011||Viu PMf_CODELIST_PRIVATE|5.017001||Viu PMf_CONST|5.003007||Viu PMf_CONTINUE|5.004000||Viu PMf_EVAL|5.003007||Viu PMf_EXTENDED|5.003007||Viu PMf_EXTENDED_MORE|5.021005||Viu PMf_FOLD|5.003007||Viu PMf_GLOBAL|5.003007||Viu PMf_HAS_CV|5.017001||Viu PMf_HAS_ERROR|5.025010||Viu PMf_IS_QR|5.017001||Viu PMf_KEEP|5.003007||Viu PMf_KEEPCOPY|5.009005||Viu PMf_MULTILINE|5.003007||Viu PMf_NOCAPTURE|5.021008||Viu PMf_NONDESTRUCT|5.013002||Viu PMf_ONCE|5.003007||Viu PMf_RETAINT|5.004005||Viu PMf_SINGLELINE|5.003007||Viu PMf_SPLIT|5.017011||Viu PMf_STRICT|5.021008||Viu PMf_USED|5.009005||Viu PMf_USE_RE_EVAL|5.017001||Viu PMf_WILDCARD|5.031010||Viu PM_GETRE|5.007002||Viu pmop_dump|5.006000|5.006000|u PmopSTASH|5.007001||Viu PmopSTASHPV|5.007001||Viu PmopSTASHPV_set|5.007001||Viu PmopSTASH_set|5.007001||Viu pmruntime|5.003007||Viu PM_SETRE|5.007002||Viu PM_STR|5.027010||Viu pmtrans|5.003007||Viu pMY_CXT|5.009000|5.009000|p _pMY_CXT||5.009000|p pMY_CXT_||5.009000|p PNf|5.021007||Viu PNfARG|5.021007||Viu Poison|5.008000|5.003007|p PoisonFree|5.009004|5.003007|p PoisonNew|5.009004|5.003007|p PoisonPADLIST|5.021006||Viu POISON_SV_HEAD|||Viu PoisonWith|5.009004|5.003007|p popen|5.003007||Viu POPi|5.003007|5.003007| POPl|5.003007|5.003007| POPMARK|5.003007||cViu POP_MULTICALL|5.009003|5.009003| POPn|5.006000|5.003007| POPp|5.003007|5.003007| POPpbytex|5.007001|5.007001| POPpconstx|5.009003||Viu POPpx|5.005003|5.005003| POPs|5.003007|5.003007| pop_scope|5.003007|5.003007|u POPSTACK|5.005000||Viu POPSTACK_TO|5.005000||Viu POPu|5.004000|5.004000| POPul|5.006000|5.006000| populate_ANYOF_from_invlist|5.019005||Viu populate_isa|||viu POSIXA|5.017003||Viu POSIXA_t8|5.035004||Viu POSIXA_t8_p8|5.033003||Viu POSIXA_t8_pb|5.033003||Viu POSIXA_tb|5.035004||Viu POSIXA_tb_p8|5.033003||Viu POSIXA_tb_pb|5.033003||Viu POSIX_CC_COUNT|5.017008||Viu POSIXD|5.017003||Viu POSIXD_t8|5.035004||Viu POSIXD_t8_p8|5.033003||Viu POSIXD_t8_pb|5.033003||Viu POSIXD_tb|5.035004||Viu POSIXD_tb_p8|5.033003||Viu POSIXD_tb_pb|5.033003||Viu POSIXL|5.017003||Viu POSIXL_CLEAR|5.029004||Viu POSIXL_SET|5.029004||Viu POSIXL_t8|5.035004||Viu POSIXL_t8_p8|5.033003||Viu POSIXL_t8_pb|5.033003||Viu POSIXL_tb|5.035004||Viu POSIXL_tb_p8|5.033003||Viu POSIXL_tb_pb|5.033003||Viu POSIXL_TEST|5.029004||Viu POSIXL_ZERO|5.029004||Viu POSIXU|5.017003||Viu POSIXU_t8|5.035004||Viu POSIXU_t8_p8|5.033003||Viu POSIXU_t8_pb|5.033003||Viu POSIXU_tb|5.035004||Viu POSIXU_tb_p8|5.033003||Viu POSIXU_tb_pb|5.033003||Viu PP|5.003007||Viu pregcomp|5.009005|5.009005| pregexec|5.003007|5.003007| PREGf_ANCH|5.019009||Viu PREGf_ANCH_GPOS|5.019009||Viu PREGf_ANCH_MBOL|5.019009||Viu PREGf_ANCH_SBOL|5.019009||Viu PREGf_CUTGROUP_SEEN|5.009005||Viu PREGf_GPOS_FLOAT|5.019009||Viu PREGf_GPOS_SEEN|5.019009||Viu PREGf_IMPLICIT|5.009005||Viu PREGf_NAUGHTY|5.009005||Viu PREGf_NOSCAN|5.019009||Viu PREGf_RECURSE_SEEN|5.023009||Viu pregfree2|5.011000||cVu pregfree|5.003007|5.003007|u PREGf_SKIP|5.009005||Viu PREGf_USE_RE_EVAL|5.017001||Viu PREGf_VERBARG_SEEN|5.009005||Viu prepare_SV_for_RV|5.010001||Viu prescan_version|5.011004|5.011004| PRESCAN_VERSION|5.019008||Viu PREV_RANGE_MATCHES_INVLIST|5.023002||Viu printbuf|5.009004||Viu print_bytes_for_locale|5.027002||Viu print_collxfrm_input_and_return|5.025004||Viu printf|5.003007||Viu PRINTF_FORMAT_NULL_OK|5.009005|5.009005|Vn printf_nocontext|5.007001||vdVnu PRIVLIB|5.003007|5.003007|Vn PRIVLIB_EXP|5.003007|5.003007|Vn PRIVSHIFT|5.003007||Viu process_special_blocks|5.009005||Viu PROCSELFEXE_PATH|5.007003|5.007003|Vn PRUNE|5.009005||Viu PRUNE_t8|5.035004||Viu PRUNE_t8_p8|5.033003||Viu PRUNE_t8_pb|5.033003||Viu PRUNE_tb|5.035004||Viu PRUNE_tb_p8|5.033003||Viu PRUNE_tb_pb|5.033003||Viu PSEUDO|5.009004||Viu PSEUDO_t8|5.035004||Viu PSEUDO_t8_p8|5.033003||Viu PSEUDO_t8_pb|5.033003||Viu PSEUDO_tb|5.035004||Viu PSEUDO_tb_p8|5.033003||Viu PSEUDO_tb_pb|5.033003||Viu pthread_addr_t|5.005000||Viu PTHREAD_ATFORK|5.007002||Viu pthread_attr_init|5.006000||Viu PTHREAD_ATTR_SETDETACHSTATE|5.006000||Viu pthread_condattr_default|5.005000||Viu PTHREAD_CREATE|5.006000||Viu pthread_create|5.008001||Viu PTHREAD_CREATE_JOINABLE|5.005000||Viu PTHREAD_GETSPECIFIC|5.007002||Viu PTHREAD_GETSPECIFIC_INT|5.006000||Viu pthread_key_create|5.005000||Viu pthread_keycreate|5.008001||Viu pthread_mutexattr_default|5.005000||Viu pthread_mutexattr_init|5.005000||Viu pthread_mutexattr_settype|5.005000||Viu pTHX_12|5.019010||Viu pTHX_1|5.006000||Viu pTHX_2|5.006000||Viu pTHX_3|5.006000||Viu pTHX_4|5.006000||Viu pTHX|5.006000|5.003007|p pTHX_5|5.009003||Viu pTHX_6|5.009003||Viu pTHX_7|5.009003||Viu pTHX_8|5.009003||Viu pTHX_9|5.009003||Viu pTHX_||5.003007|p pTHX__FORMAT|5.009002||Viu pTHX_FORMAT|5.009002||Viu pTHXo|5.006000||Viu pTHX__VALUE|5.009002||Viu pTHX_VALUE|5.009002||Viu pTHXx|5.006000||Viu PTR2IV|5.006000|5.003007|p PTR2nat|5.009003|5.003007|p PTR2NV|5.006000|5.003007|p PTR2ul|5.007001|5.003007|p PTR2UV|5.006000|5.003007|p Ptrdiff_t|5.029003||Viu ptr_hash|5.017010||Vniu PTRSIZE|5.005000|5.005000|Vn ptr_table_fetch|5.009005|5.009005|u ptr_table_find|5.009004||Vniu ptr_table_free|5.009005|5.009005|u ptr_table_new|5.009005|5.009005|u ptr_table_split|5.009005|5.009005|u ptr_table_store|5.009005|5.009005|u PTRV|5.006000|5.003007|poVnu PUSHi|5.003007|5.003007| PUSHMARK|5.003007|5.003007| PUSHmortal|5.009002|5.003007|p PUSH_MULTICALL|5.011000|5.011000| PUSH_MULTICALL_FLAGS|5.018000||Viu PUSHn|5.006000|5.003007| PUSHp|5.003007|5.003007| PUSHs|5.003007|5.003007| push_scope|5.003007|5.003007|u PUSHSTACK|5.005000||Viu PUSHSTACKi|5.005000||Viu PUSHSTACK_INIT_HWM|5.027002||Viu PUSHTARG|5.003007||Viu PUSHu|5.004000|5.003007|p PUTBACK|5.003007|5.003007| putc|5.003007||Viu put_charclass_bitmap_innards|5.021004||Viu put_charclass_bitmap_innards_common|5.023008||Viu put_charclass_bitmap_innards_invlist|5.023008||Viu put_code_point|5.021004||Viu putc_unlocked|5.003007||Viu putenv|5.005000||Viu put_range|5.019009||Viu putw|5.003007||Viu pv_display|5.006000|5.003007|p pv_escape|5.009004|5.003007|p pv_pretty|5.009004|5.003007|p pv_uni_display|5.007003|5.007003| pWARN_ALL|5.006000||Viu pWARN_NONE|5.006000||Viu pWARN_STD|5.006000||Viu PWGECOS|5.004005|5.004005|Vn PWPASSWD|5.005000|5.005000|Vn qerror|5.006000||cViu QR_PAT_MODS|5.009005||Viu QUAD_IS_INT|5.006000|5.006000|Vn QUAD_IS___INT64|5.015003|5.015003|Vn QUAD_IS_INT64_T|5.006000|5.006000|Vn QUAD_IS_LONG|5.006000|5.006000|Vn QUAD_IS_LONG_LONG|5.006000|5.006000|Vn QUADKIND|5.006000|5.006000|Vn quadmath_format_needed|5.021004||Vni quadmath_format_valid|5.031007||Vni Quad_t|5.003007|5.003007|Vn QUESTION_MARK_CTRL|5.021001||Viu RADIXCHAR|5.027010||Viu RANDBITS|5.003007|5.003007|Vn RANDOM_R_PROTO|5.008000|5.008000|Vn Rand_seed_t|5.006000|5.006000|Vn RANGE_INDICATOR|5.031006||Viu rck_elide_nothing|5.032001||Viu RD_NODATA|5.003007|5.003007|Vn read|5.005000||Viu readdir|5.005000||Viu readdir64|5.009000||Viu READDIR64_R_PROTO|5.008000|5.008000|Vn READDIR_R_PROTO|5.008000|5.008000|Vn READ_XDIGIT|5.017006|5.017006| realloc|5.003007||Vn ReANY|5.017006||cVnu re_compile|5.009005|5.009005|u RE_COMPILE_RECURSION_INIT|5.029009||Viu RE_COMPILE_RECURSION_LIMIT|5.029009||Viu re_croak|||iu recv|5.006000||Viu recvfrom|5.005000||Viu RE_DEBUG_COMPILE_DUMP|5.009004||Viu RE_DEBUG_COMPILE_FLAGS|5.009005||Viu RE_DEBUG_COMPILE_MASK|5.009004||Viu RE_DEBUG_COMPILE_OPTIMISE|5.009004||Viu RE_DEBUG_COMPILE_PARSE|5.009004||Viu RE_DEBUG_COMPILE_TEST|5.021005||Viu RE_DEBUG_COMPILE_TRIE|5.009004||Viu RE_DEBUG_EXECUTE_INTUIT|5.009004||Viu RE_DEBUG_EXECUTE_MASK|5.009004||Viu RE_DEBUG_EXECUTE_MATCH|5.009004||Viu RE_DEBUG_EXECUTE_TRIE|5.009004||Viu RE_DEBUG_EXTRA_BUFFERS|5.009005||Viu RE_DEBUG_EXTRA_DUMP_PRE_OPTIMIZE|5.031004||Viu RE_DEBUG_EXTRA_GPOS|5.011000||Viu RE_DEBUG_EXTRA_MASK|5.009004||Viu RE_DEBUG_EXTRA_OPTIMISE|5.009005||Viu RE_DEBUG_EXTRA_STACK|5.009005||Viu RE_DEBUG_EXTRA_STATE|5.009004||Viu RE_DEBUG_EXTRA_TRIE|5.009004||Viu RE_DEBUG_EXTRA_WILDCARD|5.031011||Viu RE_DEBUG_FLAG|5.009004||Viu RE_DEBUG_FLAGS|5.009002||Viu re_dup_guts|5.011000|5.011000| reentrant_free|5.008000||cVu reentrant_init|5.008000||cVu REENTRANT_PROTO_B_B|5.008000||Viu REENTRANT_PROTO_B_BI|5.008000||Viu REENTRANT_PROTO_B_BW|5.008000||Viu REENTRANT_PROTO_B_CCD|5.008000||Viu REENTRANT_PROTO_B_CCS|5.008000||Viu REENTRANT_PROTO_B_IBI|5.008000||Viu REENTRANT_PROTO_B_IBW|5.008000||Viu REENTRANT_PROTO_B_SB|5.008000||Viu REENTRANT_PROTO_B_SBI|5.008000||Viu REENTRANT_PROTO_I_BI|5.008000||Viu REENTRANT_PROTO_I_BW|5.008000||Viu REENTRANT_PROTO_I_CCSBWR|5.008000||Viu REENTRANT_PROTO_I_CCSD|5.008000||Viu REENTRANT_PROTO_I_CII|5.008000||Viu REENTRANT_PROTO_I_CIISD|5.008000||Viu REENTRANT_PROTO_I_CSBI|5.008000||Viu REENTRANT_PROTO_I_CSBIR|5.008000||Viu REENTRANT_PROTO_I_CSBWR|5.008000||Viu REENTRANT_PROTO_I_CSBWRE|5.008000||Viu REENTRANT_PROTO_I_CSD|5.008000||Viu REENTRANT_PROTO_I_CWISBWRE|5.008000||Viu REENTRANT_PROTO_I_CWISD|5.008000||Viu REENTRANT_PROTO_I_D|5.008000||Viu REENTRANT_PROTO_I_H|5.008000||Viu REENTRANT_PROTO_I_IBI|5.008000||Viu REENTRANT_PROTO_I_IBW|5.008000||Viu REENTRANT_PROTO_I_ICBI|5.008000||Viu REENTRANT_PROTO_I_ICSBWR|5.008000||Viu REENTRANT_PROTO_I_ICSD|5.008000||Viu REENTRANT_PROTO_I_ID|5.008000||Viu REENTRANT_PROTO_I_IISD|5.008000||Viu REENTRANT_PROTO_I_ISBWR|5.008000||Viu REENTRANT_PROTO_I_ISD|5.008000||Viu REENTRANT_PROTO_I_LISBI|5.008000||Viu REENTRANT_PROTO_I_LISD|5.008000||Viu REENTRANT_PROTO_I_SB|5.008000||Viu REENTRANT_PROTO_I_SBI|5.008000||Viu REENTRANT_PROTO_I_SBIE|5.008000||Viu REENTRANT_PROTO_I_SBIH|5.008000||Viu REENTRANT_PROTO_I_SBIR|5.008000||Viu REENTRANT_PROTO_I_SBWR|5.008000||Viu REENTRANT_PROTO_I_SBWRE|5.008000||Viu REENTRANT_PROTO_I_SD|5.008000||Viu REENTRANT_PROTO_I_TISD|5.008000||Viu REENTRANT_PROTO_I_TS|5.008000||Viu REENTRANT_PROTO_I_TSBI|5.008000||Viu REENTRANT_PROTO_I_TSBIR|5.008000||Viu REENTRANT_PROTO_I_TSBWR|5.008000||Viu REENTRANT_PROTO_I_TsISBWRE|5.008001||Viu REENTRANT_PROTO_I_TSR|5.008000||Viu REENTRANT_PROTO_I_UISBWRE|5.008000||Viu REENTRANT_PROTO_I_uISBWRE|5.008001||Viu REENTRANT_PROTO_S_CBI|5.008000||Viu REENTRANT_PROTO_S_CCSBI|5.008000||Viu REENTRANT_PROTO_S_CIISBIE|5.008000||Viu REENTRANT_PROTO_S_CSBI|5.008000||Viu REENTRANT_PROTO_S_CSBIE|5.008000||Viu REENTRANT_PROTO_S_CWISBIE|5.008000||Viu REENTRANT_PROTO_S_CWISBWIE|5.008000||Viu REENTRANT_PROTO_S_ICSBI|5.008000||Viu REENTRANT_PROTO_S_ISBI|5.008000||Viu REENTRANT_PROTO_S_LISBI|5.008000||Viu REENTRANT_PROTO_S_SBI|5.008000||Viu REENTRANT_PROTO_S_SBIE|5.008000||Viu REENTRANT_PROTO_S_SBW|5.008000||Viu REENTRANT_PROTO_S_TISBI|5.008000||Viu REENTRANT_PROTO_S_TS|5.031011||Viu REENTRANT_PROTO_S_TSBI|5.008000||Viu REENTRANT_PROTO_S_TSBIE|5.008000||Viu REENTRANT_PROTO_S_TWISBIE|5.008000||Viu REENTRANT_PROTO_V_D|5.008000||Viu REENTRANT_PROTO_V_H|5.008000||Viu REENTRANT_PROTO_V_ID|5.008000||Viu reentrant_retry|5.008000||vcVnu reentrant_size|5.008000||cVu REENTR_MEMZERO|5.009003||Viu re_exec_indentf|5.023009||vViu REF|5.003007||Viu ref|5.009003||Viu ref_array_or_hash|5.027008||Viu refcounted_he_chain_2hv|5.013007||cVi REFCOUNTED_HE_EXISTS|5.015007||Viu refcounted_he_fetch_pv|5.013007||cVi refcounted_he_fetch_pvn|5.013007||cVi refcounted_he_fetch_pvs|5.013007||Vi refcounted_he_fetch_sv|5.013007||cVi refcounted_he_free|5.013007||cVi refcounted_he_inc|5.013007||cVi REFCOUNTED_HE_KEY_UTF8|5.013007||Viu refcounted_he_new_pv|5.013007||cVi refcounted_he_new_pvn|5.013007||cVi refcounted_he_new_pvs|5.013007||Vi refcounted_he_new_sv|5.013007||cVi refcounted_he_value|5.009004||Viu REFF|5.004001||Viu REFFA|5.013010||Viu REFFAN|5.031001||Viu REFFAN_t8|5.035004||Viu REFFAN_t8_p8|5.033003||Viu REFFAN_t8_pb|5.033003||Viu REFFAN_tb|5.035004||Viu REFFAN_tb_p8|5.033003||Viu REFFAN_tb_pb|5.033003||Viu REFFA_t8|5.035004||Viu REFFA_t8_p8|5.033003||Viu REFFA_t8_pb|5.033003||Viu REFFA_tb|5.035004||Viu REFFA_tb_p8|5.033003||Viu REFFA_tb_pb|5.033003||Viu REFFL|5.004001||Viu REFFLN|5.031001||Viu REFFLN_t8|5.035004||Viu REFFLN_t8_p8|5.033003||Viu REFFLN_t8_pb|5.033003||Viu REFFLN_tb|5.035004||Viu REFFLN_tb_p8|5.033003||Viu REFFLN_tb_pb|5.033003||Viu REFFL_t8|5.035004||Viu REFFL_t8_p8|5.033003||Viu REFFL_t8_pb|5.033003||Viu REFFL_tb|5.035004||Viu REFFL_tb_p8|5.033003||Viu REFFL_tb_pb|5.033003||Viu REFFN|5.031001||Viu REFFN_t8|5.035004||Viu REFFN_t8_p8|5.033003||Viu REFFN_t8_pb|5.033003||Viu REFFN_tb|5.035004||Viu REFFN_tb_p8|5.033003||Viu REFFN_tb_pb|5.033003||Viu REFF_t8|5.035004||Viu REFF_t8_p8|5.033003||Viu REFF_t8_pb|5.033003||Viu REFF_tb|5.035004||Viu REFF_tb_p8|5.033003||Viu REFF_tb_pb|5.033003||Viu REFFU|5.013008||Viu REFFUN|5.031001||Viu REFFUN_t8|5.035004||Viu REFFUN_t8_p8|5.033003||Viu REFFUN_t8_pb|5.033003||Viu REFFUN_tb|5.035004||Viu REFFUN_tb_p8|5.033003||Viu REFFUN_tb_pb|5.033003||Viu REFFU_t8|5.035004||Viu REFFU_t8_p8|5.033003||Viu REFFU_t8_pb|5.033003||Viu REFFU_tb|5.035004||Viu REFFU_tb_p8|5.033003||Viu REFFU_tb_pb|5.033003||Viu REF_HE_KEY|5.009005||Viu refkids|5.003007||Viu REFN|5.031001||Viu REFN_t8|5.035004||Viu REFN_t8_p8|5.033003||Viu REFN_t8_pb|5.033003||Viu REFN_tb|5.035004||Viu REFN_tb_p8|5.033003||Viu REFN_tb_pb|5.033003||Viu REF_t8|5.035004||Viu REF_t8_p8|5.033003||Viu REF_t8_pb|5.033003||Viu REF_tb|5.035004||Viu REF_tb_p8|5.033003||Viu REF_tb_pb|5.033003||Viu refto|5.005000||Viu reg2Lanode|5.021005||Viu reg|5.005000||Viu reganode|5.005000||Viu REG_ANY|5.006000||Viu REG_ANY_t8|5.035004||Viu REG_ANY_t8_p8|5.033003||Viu REG_ANY_t8_pb|5.033003||Viu REG_ANY_tb|5.035004||Viu REG_ANY_tb_p8|5.033003||Viu REG_ANY_tb_pb|5.033003||Viu regatom|5.005000||Viu regbranch|5.005000||Viu reg_check_named_buff_matched|5.009005||Vniu regclass|5.005000||Viu regcppop|5.005000||Viu regcppush|5.005000||Viu regcp_restore|5.025006||Viu regcurly|5.013010||cVniu REG_CUTGROUP_SEEN|5.019009||Viu regdump|5.005000|5.005000|u regdump_extflags|5.009005||Viu regdump_intflags|5.019002||Viu regdupe_internal|5.009005||cVu regexec_flags|5.005000||cVu REGEX_SET|5.031010||Viu regex_set_precedence|5.021010||Vniu REGEX_SET_t8|5.035004||Viu REGEX_SET_t8_p8|5.033003||Viu REGEX_SET_t8_pb|5.033003||Viu REGEX_SET_tb|5.035004||Viu REGEX_SET_tb_p8|5.033003||Viu REGEX_SET_tb_pb|5.033003||Viu REG_EXTFLAGS_NAME_SIZE|5.020000||Viu regfree_internal|5.009005||cVu REG_GPOS_SEEN|5.019009||Viu reghop3|5.007001||Vniu reghop4|5.009005||Vniu reghopmaybe3|5.007001||Vniu reginclass|5.005000||Viu REG_INFTY|5.004005||Viu reginitcolors|5.006000||cVu reginsert|5.005000||Viu REG_INTFLAGS_NAME_SIZE|5.020000||Viu register|5.003007||Viu reg_la_NOTHING|||Viu reg_la_OPFAIL|||Viu REG_LB_SEEN|||Viu REG_LOOKBEHIND_SEEN|5.019009||Viu REG_MAGIC|5.006000||Viu regmatch|5.005000||Viu REGMATCH_STATE_MAX|5.009005||Viu reg_named_buff|5.009005||cViu reg_named_buff_all|5.009005||cVu reg_named_buff_exists|5.009005||cVu reg_named_buff_fetch|5.009005||cVu reg_named_buff_firstkey|5.009005||cVu reg_named_buff_iter|5.009005||cViu reg_named_buff_nextkey|5.009005||cVu reg_named_buff_scalar|5.009005||cVu regnext|5.003007||cVu reg_node|5.005000||Viu REGNODE_AFTER|5.003007||Viu REGNODE_BEFORE|5.003007||Viu regnode_guts|5.021005||Viu regnode_guts_debug|||Viu REGNODE_MAX|5.009004||Viu REGNODE_SIMPLE|5.013002||Viu REGNODE_VARIES|5.013002||Viu reg_numbered_buff_fetch|5.009005||cViu reg_numbered_buff_length|5.009005||cViu reg_numbered_buff_store|5.009005||cViu regpiece|5.005000||Viu regpnode|5.031010||Viu regprop|5.003007||Viu reg_qr_package|5.009005||cViu REG_RECURSE_SEEN|5.019009||Viu regrepeat|5.005000||Viu REG_RUN_ON_COMMENT_SEEN|5.019009||Viu reg_scan_name|5.009005||Viu reg_skipcomment|5.009005||Vniu regtail|5.005000||Viu regtail_study|5.009004||Viu reg_temp_copy|5.009005||cViu REG_TOP_LEVEL_BRANCHES_SEEN|5.019009||Viu regtry|5.005000||Viu REG_UNBOUNDED_QUANTIFIER_SEEN|5.019009||Viu REG_UNFOLDED_MULTI_SEEN|5.019009||Viu REG_VERBARG_SEEN|5.019009||Viu REG_ZERO_LEN_SEEN|5.019009||Viu re_indentf|5.023009||vViu re_intuit_start|5.006000||cVu re_intuit_string|5.006000||cVu rename|5.005000||Viu Renew|5.003007|5.003007| Renewc|5.003007|5.003007| RENUM|5.005000||Viu RENUM_t8|5.035004||Viu RENUM_t8_p8|5.033003||Viu RENUM_t8_pb|5.033003||Viu RENUM_tb|5.035004||Viu RENUM_tb_p8|5.033003||Viu RENUM_tb_pb|5.033003||Viu re_op_compile|5.017001||Viu repeatcpy|5.003007|5.003007|nu REPLACEMENT_CHARACTER_UTF8|5.025005|5.003007|p report_evil_fh|5.006001||Viu report_redefined_cv|5.015006||Viu report_uninit|5.006000||cVi report_wrongway_fh|5.013009||Viu re_printf|5.023009||vViu RE_PV_COLOR_DECL|5.009004||Viu RE_PV_QUOTED_DECL|5.009004||Viu require_pv|5.006000|5.006000| require_tie_mod|5.009005||Viu ReREFCNT_dec|5.005000||Viu ReREFCNT_inc|5.005000||Viu RESTORE_ERRNO|5.010001||Vi RESTORE_LC_NUMERIC|5.021010|5.021010|p restore_magic|5.009003||Viu restore_switched_locale|5.027009||Viu RE_SV_DUMPLEN|5.009004||Viu RE_SV_ESCAPE|5.009004||Viu RE_SV_TAIL|5.009004||Viu RETPUSHNO|5.003007||Viu RETPUSHUNDEF|5.003007||Viu RETPUSHYES|5.003007||Viu RE_TRIE_MAXBUF_INIT|5.009002||Viu RE_TRIE_MAXBUF_NAME|5.009002||Viu RETSETNO|5.003007||Viu RETSETTARG|5.021009||Viu RETSETUNDEF|5.003007||Viu RETSETYES|5.003007||Viu RETURN|5.003007||Viu RETURNOP|5.003007||Viu RETURNX|5.003007||Viu RETVAL|5.003007|5.003007|V rewind|5.003007||Viu rewinddir|5.005000||Viu REXEC_CHECKED|5.005000||Viu REXEC_COPY_SKIP_POST|5.017004||Viu REXEC_COPY_SKIP_PRE|5.017004||Viu REXEC_COPY_STR|5.005000||Viu REXEC_FAIL_ON_UNDERFLOW|5.019003||Viu REXEC_IGNOREPOS|5.006000||Viu REXEC_NOT_FIRST|5.006000||Viu REXEC_SCREAM|5.006000||Viu rmdir|5.005000||Viu RMS_DIR|5.008001||Viu RMS_FAC|5.008001||Viu RMS_FEX|5.008001||Viu RMS_FNF|5.008001||Viu RMS_IFI|5.008001||Viu RMS_ISI|5.008001||Viu RMS_PRV|5.008001||Viu rninstr|5.003007|5.003007|n ROTL32|5.017010||Viu ROTL64|5.017010||Viu ROTL_UV|5.017010||Viu ROTR32|5.027001||Viu ROTR64|5.027001||Viu ROTR_UV|5.027001||Viu rpeep|5.013005||Viu rsignal|5.004000|5.004000| rsignal_restore|5.004000||Viu rsignal_save|5.004000||Viu rsignal_state|5.004000|5.004000|u RsPARA|5.003007||Viu RsRECORD|5.005000||Viu RsSIMPLE|5.003007||Viu RsSNARF|5.003007||Viu run_body|5.006000||Viu runops_debug|5.005000||cVu RUNOPS_DEFAULT|5.005000||Viu runops_standard|5.005000||cVu run_user_filter|5.009003||Viu rv2cv_op_cv|5.013006|5.013006| RV2CVOPCV_FLAG_MASK|5.021004||Viu RV2CVOPCV_MARK_EARLY|5.013006|5.013006| RV2CVOPCV_MAYBE_NAME_GV|5.021004||Viu RV2CVOPCV_RETURN_NAME_GV|5.013006|5.013006| RV2CVOPCV_RETURN_STUB|5.021004||Viu rvpv_dup|5.008008|5.008008|u RX_ANCHORED_SUBSTR|5.010001||Viu RX_ANCHORED_UTF8|5.010001||Viu RXapif_ALL|5.009005||Viu RXapif_CLEAR|5.009005||Viu RXapif_DELETE|5.009005||Viu RXapif_EXISTS|5.009005||Viu RXapif_FETCH|5.009005||Viu RXapif_FIRSTKEY|5.009005||Viu RXapif_NEXTKEY|5.009005||Viu RXapif_ONE|5.009005||Viu RXapif_REGNAME|5.009005||Viu RXapif_REGNAMES|5.009005||Viu RXapif_REGNAMES_COUNT|5.009005||Viu RXapif_SCALAR|5.009005||Viu RXapif_STORE|5.009005||Viu RX_BUFF_IDX_CARET_FULLMATCH|5.017004||Viu RX_BUFF_IDX_CARET_POSTMATCH|5.017004||Viu RX_BUFF_IDX_CARET_PREMATCH|5.017004||Viu RX_BUFF_IDX_FULLMATCH|5.009005||Viu RX_BUFF_IDX_POSTMATCH|5.009005||Viu RX_BUFF_IDX_PREMATCH|5.009005||Viu RX_CHECK_SUBSTR|5.010001||Viu RX_COMPFLAGS|5.017011||Viu RX_ENGINE|5.010001||Viu RX_EXTFLAGS|5.010001||Viu RXf_BASE_SHIFT|5.013004||Viu RXf_CHECK_ALL|5.009005||Viu RXf_COPY_DONE|5.009005||Viu RXf_EVAL_SEEN|5.009005||Viu RXf_INTUIT_TAIL|5.009005||Viu RXf_IS_ANCHORED|5.019009||Viu RX_FLOAT_SUBSTR|5.010001||Viu RX_FLOAT_UTF8|5.010001||Viu RXf_MATCH_UTF8|5.009005||Viu RXf_NO_INPLACE_SUBST|5.017011||Viu RXf_NULL|5.010000||Viu RXf_PMf_CHARSET|5.013009||Viu RXf_PMf_COMPILETIME|5.009005||Viu RXf_PMf_EXTENDED|5.009005||Viu RXf_PMf_EXTENDED_MORE|5.021005||Viu RXf_PMf_FLAGCOPYMASK|5.017011||Viu RXf_PMf_FOLD|5.009005||Viu RXf_PMf_KEEPCOPY|5.009005||Viu RXf_PMf_MULTILINE|5.009005||Viu RXf_PMf_NOCAPTURE|5.021008||Viu RXf_PMf_SINGLELINE|5.009005||Viu RXf_PMf_SPLIT|5.017011||Viu RXf_PMf_STD_PMMOD|5.009005||Viu RXf_PMf_STD_PMMOD_SHIFT|5.010001||Viu RXf_PMf_STRICT|5.021008||Viu RXf_SKIPWHITE|5.009005||Viu RXf_SPLIT|5.009005||Viu RXf_START_ONLY|5.009005||Viu RXf_TAINTED|5.009005||Viu RXf_TAINTED_SEEN|5.009005||Viu RXf_UNBOUNDED_QUANTIFIER_SEEN|5.019009||Viu RXf_USE_INTUIT|5.009005||Viu RXf_USE_INTUIT_ML|5.009005||Viu RXf_USE_INTUIT_NOML|5.009005||Viu RXf_WHITE|5.009005||Viu RX_GOFS|5.010001||Viu RXi_GET|5.009005||Viu RXi_GET_DECL|5.009005||Viu RX_INTFLAGS|5.019009||Viu RXi_SET|5.009005||Viu RX_ISTAINTED|5.017006||Viu RX_LASTCLOSEPAREN|5.010001||Viu RX_LASTPAREN|5.010001||Viu RX_MATCH_COPIED|5.006000||Viu RX_MATCH_COPIED_off|5.006000||Viu RX_MATCH_COPIED_on|5.006000||Viu RX_MATCH_COPIED_set|5.006000||Viu RX_MATCH_COPY_FREE|5.009000||Viu RX_MATCH_TAINTED|5.005000||Viu RX_MATCH_TAINTED_off|5.005000||Viu RX_MATCH_TAINTED_on|5.005000||Viu RX_MATCH_TAINTED_set|5.005000||Viu RX_MATCH_UTF8|5.008001||Viu RX_MATCH_UTF8_off|5.008001||Viu RX_MATCH_UTF8_on|5.008001||Viu RX_MATCH_UTF8_set|5.008001||Viu RX_MINLEN|5.010001||Viu RX_MINLENRET|5.010001||Viu RX_NPARENS|5.010001||Viu RX_OFFS|5.010001||Viu RXp_COMPFLAGS|5.017011||Viu RXp_ENGINE|5.027003||Viu RXp_EXTFLAGS|5.010001||Viu RXp_GOFS|5.027003||Viu RXp_HAS_CUTGROUP|5.027003||Viu RXp_INTFLAGS|5.019009||Viu RXp_ISTAINTED|5.027003||Viu RXp_MATCH_COPIED|5.010001||Viu RXp_MATCH_COPIED_off|5.010001||Viu RXp_MATCH_COPIED_on|5.010001||Viu RXp_MATCH_COPY_FREE|5.027003||Viu RXp_MATCH_TAINTED|5.010001||Viu RXp_MATCH_TAINTED_off|5.027003||Viu RXp_MATCH_TAINTED_on|5.017008||Viu RXp_MATCH_UTF8|5.010001||Viu RXp_MATCH_UTF8_off|5.027003||Viu RXp_MATCH_UTF8_on|5.027003||Viu RXp_MATCH_UTF8_set|5.027003||Viu RXp_MINLEN|5.027003||Viu RXp_MINLENRET|5.027003||Viu RXp_NPARENS|5.027003||Viu RXp_OFFS|5.027003||Viu RXp_PAREN_NAMES|5.010001||Viu RX_PRECOMP|5.010001||Viu RX_PRECOMP_const|5.010001||Viu RX_PRELEN|5.010001||Viu RXp_SAVED_COPY|5.027003||Viu RXp_SUBBEG|5.027003||Viu RXp_SUBOFFSET|5.027003||Viu RXp_ZERO_LEN|5.027003||Viu RX_REFCNT|5.010001||Viu rxres_free|5.004000||Viu rxres_restore|5.004000||Viu rxres_save|5.004000||Viu RX_SAVED_COPY|5.011000||Viu RX_SUBBEG|5.010001||Viu RX_SUBCOFFSET|5.017004||Viu RX_SUBLEN|5.010001||Viu RX_SUBOFFSET|5.017004||Viu RX_TAINT_on|5.017006||Viu RX_UTF8|5.010001||Viu RX_WRAPLEN|5.010001||Viu RX_WRAPPED|5.010001||Viu RX_WRAPPED_const|5.011000||Viu RX_ZERO_LEN|5.019003||Viu safecalloc|5.003007||Viu Safefree|5.003007|5.003007| safefree|5.003007||Viu safemalloc|5.003007||Viu saferealloc|5.003007||Viu safesyscalloc|5.006000|5.006000|n safesysfree|5.006000|5.006000|n safesysmalloc|5.006000|5.006000|n safesysrealloc|5.006000|5.006000|n SAFE_TRIE_NODENUM|5.009002||Viu same_dirent|5.003007||Viu SANE_ERRSV|5.031003|5.031003| SANY|5.003007||Viu SANY_t8|5.035004||Viu SANY_t8_p8|5.033003||Viu SANY_t8_pb|5.033003||Viu SANY_tb|5.035004||Viu SANY_tb_p8|5.033003||Viu SANY_tb_pb|5.033003||Viu save_adelete|5.011000|5.011000|u SAVEADELETE|5.011000||Viu save_aelem|5.004005|5.004005|u save_aelem_flags|5.011000|5.011000|u save_alloc|5.006000|5.006000|u save_aptr|5.003007|5.003007| save_ary|5.003007|5.003007| SAVEBOOL|5.008001|5.008001| save_bool|5.008001||cVu save_clearsv|5.003007||cVu SAVECLEARSV|5.003007||Vi SAVECOMPILEWARNINGS|5.009004||Viu SAVECOMPPAD|5.006000||Vi SAVECOPFILE|5.006000||Viu SAVECOPFILE_FREE|5.006001||Viu SAVECOPLINE|5.006000||Viu SAVECOPSTASH_FREE|5.006001||Viu SAVE_DEFSV|5.004005|5.003007|p SAVEDELETE|5.003007|5.003007| save_delete|5.003007||cVu save_destructor|5.003007||cVu SAVEDESTRUCTOR|5.006000|5.006000| SAVEDESTRUCTOR_X|5.006000|5.006000| save_destructor_x|5.006000||cVu SAVE_ERRNO|5.010001||Vi SAVEFEATUREBITS|5.031006||Viu SAVEf_KEEPOLDELEM|5.011000||Viu SAVEFREECOPHH|5.013007||Viu SAVEFREEOP|5.010001|5.010001| save_freeop|5.010001||cVu SAVEFREEPADNAME|5.021007||Viu SAVEFREEPV|5.003007|5.003007| save_freepv|5.010001||cVu SAVEFREESV|5.003007|5.003007| save_freesv|5.010001||cVu SAVEf_SETMAGIC|5.011000||Viu SAVEGENERICPV|5.006001||Viu save_generic_pvref|5.006001|5.006001|u SAVEGENERICSV|5.005003||Viu save_generic_svref|5.005003|5.005003|u save_gp|5.004000|5.004000| save_hash|5.003007|5.003007| save_hdelete|5.011000|5.011000|u SAVEHDELETE|5.011000||Viu save_hek_flags|5.008000||Vniu save_helem|5.004005|5.004005|u save_helem_flags|5.011000|5.011000|u SAVEHINTS|5.005000||Viu save_hints|5.013005|5.013005|u save_hptr|5.003007|5.003007| SAVEI16|5.004000|5.004000| save_I16|5.004000||cVu SAVEI32|5.003007|5.003007| save_I32|5.003007||cVu SAVEI8|5.006000|5.006000| save_I8|5.006000||cVu SAVEINT|5.003007|5.003007| save_int|5.003007||cVu save_item|5.003007|5.003007| SAVEIV|5.003007|5.003007| save_iv|5.004000||cVu save_lines|5.005000||Viu save_list|5.003007|5.003007|d SAVELONG|5.003007|5.003007| save_long|5.003007||dcVu save_magic_flags|5.019002||Viu SAVE_MASK|5.013001||Viu SAVEMORTALIZESV|5.007001|5.007001| save_mortalizesv|5.010001||cVu save_nogv|5.003007|5.003007|du SAVEOP|5.005000||Viu save_op|5.010001|5.010001|u save_padsv_and_mortalize|5.010001|5.010001|u SAVEPADSVANDMORTALIZE|5.010001||Viu SAVEPADSV|||i SAVEPARSER|5.009005||Viu SAVEPPTR|5.003007|5.003007| save_pptr|5.003007||cVu save_pushi32ptr|5.013006|5.013006|u save_pushptr|5.010001|5.010001|u save_pushptri32ptr|5.010001||Viu save_pushptrptr|5.013006|5.013006|u savepv|5.003007|5.003007| savepvn|5.003007|5.003007| savepvs|5.009003|5.009003| save_re_context|5.006000||cVu save_scalar|5.003007|5.003007| save_scalar_at|5.005000||Viu save_set_svflags|5.009000|5.009000|u SAVESETSVFLAGS|5.009000||Viu savesharedpv|5.007003|5.007003| SAVESHAREDPV|5.007003||Viu savesharedpvn|5.009005|5.009005| save_shared_pvref|5.007003|5.007003|u savesharedpvs|5.013006|5.013006| savesharedsvpv|5.013006|5.013006| SAVESPTR|5.003007|5.003007| save_sptr|5.003007||cVu savestack_grow|5.003007|5.003007|u savestack_grow_cnt|5.008001|5.008001|u SAVESTACK_POS|5.004000|5.004000| save_strlen|5.019004||cViu SAVESTRLEN|5.035005|5.035005| savesvpv|5.009002|5.009002| save_svref|5.003007|5.003007| SAVESWITCHSTACK|5.009002||Viu SAVEt_ADELETE|5.011000||Viu SAVEt_AELEM|5.004005||Viu SAVEt_ALLOC|5.006000||Viu SAVEt_APTR|5.003007||Viu SAVEt_AV|5.003007||Viu SAVEt_BOOL|5.008001||Viu SAVEt_CLEARPADRANGE|5.017006||Viu SAVEt_CLEARSV|5.003007||Viu SAVEt_COMPILE_WARNINGS|5.009004||Viu SAVEt_COMPPAD|5.006000||Viu SAVEt_DELETE|5.003007||Viu SAVEt_DESTRUCTOR|5.003007||Viu SAVEt_DESTRUCTOR_X|5.006000||Viu SAVEt_FREECOPHH|5.013007||Viu SAVEt_FREEOP|5.003007||Viu SAVEt_FREEPADNAME|5.021007||Viu SAVEt_FREEPV|5.003007||Viu SAVEt_FREESV|5.003007||Viu SAVEt_GENERIC_PVREF|5.006001||Viu SAVEt_GENERIC_SVREF|5.005003||Viu SAVEt_GP|5.003007||Viu SAVEt_GVSLOT|5.017007||Viu SAVEt_GVSV|5.013005||Viu SAVEt_HELEM|5.004005||Viu SAVEt_HINTS|5.005000||Viu SAVEt_HINTS_HH|5.033001||Viu SAVEt_HPTR|5.003007||Viu SAVEt_HV|5.003007||Viu SAVEt_I16|5.004000||Viu SAVEt_I32|5.003007||Viu SAVEt_I32_SMALL|5.013001||Viu SAVEt_I8|5.006000||Viu SAVE_TIGHT_SHIFT|5.013001||Viu SAVEt_INT|5.003007||Viu SAVEt_INT_SMALL|5.013001||Viu SAVEt_ITEM|5.003007||Viu SAVEt_IV|5.003007||Viu SAVEt_LONG|5.003007||Viu SAVEt_MORTALIZESV|5.007001||Viu SAVETMPS|5.003007|5.003007| savetmps|||xu SAVEt_NSTAB|5.003007||Viu save_to_buffer|5.027004||Vniu SAVEt_OP|5.005000||Viu SAVEt_PADSV_AND_MORTALIZE|5.010001||Viu SAVEt_PARSER|5.009005||Viu SAVEt_PPTR|5.003007||Viu SAVEt_READONLY_OFF|5.019002||Viu SAVEt_REGCONTEXT|5.003007||Viu SAVEt_SAVESWITCHSTACK|5.009002||Viu SAVEt_SET_SVFLAGS|5.009000||Viu SAVEt_SHARED_PVREF|5.007003||Viu SAVEt_SPTR|5.003007||Viu SAVEt_STACK_POS|5.004000||Viu SAVEt_STRLEN|5.019004||Viu SAVEt_STRLEN_SMALL|5.033005||Viu SAVEt_SV|5.003007||Viu SAVEt_SVREF|5.003007||Viu SAVEt_TMPSFLOOR|5.023008||Viu SAVEt_VPTR|5.006000||Viu save_vptr|5.006000|5.006000|u SAVEVPTR|5.006000||Viu SAWAMPERSAND_LEFT|5.017004||Viu SAWAMPERSAND_MIDDLE|5.017004||Viu SAWAMPERSAND_RIGHT|5.017004||Viu sawparens|5.003007||Viu sb_dstr|5.003007||Viu sb_iters|5.003007||Viu sb_m|5.003007||Viu sb_maxiters|5.003007||Viu SBOL|5.003007||Viu SBOL_t8|5.035004||Viu SBOL_t8_p8|5.033003||Viu SBOL_t8_pb|5.033003||Viu SBOL_tb|5.035004||Viu SBOL_tb_p8|5.033003||Viu SBOL_tb_pb|5.033003||Viu sb_orig|5.003007||Viu SBOX32_CHURN_ROUNDS|5.027001||Viu SBOX32_MAX_LEN|5.027001||Viu SBOX32_MIX3|5.027001||Viu SBOX32_MIX4|5.027001||Viu SBOX32_SCRAMBLE32|5.027001||Viu SBOX32_SKIP_MASK|5.027001||Viu SBOX32_STATE_BITS|5.027001||Viu SBOX32_STATE_BYTES|5.027001||Viu SBOX32_STATE_WORDS|5.027001||Viu SBOX32_STATIC_INLINE|5.027001||Viu SBOX32_WARN2|5.027001||Viu SBOX32_WARN3|5.027001||Viu SBOX32_WARN4|5.027001||Viu SBOX32_WARN5|5.027001||Viu SBOX32_WARN6|5.027001||Viu sb_rflags|5.006000||Viu sb_rx|5.003007||Viu sb_rxres|5.004000||Viu sb_rxtainted|5.004000||Viu sb_s|5.003007||Viu sb_strend|5.003007||Viu sb_targ|5.003007||Viu scalar|5.003007||Viu scalarboolean|5.005000||Viu scalarkids|5.003007||Viu scalar_mod_type|5.006000||Vniu scalarvoid|5.003007||Viu scan_bin|5.006000|5.006000| scan_commit|5.005000||Viu scan_const|5.003007||Viu SCAN_DEF|5.003007||Viu scan_formline|5.003007||Viu scan_heredoc|5.003007||Viu scan_hex|5.006000|5.003007| scan_ident|5.003007||Viu scan_inputsymbol|5.003007||Viu scan_num|5.003007||cVu scan_oct|5.006000|5.003007| scan_pat|5.003007||Viu SCAN_REPL|5.003007||Viu scan_str|5.003007||xcViu scan_subst|5.003007||Viu SCAN_TR|5.003007||Viu scan_trans|5.003007||Viu scan_version|5.009001|5.009001| SCAN_VERSION|5.019008||Viu scan_vstring|5.009005|5.009005|u scan_word|5.003007||xcViu SCHED_YIELD|5.006000|5.006000|Vn SCOPE_SAVES_SIGNAL_MASK|5.007001||Viu search_const|5.010001||Viu seed|5.009003|5.009003|u seedDrand01|5.006000|5.006000| SEEK_CUR|5.003007||Viu seekdir|5.005000||Viu SEEK_END|5.003007||Viu SEEK_SET|5.003007||Viu select|5.005000||Viu Select_fd_set_t|5.003007|5.003007|Vn SELECT_MIN_BITS|5.005003|5.005003|Vn Semctl|5.004005||Viu semun|5.006000||Viu send|5.005000||Viu sendto|5.005000||Viu SEOL|5.003007||Viu SEOL_t8|5.035004||Viu SEOL_t8_p8|5.033003||Viu SEOL_t8_pb|5.033003||Viu SEOL_tb|5.035004||Viu SEOL_tb_p8|5.033003||Viu SEOL_tb_pb|5.033003||Viu sequence_num|5.009003||Viu set_ANYOF_arg|5.019005||Viu set_ANYOF_SYNTHETIC|5.019009||Viu setbuf|5.003007||Viu set_caret_X|5.019006||Viu set_context|5.006000|5.006000|nu setdefout|5.011000|5.011000| SETERRNO|5.003007||Vi setfd_cloexec|5.027008||Vniu setfd_cloexec_for_nonsysfd|5.027008||Viu setfd_cloexec_or_inhexec_by_sysfdness|5.027008||Viu setfd_inhexec|5.027008||Vniu setfd_inhexec_for_sysfd|5.027008||Viu setgid|5.005000||Viu setgrent|5.009000||Viu SETGRENT_R_HAS_FPTR|5.008000||Viu SETGRENT_R_PROTO|5.008000|5.008000|Vn sethostent|5.005000||Viu SETHOSTENT_R_PROTO|5.008000|5.008000|Vn SETi|5.003007||Viu setjmp|5.005000||Viu setlinebuf|5.005000||Viu setlocale|5.009000||Viu setlocale_debug_string|5.027002||Vniu SETLOCALE_LOCK|5.033005||Viu SETLOCALE_R_PROTO|5.008000|5.008000|Vn SETLOCALE_UNLOCK|5.033005||Viu SET_MARK_OFFSET|5.006000||Viu setmode|5.005000||Viu SETn|5.003007||Viu setnetent|5.005000||Viu SETNETENT_R_PROTO|5.008000|5.008000|Vn set_numeric_radix|5.006000||Viu SET_NUMERIC_STANDARD|5.004000||Viu set_numeric_standard|5.006000||cViu SET_NUMERIC_UNDERLYING|5.021010||Viu set_numeric_underlying|5.027006||cViu SETp|5.003007||Viu set_padlist|5.021006||cVniu setprotoent|5.005000||Viu SETPROTOENT_R_PROTO|5.008000|5.008000|Vn setpwent|5.009000||Viu SETPWENT_R_HAS_FPTR|5.008000||Viu SETPWENT_R_PROTO|5.008000|5.008000|Vn set_regex_pv|5.029004||Viu setregid|5.003007||Viu setreuid|5.003007||Viu SETs|5.003007||Viu setservent|5.005000||Viu SETSERVENT_R_PROTO|5.008000|5.008000|Vn setsockopt|5.005000||Viu setSTR_LEN|5.031005||Viu SET_SVANY_FOR_BODYLESS_IV|5.023008||Viu SET_SVANY_FOR_BODYLESS_NV|5.023008||Viu SETTARG|5.003007||Viu SET_THR|5.005000||Viu SET_THREAD_SELF|5.005003||Viu SETu|5.004000||Viu setuid|5.005000||Viu _setup_canned_invlist|5.019008||cViu setvbuf|5.003007||Viu share_hek|5.009003|5.009003|u share_hek_flags|5.008000||Viu share_hek_hek|5.009003||Viu sharepvn|5.005000||Viu SHARP_S_SKIP|5.007003||Viu Shmat_t|5.003007|5.003007|Vn SHORTSIZE|5.004000|5.004000|Vn should_warn_nl|5.021001||Vniu should_we_output_Debug_r|5.031011||Viu SH_PATH|5.003007|5.003007|Vn shutdown|5.005000||Viu si_dup|5.007003|5.007003|u S_IEXEC|5.006000||Viu S_IFIFO|5.011000||Viu S_IFMT|5.003007||Viu SIGABRT|5.003007||Viu sighandler1|5.031007||Vniu sighandler3|5.031007||Vniu sighandler|5.003007||Vniu SIGILL|5.003007||Viu Sigjmp_buf|5.003007|5.003007|Vn Siglongjmp|5.003007|5.003007| signal|5.005000||Viu Signal_t|5.003007|5.003007|Vn SIG_NAME|5.003007|5.003007|Vn SIG_NUM|5.003007|5.003007|Vn Sigsetjmp|5.003007|5.003007| SIG_SIZE|5.007001|5.007001|Vn simplify_sort|5.006000||Viu single_1bit_pos32|5.035003||cVnu single_1bit_pos64|5.035003||cVnu SINGLE_PAT_MOD|5.009005||Viu SIPHASH_SEED_STATE|5.027001||Viu SIPROUND|5.017006||Viu S_IREAD|5.006000||Viu S_IRGRP|5.003007||Viu S_IROTH|5.003007||Viu S_IRUSR|5.003007||Viu S_IRWXG|5.006000||Viu S_IRWXO|5.006000||Viu S_IRWXU|5.006000||Viu S_ISBLK|5.003007||Viu S_ISCHR|5.003007||Viu S_ISDIR|5.003007||Viu S_ISFIFO|5.003007||Viu S_ISGID|5.003007||Viu S_ISLNK|5.003007||Viu S_ISREG|5.003007||Viu S_ISSOCK|5.003007||Viu S_ISUID|5.003007||Viu SITEARCH|5.003007|5.003007|Vn SITEARCH_EXP|5.003007|5.003007|Vn SITELIB|5.003007|5.003007|Vn SITELIB_EXP|5.003007|5.003007|Vn SITELIB_STEM|5.006000|5.006000|Vn S_IWGRP|5.003007||Viu S_IWOTH|5.003007||Viu S_IWRITE|5.006000||Viu S_IWUSR|5.003007||Viu S_IXGRP|5.003007||Viu S_IXOTH|5.003007||Viu S_IXUSR|5.003007||Viu SIZE_ALIGN|5.005000||Viu Size_t|5.003007|5.003007|Vn Size_t_MAX|5.021003||Viu Size_t_size|5.006000|5.006000|Vn SKIP|5.009005||Viu SKIP_next|5.009005||Viu SKIP_next_fail|5.009005||Viu SKIP_next_fail_t8|5.035004||Viu SKIP_next_fail_t8_p8|5.033003||Viu SKIP_next_fail_t8_pb|5.033003||Viu SKIP_next_fail_tb|5.035004||Viu SKIP_next_fail_tb_p8|5.033003||Viu SKIP_next_fail_tb_pb|5.033003||Viu SKIP_next_t8|5.035004||Viu SKIP_next_t8_p8|5.033003||Viu SKIP_next_t8_pb|5.033003||Viu SKIP_next_tb|5.035004||Viu SKIP_next_tb_p8|5.033003||Viu SKIP_next_tb_pb|5.033003||Viu skipspace_flags|5.019002||xcViu SKIP_t8|5.035004||Viu SKIP_t8_p8|5.033003||Viu SKIP_t8_pb|5.033003||Viu SKIP_tb|5.035004||Viu SKIP_tb_p8|5.033003||Viu SKIP_tb_pb|5.033003||Viu skip_to_be_ignored_text|5.023004||Viu Slab_Alloc|5.006000||cViu Slab_Free|5.007003||cViu Slab_to_ro|5.017002||Viu Slab_to_rw|5.009005||Viu sleep|5.005000||Viu SLOPPYDIVIDE|5.003007||Viu socket|5.005000||Viu SOCKET_OPEN_MODE|5.008002||Viu socketpair|5.005000||Viu Sock_size_t|5.006000|5.006000|Vn softref2xv|||iu sortcv|5.009003||Viu sortcv_stacked|5.009003||Viu sortcv_xsub|5.009003||Viu sortsv|5.007003|5.007003| sortsv_flags|5.009003|5.009003| sortsv_flags_impl|5.031011||Viu SP|5.003007|5.003007| space_join_names_mortal|5.009004||Viu SPAGAIN|5.003007|5.003007| S_PAT_MODS|5.009005||Viu specialWARN|5.006000||Viu SRAND48_R_PROTO|5.008000|5.008000|Vn SRANDOM_R_PROTO|5.008000|5.008000|Vn SRCLOSE|5.027008||Viu SRCLOSE_t8|5.035004||Viu SRCLOSE_t8_p8|5.033003||Viu SRCLOSE_t8_pb|5.033003||Viu SRCLOSE_tb|5.035004||Viu SRCLOSE_tb_p8|5.033003||Viu SRCLOSE_tb_pb|5.033003||Viu SROPEN|5.027008||Viu SROPEN_t8|5.035004||Viu SROPEN_t8_p8|5.033003||Viu SROPEN_t8_pb|5.033003||Viu SROPEN_tb|5.035004||Viu SROPEN_tb_p8|5.033003||Viu SROPEN_tb_pb|5.033003||Viu SS_ACCVIO|5.008001||Viu SS_ADD_BOOL|5.017007||Viu SS_ADD_DPTR|5.017007||Viu SS_ADD_DXPTR|5.017007||Viu SS_ADD_END|5.017007||Viu SS_ADD_INT|5.017007||Viu SS_ADD_IV|5.017007||Viu SS_ADD_LONG|5.017007||Viu SS_ADD_PTR|5.017007||Viu SS_ADD_UV|5.017007||Viu SS_BUFFEROVF|5.021009||Viu ssc_add_range|5.019005||Viu ssc_and|5.019005||Viu ssc_anything|5.019005||Viu ssc_clear_locale|5.019005||Vniu ssc_cp_and|5.019005||Viu ssc_finalize|5.019005||Viu SSCHECK|5.003007||Viu ssc_init|5.019005||Viu ssc_intersection|5.019005||Viu ssc_is_anything|5.019005||Vniu ssc_is_cp_posixl_init|5.019005||Vniu SSC_MATCHES_EMPTY_STRING|5.021004||Viu ssc_or|5.019005||Viu ssc_union|5.019005||Viu SS_DEVOFFLINE|5.008001||Viu ss_dup|5.007003|5.007003|u SSGROW|5.008001||Viu SS_IVCHAN|5.008001||Viu SSize_t|5.003007|5.003007|Vn SSize_t_MAX|5.019004||Viu SS_MAXPUSH|5.017007||Viu SSNEW|5.006000||Viu SSNEWa|5.006000||Viu SSNEWat|5.007001||Viu SSNEWt|5.007001||Viu SS_NOPRIV|5.021001||Viu SS_NORMAL|5.008001||Viu SSPOPBOOL|5.008001||Viu SSPOPDPTR|5.003007||Viu SSPOPDXPTR|5.006000||Viu SSPOPINT|5.003007||Viu SSPOPIV|5.003007||Viu SSPOPLONG|5.003007||Viu SSPOPPTR|5.003007||Viu SSPOPUV|5.013001||Viu SSPTR|5.006000||Viu SSPTRt|5.007001||Viu SSPUSHBOOL|5.008001||Viu SSPUSHDPTR|5.003007||Viu SSPUSHDXPTR|5.006000||Viu SSPUSHINT|5.003007||Viu SSPUSHIV|5.003007||Viu SSPUSHLONG|5.003007||Viu SSPUSHPTR|5.003007||Viu SSPUSHUV|5.013001||Viu ST|5.003007|5.003007| stack_grow|5.003007||cVu Stack_off_t_MAX|||piu Stack_off_t|||piu STANDARD_C|5.003007||Viu STAR|5.003007||Viu STAR_t8|5.035004||Viu STAR_t8_p8|5.033003||Viu STAR_t8_pb|5.033003||Viu STAR_tb|5.035004||Viu STAR_tb_p8|5.033003||Viu STAR_tb_pb|5.033003||Viu START_EXTERN_C|5.005000|5.003007|pV start_glob|||xi START_MY_CXT|5.010000|5.010000|p STARTPERL|5.003007|5.003007|Vn start_subparse|5.004000|5.003007|pu StashHANDLER|5.007001||Viu Stat|5.003007||Viu stat|5.005000||Viu STATIC|5.005000||Viu STATIC_ASSERT_1|5.021007||Viu STATIC_ASSERT_2|5.021007||Viu STATIC_ASSERT_DECL|5.027001||Viu STATIC_ASSERT_STMT|5.021007||Viu Stat_t|5.004005||Viu STATUS_ALL_FAILURE|5.004000||Viu STATUS_ALL_SUCCESS|5.004000||Viu STATUS_CURRENT|5.004000||Viu STATUS_EXIT|5.009003||Viu STATUS_EXIT_SET|5.009003||Viu STATUS_NATIVE|5.004000||Viu STATUS_NATIVE_CHILD_SET|5.009003||Viu STATUS_UNIX|5.009003||Viu STATUS_UNIX_EXIT_SET|5.009003||Viu STATUS_UNIX_SET|5.009003||Viu STDCHAR|5.003007|5.003007|Vn stderr|5.003007||Viu ST_DEV_SIGN|5.035004|5.035004|Vn ST_DEV_SIZE|5.035004|5.035004|Vn stdin|5.003007||Viu STDIO_PTR_LVAL_SETS_CNT|5.007001|5.007001|Vn STDIO_PTR_LVALUE|5.006000|5.006000|Vn STDIO_STREAM_ARRAY|5.006000|5.006000|Vn stdize_locale|5.007001||Viu stdout|5.003007||Viu stdoutf|5.005000||Viu STD_PAT_MODS|5.009005||Viu STD_PMMOD_FLAGS_CLEAR|5.013006||Viu ST_INO_SIGN|5.015002|5.015002|Vn ST_INO_SIZE|5.015002|5.015002|Vn STMT_END|5.003007|5.003007|pV STMT_START|5.003007|5.003007|pV STOREFEATUREBITSHH|5.031006||Viu STORE_LC_NUMERIC_FORCE_TO_UNDERLYING|5.021010|5.021010| STORE_LC_NUMERIC_SET_STANDARD|5.027009||pVu STORE_LC_NUMERIC_SET_TO_NEEDED|5.021010|5.021010| STORE_LC_NUMERIC_SET_TO_NEEDED_IN|5.031003|5.031003| STORE_NUMERIC_SET_STANDARD|||piu strBEGINs|5.027006||Viu strEQ|5.003007|5.003007| Strerror|5.003007||Viu strerror|5.009000||Viu STRERROR_R_PROTO|5.008000|5.008000|Vn strGE|5.003007|5.003007| strGT|5.003007|5.003007| STRING|5.006000||Viu STRINGIFY|5.003007|5.003007|Vn STRINGl|5.031005||Viu STRINGs|5.031005||Viu strip_return|5.009003||Viu strLE|5.003007|5.003007| STR_LEN|5.006000||Viu STRLEN|5.027001||Viu STR_LENl|5.031005||Viu STR_LENs|5.031005||Viu strLT|5.003007|5.003007| strNE|5.003007|5.003007| strnEQ|5.003007|5.003007| strnNE|5.003007|5.003007| STR_SZ|5.006000||Viu Strtod|5.029010|5.029010|n Strtol|5.006000|5.006000|n strtoll|5.006000||Viu Strtoul|5.006000|5.006000|n strtoull|5.006000||Viu str_to_version|5.006000||cVu StructCopy|5.003007|5.003007|V STRUCT_OFFSET|5.004000||Viu STRUCT_SV|5.007001||Viu STR_WITH_LEN|5.009003|5.003007|pV study_chunk|5.005000||Viu sub_crush_depth|5.004000||Viu sublex_done|5.005000||Viu sublex_push|5.005000||Viu sublex_start|5.005000||Viu SUBST_TAINT_BOOLRET|5.013010||Viu SUBST_TAINT_PAT|5.013010||Viu SUBST_TAINT_REPL|5.013010||Viu SUBST_TAINT_RETAINT|5.013010||Viu SUBST_TAINT_STR|5.013010||Viu SUBVERSION|5.003007||Viu SUCCEED|5.003007||Viu SUCCEED_t8|5.035004||Viu SUCCEED_t8_p8|5.033003||Viu SUCCEED_t8_pb|5.033003||Viu SUCCEED_tb|5.035004||Viu SUCCEED_tb_p8|5.033003||Viu SUCCEED_tb_pb|5.033003||Viu SUSPEND|5.005000||Viu SUSPEND_t8|5.035004||Viu SUSPEND_t8_p8|5.033003||Viu SUSPEND_t8_pb|5.033003||Viu SUSPEND_tb|5.035004||Viu SUSPEND_tb_p8|5.033003||Viu SUSPEND_tb_pb|5.033003||Viu sv_2bool|5.013006||cV sv_2bool_flags|5.013006||cV sv_2bool_nomg|5.017002||Viu sv_2cv|5.003007|5.003007| sv_2io|5.003007|5.003007| sv_2iuv_common|5.009004||Viu sv_2iuv_non_preserve|5.007001||Viu sv_2iv|5.009001||cVu sv_2iv_flags|5.009001|5.009001| sv_2mortal|5.003007|5.003007| sv_2num|5.010000||xVi sv_2nv|5.013001||Viu sv_2nv_flags|5.013001|5.013001| sv_2pv|5.005000||pcVu sv_2pvbyte|5.006000|5.003007|p sv_2pvbyte_flags|5.031004|5.031004|u sv_2pvbyte_nolen|5.009003||pcV sv_2pv_flags|5.007002||pcV sv_2pv_nolen|5.009003||pcV sv_2pv_nomg|5.007002||Viu sv_2pvutf8|5.006000|5.006000| sv_2pvutf8_flags|5.031004|5.031004|u sv_2pvutf8_nolen|5.009003||cV sv_2uv|5.009001||pcVu sv_2uv_flags|5.009001|5.009001| sv_add_arena|5.003007||Vi sv_add_backref|||iu SvAMAGIC|5.003007||Viu SvAMAGIC_off|5.003007|5.003007|nu SvAMAGIC_on|5.003007|5.003007|nu SvANY|5.003007||Viu SvARENA_CHAIN_SET|||Viu SvARENA_CHAIN|||Viu sv_backoff|5.003007|5.003007|n sv_bless|5.003007|5.003007| sv_buf_to_ro|5.019008||Viu sv_buf_to_rw|5.019008||Viu SvCANCOW|5.017007||Viu SvCANEXISTDELETE|5.011000||Viu SV_CATBYTES|5.021005|5.021005| sv_cat_decode|5.008001|5.008001| sv_cathek|5.021004||Viu sv_catpv|5.003007|5.003007| sv_catpvf|5.004000||vV sv_catpv_flags|5.013006|5.013006| sv_catpvf_mg|5.004005||pvV sv_catpvf_mg_nocontext|5.006000||pvVn sv_catpvf_nocontext|5.006000||vVn sv_catpv_mg|5.004005|5.003007|p sv_catpvn|5.003007|5.003007| sv_catpvn_flags|5.007002|5.007002| sv_catpvn_mg|5.004005|5.003007|p sv_catpvn_nomg|5.007002|5.003007|p sv_catpvn_nomg_maybeutf8|5.017005||Viu sv_catpvn_nomg_utf8_upgrade|5.017002||Viu sv_catpv_nomg|5.013006|5.013006| sv_catpvs|5.009003|5.003007|p sv_catpvs_flags|5.013006|5.013006| sv_catpvs_mg|5.013006|5.013006| sv_catpvs_nomg|5.013006|5.013006| sv_catsv|5.003007|5.003007| sv_catsv_flags|5.007002|5.007002| sv_catsv_mg|5.004005|5.003007|p sv_catsv_nomg|5.007002|5.003007|p SV_CATUTF8|5.021005|5.021005| sv_catxmlpvs|5.013006||Viu SV_CHECK_THINKFIRST|5.008001||Viu SV_CHECK_THINKFIRST_COW_DROP|5.009000||Viu sv_chop|5.003007|5.003007| sv_clean_all|5.003007||Vi sv_clean_objs|5.003007||Vi sv_clear|5.003007|5.003007| sv_cmp|5.003007|5.003007| sv_cmp_flags|5.013006|5.013006| sv_cmp_locale|5.004000|5.004000| sv_cmp_locale_flags|5.013006|5.013006| sv_collxfrm|5.013006||V sv_collxfrm_flags|5.013006|5.013006| SvCOMPILED|5.003007||Viu SvCOMPILED_off|5.003007||Viu SvCOMPILED_on|5.003007||Viu SV_CONST|5.019002||Viu SV_CONST_BINMODE|5.019002||Viu SV_CONST_CLEAR|5.019002||Viu SV_CONST_CLOSE|5.019002||Viu SV_CONST_DELETE|5.019002||Viu SV_CONST_DESTROY|5.019002||Viu SV_CONST_EOF|5.019002||Viu SV_CONST_EXISTS|5.019002||Viu SV_CONST_EXTEND|5.019002||Viu SV_CONST_FETCH|5.019002||Viu SV_CONST_FETCHSIZE|5.019002||Viu SV_CONST_FILENO|5.019002||Viu SV_CONST_FIRSTKEY|5.019002||Viu SV_CONST_GETC|5.019002||Viu SV_CONST_NEXTKEY|5.019002||Viu SV_CONST_OPEN|5.019002||Viu SV_CONST_POP|5.019002||Viu SV_CONST_PRINT|5.019002||Viu SV_CONST_PRINTF|5.019002||Viu SV_CONST_PUSH|5.019002||Viu SV_CONST_READ|5.019002||Viu SV_CONST_READLINE|5.019002||Viu SV_CONST_RETURN|5.009003|5.003007|poVnu SV_CONST_SCALAR|5.019002||Viu SV_CONSTS_COUNT|5.019002||Viu SV_CONST_SEEK|5.019002||Viu SV_CONST_SHIFT|5.019002||Viu SV_CONST_SPLICE|5.019002||Viu SV_CONST_STORE|5.019002||Viu SV_CONST_STORESIZE|5.019002||Viu SV_CONST_TELL|5.019002||Viu SV_CONST_TIEARRAY|5.019002||Viu SV_CONST_TIEHANDLE|5.019002||Viu SV_CONST_TIEHASH|5.019002||Viu SV_CONST_TIESCALAR|5.019002||Viu SV_CONST_UNSHIFT|5.019002||Viu SV_CONST_UNTIE|5.019002||Viu SV_CONST_WRITE|5.019002||Viu sv_copypv|5.007003|5.007003| sv_copypv_flags|5.017002|5.017002| sv_copypv_nomg|5.017002|5.017002| SV_COW_DROP_PV|5.008001|5.003007|p SV_COW_OTHER_PVS|5.009005||Viu SV_COW_REFCNT_MAX|5.017007||Viu SV_COW_SHARED_HASH_KEYS|5.009005|5.003007|poVnu SvCUR|5.003007|5.003007| SvCUR_set|5.003007|5.003007| sv_dec|5.003007|5.003007| sv_dec_nomg|5.013002|5.013002| sv_del_backref|5.006000||cViu sv_derived_from|5.004000|5.004000| sv_derived_from_pv|5.015004|5.015004| sv_derived_from_pvn|5.015004|5.015004| sv_derived_from_sv|5.015004|5.015004| sv_derived_from_svpvn|5.031006||Viu sv_destroyable|5.010000|5.010000| SvDESTROYABLE|5.010000||Viu sv_display|5.021002||Viu SV_DO_COW_SVSETSV|5.009005||Viu sv_does|5.009004|5.009004| sv_does_pv|5.015004|5.015004| sv_does_pvn|5.015004|5.015004| sv_does_sv|5.015004|5.015004| sv_dump|5.003007|5.003007| sv_dup|5.007003|5.007003|u sv_dup_common|5.013002||Viu sv_dup_inc|5.013002|5.013002|u sv_dup_inc_multiple|5.011000||Viu SvEND|5.003007|5.003007| SvEND_set|5.003007||Viu SvENDx|5.003007||Viu sv_eq|5.003007|5.003007| sv_eq_flags|5.013006|5.013006| sv_exp_grow|5.009003||Viu SVf256|5.008001||Viu SVf32|5.009002||Viu SVf|5.006000|5.003007|p SvFAKE|5.003007||Viu SvFAKE_off|5.003007||Viu SvFAKE_on|5.003007||Viu SVf_AMAGIC|5.003007||Viu SVfARG|5.009005|5.003007|p SVf_BREAK|5.003007||Viu SVf_FAKE|5.003007||Viu SVf_IOK|5.003007||Viu SVf_IsCOW|5.017006||Viu SVf_IVisUV|5.006000||Viu SvFLAGS|5.003007||Viu SVf_NOK|5.003007||Viu SVf_OK|5.003007||Viu SVf_OOK|5.003007||Viu sv_force_normal|5.006000|5.006000| sv_force_normal_flags|5.007001|5.007001| SV_FORCE_UTF8_UPGRADE|5.011000|5.011000| SVf_POK|5.003007||Viu SVf_PROTECT|5.021005||Viu SVf_READONLY|5.003007||Viu sv_free2|||xciu sv_free|5.003007|5.003007| sv_free_arenas|5.003007||Vi SVf_ROK|5.003007||Viu SVf_THINKFIRST|5.003007||Viu SVf_UTF8|5.006000|5.003007|p SvGAMAGIC|5.006001|5.006001| sv_get_backrefs|5.021008|5.021008|xn SvGETMAGIC|5.004005|5.003007|p sv_gets|5.003007|5.003007| SvGID|5.019001||Viu SV_GMAGIC|5.007002|5.003007|p SvGMAGICAL|5.003007||Viu SvGMAGICAL_off|5.003007||Viu SvGMAGICAL_on|5.003007||Viu SvGROW|5.003007|5.003007| sv_grow|5.003007||cV Sv_Grow|5.003007||Viu sv_grow_fresh|5.035006||cV SvGROW_mutable|5.009003||Viu SV_HAS_TRAILING_NUL|5.009004|5.003007|p SV_IMMEDIATE_UNREF|5.007001|5.003007|p SvIMMORTAL|5.004000||Viu SvIMMORTAL_INTERP|5.027003||Viu SvIMMORTAL_TRUE|5.027003||Viu sv_inc|5.003007|5.003007| sv_i_ncmp|5.009003||Viu sv_i_ncmp_desc|5.031011||Viu sv_inc_nomg|5.013002|5.013002| sv_insert|5.003007|5.003007| sv_insert_flags|5.010001|5.010001| SvIOK|5.003007|5.003007| SvIOK_nog|5.017002||Viu SvIOK_nogthink|5.017002||Viu SvIOK_notUV|5.006000|5.006000| SvIOK_off|5.003007|5.003007| SvIOK_on|5.003007|5.003007| SvIOK_only|5.003007|5.003007| SvIOK_only_UV|5.006000|5.006000| SvIOKp|5.003007|5.003007| SvIOKp_on|5.003007||Viu SvIOK_UV|5.006000|5.006000| sv_isa|5.003007|5.003007| sv_isa_sv|5.031007|5.031007|x SvIsBOOL|5.035004|5.035004| SvIsCOW|5.008003|5.008003| SvIsCOW_shared_hash|5.008003|5.008003| SvIS_FREED|5.009003||Viu sv_isobject|5.003007|5.003007| SvIV|5.003007|5.003007| sv_iv|5.005000||dcV SvIV_nomg|5.009001|5.003007|p SvIV_please|5.007001||Viu SvIV_please_nomg|5.013002||Viu SvIV_set|5.003007|5.003007| SvIVX|5.003007|5.003007| SvIVx|5.003007|5.003007| SvIVXx|5.003007||Viu sv_kill_backrefs|||xiu sv_len|5.003007|5.003007| SvLEN|5.003007|5.003007| SvLEN_set|5.003007|5.003007| sv_len_utf8|5.006000|5.006000|p sv_len_utf8_nomg||5.006000|p SvLENx|5.003007||Viu SvLOCK|5.007003|5.007003| sv_magic|5.003007|5.003007| SvMAGIC|5.003007||Viu SvMAGICAL|5.003007||Viu SvMAGICAL_off|5.003007||Viu SvMAGICAL_on|5.003007||Viu sv_magicext|5.007003|5.007003| sv_magicext_mglob|5.019002||cViu sv_magic_portable||5.004000|pou SvMAGIC_set|5.009003|5.003007|p sv_mortalcopy|5.003007|5.003007| sv_mortalcopy_flags|5.031001|5.003007|p SV_MUTABLE_RETURN|5.009003|5.003007|poVnu sv_ncmp|5.009003||Viu sv_ncmp_desc|5.031011||Viu sv_newmortal|5.003007|5.003007| sv_newref|5.003007||cV SvNIOK|5.003007|5.003007| SvNIOK_nog|5.017002||Viu SvNIOK_nogthink|5.017002||Viu SvNIOK_off|5.003007|5.003007| SvNIOKp|5.003007|5.003007| SvNOK|5.003007|5.003007| SvNOK_nog|5.017002||Viu SvNOK_nogthink|5.017002||Viu SvNOK_off|5.003007|5.003007| SvNOK_on|5.003007|5.003007| SvNOK_only|5.003007|5.003007| SvNOKp|5.003007|5.003007| SvNOKp_on|5.003007||Viu sv_nolocking|5.031004|5.031004|d sv_nosharing|5.007003|5.007003| SV_NOSTEAL|5.009002|5.003007|p sv_nounlocking|5.009004|5.009004|d sv_numeq|5.035009|5.035009| sv_numeq_flags|5.035009|5.035009| sv_nv|5.005000||dcV SvNV|5.006000|5.003007| SvNV_nomg|5.013002|5.003007|p SvNV_set|5.006000|5.003007| SvNVX|5.006000|5.003007| SvNVx|5.006000|5.003007| SvNVXx|5.003007||Viu SvOBJECT|5.003007||Viu SvOBJECT_off|5.003007||Viu SvOBJECT_on|5.003007||Viu SvOK|5.003007|5.003007| SvOK_off|5.003007||Viu SvOK_off_exc_UV|5.006000||Viu SvOKp|5.003007||Viu sv_only_taint_gmagic|5.021010||Vniu SvOOK|5.003007|5.003007| SvOOK_off|5.003007|5.003007| SvOOK_offset|5.011000|5.011000| SvOOK_on|5.003007||Viu sv_or_pv_len_utf8|5.017005||Viu sv_or_pv_pos_u2b|5.019004||Viu SvOURSTASH|5.009005||Viu SvOURSTASH_set|5.009005||Viu SvPADMY|5.003007||Viu SvPADMY_on|5.003007||Viu SVpad_OUR|5.006000||Viu SvPAD_OUR|5.009004||Viu SvPAD_OUR_on|5.009004||Viu SvPADSTALE|5.009000||Viu SvPADSTALE_off|5.009000||Viu SvPADSTALE_on|5.009000||Viu SVpad_STATE|5.009004||Viu SvPAD_STATE|5.009004||Viu SvPAD_STATE_on|5.009004||Viu SvPADTMP|5.003007||Viu SvPADTMP_off|5.003007||Viu SvPADTMP_on|5.003007||Viu SVpad_TYPED|5.007002||Viu SvPAD_TYPED|5.009004||Viu SvPAD_TYPED_on|5.009004||Viu SVpav_REAL|5.009003||Viu SVpav_REIFY|5.009003||Viu SvPCS_IMPORTED|5.009005||Viu SvPCS_IMPORTED_off|5.009005||Viu SvPCS_IMPORTED_on|5.009005||Viu SvPEEK|5.003007||Viu sv_peek|5.005000|5.005000|u SVpgv_GP|5.009005||Viu SVphv_CLONEABLE|5.009003||Viu SVphv_HASKFLAGS|5.008000||Viu SVphv_LAZYDEL|5.003007||Viu SVphv_SHAREKEYS|5.003007||Viu SVp_IOK|5.003007||Viu SVp_NOK|5.003007||Viu SvPOK|5.003007|5.003007| SvPOK_byte_nog|5.017002||Viu SvPOK_byte_nogthink|5.017002||Viu SvPOK_byte_pure_nogthink|5.017003||Viu SvPOK_nog|5.017002||Viu SvPOK_nogthink|5.017002||Viu SvPOK_off|5.003007|5.003007| SvPOK_on|5.003007|5.003007| SvPOK_only|5.003007|5.003007| SvPOK_only_UTF8|5.006000|5.006000| SvPOK_or_cached_IV|||Viu SvPOKp|5.003007|5.003007| SvPOKp_on|5.003007||Viu SvPOK_pure_nogthink|5.017003||Viu SvPOK_utf8_nog|5.017002||Viu SvPOK_utf8_nogthink|5.017002||Viu SvPOK_utf8_pure_nogthink|5.017003||Viu sv_pos_b2u|5.006000|5.006000| sv_pos_b2u_flags|5.019003|5.019003| sv_pos_b2u_midway|5.009004||Viu sv_pos_u2b|5.006000|5.006000| sv_pos_u2b_cached|5.009004||Viu sv_pos_u2b_flags|5.011005|5.011005| sv_pos_u2b_forwards|5.009004||Vniu sv_pos_u2b_midway|5.009004||Vniu SVp_POK|5.003007||Viu SVppv_STATIC|5.035004||Viu SVprv_PCS_IMPORTED|5.009005||Viu SVprv_WEAKREF|5.006000||Viu SVp_SCREAM|5.003007||Viu SvPV|5.003007|5.003007| sv_pv|5.008000||cV SvPVbyte|5.006000|5.003007|p sv_pvbyte|5.008000||cV SvPVbyte_force|5.009002|5.009002| sv_pvbyten|5.006000||dcV sv_pvbyten_force|5.006000||cV SvPVbyte_nolen|5.006000|5.006000| SvPVbyte_nomg|5.031004|5.031004| SvPVbyte_or_null|5.031004|5.031004| SvPVbyte_or_null_nomg|5.031004|5.031004| SvPVbytex|5.006000|5.006000| SvPVbytex_force|5.006000|5.006000| SvPVbytex_nolen|5.009003|5.009003| SvPVCLEAR|5.025006|5.025006|p SvPV_const|5.009003|5.003007|p SvPV_flags|5.007002|5.003007|p SvPV_flags_const|5.009003|5.003007|p SvPV_flags_const_nolen|5.009003||pVu SvPV_flags_mutable|5.009003|5.003007|p SvPV_force|5.003007|5.003007|p SvPV_force_flags|5.007002|5.003007|p SvPV_force_flags_mutable|5.009003|5.003007|p SvPV_force_flags_nolen|5.009003|5.003007|p SvPV_force_mutable|5.009003|5.003007|p SvPV_force_nolen|5.009003|5.003007|p SvPV_force_nomg|5.007002|5.003007|p SvPV_force_nomg_nolen|5.009003|5.003007|p SvPV_free|5.009003|5.009003| SvPV_mutable|5.009003|5.003007|p sv_pvn|5.004000||dcV sv_pvn_force|5.005000||cV sv_pvn_force_flags|5.007002|5.003007|p sv_pvn_force_nomg|5.007002||Viu sv_pvn_nomg|5.007003|5.005000|pdu SvPV_nolen|5.006000|5.003007|p SvPV_nolen_const|5.009003|5.003007|p SvPV_nomg|5.007002|5.003007|p SvPV_nomg_const|5.009003|5.003007|p SvPV_nomg_const_nolen|5.009003|5.003007|p SvPV_nomg_nolen|5.013007|5.003007|p SvPV_renew|5.009003|5.003007|p SvPV_set|5.003007|5.003007| SvPV_shrink_to_cur|5.009003||Viu SvPVutf8|5.006000|5.006000| sv_pvutf8|5.008000||cV SvPVutf8_force|5.006000|5.006000| sv_pvutf8n|5.006000||dcV sv_pvutf8n_force|5.006000||cV SvPVutf8_nolen|5.006000|5.006000| SvPVutf8_nomg|5.031004|5.031004| SvPVutf8_or_null|5.031004|5.031004| SvPVutf8_or_null_nomg|5.031004|5.031004| SvPVutf8x|5.006000|5.006000| SvPVutf8x_force|5.006000|5.006000| SvPVX|5.003007|5.003007| SvPVx|5.003007|5.003007| SvPVX_const|5.009003|5.003007|p SvPVx_const|5.009003|5.009003| SvPVx_force|5.005000|5.005000| SvPVX_mutable|5.009003|5.003007|p SvPVx_nolen|5.009003|5.009003| SvPVx_nolen_const|5.009003|5.003007|p SvPVXtrue|5.017002||Viu SvPVXx|5.003007|5.003007| SvREADONLY|5.003007|5.003007| SvREADONLY_off|5.003007|5.003007| SvREADONLY_on|5.003007|5.003007| sv_recode_to_utf8|5.007003|5.007003| sv_ref|5.023005|5.023005| SvREFCNT|5.003007|5.003007| SvREFCNT_dec|5.003007|5.003007| SvREFCNT_dec_NN|5.017007|5.017007| SvREFCNT_IMMORTAL|5.017008||Viu SvREFCNT_inc|5.003007|5.003007|pn SvREFCNT_inc_NN|5.009004|5.003007|pn SvREFCNT_inc_simple|5.009004|5.003007|pn SvREFCNT_inc_simple_NN|5.009004|5.003007|pn SvREFCNT_inc_simple_void|5.009004|5.003007|pn SvREFCNT_inc_simple_void_NN|5.009004|5.003007|pn SvREFCNT_inc_void|5.009004|5.003007|pn SvREFCNT_inc_void_NN|5.009004|5.003007|pn sv_reftype|5.003007|5.003007| sv_replace|5.003007|5.003007| sv_report_used|5.003007|5.003007| sv_reset|5.003007|5.003007| sv_resetpvn|5.017005||Viu SvRMAGICAL|5.003007||Viu SvRMAGICAL_off|5.003007||Viu SvRMAGICAL_on|5.003007||Viu SvROK|5.003007|5.003007| SvROK_off|5.003007|5.003007| SvROK_on|5.003007|5.003007| SvRV|5.003007|5.003007| SvRV_const|5.010001||Viu SvRV_set|5.009003|5.003007|p sv_rvunweaken|5.027004|5.027004| sv_rvweaken|5.006000|5.006000| SvRVx|5.003007||Viu SvRX|5.009005|5.003007|p SvRXOK|5.009005|5.003007|p SV_SAVED_COPY|5.009005||Viu SvSCREAM|5.003007||Viu SvSCREAM_off|5.003007||Viu SvSCREAM_on|5.003007||Viu sv_setbool|5.035004|5.035004| sv_setbool_mg|5.035004|5.035004| sv_setgid|5.019001||Viu sv_sethek|5.015004||cViu sv_setiv|5.003007|5.003007| sv_setiv_mg|5.004005|5.003007|p SvSETMAGIC|5.003007|5.003007| SvSetMagicSV|5.004000|5.004000| SvSetMagicSV_nosteal|5.004000|5.004000| sv_setnv|5.006000|5.003007| sv_setnv_mg|5.006000|5.003007|p sv_setpv|5.003007|5.003007| sv_setpv_bufsize|5.025006|5.025006| sv_setpvf|5.004000||vV sv_setpvf_mg|5.004005||pvV sv_setpvf_mg_nocontext|5.006000||pvVn sv_setpvf_nocontext|5.006000||vVn sv_setpviv|5.008001|5.008001|d sv_setpviv_mg|5.008001|5.008001|d sv_setpv_mg|5.004005|5.003007|p sv_setpvn|5.003007|5.003007| sv_setpvn_fresh|5.035006|5.035006| sv_setpvn_mg|5.004005|5.003007|p sv_setpvs|5.009004|5.003007|p sv_setpvs_mg|5.013006|5.013006| sv_setref_iv|5.003007|5.003007| sv_setref_nv|5.006000|5.003007| sv_setref_pv|5.003007|5.003007| sv_setref_pvn|5.003007|5.003007| sv_setref_pvs|5.013006|5.013006| sv_setref_uv|5.007001|5.007001| sv_setrv_inc|5.035004|5.035004| sv_setrv_inc_mg|5.035004|5.035004| sv_setrv_noinc|5.035004|5.035004| sv_setrv_noinc_mg|5.035004|5.035004| sv_setsv|5.003007|5.003007| SvSetSV|5.003007|5.003007| sv_setsv_cow|5.009000||xcViu sv_setsv_flags|5.007002|5.003007|p sv_setsv_mg|5.004005|5.003007|p sv_setsv_nomg|5.007002|5.003007|p SvSetSV_nosteal|5.004000|5.004000| sv_setuid|5.019001||Viu sv_set_undef|5.025008|5.025008| sv_setuv|5.004000|5.003007|p sv_setuv_mg|5.004005|5.003007|p SVs_GMG|5.003007||Viu SvSHARE|5.007003|5.007003| SvSHARED_HASH|5.009003|5.003007|p SvSHARED_HEK_FROM_PV|5.009003||Viu SV_SKIP_OVERLOAD|5.013001||Viu SV_SMAGIC|5.009003|5.003007|p SvSMAGICAL|5.003007||Viu SvSMAGICAL_off|5.003007||Viu SvSMAGICAL_on|5.003007||Viu SVs_OBJECT|5.003007||Viu SVs_PADMY|5.003007||Viu SVs_PADSTALE|5.009000|5.009000| SVs_PADTMP|5.003007||Viu SVs_RMG|5.003007||Viu SVs_SMG|5.003007||Viu SvSTASH|5.003007|5.003007| SvSTASH_set|5.009003|5.003007|p SVs_TEMP|5.003007|5.003007| sv_streq|5.035009|5.035009| sv_streq_flags|5.035009|5.035009| sv_string_from_errnum|5.027003|5.027003| SvTAIL|5.003007||Viu SvTAINT|5.003007|5.003007| sv_taint|5.009003||cV SvTAINTED|5.004000|5.004000| sv_tainted|5.004000||cV SvTAINTED_off|5.004000|5.004000| SvTAINTED_on|5.004000|5.004000| SvTEMP|5.003007||Viu SvTEMP_off|5.003007||Viu SvTEMP_on|5.003007||Viu SVt_FIRST|5.021005||Viu SvTHINKFIRST|5.003007||Vi SvTIED_mg|5.005003||Viu SvTIED_obj|5.005003|5.005003| SVt_INVLIST|||c SVt_IV|5.003007|5.003007| SVt_MASK|5.015001||Viu SVt_NULL|5.003007|5.003007| SVt_NV|5.003007|5.003007| SVt_PV|5.003007|5.003007| SVt_PVAV|5.003007|5.003007| SVt_PVBM|5.009005||Viu SVt_PVCV|5.003007|5.003007| SVt_PVFM|5.003007|5.003007| SVt_PVGV|5.003007|5.003007| SVt_PVHV|5.003007|5.003007| SVt_PVIO|5.003007|5.003007| SVt_PVIV|5.003007|5.003007| SVt_PVLV|5.003007|5.003007| SVt_PVMG|5.003007|5.003007| SVt_PVNV|5.003007|5.003007| SVt_REGEXP|5.011000|5.011000| SvTRUE|5.003007|5.003007| sv_true|5.005000||cV SvTRUE_common|5.033005||cVu SvTRUE_NN|5.017007|5.017007| SvTRUE_nomg|5.013006|5.003007|p SvTRUE_nomg_NN|5.017007|5.017007| SvTRUEx|5.003007|5.003007| SvTRUEx_nomg|5.017002||Viu SVt_RV|5.011000||Viu SvTYPE|5.003007|5.003007| SVTYPEMASK|5.003007||Viu SvUID|5.019001||Viu SV_UNDEF_RETURNS_NULL|5.011000||Viu sv_unglob|5.005000||Viu sv_uni_display|5.007003|5.007003| SvUNLOCK|5.007003|5.007003| sv_unmagic|5.003007|5.003007| sv_unmagicext|5.013008|5.003007|p sv_unref|5.003007|5.003007| sv_unref_flags|5.007001|5.007001| sv_untaint|5.004000||cV SvUOK|5.007001|5.006000|p SvUOK_nog|5.017002||Viu SvUOK_nogthink|5.017002||Viu sv_upgrade|5.003007|5.003007| SvUPGRADE|5.003007|5.003007| sv_usepvn|5.003007|5.003007| sv_usepvn_flags|5.009004|5.009004| sv_usepvn_mg|5.004005|5.003007|p SvUTF8|5.006000|5.003007|p sv_utf8_decode|5.006000|5.006000| sv_utf8_downgrade|5.006000|5.006000| sv_utf8_downgrade_flags|5.031004|5.031004| sv_utf8_downgrade_nomg|5.031004|5.031004| sv_utf8_encode|5.006000|5.006000| SV_UTF8_NO_ENCODING|5.008001|5.003007|pd SvUTF8_off|5.006000|5.006000| SvUTF8_on|5.006000|5.006000| sv_utf8_upgrade|5.007001|5.007001| sv_utf8_upgrade_flags|5.007002|5.007002| sv_utf8_upgrade_flags_grow|5.011000|5.011000| sv_utf8_upgrade_nomg|5.007002|5.007002| SvUV|5.004000|5.003007|p sv_uv|5.005000||pdcV SvUV_nomg|5.009001|5.003007|p SvUV_set|5.009003|5.003007|p SvUVX|5.004000|5.003007|p SvUVx|5.004000|5.003007|p SvUVXx|5.004000|5.003007|pd SvVALID|5.003007||Viu sv_vcatpvf|5.006000|5.004000|p sv_vcatpvf_mg|5.006000|5.004000|p sv_vcatpvfn|5.004000|5.004000| sv_vcatpvfn_flags|5.017002|5.017002| SvVOK|5.008001|5.008001| sv_vsetpvf|5.006000|5.004000|p sv_vsetpvf_mg|5.006000|5.004000|p sv_vsetpvfn|5.004000|5.004000| SvVSTRING_mg|5.009004|5.003007|p SvWEAKREF|5.006000||Viu SvWEAKREF_off|5.006000||Viu SvWEAKREF_on|5.006000||Viu swallow_bom|5.006001||Viu switch_category_locale_to_template|5.027009||Viu SWITCHSTACK|5.003007||Viu switch_to_global_locale|5.027009|5.003007|pn sync_locale|5.027009|5.003007|pn sys_init3|||cnu sys_init|||cnu sys_intern_clear|5.006001||Vu sys_intern_dup|5.006000||Vu sys_intern_init|5.006001||Vu SYSTEM_GMTIME_MAX|5.011000||Viu SYSTEM_GMTIME_MIN|5.011000||Viu SYSTEM_LOCALTIME_MAX|5.011000||Viu SYSTEM_LOCALTIME_MIN|5.011000||Viu sys_term|||cnu TAIL|5.005000||Viu TAIL_t8|5.035004||Viu TAIL_t8_p8|5.033003||Viu TAIL_t8_pb|5.033003||Viu TAIL_tb|5.035004||Viu TAIL_tb_p8|5.033003||Viu TAIL_tb_pb|5.033003||Viu TAINT|5.004000||Viu taint_env|5.003007|5.003007|u TAINT_ENV|5.003007||Viu TAINT_get|5.017006||Viu TAINT_IF|5.003007||Viu TAINTING_get|5.017006||Viu TAINTING_set|5.017006||Viu TAINT_NOT|5.003007||Viu taint_proper|5.003007|5.003007|u TAINT_PROPER|5.003007||Viu TAINT_set|5.017006||Viu TAINT_WARN_get|5.017006||Viu TAINT_WARN_set|5.017006||Viu TARG|5.003007|5.003007| TARGi|5.023005||Viu TARGn|5.023005||Viu TARGu|5.023005||Viu telldir|5.005000||Viu T_FMT|5.027010||Viu T_FMT_AMPM|5.027010||Viu THIS|5.003007|5.003007|V THOUSEP|5.027010||Viu THR|5.005000||Viu THREAD_CREATE_NEEDS_STACK|5.007002||Viu thread_locale_init|5.027009|5.027009|xnu thread_locale_term|5.027009|5.027009|xnu THREAD_RET_TYPE|5.005000||Viu tied_method|5.013009||vViu TIED_METHOD_ARGUMENTS_ON_STACK|5.013009||Viu TIED_METHOD_MORTALIZE_NOT_NEEDED|5.013009||Viu TIED_METHOD_SAY|5.013009||Viu times|5.005000||Viu Time_t|5.003007|5.003007|Vn Timeval|5.004000|5.004000|Vn TM|5.011000||Viu tmpfile|5.003007||Viu tmpnam|5.005000||Viu TMPNAM_R_PROTO|5.008000|5.008000|Vn tmps_grow_p|5.021005||cViu to_byte_substr|5.008000||Viu to_case_cp_list|5.035004||Viu toCTRL|5.004000||Viu toFOLD|5.019001|5.019001| toFOLD_A|5.019001|5.019001| _to_fold_latin1|5.015005||cVniu toFOLD_LC|5.019001||Viu toFOLD_uni|5.007003||Viu toFOLD_utf8|5.031005|5.031005| toFOLD_utf8_safe|5.025009|5.006000|p toFOLD_uvchr|5.023009|5.006000|p TO_INTERNAL_SIZE|5.023002||Viu tokenize_use|5.009003||Viu tokeq|5.005000||Viu tokereport|5.007001||Viu toLOWER|5.003007|5.003007| toLOWER_A|5.019001|5.019001| toLOWER_L1|5.019001|5.019001| toLOWER_LATIN1|5.013006|5.011002| to_lower_latin1|5.015005||Vniu toLOWER_LC|5.004000|5.004000| toLOWER_uni|5.006000||Viu toLOWER_utf8|5.031005|5.031005| toLOWER_utf8_safe|5.025009|5.006000|p toLOWER_uvchr|5.023009|5.006000|p too_few_arguments_pv|5.016000||Viu TOO_LATE_FOR|5.008001||Viu too_many_arguments_pv|5.016000||Viu TOPi|5.003007||Viu TOPl|5.003007||Viu TOPm1s|5.007001||Viu TOPMARK|5.003007||cViu TOPn|5.003007||Viu TOPp1s|5.007001||Viu TOPp|5.003007||Viu TOPpx|5.005003||Viu TOPs|5.003007||Viu TOPu|5.004000||Viu TOPul|5.006000||Viu toTITLE|5.019001|5.019001| toTITLE_A|5.019001|5.019001| toTITLE_uni|5.006000||Viu toTITLE_utf8|5.031005|5.031005| toTITLE_utf8_safe|5.025009|5.006000|p toTITLE_uvchr|5.023009|5.006000|p to_uni_fold|5.014000||cVu _to_uni_fold_flags|5.014000||cVu to_uni_lower|5.006000||cVu to_uni_title|5.006000||cVu to_uni_upper|5.006000||cVu toUPPER|5.003007|5.003007| toUPPER_A|5.019001|5.019001| toUPPER_LATIN1_MOD|5.011002||Viu toUPPER_LC|5.004000||Viu _to_upper_title_latin1|5.015005||Viu toUPPER_uni|5.006000||Viu toUPPER_utf8|5.031005|5.031005| toUPPER_utf8_safe|5.025009|5.006000|p toUPPER_uvchr|5.023009|5.006000|p _to_utf8_case|5.023006||Viu _to_utf8_fold_flags|5.014000||cVu _to_utf8_lower_flags|5.015006||cVu to_utf8_substr|5.008000||Viu _to_utf8_title_flags|5.015006||cVu _to_utf8_upper_flags|5.015006||cVu translate_substr_offsets|5.015006||Vniu traverse_op_tree|5.029008||Vi TR_DELETE|5.031006||Viu TRIE|5.009002||Viu TRIE_BITMAP|5.009004||Viu TRIE_BITMAP_BYTE|5.009004||Viu TRIE_BITMAP_CLEAR|5.009004||Viu TRIE_BITMAP_SET|5.009004||Viu TRIE_BITMAP_TEST|5.009004||Viu TRIEC|5.009004||Viu TRIE_CHARCOUNT|5.009004||Viu TRIEC_t8|5.035004||Viu TRIEC_t8_p8|5.033003||Viu TRIEC_t8_pb|5.033003||Viu TRIEC_tb|5.035004||Viu TRIEC_tb_p8|5.033003||Viu TRIEC_tb_pb|5.033003||Viu TRIE_next|5.009005||Viu TRIE_next_fail|5.009005||Viu TRIE_next_fail_t8|5.035004||Viu TRIE_next_fail_t8_p8|5.033003||Viu TRIE_next_fail_t8_pb|5.033003||Viu TRIE_next_fail_tb|5.035004||Viu TRIE_next_fail_tb_p8|5.033003||Viu TRIE_next_fail_tb_pb|5.033003||Viu TRIE_next_t8|5.035004||Viu TRIE_next_t8_p8|5.033003||Viu TRIE_next_t8_pb|5.033003||Viu TRIE_next_tb|5.035004||Viu TRIE_next_tb_p8|5.033003||Viu TRIE_next_tb_pb|5.033003||Viu TRIE_NODEIDX|5.009002||Viu TRIE_NODENUM|5.009002||Viu TRIE_t8|5.035004||Viu TRIE_t8_p8|5.033003||Viu TRIE_t8_pb|5.033003||Viu TRIE_tb|5.035004||Viu TRIE_tb_p8|5.033003||Viu TRIE_tb_pb|5.033003||Viu TRIE_WORDS_OFFSET|5.009005||Viu TR_OOB|5.031006||Viu TR_R_EMPTY|5.031006||Viu TR_SPECIAL_HANDLING|5.031006||Viu TRUE|5.003007||Viu truncate|5.006000||Viu TR_UNLISTED|5.031006||Viu TR_UNMAPPED|5.031006||Viu try_amagic_bin|||ciu tryAMAGICbin_MG|5.013002||Viu try_amagic_un|||ciu tryAMAGICunDEREF|5.006000||Viu tryAMAGICun_MG|5.013002||Viu tryAMAGICunTARGETlist|5.017002||Viu TS_W32_BROKEN_LOCALECONV|5.027010||Viu tTHX|5.009003||Viu ttyname|5.009000||Viu TTYNAME_R_PROTO|5.008000|5.008000|Vn turkic_fc|5.029008||Viu turkic_lc|5.029008||Viu turkic_uc|5.029008||Viu TWO_BYTE_UTF8_TO_NATIVE|5.019004||Viu TWO_BYTE_UTF8_TO_UNI|5.013008||Viu TYPE_CHARS|5.004000||Viu TYPE_DIGITS|5.004000||Viu U16|5.027001||Viu U16_MAX|5.003007||Viu U16_MIN|5.003007||Viu U16SIZE|5.006000|5.006000|Vn U16TYPE|5.006000|5.006000|Vn U_32|5.007002|5.007002| U32|5.027001||Viu U32_ALIGNMENT_REQUIRED|5.007001|5.007001|Vn U32_MAX|5.003007||Viu U32_MAX_P1|5.007002||Viu U32_MAX_P1_HALF|5.007002||Viu U32_MIN|5.003007||Viu U32SIZE|5.006000|5.006000|Vn U32TYPE|5.006000|5.006000|Vn U64|5.023002||Viu U64SIZE|5.006000|5.006000|Vn U64TYPE|5.006000|5.006000|Vn U8|5.027001||Viu U8_MAX|5.003007||Viu U8_MIN|5.003007||Viu U8SIZE|5.006000|5.006000|Vn U8TO16_LE|5.017010||Viu U8TO32_LE|5.017010||Viu U8TO64_LE|5.017006||Viu U8TYPE|5.006000|5.006000|Vn UCHARAT|5.003007||Viu U_I|5.003007||Viu Uid_t|5.003007|5.003007|Vn Uid_t_f|5.006000|5.006000|Vn Uid_t_sign|5.006000|5.006000|Vn Uid_t_size|5.006000|5.006000|Vn UINT16_C|5.003007|5.003007| UINT32_C|5.003007|5.003007| UINT32_MIN|5.006000||Viu UINT64_C|5.023002|5.023002| UINT64_MIN|5.006000||Viu UINTMAX_C|5.003007|5.003007| uiv_2buf|5.009003||Vniu U_L|5.003007||Viu umask|5.005000||Viu uname|5.005004||Viu UNDERBAR|5.009002|5.003007|p unexpected_non_continuation_text|5.025006||Viu ungetc|5.003007||Viu UNI_age_values_index|5.029009||Viu UNI_AHEX|5.029002||Viu UNI_ahex_values_index|5.029009||Viu UNI_ALNUM|5.029002||Viu UNI_ALPHA|5.029002||Viu UNI_ALPHABETIC|5.029002||Viu UNI_alpha_values_index|5.029009||Viu UNI_ASCIIHEXDIGIT|5.029002||Viu UNI_BASICLATIN|5.029002||Viu UNI_bc_values_index|5.029009||Viu UNI_bidic_values_index|5.029009||Viu UNI_bidim_values_index|5.029009||Viu UNI_BLANK|5.029002||Viu UNI_blk_values_index|5.029009||Viu UNI_bpt_values_index|5.029009||Viu UNI_cased_values_index|5.029009||Viu UNI_CC|5.029002||Viu UNI_ccc_values_index|5.029009||Viu UNI_ce_values_index|5.029009||Viu UNI_ci_values_index|5.029009||Viu UNI_CNTRL|5.029002||Viu UNICODE_ALLOW_ABOVE_IV_MAX|5.031006||Viu UNICODE_ALLOW_ANY|5.007003||Viu UNICODE_ALLOW_SUPER|5.007003||Viu UNICODE_ALLOW_SURROGATE|5.007003||Viu UNICODE_BYTE_ORDER_MARK|5.008000||Viu UNICODE_DISALLOW_ABOVE_31_BIT|5.023006|5.023006| UNICODE_DISALLOW_ILLEGAL_C9_INTERCHANGE|5.025005|5.025005| UNICODE_DISALLOW_ILLEGAL_INTERCHANGE|5.013009|5.013009| UNICODE_DISALLOW_NONCHAR|5.013009|5.013009| UNICODE_DISALLOW_PERL_EXTENDED|5.027002|5.027002| UNICODE_DISALLOW_SUPER|5.013009|5.013009| UNICODE_DISALLOW_SURROGATE|5.013009|5.013009| UNICODE_DOT_DOT_VERSION|5.023002||Viu UNICODE_DOT_VERSION|5.023002||Viu UNICODE_GOT_NONCHAR|5.027009||Viu UNICODE_GOT_PERL_EXTENDED|5.027009||Viu UNICODE_GOT_SUPER|5.027009||Viu UNICODE_GOT_SURROGATE|5.027009||Viu UNICODE_GREEK_CAPITAL_LETTER_SIGMA|5.007003||Viu UNICODE_GREEK_SMALL_LETTER_FINAL_SIGMA|5.007003||Viu UNICODE_GREEK_SMALL_LETTER_SIGMA|5.007003||Viu UNICODE_IS_32_CONTIGUOUS_NONCHARS|5.023006||Viu UNICODE_IS_BYTE_ORDER_MARK|5.007001||Viu UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER|5.023006||Viu UNICODE_IS_NONCHAR|5.013009|5.013009| UNICODE_IS_PERL_EXTENDED|5.027002||Viu UNICODE_IS_REPLACEMENT|5.007002|5.007002| UNICODE_IS_SUPER|5.013009|5.013009| UNICODE_IS_SURROGATE|5.007001|5.007001| UNICODE_MAJOR_VERSION|5.023002||Viu UNICODE_PAT_MOD|5.013006||Viu UNICODE_PAT_MODS|5.013006||Viu UNICODE_REPLACEMENT|5.007001|5.003007|p UNICODE_SURROGATE_FIRST|5.007001||Viu UNICODE_SURROGATE_LAST|5.007001||Viu UNICODE_WARN_ABOVE_31_BIT|5.023006|5.023006| UNICODE_WARN_ILLEGAL_C9_INTERCHANGE|5.025005|5.025005| UNICODE_WARN_ILLEGAL_INTERCHANGE|5.013009|5.013009| UNICODE_WARN_NONCHAR|5.013009|5.013009| UNICODE_WARN_PERL_EXTENDED|5.027002|5.027002| UNICODE_WARN_SUPER|5.013009|5.013009| UNICODE_WARN_SURROGATE|5.013009|5.013009| UNI_compex_values_index|5.029009||Viu UNI_CONTROL|5.029002||Viu UNI_cwcf_values_index|5.029009||Viu UNI_cwcm_values_index|5.029009||Viu UNI_cwkcf_values_index|5.029009||Viu UNI_cwl_values_index|5.029009||Viu UNI_cwt_values_index|5.029009||Viu UNI_cwu_values_index|5.029009||Viu UNI_dash_values_index|5.029009||Viu UNI_DECIMALNUMBER|5.029002||Viu UNI_dep_values_index|5.029009||Viu UNI_dia_values_index|5.029009||Viu UNI_DIGIT|5.029002||Viu UNI_DISPLAY_BACKSLASH|5.007003|5.007003| UNI_DISPLAY_BACKSPACE|5.031009|5.031009| UNI_DISPLAY_ISPRINT|5.007003|5.007003| UNI_DISPLAY_QQ|5.007003|5.007003| UNI_DISPLAY_REGEX|5.007003|5.007003| UNI_di_values_index|5.029009||Viu UNI_dt_values_index|5.029009||Viu UNI_ea_values_index|5.029009||Viu UNI_ebase_values_index|5.031010||Viu UNI_ecomp_values_index|5.031010||Viu UNI_emod_values_index|5.031010||Viu UNI_emoji_values_index|5.031010||Viu UNI_epres_values_index|5.031010||Viu UNI_extpict_values_index|5.031010||Viu UNI_ext_values_index|5.029009||Viu UNI_gcb_values_index|5.029009||Viu UNI_gc_values_index|5.029009||Viu UNI_GRAPH|5.029002||Viu UNI_grbase_values_index|5.029009||Viu UNI_grext_values_index|5.029009||Viu UNI_HEX|5.029002||Viu UNI_HEXDIGIT|5.029002||Viu UNI_hex_values_index|5.029009||Viu UNI_HORIZSPACE|5.029002||Viu UNI_hst_values_index|5.029009||Viu UNI_HYPHEN|5.029002||Viu UNI_hyphen_values_index|5.029009||Viu UNI_idc_values_index|5.029009||Viu UNI_identifierstatus_values_index|5.031010||Viu UNI_identifiertype_values_index|5.031010||Viu UNI_ideo_values_index|5.029009||Viu UNI_idsb_values_index|5.029009||Viu UNI_idst_values_index|5.029009||Viu UNI_ids_values_index|5.029009||Viu UNI_inpc_values_index|5.029009||Viu UNI_insc_values_index|5.029009||Viu UNI_in_values_index|5.029009||Viu UNI_IS_INVARIANT|5.007001||Viu UNI_jg_values_index|5.029009||Viu UNI_joinc_values_index|5.029009||Viu UNI_jt_values_index|5.029009||Viu UNI_L|5.029002||Viu UNI_L_AMP|5.029002||Viu UNI_LB__SG|5.029002||Viu UNI_lb_values_index|5.029009||Viu UNI_LC|5.029002||Viu UNI_LL|5.029002||Viu UNI_loe_values_index|5.029009||Viu UNI_LOWER|5.029002||Viu UNI_LOWERCASE|5.029002||Viu UNI_lower_values_index|5.029009||Viu UNI_LT|5.029002||Viu UNI_LU|5.029002||Viu UNI_math_values_index|5.029009||Viu UNI_nchar_values_index|5.029009||Viu UNI_ND|5.029002||Viu UNI_nfcqc_values_index|5.029009||Viu UNI_nfdqc_values_index|5.029009||Viu UNI_nfkcqc_values_index|5.029009||Viu UNI_nfkdqc_values_index|5.029009||Viu UNI_nt_values_index|5.029009||Viu UNI_nv_values_index|5.029009||Viu UNI_patsyn_values_index|5.029009||Viu UNI_patws_values_index|5.029009||Viu UNI_pcm_values_index|5.029009||Viu UNI_PERLSPACE|5.029002||Viu UNI_PERLWORD|5.029002||Viu UNI_PRINT|5.029002||Viu UNI_qmark_values_index|5.029009||Viu UNI_radical_values_index|5.029009||Viu UNI_ri_values_index|5.029009||Viu UNI_sb_values_index|5.029009||Viu UNI_sc_values_index|5.029009||Viu UNI_scx_values_index|5.029009||Viu UNI_sd_values_index|5.029009||Viu UNISKIP|5.007001||Viu UNISKIP_BY_MSB|5.035004||Viu UNI_SPACE|5.029002||Viu UNI_SPACEPERL|5.029002||Viu UNI_sterm_values_index|5.029009||Viu UNI_term_values_index|5.029009||Viu UNI_TITLECASE|5.029002||Viu UNI_TITLECASELETTER|5.029002||Viu UNI_TO_NATIVE|5.007001|5.003007|p UNI_uideo_values_index|5.029009||Viu UNI_UPPER|5.029002||Viu UNI_UPPERCASE|5.029002||Viu UNI_upper_values_index|5.029009||Viu UNI_vo_values_index|5.029009||Viu UNI_vs_values_index|5.029009||Viu UNI_wb_values_index|5.029009||Viu UNI_WHITESPACE|5.029002||Viu UNI_WORD|5.029002||Viu UNI_WSPACE|5.029002||Viu UNI_wspace_values_index|5.029009||Viu UNI_XDIGIT|5.029002||Viu UNI_xidc_values_index|5.029009||Viu UNI_xids_values_index|5.029009||Viu UNI_XPERLSPACE|5.029002||Viu UNKNOWN_ERRNO_MSG|5.019007||Viu UNLESSM|5.003007||Viu UNLESSM_t8|5.035004||Viu UNLESSM_t8_p8|5.033003||Viu UNLESSM_t8_pb|5.033003||Viu UNLESSM_tb|5.035004||Viu UNLESSM_tb_p8|5.033003||Viu UNLESSM_tb_pb|5.033003||Viu UNLIKELY|5.009004|5.003007|p UNLINK|5.003007||Viu unlink|5.005000||Viu unlnk|5.003007||cVu UNLOCK_DOLLARZERO_MUTEX|5.008001||Viu UNLOCK_LC_NUMERIC_STANDARD|5.021010||poVnu UNLOCK_NUMERIC_STANDARD|||piu UNOP_AUX_item_sv|5.021007||Viu unpack_rec|5.008001||Viu unpack_str|5.007003|5.007003|d unpackstring|5.008001|5.008001| unpackWARN1|5.007003||Viu unpackWARN2|5.007003||Viu unpackWARN3|5.007003||Viu unpackWARN4|5.007003||Viu unreferenced_to_tmp_stack|5.013002||Viu unshare_hek|5.004000||Viu unshare_hek_or_pvn|5.008000||Viu unsharepvn|5.003007|5.003007|u unwind_handler_stack|5.009003||Viu update_debugger_info|5.009005||Viu upg_version|5.009005|5.009005| UPG_VERSION|5.019008||Viu uproot_SV|||Viu Uquad_t|5.006000|5.006000|Vn U_S|5.003007||Viu usage|5.005000||Viu USE_64_BIT_ALL|5.006000|5.006000|Vn USE_64_BIT_INT|5.006000|5.006000|Vn USE_64_BIT_RAWIO|5.006000||Viu USE_64_BIT_STDIO|5.006000||Viu USE_BSDPGRP|5.003007||Viu USE_C_BACKTRACE|5.035009|5.035009|Vn USE_DYNAMIC_LOADING|5.003007|5.003007|Vn USE_ENVIRON_ARRAY|5.007001||Viu USE_GRENT_BUFFER|5.008000||Viu USE_GRENT_FPTR|5.008000||Viu USE_GRENT_PTR|5.008000||Viu USE_HASH_SEED|5.008001||Viu USE_HOSTENT_BUFFER|5.008000||Viu USE_HOSTENT_ERRNO|5.008000||Viu USE_HOSTENT_PTR|5.008000||Viu USE_ITHREADS|5.010000|5.010000|Vn USE_LARGE_FILES|5.006000|5.006000|Vn USE_LEFT|5.004000||Viu USE_LOCALE|5.004000||Viu USE_LOCALE_ADDRESS|5.027009||Viu USE_LOCALE_COLLATE|5.004000||Viu USE_LOCALE_CTYPE|5.004000||Viu USE_LOCALE_IDENTIFICATION|5.027009||Viu USE_LOCALE_MEASUREMENT|5.027009||Viu USE_LOCALE_MESSAGES|5.019002||Viu USE_LOCALE_MONETARY|5.019002||Viu USE_LOCALE_NUMERIC|5.004000||Viu USE_LOCALE_PAPER|5.027009||Viu USE_LOCALE_SYNTAX|5.033001||Viu USE_LOCALE_TELEPHONE|5.027009||Viu USE_LOCALE_TIME|5.021002||Viu USE_LOCALE_TOD|5.033001||Viu USEMYBINMODE|5.006000||Viu USE_NETENT_BUFFER|5.008000||Viu USE_NETENT_ERRNO|5.008000||Viu USE_NETENT_PTR|5.008000||Viu USE_PERL_ATOF|5.008000||Viu USE_PERLIO|5.007001|5.007001|Vn USE_PERL_PERTURB_KEYS|5.018000||Viu USE_POSIX_2008_LOCALE|5.027003||Viu USE_PROTOENT_BUFFER|5.008000||Viu USE_PROTOENT_PTR|5.008000||Viu USE_PWENT_BUFFER|5.008000||Viu USE_PWENT_FPTR|5.008000||Viu USE_PWENT_PTR|5.008000||Viu USE_REENTRANT_API|5.007003||Viu USER_PROP_MUTEX_INIT|5.029008||Viu USER_PROP_MUTEX_LOCK|5.029008||Viu USER_PROP_MUTEX_TERM|5.029008||Viu USER_PROP_MUTEX_UNLOCK|5.029008||Viu USE_SEMCTL_SEMID_DS|5.004005|5.004005|Vn USE_SEMCTL_SEMUN|5.004005|5.004005|Vn USE_SERVENT_BUFFER|5.008000||Viu USE_SERVENT_PTR|5.008000||Viu USE_SPENT_BUFFER|5.031011||Viu USE_SPENT_PTR|5.008000||Viu USE_STAT_BLOCKS|5.005003|5.005003|Vn USE_STAT_RDEV|5.003007||Viu USE_STDIO|5.003007||Viu USE_STDIO_BASE|5.006000|5.006000|Vn USE_STDIO_PTR|5.006000|5.006000|Vn USE_SYSTEM_GMTIME|5.011000||Viu USE_SYSTEM_LOCALTIME|5.011000||Viu USE_THREADS|5.006000|5.006000|Vn USE_THREAD_SAFE_LOCALE|5.025004||Viu USE_TM64|5.011000||Viu USE_UTF8_IN_NAMES|5.007003||Viu utf16_textfilter|5.011001||Viu utf16_to_utf8|5.035004||cViu utf16_to_utf8_base|5.035004||cViu utf16_to_utf8_reversed|5.035004||cViu UTF8_ACCUMULATE|5.007001||Viu UTF8_ALLOW_ANY|5.007001||Viu UTF8_ALLOW_ANYUV|5.007001||Viu UTF8_ALLOW_CONTINUATION|5.007001||Viu UTF8_ALLOW_DEFAULT|5.009004||Viu UTF8_ALLOW_EMPTY|5.007001||Viu UTF8_ALLOW_FE_FF|5.027009||Viu UTF8_ALLOW_FFFF|5.007001||Viu UTF8_ALLOW_LONG|5.007001||Viu UTF8_ALLOW_LONG_AND_ITS_VALUE|5.025009||Viu UTF8_ALLOW_NON_CONTINUATION|5.007001||Viu UTF8_ALLOW_OVERFLOW|5.025009||Viu UTF8_ALLOW_SHORT|5.007001||Viu UTF8_ALLOW_SURROGATE|5.007001||Viu UTF8_CHECK_ONLY|5.007001|5.007001| UTF8_CHK_SKIP|5.031006|5.006000|p UTF8_DISALLOW_ABOVE_31_BIT|5.023006||Viu UTF8_DISALLOW_FE_FF|5.013009||Viu UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE|5.025005|5.025005| UTF8_DISALLOW_ILLEGAL_INTERCHANGE|5.013009|5.013009| UTF8_DISALLOW_NONCHAR|5.013009|5.013009| UTF8_DISALLOW_PERL_EXTENDED|5.027002|5.027002| UTF8_DISALLOW_SUPER|5.013009|5.013009| UTF8_DISALLOW_SURROGATE|5.013009|5.013009| utf8_distance|5.006000|5.006000| UTF8_EIGHT_BIT_HI|5.007001||Viu UTF8_EIGHT_BIT_LO|5.007001||Viu UTF8f|5.019001|5.003007|p UTF8fARG|5.019002|5.003007|p UTF8_GOT_ABOVE_31_BIT|5.025006||Viu UTF8_GOT_CONTINUATION|5.025006|5.025006| UTF8_GOT_EMPTY|5.025006|5.025006| UTF8_GOT_LONG|5.025006|5.025006| UTF8_GOT_NONCHAR|5.025006|5.025006| UTF8_GOT_NON_CONTINUATION|5.025006|5.025006| UTF8_GOT_OVERFLOW|5.025006|5.025006| UTF8_GOT_PERL_EXTENDED|5.027002|5.027002| UTF8_GOT_SHORT|5.025006|5.025006| UTF8_GOT_SUPER|5.025006|5.025006| UTF8_GOT_SURROGATE|5.025006|5.025006| utf8_hop|5.006000|5.006000|n utf8_hop_back|5.025007|5.025007|n utf8_hop_forward|5.025007|5.025007|n utf8_hop_safe|5.025007|5.025007|n UTF8_IS_ABOVE_LATIN1|5.017004||Viu UTF8_IS_ABOVE_LATIN1_START|5.023003||Viu UTF8_IS_CONTINUATION|5.007001||Viu UTF8_IS_CONTINUED|5.007001||Viu UTF8_IS_DOWNGRADEABLE_START|5.007001||Viu UTF8_IS_INVARIANT|5.007001|5.003007|p UTF8_IS_NEXT_CHAR_DOWNGRADEABLE|5.017006||Viu UTF8_IS_NONCHAR|5.023002|5.023002| UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC|5.013009||Viu UTF8_IS_PERL_EXTENDED|5.035004||Viu UTF8_IS_REPLACEMENT||| UTF8_IS_START|5.007001||Viu UTF8_IS_START_base|5.031007||Viu UTF8_IS_SUPER|5.023002|5.023002| UTF8_IS_SURROGATE|5.023002|5.023002| utf8_length|5.007001|5.007001| UTF8_MAXBYTES|5.009002|5.006000|p UTF8_MAXBYTES_CASE|5.009002|5.003007|p UTF8_MAX_FOLD_CHAR_EXPAND|5.013009||Viu UTF8_MAXLEN|5.006000||Viu utf8_mg_len_cache_update|5.013003||Viu utf8_mg_pos_cache_update|5.009004||Viu utf8n_to_uvchr|5.007001|5.007001|n utf8n_to_uvchr_error|5.025006|5.025006|n utf8n_to_uvchr_msgs|5.027009|5.027009|n _utf8n_to_uvchr_msgs_helper|5.029001||cVnu utf8n_to_uvuni|5.007001||dcV UTF8_SAFE_SKIP|5.029009|5.006000|p UTF8SKIP|5.006000|5.006000| UTF8_SKIP|5.023002|5.006000|p utf8_to_bytes|5.006001|5.006001|x utf8_to_utf16|5.035004||Viu utf8_to_utf16_base|5.035004||xcViu utf8_to_utf16_reversed|5.035004||Viu utf8_to_uvchr|5.007001|5.006001|pd utf8_to_uvchr_buf|5.015009|5.006001|p utf8_to_uvchr_buf_helper|5.031004||cVu utf8_to_uvuni|5.007001||dcV utf8_to_uvuni_buf|5.015009||dcV UTF8_TWO_BYTE_HI|5.011002||Viu UTF8_TWO_BYTE_HI_nocast|5.011002||Viu UTF8_TWO_BYTE_LO|5.011002||Viu UTF8_TWO_BYTE_LO_nocast|5.011002||Viu UTF8_WARN_ABOVE_31_BIT|5.023006||Viu UTF8_WARN_FE_FF|5.013009||Viu UTF8_WARN_ILLEGAL_C9_INTERCHANGE|5.025005|5.025005| UTF8_WARN_ILLEGAL_INTERCHANGE|5.013009|5.013009| UTF8_WARN_NONCHAR|5.013009|5.013009| UTF8_WARN_PERL_EXTENDED|5.027002|5.027002| UTF8_WARN_SUPER|5.013009|5.013009| UTF8_WARN_SURROGATE|5.013009|5.013009| UTF_ACCUMULATION_SHIFT|5.007001||Viu UTF_CONTINUATION_BYTE_INFO_BITS|5.035004||Viu UTF_CONTINUATION_MARK|5.007001||Viu UTF_CONTINUATION_MASK|5.007001||Viu UTF_EBCDIC_CONTINUATION_BYTE_INFO_BITS|5.035004||Viu UTF_FIRST_CONT_BYTE_110000|5.035004||Viu UTF_FIRST_CONT_BYTE|5.035004||Viu UTF_IS_CONTINUATION_MASK|5.023006||Viu UTF_MIN_ABOVE_LATIN1_BYTE|5.031006||Viu UTF_MIN_CONTINUATION_BYTE|5.035004||Viu UTF_MIN_START_BYTE|5.031006||Viu UTF_START_BYTE_110000|5.035004||Viu UTF_START_BYTE|5.035004||Viu UTF_START_MARK|5.007001||Viu UTF_START_MASK|5.007001||Viu UTF_TO_NATIVE|5.007001||Viu utilize|5.003007||Viu utime|5.005000||Viu U_V|5.006000|5.003007| UVCHR_IS_INVARIANT|5.019004|5.003007|p UVCHR_SKIP|5.022000|5.003007|p uvchr_to_utf8|5.007001|5.007001| uvchr_to_utf8_flags|5.007003|5.007003| uvchr_to_utf8_flags_msgs|5.027009|5.027009| UV_DIG|5.006000||Viu UVf|5.010000|5.010000|d UV_IS_QUAD|5.006000||Viu UV_MAX|5.003007|5.003007| UV_MAX_P1|5.007002||Viu UV_MAX_P1_HALF|5.007002||Viu UV_MIN|5.003007|5.003007| UVof|5.006000|5.003007|poVn uvoffuni_to_utf8_flags|5.027009||cV uvoffuni_to_utf8_flags_msgs|5.027009||cVu UVSIZE|5.006000|5.003007|poVn UVTYPE|5.006000|5.003007|poVn UVuf|5.006000|5.003007|poVn uvuni_to_utf8|5.019004||cVu uvuni_to_utf8_flags|5.007003||dcV UVxf|5.006000|5.003007|poVn UVXf|5.007001|5.007001|poVn VAL_EAGAIN|5.003007|5.003007|Vn validate_proto|5.019002||xcVi validate_suid|||iu valid_utf8_to_uvchr|5.015009||cVn valid_utf8_to_uvuni|5.015009||dcVu VAL_O_NONBLOCK|5.003007|5.003007|Vn variant_byte_number|5.031004||cVnu variant_under_utf8_count|5.027007||Vni varname|5.009003||Viu vcmp|5.009000|5.009000| VCMP|5.019008||Viu vcroak|5.006000|5.006000| vdeb|5.007003|5.007003|u VERB|5.009005||Viu VERB_t8|5.035004||Viu VERB_t8_p8|5.033003||Viu VERB_t8_pb|5.033003||Viu VERB_tb|5.035004||Viu VERB_tb_p8|5.033003||Viu VERB_tb_pb|5.033003||Viu vform|5.006000|5.006000| vfprintf|5.003007||Viu visit|5.005000||Viu vivify_defelem|5.004000||cViu vivify_ref|5.004000||Viu vload_module|5.006000|5.003007|p vmess|5.006000|5.004000|p vnewSVpvf|5.006000|5.004000|p vnormal|5.009002|5.009002| VNORMAL|5.019008||Viu vnumify|5.009000|5.009000| VNUMIFY|5.019008||Viu voidnonfinal|5.035002||Viu VOL|5.003007||Viu vstringify|5.009000|5.009000| VSTRINGIFY|5.019008||Viu VTBL_amagic|5.005003||Viu VTBL_amagicelem|5.005003||Viu VTBL_arylen|5.005003||Viu VTBL_bm|5.005003||Viu VTBL_collxfrm|5.005003||Viu VTBL_dbline|5.005003||Viu VTBL_defelem|5.005003||Viu VTBL_env|5.005003||Viu VTBL_envelem|5.005003||Viu VTBL_fm|5.005003||Viu VTBL_glob|5.005003||Viu VTBL_isa|5.005003||Viu VTBL_isaelem|5.005003||Viu VTBL_mglob|5.005003||Viu VTBL_nkeys|5.005003||Viu VTBL_pack|5.005003||Viu VTBL_packelem|5.005003||Viu VTBL_pos|5.005003||Viu VTBL_regdata|5.006000||Viu VTBL_regdatum|5.006000||Viu VTBL_regexp|5.005003||Viu VTBL_sigelem|5.005003||Viu VTBL_substr|5.005003||Viu VTBL_sv|5.005003||Viu VTBL_taint|5.005003||Viu VTBL_uvar|5.005003||Viu VTBL_vec|5.005003||Viu vTHX|5.006000||Viu VT_NATIVE|5.021004||Viu vtohl|5.003007||Viu vtohs|5.003007||Viu VUTIL_REPLACE_CORE|5.019008||Viu vverify|5.009003|5.009003| VVERIFY|5.019008||Viu vwarn|5.006000|5.003007| vwarner|5.006000|5.004000|p wait4pid|5.003007||Viu wait|5.005000||Viu want_vtbl_bm|5.015000||Viu want_vtbl_fm|5.015000||Viu warn|5.003007||vV WARN_ALL|5.006000|5.003007|p WARN_ALLstring|5.006000||Viu WARN_AMBIGUOUS|5.006000|5.003007|p WARN_ASSERTIONS||5.003007|ponu WARN_BAREWORD|5.006000|5.003007|p WARN_CLOSED|5.006000|5.003007|p WARN_CLOSURE|5.006000|5.003007|p WARN_DEBUGGING|5.006000|5.003007|p WARN_DEPRECATED|5.006000|5.003007|p WARN_DIGIT|5.006000|5.003007|p warner|5.006000||pvV warner_nocontext|5.006000||vVn WARN_EXEC|5.006000|5.003007|p WARN_EXITING|5.006000|5.003007|p WARN_EXPERIMENTAL|5.017004|5.017004| WARN_EXPERIMENTAL__ALPHA_ASSERTIONS|5.027009|5.027009| WARN_EXPERIMENTAL__ARGS_ARRAY_WITH_SIGNATURES|5.035009|5.035009| WARN_EXPERIMENTAL__BITWISE|5.021009|5.021009| WARN_EXPERIMENTAL__BUILTIN|5.035009|5.035009| WARN_EXPERIMENTAL__CONST_ATTR|5.021008|5.021008| WARN_EXPERIMENTAL__DECLARED_REFS|5.025003|5.025003| WARN_EXPERIMENTAL__DEFER|5.035004|5.035004| WARN_EXPERIMENTAL__FOR_LIST|5.035005|5.035005| WARN_EXPERIMENTAL__ISA|5.031007|5.031007| WARN_EXPERIMENTAL__LEXICAL_SUBS|5.017005|5.017005| WARN_EXPERIMENTAL__POSTDEREF|5.019005|5.019005| WARN_EXPERIMENTAL__PRIVATE_USE|5.029009|5.029009| WARN_EXPERIMENTAL__REFALIASING|5.021005|5.021005| WARN_EXPERIMENTAL__REGEX_SETS|5.017008|5.017008| WARN_EXPERIMENTAL__RE_STRICT|5.021008|5.021008| WARN_EXPERIMENTAL__SCRIPT_RUN|5.027008|5.027008| WARN_EXPERIMENTAL__SIGNATURES|5.019009|5.019009| WARN_EXPERIMENTAL__SMARTMATCH|5.017011|5.017011| WARN_EXPERIMENTAL__TRY|5.033007|5.033007| WARN_EXPERIMENTAL__UNIPROP_WILDCARDS|5.029009|5.029009| WARN_EXPERIMENTAL__VLB|5.029009|5.029009| WARN_GLOB|5.006000|5.003007|p WARN_ILLEGALPROTO|5.011004|5.011004| WARN_IMPRECISION|5.011000|5.011000| WARN_INPLACE|5.006000|5.003007|p WARN_INTERNAL|5.006000|5.003007|p WARN_IO|5.006000|5.003007|p WARN_LAYER|5.008000|5.003007|p WARN_LOCALE|5.021006|5.021006| WARN_MALLOC|5.006000|5.003007|p WARN_MISC|5.006000|5.003007|p WARN_MISSING|5.021002|5.021002| WARN_NEWLINE|5.006000|5.003007|p warn_nocontext|5.006000||pvVn WARN_NONCHAR|5.013010|5.013010| WARN_NONEstring|5.006000||Viu WARN_NON_UNICODE|5.013010|5.013010| WARN_NUMERIC|5.006000|5.003007|p WARN_ONCE|5.006000|5.003007|p warn_on_first_deprecated_use|5.025009||Viu WARN_OVERFLOW|5.006000|5.003007|p WARN_PACK|5.006000|5.003007|p WARN_PARENTHESIS|5.006000|5.003007|p WARN_PIPE|5.006000|5.003007|p WARN_PORTABLE|5.006000|5.003007|p WARN_PRECEDENCE|5.006000|5.003007|p WARN_PRINTF|5.006000|5.003007|p _warn_problematic_locale|5.021008||cVniu WARN_PROTOTYPE|5.006000|5.003007|p WARN_QW|5.006000|5.003007|p WARN_RECURSION|5.006000|5.003007|p WARN_REDEFINE|5.006000|5.003007|p WARN_REDUNDANT|5.021002|5.021002| WARN_REGEXP|5.006000|5.003007|p WARN_RESERVED|5.006000|5.003007|p WARN_SEMICOLON|5.006000|5.003007|p WARN_SEVERE|5.006000|5.003007|p WARN_SHADOW|5.027007|5.027007| WARNshift|5.011001||Viu WARN_SIGNAL|5.006000|5.003007|p WARNsize|5.006000||Viu WARN_SUBSTR|5.006000|5.003007|p WARN_SURROGATE|5.013010|5.013010| warn_sv|5.013001|5.003007|p WARN_SYNTAX|5.006000|5.003007|p WARN_SYSCALLS|5.019004|5.019004| WARN_TAINT|5.006000|5.003007|p WARN_THREADS|5.008000|5.003007|p WARN_UNINITIALIZED|5.006000|5.003007|p WARN_UNOPENED|5.006000|5.003007|p WARN_UNPACK|5.006000|5.003007|p WARN_UNTIE|5.006000|5.003007|p WARN_UTF8|5.006000|5.003007|p WARN_VOID|5.006000|5.003007|p was_lvalue_sub|||ciu watch|5.003007||Viu WB_BREAKABLE|5.023008||Viu WB_DQ_then_HL|5.023008||Viu WB_Ex_or_FO_or_ZWJ_then_foo|5.025003||Viu WB_HL_then_DQ|5.023008||Viu WB_hs_then_hs|5.023008||Viu WB_LE_or_HL_then_MB_or_ML_or_SQ|5.023008||Viu WB_MB_or_ML_or_SQ_then_LE_or_HL|5.023008||Viu WB_MB_or_MN_or_SQ_then_NU|5.023008||Viu WB_NOBREAK|5.023008||Viu WB_NU_then_MB_or_MN_or_SQ|5.023008||Viu WB_RI_then_RI|5.025003||Viu WCTOMB_LOCK|5.033005||Viu WCTOMB_UNLOCK|5.033005||Viu what_MULTI_CHAR_FOLD_latin1_safe|5.033005||Viu what_MULTI_CHAR_FOLD_utf8_safe|5.033005||Viu what_MULTI_CHAR_FOLD_utf8_safe_part0|5.033005||Viu what_MULTI_CHAR_FOLD_utf8_safe_part1|5.033005||Viu what_MULTI_CHAR_FOLD_utf8_safe_part2|5.033005||Viu what_MULTI_CHAR_FOLD_utf8_safe_part3|5.033005||Viu what_MULTI_CHAR_FOLD_utf8_safe_part4|5.033005||Viu what_MULTI_CHAR_FOLD_utf8_safe_part5|5.033005||Viu what_MULTI_CHAR_FOLD_utf8_safe_part6|5.033005||Viu what_MULTI_CHAR_FOLD_utf8_safe_part7|5.033005||Viu whichsig|5.003007|5.003007| whichsig_pv|5.015004|5.015004| whichsig_pvn|5.015004|5.015004| whichsig_sv|5.015004|5.015004| WHILEM|5.003007||Viu WHILEM_A_max|5.009005||Viu WHILEM_A_max_fail|5.009005||Viu WHILEM_A_max_fail_t8|5.035004||Viu WHILEM_A_max_fail_t8_p8|5.033003||Viu WHILEM_A_max_fail_t8_pb|5.033003||Viu WHILEM_A_max_fail_tb|5.035004||Viu WHILEM_A_max_fail_tb_p8|5.033003||Viu WHILEM_A_max_fail_tb_pb|5.033003||Viu WHILEM_A_max_t8|5.035004||Viu WHILEM_A_max_t8_p8|5.033003||Viu WHILEM_A_max_t8_pb|5.033003||Viu WHILEM_A_max_tb|5.035004||Viu WHILEM_A_max_tb_p8|5.033003||Viu WHILEM_A_max_tb_pb|5.033003||Viu WHILEM_A_min|5.009005||Viu WHILEM_A_min_fail|5.009005||Viu WHILEM_A_min_fail_t8|5.035004||Viu WHILEM_A_min_fail_t8_p8|5.033003||Viu WHILEM_A_min_fail_t8_pb|5.033003||Viu WHILEM_A_min_fail_tb|5.035004||Viu WHILEM_A_min_fail_tb_p8|5.033003||Viu WHILEM_A_min_fail_tb_pb|5.033003||Viu WHILEM_A_min_t8|5.035004||Viu WHILEM_A_min_t8_p8|5.033003||Viu WHILEM_A_min_t8_pb|5.033003||Viu WHILEM_A_min_tb|5.035004||Viu WHILEM_A_min_tb_p8|5.033003||Viu WHILEM_A_min_tb_pb|5.033003||Viu WHILEM_A_pre|5.009005||Viu WHILEM_A_pre_fail|5.009005||Viu WHILEM_A_pre_fail_t8|5.035004||Viu WHILEM_A_pre_fail_t8_p8|5.033003||Viu WHILEM_A_pre_fail_t8_pb|5.033003||Viu WHILEM_A_pre_fail_tb|5.035004||Viu WHILEM_A_pre_fail_tb_p8|5.033003||Viu WHILEM_A_pre_fail_tb_pb|5.033003||Viu WHILEM_A_pre_t8|5.035004||Viu WHILEM_A_pre_t8_p8|5.033003||Viu WHILEM_A_pre_t8_pb|5.033003||Viu WHILEM_A_pre_tb|5.035004||Viu WHILEM_A_pre_tb_p8|5.033003||Viu WHILEM_A_pre_tb_pb|5.033003||Viu WHILEM_B_max|5.009005||Viu WHILEM_B_max_fail|5.009005||Viu WHILEM_B_max_fail_t8|5.035004||Viu WHILEM_B_max_fail_t8_p8|5.033003||Viu WHILEM_B_max_fail_t8_pb|5.033003||Viu WHILEM_B_max_fail_tb|5.035004||Viu WHILEM_B_max_fail_tb_p8|5.033003||Viu WHILEM_B_max_fail_tb_pb|5.033003||Viu WHILEM_B_max_t8|5.035004||Viu WHILEM_B_max_t8_p8|5.033003||Viu WHILEM_B_max_t8_pb|5.033003||Viu WHILEM_B_max_tb|5.035004||Viu WHILEM_B_max_tb_p8|5.033003||Viu WHILEM_B_max_tb_pb|5.033003||Viu WHILEM_B_min|5.009005||Viu WHILEM_B_min_fail|5.009005||Viu WHILEM_B_min_fail_t8|5.035004||Viu WHILEM_B_min_fail_t8_p8|5.033003||Viu WHILEM_B_min_fail_t8_pb|5.033003||Viu WHILEM_B_min_fail_tb|5.035004||Viu WHILEM_B_min_fail_tb_p8|5.033003||Viu WHILEM_B_min_fail_tb_pb|5.033003||Viu WHILEM_B_min_t8|5.035004||Viu WHILEM_B_min_t8_p8|5.033003||Viu WHILEM_B_min_t8_pb|5.033003||Viu WHILEM_B_min_tb|5.035004||Viu WHILEM_B_min_tb_p8|5.033003||Viu WHILEM_B_min_tb_pb|5.033003||Viu WHILEM_t8|5.035004||Viu WHILEM_t8_p8|5.033003||Viu WHILEM_t8_pb|5.033003||Viu WHILEM_tb|5.035004||Viu WHILEM_tb_p8|5.033003||Viu WHILEM_tb_pb|5.033003||Viu WIDEST_UTYPE|5.015004|5.003007|poVnu win32_croak_not_implemented|5.017006||Vniu WIN32SCK_IS_STDSCK|5.007001||Viu win32_setlocale|5.027006||Viu withinCOUNT|5.031004||Viu withinCOUNT_KNOWN_VALID|5.033005||Viu WITH_LC_NUMERIC_SET_TO_NEEDED|5.031003|5.031003| WITH_LC_NUMERIC_SET_TO_NEEDED_IN|5.031003|5.031003| with_queued_errors|5.013001||Viu with_tp_UTF8ness|5.033003||Viu with_t_UTF8ness|5.035004||Viu wrap_keyword_plugin|5.027006|5.027006|x wrap_op_checker|5.015008|5.015008| write|5.005000||Viu write_to_stderr|5.008001||Viu XCPT_CATCH|5.009002|5.003007|p XCPT_RETHROW|5.009002|5.003007|p XCPT_TRY_END|5.009002|5.003007|p XCPT_TRY_START|5.009002|5.003007|p XDIGIT_VALUE|5.019008||Viu xio_any|5.006001||Viu xio_dirp|5.006001||Viu xiv_iv|5.009003||Viu xlv_targoff|5.019004||Viu XopDISABLE|5.013007|5.013007|V XOPd_xop_class|5.013007||Viu XOPd_xop_desc|5.013007||Viu XOPd_xop_name|5.013007||Viu XOPd_xop_peep|5.013007||Viu XopENABLE|5.013007|5.013007|V XopENTRY|5.013007|5.013007|V XopENTRYCUSTOM|5.019006|5.013007|V XopENTRY_set|5.013007|5.013007|V XopFLAGS|5.013007|5.013007| XOPf_xop_class|5.013007||Viu XOPf_xop_desc|5.013007||Viu XOPf_xop_name|5.013007||Viu XOPf_xop_peep|5.013007||Viu XORSHIFT128_set|5.027001||Viu XORSHIFT96_set|5.027001||Viu XPUSHi|5.003007|5.003007| XPUSHmortal|5.009002|5.003007|p XPUSHn|5.006000|5.003007| XPUSHp|5.003007|5.003007| XPUSHs|5.003007|5.003007| XPUSHTARG|5.003007||Viu XPUSHu|5.004000|5.003007|p XPUSHundef|5.006000||Viu xpv_len|5.017006||Viu XS|5.003007|5.003007|Vu XSANY|5.003007||Viu XS_APIVERSION_BOOTCHECK|5.013004|5.013004| XS_APIVERSION_POPMARK_BOOTCHECK|5.021006||Viu XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK|5.021006||Viu xs_boot_epilog|5.021006||cViu XS_BOTHVERSION_BOOTCHECK|5.021006||Viu XS_BOTHVERSION_POPMARK_BOOTCHECK|5.021006||Viu XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK|5.021006||Viu XS_DYNAMIC_FILENAME|5.009004||Viu XS_EXTERNAL|5.015002|5.015002|Vu xs_handshake|||vcniu XSINTERFACE_CVT|5.005000||Viu XSINTERFACE_CVT_ANON|5.010000||Viu XSINTERFACE_FUNC|5.005000||Viu XSINTERFACE_FUNC_SET|5.005000||Viu XS_INTERNAL|5.015002|5.015002|Vu XSprePUSH|5.006000|5.003007|poVnu XSPROTO|5.010000|5.003007|pVu XSRETURN|5.003007|5.003007|p XSRETURN_EMPTY|5.003007|5.003007| XSRETURN_IV|5.003007|5.003007| XSRETURN_NO|5.003007|5.003007| XSRETURN_NV|5.006000|5.003007| XSRETURN_PV|5.003007|5.003007| XSRETURN_PVN|5.006000||Viu XSRETURN_UNDEF|5.003007|5.003007| XSRETURN_UV|5.008001|5.003007|p XSRETURN_YES|5.003007|5.003007| XS_SETXSUBFN_POPMARK|5.021006||Viu XST_mIV|5.003007|5.003007| XST_mNO|5.003007|5.003007| XST_mNV|5.006000|5.003007| XST_mPV|5.003007|5.003007| XST_mPVN|5.006000||Viu XST_mUNDEF|5.003007|5.003007| XST_mUV|5.008001|5.003007|p XST_mYES|5.003007|5.003007| XS_VERSION|5.003007|5.003007| XS_VERSION_BOOTCHECK|5.003007|5.003007| xs_version_bootcheck|||iu XTENDED_PAT_MOD|5.009005||Viu xuv_uv|5.009003||Viu YESEXPR|5.027010||Viu YESSTR|5.027010||Viu YIELD|5.005000||Viu YYDEBUG|5.025006||Viu YYEMPTY|5.009005||Viu yyerror|5.003007||Viu yyerror_pv|5.016000||Viu yyerror_pvn|5.016000||Viu yylex|5.003007||cViu yyparse|5.003007||Viu yyquit|5.025010||Viu YYSTYPE_IS_DECLARED|5.009001||Viu YYSTYPE_IS_TRIVIAL|5.009001||Viu YYTOKENTYPE|5.009001||Viu yyunlex|5.013005||Viu yywarn|5.003007||Viu ZAPHOD32_FINALIZE|5.027001||Viu ZAPHOD32_MIX|5.027001||Viu ZAPHOD32_SCRAMBLE32|5.027001||Viu ZAPHOD32_STATIC_INLINE|5.027001||Viu ZAPHOD32_WARN2|5.027001||Viu ZAPHOD32_WARN3|5.027001||Viu ZAPHOD32_WARN4|5.027001||Viu ZAPHOD32_WARN5|5.027001||Viu ZAPHOD32_WARN6|5.027001||Viu Zero|5.003007|5.003007| ZeroD|5.009002|5.003007|p ); if (exists $opt{'list-unsupported'}) { my $f; for $f (sort dictionary_order keys %API) { next if $API{$f}{core_only}; next if $API{$f}{beyond_depr}; next if $API{$f}{inaccessible}; next if $API{$f}{experimental}; next unless $API{$f}{todo}; next if int_parse_version($API{$f}{todo}) <= $int_min_perl; my $repeat = 40 - length($f); $repeat = 0 if $repeat < 0; print "$f ", '.'x $repeat, " ", format_version($API{$f}{todo}), "\n"; } exit 0; } # Scan for hints, possible replacement candidates, etc. my(%replace, %need, %hints, %warnings, %depends); my $replace = 0; my($hint, $define, $function); sub find_api { BEGIN { 'warnings'->unimport('uninitialized') if "$]" > '5.006' } my $code = shift; $code =~ s{ / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*) | "[^"\\]*(?:\\.[^"\\]*)*" | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx; grep { exists $API{$_} } $code =~ /(\w+)/mg; } while () { if ($hint) { # Here, we are in the middle of accumulating a hint or warning. my $end_of_hint = 0; # A line containing a comment end marker closes the hint. Remove that # marker for processing below. if (s/\s*$rcce(.*?)\s*$//) { die "Nothing can follow the end of comment in '$_'\n" if length $1 > 0; $end_of_hint = 1; } # Set $h to the hash of which type. my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings; # Ignore any leading and trailing white space, and an optional star comment # continuation marker, then place the meat of the line into $1 m/^\s*(?:\*\s*)?(.*?)\s*$/; # Add the meat of this line to the hash value of each API element it # applies to for (@{$hint->[1]}) { $h->{$_} ||= ''; # avoid the warning older perls generate $h->{$_} .= "$1\n"; } # If the line had a comment close, we are through with this hint undef $hint if $end_of_hint; next; } # Set up $hint if this is the beginning of a Hint: or Warning: # These are from a multi-line C comment in the file, with the first line # looking like (a space has been inserted because this file can't have C # comment markers in it): # / * Warning: PL_expect, PL_copline, PL_rsfp # # $hint becomes # [ # 'Warning', # [ # 'PL_expect', # 'PL_copline', # 'PL_rsfp', # ], # ] if (m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$}) { $hint = [$1, [split /,?\s+/, $2]]; next; } if ($define) { # If in the middle of a definition... # append a continuation line ending with backslash. if ($define->[1] =~ /\\$/) { $define->[1] .= $_; } else { # Otherwise this line ends the definition, make foo depend on bar # (and what bar depends on) if its not one of ppp's own constructs if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) { my @n = find_api($define->[1]); push @{$depends{$define->[0]}}, @n if @n } undef $define; } } # For '#define foo bar' or '#define foo(a,b,c) bar', $define becomes a # reference to [ foo, bar ] $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)}; if ($function) { if (/^}/) { if (exists $API{$function->[0]}) { my @n = find_api($function->[1]); push @{$depends{$function->[0]}}, @n if @n } undef $function; } else { $function->[1] .= $_; } } $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)}; # Set $replace to the number given for lines that look like # / * Replace: \d+ * / # Thus setting it to 1 starts a region where replacements are automatically # done, and setting it to 0 ends that region. $replace = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; # Add bar => foo to %replace for lines like '#define foo bar in a region # where $replace is non-zero $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)}; # Add bar => foo to %replace for lines like '#define foo bar / * Replace * / $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce}; # Add foo => bar to %replace for lines like / * Replace foo with bar * / $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+.*?)\s+$rcce\s*$}; # For lines like / * foo, bar depends on baz, bat * / # create a list of the elements on the rhs, and make that list apply to each # element in the lhs, which becomes a key in \%depends. if (m{^\s*$rccs\s+(\w+(\s*,\s*\w+)*)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) { my @deps = map { s/\s+//g; $_ } split /,/, $3; my $d; for $d (map { s/\s+//g; $_ } split /,/, $1) { push @{$depends{$d}}, @deps; } } $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)}; } for (values %depends) { my %seen; $_ = [sort dictionary_order grep !$seen{$_}++, @$_]; } if (exists $opt{'api-info'}) { my $f; my $count = 0; my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$"; # Sort the names, and split into two classes; one for things that are part of # the API; a second for things that aren't. my @ok_to_use; my @shouldnt_use; for $f (sort dictionary_order keys %API) { next unless $f =~ /$match/; my $base = int_parse_version($API{$f}{base}) if $API{$f}{base}; if ($base && ! $API{$f}{inaccessible} && ! $API{$f}{core_only}) { push @ok_to_use, $f; } else { push @shouldnt_use, $f; } } # We normally suppress non-API items. But if the search matched no API # items, output the non-ones. This allows someone to get the info for an # item if they ask for it specifically enough, but doesn't normally clutter # the output with irrelevant results. @ok_to_use = @shouldnt_use unless @ok_to_use; for $f (@ok_to_use) { print "\n=== $f ===\n"; my $info = 0; my $base; $base = int_parse_version($API{$f}{base}) if $API{$f}{base}; my $todo; $todo = int_parse_version($API{$f}{todo}) if $API{$f}{todo}; # Output information if ($base) { my $with_or= ""; if ( $base <= $int_min_perl || ( (! $API{$f}{provided} && ! $todo) || ($todo && $todo >= $base))) { $with_or= " with or"; } my $Supported = ($API{$f}{undocumented}) ? 'Available' : 'Supported'; print "\n$Supported at least since perl-", format_version($base), ",$with_or without $ppport."; if ($API{$f}{unverified}) { print "\nThis information is based on inspection of the source code", " and has not been\n", "verified by successful compilation."; } print "\n"; $info++; } if ($API{$f}{provided} || $todo) { print "\nThis is only supported by $ppport, and NOT by perl versions going forward.\n" unless $base; if ($todo) { if (! $base || $todo < $base) { my $additionally = ""; $additionally .= " additionally" if $base; print "$ppport$additionally provides support at least back to perl-", format_version($todo), ".\n"; } } elsif (! $base || $base > $int_min_perl) { if (exists $depends{$f}) { my $max = 0; for (@{$depends{$f}}) { $max = int_parse_version($API{$_}{todo}) if $API{$_}{todo} && $API{$_}{todo} > $max; # XXX What to assume unspecified values are? This effectively makes them MIN_PERL } $todo = $max if $max; } print "\n$ppport provides support for this, but ironically, does not", " currently know,\n", "for this report, the minimum version it supports for this"; if ($API{$f}{undocumented}) { print " and many things\n", "it provides that are implemented as macros and aren't", " documented. You can\n", "help by submitting a documentation patch"; } print ".\n"; if ($todo) { if ($todo <= $int_min_perl) { print "It may very well be supported all the way back to ", format_version(5.003_07), ".\n"; } else { print "But given the things $f depends on, it's a good", " guess that it isn't\n", "supported prior to ", format_version($todo), ".\n"; } } } } if ($API{$f}{provided}) { print "Support needs to be explicitly requested by #define NEED_$f\n", "(or #define NEED_${f}_GLOBAL).\n" if exists $need{$f}; $info++; } if ($base || ! $API{$f}{ppport_fnc}) { my $email = "Send email to perl5-porters\@perl.org if you need to have this functionality.\n"; if ($API{$f}{inaccessible}) { print "\nThis is not part of the public API, and may not even be accessible to XS code.\n"; $info++; } elsif ($API{$f}{core_only}) { print "\nThis is not part of the public API, and should not be used by XS code.\n"; $info++; } elsif ($API{$f}{deprecated}) { print "\nThis is deprecated and should not be used. Convert existing uses.\n"; $info++; } elsif ($API{$f}{experimental}) { print "\nThe API for this is unstable and should not be used by XS code.\n", $email; $info++; } elsif ($API{$f}{undocumented}) { print "\nSince this is undocumented, the API should be considered unstable.\n"; if ($API{$f}{provided}) { print "Consider bringing this up on the list: perl5-porters\@perl.org.\n"; } else { print "It may be that this is not intended for XS use, or it may just be\n", "that no one has gotten around to documenting it.\n", $email; } $info++; } unless ($info) { print "No portability information available. Check your spelling; or", " this could be\na bug in Devel::PPPort. To report an issue:\n", "https://github.com/Dual-Life/Devel-PPPort/issues/new\n"; } } print "\nDepends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f}; if (exists $hints{$f} || exists $warnings{$f}) { print "\n$hints{$f}" if exists $hints{$f}; print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f}; $info++; } $count++; } $count or print "\nFound no API matching '$opt{'api-info'}'."; print "\n"; exit 0; } if (exists $opt{'list-provided'}) { my $f; for $f (sort dictionary_order keys %API) { next unless $API{$f}{provided}; my @flags; push @flags, 'explicit' if exists $need{$f}; push @flags, 'depend' if exists $depends{$f}; push @flags, 'hint' if exists $hints{$f}; push @flags, 'warning' if exists $warnings{$f}; my $flags = @flags ? ' ['.join(', ', @flags).']' : ''; print "$f$flags\n"; } exit 0; } my @files; my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc ); my $srcext = join '|', map { quotemeta $_ } @srcext; if (@ARGV) { my %seen; for (@ARGV) { if (-e) { if (-f) { push @files, $_ unless $seen{$_}++; } else { warn "'$_' is not a file.\n" } } else { my @new = grep { -f } glob $_ or warn "'$_' does not exist.\n"; push @files, grep { !$seen{$_}++ } @new; } } } else { eval { require File::Find; File::Find::find(sub { $File::Find::name =~ /($srcext)$/i and push @files, $File::Find::name; }, '.'); }; if ($@) { @files = map { glob "*$_" } @srcext; } } if (!@ARGV || $opt{filter}) { my(@in, @out); my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files; for (@files) { my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i; push @{ $out ? \@out : \@in }, $_; } if (@ARGV && @out) { warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out); } @files = @in; } die "No input files given!\n" unless @files; my(%files, %global, %revreplace); %revreplace = reverse %replace; my $filename; my $patch_opened = 0; for $filename (@files) { unless (open IN, "<$filename") { warn "Unable to read from $filename: $!\n"; next; } info("Scanning $filename ..."); my $c = do { local $/; }; close IN; my %file = (orig => $c, changes => 0); # Temporarily remove C/XS comments and strings from the code my @ccom; $c =~ s{ ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]* | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* ) | ( ^$HS*\#[^\r\n]* | "[^"\\]*(?:\\.[^"\\]*)*" | '[^'\\]*(?:\\.[^'\\]*)*' | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) ) }{ defined $2 and push @ccom, $2; defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex; $file{ccom} = \@ccom; $file{code} = $c; $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m; my $func; for $func (keys %API) { my $match = $func; $match .= "|$revreplace{$func}" if exists $revreplace{$func}; if ($c =~ /\b(?:Perl_)?($match)\b/) { $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func}; $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/; if (exists $API{$func}{provided}) { $file{uses_provided}{$func}++; if ( ! exists $API{$func}{base} || int_parse_version($API{$func}{base}) > $opt{'compat-version'}) { $file{uses}{$func}++; my @deps = rec_depend($func); if (@deps) { $file{uses_deps}{$func} = \@deps; for (@deps) { $file{uses}{$_} = 0 unless exists $file{uses}{$_}; } } for ($func, @deps) { $file{needs}{$_} = 'static' if exists $need{$_}; } } } if ( exists $API{$func}{todo} && int_parse_version($API{$func}{todo}) > $opt{'compat-version'}) { if ($c =~ /\b$func\b/) { $file{uses_todo}{$func}++; } } } } while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) { if (exists $need{$2}) { $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++; } else { warning("Possibly wrong #define $1 in $filename") } } for (qw(uses needs uses_todo needed_global needed_static)) { for $func (keys %{$file{$_}}) { push @{$global{$_}{$func}}, $filename; } } $files{$filename} = \%file; } # Globally resolve NEED_'s my $need; for $need (keys %{$global{needs}}) { if (@{$global{needs}{$need}} > 1) { my @targets = @{$global{needs}{$need}}; my @t = grep $files{$_}{needed_global}{$need}, @targets; @targets = @t if @t; @t = grep /\.xs$/i, @targets; @targets = @t if @t; my $target = shift @targets; $files{$target}{needs}{$need} = 'global'; for (@{$global{needs}{$need}}) { $files{$_}{needs}{$need} = 'extern' if $_ ne $target; } } } for $filename (@files) { exists $files{$filename} or next; info("=== Analyzing $filename ==="); my %file = %{$files{$filename}}; my $func; my $c = $file{code}; my $warnings = 0; for $func (sort dictionary_order keys %{$file{uses_Perl}}) { if ($API{$func}{varargs}) { unless ($API{$func}{noTHXarg}) { my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); if ($changes) { warning("Doesn't pass interpreter argument aTHX to Perl_$func"); $file{changes} += $changes; } } } else { warning("Uses Perl_$func instead of $func"); $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*} {$func$1(}g); } } for $func (sort dictionary_order keys %{$file{uses_replace}}) { warning("Uses $func instead of $replace{$func}"); $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g); } for $func (sort dictionary_order keys %{$file{uses_provided}}) { if ($file{uses}{$func}) { if (exists $file{uses_deps}{$func}) { diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}})); } else { diag("Uses $func"); } } $warnings += (hint($func) || 0); } unless ($opt{quiet}) { for $func (sort dictionary_order keys %{$file{uses_todo}}) { next if int_parse_version($API{$func}{todo}) <= $int_min_perl; print "*** WARNING: Uses $func, which may not be portable below perl ", format_version($API{$func}{todo}), ", even with '$ppport'\n"; $warnings++; } } for $func (sort dictionary_order keys %{$file{needed_static}}) { my $message = ''; if (not exists $file{uses}{$func}) { $message = "No need to define NEED_$func if $func is never used"; } elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') { $message = "No need to define NEED_$func when already needed globally"; } if ($message) { diag($message); $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg); } } for $func (sort dictionary_order keys %{$file{needed_global}}) { my $message = ''; if (not exists $global{uses}{$func}) { $message = "No need to define NEED_${func}_GLOBAL if $func is never used"; } elsif (exists $file{needs}{$func}) { if ($file{needs}{$func} eq 'extern') { $message = "No need to define NEED_${func}_GLOBAL when already needed globally"; } elsif ($file{needs}{$func} eq 'static') { $message = "No need to define NEED_${func}_GLOBAL when only used in this file"; } } if ($message) { diag($message); $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg); } } $file{needs_inc_ppport} = keys %{$file{uses}}; if ($file{needs_inc_ppport}) { my $pp = ''; for $func (sort dictionary_order keys %{$file{needs}}) { my $type = $file{needs}{$func}; next if $type eq 'extern'; my $suffix = $type eq 'global' ? '_GLOBAL' : ''; unless (exists $file{"needed_$type"}{$func}) { if ($type eq 'global') { diag("Files [@{$global{needs}{$func}}] need $func, adding global request"); } else { diag("File needs $func, adding static request"); } $pp .= "#define NEED_$func$suffix\n"; } } if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) { $pp = ''; $file{changes}++; } unless ($file{has_inc_ppport}) { diag("Needs to include '$ppport'"); $pp .= qq(#include "$ppport"\n) } if ($pp) { $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms) || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m) || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m) || ($c =~ s/^/$pp/); } } else { if ($file{has_inc_ppport}) { diag("No need to include '$ppport'"); $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m); } } # put back in our C comments my $ix; my $cppc = 0; my @ccom = @{$file{ccom}}; for $ix (0 .. $#ccom) { if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) { $cppc++; $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/; } else { $c =~ s/$rccs$ix$rcce/$ccom[$ix]/; } } if ($cppc) { my $s = $cppc != 1 ? 's' : ''; warning("Uses $cppc C++ style comment$s, which is not portable"); } my $s = $warnings != 1 ? 's' : ''; my $warn = $warnings ? " ($warnings warning$s)" : ''; info("Analysis completed$warn"); if ($file{changes}) { if (exists $opt{copy}) { my $newfile = "$filename$opt{copy}"; if (-e $newfile) { error("'$newfile' already exists, refusing to write copy of '$filename'"); } else { local *F; if (open F, ">$newfile") { info("Writing copy of '$filename' with changes to '$newfile'"); print F $c; close F; } else { error("Cannot open '$newfile' for writing: $!"); } } } elsif (exists $opt{patch} || $opt{changes}) { if (exists $opt{patch}) { unless ($patch_opened) { if (open PATCH, ">$opt{patch}") { $patch_opened = 1; } else { error("Cannot open '$opt{patch}' for writing: $!"); delete $opt{patch}; $opt{changes} = 1; goto fallback; } } mydiff(\*PATCH, $filename, $c); } else { fallback: info("Suggested changes:"); mydiff(\*STDOUT, $filename, $c); } } else { my $s = $file{changes} == 1 ? '' : 's'; info("$file{changes} potentially required change$s detected"); } } else { info("Looks good"); } } close PATCH if $patch_opened; exit 0; sub try_use { eval "use @_;"; return $@ eq '' } sub mydiff { local *F = shift; my($file, $str) = @_; my $diff; if (exists $opt{diff}) { $diff = run_diff($opt{diff}, $file, $str); } if (!defined $diff and try_use('Text::Diff')) { $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' }); $diff = <

$tmp") { print F $str; close F; if (open F, "$prog $file $tmp |") { while () { s/\Q$tmp\E/$file.patched/; $diff .= $_; } close F; unlink $tmp; return $diff; } unlink $tmp; } else { error("Cannot open '$tmp' for writing: $!"); } return undef; } sub rec_depend { my($func, $seen) = @_; return () unless exists $depends{$func}; $seen = {%{$seen||{}}}; return () if $seen->{$func}++; my %s; grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}}; } sub info { $opt{quiet} and return; print @_, "\n"; } sub diag { $opt{quiet} and return; $opt{diag} and print @_, "\n"; } sub warning { $opt{quiet} and return; print "*** ", @_, "\n"; } sub error { print "*** ERROR: ", @_, "\n"; } my %given_hints; my %given_warnings; sub hint { $opt{quiet} and return; my $func = shift; my $rv = 0; if (exists $warnings{$func} && !$given_warnings{$func}++) { my $warn = $warnings{$func}; $warn =~ s!^!*** !mg; print "*** WARNING: $func\n", $warn; $rv++; } if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) { my $hint = $hints{$func}; $hint =~ s/^/ /mg; print " --- hint for $func ---\n", $hint; } $rv || 0; } sub usage { my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms; my %M = ( 'I' => '*' ); $usage =~ s/^\s*perl\s+\S+/$^X $0/; $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g; print < }; my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms; $copy =~ s/^(?=\S+)/ /gms; $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms; $self =~ s/^SKIP.*(?=^__DATA__)/SKIP if (\@ARGV && \$ARGV[0] eq '--unstrip') { eval { require Devel::PPPort }; \$@ and die "Cannot require Devel::PPPort, please install.\\n"; if (eval \$Devel::PPPort::VERSION < $VERSION) { die "$0 was originally generated with Devel::PPPort $VERSION.\\n" . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n" . "Please install a newer version, or --unstrip will not work.\\n"; } Devel::PPPort::WriteFile(\$0); exit 0; } print <$0" or die "cannot strip $0: $!\n"; print OUT "$pl$c\n"; exit 0; } __DATA__ */ #ifndef _P_P_PORTABILITY_H_ #define _P_P_PORTABILITY_H_ #ifndef DPPP_NAMESPACE # define DPPP_NAMESPACE DPPP_ #endif #define DPPP_CAT2(x,y) CAT2(x,y) #define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name) #define D_PPP_RELEASE_DATE 1693785600 /* 2023-09-04 */ #if ! defined(PERL_REVISION) && ! defined(PERL_VERSION_MAJOR) # if ! defined(__PATCHLEVEL_H_INCLUDED__) \ && ! ( defined(PATCHLEVEL) && defined(SUBVERSION)) # define PERL_PATCHLEVEL_H_IMPLICIT # include # endif # if ! defined(PERL_VERSION) \ && ! defined(PERL_VERSION_MAJOR) \ && ( ! defined(SUBVERSION) || ! defined(PATCHLEVEL) ) # include # endif #endif #ifdef PERL_VERSION_MAJOR # define D_PPP_MAJOR PERL_VERSION_MAJOR #elif defined(PERL_REVISION) # define D_PPP_MAJOR PERL_REVISION #else # define D_PPP_MAJOR 5 #endif #ifdef PERL_VERSION_MINOR # define D_PPP_MINOR PERL_VERSION_MINOR #elif defined(PERL_VERSION) # define D_PPP_MINOR PERL_VERSION #elif defined(PATCHLEVEL) # define D_PPP_MINOR PATCHLEVEL # define PERL_VERSION PATCHLEVEL /* back-compat */ #else # error Could not find a source for PERL_VERSION_MINOR #endif #ifdef PERL_VERSION_PATCH # define D_PPP_PATCH PERL_VERSION_PATCH #elif defined(PERL_SUBVERSION) # define D_PPP_PATCH PERL_SUBVERSION #elif defined(SUBVERSION) # define D_PPP_PATCH SUBVERSION # define PERL_SUBVERSION SUBVERSION /* back-compat */ #else # error Could not find a source for PERL_VERSION_PATCH #endif #if D_PPP_MAJOR < 5 || D_PPP_MAJOR == 6 # error Devel::PPPort works only on Perl 5, Perl 7, ... #elif D_PPP_MAJOR != 5 /* Perl 7 and above: the old forms are deprecated, set up so that they * assume Perl 5, and will make this look like 5.201.201. * * 201 is used so will be well above anything that would come from a 5 * series if we unexpectedly have to continue it, but still gives plenty of * room, up to 255, of numbers that will fit into a byte in case there is * something else unforeseen */ # undef PERL_REVISION # undef PERL_VERSION # undef PERL_SUBVERSION # define D_PPP_REVISION 5 # define D_PPP_VERSION 201 # define D_PPP_SUBVERSION 201 # if (defined(__clang__) /* _Pragma here doesn't work with gcc */ \ && ( (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \ || defined(_STDC_C99) \ || defined(__c99))) # define D_PPP_STRINGIFY(x) #x # define D_PPP_deprecate(xyz) _Pragma(D_PPP_STRINGIFY(GCC warning(D_PPP_STRINGIFY(xyz) " is deprecated"))) # define PERL_REVISION (D_PPP_REVISION D_PPP_deprecate(PERL_REVISION)) # define PERL_VERSION (D_PPP_REVISION D_PPP_deprecate(PERL_VERSION)) # define PERL_SUBVERSION (D_PPP_SUBVERSION D_PPP_deprecate(PERL_SUBVERSION)) # else # define PERL_REVISION D_PPP_REVISION # define PERL_VERSION D_PPP_REVISION # define PERL_SUBVERSION D_PPP_SUBVERSION # endif #endif /* Warning: PERL_PATCHLEVEL PATCHLEVEL SUBVERSION PERL_REVISION PERL_VERSION * PERL_SUBVERSION PERL_BCDVERSION * * You should be using PERL_VERSION_xy(maj,min,ptch) instead of this, where xy * is one of EQ, NE, LE, GT, LT, GE */ /* Replace PERL_PATCHLEVEL with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ /* Replace PATCHLEVEL with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ /* Replace SUBVERSION with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ /* Replace PERL_REVISION with PERL_VERSION_xy(a,b,c) (where xy is EQ,LT,GT...) */ /* Replace PERL_VERSION with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ /* Replace PERL_SUBVERSION with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ /* Replace PERL_BCDVERSION with PERL_VERSION_xy(5,a,b) (where xy is EQ,LT,GT...) */ #define D_PPP_DEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10)) #define D_PPP_JNP_TO_BCD(j,n,p) ((D_PPP_DEC2BCD(j)<<24)|(D_PPP_DEC2BCD(n)<<12)|D_PPP_DEC2BCD(p)) #define PERL_BCDVERSION D_PPP_JNP_TO_BCD(D_PPP_MAJOR, \ D_PPP_MINOR, \ D_PPP_PATCH) /* These differ from the versions outside D:P in using PERL_BCDVERSION instead * of PERL_DECIMAL_VERSION. The formats printing in this module assume BCD, so * always use it */ #undef PERL_VERSION_EQ #undef PERL_VERSION_NE #undef PERL_VERSION_LT #undef PERL_VERSION_GE #undef PERL_VERSION_LE #undef PERL_VERSION_GT /* N.B. These don't work if the patch number is 42 or 92, as those are what '*' * is in ASCII and EBCDIC respectively */ #ifndef PERL_VERSION_EQ # define PERL_VERSION_EQ(j,n,p) \ (((p) == '*') ? ( (j) == D_PPP_MAJOR \ && (n) == D_PPP_MINOR) \ : (PERL_BCDVERSION == D_PPP_JNP_TO_BCD(j,n,p))) #endif #ifndef PERL_VERSION_NE # define PERL_VERSION_NE(j,n,p) (! PERL_VERSION_EQ(j,n,p)) #endif #ifndef PERL_VERSION_LT # define PERL_VERSION_LT(j,n,p) /* p=='*' means _LT(j,n,0) */ \ (PERL_BCDVERSION < D_PPP_JNP_TO_BCD( (j), \ (n), \ (((p) == '*') ? 0 : (p)))) #endif #ifndef PERL_VERSION_GE # define PERL_VERSION_GE(j,n,p) (! PERL_VERSION_LT(j,n,p)) #endif #ifndef PERL_VERSION_LE # define PERL_VERSION_LE(j,n,p) /* p=='*' means _LE(j,n,999) */ \ (PERL_BCDVERSION <= D_PPP_JNP_TO_BCD( (j), \ (n), \ (((p) == '*') ? 999 : (p)))) #endif #ifndef PERL_VERSION_GT # define PERL_VERSION_GT(j,n,p) (! PERL_VERSION_LE(j,n,p)) #endif #ifndef dTHR # define dTHR dNOOP #endif #ifndef dTHX # define dTHX dNOOP #endif /* Hint: dTHX For pre-5.6.0 thread compatibility, instead use dTHXR, available only through ppport.h */ #ifndef dTHXa # define dTHXa(x) dNOOP #endif #ifndef pTHX # define pTHX void #endif #ifndef pTHX_ # define pTHX_ #endif #ifndef aTHX # define aTHX #endif /* Hint: aTHX For pre-5.6.0 thread compatibility, instead use aTHXR, available only through ppport.h */ #ifndef aTHX_ # define aTHX_ #endif /* Hint: aTHX_ For pre-5.6.0 thread compatibility, instead use aTHXR_, available only through ppport.h */ #if (PERL_BCDVERSION < 0x5006000) # ifdef USE_THREADS # define aTHXR thr # define aTHXR_ thr, # else # define aTHXR # define aTHXR_ # endif # define dTHXR dTHR #else # define aTHXR aTHX # define aTHXR_ aTHX_ # define dTHXR dTHX #endif #ifndef dTHXoa # define dTHXoa(x) dTHXa(x) #endif #ifdef I_LIMITS # include #endif #ifndef PERL_UCHAR_MIN # define PERL_UCHAR_MIN ((unsigned char)0) #endif #ifndef PERL_UCHAR_MAX # ifdef UCHAR_MAX # define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX) # else # ifdef MAXUCHAR # define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR) # else # define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0) # endif # endif #endif #ifndef PERL_USHORT_MIN # define PERL_USHORT_MIN ((unsigned short)0) #endif #ifndef PERL_USHORT_MAX # ifdef USHORT_MAX # define PERL_USHORT_MAX ((unsigned short)USHORT_MAX) # else # ifdef MAXUSHORT # define PERL_USHORT_MAX ((unsigned short)MAXUSHORT) # else # ifdef USHRT_MAX # define PERL_USHORT_MAX ((unsigned short)USHRT_MAX) # else # define PERL_USHORT_MAX ((unsigned short)~(unsigned)0) # endif # endif # endif #endif #ifndef PERL_SHORT_MAX # ifdef SHORT_MAX # define PERL_SHORT_MAX ((short)SHORT_MAX) # else # ifdef MAXSHORT /* Often used in */ # define PERL_SHORT_MAX ((short)MAXSHORT) # else # ifdef SHRT_MAX # define PERL_SHORT_MAX ((short)SHRT_MAX) # else # define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1)) # endif # endif # endif #endif #ifndef PERL_SHORT_MIN # ifdef SHORT_MIN # define PERL_SHORT_MIN ((short)SHORT_MIN) # else # ifdef MINSHORT # define PERL_SHORT_MIN ((short)MINSHORT) # else # ifdef SHRT_MIN # define PERL_SHORT_MIN ((short)SHRT_MIN) # else # define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3)) # endif # endif # endif #endif #ifndef PERL_UINT_MAX # ifdef UINT_MAX # define PERL_UINT_MAX ((unsigned int)UINT_MAX) # else # ifdef MAXUINT # define PERL_UINT_MAX ((unsigned int)MAXUINT) # else # define PERL_UINT_MAX (~(unsigned int)0) # endif # endif #endif #ifndef PERL_UINT_MIN # define PERL_UINT_MIN ((unsigned int)0) #endif #ifndef PERL_INT_MAX # ifdef INT_MAX # define PERL_INT_MAX ((int)INT_MAX) # else # ifdef MAXINT /* Often used in */ # define PERL_INT_MAX ((int)MAXINT) # else # define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1)) # endif # endif #endif #ifndef PERL_INT_MIN # ifdef INT_MIN # define PERL_INT_MIN ((int)INT_MIN) # else # ifdef MININT # define PERL_INT_MIN ((int)MININT) # else # define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3)) # endif # endif #endif #ifndef PERL_ULONG_MAX # ifdef ULONG_MAX # define PERL_ULONG_MAX ((unsigned long)ULONG_MAX) # else # ifdef MAXULONG # define PERL_ULONG_MAX ((unsigned long)MAXULONG) # else # define PERL_ULONG_MAX (~(unsigned long)0) # endif # endif #endif #ifndef PERL_ULONG_MIN # define PERL_ULONG_MIN ((unsigned long)0L) #endif #ifndef PERL_LONG_MAX # ifdef LONG_MAX # define PERL_LONG_MAX ((long)LONG_MAX) # else # ifdef MAXLONG # define PERL_LONG_MAX ((long)MAXLONG) # else # define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1)) # endif # endif #endif #ifndef PERL_LONG_MIN # ifdef LONG_MIN # define PERL_LONG_MIN ((long)LONG_MIN) # else # ifdef MINLONG # define PERL_LONG_MIN ((long)MINLONG) # else # define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3)) # endif # endif #endif #if defined(HAS_QUAD) && (defined(convex) || defined(uts)) # ifndef PERL_UQUAD_MAX # ifdef ULONGLONG_MAX # define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX) # else # ifdef MAXULONGLONG # define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG) # else # define PERL_UQUAD_MAX (~(unsigned long long)0) # endif # endif # endif # ifndef PERL_UQUAD_MIN # define PERL_UQUAD_MIN ((unsigned long long)0L) # endif # ifndef PERL_QUAD_MAX # ifdef LONGLONG_MAX # define PERL_QUAD_MAX ((long long)LONGLONG_MAX) # else # ifdef MAXLONGLONG # define PERL_QUAD_MAX ((long long)MAXLONGLONG) # else # define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1)) # endif # endif # endif # ifndef PERL_QUAD_MIN # ifdef LONGLONG_MIN # define PERL_QUAD_MIN ((long long)LONGLONG_MIN) # else # ifdef MINLONGLONG # define PERL_QUAD_MIN ((long long)MINLONGLONG) # else # define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3)) # endif # endif # endif #endif /* This is based on code from 5.003 perl.h */ #ifdef HAS_QUAD # ifdef cray #ifndef IVTYPE # define IVTYPE int #endif #ifndef IV_MIN # define IV_MIN PERL_INT_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_INT_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_UINT_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_UINT_MAX #endif # ifdef INTSIZE #ifndef IVSIZE # define IVSIZE INTSIZE #endif # endif # else # if defined(convex) || defined(uts) #ifndef IVTYPE # define IVTYPE long long #endif #ifndef IV_MIN # define IV_MIN PERL_QUAD_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_QUAD_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_UQUAD_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_UQUAD_MAX #endif # ifdef LONGLONGSIZE #ifndef IVSIZE # define IVSIZE LONGLONGSIZE #endif # endif # else #ifndef IVTYPE # define IVTYPE long #endif #ifndef IV_MIN # define IV_MIN PERL_LONG_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_LONG_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_ULONG_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_ULONG_MAX #endif # ifdef LONGSIZE #ifndef IVSIZE # define IVSIZE LONGSIZE #endif # endif # endif # endif #ifndef IVSIZE # define IVSIZE 8 #endif #ifndef LONGSIZE # define LONGSIZE 8 #endif #ifndef PERL_QUAD_MIN # define PERL_QUAD_MIN IV_MIN #endif #ifndef PERL_QUAD_MAX # define PERL_QUAD_MAX IV_MAX #endif #ifndef PERL_UQUAD_MIN # define PERL_UQUAD_MIN UV_MIN #endif #ifndef PERL_UQUAD_MAX # define PERL_UQUAD_MAX UV_MAX #endif #else #ifndef IVTYPE # define IVTYPE long #endif #ifndef LONGSIZE # define LONGSIZE 4 #endif #ifndef IV_MIN # define IV_MIN PERL_LONG_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_LONG_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_ULONG_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_ULONG_MAX #endif #endif #ifndef IVSIZE # ifdef LONGSIZE # define IVSIZE LONGSIZE # else # define IVSIZE 4 /* A bold guess, but the best we can make. */ # endif #endif #ifndef UVTYPE # define UVTYPE unsigned IVTYPE #endif #ifndef UVSIZE # define UVSIZE IVSIZE #endif #ifndef PERL_SIGNALS_UNSAFE_FLAG #define PERL_SIGNALS_UNSAFE_FLAG 0x0001 #if (PERL_BCDVERSION < 0x5008000) # define D_PPP_PERL_SIGNALS_INIT PERL_SIGNALS_UNSAFE_FLAG #else # define D_PPP_PERL_SIGNALS_INIT 0 #endif #if defined(NEED_PL_signals) static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; #elif defined(NEED_PL_signals_GLOBAL) U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; #else extern U32 DPPP_(my_PL_signals); #endif #define PL_signals DPPP_(my_PL_signals) #endif /* Hint: PL_ppaddr * Calling an op via PL_ppaddr requires passing a context argument * for threaded builds. Since the context argument is different for * 5.005 perls, you can use aTHXR (supplied by ppport.h), which will * automatically be defined as the correct argument. */ #if (PERL_BCDVERSION <= 0x5005005) /* Replace: 1 */ # define PL_ppaddr ppaddr # define PL_no_modify no_modify /* Replace: 0 */ #endif #if (PERL_BCDVERSION <= 0x5004005) /* Replace: 1 */ # define PL_DBsignal DBsignal # define PL_DBsingle DBsingle # define PL_DBsub DBsub # define PL_DBtrace DBtrace # define PL_Sv Sv # define PL_Xpv Xpv # define PL_bufend bufend # define PL_bufptr bufptr # define PL_compiling compiling # define PL_copline copline # define PL_curcop curcop # define PL_curstash curstash # define PL_debstash debstash # define PL_defgv defgv # define PL_diehook diehook # define PL_dirty dirty # define PL_dowarn dowarn # define PL_errgv errgv # define PL_error_count error_count # define PL_expect expect # define PL_hexdigit hexdigit # define PL_hints hints # define PL_in_my in_my # define PL_laststatval laststatval # define PL_lex_state lex_state # define PL_lex_stuff lex_stuff # define PL_linestr linestr # define PL_na na # define PL_perl_destruct_level perl_destruct_level # define PL_perldb perldb # define PL_rsfp_filters rsfp_filters # define PL_rsfp rsfp # define PL_stack_base stack_base # define PL_stack_sp stack_sp # define PL_statcache statcache # define PL_stdingv stdingv # define PL_sv_arenaroot sv_arenaroot # define PL_sv_no sv_no # define PL_sv_undef sv_undef # define PL_sv_yes sv_yes # define PL_tainted tainted # define PL_tainting tainting # define PL_tokenbuf tokenbuf # define PL_mess_sv mess_sv /* Replace: 0 */ #endif /* Warning: PL_parser * For perl versions earlier than 5.9.5, this is an always * non-NULL dummy. Also, it cannot be dereferenced. Don't * use it if you can avoid it, and unless you absolutely know * what you're doing. * If you always check that PL_parser is non-NULL, you can * define DPPP_PL_parser_NO_DUMMY to avoid the creation of * a dummy parser structure. */ #if (PERL_BCDVERSION >= 0x5009005) # ifdef DPPP_PL_parser_NO_DUMMY # define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ (croak("panic: PL_parser == NULL in %s:%d", \ __FILE__, __LINE__), (yy_parser *) NULL))->var) # else # ifdef DPPP_PL_parser_NO_DUMMY_WARNING # define D_PPP_parser_dummy_warning(var) # else # define D_PPP_parser_dummy_warning(var) \ warn("warning: dummy PL_" #var " used in %s:%d", __FILE__, __LINE__), # endif # define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ (D_PPP_parser_dummy_warning(var) &DPPP_(dummy_PL_parser)))->var) #if defined(NEED_PL_parser) static yy_parser DPPP_(dummy_PL_parser); #elif defined(NEED_PL_parser_GLOBAL) yy_parser DPPP_(dummy_PL_parser); #else extern yy_parser DPPP_(dummy_PL_parser); #endif # endif /* PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf depends on PL_parser */ /* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf * Do not use this variable unless you know exactly what you're * doing. It is internal to the perl parser and may change or even * be removed in the future. As of perl 5.9.5, you have to check * for (PL_parser != NULL) for this variable to have any effect. * An always non-NULL PL_parser dummy is provided for earlier * perl versions. * If PL_parser is NULL when you try to access this variable, a * dummy is being accessed instead and a warning is issued unless * you define DPPP_PL_parser_NO_DUMMY_WARNING. * If DPPP_PL_parser_NO_DUMMY is defined, the code trying to access * this variable will croak with a panic message. */ # define PL_expect D_PPP_my_PL_parser_var(expect) # define PL_copline D_PPP_my_PL_parser_var(copline) # define PL_rsfp D_PPP_my_PL_parser_var(rsfp) # define PL_rsfp_filters D_PPP_my_PL_parser_var(rsfp_filters) # define PL_linestr D_PPP_my_PL_parser_var(linestr) # define PL_bufptr D_PPP_my_PL_parser_var(bufptr) # define PL_bufend D_PPP_my_PL_parser_var(bufend) # define PL_lex_state D_PPP_my_PL_parser_var(lex_state) # define PL_lex_stuff D_PPP_my_PL_parser_var(lex_stuff) # define PL_tokenbuf D_PPP_my_PL_parser_var(tokenbuf) # define PL_in_my D_PPP_my_PL_parser_var(in_my) # define PL_in_my_stash D_PPP_my_PL_parser_var(in_my_stash) # define PL_error_count D_PPP_my_PL_parser_var(error_count) #else /* ensure that PL_parser != NULL and cannot be dereferenced */ # define PL_parser ((void *) 1) #endif #if (PERL_BCDVERSION <= 0x5003022) # undef start_subparse # if (PERL_BCDVERSION < 0x5003022) #ifndef start_subparse # define start_subparse(a, b) Perl_start_subparse() #endif # else #ifndef start_subparse # define start_subparse(a, b) Perl_start_subparse(b) #endif # endif #if (PERL_BCDVERSION < 0x5003007) foo #endif #endif /* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */ #if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005) /* And before that, we need to make sure this gets compiled for the functions * that rely on it */ #define NEED_newCONSTSUB #if defined(NEED_newCONSTSUB) static CV * DPPP_(my_newCONSTSUB)(HV * stash, const char * name, SV * sv); static #else extern CV * DPPP_(my_newCONSTSUB)(HV * stash, const char * name, SV * sv); #endif #if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL) #ifdef newCONSTSUB # undef newCONSTSUB #endif #define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c) #define Perl_newCONSTSUB DPPP_(my_newCONSTSUB) /* This is just a trick to avoid a dependency of newCONSTSUB on PL_parser */ /* (There's no PL_parser in perl < 5.005, so this is completely safe) */ #define D_PPP_PL_copline PL_copline CV * DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv) { CV *cv; U32 oldhints = PL_hints; HV *old_cop_stash = PL_curcop->cop_stash; HV *old_curstash = PL_curstash; line_t oldline = PL_curcop->cop_line; PL_curcop->cop_line = D_PPP_PL_copline; PL_hints &= ~HINT_BLOCK_SCOPE; if (stash) PL_curstash = PL_curcop->cop_stash = stash; cv = newSUB( start_subparse(FALSE, 0), newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)), newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */ newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv)) ); PL_hints = oldhints; PL_curcop->cop_stash = old_cop_stash; PL_curstash = old_curstash; PL_curcop->cop_line = oldline; return cv; } #endif #endif #ifndef PERL_MAGIC_sv # define PERL_MAGIC_sv '\0' #endif #ifndef PERL_MAGIC_overload # define PERL_MAGIC_overload 'A' #endif #ifndef PERL_MAGIC_overload_elem # define PERL_MAGIC_overload_elem 'a' #endif #ifndef PERL_MAGIC_overload_table # define PERL_MAGIC_overload_table 'c' #endif #ifndef PERL_MAGIC_bm # define PERL_MAGIC_bm 'B' #endif #ifndef PERL_MAGIC_regdata # define PERL_MAGIC_regdata 'D' #endif #ifndef PERL_MAGIC_regdatum # define PERL_MAGIC_regdatum 'd' #endif #ifndef PERL_MAGIC_env # define PERL_MAGIC_env 'E' #endif #ifndef PERL_MAGIC_envelem # define PERL_MAGIC_envelem 'e' #endif #ifndef PERL_MAGIC_fm # define PERL_MAGIC_fm 'f' #endif #ifndef PERL_MAGIC_regex_global # define PERL_MAGIC_regex_global 'g' #endif #ifndef PERL_MAGIC_isa # define PERL_MAGIC_isa 'I' #endif #ifndef PERL_MAGIC_isaelem # define PERL_MAGIC_isaelem 'i' #endif #ifndef PERL_MAGIC_nkeys # define PERL_MAGIC_nkeys 'k' #endif #ifndef PERL_MAGIC_dbfile # define PERL_MAGIC_dbfile 'L' #endif #ifndef PERL_MAGIC_dbline # define PERL_MAGIC_dbline 'l' #endif #ifndef PERL_MAGIC_mutex # define PERL_MAGIC_mutex 'm' #endif #ifndef PERL_MAGIC_shared # define PERL_MAGIC_shared 'N' #endif #ifndef PERL_MAGIC_shared_scalar # define PERL_MAGIC_shared_scalar 'n' #endif #ifndef PERL_MAGIC_collxfrm # define PERL_MAGIC_collxfrm 'o' #endif #ifndef PERL_MAGIC_tied # define PERL_MAGIC_tied 'P' #endif #ifndef PERL_MAGIC_tiedelem # define PERL_MAGIC_tiedelem 'p' #endif #ifndef PERL_MAGIC_tiedscalar # define PERL_MAGIC_tiedscalar 'q' #endif #ifndef PERL_MAGIC_qr # define PERL_MAGIC_qr 'r' #endif #ifndef PERL_MAGIC_sig # define PERL_MAGIC_sig 'S' #endif #ifndef PERL_MAGIC_sigelem # define PERL_MAGIC_sigelem 's' #endif #ifndef PERL_MAGIC_taint # define PERL_MAGIC_taint 't' #endif #ifndef PERL_MAGIC_uvar # define PERL_MAGIC_uvar 'U' #endif #ifndef PERL_MAGIC_uvar_elem # define PERL_MAGIC_uvar_elem 'u' #endif #ifndef PERL_MAGIC_vstring # define PERL_MAGIC_vstring 'V' #endif #ifndef PERL_MAGIC_vec # define PERL_MAGIC_vec 'v' #endif #ifndef PERL_MAGIC_utf8 # define PERL_MAGIC_utf8 'w' #endif #ifndef PERL_MAGIC_substr # define PERL_MAGIC_substr 'x' #endif #ifndef PERL_MAGIC_defelem # define PERL_MAGIC_defelem 'y' #endif #ifndef PERL_MAGIC_glob # define PERL_MAGIC_glob '*' #endif #ifndef PERL_MAGIC_arylen # define PERL_MAGIC_arylen '#' #endif #ifndef PERL_MAGIC_pos # define PERL_MAGIC_pos '.' #endif #ifndef PERL_MAGIC_backref # define PERL_MAGIC_backref '<' #endif #ifndef PERL_MAGIC_ext # define PERL_MAGIC_ext '~' #endif #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #ifndef PERL_STATIC_INLINE # define PERL_STATIC_INLINE static inline #endif #else #ifndef PERL_STATIC_INLINE # define PERL_STATIC_INLINE static #endif #endif #ifndef cBOOL # define cBOOL(cbool) ((cbool) ? (bool)1 : (bool)0) #endif #ifndef OpHAS_SIBLING # define OpHAS_SIBLING(o) (cBOOL((o)->op_sibling)) #endif #ifndef OpSIBLING # define OpSIBLING(o) (0 + (o)->op_sibling) #endif #ifndef OpMORESIB_set # define OpMORESIB_set(o, sib) ((o)->op_sibling = (sib)) #endif #ifndef OpLASTSIB_set # define OpLASTSIB_set(o, parent) ((o)->op_sibling = NULL) #endif #ifndef OpMAYBESIB_set # define OpMAYBESIB_set(o, sib, parent) ((o)->op_sibling = (sib)) #endif #ifndef HEf_SVKEY # define HEf_SVKEY -2 #endif #if defined(DEBUGGING) && !defined(__COVERITY__) #ifndef __ASSERT_ # define __ASSERT_(statement) assert(statement), #endif #else #ifndef __ASSERT_ # define __ASSERT_(statement) #endif #endif #ifndef __has_builtin # define __has_builtin(x) 0 #endif #if __has_builtin(__builtin_unreachable) # define D_PPP_HAS_BUILTIN_UNREACHABLE #elif (defined(__GNUC__) && ( __GNUC__ > 4 \ || __GNUC__ == 4 && __GNUC_MINOR__ >= 5)) # define D_PPP_HAS_BUILTIN_UNREACHABLE #endif #ifndef ASSUME # ifdef DEBUGGING # define ASSUME(x) assert(x) # elif defined(_MSC_VER) # define ASSUME(x) __assume(x) # elif defined(__ARMCC_VERSION) # define ASSUME(x) __promise(x) # elif defined(D_PPP_HAS_BUILTIN_UNREACHABLE) # define ASSUME(x) ((x) ? (void) 0 : __builtin_unreachable()) # else # define ASSUME(x) assert(x) # endif #endif #ifndef NOT_REACHED # ifdef D_PPP_HAS_BUILTIN_UNREACHABLE # define NOT_REACHED \ STMT_START { \ ASSUME(!"UNREACHABLE"); __builtin_unreachable(); \ } STMT_END # elif ! defined(__GNUC__) && (defined(__sun) || defined(__hpux)) # define NOT_REACHED # else # define NOT_REACHED ASSUME(!"UNREACHABLE") # endif #endif #ifndef WIDEST_UTYPE # ifdef QUADKIND # ifdef U64TYPE # define WIDEST_UTYPE U64TYPE # else # define WIDEST_UTYPE unsigned Quad_t # endif # else # define WIDEST_UTYPE U32 # endif #endif /* These could become provided if/when they become part of the public API */ #ifndef withinCOUNT # define withinCOUNT(c, l, n) \ (((WIDEST_UTYPE) (((c)) - ((l) | 0))) <= (((WIDEST_UTYPE) ((n) | 0)))) #endif #ifndef inRANGE # define inRANGE(c, l, u) \ ( (sizeof(c) == sizeof(U8)) ? withinCOUNT(((U8) (c)), (l), ((u) - (l))) \ : (sizeof(c) == sizeof(U32)) ? withinCOUNT(((U32) (c)), (l), ((u) - (l))) \ : (withinCOUNT(((WIDEST_UTYPE) (c)), (l), ((u) - (l))))) #endif /* The '| 0' part ensures a compiler error if c is not integer (like e.g., a * pointer) */ #undef FITS_IN_8_BITS /* handy.h version uses a core-only constant */ #ifndef FITS_IN_8_BITS # define FITS_IN_8_BITS(c) ( (sizeof(c) == 1) \ || !(((WIDEST_UTYPE)((c) | 0)) & ~0xFF)) #endif /* Create the macro for "is'macro'_utf8_safe(s, e)". For code points below * 256, it calls the equivalent _L1 macro by converting the UTF-8 to code * point. That is so that it can automatically get the bug fixes done in this * file. */ #define D_PPP_IS_GENERIC_UTF8_SAFE(s, e, macro) \ (((e) - (s)) <= 0 \ ? 0 \ : UTF8_IS_INVARIANT((s)[0]) \ ? is ## macro ## _L1((s)[0]) \ : (((e) - (s)) < UTF8SKIP(s)) \ ? 0 \ : UTF8_IS_DOWNGRADEABLE_START((s)[0]) \ /* The cast in the line below is only to silence warnings */ \ ? is ## macro ## _L1((WIDEST_UTYPE) LATIN1_TO_NATIVE( \ UTF8_ACCUMULATE(NATIVE_UTF8_TO_I8((s)[0]) \ & UTF_START_MASK(2), \ (s)[1]))) \ : is ## macro ## _utf8(s)) /* Create the macro for "is'macro'_LC_utf8_safe(s, e)". For code points below * 256, it calls the equivalent _L1 macro by converting the UTF-8 to code * point. That is so that it can automatically get the bug fixes done in this * file. */ #define D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, macro) \ (((e) - (s)) <= 0 \ ? 0 \ : UTF8_IS_INVARIANT((s)[0]) \ ? is ## macro ## _LC((s)[0]) \ : (((e) - (s)) < UTF8SKIP(s)) \ ? 0 \ : UTF8_IS_DOWNGRADEABLE_START((s)[0]) \ /* The cast in the line below is only to silence warnings */ \ ? is ## macro ## _LC((WIDEST_UTYPE) LATIN1_TO_NATIVE( \ UTF8_ACCUMULATE(NATIVE_UTF8_TO_I8((s)[0]) \ & UTF_START_MASK(2), \ (s)[1]))) \ : is ## macro ## _utf8(s)) /* A few of the early functions are broken. For these and the non-LC case, * machine generated code is substituted. But that code doesn't work for * locales. This is just like the above macro, but at the end, we call the * macro we've generated for the above 255 case, which is correct since locale * isn't involved. This will generate extra code to handle the 0-255 inputs, * but hopefully it will be optimized out by the C compiler. But just in case * it isn't, this macro is only used on the few versions that are broken */ #define D_PPP_IS_GENERIC_LC_UTF8_SAFE_BROKEN(s, e, macro) \ (((e) - (s)) <= 0 \ ? 0 \ : UTF8_IS_INVARIANT((s)[0]) \ ? is ## macro ## _LC((s)[0]) \ : (((e) - (s)) < UTF8SKIP(s)) \ ? 0 \ : UTF8_IS_DOWNGRADEABLE_START((s)[0]) \ /* The cast in the line below is only to silence warnings */ \ ? is ## macro ## _LC((WIDEST_UTYPE) LATIN1_TO_NATIVE( \ UTF8_ACCUMULATE(NATIVE_UTF8_TO_I8((s)[0]) \ & UTF_START_MASK(2), \ (s)[1]))) \ : is ## macro ## _utf8_safe(s, e)) #ifndef SvRX # define SvRX(rv) (SvROK((rv)) ? (SvMAGICAL(SvRV((rv))) ? (mg_find(SvRV((rv)), PERL_MAGIC_qr) ? mg_find(SvRV((rv)), PERL_MAGIC_qr)->mg_obj : NULL) : NULL) : NULL) #endif #ifndef SvRXOK # define SvRXOK(sv) (!!SvRX(sv)) #endif #ifndef PERL_UNUSED_DECL # ifdef HASATTRIBUTE # if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) # define PERL_UNUSED_DECL # else # define PERL_UNUSED_DECL __attribute__((unused)) # endif # else # define PERL_UNUSED_DECL # endif #endif #ifndef PERL_UNUSED_ARG # if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ # include # define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) # else # define PERL_UNUSED_ARG(x) ((void)x) # endif #endif #ifndef PERL_UNUSED_VAR # define PERL_UNUSED_VAR(x) ((void)x) #endif #ifndef PERL_UNUSED_CONTEXT # ifdef USE_ITHREADS # define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) # else # define PERL_UNUSED_CONTEXT # endif #endif #ifndef PERL_UNUSED_RESULT # if defined(__GNUC__) && defined(HASATTRIBUTE_WARN_UNUSED_RESULT) # define PERL_UNUSED_RESULT(v) STMT_START { __typeof__(v) z = (v); (void)sizeof(z); } STMT_END # else # define PERL_UNUSED_RESULT(v) ((void)(v)) # endif #endif #ifndef NOOP # define NOOP /*EMPTY*/(void)0 #endif #if (PERL_BCDVERSION < 0x5006001) && (PERL_BCDVERSION < 0x5027007) #undef dNOOP #ifndef dNOOP # define dNOOP struct Perl___notused_struct #endif #endif #ifndef NVTYPE # if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) # define NVTYPE long double # else # define NVTYPE double # endif typedef NVTYPE NV; #endif #ifndef INT2PTR # if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) # define PTRV UV # define INT2PTR(any,d) (any)(d) # else # if PTRSIZE == LONGSIZE # define PTRV unsigned long # else # define PTRV unsigned # endif # define INT2PTR(any,d) (any)(PTRV)(d) # endif #endif #ifndef PTR2ul # if PTRSIZE == LONGSIZE # define PTR2ul(p) (unsigned long)(p) # else # define PTR2ul(p) INT2PTR(unsigned long,p) # endif #endif #ifndef PERL_STACK_OFFSET_DEFINED typedef I32 Stack_off_t; # define Stack_off_t_MAX I32_MAX # define PERL_STACK_OFFSET_DEFINED #endif #ifndef PTR2nat # define PTR2nat(p) (PTRV)(p) #endif #ifndef NUM2PTR # define NUM2PTR(any,d) (any)PTR2nat(d) #endif #ifndef PTR2IV # define PTR2IV(p) INT2PTR(IV,p) #endif #ifndef PTR2UV # define PTR2UV(p) INT2PTR(UV,p) #endif #ifndef PTR2NV # define PTR2NV(p) NUM2PTR(NV,p) #endif #ifdef __cplusplus #undef START_EXTERN_C #ifndef START_EXTERN_C # define START_EXTERN_C extern "C" { #endif #undef END_EXTERN_C #ifndef END_EXTERN_C # define END_EXTERN_C } #endif #undef EXTERN_C #ifndef EXTERN_C # define EXTERN_C extern "C" #endif #else #undef START_EXTERN_C #ifndef START_EXTERN_C # define START_EXTERN_C #endif #undef END_EXTERN_C #ifndef END_EXTERN_C # define END_EXTERN_C #endif #undef EXTERN_C #ifndef EXTERN_C # define EXTERN_C extern #endif #endif #if (PERL_BCDVERSION < 0x5004000) || defined(PERL_GCC_PEDANTIC) # ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN #ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN # define PERL_GCC_BRACE_GROUPS_FORBIDDEN #endif # endif #endif #if ! defined(__GNUC__) || defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) || defined(__cplusplus) # undef PERL_USE_GCC_BRACE_GROUPS #else # ifndef PERL_USE_GCC_BRACE_GROUPS # define PERL_USE_GCC_BRACE_GROUPS # endif #endif #if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) #undef STMT_START #ifndef STMT_START # define STMT_START if (1) #endif #undef STMT_END #ifndef STMT_END # define STMT_END else (void)0 #endif #else #undef STMT_START #ifndef STMT_START # define STMT_START do #endif #undef STMT_END #ifndef STMT_END # define STMT_END while (0) #endif #endif #ifndef boolSV # define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no) #endif /* DEFSV appears first in 5.004_56 */ #ifndef DEFSV # define DEFSV GvSV(PL_defgv) #endif #ifndef SAVE_DEFSV # define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv)) #endif #ifndef DEFSV_set # define DEFSV_set(sv) (DEFSV = (sv)) #endif /* Older perls (<=5.003) lack AvFILLp */ #ifndef AvFILLp # define AvFILLp AvFILL #endif #ifndef av_tindex # define av_tindex AvFILL #endif #ifndef av_top_index # define av_top_index AvFILL #endif #ifndef av_count # define av_count(av) (AvFILL(av)+1) #endif #ifndef ERRSV # define ERRSV get_sv("@",FALSE) #endif /* Hint: gv_stashpvn * This function's backport doesn't support the length parameter, but * rather ignores it. Portability can only be ensured if the length * parameter is used for speed reasons, but the length can always be * correctly computed from the string argument. */ #ifndef gv_stashpvn # define gv_stashpvn(str,len,create) gv_stashpv(str,create) #endif /* Replace: 1 */ #ifndef get_cv # define get_cv perl_get_cv #endif #ifndef get_sv # define get_sv perl_get_sv #endif #ifndef get_av # define get_av perl_get_av #endif #ifndef get_hv # define get_hv perl_get_hv #endif /* Replace: 0 */ #ifndef dUNDERBAR # define dUNDERBAR dNOOP #endif #ifndef UNDERBAR # define UNDERBAR DEFSV #endif #ifndef dAX # define dAX I32 ax = MARK - PL_stack_base + 1 #endif #ifndef dITEMS # define dITEMS I32 items = SP - MARK #endif #ifndef dXSTARG # define dXSTARG SV * targ = sv_newmortal() #endif #ifndef dAXMARK # define dAXMARK I32 ax = POPMARK; \ SV ** const mark = PL_stack_base + ax++ #endif #ifndef XSprePUSH # define XSprePUSH (sp = PL_stack_base + ax - 1) #endif #if (PERL_BCDVERSION < 0x5005000) #undef XSRETURN #ifndef XSRETURN # define XSRETURN(off) \ STMT_START { \ PL_stack_sp = PL_stack_base + ax + ((off) - 1); \ return; \ } STMT_END #endif #endif #ifndef XSPROTO # define XSPROTO(name) void name(pTHX_ CV* cv) #endif #ifndef SVfARG # define SVfARG(p) ((void*)(p)) #endif #ifndef PERL_ABS # define PERL_ABS(x) ((x) < 0 ? -(x) : (x)) #endif #ifndef dVAR # define dVAR dNOOP #endif #ifndef SVf # define SVf "_" #endif #ifndef CPERLscope # define CPERLscope(x) x #endif #ifndef PERL_HASH # define PERL_HASH(hash,str,len) \ STMT_START { \ const char *s_PeRlHaSh = str; \ I32 i_PeRlHaSh = len; \ U32 hash_PeRlHaSh = 0; \ while (i_PeRlHaSh--) \ hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \ (hash) = hash_PeRlHaSh; \ } STMT_END #endif #ifndef PERLIO_FUNCS_DECL # ifdef PERLIO_FUNCS_CONST # define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs # define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs) # else # define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs # define PERLIO_FUNCS_CAST(funcs) (funcs) # endif #endif /* provide these typedefs for older perls */ #if (PERL_BCDVERSION < 0x5009003) # ifdef ARGSproto typedef OP* (CPERLscope(*Perl_ppaddr_t))(ARGSproto); # else typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX); # endif typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*); #endif /* On versions without NATIVE_TO_ASCII, only ASCII is supported */ #if defined(EBCDIC) && defined(NATIVE_TO_ASCI) #ifndef NATIVE_TO_LATIN1 # define NATIVE_TO_LATIN1(c) NATIVE_TO_ASCII(c) #endif #ifndef LATIN1_TO_NATIVE # define LATIN1_TO_NATIVE(c) ASCII_TO_NATIVE(c) #endif #ifndef NATIVE_TO_UNI # define NATIVE_TO_UNI(c) ((c) > 255 ? (c) : NATIVE_TO_LATIN1(c)) #endif #ifndef UNI_TO_NATIVE # define UNI_TO_NATIVE(c) ((c) > 255 ? (c) : LATIN1_TO_NATIVE(c)) #endif #else #ifndef NATIVE_TO_LATIN1 # define NATIVE_TO_LATIN1(c) (c) #endif #ifndef LATIN1_TO_NATIVE # define LATIN1_TO_NATIVE(c) (c) #endif #ifndef NATIVE_TO_UNI # define NATIVE_TO_UNI(c) (c) #endif #ifndef UNI_TO_NATIVE # define UNI_TO_NATIVE(c) (c) #endif #endif /* Warning: LATIN1_TO_NATIVE, NATIVE_TO_LATIN1 NATIVE_TO_UNI UNI_TO_NATIVE EBCDIC is not supported on versions earlier than 5.7.1 */ /* The meaning of this changed; use the modern version */ #undef isPSXSPC #undef isPSXSPC_A #undef isPSXSPC_L1 /* Hint: isPSXSPC, isPSXSPC_A, isPSXSPC_L1, isPSXSPC_utf8_safe This is equivalent to the corresponding isSPACE-type macro. On perls before 5.18, this matched a vertical tab and SPACE didn't. But the ppport.h SPACE version does match VT in all perl releases. Since VT's are extremely rarely found in real-life files, this difference effectively doesn't matter */ /* Hint: isSPACE, isSPACE_A, isSPACE_L1, isSPACE_utf8_safe Until Perl 5.18, this did not match the vertical tab (VT). The ppport.h version does match it in all perl releases. Since VT's are extremely rarely found in real-life files, this difference effectively doesn't matter */ #ifdef EBCDIC /* This is the first version where these macros are fully correct on EBCDIC * platforms. Relying on the C library functions, as earlier releases did, * causes problems with locales */ # if (PERL_BCDVERSION < 0x5022000) # undef isALNUM # undef isALNUM_A # undef isALNUM_L1 # undef isALNUMC # undef isALNUMC_A # undef isALNUMC_L1 # undef isALPHA # undef isALPHA_A # undef isALPHA_L1 # undef isALPHANUMERIC # undef isALPHANUMERIC_A # undef isALPHANUMERIC_L1 # undef isASCII # undef isASCII_A # undef isASCII_L1 # undef isBLANK # undef isBLANK_A # undef isBLANK_L1 # undef isCNTRL # undef isCNTRL_A # undef isCNTRL_L1 # undef isDIGIT # undef isDIGIT_A # undef isDIGIT_L1 # undef isGRAPH # undef isGRAPH_A # undef isGRAPH_L1 # undef isIDCONT # undef isIDCONT_A # undef isIDCONT_L1 # undef isIDFIRST # undef isIDFIRST_A # undef isIDFIRST_L1 # undef isLOWER # undef isLOWER_A # undef isLOWER_L1 # undef isOCTAL # undef isOCTAL_A # undef isOCTAL_L1 # undef isPRINT # undef isPRINT_A # undef isPRINT_L1 # undef isPUNCT # undef isPUNCT_A # undef isPUNCT_L1 # undef isSPACE # undef isSPACE_A # undef isSPACE_L1 # undef isUPPER # undef isUPPER_A # undef isUPPER_L1 # undef isWORDCHAR # undef isWORDCHAR_A # undef isWORDCHAR_L1 # undef isXDIGIT # undef isXDIGIT_A # undef isXDIGIT_L1 # endif #ifndef isASCII # define isASCII(c) (isCNTRL(c) || isPRINT(c)) #endif /* The below is accurate for all EBCDIC code pages supported by * all the versions of Perl overridden by this */ #ifndef isCNTRL # define isCNTRL(c) ( (c) == '\0' || (c) == '\a' || (c) == '\b' \ || (c) == '\f' || (c) == '\n' || (c) == '\r' \ || (c) == '\t' || (c) == '\v' \ || ((c) <= 3 && (c) >= 1) /* SOH, STX, ETX */ \ || (c) == 7 /* U+7F DEL */ \ || ((c) <= 0x13 && (c) >= 0x0E) /* SO, SI */ \ /* DLE, DC[1-3] */ \ || (c) == 0x18 /* U+18 CAN */ \ || (c) == 0x19 /* U+19 EOM */ \ || ((c) <= 0x1F && (c) >= 0x1C) /* [FGRU]S */ \ || (c) == 0x26 /* U+17 ETB */ \ || (c) == 0x27 /* U+1B ESC */ \ || (c) == 0x2D /* U+05 ENQ */ \ || (c) == 0x2E /* U+06 ACK */ \ || (c) == 0x32 /* U+16 SYN */ \ || (c) == 0x37 /* U+04 EOT */ \ || (c) == 0x3C /* U+14 DC4 */ \ || (c) == 0x3D /* U+15 NAK */ \ || (c) == 0x3F /* U+1A SUB */ \ ) #endif #if '^' == 106 /* EBCDIC POSIX-BC */ # define D_PPP_OUTLIER_CONTROL 0x5F #else /* EBCDIC 1047 037 */ # define D_PPP_OUTLIER_CONTROL 0xFF #endif /* The controls are everything below blank, plus one outlier */ #ifndef isCNTRL_L1 # define isCNTRL_L1(c) ((WIDEST_UTYPE) (c) < ' ' \ || (WIDEST_UTYPE) (c) == D_PPP_OUTLIER_CONTROL) #endif /* The ordering of the tests in this and isUPPER are to exclude most characters * early */ #ifndef isLOWER # define isLOWER(c) ( (c) >= 'a' && (c) <= 'z' \ && ( (c) <= 'i' \ || ((c) >= 'j' && (c) <= 'r') \ || (c) >= 's')) #endif #ifndef isUPPER # define isUPPER(c) ( (c) >= 'A' && (c) <= 'Z' \ && ( (c) <= 'I' \ || ((c) >= 'J' && (c) <= 'R') \ || (c) >= 'S')) #endif #else /* Above is EBCDIC; below is ASCII */ # if (PERL_BCDVERSION < 0x5004000) /* The implementation of these in older perl versions can give wrong results if * the C program locale is set to other than the C locale */ # undef isALNUM # undef isALNUM_A # undef isALPHA # undef isALPHA_A # undef isDIGIT # undef isDIGIT_A # undef isIDFIRST # undef isIDFIRST_A # undef isLOWER # undef isLOWER_A # undef isUPPER # undef isUPPER_A # endif # if (PERL_BCDVERSION == 0x5007000) /* this perl made space GRAPH */ # undef isGRAPH # endif # if (PERL_BCDVERSION < 0x5008000) /* earlier perls omitted DEL */ # undef isCNTRL # endif # if (PERL_BCDVERSION < 0x5010000) /* earlier perls included all of the isSPACE() characters, which is wrong. The * version provided by Devel::PPPort always overrides an existing buggy * version. */ # undef isPRINT # undef isPRINT_A # endif # if (PERL_BCDVERSION < 0x5014000) /* earlier perls always returned true if the parameter was a signed char */ # undef isASCII # undef isASCII_A # endif # if (PERL_BCDVERSION < 0x5017008) /* earlier perls didn't include PILCROW, SECTION SIGN */ # undef isPUNCT_L1 # endif # if (PERL_BCDVERSION < 0x5013007) /* khw didn't investigate why this failed */ # undef isALNUMC_L1 #endif # if (PERL_BCDVERSION < 0x5020000) /* earlier perls didn't include \v */ # undef isSPACE # undef isSPACE_A # undef isSPACE_L1 # endif #ifndef isASCII # define isASCII(c) ((WIDEST_UTYPE) (c) <= 127) #endif #ifndef isCNTRL # define isCNTRL(c) ((WIDEST_UTYPE) (c) < ' ' || (c) == 127) #endif #ifndef isCNTRL_L1 # define isCNTRL_L1(c) ( (WIDEST_UTYPE) (c) < ' ' \ || inRANGE((c), 0x7F, 0x9F)) #endif #ifndef isLOWER # define isLOWER(c) inRANGE((c), 'a', 'z') #endif #ifndef isUPPER # define isUPPER(c) inRANGE((c), 'A', 'Z') #endif #endif /* Below are definitions common to EBCDIC and ASCII */ #ifndef isASCII_L1 # define isASCII_L1(c) isASCII(c) #endif #ifndef isASCII_LC # define isASCII_LC(c) isASCII(c) #endif #ifndef isALNUM # define isALNUM(c) isWORDCHAR(c) #endif #ifndef isALNUMC # define isALNUMC(c) isALPHANUMERIC(c) #endif #ifndef isALNUMC_L1 # define isALNUMC_L1(c) isALPHANUMERIC_L1(c) #endif #ifndef isALPHA # define isALPHA(c) (isUPPER(c) || isLOWER(c)) #endif #ifndef isALPHA_L1 # define isALPHA_L1(c) (isUPPER_L1(c) || isLOWER_L1(c)) #endif #ifndef isALPHANUMERIC # define isALPHANUMERIC(c) (isALPHA(c) || isDIGIT(c)) #endif #ifndef isALPHANUMERIC_L1 # define isALPHANUMERIC_L1(c) (isALPHA_L1(c) || isDIGIT(c)) #endif #ifndef isALPHANUMERIC_LC # define isALPHANUMERIC_LC(c) (isALPHA_LC(c) || isDIGIT_LC(c)) #endif #ifndef isBLANK # define isBLANK(c) ((c) == ' ' || (c) == '\t') #endif #ifndef isBLANK_L1 # define isBLANK_L1(c) ( isBLANK(c) \ || ( FITS_IN_8_BITS(c) \ && NATIVE_TO_LATIN1((U8) c) == 0xA0)) #endif #ifndef isBLANK_LC # define isBLANK_LC(c) isBLANK(c) #endif #ifndef isDIGIT # define isDIGIT(c) inRANGE(c, '0', '9') #endif #ifndef isDIGIT_L1 # define isDIGIT_L1(c) isDIGIT(c) #endif #ifndef isGRAPH # define isGRAPH(c) (isWORDCHAR(c) || isPUNCT(c)) #endif #ifndef isGRAPH_L1 # define isGRAPH_L1(c) ( isPRINT_L1(c) \ && (c) != ' ' \ && NATIVE_TO_LATIN1((U8) c) != 0xA0) #endif #ifndef isIDCONT # define isIDCONT(c) isWORDCHAR(c) #endif #ifndef isIDCONT_L1 # define isIDCONT_L1(c) isWORDCHAR_L1(c) #endif #ifndef isIDCONT_LC # define isIDCONT_LC(c) isWORDCHAR_LC(c) #endif #ifndef isIDFIRST # define isIDFIRST(c) (isALPHA(c) || (c) == '_') #endif #ifndef isIDFIRST_L1 # define isIDFIRST_L1(c) (isALPHA_L1(c) || (U8) (c) == '_') #endif #ifndef isIDFIRST_LC # define isIDFIRST_LC(c) (isALPHA_LC(c) || (U8) (c) == '_') #endif #ifndef isLOWER_L1 # define isLOWER_L1(c) ( isLOWER(c) \ || ( FITS_IN_8_BITS(c) \ && ( ( NATIVE_TO_LATIN1((U8) c) >= 0xDF \ && NATIVE_TO_LATIN1((U8) c) != 0xF7) \ || NATIVE_TO_LATIN1((U8) c) == 0xAA \ || NATIVE_TO_LATIN1((U8) c) == 0xBA \ || NATIVE_TO_LATIN1((U8) c) == 0xB5))) #endif #ifndef isOCTAL # define isOCTAL(c) (((WIDEST_UTYPE)((c)) & ~7) == '0') #endif #ifndef isOCTAL_L1 # define isOCTAL_L1(c) isOCTAL(c) #endif #ifndef isPRINT # define isPRINT(c) (isGRAPH(c) || (c) == ' ') #endif #ifndef isPRINT_L1 # define isPRINT_L1(c) (FITS_IN_8_BITS(c) && ! isCNTRL_L1(c)) #endif #ifndef isPSXSPC # define isPSXSPC(c) isSPACE(c) #endif #ifndef isPSXSPC_L1 # define isPSXSPC_L1(c) isSPACE_L1(c) #endif #ifndef isPUNCT # define isPUNCT(c) ( (c) == '-' || (c) == '!' || (c) == '"' \ || (c) == '#' || (c) == '$' || (c) == '%' \ || (c) == '&' || (c) == '\'' || (c) == '(' \ || (c) == ')' || (c) == '*' || (c) == '+' \ || (c) == ',' || (c) == '.' || (c) == '/' \ || (c) == ':' || (c) == ';' || (c) == '<' \ || (c) == '=' || (c) == '>' || (c) == '?' \ || (c) == '@' || (c) == '[' || (c) == '\\' \ || (c) == ']' || (c) == '^' || (c) == '_' \ || (c) == '`' || (c) == '{' || (c) == '|' \ || (c) == '}' || (c) == '~') #endif #ifndef isPUNCT_L1 # define isPUNCT_L1(c) ( isPUNCT(c) \ || ( FITS_IN_8_BITS(c) \ && ( NATIVE_TO_LATIN1((U8) c) == 0xA1 \ || NATIVE_TO_LATIN1((U8) c) == 0xA7 \ || NATIVE_TO_LATIN1((U8) c) == 0xAB \ || NATIVE_TO_LATIN1((U8) c) == 0xB6 \ || NATIVE_TO_LATIN1((U8) c) == 0xB7 \ || NATIVE_TO_LATIN1((U8) c) == 0xBB \ || NATIVE_TO_LATIN1((U8) c) == 0xBF))) #endif #ifndef isSPACE # define isSPACE(c) ( isBLANK(c) || (c) == '\n' || (c) == '\r' \ || (c) == '\v' || (c) == '\f') #endif #ifndef isSPACE_L1 # define isSPACE_L1(c) ( isSPACE(c) \ || (FITS_IN_8_BITS(c) \ && ( NATIVE_TO_LATIN1((U8) c) == 0x85 \ || NATIVE_TO_LATIN1((U8) c) == 0xA0))) #endif #ifndef isUPPER_L1 # define isUPPER_L1(c) ( isUPPER(c) \ || (FITS_IN_8_BITS(c) \ && ( NATIVE_TO_LATIN1((U8) c) >= 0xC0 \ && NATIVE_TO_LATIN1((U8) c) <= 0xDE \ && NATIVE_TO_LATIN1((U8) c) != 0xD7))) #endif #ifndef isWORDCHAR # define isWORDCHAR(c) (isALPHANUMERIC(c) || (c) == '_') #endif #ifndef isWORDCHAR_L1 # define isWORDCHAR_L1(c) (isIDFIRST_L1(c) || isDIGIT(c)) #endif #ifndef isWORDCHAR_LC # define isWORDCHAR_LC(c) (isIDFIRST_LC(c) || isDIGIT_LC(c)) #endif #ifndef isXDIGIT # define isXDIGIT(c) ( isDIGIT(c) \ || inRANGE((c), 'a', 'f') \ || inRANGE((c), 'A', 'F')) #endif #ifndef isXDIGIT_L1 # define isXDIGIT_L1(c) isXDIGIT(c) #endif #ifndef isXDIGIT_LC # define isXDIGIT_LC(c) isxdigit(c) #endif #ifndef isALNUM_A # define isALNUM_A(c) isALNUM(c) #endif #ifndef isALNUMC_A # define isALNUMC_A(c) isALNUMC(c) #endif #ifndef isALPHA_A # define isALPHA_A(c) isALPHA(c) #endif #ifndef isALPHANUMERIC_A # define isALPHANUMERIC_A(c) isALPHANUMERIC(c) #endif #ifndef isASCII_A # define isASCII_A(c) isASCII(c) #endif #ifndef isBLANK_A # define isBLANK_A(c) isBLANK(c) #endif #ifndef isCNTRL_A # define isCNTRL_A(c) isCNTRL(c) #endif #ifndef isDIGIT_A # define isDIGIT_A(c) isDIGIT(c) #endif #ifndef isGRAPH_A # define isGRAPH_A(c) isGRAPH(c) #endif #ifndef isIDCONT_A # define isIDCONT_A(c) isIDCONT(c) #endif #ifndef isIDFIRST_A # define isIDFIRST_A(c) isIDFIRST(c) #endif #ifndef isLOWER_A # define isLOWER_A(c) isLOWER(c) #endif #ifndef isOCTAL_A # define isOCTAL_A(c) isOCTAL(c) #endif #ifndef isPRINT_A # define isPRINT_A(c) isPRINT(c) #endif #ifndef isPSXSPC_A # define isPSXSPC_A(c) isPSXSPC(c) #endif #ifndef isPUNCT_A # define isPUNCT_A(c) isPUNCT(c) #endif #ifndef isSPACE_A # define isSPACE_A(c) isSPACE(c) #endif #ifndef isUPPER_A # define isUPPER_A(c) isUPPER(c) #endif #ifndef isWORDCHAR_A # define isWORDCHAR_A(c) isWORDCHAR(c) #endif #ifndef isXDIGIT_A # define isXDIGIT_A(c) isXDIGIT(c) #endif #ifndef isASCII_utf8_safe # define isASCII_utf8_safe(s,e) (((e) - (s)) <= 0 ? 0 : isASCII(*(s))) #endif #ifndef isASCII_uvchr # define isASCII_uvchr(c) (FITS_IN_8_BITS(c) ? isASCII_L1(c) : 0) #endif #if (PERL_BCDVERSION >= 0x5006000) # ifdef isALPHA_uni /* If one defined, all are; this is just an exemplar */ # define D_PPP_is_ctype(upper, lower, c) \ (FITS_IN_8_BITS(c) \ ? is ## upper ## _L1(c) \ : is ## upper ## _uni((UV) (c))) /* _uni is old synonym */ # else # define D_PPP_is_ctype(upper, lower, c) \ (FITS_IN_8_BITS(c) \ ? is ## upper ## _L1(c) \ : is_uni_ ## lower((UV) (c))) /* is_uni_ is even older */ # endif #ifndef isALPHA_uvchr # define isALPHA_uvchr(c) D_PPP_is_ctype(ALPHA, alpha, c) #endif #ifndef isALPHANUMERIC_uvchr # define isALPHANUMERIC_uvchr(c) (isALPHA_uvchr(c) || isDIGIT_uvchr(c)) #endif # ifdef is_uni_blank #ifndef isBLANK_uvchr # define isBLANK_uvchr(c) D_PPP_is_ctype(BLANK, blank, c) #endif # else #ifndef isBLANK_uvchr # define isBLANK_uvchr(c) (FITS_IN_8_BITS(c) \ ? isBLANK_L1(c) \ : ( (UV) (c) == 0x1680 /* Unicode 3.0 */ \ || inRANGE((UV) (c), 0x2000, 0x200A) \ || (UV) (c) == 0x202F /* Unicode 3.0 */\ || (UV) (c) == 0x205F /* Unicode 3.2 */\ || (UV) (c) == 0x3000)) #endif # endif #ifndef isCNTRL_uvchr # define isCNTRL_uvchr(c) D_PPP_is_ctype(CNTRL, cntrl, c) #endif #ifndef isDIGIT_uvchr # define isDIGIT_uvchr(c) D_PPP_is_ctype(DIGIT, digit, c) #endif #ifndef isGRAPH_uvchr # define isGRAPH_uvchr(c) D_PPP_is_ctype(GRAPH, graph, c) #endif #ifndef isIDCONT_uvchr # define isIDCONT_uvchr(c) isWORDCHAR_uvchr(c) #endif #ifndef isIDFIRST_uvchr # define isIDFIRST_uvchr(c) D_PPP_is_ctype(IDFIRST, idfirst, c) #endif #ifndef isLOWER_uvchr # define isLOWER_uvchr(c) D_PPP_is_ctype(LOWER, lower, c) #endif #ifndef isPRINT_uvchr # define isPRINT_uvchr(c) D_PPP_is_ctype(PRINT, print, c) #endif #ifndef isPSXSPC_uvchr # define isPSXSPC_uvchr(c) isSPACE_uvchr(c) #endif #ifndef isPUNCT_uvchr # define isPUNCT_uvchr(c) D_PPP_is_ctype(PUNCT, punct, c) #endif #ifndef isSPACE_uvchr # define isSPACE_uvchr(c) D_PPP_is_ctype(SPACE, space, c) #endif #ifndef isUPPER_uvchr # define isUPPER_uvchr(c) D_PPP_is_ctype(UPPER, upper, c) #endif #ifndef isXDIGIT_uvchr # define isXDIGIT_uvchr(c) D_PPP_is_ctype(XDIGIT, xdigit, c) #endif #ifndef isWORDCHAR_uvchr # define isWORDCHAR_uvchr(c) (FITS_IN_8_BITS(c) \ ? isWORDCHAR_L1(c) : isALPHANUMERIC_uvchr(c)) #endif #ifndef isALPHA_utf8_safe # define isALPHA_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, ALPHA) #endif # ifdef isALPHANUMERIC_utf8 #ifndef isALPHANUMERIC_utf8_safe # define isALPHANUMERIC_utf8_safe(s,e) \ D_PPP_IS_GENERIC_UTF8_SAFE(s, e, ALPHANUMERIC) #endif # else #ifndef isALPHANUMERIC_utf8_safe # define isALPHANUMERIC_utf8_safe(s,e) \ (isALPHA_utf8_safe(s,e) || isDIGIT_utf8_safe(s,e)) #endif # endif /* This was broken before 5.18, and just use this instead of worrying about * which releases the official works on */ # if 'A' == 65 #ifndef isBLANK_utf8_safe # define isBLANK_utf8_safe(s,e) \ ( ( LIKELY((e) > (s)) ) ? /* Machine generated */ \ ( ( 0x09 == ((const U8*)s)[0] || 0x20 == ((const U8*)s)[0] ) ? 1 \ : ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ? \ ( ( 0xC2 == ((const U8*)s)[0] ) ? \ ( ( 0xA0 == ((const U8*)s)[1] ) ? 2 : 0 ) \ : ( 0xE1 == ((const U8*)s)[0] ) ? \ ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ( 0xE2 == ((const U8*)s)[0] ) ? \ ( ( 0x80 == ((const U8*)s)[1] ) ? \ ( ( inRANGE(((const U8*)s)[2], 0x80, 0x8A ) || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\ : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : 0 ) \ : 0 ) #endif # elif 'A' == 193 && '^' == 95 /* EBCDIC 1047 */ #ifndef isBLANK_utf8_safe # define isBLANK_utf8_safe(s,e) \ ( ( LIKELY((e) > (s)) ) ? \ ( ( 0x05 == ((const U8*)s)[0] || 0x40 == ((const U8*)s)[0] ) ? 1 \ : ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ? \ ( ( 0x80 == ((const U8*)s)[0] ) ? \ ( ( 0x41 == ((const U8*)s)[1] ) ? 2 : 0 ) \ : ( 0xBC == ((const U8*)s)[0] ) ? \ ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ( 0xCA == ((const U8*)s)[0] ) ? \ ( ( 0x41 == ((const U8*)s)[1] ) ? \ ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A ) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\ : ( 0x42 == ((const U8*)s)[1] ) ? \ ( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 ) \ : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : 0 ) \ : 0 ) #endif # elif 'A' == 193 && '^' == 176 /* EBCDIC 037 */ #ifndef isBLANK_utf8_safe # define isBLANK_utf8_safe(s,e) \ ( ( LIKELY((e) > (s)) ) ? \ ( ( 0x05 == ((const U8*)s)[0] || 0x40 == ((const U8*)s)[0] ) ? 1 \ : ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ? \ ( ( 0x78 == ((const U8*)s)[0] ) ? \ ( ( 0x41 == ((const U8*)s)[1] ) ? 2 : 0 ) \ : ( 0xBD == ((const U8*)s)[0] ) ? \ ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ( 0xCA == ((const U8*)s)[0] ) ? \ ( ( 0x41 == ((const U8*)s)[1] ) ? \ ( ( inRANGE(((const U8*)s)[2], 0x41, 0x4A ) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\ : ( 0x42 == ((const U8*)s)[1] ) ? \ ( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 ) \ : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : 0 ) \ : 0 ) #endif # else # error Unknown character set # endif #ifndef isCNTRL_utf8_safe # define isCNTRL_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, CNTRL) #endif #ifndef isDIGIT_utf8_safe # define isDIGIT_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, DIGIT) #endif #ifndef isGRAPH_utf8_safe # define isGRAPH_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, GRAPH) #endif # ifdef isIDCONT_utf8 #ifndef isIDCONT_utf8_safe # define isIDCONT_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, IDCONT) #endif # else #ifndef isIDCONT_utf8_safe # define isIDCONT_utf8_safe(s,e) isWORDCHAR_utf8_safe(s,e) #endif # endif #ifndef isIDFIRST_utf8_safe # define isIDFIRST_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, IDFIRST) #endif #ifndef isLOWER_utf8_safe # define isLOWER_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, LOWER) #endif #ifndef isPRINT_utf8_safe # define isPRINT_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, PRINT) #endif /* Use the modern definition */ #undef isPSXSPC_utf8_safe #ifndef isPSXSPC_utf8_safe # define isPSXSPC_utf8_safe(s,e) isSPACE_utf8_safe(s,e) #endif #ifndef isPUNCT_utf8_safe # define isPUNCT_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, PUNCT) #endif #ifndef isSPACE_utf8_safe # define isSPACE_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, SPACE) #endif #ifndef isUPPER_utf8_safe # define isUPPER_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, UPPER) #endif # ifdef isWORDCHAR_utf8 #ifndef isWORDCHAR_utf8_safe # define isWORDCHAR_utf8_safe(s,e) D_PPP_IS_GENERIC_UTF8_SAFE(s, e, WORDCHAR) #endif # else #ifndef isWORDCHAR_utf8_safe # define isWORDCHAR_utf8_safe(s,e) \ (isALPHANUMERIC_utf8_safe(s,e) || (*(s)) == '_') #endif # endif /* This was broken before 5.12, and just use this instead of worrying about * which releases the official works on */ # if 'A' == 65 #ifndef isXDIGIT_utf8_safe # define isXDIGIT_utf8_safe(s,e) \ ( ( LIKELY((e) > (s)) ) ? \ ( ( inRANGE(((const U8*)s)[0], 0x30, 0x39 ) || inRANGE(((const U8*)s)[0], 0x41, 0x46 ) || inRANGE(((const U8*)s)[0], 0x61, 0x66 ) ) ? 1\ : ( ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xEF == ((const U8*)s)[0] ) ) ? ( ( 0xBC == ((const U8*)s)[1] ) ?\ ( ( inRANGE(((const U8*)s)[2], 0x90, 0x99 ) || inRANGE(((const U8*)s)[2], 0xA1, 0xA6 ) ) ? 3 : 0 )\ : ( ( 0xBD == ((const U8*)s)[1] ) && ( inRANGE(((const U8*)s)[2], 0x81, 0x86 ) ) ) ? 3 : 0 ) : 0 )\ : 0 ) #endif # elif 'A' == 193 && '^' == 95 /* EBCDIC 1047 */ #ifndef isXDIGIT_utf8_safe # define isXDIGIT_utf8_safe(s,e) \ ( ( LIKELY((e) > (s)) ) ? \ ( ( inRANGE(((const U8*)s)[0], 0x81, 0x86 ) || inRANGE(((const U8*)s)[0], 0xC1, 0xC6 ) || inRANGE(((const U8*)s)[0], 0xF0, 0xF9 ) ) ? 1\ : ( ( ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( 0x73 == ((const U8*)s)[1] ) ) ? ( ( 0x67 == ((const U8*)s)[2] ) ?\ ( ( inRANGE(((const U8*)s)[3], 0x57, 0x59 ) || inRANGE(((const U8*)s)[3], 0x62, 0x68 ) ) ? 4 : 0 )\ : ( ( inRANGE(((const U8*)s)[2], 0x68, 0x69 ) ) && ( inRANGE(((const U8*)s)[3], 0x42, 0x47 ) ) ) ? 4 : 0 ) : 0 )\ : 0 ) #endif # elif 'A' == 193 && '^' == 176 /* EBCDIC 037 */ #ifndef isXDIGIT_utf8_safe # define isXDIGIT_utf8_safe(s,e) \ ( ( LIKELY((e) > (s)) ) ? \ ( ( inRANGE(((const U8*)s)[0], 0x81, 0x86 ) || inRANGE(((const U8*)s)[0], 0xC1, 0xC6 ) || inRANGE(((const U8*)s)[0], 0xF0, 0xF9 ) ) ? 1\ : ( ( ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( 0x72 == ((const U8*)s)[1] ) ) ? ( ( 0x66 == ((const U8*)s)[2] ) ?\ ( ( inRANGE(((const U8*)s)[3], 0x57, 0x59 ) || 0x5F == ((const U8*)s)[3] || inRANGE(((const U8*)s)[3], 0x62, 0x67 ) ) ? 4 : 0 )\ : ( ( inRANGE(((const U8*)s)[2], 0x67, 0x68 ) ) && ( inRANGE(((const U8*)s)[3], 0x42, 0x47 ) ) ) ? 4 : 0 ) : 0 )\ : 0 ) #endif # else # error Unknown character set # endif #ifndef isALPHA_LC_utf8_safe # define isALPHA_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, ALPHA) #endif # ifdef isALPHANUMERIC_utf8 #ifndef isALPHANUMERIC_LC_utf8_safe # define isALPHANUMERIC_LC_utf8_safe(s,e) \ D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, ALPHANUMERIC) #endif # else #ifndef isALPHANUMERIC_LC_utf8_safe # define isALPHANUMERIC_LC_utf8_safe(s,e) \ (isALPHA_LC_utf8_safe(s,e) || isDIGIT_LC_utf8_safe(s,e)) #endif # endif #ifndef isBLANK_LC_utf8_safe # define isBLANK_LC_utf8_safe(s,e) \ D_PPP_IS_GENERIC_LC_UTF8_SAFE_BROKEN(s, e, BLANK) #endif #ifndef isCNTRL_LC_utf8_safe # define isCNTRL_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, CNTRL) #endif #ifndef isDIGIT_LC_utf8_safe # define isDIGIT_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, DIGIT) #endif #ifndef isGRAPH_LC_utf8_safe # define isGRAPH_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, GRAPH) #endif # ifdef isIDCONT_utf8 #ifndef isIDCONT_LC_utf8_safe # define isIDCONT_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, IDCONT) #endif # else #ifndef isIDCONT_LC_utf8_safe # define isIDCONT_LC_utf8_safe(s,e) isWORDCHAR_LC_utf8_safe(s,e) #endif # endif #ifndef isIDFIRST_LC_utf8_safe # define isIDFIRST_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, IDFIRST) #endif #ifndef isLOWER_LC_utf8_safe # define isLOWER_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, LOWER) #endif #ifndef isPRINT_LC_utf8_safe # define isPRINT_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, PRINT) #endif /* Use the modern definition */ #undef isPSXSPC_LC_utf8_safe #ifndef isPSXSPC_LC_utf8_safe # define isPSXSPC_LC_utf8_safe(s,e) isSPACE_LC_utf8_safe(s,e) #endif #ifndef isPUNCT_LC_utf8_safe # define isPUNCT_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, PUNCT) #endif #ifndef isSPACE_LC_utf8_safe # define isSPACE_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, SPACE) #endif #ifndef isUPPER_LC_utf8_safe # define isUPPER_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, UPPER) #endif # ifdef isWORDCHAR_utf8 #ifndef isWORDCHAR_LC_utf8_safe # define isWORDCHAR_LC_utf8_safe(s,e) D_PPP_IS_GENERIC_LC_UTF8_SAFE(s, e, WORDCHAR) #endif # else #ifndef isWORDCHAR_LC_utf8_safe # define isWORDCHAR_LC_utf8_safe(s,e) \ (isALPHANUMERIC_LC_utf8_safe(s,e) || (*(s)) == '_') #endif # endif #ifndef isXDIGIT_LC_utf8_safe # define isXDIGIT_LC_utf8_safe(s,e) \ D_PPP_IS_GENERIC_LC_UTF8_SAFE_BROKEN(s, e, XDIGIT) #endif /* Warning: isALPHANUMERIC_utf8_safe, isALPHA_utf8_safe, isASCII_utf8_safe, * isBLANK_utf8_safe, isCNTRL_utf8_safe, isDIGIT_utf8_safe, isGRAPH_utf8_safe, * isIDCONT_utf8_safe, isIDFIRST_utf8_safe, isLOWER_utf8_safe, * isPRINT_utf8_safe, isPSXSPC_utf8_safe, isPUNCT_utf8_safe, isSPACE_utf8_safe, * isUPPER_utf8_safe, isWORDCHAR_utf8_safe, isWORDCHAR_utf8_safe, * isXDIGIT_utf8_safe, * isALPHANUMERIC_LC_utf8_safe, isALPHA_LC_utf8_safe, isASCII_LC_utf8_safe, * isBLANK_LC_utf8_safe, isCNTRL_LC_utf8_safe, isDIGIT_LC_utf8_safe, * isGRAPH_LC_utf8_safe, isIDCONT_LC_utf8_safe, isIDFIRST_LC_utf8_safe, * isLOWER_LC_utf8_safe, isPRINT_LC_utf8_safe, isPSXSPC_LC_utf8_safe, * isPUNCT_LC_utf8_safe, isSPACE_LC_utf8_safe, isUPPER_LC_utf8_safe, * isWORDCHAR_LC_utf8_safe, isWORDCHAR_LC_utf8_safe, isXDIGIT_LC_utf8_safe, * isALPHANUMERIC_uvchr, isALPHA_uvchr, isASCII_uvchr, isBLANK_uvchr, * isCNTRL_uvchr, isDIGIT_uvchr, isGRAPH_uvchr, isIDCONT_uvchr, * isIDFIRST_uvchr, isLOWER_uvchr, isPRINT_uvchr, isPSXSPC_uvchr, * isPUNCT_uvchr, isSPACE_uvchr, isUPPER_uvchr, isWORDCHAR_uvchr, * isWORDCHAR_uvchr, isXDIGIT_uvchr * * The UTF-8 handling is buggy in early Perls, and this can give inaccurate * results for code points above 0xFF, until the implementation started * settling down in 5.12 and 5.14 */ #endif #define D_PPP_TOO_SHORT_MSG "Malformed UTF-8 character starting with:" \ " \\x%02x (too short; %d bytes available, need" \ " %d)\n" /* Perls starting here had a new API which handled multi-character results */ #if (PERL_BCDVERSION >= 0x5007003) #ifndef toLOWER_uvchr # define toLOWER_uvchr(c, s, l) UNI_TO_NATIVE(to_uni_lower(NATIVE_TO_UNI(c), s, l)) #endif #ifndef toUPPER_uvchr # define toUPPER_uvchr(c, s, l) UNI_TO_NATIVE(to_uni_upper(NATIVE_TO_UNI(c), s, l)) #endif #ifndef toTITLE_uvchr # define toTITLE_uvchr(c, s, l) UNI_TO_NATIVE(to_uni_title(NATIVE_TO_UNI(c), s, l)) #endif #ifndef toFOLD_uvchr # define toFOLD_uvchr(c, s, l) UNI_TO_NATIVE(to_uni_fold( NATIVE_TO_UNI(c), s, l)) #endif # if (PERL_BCDVERSION != 0x5015006) /* Just this version is broken */ /* Prefer the macro to the function */ # if defined toLOWER_utf8 # define D_PPP_TO_LOWER_CALLEE(s,r,l) toLOWER_utf8(s,r,l) # else # define D_PPP_TO_LOWER_CALLEE(s,r,l) to_utf8_lower(s,r,l) # endif # if defined toTITLE_utf8 # define D_PPP_TO_TITLE_CALLEE(s,r,l) toTITLE_utf8(s,r,l) # else # define D_PPP_TO_TITLE_CALLEE(s,r,l) to_utf8_title(s,r,l) # endif # if defined toUPPER_utf8 # define D_PPP_TO_UPPER_CALLEE(s,r,l) toUPPER_utf8(s,r,l) # else # define D_PPP_TO_UPPER_CALLEE(s,r,l) to_utf8_upper(s,r,l) # endif # if defined toFOLD_utf8 # define D_PPP_TO_FOLD_CALLEE(s,r,l) toFOLD_utf8(s,r,l) # else # define D_PPP_TO_FOLD_CALLEE(s,r,l) to_utf8_fold(s,r,l) # endif # else /* Below is 5.15.6, which failed to make the macros available # outside of core, so we have to use the 'Perl_' form. khw # decided it was easier to just handle this case than have to # document the exception, and make an exception in the tests below # */ # define D_PPP_TO_LOWER_CALLEE(s,r,l) \ Perl__to_utf8_lower_flags(aTHX_ s, r, l, 0, NULL) # define D_PPP_TO_TITLE_CALLEE(s,r,l) \ Perl__to_utf8_title_flags(aTHX_ s, r, l, 0, NULL) # define D_PPP_TO_UPPER_CALLEE(s,r,l) \ Perl__to_utf8_upper_flags(aTHX_ s, r, l, 0, NULL) # define D_PPP_TO_FOLD_CALLEE(s,r,l) \ Perl__to_utf8_fold_flags(aTHX_ s, r, l, FOLD_FLAGS_FULL, NULL) # endif /* The actual implementation of the backported macros. If too short, croak, * otherwise call the original that doesn't have an upper limit parameter */ # define D_PPP_GENERIC_MULTI_ARG_TO(name, s, e,r,l) \ (((((e) - (s)) <= 0) \ /* We could just do nothing, but modern perls croak */ \ ? (croak("Attempting case change on zero length string"), \ 0) /* So looks like it returns something, and will compile */ \ : ((e) - (s)) < UTF8SKIP(s)) \ ? (croak(D_PPP_TOO_SHORT_MSG, \ s[0], (int) ((e) - (s)), (int) UTF8SKIP(s)), \ 0) \ : D_PPP_TO_ ## name ## _CALLEE(s,r,l)) #ifndef toUPPER_utf8_safe # define toUPPER_utf8_safe(s,e,r,l) \ D_PPP_GENERIC_MULTI_ARG_TO(UPPER,s,e,r,l) #endif #ifndef toLOWER_utf8_safe # define toLOWER_utf8_safe(s,e,r,l) \ D_PPP_GENERIC_MULTI_ARG_TO(LOWER,s,e,r,l) #endif #ifndef toTITLE_utf8_safe # define toTITLE_utf8_safe(s,e,r,l) \ D_PPP_GENERIC_MULTI_ARG_TO(TITLE,s,e,r,l) #endif #ifndef toFOLD_utf8_safe # define toFOLD_utf8_safe(s,e,r,l) \ D_PPP_GENERIC_MULTI_ARG_TO(FOLD,s,e,r,l) #endif #elif (PERL_BCDVERSION >= 0x5006000) /* Here we have UTF-8 support, but using the original API where the case * changing functions merely returned the changed code point; hence they * couldn't handle multi-character results. */ # ifdef uvchr_to_utf8 # define D_PPP_UV_TO_UTF8 uvchr_to_utf8 # else # define D_PPP_UV_TO_UTF8 uv_to_utf8 # endif /* Get the utf8 of the case changed value, and store its length; then have * to re-calculate the changed case value in order to return it */ # define D_PPP_GENERIC_SINGLE_ARG_TO_UVCHR(name, c, s, l) \ (*(l) = (D_PPP_UV_TO_UTF8(s, \ UNI_TO_NATIVE(to_uni_ ## name(NATIVE_TO_UNI(c)))) - (s)), \ UNI_TO_NATIVE(to_uni_ ## name(NATIVE_TO_UNI(c)))) #ifndef toLOWER_uvchr # define toLOWER_uvchr(c, s, l) \ D_PPP_GENERIC_SINGLE_ARG_TO_UVCHR(lower, c, s, l) #endif #ifndef toUPPER_uvchr # define toUPPER_uvchr(c, s, l) \ D_PPP_GENERIC_SINGLE_ARG_TO_UVCHR(upper, c, s, l) #endif #ifndef toTITLE_uvchr # define toTITLE_uvchr(c, s, l) \ D_PPP_GENERIC_SINGLE_ARG_TO_UVCHR(title, c, s, l) #endif #ifndef toFOLD_uvchr # define toFOLD_uvchr(c, s, l) toLOWER_uvchr(c, s, l) #endif # define D_PPP_GENERIC_SINGLE_ARG_TO_UTF8(name, s, e, r, l) \ (((((e) - (s)) <= 0) \ ? (croak("Attempting case change on zero length string"), \ 0) /* So looks like it returns something, and will compile */ \ : ((e) - (s)) < UTF8SKIP(s)) \ ? (croak(D_PPP_TOO_SHORT_MSG, \ s[0], (int) ((e) - (s)), (int) UTF8SKIP(s)), \ 0) \ /* Get the changed code point and store its UTF-8 */ \ : D_PPP_UV_TO_UTF8(r, to_utf8_ ## name(s)), \ /* Then store its length, and re-get code point for return */ \ *(l) = UTF8SKIP(r), to_utf8_ ## name(r)) /* Warning: toUPPER_utf8_safe, toLOWER_utf8_safe, toTITLE_utf8_safe, * toUPPER_uvchr, toLOWER_uvchr, toTITLE_uvchr The UTF-8 case changing operations had bugs before around 5.12 or 5.14; this backport does not correct them. In perls before 7.3, multi-character case changing is not implemented; this backport uses the simple case changes available in those perls. */ #ifndef toUPPER_utf8_safe # define toUPPER_utf8_safe(s,e,r,l) \ D_PPP_GENERIC_SINGLE_ARG_TO_UTF8(upper, s, e, r, l) #endif #ifndef toLOWER_utf8_safe # define toLOWER_utf8_safe(s,e,r,l) \ D_PPP_GENERIC_SINGLE_ARG_TO_UTF8(lower, s, e, r, l) #endif #ifndef toTITLE_utf8_safe # define toTITLE_utf8_safe(s,e,r,l) \ D_PPP_GENERIC_SINGLE_ARG_TO_UTF8(title, s, e, r, l) #endif /* Warning: toFOLD_utf8_safe, toFOLD_uvchr The UTF-8 case changing operations had bugs before around 5.12 or 5.14; this backport does not correct them. In perls before 7.3, case folding is not implemented; instead, this backport substitutes simple (not multi-character, which isn't available) lowercasing. This gives the correct result in most, but not all, instances */ #ifndef toFOLD_utf8_safe # define toFOLD_utf8_safe(s,e,r,l) toLOWER_utf8_safe(s,e,r,l) #endif #endif /* Until we figure out how to support this in older perls... */ #if (PERL_BCDVERSION >= 0x5008000) #ifndef HeUTF8 # define HeUTF8(he) ((HeKLEN(he) == HEf_SVKEY) ? \ SvUTF8(HeKEY_sv(he)) : \ (U32)HeKUTF8(he)) #endif #endif #ifndef C_ARRAY_LENGTH # define C_ARRAY_LENGTH(a) (sizeof(a)/sizeof((a)[0])) #endif #ifndef C_ARRAY_END # define C_ARRAY_END(a) ((a) + C_ARRAY_LENGTH(a)) #endif #ifndef LIKELY # define LIKELY(x) (x) #endif #ifndef UNLIKELY # define UNLIKELY(x) (x) #endif #ifndef MUTABLE_PTR #if defined(PERL_USE_GCC_BRACE_GROUPS) # define MUTABLE_PTR(p) ({ void *_p = (p); _p; }) #else # define MUTABLE_PTR(p) ((void *) (p)) #endif #endif #ifndef MUTABLE_AV # define MUTABLE_AV(p) ((AV *)MUTABLE_PTR(p)) #endif #ifndef MUTABLE_CV # define MUTABLE_CV(p) ((CV *)MUTABLE_PTR(p)) #endif #ifndef MUTABLE_GV # define MUTABLE_GV(p) ((GV *)MUTABLE_PTR(p)) #endif #ifndef MUTABLE_HV # define MUTABLE_HV(p) ((HV *)MUTABLE_PTR(p)) #endif #ifndef MUTABLE_IO # define MUTABLE_IO(p) ((IO *)MUTABLE_PTR(p)) #endif #ifndef MUTABLE_SV # define MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p)) #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(vnewSVpvf) #if defined(PERL_USE_GCC_BRACE_GROUPS) # define vnewSVpvf(pat, args) ({ SV *_sv = newSV(0); sv_vsetpvfn(_sv, (pat), strlen((pat)), (args), Null(SV**), 0, Null(bool*)); _sv; }) #else # define vnewSVpvf(pat, args) ((PL_Sv = newSV(0)), sv_vsetpvfn(PL_Sv, (pat), strlen((pat)), (args), Null(SV**), 0, Null(bool*)), PL_Sv) #endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf) # define sv_vcatpvf(sv, pat, args) sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf) # define sv_vsetpvf(sv, pat, args) sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg) #if defined(NEED_sv_catpvf_mg) static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...); static #else extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...); #endif #if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL) #define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg) void DPPP_(my_sv_catpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...) { va_list args; va_start(args, pat); sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #ifdef PERL_IMPLICIT_CONTEXT #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg_nocontext) #if defined(NEED_sv_catpvf_mg_nocontext) static void DPPP_(my_sv_catpvf_mg_nocontext)(SV * const sv, const char * const pat, ...); static #else extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV * const sv, const char * const pat, ...); #endif #if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL) #define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) #define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) void DPPP_(my_sv_catpvf_mg_nocontext)(SV * const sv, const char * const pat, ...) { dTHX; va_list args; va_start(args, pat); sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #endif /* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */ #ifndef sv_catpvf_mg # ifdef PERL_IMPLICIT_CONTEXT # define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext # else # define sv_catpvf_mg Perl_sv_catpvf_mg # endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf_mg) # define sv_vcatpvf_mg(sv, pat, args) \ STMT_START { \ sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ SvSETMAGIC(sv); \ } STMT_END #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg) #if defined(NEED_sv_setpvf_mg) static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...); static #else extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...); #endif #if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL) #define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg) void DPPP_(my_sv_setpvf_mg)(pTHX_ SV * const sv, const char * const pat, ...) { va_list args; va_start(args, pat); sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #ifdef PERL_IMPLICIT_CONTEXT #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg_nocontext) #if defined(NEED_sv_setpvf_mg_nocontext) static void DPPP_(my_sv_setpvf_mg_nocontext)(SV * const sv, const char * const pat, ...); static #else extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV * const sv, const char * const pat, ...); #endif #if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL) #define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) #define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) void DPPP_(my_sv_setpvf_mg_nocontext)(SV * const sv, const char * const pat, ...) { dTHX; va_list args; va_start(args, pat); sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #endif /* sv_setpvf_mg depends on sv_setpvf_mg_nocontext */ #ifndef sv_setpvf_mg # ifdef PERL_IMPLICIT_CONTEXT # define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext # else # define sv_setpvf_mg Perl_sv_setpvf_mg # endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf_mg) # define sv_vsetpvf_mg(sv, pat, args) \ STMT_START { \ sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ SvSETMAGIC(sv); \ } STMT_END #endif /* Hint: sv_2pv_nolen * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen(). */ #ifndef sv_2pv_nolen # define sv_2pv_nolen(sv) SvPV_nolen(sv) #endif #ifdef SvPVbyte /* Hint: SvPVbyte * Does not work in perl-5.6.1, ppport.h implements a version * borrowed from perl-5.7.3. */ #if (PERL_BCDVERSION < 0x5007000) #ifndef sv_2pvbyte # define sv_2pvbyte(sv, lp) (sv_utf8_downgrade((sv), 0), SvPV((sv), *(lp))) #endif /* Hint: sv_2pvbyte * Use the SvPVbyte() macro instead of sv_2pvbyte(). */ /* Replace sv_2pvbyte with SvPVbyte */ #undef SvPVbyte #define SvPVbyte(sv, lp) \ ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp)) #endif #else # define SvPVbyte SvPV # define sv_2pvbyte sv_2pv #endif #ifndef sv_2pvbyte_nolen # define sv_2pvbyte_nolen(sv) sv_2pv_nolen(sv) #endif /* Hint: sv_pvn * Always use the SvPV() macro instead of sv_pvn(). */ /* Replace sv_pvn with SvPV */ /* Hint: sv_pvn_force * Always use the SvPV_force() macro instead of sv_pvn_force(). */ /* Replace sv_pvn_force with SvPV_force */ /* If these are undefined, they're not handled by the core anyway */ #ifndef SV_IMMEDIATE_UNREF # define SV_IMMEDIATE_UNREF 0 #endif #ifndef SV_GMAGIC # define SV_GMAGIC 0 #endif #ifndef SV_COW_DROP_PV # define SV_COW_DROP_PV 0 #endif #ifndef SV_UTF8_NO_ENCODING # define SV_UTF8_NO_ENCODING 0 #endif #ifndef SV_CONST_RETURN # define SV_CONST_RETURN 0 #endif #ifndef SV_MUTABLE_RETURN # define SV_MUTABLE_RETURN 0 #endif #ifndef SV_SMAGIC # define SV_SMAGIC 0 #endif #ifndef SV_HAS_TRAILING_NUL # define SV_HAS_TRAILING_NUL 0 #endif #ifndef SV_COW_SHARED_HASH_KEYS # define SV_COW_SHARED_HASH_KEYS 0 #endif #if (PERL_BCDVERSION < 0x5007002) # /* Fix sv_2pv for Perl < 5.7.2 - view https://github.com/Dual-Life/Devel-PPPort/issues/231 */ # ifdef sv_2pv # undef sv_2pv # endif # if defined(PERL_USE_GCC_BRACE_GROUPS) #ifndef sv_2pv # define sv_2pv(sv, lp) ({ SV *_sv_2pv = (sv); STRLEN sv_2pv_dummy_; STRLEN *_lp_2pv = (lp); _lp_2pv = _lp_2pv ? : &sv_2pv_dummy_; SvPOKp(_sv_2pv) ? ((*(_lp_2pv) = SvCUR(_sv_2pv)), SvPVX(_sv_2pv)) : Perl_sv_2pv(aTHX_ _sv_2pv, (_lp_2pv)); }) #endif # else #ifndef sv_2pv # define sv_2pv(sv, lp) (SvPOKp(sv) ? ((*((lp) ? (lp) : &PL_na) = SvCUR(sv)), SvPVX(sv)) : Perl_sv_2pv(aTHX_ (sv), (lp))) #endif # endif #endif #if (PERL_BCDVERSION < 0x5007002) /* Define sv_2pv_flags for Perl < 5.7.2 which does not have it at all */ #if defined(PERL_USE_GCC_BRACE_GROUPS) #ifndef sv_2pv_flags # define sv_2pv_flags(sv, lp, flags) ({ SV *_sv = (sv); STRLEN sv_2pv_dummy_; const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &sv_2pv_dummy_; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_2pv(_sv, _lp); SvGMAGICAL_on(_sv); _pv; }) : sv_2pv(_sv, _lp); }) #endif #ifndef sv_pvn_force_flags # define sv_pvn_force_flags(sv, lp, flags) ({ SV *_sv = (sv); STRLEN sv_2pv_dummy_; const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &sv_2pv_dummy_; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_pvn_force(_sv, _lp); SvGMAGICAL_on(_sv); _pv; }) : sv_pvn_force(_sv, _lp); }) #endif #else #ifndef sv_2pv_flags # define sv_2pv_flags(sv, lp, flags) ((PL_Sv = (sv)), (!((flags) & SV_GMAGIC) && SvGMAGICAL(PL_Sv)) ? (SvGMAGICAL_off(PL_Sv), (PL_Xpv = (XPV *)sv_2pv(PL_Sv, (lp) ? (lp) : &PL_na)), SvGMAGICAL_on(PL_Sv), (char *)PL_Xpv) : sv_2pv(PL_Sv, (lp) ? (lp) : &PL_na)) #endif #ifndef sv_pvn_force_flags # define sv_pvn_force_flags(sv, lp, flags) ((PL_Sv = (sv)), (!((flags) & SV_GMAGIC) && SvGMAGICAL(PL_Sv)) ? (SvGMAGICAL_off(PL_Sv), (PL_Xpv = (XPV *)sv_pvn_force(PL_Sv, (lp) ? (lp) : &PL_na)), SvGMAGICAL_on(PL_Sv), (char *)PL_Xpv) : sv_pvn_force(PL_Sv, (lp) ? (lp) : &PL_na)) #endif #endif #elif (PERL_BCDVERSION < 0x5017002) /* Fix sv_2pv_flags for Perl < 5.17.2 */ # ifdef sv_2pv_flags # undef sv_2pv_flags # endif # if defined(PERL_USE_GCC_BRACE_GROUPS) #ifndef sv_2pv_flags # define sv_2pv_flags(sv, lp, flags) ({ SV *_sv_2pv = (sv); STRLEN sv_2pv_dummy_; const I32 _flags_2pv = (flags); STRLEN *_lp_2pv = (lp); _lp_2pv = _lp_2pv ? : &sv_2pv_dummy_; ((!(_flags_2pv & SV_GMAGIC) || !SvGMAGICAL(_sv_2pv)) && SvPOKp(_sv_2pv)) ? ((*(_lp_2pv) = SvCUR(_sv_2pv)), SvPVX(_sv_2pv)) : Perl_sv_2pv_flags(aTHX_ _sv_2pv, (_lp_2pv), (_flags_2pv)); }) #endif # else #ifndef sv_2pv_flags # define sv_2pv_flags(sv, lp, flags) (((!((flags) & SV_GMAGIC) || !SvGMAGICAL(sv)) && SvPOKp(sv)) ? ((*((lp) ? (lp) : &PL_na) = SvCUR(sv)), SvPVX(sv)) : Perl_sv_2pv_flags(aTHX_ (sv), (lp), (flags))) #endif # endif #endif #if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) ) # define D_PPP_SVPV_NOLEN_LP_ARG &PL_na #else # define D_PPP_SVPV_NOLEN_LP_ARG 0 #endif #ifndef SvPV_const # define SvPV_const(sv, lp) SvPV_flags_const(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_mutable # define SvPV_mutable(sv, lp) SvPV_flags_mutable(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_flags # define SvPV_flags(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags)) #endif #ifndef SvPV_flags_const # define SvPV_flags_const(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \ (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN)) #endif #ifndef SvPV_flags_const_nolen # define SvPV_flags_const_nolen(sv, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX_const(sv) : \ (const char*) sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN)) #endif #ifndef SvPV_flags_mutable # define SvPV_flags_mutable(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \ sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) #endif #ifndef SvPV_force # define SvPV_force(sv, lp) SvPV_force_flags(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_force_nolen # define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC) #endif #ifndef SvPV_force_mutable # define SvPV_force_mutable(sv, lp) SvPV_force_flags_mutable(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_force_nomg # define SvPV_force_nomg(sv, lp) SvPV_force_flags(sv, lp, 0) #endif #ifndef SvPV_force_nomg_nolen # define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0) #endif #ifndef SvPV_force_flags # define SvPV_force_flags(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags)) #endif #ifndef SvPV_force_flags_nolen # define SvPV_force_flags_nolen(sv, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? SvPVX(sv) : sv_pvn_force_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, flags)) #endif #ifndef SvPV_force_flags_mutable # define SvPV_force_flags_mutable(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \ : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) #endif #ifndef SvPV_nolen # define SvPV_nolen(sv) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC)) #endif #ifndef SvPV_nolen_const # define SvPV_nolen_const(sv) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX_const(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN)) #endif # if defined(PERL_USE_GCC_BRACE_GROUPS) #ifndef SvPVx_nolen_const # define SvPVx_nolen_const(sv) ({SV *sV_ = (sv); SvPV_nolen_const(sV_); }) #endif # else #ifndef SvPVx_nolen_const # define SvPVx_nolen_const(sv) (PL_Sv = sv, SvPV_nolen_const(PL_Sv)) #endif # endif #ifndef SvPV_nomg # define SvPV_nomg(sv, lp) SvPV_flags(sv, lp, 0) #endif #ifndef SvPV_nomg_const # define SvPV_nomg_const(sv, lp) SvPV_flags_const(sv, lp, 0) #endif #ifndef SvPV_nomg_const_nolen # define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0) #endif #ifndef SvPV_nomg_nolen # define SvPV_nomg_nolen(sv) ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, 0)) #endif #ifndef SvPV_renew # define SvPV_renew(sv,n) STMT_START { SvLEN_set(sv, n); \ SvPV_set((sv), (char *) saferealloc( \ (Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \ } STMT_END #endif #ifndef SvPVCLEAR # define SvPVCLEAR(sv) sv_setpvs((sv), "") #endif #ifndef WARN_ALL # define WARN_ALL 0 #endif #ifndef WARN_CLOSURE # define WARN_CLOSURE 1 #endif #ifndef WARN_DEPRECATED # define WARN_DEPRECATED 2 #endif #ifndef WARN_EXITING # define WARN_EXITING 3 #endif #ifndef WARN_GLOB # define WARN_GLOB 4 #endif #ifndef WARN_IO # define WARN_IO 5 #endif #ifndef WARN_CLOSED # define WARN_CLOSED 6 #endif #ifndef WARN_EXEC # define WARN_EXEC 7 #endif #ifndef WARN_LAYER # define WARN_LAYER 8 #endif #ifndef WARN_NEWLINE # define WARN_NEWLINE 9 #endif #ifndef WARN_PIPE # define WARN_PIPE 10 #endif #ifndef WARN_UNOPENED # define WARN_UNOPENED 11 #endif #ifndef WARN_MISC # define WARN_MISC 12 #endif #ifndef WARN_NUMERIC # define WARN_NUMERIC 13 #endif #ifndef WARN_ONCE # define WARN_ONCE 14 #endif #ifndef WARN_OVERFLOW # define WARN_OVERFLOW 15 #endif #ifndef WARN_PACK # define WARN_PACK 16 #endif #ifndef WARN_PORTABLE # define WARN_PORTABLE 17 #endif #ifndef WARN_RECURSION # define WARN_RECURSION 18 #endif #ifndef WARN_REDEFINE # define WARN_REDEFINE 19 #endif #ifndef WARN_REGEXP # define WARN_REGEXP 20 #endif #ifndef WARN_SEVERE # define WARN_SEVERE 21 #endif #ifndef WARN_DEBUGGING # define WARN_DEBUGGING 22 #endif #ifndef WARN_INPLACE # define WARN_INPLACE 23 #endif #ifndef WARN_INTERNAL # define WARN_INTERNAL 24 #endif #ifndef WARN_MALLOC # define WARN_MALLOC 25 #endif #ifndef WARN_SIGNAL # define WARN_SIGNAL 26 #endif #ifndef WARN_SUBSTR # define WARN_SUBSTR 27 #endif #ifndef WARN_SYNTAX # define WARN_SYNTAX 28 #endif #ifndef WARN_AMBIGUOUS # define WARN_AMBIGUOUS 29 #endif #ifndef WARN_BAREWORD # define WARN_BAREWORD 30 #endif #ifndef WARN_DIGIT # define WARN_DIGIT 31 #endif #ifndef WARN_PARENTHESIS # define WARN_PARENTHESIS 32 #endif #ifndef WARN_PRECEDENCE # define WARN_PRECEDENCE 33 #endif #ifndef WARN_PRINTF # define WARN_PRINTF 34 #endif #ifndef WARN_PROTOTYPE # define WARN_PROTOTYPE 35 #endif #ifndef WARN_QW # define WARN_QW 36 #endif #ifndef WARN_RESERVED # define WARN_RESERVED 37 #endif #ifndef WARN_SEMICOLON # define WARN_SEMICOLON 38 #endif #ifndef WARN_TAINT # define WARN_TAINT 39 #endif #ifndef WARN_THREADS # define WARN_THREADS 40 #endif #ifndef WARN_UNINITIALIZED # define WARN_UNINITIALIZED 41 #endif #ifndef WARN_UNPACK # define WARN_UNPACK 42 #endif #ifndef WARN_UNTIE # define WARN_UNTIE 43 #endif #ifndef WARN_UTF8 # define WARN_UTF8 44 #endif #ifndef WARN_VOID # define WARN_VOID 45 #endif #ifndef WARN_ASSERTIONS # define WARN_ASSERTIONS 46 #endif #ifndef packWARN # define packWARN(a) (a) #endif #ifndef packWARN2 # define packWARN2(a,b) (packWARN(a) << 8 | (b)) #endif #ifndef packWARN3 # define packWARN3(a,b,c) (packWARN2(a,b) << 8 | (c)) #endif #ifndef packWARN4 # define packWARN4(a,b,c,d) (packWARN3(a,b,c) << 8 | (d)) #endif #ifndef ckWARN # ifdef G_WARN_ON # define ckWARN(a) (PL_dowarn & G_WARN_ON) # else # define ckWARN(a) PL_dowarn # endif #endif #ifndef ckWARN2 # define ckWARN2(a,b) (ckWARN(a) || ckWARN(b)) #endif #ifndef ckWARN3 # define ckWARN3(a,b,c) (ckWARN(c) || ckWARN2(a,b)) #endif #ifndef ckWARN4 # define ckWARN4(a,b,c,d) (ckWARN(d) || ckWARN3(a,b,c)) #endif #ifndef ckWARN_d # ifdef isLEXWARN_off # define ckWARN_d(a) (isLEXWARN_off || ckWARN(a)) # else # define ckWARN_d(a) 1 # endif #endif #ifndef ckWARN2_d # define ckWARN2_d(a,b) (ckWARN_d(a) || ckWARN_d(b)) #endif #ifndef ckWARN3_d # define ckWARN3_d(a,b,c) (ckWARN_d(c) || ckWARN2_d(a,b)) #endif #ifndef ckWARN4_d # define ckWARN4_d(a,b,c,d) (ckWARN_d(d) || ckWARN3_d(a,b,c)) #endif #ifndef vwarner # define vwarner(err, pat, argsp) \ STMT_START { SV *sv; \ PERL_UNUSED_ARG(err); \ sv = vnewSVpvf(pat, argsp); \ sv_2mortal(sv); \ warn("%s", SvPV_nolen(sv)); \ } STMT_END #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(warner) # if defined(NEED_warner) static void DPPP_(my_warner)(U32 err, const char * pat, ...); static #else extern void DPPP_(my_warner)(U32 err, const char * pat, ...); #endif #if defined(NEED_warner) || defined(NEED_warner_GLOBAL) #define Perl_warner DPPP_(my_warner) void DPPP_(my_warner)(U32 err, const char *pat, ...) { va_list args; va_start(args, pat); vwarner(err, pat, &args); va_end(args); } # define warner Perl_warner # define Perl_warner_nocontext Perl_warner # endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(ck_warner) # if defined(NEED_ck_warner) static void DPPP_(my_ck_warner)(pTHX_ U32 err, const char * pat, ...); static #else extern void DPPP_(my_ck_warner)(pTHX_ U32 err, const char * pat, ...); #endif #if defined(NEED_ck_warner) || defined(NEED_ck_warner_GLOBAL) #define Perl_ck_warner DPPP_(my_ck_warner) void DPPP_(my_ck_warner)(pTHX_ U32 err, const char *pat, ...) { va_list args; if ( ! ckWARN((err ) & 0xFF) && ! ckWARN((err >> 8) & 0xFF) && ! ckWARN((err >> 16) & 0xFF) && ! ckWARN((err >> 24) & 0xFF)) { return; } va_start(args, pat); vwarner(err, pat, &args); va_end(args); } # define ck_warner Perl_ck_warner # endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(ck_warner_d) # if defined(NEED_ck_warner_d) static void DPPP_(my_ck_warner_d)(pTHX_ U32 err, const char * pat, ...); static #else extern void DPPP_(my_ck_warner_d)(pTHX_ U32 err, const char * pat, ...); #endif #if defined(NEED_ck_warner_d) || defined(NEED_ck_warner_d_GLOBAL) #define Perl_ck_warner_d DPPP_(my_ck_warner_d) void DPPP_(my_ck_warner_d)(pTHX_ U32 err, const char *pat, ...) { va_list args; if ( ! ckWARN_d((err ) & 0xFF) && ! ckWARN_d((err >> 8) & 0xFF) && ! ckWARN_d((err >> 16) & 0xFF) && ! ckWARN_d((err >> 24) & 0xFF)) { return; } va_start(args, pat); vwarner(err, pat, &args); va_end(args); } # define ck_warner_d Perl_ck_warner_d # endif #endif #ifndef IVdf # if IVSIZE == LONGSIZE # define IVdf "ld" # define UVuf "lu" # define UVof "lo" # define UVxf "lx" # define UVXf "lX" # elif IVSIZE == INTSIZE # define IVdf "d" # define UVuf "u" # define UVof "o" # define UVxf "x" # define UVXf "X" # else # error "cannot define IV/UV formats" # endif #endif #ifndef NVef # if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \ defined(PERL_PRIfldbl) && (PERL_BCDVERSION != 0x5006000) /* Not very likely, but let's try anyway. */ # define NVef PERL_PRIeldbl # define NVff PERL_PRIfldbl # define NVgf PERL_PRIgldbl # else # define NVef "e" # define NVff "f" # define NVgf "g" # endif #endif #ifndef sv_setuv # define sv_setuv(sv, uv) \ STMT_START { \ UV TeMpUv = uv; \ if (TeMpUv <= IV_MAX) \ sv_setiv(sv, TeMpUv); \ else \ sv_setnv(sv, (double)TeMpUv); \ } STMT_END #endif #ifndef newSVuv # define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) #endif #if defined(PERL_USE_GCC_BRACE_GROUPS) #ifndef sv_2uv # define sv_2uv(sv) ({ SV *_sv = (sv); (UV) (SvNOK(_sv) ? SvNV(_sv) : sv_2nv(_sv)); }) #endif #else #ifndef sv_2uv # define sv_2uv(sv) ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv))) #endif #endif #ifndef SvUVX # define SvUVX(sv) ((UV)SvIVX(sv)) #endif #ifndef SvUVXx # define SvUVXx(sv) SvUVX(sv) #endif #ifndef SvUV # define SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv)) #endif #if defined(PERL_USE_GCC_BRACE_GROUPS) #ifndef SvUVx # define SvUVx(sv) ({ SV *_sv = (sv)); SvUV(_sv); }) #endif #else #ifndef SvUVx # define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv)) #endif #endif /* Hint: sv_uv * Always use the SvUVx() macro instead of sv_uv(). */ /* Replace sv_uv with SvUVx */ #ifndef sv_uv # define sv_uv(sv) SvUVx(sv) #endif #if !defined(SvUOK) && defined(SvIOK_UV) # define SvUOK(sv) SvIOK_UV(sv) #endif #ifndef XST_mUV # define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) ) #endif #ifndef XSRETURN_UV # define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END #endif #ifndef PUSHu # define PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END #endif #ifndef XPUSHu # define XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END #endif #if !defined(my_strnlen) #if defined(NEED_my_strnlen) static Size_t DPPP_(my_my_strnlen)(const char * str, Size_t maxlen); static #else extern Size_t DPPP_(my_my_strnlen)(const char * str, Size_t maxlen); #endif #if defined(NEED_my_strnlen) || defined(NEED_my_strnlen_GLOBAL) #define my_strnlen DPPP_(my_my_strnlen) #define Perl_my_strnlen DPPP_(my_my_strnlen) Size_t DPPP_(my_my_strnlen)(const char *str, Size_t maxlen) { const char *p = str; while(maxlen-- && *p) p++; return p - str; } #endif #endif #ifdef HAS_MEMCMP #ifndef memNE # define memNE(s1,s2,l) (memcmp(s1,s2,l)) #endif #ifndef memEQ # define memEQ(s1,s2,l) (!memcmp(s1,s2,l)) #endif #else #ifndef memNE # define memNE(s1,s2,l) (bcmp(s1,s2,l)) #endif #ifndef memEQ # define memEQ(s1,s2,l) (!bcmp(s1,s2,l)) #endif #endif #ifndef memEQs # define memEQs(s1, l, s2) \ (sizeof(s2)-1 == l && memEQ(s1, (s2 ""), (sizeof(s2)-1))) #endif #ifndef memNEs # define memNEs(s1, l, s2) !memEQs(s1, l, s2) #endif #ifndef memCHRs # define memCHRs(s, c) ((const char *) memchr("" s "" , c, sizeof(s)-1)) #endif #ifndef MoveD # define MoveD(s,d,n,t) memmove((char*)(d),(char*)(s), (n) * sizeof(t)) #endif #ifndef CopyD # define CopyD(s,d,n,t) memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) #endif #ifdef HAS_MEMSET #ifndef ZeroD # define ZeroD(d,n,t) memzero((char*)(d), (n) * sizeof(t)) #endif #else #ifndef ZeroD # define ZeroD(d,n,t) ((void)memzero((char*)(d), (n) * sizeof(t)), d) #endif #endif #ifndef PoisonWith # define PoisonWith(d,n,t,b) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t)) #endif #ifndef PoisonNew # define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB) #endif #ifndef PoisonFree # define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF) #endif #ifndef Poison # define Poison(d,n,t) PoisonFree(d,n,t) #endif #ifndef Newx # define Newx(v,n,t) New(0,v,n,t) #endif #ifndef Newxc # define Newxc(v,n,t,c) Newc(0,v,n,t,c) #endif #ifndef Newxz # define Newxz(v,n,t) Newz(0,v,n,t) #endif #ifdef NEED_mess_sv #define NEED_mess #endif #ifdef NEED_mess #define NEED_mess_nocontext #define NEED_vmess #endif #ifndef croak_sv #if (PERL_BCDVERSION >= 0x5007003) || ( (PERL_BCDVERSION >= 0x5006001) && (PERL_BCDVERSION < 0x5007000) ) # if ( (PERL_BCDVERSION >= 0x5008000) && (PERL_BCDVERSION < 0x5008009) ) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5010001) ) # define D_PPP_FIX_UTF8_ERRSV_FOR_SV(sv) \ STMT_START { \ SV *_errsv = ERRSV; \ SvFLAGS(_errsv) = (SvFLAGS(_errsv) & ~SVf_UTF8) | \ (SvFLAGS(sv) & SVf_UTF8); \ } STMT_END # else # define D_PPP_FIX_UTF8_ERRSV_FOR_SV(sv) STMT_START {} STMT_END # endif PERL_STATIC_INLINE void D_PPP_croak_sv(SV *sv) { dTHX; SV *_sv = (sv); if (SvROK(_sv)) { sv_setsv(ERRSV, _sv); croak(NULL); } else { D_PPP_FIX_UTF8_ERRSV_FOR_SV(_sv); croak("%" SVf, SVfARG(_sv)); } } # define croak_sv(sv) D_PPP_croak_sv(sv) #elif (PERL_BCDVERSION >= 0x5004000) # define croak_sv(sv) croak("%" SVf, SVfARG(sv)) #else # define croak_sv(sv) croak("%s", SvPV_nolen(sv)) #endif #endif #ifndef die_sv #if defined(NEED_die_sv) static OP * DPPP_(my_die_sv)(pTHX_ SV * baseex); static #else extern OP * DPPP_(my_die_sv)(pTHX_ SV * baseex); #endif #if defined(NEED_die_sv) || defined(NEED_die_sv_GLOBAL) #ifdef die_sv # undef die_sv #endif #define die_sv(a) DPPP_(my_die_sv)(aTHX_ a) #define Perl_die_sv DPPP_(my_die_sv) OP * DPPP_(my_die_sv)(pTHX_ SV *baseex) { croak_sv(baseex); return (OP *)NULL; } #endif #endif #ifndef warn_sv #if (PERL_BCDVERSION >= 0x5004000) # define warn_sv(sv) warn("%" SVf, SVfARG(sv)) #else # define warn_sv(sv) warn("%s", SvPV_nolen(sv)) #endif #endif #if ! defined vmess && (PERL_BCDVERSION >= 0x5004000) # if defined(NEED_vmess) static SV * DPPP_(my_vmess)(pTHX_ const char * pat, va_list * args); static #else extern SV * DPPP_(my_vmess)(pTHX_ const char * pat, va_list * args); #endif #if defined(NEED_vmess) || defined(NEED_vmess_GLOBAL) #ifdef vmess # undef vmess #endif #define vmess(a,b) DPPP_(my_vmess)(aTHX_ a,b) #define Perl_vmess DPPP_(my_vmess) SV* DPPP_(my_vmess)(pTHX_ const char* pat, va_list* args) { mess(pat, args); return PL_mess_sv; } # endif #endif #if (PERL_BCDVERSION < 0x5006000) && (PERL_BCDVERSION >= 0x5004000) #undef mess #endif #if !defined(mess_nocontext) && !defined(Perl_mess_nocontext) && (PERL_BCDVERSION >= 0x5004000) #if defined(NEED_mess_nocontext) static SV * DPPP_(my_mess_nocontext)(const char * pat, ...); static #else extern SV * DPPP_(my_mess_nocontext)(const char * pat, ...); #endif #if defined(NEED_mess_nocontext) || defined(NEED_mess_nocontext_GLOBAL) #define mess_nocontext DPPP_(my_mess_nocontext) #define Perl_mess_nocontext DPPP_(my_mess_nocontext) SV* DPPP_(my_mess_nocontext)(const char* pat, ...) { dTHX; SV *sv; va_list args; va_start(args, pat); sv = vmess(pat, &args); va_end(args); return sv; } #endif #endif #ifndef mess #if defined(NEED_mess) static SV * DPPP_(my_mess)(pTHX_ const char * pat, ...); static #else extern SV * DPPP_(my_mess)(pTHX_ const char * pat, ...); #endif #if defined(NEED_mess) || defined(NEED_mess_GLOBAL) #define Perl_mess DPPP_(my_mess) SV* DPPP_(my_mess)(pTHX_ const char* pat, ...) { SV *sv; va_list args; va_start(args, pat); sv = vmess(pat, &args); va_end(args); return sv; } #ifdef mess_nocontext #define mess mess_nocontext #else #define mess Perl_mess_nocontext #endif #endif #endif #if ! defined mess_sv && (PERL_BCDVERSION >= 0x5004000) #if defined(NEED_mess_sv) static SV * DPPP_(my_mess_sv)(pTHX_ SV * basemsg, bool consume); static #else extern SV * DPPP_(my_mess_sv)(pTHX_ SV * basemsg, bool consume); #endif #if defined(NEED_mess_sv) || defined(NEED_mess_sv_GLOBAL) #ifdef mess_sv # undef mess_sv #endif #define mess_sv(a,b) DPPP_(my_mess_sv)(aTHX_ a,b) #define Perl_mess_sv DPPP_(my_mess_sv) SV * DPPP_(my_mess_sv)(pTHX_ SV *basemsg, bool consume) { SV *tmp; SV *ret; if (SvPOK(basemsg) && SvCUR(basemsg) && *(SvEND(basemsg)-1) == '\n') { if (consume) return basemsg; ret = mess(""); SvSetSV_nosteal(ret, basemsg); return ret; } if (consume) { sv_catsv(basemsg, mess("")); return basemsg; } ret = mess(""); tmp = newSVsv(ret); SvSetSV_nosteal(ret, basemsg); sv_catsv(ret, tmp); sv_dec(tmp); return ret; } #endif #endif #ifndef warn_nocontext #define warn_nocontext warn #endif #ifndef croak_nocontext #define croak_nocontext croak #endif #ifndef croak_no_modify #define croak_no_modify() croak_nocontext("%s", PL_no_modify) #define Perl_croak_no_modify() croak_no_modify() #endif #ifndef croak_memory_wrap #if (PERL_BCDVERSION >= 0x5009002) || ( (PERL_BCDVERSION >= 0x5008006) && (PERL_BCDVERSION < 0x5009000) ) # define croak_memory_wrap() croak_nocontext("%s", PL_memory_wrap) #else # define croak_memory_wrap() croak_nocontext("panic: memory wrap") #endif #endif #ifndef croak_xs_usage #if defined(NEED_croak_xs_usage) static void DPPP_(my_croak_xs_usage)(const CV * const cv, const char * const params); static #else extern void DPPP_(my_croak_xs_usage)(const CV * const cv, const char * const params); #endif #if defined(NEED_croak_xs_usage) || defined(NEED_croak_xs_usage_GLOBAL) #define croak_xs_usage DPPP_(my_croak_xs_usage) #define Perl_croak_xs_usage DPPP_(my_croak_xs_usage) #ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE #define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params) void DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const params) { dTHX; const GV *const gv = CvGV(cv); PERL_ARGS_ASSERT_CROAK_XS_USAGE; if (gv) { const char *const gvname = GvNAME(gv); const HV *const stash = GvSTASH(gv); const char *const hvname = stash ? HvNAME(stash) : NULL; if (hvname) croak("Usage: %s::%s(%s)", hvname, gvname, params); else croak("Usage: %s(%s)", gvname, params); } else { /* Pants. I don't think that it should be possible to get here. */ croak("Usage: CODE(0x%" UVxf ")(%s)", PTR2UV(cv), params); } } #endif #endif #endif #ifndef mPUSHs # define mPUSHs(s) PUSHs(sv_2mortal(s)) #endif #ifndef PUSHmortal # define PUSHmortal PUSHs(sv_newmortal()) #endif #ifndef mPUSHp # define mPUSHp(p,l) sv_setpvn(PUSHmortal, (p), (l)) #endif #ifndef mPUSHn # define mPUSHn(n) sv_setnv(PUSHmortal, (NV)(n)) #endif #ifndef mPUSHi # define mPUSHi(i) sv_setiv(PUSHmortal, (IV)(i)) #endif #ifndef mPUSHu # define mPUSHu(u) sv_setuv(PUSHmortal, (UV)(u)) #endif #ifndef mXPUSHs # define mXPUSHs(s) XPUSHs(sv_2mortal(s)) #endif #ifndef XPUSHmortal # define XPUSHmortal XPUSHs(sv_newmortal()) #endif #ifndef mXPUSHp # define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn(PUSHmortal, (p), (l)); } STMT_END #endif #ifndef mXPUSHn # define mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv(PUSHmortal, (NV)(n)); } STMT_END #endif #ifndef mXPUSHi # define mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv(PUSHmortal, (IV)(i)); } STMT_END #endif #ifndef mXPUSHu # define mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv(PUSHmortal, (UV)(u)); } STMT_END #endif /* Replace: 1 */ #ifndef call_sv # define call_sv perl_call_sv #endif #ifndef call_pv # define call_pv perl_call_pv #endif #ifndef call_argv # define call_argv perl_call_argv #endif #ifndef call_method # define call_method perl_call_method #endif #ifndef eval_sv # define eval_sv perl_eval_sv #endif #if (PERL_BCDVERSION >= 0x5003098) && (PERL_BCDVERSION < 0x5006000) #ifndef eval_pv # define eval_pv perl_eval_pv #endif #endif /* Replace: 0 */ #if (PERL_BCDVERSION < 0x5006000) #ifndef Perl_eval_sv # define Perl_eval_sv perl_eval_sv #endif #if (PERL_BCDVERSION >= 0x5003098) #ifndef Perl_eval_pv # define Perl_eval_pv perl_eval_pv #endif #endif #endif #ifndef G_LIST # define G_LIST G_ARRAY /* Replace */ #endif #ifndef PERL_LOADMOD_DENY # define PERL_LOADMOD_DENY 0x1 #endif #ifndef PERL_LOADMOD_NOIMPORT # define PERL_LOADMOD_NOIMPORT 0x2 #endif #ifndef PERL_LOADMOD_IMPORT_OPS # define PERL_LOADMOD_IMPORT_OPS 0x4 #endif #if defined(PERL_USE_GCC_BRACE_GROUPS) # define D_PPP_CROAK_IF_ERROR(cond) ({ \ SV *_errsv; \ ( (cond) \ && (_errsv = ERRSV) \ && (SvROK(_errsv) || SvTRUE(_errsv)) \ && (croak_sv(_errsv), 1)); \ }) #else PERL_STATIC_INLINE void D_PPP_CROAK_IF_ERROR(int cond) { dTHX; SV *errsv; if (!cond) return; errsv = ERRSV; if (SvROK(errsv) || SvTRUE(errsv)) croak_sv(errsv); } # define D_PPP_CROAK_IF_ERROR(cond) D_PPP_CROAK_IF_ERROR(cond) #endif #ifndef G_METHOD # define G_METHOD 64 # ifdef call_sv # undef call_sv # endif # if (PERL_BCDVERSION < 0x5006000) # define call_sv(sv, flags) ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \ (flags) & ~G_METHOD) : perl_call_sv(sv, flags)) # else # define call_sv(sv, flags) ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \ (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags)) # endif #endif #ifndef G_RETHROW # define G_RETHROW 8192 # ifdef eval_sv # undef eval_sv # endif # if defined(PERL_USE_GCC_BRACE_GROUPS) # define eval_sv(sv, flags) ({ I32 _flags = (flags); I32 _ret = Perl_eval_sv(aTHX_ sv, (_flags & ~G_RETHROW)); D_PPP_CROAK_IF_ERROR(_flags & G_RETHROW); _ret; }) # else # define eval_sv(sv, flags) ((PL_na = Perl_eval_sv(aTHX_ sv, ((flags) & ~G_RETHROW))), D_PPP_CROAK_IF_ERROR((flags) & G_RETHROW), (I32)PL_na) # endif #endif /* Older Perl versions have broken croak_on_error=1 */ #if (PERL_BCDVERSION < 0x5031002) # ifdef eval_pv # undef eval_pv # if defined(PERL_USE_GCC_BRACE_GROUPS) # define eval_pv(p, croak_on_error) ({ SV *_sv = Perl_eval_pv(aTHX_ p, 0); D_PPP_CROAK_IF_ERROR(croak_on_error); _sv; }) # else # define eval_pv(p, croak_on_error) ((PL_Sv = Perl_eval_pv(aTHX_ p, 0)), D_PPP_CROAK_IF_ERROR(croak_on_error), PL_Sv) # endif # endif #endif /* This is backport for Perl 5.3.97d and older which do not provide perl_eval_pv */ #ifndef eval_pv #if defined(NEED_eval_pv) static SV * DPPP_(my_eval_pv)(const char * p, I32 croak_on_error); static #else extern SV * DPPP_(my_eval_pv)(const char * p, I32 croak_on_error); #endif #if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL) #ifdef eval_pv # undef eval_pv #endif #define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b) #define Perl_eval_pv DPPP_(my_eval_pv) SV* DPPP_(my_eval_pv)(const char *p, I32 croak_on_error) { dSP; SV* sv = newSVpv(p, 0); PUSHMARK(sp); eval_sv(sv, G_SCALAR); SvREFCNT_dec(sv); SPAGAIN; sv = POPs; PUTBACK; D_PPP_CROAK_IF_ERROR(croak_on_error); return sv; } #endif #endif #if ! defined(vload_module) && defined(start_subparse) #if defined(NEED_vload_module) static void DPPP_(my_vload_module)(U32 flags, SV * name, SV * ver, va_list * args); static #else extern void DPPP_(my_vload_module)(U32 flags, SV * name, SV * ver, va_list * args); #endif #if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL) #ifdef vload_module # undef vload_module #endif #define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d) #define Perl_vload_module DPPP_(my_vload_module) void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args) { dTHR; dVAR; OP *veop, *imop; OP * const modname = newSVOP(OP_CONST, 0, name); /* 5.005 has a somewhat hacky force_normal that doesn't croak on SvREADONLY() if PL_compiling is true. Current perls take care in ck_require() to correctly turn off SvREADONLY before calling force_normal_flags(). This seems a better fix than fudging PL_compiling */ SvREADONLY_off(((SVOP*)modname)->op_sv); modname->op_private |= OPpCONST_BARE; if (ver) { veop = newSVOP(OP_CONST, 0, ver); } else veop = NULL; if (flags & PERL_LOADMOD_NOIMPORT) { imop = sawparens(newNULLLIST()); } else if (flags & PERL_LOADMOD_IMPORT_OPS) { imop = va_arg(*args, OP*); } else { SV *sv; imop = NULL; sv = va_arg(*args, SV*); while (sv) { imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv)); sv = va_arg(*args, SV*); } } { const line_t ocopline = PL_copline; COP * const ocurcop = PL_curcop; const int oexpect = PL_expect; utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0), #if (PERL_BCDVERSION > 0x5003000) veop, #endif modname, imop); PL_expect = oexpect; PL_copline = ocopline; PL_curcop = ocurcop; } } #endif #endif #ifndef load_module #if defined(NEED_load_module) static void DPPP_(my_load_module)(U32 flags, SV * name, SV * ver, ...); static #else extern void DPPP_(my_load_module)(U32 flags, SV * name, SV * ver, ...); #endif #if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL) #ifdef load_module # undef load_module #endif #define load_module DPPP_(my_load_module) #define Perl_load_module DPPP_(my_load_module) void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...) { va_list args; va_start(args, ver); vload_module(flags, name, ver, &args); va_end(args); } #endif #endif #ifndef newRV_inc # define newRV_inc(sv) newRV(sv) /* Replace */ #endif #ifndef newRV_noinc #if defined(PERL_USE_GCC_BRACE_GROUPS) # define newRV_noinc(sv) ({ SV *_sv = (SV *)newRV((sv)); SvREFCNT_dec((sv)); _sv; }) #else # define newRV_noinc(sv) ((PL_Sv = (SV *)newRV((sv))), SvREFCNT_dec((sv)), PL_Sv) #endif #endif /* * Boilerplate macros for initializing and accessing interpreter-local * data from C. All statics in extensions should be reworked to use * this, if you want to make the extension thread-safe. See ext/re/re.xs * for an example of the use of these macros. * * Code that uses these macros is responsible for the following: * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts" * 2. Declare a typedef named my_cxt_t that is a structure that contains * all the data that needs to be interpreter-local. * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t. * 4. Use the MY_CXT_INIT macro such that it is called exactly once * (typically put in the BOOT: section). * 5. Use the members of the my_cxt_t structure everywhere as * MY_CXT.member. * 6. Use the dMY_CXT macro (a declaration) in all the functions that * access MY_CXT. */ #if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \ defined(PERL_CAPI) || defined(PERL_IMPLICIT_CONTEXT) #ifndef START_MY_CXT /* This must appear in all extensions that define a my_cxt_t structure, * right after the definition (i.e. at file scope). The non-threads * case below uses it to declare the data as static. */ #define START_MY_CXT #if (PERL_BCDVERSION < 0x5004068) /* Fetches the SV that keeps the per-interpreter data. */ #define dMY_CXT_SV \ SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE) #else /* >= perl5.004_68 */ #define dMY_CXT_SV \ SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY, \ sizeof(MY_CXT_KEY)-1, TRUE) #endif /* < perl5.004_68 */ /* This declaration should be used within all functions that use the * interpreter-local data. */ #define dMY_CXT \ dMY_CXT_SV; \ my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv)) /* Creates and zeroes the per-interpreter data. * (We allocate my_cxtp in a Perl SV so that it will be released when * the interpreter goes away.) */ #define MY_CXT_INIT \ dMY_CXT_SV; \ /* newSV() allocates one more than needed */ \ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ Zero(my_cxtp, 1, my_cxt_t); \ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) /* This macro must be used to access members of the my_cxt_t structure. * e.g. MYCXT.some_data */ #define MY_CXT (*my_cxtp) /* Judicious use of these macros can reduce the number of times dMY_CXT * is used. Use is similar to pTHX, aTHX etc. */ #define pMY_CXT my_cxt_t *my_cxtp #define pMY_CXT_ pMY_CXT, #define _pMY_CXT ,pMY_CXT #define aMY_CXT my_cxtp #define aMY_CXT_ aMY_CXT, #define _aMY_CXT ,aMY_CXT #endif /* START_MY_CXT */ #ifndef MY_CXT_CLONE /* Clones the per-interpreter data. */ #define MY_CXT_CLONE \ dMY_CXT_SV; \ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) #endif #else /* single interpreter */ #ifndef START_MY_CXT #define START_MY_CXT static my_cxt_t my_cxt; #define dMY_CXT_SV dNOOP #define dMY_CXT dNOOP #define MY_CXT_INIT NOOP #define MY_CXT my_cxt #define pMY_CXT void #define pMY_CXT_ #define _pMY_CXT #define aMY_CXT #define aMY_CXT_ #define _aMY_CXT #endif /* START_MY_CXT */ #ifndef MY_CXT_CLONE #define MY_CXT_CLONE NOOP #endif #endif #ifndef SvREFCNT_inc # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ if (_sv) \ (SvREFCNT(_sv))++; \ _sv; \ }) # else # define SvREFCNT_inc(sv) \ ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL) # endif #endif #ifndef SvREFCNT_inc_simple # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc_simple(sv) \ ({ \ if (sv) \ (SvREFCNT(sv))++; \ (SV *)(sv); \ }) # else # define SvREFCNT_inc_simple(sv) \ ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL) # endif #endif #ifndef SvREFCNT_inc_NN # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc_NN(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ SvREFCNT(_sv)++; \ _sv; \ }) # else # define SvREFCNT_inc_NN(sv) \ (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv) # endif #endif #ifndef SvREFCNT_inc_void # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc_void(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ if (_sv) \ (void)(SvREFCNT(_sv)++); \ }) # else # define SvREFCNT_inc_void(sv) \ (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0) # endif #endif #ifndef SvREFCNT_inc_simple_void # define SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END #endif #ifndef SvREFCNT_inc_simple_NN # define SvREFCNT_inc_simple_NN(sv) (++SvREFCNT(sv), (SV*)(sv)) #endif #ifndef SvREFCNT_inc_void_NN # define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) #endif #ifndef SvREFCNT_inc_simple_void_NN # define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) #endif #ifndef newSV_type #if defined(PERL_USE_GCC_BRACE_GROUPS) # define newSV_type(t) ({ SV *_sv = newSV(0); sv_upgrade(_sv, (t)); _sv; }) #else # define newSV_type(t) ((PL_Sv = newSV(0)), sv_upgrade(PL_Sv, (t)), PL_Sv) #endif #endif #if (PERL_BCDVERSION < 0x5006000) # define D_PPP_CONSTPV_ARG(x) ((char *) (x)) #else # define D_PPP_CONSTPV_ARG(x) (x) #endif #ifndef newSVpvn # define newSVpvn(data,len) ((data) \ ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ : newSV(0)) #endif #ifndef newSVpvn_utf8 # define newSVpvn_utf8(s, len, u) newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0) #endif #ifndef SVf_UTF8 # define SVf_UTF8 0 #endif #ifndef newSVpvn_flags # if defined(PERL_USE_GCC_BRACE_GROUPS) # define newSVpvn_flags(s, len, flags) \ ({ \ SV * sv = newSVpvn(D_PPP_CONSTPV_ARG(s), (len)); \ SvFLAGS(sv) |= ((flags) & SVf_UTF8); \ if ((flags) & SVs_TEMP) sv = sv_2mortal(sv); \ sv; \ }) # else PERL_STATIC_INLINE SV* D_PPP_newSVpvn_flags(const char *const s, const STRLEN len, const U32 flags) { dTHX; SV * sv = newSVpvn(s, len); SvFLAGS(sv) |= (flags & SVf_UTF8); if (flags & SVs_TEMP) return sv_2mortal(sv); return sv; } # define newSVpvn_flags(s, len, flags) D_PPP_newSVpvn_flags((s), (len), (flags)) # endif #endif #ifndef SV_NOSTEAL # define SV_NOSTEAL 16 #endif #if ( (PERL_BCDVERSION >= 0x5007003) && (PERL_BCDVERSION < 0x5008007) ) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009002) ) #undef sv_setsv_flags #if defined(PERL_USE_GCC_BRACE_GROUPS) #define sv_setsv_flags(dstr, sstr, flags) \ STMT_START { \ if (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) { \ SvTEMP_off((SV *)(sstr)); \ Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL); \ SvTEMP_on((SV *)(sstr)); \ } else { \ Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL); \ } \ } STMT_END #else #define sv_setsv_flags(dstr, sstr, flags) \ ( \ (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) ? ( \ SvTEMP_off((SV *)(sstr)), \ Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL), \ SvTEMP_on((SV *)(sstr)), \ 1 \ ) : ( \ Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL), \ 1 \ ) \ ) #endif #endif #if defined(PERL_USE_GCC_BRACE_GROUPS) #ifndef sv_setsv_flags # define sv_setsv_flags(dstr, sstr, flags) \ STMT_START { \ if (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) { \ SvTEMP_off((SV *)(sstr)); \ if (!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) { \ SvGMAGICAL_off((SV *)(sstr)); \ sv_setsv((dstr), (sstr)); \ SvGMAGICAL_on((SV *)(sstr)); \ } else { \ sv_setsv((dstr), (sstr)); \ } \ SvTEMP_on((SV *)(sstr)); \ } else { \ if (!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) { \ SvGMAGICAL_off((SV *)(sstr)); \ sv_setsv((dstr), (sstr)); \ SvGMAGICAL_on((SV *)(sstr)); \ } else { \ sv_setsv((dstr), (sstr)); \ } \ } \ } STMT_END #endif #else #ifndef sv_setsv_flags # define sv_setsv_flags(dstr, sstr, flags) \ ( \ (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) ? ( \ SvTEMP_off((SV *)(sstr)), \ (!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) ? ( \ SvGMAGICAL_off((SV *)(sstr)), \ sv_setsv((dstr), (sstr)), \ SvGMAGICAL_on((SV *)(sstr)), \ 1 \ ) : ( \ sv_setsv((dstr), (sstr)), \ 1 \ ), \ SvTEMP_on((SV *)(sstr)), \ 1 \ ) : ( \ (!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) ? ( \ SvGMAGICAL_off((SV *)(sstr)), \ sv_setsv((dstr), (sstr)), \ SvGMAGICAL_on((SV *)(sstr)), \ 1 \ ) : ( \ sv_setsv((dstr), (sstr)), \ 1 \ ) \ ) \ ) #endif #endif #ifndef newSVsv_flags # if defined(PERL_USE_GCC_BRACE_GROUPS) # define newSVsv_flags(sv, flags) \ ({ \ SV *n= newSV(0); \ sv_setsv_flags(n, (sv), (flags)); \ n; \ }) # else PERL_STATIC_INLINE SV* D_PPP_newSVsv_flags(SV *const old, I32 flags) { dTHX; SV *n= newSV(0); sv_setsv_flags(n, old, flags); return n; } # define newSVsv_flags(sv, flags) D_PPP_newSVsv_flags(sv, flags) # endif #endif #ifndef newSVsv_nomg # define newSVsv_nomg(sv) newSVsv_flags((sv), SV_NOSTEAL) #endif #if (PERL_BCDVERSION >= 0x5017005) #ifndef sv_mortalcopy_flags # define sv_mortalcopy_flags(sv, flags) Perl_sv_mortalcopy_flags(aTHX_ (sv), (flags)) #endif #else #ifndef sv_mortalcopy_flags # define sv_mortalcopy_flags(sv, flags) sv_2mortal(newSVsv_flags((sv), (flags))) #endif #endif #ifndef SvMAGIC_set # define SvMAGIC_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END #endif #if (PERL_BCDVERSION < 0x5009003) #ifndef SvPVX_const # define SvPVX_const(sv) ((const char*) (0 + SvPVX(sv))) #endif #ifndef SvPVX_mutable # define SvPVX_mutable(sv) (0 + SvPVX(sv)) #endif #ifndef SvRV_set # define SvRV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ (((XRV*) SvANY(sv))->xrv_rv = (val)); } STMT_END #endif #else #ifndef SvPVX_const # define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv)) #endif #ifndef SvPVX_mutable # define SvPVX_mutable(sv) ((sv)->sv_u.svu_pv) #endif #ifndef SvRV_set # define SvRV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ ((sv)->sv_u.svu_rv = (val)); } STMT_END #endif #endif #ifndef SvSTASH_set # define SvSTASH_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END #endif #if (PERL_BCDVERSION < 0x5004000) #ifndef SvUV_set # define SvUV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ (((XPVIV*) SvANY(sv))->xiv_iv = (IV) (val)); } STMT_END #endif #else #ifndef SvUV_set # define SvUV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ (((XPVUV*) SvANY(sv))->xuv_uv = (val)); } STMT_END #endif #endif /* Hint: newSVpvn_share * The SVs created by this function only mimic the behaviour of * shared PVs without really being shared. Only use if you know * what you're doing. */ #ifndef newSVpvn_share #if defined(NEED_newSVpvn_share) static SV * DPPP_(my_newSVpvn_share)(pTHX_ const char * s, I32 len, U32 hash); static #else extern SV * DPPP_(my_newSVpvn_share)(pTHX_ const char * s, I32 len, U32 hash); #endif #if defined(NEED_newSVpvn_share) || defined(NEED_newSVpvn_share_GLOBAL) #ifdef newSVpvn_share # undef newSVpvn_share #endif #define newSVpvn_share(a,b,c) DPPP_(my_newSVpvn_share)(aTHX_ a,b,c) #define Perl_newSVpvn_share DPPP_(my_newSVpvn_share) SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *s, I32 len, U32 hash) { SV *sv; if (len < 0) len = -len; if (!hash) PERL_HASH(hash, (char*) s, len); sv = newSVpvn((char *) s, len); sv_upgrade(sv, SVt_PVIV); SvIVX(sv) = hash; SvREADONLY_on(sv); SvPOK_on(sv); return sv; } #endif #endif #ifndef SvSHARED_HASH # define SvSHARED_HASH(sv) (0 + SvUVX(sv)) #endif #ifndef HvNAME_get # define HvNAME_get(hv) HvNAME(hv) #endif #ifndef HvNAMELEN_get # define HvNAMELEN_get(hv) (HvNAME_get(hv) ? (I32)strlen(HvNAME_get(hv)) : 0) #endif #if (PERL_BCDVERSION >= 0x5009002) && (PERL_BCDVERSION <= 0x5009003) /* 5.9.2 and 5.9.3 ignore the length param */ #undef gv_fetchpvn_flags #endif #ifdef GV_NOADD_MASK # define D_PPP_GV_NOADD_MASK GV_NOADD_MASK #else # define D_PPP_GV_NOADD_MASK 0xE0 #endif #ifndef gv_fetchpvn_flags # define gv_fetchpvn_flags(name, len, flags, sv_type) gv_fetchpv(SvPVX(sv_2mortal(newSVpvn((name), (len)))), ((flags) & D_PPP_GV_NOADD_MASK) ? FALSE : TRUE, (I32)(sv_type)) #endif #ifndef GvSVn # define GvSVn(gv) GvSV(gv) #endif #ifndef isGV_with_GP # define isGV_with_GP(gv) isGV(gv) #endif #ifndef gv_fetchsv # define gv_fetchsv(name, flags, svt) gv_fetchpv(SvPV_nolen_const(name), flags, svt) #endif #ifndef get_cvn_flags # define get_cvn_flags(name, namelen, flags) get_cv(name, flags) #endif #ifndef gv_init_pvn # define gv_init_pvn(gv, stash, ptr, len, flags) gv_init(gv, stash, ptr, len, flags & GV_ADDMULTI ? TRUE : FALSE) #endif /* concatenating with "" ensures that only literal strings are accepted as argument * note that STR_WITH_LEN() can't be used as argument to macros or functions that * under some configurations might be macros */ #ifndef STR_WITH_LEN # define STR_WITH_LEN(s) (s ""), (sizeof(s)-1) #endif #ifndef newSVpvs # define newSVpvs(str) newSVpvn(str "", sizeof(str) - 1) #endif #ifndef newSVpvs_flags # define newSVpvs_flags(str, flags) newSVpvn_flags(str "", sizeof(str) - 1, flags) #endif #ifndef newSVpvs_share # define newSVpvs_share(str) newSVpvn_share(str "", sizeof(str) - 1, 0) #endif #ifndef sv_catpvs # define sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1) #endif #ifndef sv_setpvs # define sv_setpvs(sv, str) sv_setpvn(sv, str "", sizeof(str) - 1) #endif #ifndef hv_fetchs # define hv_fetchs(hv, key, lval) hv_fetch(hv, key "", sizeof(key) - 1, lval) #endif #ifndef hv_stores # define hv_stores(hv, key, val) hv_store(hv, key "", sizeof(key) - 1, val, 0) #endif #ifndef gv_fetchpvs # define gv_fetchpvs(name, flags, svt) gv_fetchpvn_flags(name "", sizeof(name) - 1, flags, svt) #endif #ifndef gv_stashpvs # define gv_stashpvs(name, flags) gv_stashpvn(name "", sizeof(name) - 1, flags) #endif #ifndef get_cvs # define get_cvs(name, flags) get_cvn_flags(name "", sizeof(name)-1, flags) #endif #undef SvGETMAGIC #ifndef SvGETMAGIC # define SvGETMAGIC(x) ((void)(UNLIKELY(SvGMAGICAL(x)) && mg_get(x))) #endif /* That's the best we can do... */ #ifndef sv_catpvn_nomg # define sv_catpvn_nomg sv_catpvn #endif #ifndef sv_catsv_nomg # define sv_catsv_nomg sv_catsv #endif #ifndef sv_setsv_nomg # define sv_setsv_nomg sv_setsv #endif #ifndef sv_pvn_nomg # define sv_pvn_nomg sv_pvn #endif #ifdef SVf_IVisUV #if defined(PERL_USE_GCC_BRACE_GROUPS) #ifndef SvIV_nomg # define SvIV_nomg(sv) (!SvGMAGICAL((sv)) ? SvIV((sv)) : ({ SV *_sviv = sv_mortalcopy_flags((sv), SV_NOSTEAL); IV _iv = SvIV(_sviv); SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(_sviv) & SVf_IVisUV); _iv; })) #endif #ifndef SvUV_nomg # define SvUV_nomg(sv) (!SvGMAGICAL((sv)) ? SvUV((sv)) : ({ SV *_svuv = sv_mortalcopy_flags((sv), SV_NOSTEAL); UV _uv = SvUV(_svuv); SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(_svuv) & SVf_IVisUV); _uv; })) #endif #else #ifndef SvIV_nomg # define SvIV_nomg(sv) (!SvGMAGICAL((sv)) ? SvIV((sv)) : ((PL_Sv = sv_mortalcopy_flags((sv), SV_NOSTEAL)), sv_upgrade(PL_Sv, SVt_PVIV), (SvIVX(PL_Sv) = SvIV(PL_Sv)), (SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(PL_Sv) & SVf_IVisUV)), SvIVX(PL_Sv))) #endif #ifndef SvUV_nomg # define SvUV_nomg(sv) (!SvGMAGICAL((sv)) ? SvIV((sv)) : ((PL_Sv = sv_mortalcopy_flags((sv), SV_NOSTEAL)), sv_upgrade(PL_Sv, SVt_PVIV), (SvUVX(PL_Sv) = SvUV(PL_Sv)), (SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(PL_Sv) & SVf_IVisUV)), SvUVX(PL_Sv))) #endif #endif #else #ifndef SvIV_nomg # define SvIV_nomg(sv) (!SvGMAGICAL((sv)) ? SvIV((sv)) : SvIVx(sv_mortalcopy_flags((sv), SV_NOSTEAL))) #endif #ifndef SvUV_nomg # define SvUV_nomg(sv) (!SvGMAGICAL((sv)) ? SvUV((sv)) : SvUVx(sv_mortalcopy_flags((sv), SV_NOSTEAL))) #endif #endif #ifndef SvNV_nomg # define SvNV_nomg(sv) (!SvGMAGICAL((sv)) ? SvNV((sv)) : SvNVx(sv_mortalcopy_flags((sv), SV_NOSTEAL))) #endif #ifndef SvTRUE_nomg # define SvTRUE_nomg(sv) (!SvGMAGICAL((sv)) ? SvTRUE((sv)) : SvTRUEx(sv_mortalcopy_flags((sv), SV_NOSTEAL))) #endif #ifndef sv_catpv_mg # define sv_catpv_mg(sv, ptr) \ STMT_START { \ SV *TeMpSv = sv; \ sv_catpv(TeMpSv,ptr); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_catpvn_mg # define sv_catpvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_catpvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_catsv_mg # define sv_catsv_mg(dsv, ssv) \ STMT_START { \ SV *TeMpSv = dsv; \ sv_catsv(TeMpSv,ssv); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setiv_mg # define sv_setiv_mg(sv, i) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setiv(TeMpSv,i); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setnv_mg # define sv_setnv_mg(sv, num) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setnv(TeMpSv,num); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setpv_mg # define sv_setpv_mg(sv, ptr) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setpv(TeMpSv,ptr); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setpvn_mg # define sv_setpvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setpvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setsv_mg # define sv_setsv_mg(dsv, ssv) \ STMT_START { \ SV *TeMpSv = dsv; \ sv_setsv(TeMpSv,ssv); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setuv_mg # define sv_setuv_mg(sv, i) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setuv(TeMpSv,i); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_usepvn_mg # define sv_usepvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_usepvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef SvVSTRING_mg # define SvVSTRING_mg(sv) (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL) #endif /* Hint: sv_magic_portable * This is a compatibility function that is only available with * Devel::PPPort. It is NOT in the perl core. * Its purpose is to mimic the 5.8.0 behaviour of sv_magic() when * it is being passed a name pointer with namlen == 0. In that * case, perl 5.8.0 and later store the pointer, not a copy of it. * The compatibility can be provided back to perl 5.004. With * earlier versions, the code will not compile. */ #if (PERL_BCDVERSION < 0x5004000) /* code that uses sv_magic_portable will not compile */ #elif (PERL_BCDVERSION < 0x5008000) # define sv_magic_portable(sv, obj, how, name, namlen) \ STMT_START { \ SV *SvMp_sv = (sv); \ char *SvMp_name = (char *) (name); \ I32 SvMp_namlen = (namlen); \ if (SvMp_name && SvMp_namlen == 0) \ { \ MAGIC *mg; \ sv_magic(SvMp_sv, obj, how, 0, 0); \ mg = SvMAGIC(SvMp_sv); \ mg->mg_len = -42; /* XXX: this is the tricky part */ \ mg->mg_ptr = SvMp_name; \ } \ else \ { \ sv_magic(SvMp_sv, obj, how, SvMp_name, SvMp_namlen); \ } \ } STMT_END #else # define sv_magic_portable(a, b, c, d, e) sv_magic(a, b, c, d, e) #endif #if !defined(mg_findext) #if defined(NEED_mg_findext) static MAGIC * DPPP_(my_mg_findext)(const SV * sv, int type, const MGVTBL * vtbl); static #else extern MAGIC * DPPP_(my_mg_findext)(const SV * sv, int type, const MGVTBL * vtbl); #endif #if defined(NEED_mg_findext) || defined(NEED_mg_findext_GLOBAL) #define mg_findext DPPP_(my_mg_findext) #define Perl_mg_findext DPPP_(my_mg_findext) MAGIC * DPPP_(my_mg_findext)(const SV * sv, int type, const MGVTBL *vtbl) { if (sv) { MAGIC *mg; #ifdef AvPAD_NAMELIST assert(!(SvTYPE(sv) == SVt_PVAV && AvPAD_NAMELIST(sv))); #endif for (mg = SvMAGIC (sv); mg; mg = mg->mg_moremagic) { if (mg->mg_type == type && mg->mg_virtual == vtbl) return mg; } } return NULL; } #endif #endif #if !defined(sv_unmagicext) #if defined(NEED_sv_unmagicext) static int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, const MGVTBL * vtbl); static #else extern int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, const MGVTBL * vtbl); #endif #if defined(NEED_sv_unmagicext) || defined(NEED_sv_unmagicext_GLOBAL) #ifdef sv_unmagicext # undef sv_unmagicext #endif #define sv_unmagicext(a,b,c) DPPP_(my_sv_unmagicext)(aTHX_ a,b,c) #define Perl_sv_unmagicext DPPP_(my_sv_unmagicext) int DPPP_(my_sv_unmagicext)(pTHX_ SV *const sv, const int type, const MGVTBL *vtbl) { MAGIC* mg; MAGIC** mgp; if (SvTYPE(sv) < SVt_PVMG || !SvMAGIC(sv)) return 0; mgp = &(SvMAGIC(sv)); for (mg = *mgp; mg; mg = *mgp) { const MGVTBL* const virt = mg->mg_virtual; if (mg->mg_type == type && virt == vtbl) { *mgp = mg->mg_moremagic; if (virt && virt->svt_free) virt->svt_free(aTHX_ sv, mg); if (mg->mg_ptr && mg->mg_type != PERL_MAGIC_regex_global) { if (mg->mg_len > 0) Safefree(mg->mg_ptr); else if (mg->mg_len == HEf_SVKEY) /* Questionable on older perls... */ SvREFCNT_dec(MUTABLE_SV(mg->mg_ptr)); else if (mg->mg_type == PERL_MAGIC_utf8) Safefree(mg->mg_ptr); } if (mg->mg_flags & MGf_REFCOUNTED) SvREFCNT_dec(mg->mg_obj); Safefree(mg); } else mgp = &mg->mg_moremagic; } if (SvMAGIC(sv)) { if (SvMAGICAL(sv)) /* if we're under save_magic, wait for restore_magic; */ mg_magical(sv); /* else fix the flags now */ } else { SvMAGICAL_off(sv); SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT; } return 0; } #endif #endif #ifdef USE_ITHREADS #ifndef CopFILE # define CopFILE(c) ((c)->cop_file) #endif #ifndef CopFILEGV # define CopFILEGV(c) (CopFILE(c) ? gv_fetchfile(CopFILE(c)) : Nullgv) #endif #ifndef CopFILE_set # define CopFILE_set(c,pv) ((c)->cop_file = savepv(pv)) #endif #ifndef CopFILESV # define CopFILESV(c) (CopFILE(c) ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv) #endif #ifndef CopFILEAV # define CopFILEAV(c) (CopFILE(c) ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav) #endif #ifndef CopSTASHPV # define CopSTASHPV(c) ((c)->cop_stashpv) #endif #ifndef CopSTASHPV_set # define CopSTASHPV_set(c,pv) ((c)->cop_stashpv = ((pv) ? savepv(pv) : Nullch)) #endif #ifndef CopSTASH # define CopSTASH(c) (CopSTASHPV(c) ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv) #endif #ifndef CopSTASH_set # define CopSTASH_set(c,hv) CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch) #endif #ifndef CopSTASH_eq # define CopSTASH_eq(c,hv) ((hv) && (CopSTASHPV(c) == HvNAME(hv) \ || (CopSTASHPV(c) && HvNAME(hv) \ && strEQ(CopSTASHPV(c), HvNAME(hv))))) #endif #else #ifndef CopFILEGV # define CopFILEGV(c) ((c)->cop_filegv) #endif #ifndef CopFILEGV_set # define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) #endif #ifndef CopFILE_set # define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) #endif #ifndef CopFILESV # define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv) #endif #ifndef CopFILEAV # define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav) #endif #ifndef CopFILE # define CopFILE(c) (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch) #endif #ifndef CopSTASH # define CopSTASH(c) ((c)->cop_stash) #endif #ifndef CopSTASH_set # define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) #endif #ifndef CopSTASHPV # define CopSTASHPV(c) (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch) #endif #ifndef CopSTASHPV_set # define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD)) #endif #ifndef CopSTASH_eq # define CopSTASH_eq(c,hv) (CopSTASH(c) == (hv)) #endif #endif /* USE_ITHREADS */ #if (PERL_BCDVERSION >= 0x5006000) #ifndef caller_cx # if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL) static I32 DPPP_dopoptosub_at(const PERL_CONTEXT *cxstk, I32 startingblock) { I32 i; for (i = startingblock; i >= 0; i--) { const PERL_CONTEXT * const cx = &cxstk[i]; switch (CxTYPE(cx)) { default: continue; case CXt_EVAL: case CXt_SUB: case CXt_FORMAT: return i; } } return i; } # endif # if defined(NEED_caller_cx) static const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 level, const PERL_CONTEXT * * dbcxp); static #else extern const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 level, const PERL_CONTEXT * * dbcxp); #endif #if defined(NEED_caller_cx) || defined(NEED_caller_cx_GLOBAL) #ifdef caller_cx # undef caller_cx #endif #define caller_cx(a,b) DPPP_(my_caller_cx)(aTHX_ a,b) #define Perl_caller_cx DPPP_(my_caller_cx) const PERL_CONTEXT * DPPP_(my_caller_cx)(pTHX_ I32 level, const PERL_CONTEXT **dbcxp) { I32 cxix = DPPP_dopoptosub_at(cxstack, cxstack_ix); const PERL_CONTEXT *cx; const PERL_CONTEXT *ccstack = cxstack; const PERL_SI *top_si = PL_curstackinfo; for (;;) { /* we may be in a higher stacklevel, so dig down deeper */ while (cxix < 0 && top_si->si_type != PERLSI_MAIN) { top_si = top_si->si_prev; ccstack = top_si->si_cxstack; cxix = DPPP_dopoptosub_at(ccstack, top_si->si_cxix); } if (cxix < 0) return NULL; /* caller() should not report the automatic calls to &DB::sub */ if (PL_DBsub && GvCV(PL_DBsub) && cxix >= 0 && ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub)) level++; if (!level--) break; cxix = DPPP_dopoptosub_at(ccstack, cxix - 1); } cx = &ccstack[cxix]; if (dbcxp) *dbcxp = cx; if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) { const I32 dbcxix = DPPP_dopoptosub_at(ccstack, cxix - 1); /* We expect that ccstack[dbcxix] is CXt_SUB, anyway, the field below is defined for any cx. */ /* caller() should not report the automatic calls to &DB::sub */ if (PL_DBsub && GvCV(PL_DBsub) && dbcxix >= 0 && ccstack[dbcxix].blk_sub.cv == GvCV(PL_DBsub)) cx = &ccstack[dbcxix]; } return cx; } # endif #endif /* caller_cx */ #endif /* 5.6.0 */ #ifndef IN_PERL_COMPILETIME # define IN_PERL_COMPILETIME (PL_curcop == &PL_compiling) #endif #ifndef IN_LOCALE_RUNTIME # define IN_LOCALE_RUNTIME (PL_curcop->op_private & HINT_LOCALE) #endif #ifndef IN_LOCALE_COMPILETIME # define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE) #endif #ifndef IN_LOCALE # define IN_LOCALE (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME) #endif #ifndef IS_NUMBER_IN_UV # define IS_NUMBER_IN_UV 0x01 #endif #ifndef IS_NUMBER_GREATER_THAN_UV_MAX # define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 #endif #ifndef IS_NUMBER_NOT_INT # define IS_NUMBER_NOT_INT 0x04 #endif #ifndef IS_NUMBER_NEG # define IS_NUMBER_NEG 0x08 #endif #ifndef IS_NUMBER_INFINITY # define IS_NUMBER_INFINITY 0x10 #endif #ifndef IS_NUMBER_NAN # define IS_NUMBER_NAN 0x20 #endif #ifndef GROK_NUMERIC_RADIX # define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send) #endif #ifndef PERL_SCAN_GREATER_THAN_UV_MAX # define PERL_SCAN_GREATER_THAN_UV_MAX 0x02 #endif #ifndef PERL_SCAN_SILENT_ILLDIGIT # define PERL_SCAN_SILENT_ILLDIGIT 0x04 #endif #ifndef PERL_SCAN_ALLOW_UNDERSCORES # define PERL_SCAN_ALLOW_UNDERSCORES 0x01 #endif #ifndef PERL_SCAN_DISALLOW_PREFIX # define PERL_SCAN_DISALLOW_PREFIX 0x02 #endif #ifndef grok_numeric_radix #if defined(NEED_grok_numeric_radix) static bool DPPP_(my_grok_numeric_radix)(pTHX_ const char * * sp, const char * send); static #else extern bool DPPP_(my_grok_numeric_radix)(pTHX_ const char * * sp, const char * send); #endif #if defined(NEED_grok_numeric_radix) || defined(NEED_grok_numeric_radix_GLOBAL) #ifdef grok_numeric_radix # undef grok_numeric_radix #endif #define grok_numeric_radix(a,b) DPPP_(my_grok_numeric_radix)(aTHX_ a,b) #define Perl_grok_numeric_radix DPPP_(my_grok_numeric_radix) bool DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char *send) { #ifdef USE_LOCALE_NUMERIC #ifdef PL_numeric_radix_sv if (PL_numeric_radix_sv && IN_LOCALE) { STRLEN len; char* radix = SvPV(PL_numeric_radix_sv, len); if (*sp + len <= send && memEQ(*sp, radix, len)) { *sp += len; return TRUE; } } #else /* older perls don't have PL_numeric_radix_sv so the radix * must manually be requested from locale.h */ #include dTHR; /* needed for older threaded perls */ struct lconv *lc = localeconv(); char *radix = lc->decimal_point; if (radix && IN_LOCALE) { STRLEN len = strlen(radix); if (*sp + len <= send && memEQ(*sp, radix, len)) { *sp += len; return TRUE; } } #endif #endif /* USE_LOCALE_NUMERIC */ /* always try "." if numeric radix didn't match because * we may have data from different locales mixed */ if (*sp < send && **sp == '.') { ++*sp; return TRUE; } return FALSE; } #endif #endif #ifndef grok_number #if defined(NEED_grok_number) static int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); static #else extern int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); #endif #if defined(NEED_grok_number) || defined(NEED_grok_number_GLOBAL) #ifdef grok_number # undef grok_number #endif #define grok_number(a,b,c) DPPP_(my_grok_number)(aTHX_ a,b,c) #define Perl_grok_number DPPP_(my_grok_number) int DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep) { const char *s = pv; const char *send = pv + len; const UV max_div_10 = UV_MAX / 10; const char max_mod_10 = UV_MAX % 10; int numtype = 0; int sawinf = 0; int sawnan = 0; while (s < send && isSPACE(*s)) s++; if (s == send) { return 0; } else if (*s == '-') { s++; numtype = IS_NUMBER_NEG; } else if (*s == '+') s++; if (s == send) return 0; /* next must be digit or the radix separator or beginning of infinity */ if (isDIGIT(*s)) { /* UVs are at least 32 bits, so the first 9 decimal digits cannot overflow. */ UV value = *s - '0'; /* This construction seems to be more optimiser friendly. (without it gcc does the isDIGIT test and the *s - '0' separately) With it gcc on arm is managing 6 instructions (6 cycles) per digit. In theory the optimiser could deduce how far to unroll the loop before checking for overflow. */ if (++s < send) { int digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { /* Now got 9 digits, so need to check each time for overflow. */ digit = *s - '0'; while (digit >= 0 && digit <= 9 && (value < max_div_10 || (value == max_div_10 && digit <= max_mod_10))) { value = value * 10 + digit; if (++s < send) digit = *s - '0'; else break; } if (digit >= 0 && digit <= 9 && (s < send)) { /* value overflowed. skip the remaining digits, don't worry about setting *valuep. */ do { s++; } while (s < send && isDIGIT(*s)); numtype |= IS_NUMBER_GREATER_THAN_UV_MAX; goto skip_value; } } } } } } } } } } } } } } } } } } numtype |= IS_NUMBER_IN_UV; if (valuep) *valuep = value; skip_value: if (GROK_NUMERIC_RADIX(&s, send)) { numtype |= IS_NUMBER_NOT_INT; while (s < send && isDIGIT(*s)) /* optional digits after the radix */ s++; } } else if (GROK_NUMERIC_RADIX(&s, send)) { numtype |= IS_NUMBER_NOT_INT | IS_NUMBER_IN_UV; /* valuep assigned below */ /* no digits before the radix means we need digits after it */ if (s < send && isDIGIT(*s)) { do { s++; } while (s < send && isDIGIT(*s)); if (valuep) { /* integer approximation is valid - it's 0. */ *valuep = 0; } } else return 0; } else if (*s == 'I' || *s == 'i') { s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; if (s == send || (*s != 'F' && *s != 'f')) return 0; s++; if (s < send && (*s == 'I' || *s == 'i')) { s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; if (s == send || (*s != 'I' && *s != 'i')) return 0; s++; if (s == send || (*s != 'T' && *s != 't')) return 0; s++; if (s == send || (*s != 'Y' && *s != 'y')) return 0; s++; } sawinf = 1; } else if (*s == 'N' || *s == 'n') { /* XXX TODO: There are signaling NaNs and quiet NaNs. */ s++; if (s == send || (*s != 'A' && *s != 'a')) return 0; s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; sawnan = 1; } else return 0; if (sawinf) { numtype &= IS_NUMBER_NEG; /* Keep track of sign */ numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT; } else if (sawnan) { numtype &= IS_NUMBER_NEG; /* Keep track of sign */ numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT; } else if (s < send) { /* we can have an optional exponent part */ if (*s == 'e' || *s == 'E') { /* The only flag we keep is sign. Blow away any "it's UV" */ numtype &= IS_NUMBER_NEG; numtype |= IS_NUMBER_NOT_INT; s++; if (s < send && (*s == '-' || *s == '+')) s++; if (s < send && isDIGIT(*s)) { do { s++; } while (s < send && isDIGIT(*s)); } else return 0; } } while (s < send && isSPACE(*s)) s++; if (s >= send) return numtype; if (len == 10 && memEQ(pv, "0 but true", 10)) { if (valuep) *valuep = 0; return IS_NUMBER_IN_UV; } return 0; } #endif #endif /* * The grok_* routines have been modified to use warn() instead of * Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit, * which is why the stack variable has been renamed to 'xdigit'. */ #ifndef grok_bin #if defined(NEED_grok_bin) static UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); static #else extern UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); #endif #if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL) #ifdef grok_bin # undef grok_bin #endif #define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d) #define Perl_grok_bin DPPP_(my_grok_bin) UV DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_2 = UV_MAX / 2; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { /* strip off leading b or 0b. for compatibility silently suffer "b" and "0b" as valid binary numbers. */ if (len >= 1) { if (s[0] == 'b') { s++; len--; } else if (len >= 2 && s[0] == '0' && s[1] == 'b') { s+=2; len-=2; } } } for (; len-- && *s; s++) { char bit = *s; if (bit == '0' || bit == '1') { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. With gcc seems to be much straighter code than old scan_bin. */ redo: if (!overflowed) { if (value <= max_div_2) { value = (value << 1) | (bit - '0'); continue; } /* Bah. We're just overflowed. */ warn("Integer overflow in binary number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 2.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount. */ value_nv += (NV)(bit - '0'); continue; } if (bit == '_' && len && allow_underscores && (bit = s[1]) && (bit == '0' || bit == '1')) { --len; ++s; goto redo; } if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal binary digit '%c' ignored", *s); break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Binary number > 0b11111111111111111111111111111111 non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #ifndef grok_hex #if defined(NEED_grok_hex) static UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); static #else extern UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); #endif #if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL) #ifdef grok_hex # undef grok_hex #endif #define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d) #define Perl_grok_hex DPPP_(my_grok_hex) UV DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_16 = UV_MAX / 16; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; const char *xdigit; if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { /* strip off leading x or 0x. for compatibility silently suffer "x" and "0x" as valid hex numbers. */ if (len >= 1) { if (s[0] == 'x') { s++; len--; } else if (len >= 2 && s[0] == '0' && s[1] == 'x') { s+=2; len-=2; } } } for (; len-- && *s; s++) { xdigit = strchr((char *) PL_hexdigit, *s); if (xdigit) { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. With gcc seems to be much straighter code than old scan_hex. */ redo: if (!overflowed) { if (value <= max_div_16) { value = (value << 4) | ((xdigit - PL_hexdigit) & 15); continue; } warn("Integer overflow in hexadecimal number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 16.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount of 16-tuples. */ value_nv += (NV)((xdigit - PL_hexdigit) & 15); continue; } if (*s == '_' && len && allow_underscores && s[1] && (xdigit = strchr((char *) PL_hexdigit, s[1]))) { --len; ++s; goto redo; } if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal hexadecimal digit '%c' ignored", *s); break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Hexadecimal number > 0xffffffff non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #ifndef grok_oct #if defined(NEED_grok_oct) static UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); static #else extern UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); #endif #if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL) #ifdef grok_oct # undef grok_oct #endif #define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d) #define Perl_grok_oct DPPP_(my_grok_oct) UV DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_8 = UV_MAX / 8; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; for (; len-- && *s; s++) { /* gcc 2.95 optimiser not smart enough to figure that this subtraction out front allows slicker code. */ int digit = *s - '0'; if (digit >= 0 && digit <= 7) { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. */ redo: if (!overflowed) { if (value <= max_div_8) { value = (value << 3) | digit; continue; } /* Bah. We're just overflowed. */ warn("Integer overflow in octal number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 8.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount of 8-tuples. */ value_nv += (NV)digit; continue; } if (digit == ('_' - '0') && len && allow_underscores && (digit = s[1] - '0') && (digit >= 0 && digit <= 7)) { --len; ++s; goto redo; } /* Allow \octal to work the DWIM way (that is, stop scanning * as soon as non-octal characters are seen, complain only iff * someone seems to want to use the digits eight and nine). */ if (digit == 8 || digit == 9) { if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal octal digit '%c' ignored", *s); } break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Octal number > 037777777777 non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #if !defined(my_snprintf) #if defined(NEED_my_snprintf) static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); static #else extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); #endif #if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL) #define my_snprintf DPPP_(my_my_snprintf) #define Perl_my_snprintf DPPP_(my_my_snprintf) int DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...) { dTHX; int retval; va_list ap; va_start(ap, format); #ifdef HAS_VSNPRINTF retval = vsnprintf(buffer, len, format, ap); #else retval = vsprintf(buffer, format, ap); #endif va_end(ap); if (retval < 0 || (len > 0 && (Size_t)retval >= len)) Perl_croak(aTHX_ "panic: my_snprintf buffer overflow"); return retval; } #endif #endif #if !defined(my_sprintf) #if defined(NEED_my_sprintf) static int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); static #else extern int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); #endif #if defined(NEED_my_sprintf) || defined(NEED_my_sprintf_GLOBAL) #define my_sprintf DPPP_(my_my_sprintf) /* Warning: my_sprintf It's safer to use my_snprintf instead */ /* Replace my_sprintf with my_snprintf */ int DPPP_(my_my_sprintf)(char *buffer, const char* pat, ...) { va_list args; va_start(args, pat); vsprintf(buffer, pat, args); va_end(args); return strlen(buffer); } #endif #endif #ifdef NO_XSLOCKS # ifdef dJMPENV # define dXCPT dJMPENV; int rEtV = 0 # define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0) # define XCPT_TRY_END JMPENV_POP; # define XCPT_CATCH if (rEtV != 0) # define XCPT_RETHROW JMPENV_JUMP(rEtV) # else # define dXCPT Sigjmp_buf oldTOP; int rEtV = 0 # define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0) # define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf); # define XCPT_CATCH if (rEtV != 0) # define XCPT_RETHROW Siglongjmp(top_env, rEtV) # endif #endif #if !defined(my_strlcat) #if defined(NEED_my_strlcat) static Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); static #else extern Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); #endif #if defined(NEED_my_strlcat) || defined(NEED_my_strlcat_GLOBAL) #define my_strlcat DPPP_(my_my_strlcat) #define Perl_my_strlcat DPPP_(my_my_strlcat) Size_t DPPP_(my_my_strlcat)(char *dst, const char *src, Size_t size) { Size_t used, length, copy; used = strlen(dst); length = strlen(src); if (size > 0 && used < size - 1) { copy = (length >= size - used) ? size - used - 1 : length; memcpy(dst + used, src, copy); dst[used + copy] = '\0'; } return used + length; } #endif #endif #if !defined(my_strlcpy) #if defined(NEED_my_strlcpy) static Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); static #else extern Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); #endif #if defined(NEED_my_strlcpy) || defined(NEED_my_strlcpy_GLOBAL) #define my_strlcpy DPPP_(my_my_strlcpy) #define Perl_my_strlcpy DPPP_(my_my_strlcpy) Size_t DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size) { Size_t length, copy; length = strlen(src); if (size > 0) { copy = (length >= size) ? size - 1 : length; memcpy(dst, src, copy); dst[copy] = '\0'; } return length; } #endif #endif #ifdef SVf_UTF8 #ifndef SvUTF8 # define SvUTF8(sv) (SvFLAGS(sv) & SVf_UTF8) #endif #endif #if (PERL_BCDVERSION == 0x5019001) /* 5.19.1 does not have UTF8fARG, only broken UTF8f */ #undef UTF8f #endif #ifdef SVf_UTF8 #ifndef UTF8f # define UTF8f SVf #endif #ifndef UTF8fARG # define UTF8fARG(u,l,p) newSVpvn_flags((p), (l), ((u) ? SVf_UTF8 : 0) | SVs_TEMP) #endif #endif #define D_PPP_MIN(a,b) (((a) <= (b)) ? (a) : (b)) #ifndef UNICODE_REPLACEMENT # define UNICODE_REPLACEMENT 0xFFFD #endif #ifdef UTF8_MAXLEN #ifndef UTF8_MAXBYTES # define UTF8_MAXBYTES UTF8_MAXLEN #endif #endif #ifndef UTF_START_MARK # define UTF_START_MARK(len) \ (((len) > 7) ? 0xFF : (0xFF & (0xFE << (7-(len))))) #endif /* On non-EBCDIC was valid for some releases earlier than this, but easier to * just do one check */ #if (PERL_BCDVERSION < 0x5018000) # undef UTF8_MAXBYTES_CASE #endif #if 'A' == 65 # define D_PPP_BYTE_INFO_BITS 6 /* 6 bits meaningful in continuation bytes */ #ifndef UTF8_MAXBYTES_CASE # define UTF8_MAXBYTES_CASE 13 #endif #else # define D_PPP_BYTE_INFO_BITS 5 /* 5 bits meaningful in continuation bytes */ #ifndef UTF8_MAXBYTES_CASE # define UTF8_MAXBYTES_CASE 15 #endif #endif #ifndef UTF_ACCUMULATION_SHIFT # define UTF_ACCUMULATION_SHIFT D_PPP_BYTE_INFO_BITS #endif #ifdef NATIVE_TO_UTF #ifndef NATIVE_UTF8_TO_I8 # define NATIVE_UTF8_TO_I8(c) NATIVE_TO_UTF(c) #endif #else /* System doesn't support EBCDIC */ #ifndef NATIVE_UTF8_TO_I8 # define NATIVE_UTF8_TO_I8(c) (c) #endif #endif #ifdef UTF_TO_NATIVE #ifndef I8_TO_NATIVE_UTF8 # define I8_TO_NATIVE_UTF8(c) UTF_TO_NATIVE(c) #endif #else /* System doesn't support EBCDIC */ #ifndef I8_TO_NATIVE_UTF8 # define I8_TO_NATIVE_UTF8(c) (c) #endif #endif #ifndef UTF_START_MASK # define UTF_START_MASK(len) \ (((len) >= 7) ? 0x00 : (0x1F >> ((len)-2))) #endif #ifndef UTF_IS_CONTINUATION_MASK # define UTF_IS_CONTINUATION_MASK \ ((U8) (0xFF << UTF_ACCUMULATION_SHIFT)) #endif #ifndef UTF_CONTINUATION_MARK # define UTF_CONTINUATION_MARK \ (UTF_IS_CONTINUATION_MASK & 0xB0) #endif #ifndef UTF_MIN_START_BYTE # define UTF_MIN_START_BYTE \ ((UTF_CONTINUATION_MARK >> UTF_ACCUMULATION_SHIFT) | UTF_START_MARK(2)) #endif #ifndef UTF_MIN_ABOVE_LATIN1_BYTE # define UTF_MIN_ABOVE_LATIN1_BYTE \ ((0x100 >> UTF_ACCUMULATION_SHIFT) | UTF_START_MARK(2)) #endif #if (PERL_BCDVERSION < 0x5007000) /* Was the complement of what should have been */ # undef UTF8_IS_DOWNGRADEABLE_START #endif #ifndef UTF8_IS_DOWNGRADEABLE_START # define UTF8_IS_DOWNGRADEABLE_START(c) \ inRANGE(NATIVE_UTF8_TO_I8(c), \ UTF_MIN_START_BYTE, UTF_MIN_ABOVE_LATIN1_BYTE - 1) #endif #ifndef UTF_CONTINUATION_MASK # define UTF_CONTINUATION_MASK \ ((U8) ((1U << UTF_ACCUMULATION_SHIFT) - 1)) #endif #ifndef UTF8_ACCUMULATE # define UTF8_ACCUMULATE(base, added) \ (((base) << UTF_ACCUMULATION_SHIFT) \ | ((NATIVE_UTF8_TO_I8(added)) \ & UTF_CONTINUATION_MASK)) #endif #ifndef UTF8_ALLOW_ANYUV # define UTF8_ALLOW_ANYUV 0 #endif #ifndef UTF8_ALLOW_EMPTY # define UTF8_ALLOW_EMPTY 0x0001 #endif #ifndef UTF8_ALLOW_CONTINUATION # define UTF8_ALLOW_CONTINUATION 0x0002 #endif #ifndef UTF8_ALLOW_NON_CONTINUATION # define UTF8_ALLOW_NON_CONTINUATION 0x0004 #endif #ifndef UTF8_ALLOW_SHORT # define UTF8_ALLOW_SHORT 0x0008 #endif #ifndef UTF8_ALLOW_LONG # define UTF8_ALLOW_LONG 0x0010 #endif #ifndef UTF8_ALLOW_OVERFLOW # define UTF8_ALLOW_OVERFLOW 0x0080 #endif #ifndef UTF8_ALLOW_ANY # define UTF8_ALLOW_ANY ( UTF8_ALLOW_CONTINUATION \ |UTF8_ALLOW_NON_CONTINUATION \ |UTF8_ALLOW_SHORT \ |UTF8_ALLOW_LONG \ |UTF8_ALLOW_OVERFLOW) #endif #if defined UTF8SKIP /* Don't use official versions because they use MIN, which may not be available */ #undef UTF8_SAFE_SKIP #undef UTF8_CHK_SKIP #ifndef UTF8_SAFE_SKIP # define UTF8_SAFE_SKIP(s, e) ( \ ((((e) - (s)) <= 0) \ ? 0 \ : D_PPP_MIN(((e) - (s)), UTF8SKIP(s)))) #endif #ifndef UTF8_CHK_SKIP # define UTF8_CHK_SKIP(s) \ (s[0] == '\0' ? 1 : ((U8) D_PPP_MIN(my_strnlen((char *) (s), UTF8SKIP(s)), \ UTF8SKIP(s)))) #endif /* UTF8_CHK_SKIP depends on my_strnlen */ #ifndef UTF8_SKIP # define UTF8_SKIP(s) UTF8SKIP(s) #endif #endif #if 'A' == 65 #ifndef UTF8_IS_INVARIANT # define UTF8_IS_INVARIANT(c) isASCII(c) #endif #else #ifndef UTF8_IS_INVARIANT # define UTF8_IS_INVARIANT(c) (isASCII(c) || isCNTRL_L1(c)) #endif #endif #ifndef UVCHR_IS_INVARIANT # define UVCHR_IS_INVARIANT(c) UTF8_IS_INVARIANT(c) #endif #ifdef UVCHR_IS_INVARIANT # if 'A' != 65 || UVSIZE < 8 /* 32 bit platform, which includes UTF-EBCDIC on the releases this is * backported to */ # define D_PPP_UVCHR_SKIP_UPPER(c) 7 # else # define D_PPP_UVCHR_SKIP_UPPER(c) \ (((WIDEST_UTYPE) (c)) < \ (((WIDEST_UTYPE) 1) << (6 * D_PPP_BYTE_INFO_BITS)) ? 7 : 13) # endif #ifndef UVCHR_SKIP # define UVCHR_SKIP(c) \ UVCHR_IS_INVARIANT(c) ? 1 : \ (WIDEST_UTYPE) (c) < (32 * (1U << ( D_PPP_BYTE_INFO_BITS))) ? 2 : \ (WIDEST_UTYPE) (c) < (16 * (1U << (2 * D_PPP_BYTE_INFO_BITS))) ? 3 : \ (WIDEST_UTYPE) (c) < ( 8 * (1U << (3 * D_PPP_BYTE_INFO_BITS))) ? 4 : \ (WIDEST_UTYPE) (c) < ( 4 * (1U << (4 * D_PPP_BYTE_INFO_BITS))) ? 5 : \ (WIDEST_UTYPE) (c) < ( 2 * (1U << (5 * D_PPP_BYTE_INFO_BITS))) ? 6 : \ D_PPP_UVCHR_SKIP_UPPER(c) #endif #endif #ifdef is_ascii_string #ifndef is_invariant_string # define is_invariant_string(s,l) is_ascii_string(s,l) #endif #ifndef is_utf8_invariant_string # define is_utf8_invariant_string(s,l) is_ascii_string(s,l) #endif /* Hint: is_ascii_string, is_invariant_string is_utf8_invariant_string() does the same thing and is preferred because its name is more accurate as to what it does */ #endif #ifdef ibcmp_utf8 #ifndef foldEQ_utf8 # define foldEQ_utf8(s1,pe1,l1,u1,s2,pe2,l2,u2) \ cBOOL(! ibcmp_utf8(s1,pe1,l1,u1,s2,pe2,l2,u2)) #endif #endif #if defined(is_utf8_string) && defined(UTF8SKIP) #ifndef isUTF8_CHAR # define isUTF8_CHAR(s, e) ( \ (e) <= (s) || ! is_utf8_string(s, UTF8_SAFE_SKIP(s, e)) \ ? 0 \ : UTF8SKIP(s)) #endif #endif #if 'A' == 65 #ifndef BOM_UTF8 # define BOM_UTF8 "\xEF\xBB\xBF" #endif #ifndef REPLACEMENT_CHARACTER_UTF8 # define REPLACEMENT_CHARACTER_UTF8 "\xEF\xBF\xBD" #endif #elif '^' == 95 #ifndef BOM_UTF8 # define BOM_UTF8 "\xDD\x73\x66\x73" #endif #ifndef REPLACEMENT_CHARACTER_UTF8 # define REPLACEMENT_CHARACTER_UTF8 "\xDD\x73\x73\x71" #endif #elif '^' == 176 #ifndef BOM_UTF8 # define BOM_UTF8 "\xDD\x72\x65\x72" #endif #ifndef REPLACEMENT_CHARACTER_UTF8 # define REPLACEMENT_CHARACTER_UTF8 "\xDD\x72\x72\x70" #endif #else # error Unknown character set #endif #if (PERL_BCDVERSION < 0x5035010) /* Versions prior to 5.31.4 accepted things that are now considered * malformations, and didn't return -1 on error with warnings enabled. * Versions before 5.35.10 dereferenced empty input without checking */ # undef utf8_to_uvchr_buf #endif /* This implementation brings modern, generally more restricted standards to * utf8_to_uvchr_buf. Some of these are security related, and clearly must * be done. But its arguable that the others need not, and hence should not. * The reason they're here is that a module that intends to play with the * latest perls should be able to work the same in all releases. An example is * that perl no longer accepts any UV for a code point, but limits them to * IV_MAX or below. This is for future internal use of the larger code points. * If it turns out that some of these changes are breaking code that isn't * intended to work with modern perls, the tighter restrictions could be * relaxed. khw thinks this is unlikely, but has been wrong in the past. */ /* 5.6.0 is the first release with UTF-8, and we don't implement this function * there due to its likely lack of still being in use, and the underlying * implementation is very different from later ones, without the later * safeguards, so would require extra work to deal with */ #if (PERL_BCDVERSION >= 0x5006001) && ! defined(utf8_to_uvchr_buf) /* Choose which underlying implementation to use. At least one must be * present or the perl is too early to handle this function */ # if defined(utf8n_to_uvchr) || defined(utf8_to_uvchr) || defined(utf8_to_uv) # if defined(utf8n_to_uvchr) /* This is the preferred implementation */ # define D_PPP_utf8_to_uvchr_buf_callee utf8n_to_uvchr # elif /* Must be at least 5.6.1 from #if above; \ If have both regular and _simple, regular has all args */ \ defined(utf8_to_uv) && defined(utf8_to_uv_simple) # define D_PPP_utf8_to_uvchr_buf_callee utf8_to_uv # elif defined(utf8_to_uvchr) /* The below won't work well on error input */ # define D_PPP_utf8_to_uvchr_buf_callee(s, curlen, retlen, flags) \ utf8_to_uvchr((U8 *)(s), (retlen)) # else # define D_PPP_utf8_to_uvchr_buf_callee(s, curlen, retlen, flags) \ utf8_to_uv((U8 *)(s), (retlen)) # endif # endif # if defined(NEED_utf8_to_uvchr_buf) static UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 * s, const U8 * send, STRLEN * retlen); static #else extern UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 * s, const U8 * send, STRLEN * retlen); #endif #if defined(NEED_utf8_to_uvchr_buf) || defined(NEED_utf8_to_uvchr_buf_GLOBAL) #ifdef utf8_to_uvchr_buf # undef utf8_to_uvchr_buf #endif #define utf8_to_uvchr_buf(a,b,c) DPPP_(my_utf8_to_uvchr_buf)(aTHX_ a,b,c) #define Perl_utf8_to_uvchr_buf DPPP_(my_utf8_to_uvchr_buf) UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen) { # if (PERL_BCDVERSION >= 0x5031004) /* But from above, must be < 5.35.10 */ # if (PERL_BCDVERSION != 0x5035009) /* Versions less than 5.35.9 could dereference s on zero length, so * pass it something where no harm comes from that. */ if (send <= s) s = send = (U8 *) "?"; return Perl_utf8_to_uvchr_buf_helper(aTHX_ s, send, retlen); # else /* Below is 5.35.9, which also works on non-empty input, but for empty input, can wrongly dereference, and additionally is also just plain broken */ if (send > s) return Perl_utf8_to_uvchr_buf_helper(aTHX_ s, send, retlen); if (! ckWARN_d(WARN_UTF8)) { if (retlen) *retlen = 0; return UNICODE_REPLACEMENT; } else { s = send = (U8 *) "?"; /* Call just for its warning */ (void) Perl__utf8n_to_uvchr_msgs_helper(s, 0, NULL, 0, NULL, NULL); if (retlen) *retlen = (STRLEN) -1; return 0; } # endif # else UV ret; STRLEN curlen; bool overflows = 0; const U8 *cur_s = s; const bool do_warnings = ckWARN_d(WARN_UTF8); # if (PERL_BCDVERSION < 0x5026000) && ! defined(EBCDIC) STRLEN overflow_length = 0; # endif if (send > s) { curlen = send - s; } else { assert(0); /* Modern perls die under this circumstance */ curlen = 0; if (! do_warnings) { /* Handle empty here if no warnings needed */ if (retlen) *retlen = 0; return UNICODE_REPLACEMENT; } } # if (PERL_BCDVERSION < 0x5026000) && ! defined(EBCDIC) /* Perl did not properly detect overflow for much of its history on * non-EBCDIC platforms, often returning an overlong value which may or may * not have been tolerated in the call. Also, earlier versions, when they * did detect overflow, may have disallowed it completely. Modern ones can * replace it with the REPLACEMENT CHARACTER, depending on calling * parameters. Therefore detect it ourselves in releases it was * problematic in. */ if (curlen > 0 && UNLIKELY(*s >= 0xFE)) { /* First, on a 32-bit machine the first byte being at least \xFE * automatically is overflow, as it indicates something requiring more * than 31 bits */ if (sizeof(ret) < 8) { overflows = 1; overflow_length = (*s == 0xFE) ? 7 : 13; } else { const U8 highest[] = /* 2*63-1 */ "\xFF\x80\x87\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF"; const U8 *cur_h = highest; for (cur_s = s; cur_s < send; cur_s++, cur_h++) { if (UNLIKELY(*cur_s == *cur_h)) { continue; } /* If this byte is larger than the corresponding highest UTF-8 * byte, the sequence overflows; otherwise the byte is less * than (as we handled the equality case above), and so the * sequence doesn't overflow */ overflows = *cur_s > *cur_h; break; } /* Here, either we set the bool and broke out of the loop, or got * to the end and all bytes are the same which indicates it doesn't * overflow. If it did overflow, it would be this number of bytes * */ overflow_length = 13; } } if (UNLIKELY(overflows)) { ret = 0; if (! do_warnings && retlen) { *retlen = overflow_length; } } else # endif /* < 5.26 */ /* Here, we are either in a release that properly detects overflow, or * we have checked for overflow and the next statement is executing as * part of the above conditional where we know we don't have overflow. * * The modern versions allow anything that evaluates to a legal UV, but * not overlongs nor an empty input */ ret = D_PPP_utf8_to_uvchr_buf_callee( (U8 *) /* Early perls: no const */ s, curlen, retlen, (UTF8_ALLOW_ANYUV & ~(UTF8_ALLOW_LONG|UTF8_ALLOW_EMPTY))); # if (PERL_BCDVERSION >= 0x5026000) && (PERL_BCDVERSION < 0x5028000) /* But actually, more modern versions restrict the UV to being no more than * what an IV can hold, so it could still have gotten it wrong about * overflowing. */ if (UNLIKELY(ret > IV_MAX)) { overflows = 1; } # endif if (UNLIKELY(overflows)) { if (! do_warnings) { if (retlen) { *retlen = D_PPP_MIN(*retlen, UTF8SKIP(s)); *retlen = D_PPP_MIN(*retlen, curlen); } return UNICODE_REPLACEMENT; } else { /* We use the error message in use from 5.8-5.26 */ Perl_warner(aTHX_ packWARN(WARN_UTF8), "Malformed UTF-8 character (overflow at 0x%" UVxf ", byte 0x%02x, after start byte 0x%02x)", ret, *cur_s, *s); if (retlen) { *retlen = (STRLEN) -1; } return 0; } } /* Here, did not overflow, but if it failed for some other reason, and * warnings are off, to emulate the behavior of the real utf8_to_uvchr(), * try again, allowing anything. (Note a return of 0 is ok if the input * was '\0') */ if (UNLIKELY(ret == 0 && (curlen == 0 || *s != '\0'))) { /* If curlen is 0, we already handled the case where warnings are * disabled, so this 'if' will be true, and so later on, we know that * 's' is dereferencible */ if (do_warnings) { if (retlen) { *retlen = (STRLEN) -1; } } else { ret = D_PPP_utf8_to_uvchr_buf_callee( (U8 *) /* Early perls: no const */ s, curlen, retlen, UTF8_ALLOW_ANY); /* Override with the REPLACEMENT character, as that is what the * modern version of this function returns */ ret = UNICODE_REPLACEMENT; # if (PERL_BCDVERSION < 0x5016000) /* Versions earlier than this don't necessarily return the proper * length. It should not extend past the end of string, nor past * what the first byte indicates the length is, nor past the * continuation characters */ if (retlen && (IV) *retlen >= 0) { unsigned int i = 1; *retlen = D_PPP_MIN(*retlen, curlen); *retlen = D_PPP_MIN(*retlen, UTF8SKIP(s)); do { # ifdef UTF8_IS_CONTINUATION if (! UTF8_IS_CONTINUATION(s[i])) # else /* Versions without the above don't support EBCDIC anyway */ if (s[i] < 0x80 || s[i] > 0xBF) # endif { *retlen = i; break; } } while (++i < *retlen); } # endif /* end of < 5.16.0 */ } } return ret; # endif /* end of < 5.31.4 */ } # endif #endif #if defined(UTF8SKIP) && defined(utf8_to_uvchr_buf) #undef utf8_to_uvchr /* Always redefine this unsafe function so that it refuses to read past a NUL, making it much less likely to read off the end of the buffer. A NUL indicates the start of the next character anyway. If the input isn't NUL-terminated, the function remains unsafe, as it always has been. */ #ifndef utf8_to_uvchr # define utf8_to_uvchr(s, lp) \ ((*(s) == '\0') \ ? utf8_to_uvchr_buf(s,((s)+1), lp) /* Handle single NUL specially */ \ : utf8_to_uvchr_buf(s, (s) + UTF8_CHK_SKIP(s), (lp))) #endif #endif /* Hint: utf8_to_uvchr Use utf8_to_uvchr_buf() instead. But ONLY if you KNOW the upper bound of the input string (not resorting to using UTF8SKIP, etc., to infer it). The backported utf8_to_uvchr() will do a better job to prevent most cases of trying to read beyond the end of the buffer */ /* Replace utf8_to_uvchr with utf8_to_uvchr_buf */ #ifdef sv_len_utf8 # if (PERL_BCDVERSION >= 0x5017005) # ifndef sv_len_utf8_nomg # if defined(PERL_USE_GCC_BRACE_GROUPS) # define sv_len_utf8_nomg(sv) \ ({ \ SV *sv_ = (sv); \ sv_len_utf8(!SvGMAGICAL(sv_) \ ? sv_ \ : sv_mortalcopy_flags(sv_, SV_NOSTEAL)); \ }) # else PERL_STATIC_INLINE STRLEN D_PPP_sv_len_utf8_nomg(SV * sv) { dTHX; if (SvGMAGICAL(sv)) return sv_len_utf8(sv_mortalcopy_flags(sv, SV_NOSTEAL)); else return sv_len_utf8(sv); } # define sv_len_utf8_nomg(sv) D_PPP_sv_len_utf8_nomg(sv) # endif # endif # else /* < 5.17.5 */ /* Older Perl versions have broken sv_len_utf8() when passed sv does not * have SVf_UTF8 flag set */ /* Also note that SvGETMAGIC() may change presence of SVf_UTF8 flag */ # undef sv_len_utf8 # if defined(PERL_USE_GCC_BRACE_GROUPS) # define sv_len_utf8_nomg(sv) \ ({ \ SV *sv2 = (sv); \ STRLEN len; \ if (SvUTF8(sv2)) { \ if (SvGMAGICAL(sv2)) \ len = Perl_sv_len_utf8(aTHX_ \ sv_mortalcopy_flags(sv2, \ SV_NOSTEAL));\ else \ len = Perl_sv_len_utf8(aTHX_ sv2); \ } \ else SvPV_nomg(sv2, len); \ len; \ }) # define sv_len_utf8(sv) ({ SV *_sv1 = (sv); \ SvGETMAGIC(_sv1); \ sv_len_utf8_nomg(_sv1); \ }) # else /* Below is no brace groups */ PERL_STATIC_INLINE STRLEN D_PPP_sv_len_utf8_nomg(SV * sv) { dTHX; STRLEN len; if (SvUTF8(sv)) { if (SvGMAGICAL(sv)) len = Perl_sv_len_utf8(aTHX_ sv_mortalcopy_flags(sv, SV_NOSTEAL)); else len = Perl_sv_len_utf8(aTHX_ sv); } else SvPV_nomg(sv, len); return len; } # define sv_len_utf8_nomg(sv) D_PPP_sv_len_utf8_nomg(sv) PERL_STATIC_INLINE STRLEN D_PPP_sv_len_utf8(SV * sv) { dTHX; SvGETMAGIC(sv); return sv_len_utf8_nomg(sv); } # define sv_len_utf8(sv) D_PPP_sv_len_utf8(sv) # endif # endif /* End of < 5.17.5 */ #endif #ifndef PERL_PV_ESCAPE_QUOTE # define PERL_PV_ESCAPE_QUOTE 0x0001 #endif #ifndef PERL_PV_PRETTY_QUOTE # define PERL_PV_PRETTY_QUOTE PERL_PV_ESCAPE_QUOTE #endif #ifndef PERL_PV_PRETTY_ELLIPSES # define PERL_PV_PRETTY_ELLIPSES 0x0002 #endif #ifndef PERL_PV_PRETTY_LTGT # define PERL_PV_PRETTY_LTGT 0x0004 #endif #ifndef PERL_PV_ESCAPE_FIRSTCHAR # define PERL_PV_ESCAPE_FIRSTCHAR 0x0008 #endif #ifndef PERL_PV_ESCAPE_UNI # define PERL_PV_ESCAPE_UNI 0x0100 #endif #ifndef PERL_PV_ESCAPE_UNI_DETECT # define PERL_PV_ESCAPE_UNI_DETECT 0x0200 #endif #ifndef PERL_PV_ESCAPE_ALL # define PERL_PV_ESCAPE_ALL 0x1000 #endif #ifndef PERL_PV_ESCAPE_NOBACKSLASH # define PERL_PV_ESCAPE_NOBACKSLASH 0x2000 #endif #ifndef PERL_PV_ESCAPE_NOCLEAR # define PERL_PV_ESCAPE_NOCLEAR 0x4000 #endif #ifndef PERL_PV_ESCAPE_RE # define PERL_PV_ESCAPE_RE 0x8000 #endif #ifndef PERL_PV_PRETTY_NOCLEAR # define PERL_PV_PRETTY_NOCLEAR PERL_PV_ESCAPE_NOCLEAR #endif #ifndef PERL_PV_PRETTY_DUMP # define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE #endif #ifndef PERL_PV_PRETTY_REGPROP # define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE #endif /* Hint: pv_escape * Note that unicode functionality is only backported to * those perl versions that support it. For older perl * versions, the implementation will fall back to bytes. */ #ifndef pv_escape #if defined(NEED_pv_escape) static char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); static #else extern char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); #endif #if defined(NEED_pv_escape) || defined(NEED_pv_escape_GLOBAL) #ifdef pv_escape # undef pv_escape #endif #define pv_escape(a,b,c,d,e,f) DPPP_(my_pv_escape)(aTHX_ a,b,c,d,e,f) #define Perl_pv_escape DPPP_(my_pv_escape) char * DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags) { const char esc = flags & PERL_PV_ESCAPE_RE ? '%' : '\\'; const char dq = flags & PERL_PV_ESCAPE_QUOTE ? '"' : esc; char octbuf[32] = "%123456789ABCDF"; STRLEN wrote = 0; STRLEN chsize = 0; STRLEN readsize = 1; #if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) bool isuni = flags & PERL_PV_ESCAPE_UNI ? 1 : 0; #endif const char *pv = str; const char * const end = pv + count; octbuf[0] = esc; if (!(flags & PERL_PV_ESCAPE_NOCLEAR)) sv_setpvs(dsv, ""); #if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count)) isuni = 1; #endif for (; pv < end && (!max || wrote < max) ; pv += readsize) { const UV u = #if defined(is_utf8_string) && defined(utf8_to_uvchr_buf) isuni ? utf8_to_uvchr_buf((U8*)pv, end, &readsize) : #endif (U8)*pv; const U8 c = (U8)u & 0xFF; if (u > 255 || (flags & PERL_PV_ESCAPE_ALL)) { if (flags & PERL_PV_ESCAPE_FIRSTCHAR) chsize = my_snprintf(octbuf, sizeof octbuf, "%" UVxf, u); else chsize = my_snprintf(octbuf, sizeof octbuf, "%cx{%" UVxf "}", esc, u); } else if (flags & PERL_PV_ESCAPE_NOBACKSLASH) { chsize = 1; } else { if (c == dq || c == esc || !isPRINT(c)) { chsize = 2; switch (c) { case '\\' : /* fallthrough */ case '%' : if (c == esc) octbuf[1] = esc; else chsize = 1; break; case '\v' : octbuf[1] = 'v'; break; case '\t' : octbuf[1] = 't'; break; case '\r' : octbuf[1] = 'r'; break; case '\n' : octbuf[1] = 'n'; break; case '\f' : octbuf[1] = 'f'; break; case '"' : if (dq == '"') octbuf[1] = '"'; else chsize = 1; break; default: chsize = my_snprintf(octbuf, sizeof octbuf, pv < end && isDIGIT((U8)*(pv+readsize)) ? "%c%03o" : "%c%o", esc, c); } } else { chsize = 1; } } if (max && wrote + chsize > max) { break; } else if (chsize > 1) { sv_catpvn(dsv, octbuf, chsize); wrote += chsize; } else { char tmp[2]; my_snprintf(tmp, sizeof tmp, "%c", c); sv_catpvn(dsv, tmp, 1); wrote++; } if (flags & PERL_PV_ESCAPE_FIRSTCHAR) break; } if (escaped != NULL) *escaped= pv - str; return SvPVX(dsv); } #endif #endif #ifndef pv_pretty #if defined(NEED_pv_pretty) static char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); static #else extern char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); #endif #if defined(NEED_pv_pretty) || defined(NEED_pv_pretty_GLOBAL) #ifdef pv_pretty # undef pv_pretty #endif #define pv_pretty(a,b,c,d,e,f,g) DPPP_(my_pv_pretty)(aTHX_ a,b,c,d,e,f,g) #define Perl_pv_pretty DPPP_(my_pv_pretty) char * DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags) { const U8 dq = (flags & PERL_PV_PRETTY_QUOTE) ? '"' : '%'; STRLEN escaped; if (!(flags & PERL_PV_PRETTY_NOCLEAR)) sv_setpvs(dsv, ""); if (dq == '"') sv_catpvs(dsv, "\""); else if (flags & PERL_PV_PRETTY_LTGT) sv_catpvs(dsv, "<"); if (start_color != NULL) sv_catpv(dsv, D_PPP_CONSTPV_ARG(start_color)); pv_escape(dsv, str, count, max, &escaped, flags | PERL_PV_ESCAPE_NOCLEAR); if (end_color != NULL) sv_catpv(dsv, D_PPP_CONSTPV_ARG(end_color)); if (dq == '"') sv_catpvs(dsv, "\""); else if (flags & PERL_PV_PRETTY_LTGT) sv_catpvs(dsv, ">"); if ((flags & PERL_PV_PRETTY_ELLIPSES) && escaped < count) sv_catpvs(dsv, "..."); return SvPVX(dsv); } #endif #endif #ifndef pv_display #if defined(NEED_pv_display) static char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); static #else extern char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); #endif #if defined(NEED_pv_display) || defined(NEED_pv_display_GLOBAL) #ifdef pv_display # undef pv_display #endif #define pv_display(a,b,c,d,e) DPPP_(my_pv_display)(aTHX_ a,b,c,d,e) #define Perl_pv_display DPPP_(my_pv_display) char * DPPP_(my_pv_display)(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) { pv_pretty(dsv, pv, cur, pvlim, NULL, NULL, PERL_PV_PRETTY_DUMP); if (len > cur && pv[cur] == '\0') sv_catpvs(dsv, "\\0"); return SvPVX(dsv); } #endif #endif #if PERL_VERSION_LT(5,27,9) #ifndef LC_NUMERIC_LOCK # define LC_NUMERIC_LOCK #endif #ifndef LC_NUMERIC_UNLOCK # define LC_NUMERIC_UNLOCK #endif # if PERL_VERSION_LT(5,19,0) # undef STORE_LC_NUMERIC_SET_STANDARD # undef RESTORE_LC_NUMERIC # undef DECLARATION_FOR_LC_NUMERIC_MANIPULATION # ifdef USE_LOCALE #ifndef DECLARATION_FOR_LC_NUMERIC_MANIPULATION # define DECLARATION_FOR_LC_NUMERIC_MANIPULATION char *LoC_ #endif #ifndef STORE_NUMERIC_SET_STANDARD # define STORE_NUMERIC_SET_STANDARD() \ LoC_ = savepv(setlocale(LC_NUMERIC, NULL)); \ SAVEFREEPV(LoC_); \ setlocale(LC_NUMERIC, "C"); #endif #ifndef RESTORE_LC_NUMERIC # define RESTORE_LC_NUMERIC() \ setlocale(LC_NUMERIC, LoC_); #endif # else #ifndef DECLARATION_FOR_LC_NUMERIC_MANIPULATION # define DECLARATION_FOR_LC_NUMERIC_MANIPULATION #endif #ifndef STORE_LC_NUMERIC_SET_STANDARD # define STORE_LC_NUMERIC_SET_STANDARD() #endif #ifndef RESTORE_LC_NUMERIC # define RESTORE_LC_NUMERIC() #endif # endif # endif #endif #ifndef LOCK_NUMERIC_STANDARD # define LOCK_NUMERIC_STANDARD() #endif #ifndef UNLOCK_NUMERIC_STANDARD # define UNLOCK_NUMERIC_STANDARD() #endif /* The names of these changed in 5.28 */ #ifndef LOCK_LC_NUMERIC_STANDARD # define LOCK_LC_NUMERIC_STANDARD LOCK_NUMERIC_STANDARD #endif #ifndef UNLOCK_LC_NUMERIC_STANDARD # define UNLOCK_LC_NUMERIC_STANDARD UNLOCK_NUMERIC_STANDARD #endif /* If this doesn't exist, it's not needed, so is void noop */ #ifndef switch_to_global_locale # define switch_to_global_locale() #endif /* Originally, this didn't return a value, but in perls like that, the value * should always be TRUE. Add a return to Perl_sync_locale() when it's * available. And actually do a sync when its not, if locales are available on * this system. */ #ifdef sync_locale # if (PERL_BCDVERSION < 0x5027009) # if (PERL_BCDVERSION >= 0x5021003) # undef sync_locale # define sync_locale() (Perl_sync_locale(aTHX), 1) # elif defined(sync_locale) /* These should only be the 5.20 maints*/ # undef sync_locale /* Just copy their defn and return 1 */ # define sync_locale() (new_ctype(setlocale(LC_CTYPE, NULL)), \ new_collate(setlocale(LC_COLLATE, NULL)), \ set_numeric_local(), \ new_numeric(setlocale(LC_NUMERIC, NULL)), \ 1) # elif defined(new_ctype) && defined(LC_CTYPE) # define sync_locale() (new_ctype(setlocale(LC_CTYPE, NULL)), 1) # endif # endif #endif #ifndef sync_locale # define sync_locale() 1 #endif #endif /* _P_P_PORTABILITY_H_ */ /* End of File ppport.h */ Convert-Binary-C-0.85/examples/0000755000175000001440000000000014677003524015031 5ustar mhxusersConvert-Binary-C-0.85/examples/README0000644000175000001440000000032314676735310015713 0ustar mhxusersThe 'examples' directory is empty until you actually build the module. The example scripts will then be automatically generated. For further information, please consult the README file in the parent directory. Convert-Binary-C-0.85/typemap0000644000175000001440000000174114677003452014620 0ustar mhxusers################################################################################ # # Copyright (c) 2002-2024 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ TYPEMAP const char * T_PV CBC * T_CBC_OBJECT INPUT T_CBC_OBJECT if (sv_isobject($arg) && SvTYPE(SvRV($arg)) == SVt_PVHV) { HV *hv = (HV *) SvRV($arg); SV **sv = hv_fetch(hv, \"\", 0, 0); if (sv) { IV tmp = SvIV(*sv); $var = INT2PTR($type, tmp); if ($var == NULL) Perl_croak(aTHX_ \"${Package}::$func_name(): $var is NULL\"); if ($var->hv != hv) Perl_croak(aTHX_ \"${Package}::$func_name(): $var->hv is corrupt\"); } else Perl_croak(aTHX_ \"${Package}::$func_name(): $var is corrupt\"); } else Perl_croak(aTHX_ \"${Package}::$func_name(): $var is not a blessed hash reference\"); Convert-Binary-C-0.85/TODO0000644000175000001440000002543414676735310013717 0ustar mhxusers============= What's to do? ============= > Just one minor question: maybe an explicit hint in the documentation > would be useful, indicating that decoding any data that follows > dynamic elements will not give the expected results. To me, this > wasn't immediately clear from the documentation. * Test::RefCount for future releases (in no special order): ------------------------------------------ * >> Perhaps to make the documentation complete, it would help to add a >> remark on opening, reading and writing incrementally and closing >> binary files. > > Mmmmh, I'm not sure the C::B::C docs are the right place to add > such documentation. Such documentation is better placed in the > perl core. My error in communication. I do not mean to document open, read etc. I just mean to provide some indication (e.g., via outline example or just a sentence or so) on how one would read/write binary files into/out-of structures. * encapsulate internal types better: e.g. struct: struct_push_declaration(struct, declaration); /* real function call */ struct_size(struct); /* as macro */ * make Dimension tag influence offset during pack / unpack, but only if the Dimtag is _not_ '*'. So the following is possible: struct foo { int count; int length; int val[1]; }; struct bar { int count; int length; struct foo val[1]; }; tag('foo.val', Dimension => 'count'); tag('bar.val', Dimension => 'count'); pack('bar', { count => 2, length => 28, val => [ { count => 3, length => 12, val => [1, 2, 3] }, { count => 2, length => 8, val => [4, 5] }, ], }) <=> pack("I*", 2 3 1 2 3 2 4 5) (OTOH, we just can't handle a real "length" (in bytes) properly. Or can we if we use hooks?) BIG PROBLEM: Alignment properties would (again...) fall into the scope of the pack/unpack code, which is UGLY!! * OK, I've finally decided that this needs a complete redesign... - We need some code in the ctlib to recursively walk types. This way, we can greatly simplify the pack/unpack code. We should also be possible to handle the problems with the ByteOrder and Dimension tags more easily. - We should try to move as much code as possible into the ctlib. For example, sourcify can be completely separated from any perl stuff. This way, we can probably simplify the way towards a python/ruby/perl6/... version. - If we introduce a new level of error handling, we can even move all the stuff that usually croaks or warns into ctlib. - Ideally, we have as few code as possible to use the perl api. - Probably, we can even implent parts of the module in perl. - Does it make sense to tag multiple levels of dimensions? If so, we need to get rid of using a linked list for dimensions, which I think is a good idea anyway. (Accessing dimensions sucks.) We probably need some method then to compute the total number of elements in the array. - While we're at it, we should also try to address the problem of handling pointer arithmetics, sizeof expressions (non-constant expressions in general, type casts [which can be non-constant, too, depending on what size you configure], and so on) I think this is partly solved by the expression parser/evaluator we need anyway to support the eval method. - Perhaps we can also think about starting to collect data about functions. * make clear in the docs that Dimension _only_ affects pack/unpack * support lexically scoped warnings (perldoc perllexwarn, perldoc warnings, see warnings.pm) * can we move the PODs for each function to xsubs/ ? * separate preprocessor object handling from ctlib/ctparse -> ctlib/preproc make sure modification of Include / Define / Assert / ... updates the preprocessor object immediately, so defined() and stuff will work * C::B::C::Cached -> have "CacheDefines" option? * Add assertions code * cleanup remaining warnings from ucpp (MS compiler) * make c99_* configurable? * Make util/memalloc threadsafe! (when TRACE is enabled) ($Config{i_pthread}) * !!!! mark the "threads" feature as deprecated !!!! * Implement a Pack tag that only works for structs and that doesn't work recursively. Use this to get rid of the pack member in Struct. Note in the docs that this doesn't work recursively, that it is used to implement #pragma pack and that it can be used to remove the packing from structs. * other tags: ByteOrder -> not for bitfield members Pack -> only for structs UnsignedChars UnsignedBitfields OrderMembers -> only for structs EnumType -> only for enums Size -> only for integral types (not sure about this one) * it would be Really Cool if we had more information about the parsed source code, i.e. functions, variables, etc. * support C99 initializers ? * test on windows * enable-format-check * have a look at the compiler option -mwords-little-endian (arm-gcc) => arbitrary byte order * extend sizeof() to support size of bitfields with .bits notation (returned as string) * do we need a GCC bitfields engine? (dcc, ...?) * test bitfields in bench.pl * add tags to bench.pl * compile with normal perl and -Wall will show some interesting warnings (uninit, unused, ...) => try gcc-4.1 * add UnsignedBitfields probe to ccconfig (only for run mode, not sure if compile mode is possible at all) * introduce UnsignedChars and UnsignedBitfields for native method? * see if the Microsoft algorithm can be improved? * add checks for bitfield behaviour to ccconfig * parser tests: negative array index => make parse error? * redirect stderr of test 901 (use same tricks as in D::PPP) * eliminate croak_gti()? * we need much better parser tests... * can we simplify _expressions in the parser with %prec ? * instrument both parser.y and pragma.y with %printers ? * improve errors with locations (see bison.pdf) ? * parse expressions into a tree => write an optimizer for the tree that simplifies constant arithmetics => really short-circuit on boolean expressions * more 'basic type objects' tests * add 'indent' option to initializer() * add 'unnamed' => 0|1 to sourcify options * instrument fatal() to include file/line * what about CAN_UNALIGNED_ACCESS ? * use inline functions instead of macros where possible (for gcov) * more test coverage for the parser * use D::T::C for arg() method? * port docs to Text::GenDoc (release T::G first ;-) * handle Cray behaviour * support conversion to new 5.10 (un)pack templates * finish work on flexible array members (done?) - make member() work better - make complex.t introduce fams * is T_ALREADY_DUMPED thread-safe, or should we rather use a hash to memorize the dumped types. * support for unsigned and 64-bit integer arithmetics use ucpp's (reentrant) arith.c? * make cast operators work * on parse error, print parser stack? * patch ucpp to only warn about missing newline termination * have an eval method that allows to evaluate a constant C expression (including preprocessor expansion), so $c->parse( <eval("VALUE+2"); would then print 6. * update / cleanup test suite using Test::More * make sizeof/offsetof files plain text files and parse them on the fly. get rid of 'do' * make offsetof test similar to sizeof test (sizeof.pl) * add tests for ccconfig (using a "virtual" compiler?) * add more floating point tests (NaN and stuff?) * support #pragma pack( (push|pop) [, id] [, pack] ) ? * what about #define foobar 2 #pragma pack( push, foobar ) * support gcc's __attribute__, at least for struct packing (actually, this is worse than it seems, because it behaves completely different than #pragma pack...) * support constant address arithmetics - this is mainly needed for the offsetof C macro and similar stuff, eg enum { OFFSET = offsetof( struct foo, bar ) }; doesn't work yet. But I guess such construct is rarely used. * cleanup unsafe values handling * support arbitrary byte order? ( ByteOrder => '13248756' ) * add platform independent IEEE floating point support (SoftFloat or sth. similar?) * have a definition() method? Like typedef/compound/enum, but for all of 'em? * try to give a hint to where a parse error occured COPY_LINE ? * maybe add DollarsInIdentifiers, AtSignsInIdentifiers? * add some warnings during parsing - empty arrays in structs a[] (not at end of struct) * add tests for all preprocessor warnings/errors? * add a more complete preprocessor testsuite? * character arrays => strings? * perhaps bless (tie) long double SV's and store binary data (?) * sourcify only specific types (pass in a list of types) (?) * Subject: AW: C::B::C und h2ph/c2ph From: "Dintelmann, Peter" Date: Tue, 14 Dec 2004 14:20:39 +0100 Message-ID: Das Aufloesen der typedefs wuerde fuer mich persoenlich die Lesbarkeit erleichtern und den Quelltext vereinfachen. Im Beispiel "struct futmpx" hat man unter anderem mehrere Faelle der Art typedef int int32_t; typedef int32_t pid32_t; struct futmpx { char ut_user[32]; char ut_id[4]; char ut_line[32]; pid32_t ut_pid; ... ... ... }; und ich wuerde viel lieber gleich struct futmpx { char ut_user[32]; char ut_id[4]; char ut_line[32]; int ut_pid; ... ... ... }; haben koennen (und auf die zwei typedefs verzichten). * add an object representing a single type? - for example: $p = new Convert::Binary::C; $p->parse_file( 'some_code.h' ); $type = $p->get_type( 'type' ); $data = $type->unpack( $raw ); (no, I didn't think about how to name any of the new stuff ;) - should use less memory - should allow for serializing - should allow for use with PerlIO layers (?) - I have to think about that!!! - Any suggestions are strongly appreciated! * Plugins for foreign function calls (function calls during $c->eval(), when target platform == source platform) - look at how gcc, lcc, tinyc abstract platforms - Q: who loads the shared objects? (cbc/plugin) - Q: do we need to remember globals? (if anyone passes pointer to such globals to functions) - Q: how do we pass data from perl space to those function? - plugin needs to do symbol lookup - debug symbols? - abstract debugging information / behaviour? Convert-Binary-C-0.85/README.md0000644000175000001440000001302414676735310014476 0ustar mhxusers# Convert-Binary-C Binary Data Conversion using C Types ## Description Convert::Binary::C is a preprocessor and parser for C type definitions. It is highly configurable and should support arbitrarily complex data structures. Its object-oriented interface has pack and unpack methods that act as replacements for Perl's pack and unpack and allow to use the C types instead of a string representation of the data structure for conversion of binary data from and to Perl's complex data structures. Actually, what Convert::Binary::C does is not very different from what a C compiler does, just that it doesn't compile the source code into an object file or executable, but only parses the code and allows Perl to use the enumerations, structs, unions and typedefs that have been defined within your C source for binary data conversion, similar to Perl's pack and unpack. Beyond that, the module offers a lot of convenience methods to retrieve information about the C types that have been parsed. ## Installation Installation of the Convert::Binary::C module follows the standard Perl Way and should not be harder than: perl Makefile.PL make make test make install Note that you may need to become superuser to `make install`. If you're building the module under Windows, you may need to use a different make program, such as `nmake`, instead of `make`. When running 'make test' on on slower systems please be patient, since some of the tests are quite time consuming. The time required for running the whole test suite depends on your Perl version, the features you're building the module with, and of course your machine. ## Upgrading If you are upgrading from a previous release of Convert::Binary::C, please check the Changes file. In its current state, the module is still subject to changes that may affect compatibility with older releases. ## Documentation To see the documentation, use the perldoc command: perldoc Convert::Binary::C perldoc Convert::Binary::C::Cached You can also visit CPAN Search and see the documentation online as pretty nice HTML. This is also where you will find the most recent version of this module: https://metacpan.org/release/Convert-Binary-C Even though the documentation contains a large amount of tested example code, you might want some working example scripts. You can find them in the examples subdirectory after you've built the module. These scripts normally require Convert::Binary::C to be installed on your system. If you want to test the examples prior to installing Convert::Binary::C, you can start the examples like this after building the module: perl -Mblib examples/script.pl Otherwise just run the example scripts like any other Perl script. ## Configuration Configuring a Convert::Binary::C object correctly can be quite painful if you don't know every little detail about your compiler. However, if you're lucky, you can use the 'ccconfig' tool that comes with this package. It was written to automatically retrieve the complete compiler configuration. This may not work always, or retrieve the complete configuration, but it should at least give you some point to start from. Just run ccconfig -c compiler with `compiler` being the name of your compiler executable. You can see the documentation for 'ccconfig' using the perldoc command: perldoc ccconfig As the tool is very experimental, any feedback on 'ccconfig' is really appreciated! ## Compatibility The module should build on most of the platforms that Perl runs on. I have tested it on: * Various Linux systems * Various BSD systems * HP-UX * Compaq/HP Tru64 Unix * Mac-OS X * Cygwin * Windows 98/NT/2000/XP Also, most architectures should be supported. Tests were done on: * Various Intel Pentium and Itanium systems * Various Alpha systems * HP PA-RISC * Power-PC * StrongARM (the module worked fine on an IPAQ system) The module should build with any perl from 5.005 up to the latest development version. It will also build with perl 5.004, but then the test suite cannot be run completely. Multithreaded perl binaries are explicitly supported, as the module is intended to be thread-safe. ## Features You can enable or disable certain features at compile time by adding options to the `Makefile.PL` call. However, you can safely leave them at their default. Available features are `debug` to build the module with debugging support and `ieeefp` to explicitly enable or disable IEEE floating point support. The `debug` feature depend on how your perl binary was built. If it was built with the `DEBUGGING` flag, the `debug` feature is enabled, otherwise it is disabled by default. The `ieeefp` feature depends on how your machine stores floating point values. If they are stored in IEEE format, this feature will be enabled automatically. You should really only change the default if you know what you're doing. You can enable or disable features explicitly by adding the arguments enable-feature disable-feature to the Makefile.PL call. To explicitly build the module with debugging enabled, you would say: perl Makefile.PL enable-debug This will still allow you to pass other standard arguments to `Makefile.PL`, like perl Makefile.PL enable-debug OPTIMIZE=-O3 ## Copyright Copyright (c) Marcus Holland-Moritz. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The ucpp library is (c) 1998-2002 Thomas Pornin. For license and redistribution details refer to 'ctlib/ucpp/README'. Portions copyright (c) 1989, 1990 James A. Roskind. Convert-Binary-C-0.85/META.yml0000644000175000001440000000137414677003524014471 0ustar mhxusers--- abstract: 'Binary Data Conversion using C Types' author: - 'Marcus Holland-Moritz ' build_requires: ExtUtils::MakeMaker: '0' configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 1 generated_by: 'ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter version 2.150010' license: open_source meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Convert-Binary-C no_index: directory: - t - inc file: - bin/elf.PL resources: bugtracker: https://github.com/mhx/Convert-Binary-C/issues homepage: https://metacpan.org/release/Convert-Binary-C repository: https://github.com/mhx/Convert-Binary-C.git version: '0.85' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' Convert-Binary-C-0.85/META.json0000644000175000001440000000240214677003525014633 0ustar mhxusers{ "abstract" : "Binary Data Conversion using C Types", "author" : [ "Marcus Holland-Moritz " ], "dynamic_config" : 1, "generated_by" : "ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter version 2.150010", "license" : [ "perl_5", "bsd" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "Convert-Binary-C", "no_index" : { "directory" : [ "t", "inc" ], "file" : [ "bin/elf.PL" ] }, "prereqs" : { "build" : { "requires" : { "ExtUtils::MakeMaker" : "0" } }, "configure" : { "requires" : { "ExtUtils::MakeMaker" : "0" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/mhx/Convert-Binary-C/issues" }, "homepage" : "https://metacpan.org/release/Convert-Binary-C", "repository" : { "type" : "git", "url" : "https://github.com/mhx/Convert-Binary-C.git", "web" : "https://github.com/mhx/Convert-Binary-C" } }, "version" : "0.85", "x_serialization_backend" : "JSON::PP version 4.16" }